徐 俊,普園媛,b,徐 丹,趙征鵬,錢文華,吳 昊,陽秋霞
(云南大學(xué) a.信息學(xué)院,b.云南省高校物聯(lián)網(wǎng)技術(shù)及應(yīng)用重點(diǎn)實(shí)驗(yàn)室,昆明 650504)
隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,越來越多的人喜歡在電商平臺(如淘寶、蘑菇街、唯品會(huì))購買衣服。但由于電商平臺的特殊性,人們只能通過虛擬模特來觀察服裝效果,并不能直觀地判斷服裝是否適合自己。針對如何讓服裝虛擬試穿到用戶身上是目前試衣領(lǐng)域的研究熱點(diǎn),用戶通過試衣結(jié)果體驗(yàn)自己穿著不同款式的服裝,可以直觀判斷自己是否心儀某件衣服,從而幫助用戶做出購買決策。
為了滿足上述需求,學(xué)者們將GAN[1]應(yīng)用于虛擬試衣任務(wù),借助GAN將服裝虛擬試穿到人物圖像上,直觀觀察服裝試穿效果。而虛擬試衣與圖像生成[2-3]、圖像翻譯[4-6]以及圖像編輯[7]等任務(wù)有著本質(zhì)的不同。虛擬試衣時(shí)圖像會(huì)產(chǎn)生幾何形變,細(xì)節(jié)特征容易丟失,因此學(xué)者將傳統(tǒng)的像素間損失(L1和L2損失)和感知損失[8]引入到GAN中,來保留圖像信息。此外還引入了對抗損失[4],最大限度減小對抗損失,使得生成器生成的圖像更接近原始圖像,但是會(huì)遺漏關(guān)鍵的細(xì)節(jié)特征。在面臨巨大的幾何變化時(shí),細(xì)節(jié)的保存能力較差,這就限制了GAN在虛擬試衣中的應(yīng)用。
DONGGEUN et al[9]采用結(jié)合GAN和深度CNN的方式來完成圖像生成任務(wù),在沒有考慮人物姿勢的前提下,通過穿著服裝的人物圖像生成其上衣圖像。LASSNER et al[10]提出了圖像級穿著全身服裝的人物生成模型,可以根據(jù)人物姿勢形態(tài)進(jìn)行服裝調(diào)整,但服裝是隨機(jī)生成,并沒有考慮如何控制服裝項(xiàng)。WEI-LIN et al[11]訓(xùn)練了提升服裝時(shí)尚感的模型,能自動(dòng)度量時(shí)尚標(biāo)準(zhǔn),對全身服裝進(jìn)行微小改變,可以將輸入圖像的服裝調(diào)整為更加時(shí)尚的服裝。NIKOLAY et al[12]采用GAN實(shí)現(xiàn)2D試衣,讓模特試穿給定的服裝,但是沒有考慮人物的姿態(tài),要求人物圖像和服裝圖像高度對齊。WANG et al[13]提出了通過一個(gè)端到端的網(wǎng)絡(luò)來聚合服裝圖像的多尺度特征,結(jié)合姿態(tài)和參考服裝生成新人物圖像,但參考服裝的紋理形變程度過大,偏離了原始圖像的紋理。YANG et al[14]在TPS形變的基礎(chǔ)上,引入了二階差分約束,使得參考服裝的紋理不會(huì)發(fā)生較大形變,效果更加真實(shí),但人物姿態(tài)較為復(fù)雜時(shí),會(huì)出現(xiàn)無法正確試衣的情形。HAN et al[15]提出先生成粗糙試衣圖像,再對參考服裝的特征信息進(jìn)行二次提取,來合成更加真實(shí)的試衣圖像,但是依然會(huì)丟失服裝和人物細(xì)節(jié)特征。WANG et al[16]在此基礎(chǔ)上,提出了特征保留的試衣網(wǎng)絡(luò),更好地保留了參考服裝圖像的細(xì)節(jié)特征,但試衣后人物細(xì)節(jié)特征丟失,除服裝區(qū)域變化外,人物手臂手部區(qū)域以及其它非試衣服裝區(qū)域發(fā)生了不可控的變化,無法合成更加寫實(shí)保真的圖像。MINAR et al[17]在WANG et al[16]的基礎(chǔ)上,提出了服裝形狀和紋理保留網(wǎng)絡(luò),雖然它優(yōu)于目前的方法,但對于長袖款、紋理復(fù)雜的服裝圖像,以及姿態(tài)復(fù)雜的目標(biāo)人物圖像,它并不總是能生成滿意的試衣效果。
針對上述問題,本文提出了款式變換和局部渲染相結(jié)合的虛擬試衣方法,保留參考服裝細(xì)節(jié)信息的同時(shí),需保持目標(biāo)人物圖像的手臂區(qū)域、手部臉部區(qū)域、頭發(fā)區(qū)域以及非試衣區(qū)域等信息不變,然后將服裝渲染到人物圖像的目標(biāo)區(qū)域來完成試衣(如圖1所示)。其過程主要包括以下幾個(gè)步驟:
首先,對人物圖像進(jìn)行像素級語義分割,尋找出具體的服裝區(qū)域,為局部渲染的實(shí)施創(chuàng)造條件;其次,試衣時(shí),如果僅對服裝區(qū)域進(jìn)行渲染,當(dāng)目標(biāo)服裝圖像和參考服裝款式不同時(shí),局部渲染策略則無法實(shí)現(xiàn),因此需要應(yīng)用款式變換模塊將其轉(zhuǎn)換為與參考服裝相同的款式,從而實(shí)現(xiàn)不同服裝款式間的換裝。此外,提出的款式變換模塊是可學(xué)習(xí)的,便于學(xué)習(xí)多種服裝款式之間的轉(zhuǎn)換;第三,為了讓服裝更好地符合試穿者身材,提出了可學(xué)習(xí)的TPS服裝形變模塊,將參考服裝根據(jù)目標(biāo)服裝圖像的身材姿態(tài)進(jìn)行相對應(yīng)的形變;最后,將形變過的服裝無縫地渲染到目標(biāo)圖像上,采取局部渲染策略(僅對服裝區(qū)域進(jìn)行渲染),保留了人物原始的細(xì)節(jié)特征。
圖1 款式變換和局部渲染相結(jié)合的虛擬試衣效果Fig.1 A virtual try-on effect that combines style transformation and local rendering
本文在上述基礎(chǔ)上,為了更好地保留服裝細(xì)節(jié)特征和人物細(xì)節(jié)特征,提出了款式變換和局部渲染相結(jié)合的虛擬試衣網(wǎng)絡(luò)(如圖2所示),主要包含4個(gè)部分:服裝語義分析模塊、服裝款式變換模塊、服裝形變模塊和服裝渲染模塊。
圖2 本文虛擬試衣網(wǎng)絡(luò)框架Fig.2 Virtual try-on network in this paper
此外,由于款式轉(zhuǎn)換需要兩幅服裝圖像在相同域下進(jìn)行轉(zhuǎn)換,因此無法直接實(shí)現(xiàn)目標(biāo)圖像I1和參考服裝圖像R之間的轉(zhuǎn)換,這也是引入?yún)⒖紙D像I2的原因,此外參考圖像I2可以是與參考服裝圖像R款式相同的任意圖像。
對服裝I1、I2進(jìn)行語義分割,提取出具體的服裝區(qū)域,是款式變換的前期工作。主要包括3個(gè)步驟:1) 利用馬爾科夫隨機(jī)場作為基礎(chǔ)網(wǎng)絡(luò)模型,尋找出相鄰像素點(diǎn),確定具體的服裝區(qū)域;2) 為了能讓計(jì)算機(jī)自動(dòng)辨別服裝區(qū)域的標(biāo)簽Ii,選定標(biāo)簽過的服裝區(qū)域作為正樣本,其他外部區(qū)域作為負(fù)樣本,訓(xùn)練分類器C;3) 采取滑動(dòng)窗遍歷整幅圖像,通過分類器尋找出指定標(biāo)簽的服裝區(qū)域,進(jìn)而提取該區(qū)域掩膜M.
款式變換模塊包含生成器Gst和判別器Dst.生成器輸出生成的圖像,由6層卷積網(wǎng)絡(luò)和3層殘差塊組成。判別器Dst對生成器Gst產(chǎn)生的圖像I*進(jìn)行真假樣本的判定,由3層卷積層組成。卷積層作為特征提取,殘差塊級聯(lián)鄰層特征,作為特征優(yōu)化。
Lcyc=‖Gst2(Gst1(I1,M1))-(I1,M1)‖1+
‖Gst1(Gst2(I2,M2))-(I2,M2)‖1.
(1)
Lidt=‖Gst1(I2,M2)-(I2,M2)‖1+
‖Gst2(I1,M1)-(I1,M1))‖1.
(2)
(3)
L1sgan=(Dst(I1,M1)-1)2+Dst(Gst(I2,M2))2.
(4)
款式變換模塊的整體損失Lst:
Lst=L1sgan+λcycLcyc+λidtLidt+λctxLctx.
(5)
服裝形變模塊由2個(gè)特征提取網(wǎng)絡(luò)、1個(gè)特征連接網(wǎng)絡(luò)、1個(gè)回歸網(wǎng)絡(luò)和1個(gè)TPS轉(zhuǎn)換網(wǎng)絡(luò)組成。
Lwarp(θ)=‖R*-Rgt‖1.
(6)
式中:Rgt為目標(biāo)人物服裝的Ground-truth圖像。
服裝渲染模塊由6層卷積網(wǎng)絡(luò)和3層Unet網(wǎng)絡(luò)組成。卷積層作特征提取,Unet層采用3個(gè)跳連接,將低層和高層特征進(jìn)行拼接,更好地保留原始特征。
Lrender=λL1‖It0-Igt‖1+λvggLVGG(It0,Igt) .
(7)
式中:Igt為ground-truth圖像,LVGG為VGG感知損失函數(shù)。
實(shí)驗(yàn)部分使用HAN et al[15]提出的數(shù)據(jù)集,約16 000對圖像,每對圖像包括參考服裝圖像、目標(biāo)人物圖像、語義分割圖、人物姿態(tài)圖以及mask圖像,服裝人物圖像主要是純色背景的女性上裝圖像,隨機(jī)選取14 221對,2 032對作為訓(xùn)練集和測試集。選取該數(shù)據(jù)集中兩種不同款式的服裝圖片若干張,作為款式變換模塊的訓(xùn)練,例如在訓(xùn)練長短袖轉(zhuǎn)換時(shí),選取120張長袖圖片和120張短袖圖片進(jìn)行訓(xùn)練。此外,為了更好地驗(yàn)證款式變換的效果,還使用了LIANG et al[21]提供的CCP數(shù)據(jù)集,該數(shù)據(jù)集包含約2 000張背景復(fù)雜的人物服裝圖片。
語義分析、款式變換、服裝形變和服裝渲染4個(gè)模塊均在pytorch平臺下完成,輸入和輸出圖片分辨率均為256×192.其中,款式變換模塊初始學(xué)習(xí)率為0.000 2,選取Adam優(yōu)化器,批量大小為1,單GPU訓(xùn)練約60 h;服裝形變和服裝渲染模塊初始學(xué)習(xí)率為0.000 1,選取Adam優(yōu)化器,批量大小為4,單GPU訓(xùn)練耗時(shí)約25 h.本文基于分辨率256×192的圖像來計(jì)算PSNR、SSIM和MSE值,以此作為定量評價(jià)指標(biāo)。
WANG et al[16]提出的虛擬試衣網(wǎng)絡(luò)CP-VTON是目前該虛擬試衣領(lǐng)域較新、效果較好的方法,因此,本文后續(xù)實(shí)驗(yàn)都是基于CP-VTON的方法進(jìn)行相關(guān)比較。
為了驗(yàn)證模型的有效性,且便于與Ground-Truth進(jìn)行比較,用本文提出的方法與CP-VTON方法測試了訓(xùn)練集中所有圖片(14 221張),隨機(jī)選取了部分結(jié)果,如圖3所示。
圖3 兩種方法驗(yàn)證訓(xùn)練集結(jié)果比較Fig.3 Results of the two methods in training dataset
從圖3可以看出,CP-VTON和本文方法都能完成試衣。但CP-VTON會(huì)丟失人物一些細(xì)節(jié)特征,例如人的手臂、手部等細(xì)節(jié)特征,此外,試衣后的人物下裝發(fā)生了不可控的變化。對于這些問題,本文提出的方法實(shí)現(xiàn)了較好的效果。
在測試集進(jìn)行了相關(guān)測試,該部分測試主要包括不同款式的試衣測試、人物手臂姿勢簡單的試衣測試和人物手臂姿勢復(fù)雜的測試。
3.2.1不同服裝款式的試衣測試
當(dāng)參考服裝圖像和目標(biāo)人物圖像的款式不同時(shí),應(yīng)用款式變換模塊將目標(biāo)圖像變換為與參考圖像相對應(yīng)的款式,例如圖4中參考圖像為短袖、目標(biāo)圖像為長袖,應(yīng)用款式變換將目標(biāo)圖像變換為短袖款式,然后再結(jié)合參考圖像進(jìn)行試衣。
圖4 兩種不同款式換裝結(jié)果比較Fig.4 Comparison of two different styles
由圖4可以看出,本文方法更好地保留人物的細(xì)節(jié)特征,但也產(chǎn)生了微弱的失真。由于不同款式間的換裝,本文方法需要經(jīng)過款式變換模塊,該模塊在服裝渲染前需要進(jìn)行款式之間的轉(zhuǎn)換(如圖4中目標(biāo)圖像由長袖款變?yōu)槎绦淇?,經(jīng)款式變換后的圖像會(huì)產(chǎn)生一定程度的失真,該失真同樣影響著最終的試衣結(jié)果。
3.2.2人物姿勢簡單類的試衣測試
當(dāng)目標(biāo)人物手臂姿勢較為簡單時(shí),本文方法和CP-VTON方法的實(shí)現(xiàn)效果較好。由圖5可知,當(dāng)目標(biāo)圖像手臂姿勢較簡單時(shí),兩種方法都達(dá)到了令人滿意的效果,但本文方法在人物細(xì)節(jié)特征保持方面優(yōu)于CP-VTON.
圖5 姿勢簡單類的測試結(jié)果Fig.5 Test results of easy poses
3.2.3人物姿勢復(fù)雜類的試衣測試
當(dāng)目標(biāo)人物手臂姿勢較為復(fù)雜時(shí),先前工作試衣失敗或者效果不佳。如圖6可以看出,CP-VTON進(jìn)行試衣渲染時(shí),會(huì)出現(xiàn)手臂和手部細(xì)節(jié)丟失、位置錯(cuò)誤以及下裝隨機(jī)改變等情況。
圖6 姿勢復(fù)雜類的測試結(jié)果Fig.6 Test results of complicated poses
從圖4-圖6的整體結(jié)果比較可以看出,本文提出的款式變換和局部渲染相結(jié)合的試衣方法效果更加顯著。該方法摒棄了傳統(tǒng)的全局渲染的試衣方法,采用先進(jìn)行服裝語義分割,確定具體的服裝區(qū)域后,僅對服裝區(qū)域進(jìn)行渲染的策略,不再對人物圖像整體進(jìn)行渲染,很好地保證了除試穿的服裝區(qū)域外,其他非試衣區(qū)域的特征信息不會(huì)丟失,同時(shí)也保證試穿上裝時(shí),下裝不會(huì)發(fā)生變化。尤其在保持人物手臂、手部細(xì)節(jié)以及下裝不變等方面效果較好,證實(shí)了算法設(shè)計(jì)的有效性。
上述定性比較是基于視覺層面上的結(jié)果對比,該部分為了更好地比較兩種方法的效果,采取定量比較的方式,選取了3個(gè)評價(jià)指標(biāo)對生成結(jié)果進(jìn)行評測,其中PSNR、SSIM、MSE分別表示兩幅圖像間的峰值信噪比、結(jié)構(gòu)相似性以及均方誤差,評測結(jié)果如表1和表2所示。
表1 隨機(jī)選取50組實(shí)驗(yàn)結(jié)果Table 1 50 groups of test results selected randomly
表2 全部測試結(jié)果Table 2 All test results
表1是隨機(jī)選取50組實(shí)驗(yàn)結(jié)果的數(shù)據(jù),表2是全部測試結(jié)果(共14 221組)的數(shù)據(jù)。從表中可以看出,本文方法的PSNR值略高于CP-VTON方法,表明了本文方法試衣后的圖像質(zhì)量更好。SSIM值基本一致,表明兩種方法在圖像結(jié)構(gòu)性保留方面都有著較好的效果。此外,本文方法的MSE值小于CP-VTON方法,說明了本文方法的圖像失真較小,更好地保留了原始圖像的結(jié)構(gòu)特征,試衣后圖像更加保真。
圖像級的虛擬試衣是一項(xiàng)復(fù)雜的研究任務(wù),先前方法在試衣時(shí),人物圖像手臂、手部等細(xì)節(jié)特征容易丟失,此外,在試穿上裝時(shí),下裝發(fā)生不可控的變化。針對上述問題,本文提出了款式變換和局部渲染相結(jié)合的虛擬試衣網(wǎng)絡(luò):先對人物圖像進(jìn)行像素級語義分割,尋找出具體的服裝區(qū)域,為服裝的局部渲染提供前提條件。為了實(shí)現(xiàn)不同服裝款式間的試衣,構(gòu)造可學(xué)習(xí)的款式變換模塊;此外,為了讓服裝更好地符合試穿者身材姿態(tài),使用了可學(xué)習(xí)的TPS服裝形變模塊,從而使試衣后圖像更加保真寫實(shí)。除試衣的服裝區(qū)域外,保留了原始圖像的其他細(xì)節(jié)特征。
在未來的研究中,虛擬試衣有著廣闊的研究前景。但是還有一些問題需要繼續(xù)展開深入研究:1) 在實(shí)現(xiàn)圖像保真的前提下,試衣時(shí)應(yīng)考慮參考服裝圖像的款式,不僅僅是基于目標(biāo)圖像進(jìn)行試衣。目前該方法實(shí)現(xiàn)起來難度較大,不僅是簡單地將形變后的參考服裝圖像試穿到目標(biāo)圖像上,還要結(jié)合參考服裝圖像的款式,進(jìn)行試衣;2) 首次將InstaGAN應(yīng)用于服裝款式轉(zhuǎn)換,由于服裝款式的多樣性,實(shí)現(xiàn)難度較大,效果還有待提升,后續(xù)還需要進(jìn)行相關(guān)改進(jìn),增強(qiáng)款式轉(zhuǎn)換后圖像的真實(shí)感。