陳玥芙蓉,李 毅
四川大學 計算機學院,成都 610065
隨著互聯(lián)網(wǎng)的快速發(fā)展,電子商務(wù)也逐漸從萌芽階段發(fā)展至成熟階段。其中,發(fā)展勢頭最迅猛的就是服裝銷售,它不再拘泥于線下的銷售,更多的是在淘寶、抖音等電子商務(wù)平臺上進行直播銷售。但是,線上的服裝銷售相比線下,缺少了客戶實際上身試穿的效果,往往只能在收到具體貨物后,再進行試穿,這也使得線上銷售的退單率遠遠高于線下。退單一方面延長了客戶購物的時間,另一方面也加大了商戶和客戶各自的花銷。那么,如何根據(jù)用戶的具體身型實現(xiàn)虛擬試穿服裝的功能,也成為計算機視覺中一個極具挑戰(zhàn)性的課題。
近幾年來,基于深度學習的二維圖像虛擬試衣方法取得了較好的成果。生成對抗網(wǎng)絡(luò)(generative adversarial networks,GAN)[1]是由Goodfellow 等人提出的非監(jiān)督式機器學習架構(gòu)。受到原始GAN 網(wǎng)絡(luò)的啟發(fā),Jetchev等人提出了CAGAN(conditional analogy GAN)[2]來解決虛擬試穿問題。隨后,Pandey 等人提出了Poly-GAN[3],該方法嘗試用一個網(wǎng)絡(luò)來實現(xiàn)虛擬試穿中的形變和融合問題,雖然降低了模型的整體復(fù)雜度,但仍存在局限性。二維虛擬試穿網(wǎng)絡(luò)(virtual try-on network,VITON)[4]由Han 等人提出,該論文設(shè)計了U 型的編碼-解碼生成器網(wǎng)絡(luò)結(jié)構(gòu),用于生成粗略的合成圖像,然后利用形狀信息預(yù)測形變參數(shù),最后通過融合網(wǎng)絡(luò)進一步擴大最初的服裝模糊區(qū)域;同年,Wang等人提出了特征保留的虛擬試穿網(wǎng)絡(luò)(characteristic-preserving virtual try-on network,CP-VTON)[5],該論文在VITON 的基礎(chǔ)上進行了改進,使用幾何匹配模塊(geometric matching module,GMM)和試穿模塊(try-on module,TOM)來完成虛擬試衣。但因為不正確的人體解析結(jié)果和學習預(yù)測的薄板樣條變換(thin-plate spline,TPS)[6]參數(shù)過擬合導致服裝發(fā)生不規(guī)則形變;其次試穿模塊僅由生成網(wǎng)絡(luò)組成,缺少與真實試穿結(jié)果的對比,融合后服裝紋理較模糊。算法[7-8]分別針對上述問題做了改進,解決了部分問題,但整體效果仍然缺少真實感。為了解決上述問題,本文在CP-VTON的基礎(chǔ)上進行了以下四個方面的改進:
(1)增加人體解析矯正模塊,用于修正人體解析中劃分不正確的區(qū)域,運用膚色檢測算法從背景中識別并分離出脖子的區(qū)域,進行重新標記。
(2)幾何配準模塊采用回歸網(wǎng)絡(luò)預(yù)測TPS 參數(shù),并增加差分約束項約束形變過程。
(3)試穿模塊引入生成對抗網(wǎng)絡(luò)的訓練策略,使用編碼器-解碼器結(jié)構(gòu)的類U-Net[9]網(wǎng)絡(luò)作為生成器,改進的卷積神經(jīng)網(wǎng)絡(luò)作為判別器。
(4)增加區(qū)域特征重構(gòu)模塊,根據(jù)換裝類型的不同,采用不同的方法恢復(fù)手臂區(qū)域的分辨率,提升虛擬試衣的真實效果。
VITON 首次提出使用人體量化表征以及服裝信息,通過多任務(wù)的編碼-解碼生成器,實現(xiàn)服裝到人體中相應(yīng)區(qū)域的重構(gòu),生成粗糙的試穿服裝的人像以及服裝蒙版;利用形狀上下文估計服裝形變的薄板樣條變換,使服裝產(chǎn)生符合人體姿態(tài)和身體形狀的形變;最后將生成的形變服裝和粗糙的試穿人像輸入細化網(wǎng)絡(luò),進一步生成服裝的細節(jié)信息,得到最終的試穿結(jié)果。
CP-VTON在VITON的基礎(chǔ)上進行了改進,其模型結(jié)構(gòu)圖如圖1所示,首先不再像VTION中計算興趣點的對應(yīng)密度,而是通過幾何匹配模塊完全自主地學習如何預(yù)測薄板樣條變換參數(shù),使目標服裝產(chǎn)生適合目標人群身型的形狀;第二步輸入形變后服裝和人體特征信息,通過試穿模塊完成形變服裝和人體的融合,渲染圖像保證平滑度,生成虛擬試衣的效果圖。該方法較VITON,能夠預(yù)測更準確的TPS參數(shù),解決了部分圖片試衣后出現(xiàn)小范圍服裝沒有覆蓋,裸露膚色的問題,但對于有頭發(fā)和手臂遮擋的數(shù)據(jù),實驗效果較差。其次,處理服裝紋理復(fù)雜的數(shù)據(jù),都出現(xiàn)了試衣后服裝圖案模糊的情況,并且膚色、褲子等其他區(qū)域顏色有明顯變化,生成的結(jié)果整體較模糊,缺乏真實感。
受博弈論中的零和博弈啟發(fā),生成對抗網(wǎng)絡(luò)將生成問題視作生成器和判別器這兩個網(wǎng)絡(luò)的對抗和博弈:生成器從給定均勻分布或者正態(tài)分布的噪聲中產(chǎn)生具有和訓練樣本分布一致的“假樣本”,判別器主要用來判別該樣本是來自真實樣本,而不是生成器生成的“假樣本”的概率。在訓練過程中,生成器試圖產(chǎn)生與真實樣本更相似的樣本數(shù)據(jù)“欺騙”判別器,相應(yīng)地,判別器試圖對真實數(shù)據(jù)與生成數(shù)據(jù)產(chǎn)生更準確的判斷。因此,生成器在對抗中不斷提高自己的“造假能力”,判別器不斷提高自己分辨真?zhèn)蔚哪芰Γ罱K生成網(wǎng)絡(luò)生成的數(shù)據(jù)也就越來越逼近真實數(shù)據(jù)。
因為生成對抗網(wǎng)絡(luò)是由初級的多層感知機模型構(gòu)成,所以導致原始的生成對抗網(wǎng)絡(luò)并不穩(wěn)定。針對這一問題,Radford 等人提出了深層卷積生成對抗網(wǎng)絡(luò)(deep convolutional generative adversarial networks,DCGAN)[10]。較傳統(tǒng)的生成對抗網(wǎng)絡(luò),DCGAN 進行了下面幾個方面的改進:(1)使用步長為1 的卷積層代替池化層,并移除所有的全連接層。(2)每進行一次卷積操作就使用批處理歸一化。(3)對于生成器使用ReLU 激活函數(shù)替換傳統(tǒng)的Sigmoid函數(shù),并對輸出層使用Tanh函數(shù)激活;對于判別器使用LeakyReLU 進行激活。該方法將卷積神經(jīng)網(wǎng)絡(luò)和生成對抗的思想融合起來,從一定程度上解決了網(wǎng)絡(luò)不穩(wěn)定的問題。
本文提出的虛擬試衣模型共包含四個模塊,整體結(jié)構(gòu)如圖2所示。首先,人體解析區(qū)域矯正對解析結(jié)果中錯誤的人體特征表示進行識別并標記;然后幾何配準學習并預(yù)測TPS參數(shù),利用薄板樣條插值函數(shù)生成符合目標人物身型的形變服裝;接著由基于對抗訓練策略的虛擬試穿完成形變服裝和目標人物的融合;最后通過區(qū)域特征重構(gòu)對試穿結(jié)果I0進行人體解析區(qū)域重識別,計算手臂公共感興趣區(qū)域,從原始圖中獲取手部特征信息并填補,生成最終的試衣結(jié)果圖I。
CP-VTON中幾何匹配模塊的人體特征表示由三部分組成:姿勢熱圖(pose heatmap)、身體形狀圖(body shape)和保留區(qū)域圖(reserved regions)。姿勢熱圖由Cao 等人[11]設(shè)計并開源的人體姿態(tài)檢測和分析工具OpenPose 提供的25 個人體關(guān)節(jié)點構(gòu)成,為了擴大表示范圍,以關(guān)節(jié)點坐標為中心繪制成11×11 的白色矩形。身體形狀圖和保留區(qū)域圖由Gong等人提出的自我監(jiān)督的敏感學習結(jié)構(gòu)的人體解析器[12]解析和再處理后得到。該模型將人體劃分為18 個區(qū)域,并用不同顏色標識不同區(qū)域,因為缺少“脖子”區(qū)域標簽,導致錯誤地將脖子區(qū)域劃分為背景,不正確的人體特征信息造成試衣結(jié)果中領(lǐng)口部分形變過度且服裝不貼合人體。針對該問題,本文提出使用基于橢圓模型的膚色檢測,旨在分離出背景中遺漏的脖子區(qū)域,并用新的標簽對該區(qū)域進行標識。
大量研究表明,人的膚色在外觀上的差異主要受到亮度影響,在不考慮亮度Y時,皮膚像素點在Cr-Cb二維空間中近似成一個橢圓。本文采用高建坡等人提出的基于KL變換的橢圓模型膚色檢測方法[13]。通過以下幾個步驟引入新的膚色判別準則。
步驟1 對所有膚色樣本進行分布均勻化處理,計算樣本集的均值M及協(xié)方差C,然后求解協(xié)方差矩陣的特征向量P1和P2。以O(shè)點為新的坐標系原點,P1P2所在直線為坐標軸形成的坐標系就是趨近于膚色分布區(qū)域中心的理想坐標系。如圖3所示。
步驟2 取基向量P1所在直線端點處兩個樣本點A1、A2,分別計算A1、A2到O點的距離D1和D2,橢圓的長半軸a的長度可以表示為D1和D2的最小值:
a=min{D1,D2} (1)
步驟3 用同樣的方法在基向量P2所在直線上選取B1和B2,可得到橢圓的短半軸長度b。
步驟4 原始色度坐標向量P=(Cb,Cr)在新坐標系中表示為:
利用橢圓邊界方程對背景區(qū)域進行膚色分割,逐個像素點判斷是否在重新定義的橢圓邊界區(qū)域內(nèi),得到膚色分割后的二值化圖像,最后對脖子區(qū)域用RGB(189,183,107)進行標注,矯正后結(jié)果如圖4。
薄板樣條變換是用于兩幅待配準圖像進行空間變換的模型,它對兩幅圖像中若干對控制點進行二維插值計算,使兩張圖像的控制點能夠完全重合。根據(jù)實驗數(shù)據(jù)的大小,使用了固定控制點12×16的網(wǎng)格,如圖5左圖所示。將原始網(wǎng)格中的控制點和發(fā)生形變后的對應(yīng)控制點設(shè)置為一組控制點,因此僅通過圖像中的192組控制點位置對TPS變換參數(shù)進行設(shè)置和估計。
受到卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)幾何配準[14]的影響,本文中幾何配準使用特征提取網(wǎng)絡(luò)和回歸預(yù)測網(wǎng)絡(luò)完成薄板樣條變換模型中參數(shù)的估計。特征提取網(wǎng)絡(luò)包含四個步長為2 和兩個步長為1 的下采樣卷積層,用來提取人物和服裝的高層次特征信息,并結(jié)合成一個張量輸入回歸網(wǎng)絡(luò)。回歸預(yù)測網(wǎng)絡(luò)包含兩個步長為2的卷積層、兩個步長為1 的卷積層和一個全連接的輸出層。該網(wǎng)絡(luò)估計了一個384維的向量θ,該向量由每幅圖像中控制點的12個橫坐標x和16個縱坐標y組成。最后,使用預(yù)估參數(shù)θ進行薄板樣條變換,生成形變服裝,并將形變服裝和真實形變服裝的L1距離作為回歸預(yù)測網(wǎng)絡(luò)的損失函數(shù)。
但是,從CP-VTON的已有結(jié)果中可以發(fā)現(xiàn),輸出的形變服裝總是出現(xiàn)形變過度或者和目標人物原始服裝高度相似的情況,出現(xiàn)該情況可能與預(yù)測的TPS參數(shù)過擬合有關(guān),因此使用差分的方法約束不規(guī)則的形變。
根據(jù)實際網(wǎng)格定義了差分約束項來平滑形變過度的區(qū)域。如圖5右圖所示,左圖為薄板樣條變換模型中使用的12×16固定控制點網(wǎng)格線。右圖為放大的2×2的網(wǎng)格上定義的控制點。對于實際網(wǎng)格中任意中心采樣點p(x0,y0),取距離中心采樣點長度為d的上、下、左、右四個相鄰采樣點p(x1,y1)、p(x2,y2)、p(x3,y3)、p(x4,y4),使用公式(4)分別計算相鄰采樣點到中心采樣點的斜率Si:
最終,幾何配準的損失函數(shù)由生成的形變服裝和真實形變服裝的L1距離和差分約束項Lr組成:
圖6為本文方法和CP-VTON的形變網(wǎng)格結(jié)果對比圖,CP-VTON易產(chǎn)生未對準和紋理扭曲的形變結(jié)果,而定義的差分約束項能夠產(chǎn)生更合理的形變,特別在處理帶有復(fù)雜紋理和豐富色彩的服裝時,整體效果更好。
為解決除上衣區(qū)域外的其他區(qū)域出現(xiàn)的清晰度下降和顏色變化的問題,修改了試穿模塊保留區(qū)域圖中包含的身體部位,除了頭發(fā)和面部外,將脖子、褲子、短裙等5個標簽區(qū)域加入保留區(qū)域。
針對CP-VTON中存在的服裝模糊和紋理缺失的問題,引入了對抗訓練策略來訓練虛擬試穿部分的生成器。對抗訓練策略一方面能夠通過生成器和判別器的博弈,促使生成器生成與真實數(shù)據(jù)分布高度相似的數(shù)據(jù);另一方面判別器對生成數(shù)據(jù)和真實數(shù)據(jù)的辨別,為生成器提供梯度,增強了數(shù)據(jù)間的相似度,使得最終生成的圖像更加清晰真實。
該模塊的生成器依然沿用原始論文中類U-Net 的網(wǎng)絡(luò)結(jié)構(gòu),具體參數(shù)如表1所示。該網(wǎng)絡(luò)包括收縮路徑和擴展路徑:收縮路徑使用卷積核為3,步長為2的下采樣卷積層,每進行一次下采樣,特征通道數(shù)增加一倍,共進行5 次;擴展路徑是加入了跳躍連接的上采樣過程,每個上采樣過程包括一個卷積核為3,步長為1 的卷積層,在每個卷積層后連接一個IN(InstanceNorm)層[15]和跳躍連接模塊,并用ReLU進行激活。利用跳躍連接可以解決網(wǎng)絡(luò)層數(shù)較深引起的梯度下降問題,有助于梯度的反向傳播,加快整個訓練過程。

表1 虛擬試穿的生成器具體參數(shù)Table 1 Generator network structure of try-on module
受到GAN 和DCGAN 的啟發(fā),在虛擬試穿模塊加入的判別器是改進的卷積神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示。判別網(wǎng)絡(luò)共包含5 個卷積層,前3 個卷積層步長為2,其余步長為1,在中間三個卷積層后分別加入一個IN 層,用于完成歸一化,并用LeakyReLU 進行激活,最后一層則選用Sigmoid 激活函數(shù)完成二分類,其網(wǎng)絡(luò)具體參數(shù)如表2所示。

表2 虛擬試穿的判別器具體參數(shù)Table 2 Discriminator network structure of try-on module
將幾何配準生成的形變服裝和人體特征表示作為虛擬試穿的輸入,用于生成虛擬試衣結(jié)果。在訓練生成器和判別器的過程中,使用了隨機裁剪的方法,將生成的圖像進行任意尺寸的裁剪,并分別對原始生成圖像和裁剪生成圖像進行判別。這一方法在增加數(shù)據(jù)量的同時,也弱化了數(shù)據(jù)噪聲,提高了模型的穩(wěn)定性。
為了保證更真實的試穿效果,使用了L1損失函數(shù)、VGG感知損失函數(shù)和對抗損失函數(shù)。L1損失函數(shù)用于計算模型生成試穿結(jié)果I0與真實試穿結(jié)果Ig之間絕對值誤差的平均值;VGG感知損失[16]則計算了生成試穿結(jié)果I0與真實試穿結(jié)果Ig在每一層特征圖的L1 距離之和;對抗損失分別對生成試穿結(jié)果I0、真實試穿結(jié)果Ig和裁剪結(jié)果Ic進行判別,它們的損失函數(shù)定義如下:Data
公式(10)中的A是結(jié)合了姿勢熱圖、身體形狀圖和保留區(qū)域圖的人體特征信息,C是服裝信息,Pdata代表實際數(shù)據(jù)分布,G(A,C) 是生成的試穿結(jié)果,G*(A,C)是隨機裁剪后的試穿結(jié)果。最終,虛擬試穿模塊的損失函數(shù)由λ1、λVGG和λGAN加權(quán)表示:
LTOM=λ1L1+λVGGLVGG+λGANLGAN(11)
對于手臂交叉在前的目標人物圖,往往試衣效果較差,因為手臂對服裝有部分遮擋,導致在網(wǎng)絡(luò)處理后手臂信息部分丟失,甚至完全無法辨別。為了解決這一問題,本文提出一種手臂區(qū)域特征重構(gòu)的方法,具體流程如圖8所示。
首先,對虛擬試穿模塊生成的試衣結(jié)果使用人體解析模型重識別手部區(qū)域,將原始圖和虛擬圖手部區(qū)域的公共蒙版部分作為感興趣區(qū)域ROI(region of interest),并從原圖中獲取對應(yīng)區(qū)域的像素作為前景,將網(wǎng)絡(luò)生成的虛擬試衣圖片作為背景,對前景和背景使用泊松融合算法[17]進行融合。具體步驟如下:
步驟1 計算感興趣區(qū)域的梯度場。計算梯度場選用拉普拉斯算子,得到感興趣區(qū)域的X方向的梯度Rx和Y方向的梯度Ry。
步驟2 用同樣的方法計算生成的虛擬試衣圖片的梯度場。得到背景圖像的X方向的梯度Sx和Y方向的梯度Sy。
步驟3 計算融合后的圖像的梯度場。就是直接將感興趣區(qū)域的梯度場替換背景圖像中對應(yīng)位置的梯度場,最終得到融合后圖像X方向的梯度Lx和Y方向的梯度Ly。
步驟4 通過上一步的計算,可以獲得待重建圖像的梯度場,然后通過公式(12)對梯度求偏導,從而獲得圖像的散度divA。
步驟5 利用公式(13)中的泊松重建方程求解融合后圖像x。其中A為N×N的系數(shù)稀疏矩陣,N為要融合像素的數(shù)量,根據(jù)拉普拉斯算子,該系數(shù)稀疏矩陣定義為一個主對角線元素全為-4,相鄰像素位置為1,其余為0的矩陣。
本文使用的泊松融合算法,既保留了前景的紋理特征,又解決了拼接造成的邊界明顯的問題。在經(jīng)過區(qū)域特征重構(gòu)后,虛擬試穿結(jié)果中手部區(qū)域像素得到了最大化的還原。
本文使用了Hen 等人的數(shù)據(jù)集進行了實驗。該數(shù)據(jù)集包含16 253 對女性半身彩色圖片和對應(yīng)的服裝平鋪圖片,這些圖片的分辨率均為192×256。在本次實驗中,設(shè)置訓練集14 221對,測試集2 032對。
實驗選用Pytorch 作為深度學習框架,在NVDIA GeForce RTX 2060上進行。實驗過程中的優(yōu)化器全部選用Adam,其中優(yōu)化器參數(shù)β1=0.5,β2=0.999,學習率=0.000 1,λ1=λVGG=λGAN=1,λr=0.45,batch大小設(shè)置為4。
因為本文的方法是基于CP-VTON 改進的,所以實驗結(jié)果均與CP-VTON進行對比。對實驗結(jié)果使用結(jié)構(gòu)相似性SSIM(structural similarity)指標進行定量評價。SSIM通過亮度、對比度和結(jié)構(gòu)三個方面對樣本X和樣本Y兩幅圖像的相似度進行評價。計算公式如下:
其中,μx、μy分別表示樣本X和樣本Y的均值,σ2x、σ2y代表方差,σxy表示X和Y的協(xié)方差,c1和c2為兩個常數(shù),由像素值L和系數(shù)k1和k2表示。每次計算時選取N×N的滑動窗口,最后取平均值作為全局的SSIM。隨機選取2 032對測試數(shù)據(jù)中的50%,計算其SSIM平均值,結(jié)果如表3。實驗結(jié)果表明本文的方法較CP-VTON有很大提升。

表3 本文方法和CP-VTON的定量比較Table 3 Quantitative comparison between proposed method and CP-VTON
針對服裝形變過度的問題,本文提出的方法在一定程度上降低了形變過度的可能性,能生成更符合目標人物身型的形變服裝。如圖9所示,對比A組和C組數(shù)據(jù),因遮擋或解析不正確造成上半身區(qū)域不完整,CP-VTON方法生成的服裝肩部翹曲過度,與目標人物肩部輪廓圖嚴重不符,而本文方法產(chǎn)生的形變結(jié)果領(lǐng)口區(qū)域的沒有產(chǎn)生過度形變,肩部也更貼合目標人物身型。而針對人物上身無遮擋的數(shù)據(jù),例如B 組,實驗結(jié)果基本與CP-VTON相同,試穿效果較好。
最終試衣結(jié)果如圖10 所示,第一行為手臂區(qū)域?qū)Ρ龋诙袨閾Q裝區(qū)域紋理對比,第三行為保留區(qū)紋理對比。提出的方法在服裝貼合度、服裝細節(jié)和整體清晰度上都有明顯提升。在第1組數(shù)據(jù)中,CP-VTON方法產(chǎn)生的試衣結(jié)果肩膀處衣服模糊,甚至裸露出原本膚色,換裝后的短袖形狀更接近原始的吊帶形狀,而本文方法依然保留短袖形狀;在處理服裝紋理較復(fù)雜的數(shù)據(jù)時,如第2組,可明顯看出本文方法對服裝上的標志和文字保留情況更好;在所有的實驗結(jié)果中,本文方法的結(jié)果圖中重塑的手部信息與原始圖近似,而CP-VTON 的手部特征幾乎是全部模糊的,尤其是手部遮擋服裝時。
本文在CP-VTON的基礎(chǔ)上提出一種改進的虛擬試衣方法。該方法使用基于KL變換的橢圓模型膚色劃分新規(guī)則,對人體特征信息中錯誤的信息重劃分,并對幾何配準模塊預(yù)測的TPS參數(shù),設(shè)置差分約束規(guī)則進行約束,降低服裝形變過度的可能性。引入生成對抗策略訓練試衣模塊生成器,提高了形變服裝和目標人物的融合和服裝紋理圖案保留效果。擴大保留區(qū)域,增加區(qū)域特征重構(gòu)模塊,提高非換衣區(qū)域和手部區(qū)域清晰度。通過上述定量和定性分析,本文提出的方法較CP-VTON 有明顯的提升,且試衣效果較真實。