魏程峰,董洪偉,徐小春
江南大學(xué) 人工智能與計(jì)算機(jī)學(xué)院,江蘇 無錫 214122
人體圖像合成(PIS)具有廣泛的潛在應(yīng)用價(jià)值,例如電影制作、虛擬試衣和圖像編輯等。盡管生成對(duì)抗網(wǎng)絡(luò)(generative adversarial networks,GAN)在圖像合成領(lǐng)域已經(jīng)取得顯著的成果,能夠合成真實(shí)的圖像,但是人體圖像合成仍然是一個(gè)具有挑戰(zhàn)性的問題,例如,當(dāng)衣服上存在圖案時(shí),純卷積結(jié)構(gòu)的生成對(duì)抗網(wǎng)絡(luò)就無法很好地生成它們,因?yàn)榫矸e神經(jīng)網(wǎng)絡(luò)對(duì)輸入的數(shù)據(jù)具有平移不變性,這限制了其對(duì)數(shù)據(jù)進(jìn)行空間重組的能力。對(duì)于人體圖像合成的研究目前大多集中在人體姿態(tài)的編輯,但是人體屬性并不是只有姿態(tài),還有人體外觀屬性(如:人臉、頭發(fā)、衣服和褲子等)針對(duì)這些屬性的編輯所做的研究還相對(duì)較少,效果也不能令人滿意。
為了解決上述問題,本文通過對(duì)輸入的人體圖像進(jìn)行語義分割來實(shí)現(xiàn)人體外觀屬性的分離,通過替換其中的某些屬性來實(shí)現(xiàn)外觀屬性的編輯,通過提出新的空間變換算法來對(duì)多個(gè)外觀屬性特征進(jìn)行空間變換,并將它們?nèi)诤蠟槟繕?biāo)人體圖像,有效保留了衣服上的紋理與圖案。實(shí)驗(yàn)發(fā)現(xiàn),本文提出的方法實(shí)現(xiàn)了同時(shí)編輯姿態(tài)、外觀等屬性的目的,并且得到的結(jié)果具有較好的視覺效果。
圖像空間變換通過改變?cè)磮D像中像素點(diǎn)的空間位置坐標(biāo)來得到目標(biāo)圖像,但由于卷積神經(jīng)網(wǎng)絡(luò)對(duì)輸入的數(shù)據(jù)具有平移不變性,這一特性限制了其空間變換的能力,因此有很多增強(qiáng)其空間變換能力的方法被提出。Jaderberg等人[1]提出了空間變換器網(wǎng)絡(luò)(STN),其使用了可學(xué)習(xí)的空間變換模塊,用于估計(jì)全局轉(zhuǎn)換參數(shù)并且使用仿射變換在特征級(jí)別進(jìn)行變換。Lin等人[2]在STN的基礎(chǔ)上提出在網(wǎng)絡(luò)中傳送變換參數(shù)而不是變換后的特征,在所有的對(duì)準(zhǔn)模塊中使用相同的幾何預(yù)測(cè)器以避免采樣錯(cuò)誤。Jiang等人[3]提出線性化多采樣方法以解決雙線采樣在尺度變化較大的情況下表現(xiàn)較差的問題。全局空間變換方法由于對(duì)全局特征采用相同的變換參數(shù),無法處理像人體等可以發(fā)生形變的目標(biāo),基于流場(chǎng)的方法能夠?qū)γ恳粋€(gè)特征點(diǎn)進(jìn)行偏移,使用起來更為靈活。Zhou等人[4]提出Appearance flow用于預(yù)測(cè)源與目標(biāo)之間的流場(chǎng),通過對(duì)源圖像進(jìn)行變換來生成目標(biāo)圖像,但是該方法在像素級(jí)別對(duì)圖像進(jìn)行變換,而不是特征級(jí)別,使其難以捕捉較大的動(dòng)作和生成新的內(nèi)容。Wang等人[5]以監(jiān)督的方式訓(xùn)練流場(chǎng)估計(jì)網(wǎng)絡(luò),并使用生成對(duì)抗網(wǎng)絡(luò)來生成人體自遮擋部分的內(nèi)容。Siarohin等人[6]提出將關(guān)鍵點(diǎn)定位在物體的剛性位置,通過輸入稀疏的關(guān)鍵點(diǎn)來獲得密集的流場(chǎng)。
姿態(tài)引導(dǎo)的人體圖像合成通過輸入一幅源人體圖像和一組目標(biāo)姿態(tài)的關(guān)鍵點(diǎn),得到一幅目標(biāo)姿態(tài)的人體圖像,同時(shí)具有源圖像的外觀。Ma等人[7]提出一個(gè)二階段方法,在第一階段合成一幅粗糙的人體圖像,然后在第二階段對(duì)該粗糙的人體圖像進(jìn)行完善,得到更為精細(xì)的結(jié)果。Esser等人[8]將變分自動(dòng)編碼器和條件U-Net相結(jié)合對(duì)人體進(jìn)行建模,然而,U-Net中的跳連接會(huì)引起特征錯(cuò)位,影響生成結(jié)果。Siarohin等人[9]通過將U-Net中的跳連接改為可變形的跳連接后緩解了這一問題,但是可變形的跳連接需要預(yù)定義,使得這一方法的應(yīng)用受到限制。Zhu等人[10]提出在生成器中使用級(jí)聯(lián)的姿態(tài)注意力轉(zhuǎn)換模塊對(duì)源人體圖像進(jìn)行轉(zhuǎn)換。Han等人[11]使用基于流的方法對(duì)輸入的像素進(jìn)行變換,但是在像素級(jí)別進(jìn)行變換無法生成新的內(nèi)容,因此也無法處理人體自遮擋的情況。為了解決了上述問題,本文提出了新的空間變換算法在特征級(jí)別進(jìn)行空間變換,取得了較好的結(jié)果。
本文提出的方法允許用戶對(duì)各個(gè)人體屬性進(jìn)行控制(如姿態(tài)、衣服、褲子和頭發(fā)等),并合成高質(zhì)量的人體圖像。通過使用預(yù)訓(xùn)練的語義分割方法,將不同的人體外觀屬性進(jìn)行分離并將它們輸入外觀屬性編碼網(wǎng)絡(luò)中,得到各個(gè)屬性的特征,通過提出新的空間變換算法對(duì)這些屬性特征進(jìn)行變換與組合,從而達(dá)到控制合成結(jié)果的目的。生成器整體結(jié)構(gòu)如圖1所示。本文的方法主要由五個(gè)網(wǎng)絡(luò)所組成,分別是流場(chǎng)估計(jì)網(wǎng)絡(luò)、語義合成網(wǎng)絡(luò)、外觀屬性編碼網(wǎng)絡(luò)、人體圖像合成網(wǎng)絡(luò)和判別器網(wǎng)絡(luò)。流場(chǎng)估計(jì)網(wǎng)絡(luò)用于估計(jì)源人體圖像與目標(biāo)人體圖像中相同特征之間的空間位置的坐標(biāo)偏移量以及自遮擋情況,并以流場(chǎng)和掩碼的形式表示。語義合成網(wǎng)絡(luò)用于合成目標(biāo)人體的語義分割圖,該語義分割圖用于在人體圖像合成階段進(jìn)行像素級(jí)別的特征選擇,保證最終合成的人體圖像的質(zhì)量。外觀屬性編碼網(wǎng)絡(luò)對(duì)源人體圖像中的各個(gè)外觀屬性進(jìn)行編碼,得到各個(gè)屬性的特征,在后續(xù)階段將對(duì)這些特征進(jìn)行空間變換,以合成目標(biāo)人體圖像。人體圖像合成網(wǎng)絡(luò)是本文的主干網(wǎng)絡(luò),該網(wǎng)絡(luò)接收其他網(wǎng)絡(luò)的輸出,用于合成高質(zhì)量的目標(biāo)人體圖像。
圖1 生成器整體網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Overall network structure of generator
流場(chǎng)估計(jì)網(wǎng)絡(luò)E用于估計(jì)源人體外觀屬性與目標(biāo)人體外觀屬性中相同特征之間的空間位置偏移量,以及人體自遮擋情況,然后分別以流場(chǎng)和掩碼的形式輸出。該網(wǎng)絡(luò)將源人體外觀屬性XS,源人體姿態(tài)PS和目標(biāo)人體姿態(tài)PT作為輸入,然后輸出預(yù)測(cè)的流場(chǎng)W,遮擋掩碼M和特征圖F。網(wǎng)絡(luò)的超參數(shù)配置如圖2所示,不同的上角標(biāo)代表不同的分辨率。
圖2 流場(chǎng)估計(jì)網(wǎng)絡(luò)超參數(shù)配置Fig.2 Flow field estimation network hyperparameter configuration
流場(chǎng)W中包含了目標(biāo)屬性中每一個(gè)特征的坐標(biāo)對(duì)應(yīng)于源屬性特征坐標(biāo)的偏移;掩碼M用于表示目標(biāo)屬性中的內(nèi)容是否被遮擋,如果沒有被遮擋,則從源屬性中得到特征,如果被遮擋,則從生成對(duì)抗網(wǎng)絡(luò)中生成;特征圖F將作為后續(xù)語義合成網(wǎng)絡(luò)的輸入。
本文的流場(chǎng)估計(jì)網(wǎng)絡(luò)是在特征級(jí)別進(jìn)行估計(jì),而不是在像素級(jí)別,在特征級(jí)別進(jìn)行估計(jì)可以降低估計(jì)的難度,并且模型可以生成新的內(nèi)容。為了保證在特征級(jí)別采樣的正確性,防止陷入局部最小,本文引入了采樣正確性損失函數(shù)[12],該損失函數(shù)用于測(cè)量?jī)蓚€(gè)特征之間的相似性,即轉(zhuǎn)換后的源屬性特征和目標(biāo)特征,源屬性特征VS和目標(biāo)特征VT是分別將XS和XT送入預(yù)訓(xùn)練的VGG網(wǎng)絡(luò)后得到的。
采樣正確性損失函數(shù)可以約束流場(chǎng)在源屬性特征與目標(biāo)特征的語義相似區(qū)域采樣,但由于相鄰的特征具有相似性以及空間關(guān)系,這就會(huì)導(dǎo)致局部區(qū)域的采樣出現(xiàn)錯(cuò)誤,因此,本文引入一個(gè)正則化項(xiàng)用于懲罰局部區(qū)域的采樣問題,使得局部區(qū)域的變換符合仿射變換。使用CT表示目標(biāo)特征的坐標(biāo)矩陣,源特征的坐標(biāo)矩陣CS可以表示為CS=CT+W。使用Nn(CT,l)表示在坐標(biāo)矩陣CT中以l為中心提取n×n大小的矩陣塊。該正則化項(xiàng)使得矩陣塊Nn(CT,l)和Nn(CS,l)之間的變換符合仿射變換。
本文提出的方法并不只是控制姿態(tài)這一個(gè)屬性,還可以控制人體外觀屬性,這就意味著這些屬性需要被分離,替換并單獨(dú)輸入網(wǎng)絡(luò),然后再重新組合在一起生成新的高質(zhì)量人體圖像。雖然流場(chǎng)可以將源屬性變換到目標(biāo)屬性,但是當(dāng)進(jìn)行外觀屬性編輯時(shí),這些源屬性是由不同人體圖像的外觀屬性組合而成,這就意味著轉(zhuǎn)換后的各個(gè)屬性之間很難完美的配合,可能會(huì)出現(xiàn)重疊之類的情況(例如長頭發(fā)可能會(huì)與衣服發(fā)生重疊)會(huì)導(dǎo)致最終的結(jié)果變差。因此,本文在流場(chǎng)估計(jì)網(wǎng)絡(luò)之后又增加了語義合成網(wǎng)絡(luò),語義分割可以很好地明確各個(gè)屬性的邊界使得屬性之間可以完美配合,獲得較好的最終結(jié)果。網(wǎng)絡(luò)的超參數(shù)配置如圖3所示。
圖3 語義合成網(wǎng)絡(luò)超參數(shù)配置Fig.3 Semantic synthesis network hyperparameter configuration
語義合成網(wǎng)絡(luò)H將流場(chǎng)估計(jì)網(wǎng)絡(luò)對(duì)各個(gè)屬性輸出的特征圖進(jìn)行連接后作為輸入,并輸出目標(biāo)人體圖像的語義分割圖。
由于本文選擇在特征級(jí)別進(jìn)行空間變換,而不是在像素界別,因此需要對(duì)外觀屬性進(jìn)行編碼,外觀屬性編碼網(wǎng)絡(luò)C將外觀屬性XS作為輸入,得到該外觀屬性的特征FS。這些特征在經(jīng)過空間變換后用于目標(biāo)人體圖像的合成。網(wǎng)絡(luò)的超參數(shù)配置如圖4所示,不同的上角標(biāo)代表不同的分辨率。
圖4 外觀屬性編碼網(wǎng)絡(luò)Fig.4 Appearance attribute encode network
人體圖像合成網(wǎng)絡(luò)G是本文的主干網(wǎng)絡(luò),用于生成高質(zhì)量的人體圖像。該網(wǎng)絡(luò)由編碼器和解碼器組成,編碼器對(duì)目標(biāo)人體姿態(tài)PT進(jìn)行編碼,得到特征圖FT。解碼器根據(jù)語義分割圖L^在源外觀屬性特征FS中進(jìn)行選擇,根據(jù)流場(chǎng)W和掩碼M對(duì)該特征進(jìn)行變換與融合,最后得到具有特定外觀屬性的目標(biāo)人體圖像。網(wǎng)絡(luò)的超參數(shù)配置如圖5所示。
圖5 人體圖像合成網(wǎng)絡(luò)超參數(shù)配置Fig.5 Person image synthesis network hyperparameter configuration
由于基于純卷積的生成對(duì)抗網(wǎng)絡(luò)無法清晰地合成衣服上的圖案與紋理,導(dǎo)致先前的方法對(duì)有圖案的衣服進(jìn)行轉(zhuǎn)換時(shí)效果較差。受到文獻(xiàn)[13]的啟發(fā),本文提出了新的特征空間變換算法,該算法根據(jù)輸入的語義分割圖L^從多個(gè)源外觀屬性特征FS中選擇相對(duì)應(yīng)的外觀屬性特征,根據(jù)對(duì)應(yīng)的流場(chǎng)W對(duì)所選擇的特征進(jìn)行空間變換。使用本文提出的特征空間變換算法可以對(duì)被分離的各個(gè)源屬性特征分別進(jìn)行空間變換后再組合到一起,從而實(shí)現(xiàn)了外觀屬性編輯的目的。
本文使用CUDA在Nvidia GPU上實(shí)現(xiàn)該特征空間變換算法,以加快網(wǎng)絡(luò)的訓(xùn)練和推理速度,基于該算法的特征空間變換模塊如圖6所示,其偽代碼實(shí)現(xiàn)如算法1所示。
圖6 特征空間變換模塊Fig.6 Feature spatial transformation module
算法1特征空間變換算法
為了使合成的圖像更加真實(shí),本文加入了基于內(nèi)容感知的局部注意力模塊,該模塊分別對(duì)變換后的特征圖FS′和目標(biāo)特征FT以空間坐標(biāo)l為中心,提取3×3大小的特征塊Nn(FS′,l)和Nn(FT,l),將兩個(gè)特征塊連接后輸入局部注意力網(wǎng)絡(luò)A得到注意力掩碼Kl。
注意力掩碼Kl需要與特征塊Nn(FS′,l)進(jìn)行逐元素相乘,最后進(jìn)行平均池化得到局部注意力特征圖在坐標(biāo)l處的特征
其中,AP表示平均池化操作,?表示逐元素相乘操作。為了得到整個(gè)局部注意力特征圖,需要遍歷空間坐標(biāo)得到每個(gè)坐標(biāo)處的特征,最后組合成整個(gè)特征圖FAttn。局部注意力模塊如圖7所示。
圖7 局部注意力模塊Fig.7 Local attention module
然而,人體很容易出現(xiàn)自遮擋的情況,對(duì)于沒有被遮擋的部分可以從源屬性特征中得到,對(duì)于被遮擋的部分則需要讓網(wǎng)絡(luò)合成。流場(chǎng)估計(jì)網(wǎng)絡(luò)得到的遮擋掩碼M用于指示當(dāng)前坐標(biāo)的內(nèi)容是可以在源屬性中找到的還是需要合成的。
目標(biāo)人體圖像特征的掩碼Mfull并不能通過各個(gè)屬性的掩碼相加得到,而是需要先將語義分割圖進(jìn)行分離與處理,然后與各個(gè)屬性的掩碼進(jìn)行逐元素相乘后再相加,以避免掩碼之間的互相干擾。
最終的人體圖像特征Fout可以通過掩碼Mfull在特征圖FT與特征圖FAttn之間進(jìn)行選擇得到。得到了特征圖Fout之后,需要將其送入上采樣層以得到最終的人體的圖像,為了避免在最終的結(jié)果中出現(xiàn)棋盤狀偽影,本文采用最近鄰插值與卷積而不是轉(zhuǎn)置卷積。
人體圖像合成網(wǎng)絡(luò)在多個(gè)損失函數(shù)的共同約束下進(jìn)行訓(xùn)練。
l1loss計(jì)算生成的目標(biāo)人體圖像與真實(shí)人體圖像之間的l1距離誤差。
Adversarial loss[14]以對(duì)抗的方式來學(xué)習(xí)真實(shí)數(shù)據(jù)的分布,使得生成的數(shù)據(jù)與真實(shí)數(shù)據(jù)的分布相接近。
Perceptual loss[15]用于計(jì)算目標(biāo)圖像的特征和生成圖像的特征之間的l1距離,這兩個(gè)特征圖可以通過提取預(yù)訓(xùn)練VGG網(wǎng)絡(luò)的特定激活層的輸出得到。
數(shù)據(jù)集:本文使用DeepFashion[16]作為數(shù)據(jù)集,該數(shù)據(jù)集包含了52 712幅各種姿態(tài)的人體圖像,使用256×256分辨率進(jìn)行訓(xùn)練,將不同姿態(tài)的人體圖像進(jìn)行配對(duì)后再隨機(jī)劃分101 966對(duì)作為訓(xùn)練集,8 750對(duì)作為測(cè)試集。
數(shù)據(jù)預(yù)處理:為了分離人體外觀屬性,本文使用人體語義分割算法[17]對(duì)人體圖像進(jìn)行分割,將人體圖像分為頭部、身體和腿部三個(gè)部分,同時(shí)也將表示姿態(tài)的關(guān)鍵點(diǎn)分為這三個(gè)部分。如圖8和圖9所示。
圖8 人體語義分割Fig.8 Semantic segmentation of human body
圖9 人體姿態(tài)分割Fig.9 Human posture segmentation
網(wǎng)絡(luò)參數(shù)設(shè)置:本文提出的方法除了包含流場(chǎng)估計(jì)網(wǎng)絡(luò)、人體圖像合成網(wǎng)絡(luò)、外觀屬性編碼網(wǎng)絡(luò)和語義合成網(wǎng)絡(luò)外,還包含了判別器網(wǎng)絡(luò),判別器網(wǎng)絡(luò)的超參數(shù)設(shè)置如圖10所示。
圖10 判別器網(wǎng)絡(luò)超參數(shù)配置Fig.10 Discriminator network hyperparameter configuration
訓(xùn)練方法:本文的實(shí)驗(yàn)在一塊NVIDIA P100 16 GB顯卡上進(jìn)行,網(wǎng)絡(luò)模型使用PyTorch框架進(jìn)行編寫,使用Adam作為優(yōu)化器,β1和β2分別設(shè)置為0.0和0.999,生成器和判別器的學(xué)習(xí)率分別設(shè)置為0.000 1和0.000 01。為了加快整個(gè)網(wǎng)絡(luò)的收斂速度,本文首先對(duì)流場(chǎng)估計(jì)網(wǎng)絡(luò)和語義合成網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,待這兩個(gè)網(wǎng)絡(luò)收斂之后再加入人體圖像合成網(wǎng)絡(luò)進(jìn)行整體訓(xùn)練,整個(gè)網(wǎng)絡(luò)迭代訓(xùn)練50個(gè)epochs后收斂。整個(gè)訓(xùn)練過程中batchsize設(shè)置為8,損失函數(shù)的權(quán)重設(shè)置為λC=5,λR=0.002 5,λl1=5,λadv=2,λprec=0.5,λstyle=500和λlayout=6。
為了對(duì)本文提出的方法進(jìn)行評(píng)估,本文選擇目前人體圖像合成領(lǐng)域較為先進(jìn)的LiquidWarpingGAN[18]和ADGAN[19]進(jìn)行對(duì)比。其中,能夠針對(duì)人體圖像的姿態(tài)與外觀屬性(如:頭部、衣服和褲子等)同時(shí)進(jìn)行編輯的情況目前僅有ADGAN可以做到。
圖11~13展示了同時(shí)對(duì)人體圖像中的姿態(tài)與外觀屬性進(jìn)行編輯的情形,相比于ADGAN,本文的方法得到的結(jié)果有更清晰的紋理,在編輯某一個(gè)外觀屬性的時(shí)候也不會(huì)破壞其他的外觀屬性。
圖11 頭部屬性變換Fig.11 Head attribute transform
圖14展示了只對(duì)人體圖像中的姿態(tài)屬性進(jìn)行編輯的情形,相比于其他兩種方法本文提出的方法可以較好地保留衣服上的紋理以及衣服的樣式,合成的整體效果較好,更具真實(shí)性。
圖14 人體姿態(tài)變換Fig.14 Human posture transform
本文通過加入語義合成網(wǎng)絡(luò)實(shí)現(xiàn)了從人體關(guān)鍵點(diǎn)到人體語義分割圖的轉(zhuǎn)換,特征空間變換模塊通過合成的語義分割圖從特定的源屬性中提取特征,因此,語義分割圖合成的好壞程度就決定了特征選擇的正確程度,也決定了最終人體圖像的合成質(zhì)量,人體語義分割圖合成的效果如圖15所示。
圖15 語義生成網(wǎng)絡(luò)的結(jié)果Fig.15 Result of semantic generating network
圖12 上身屬性變換Fig.12 Upper body attribute transform
圖13 下身屬性變換Fig.13 Lower body attribute transform
在客觀評(píng)價(jià)指標(biāo)方面,本文選擇FID和SSIM兩個(gè)評(píng)價(jià)指標(biāo)來對(duì)模型進(jìn)行評(píng)估,由表1可知本文提出的方法在FID評(píng)價(jià)指標(biāo)上超越了先前提出的方法,取得了較好的結(jié)果。
表1 評(píng)估結(jié)果比較Table 1 Comparison of evaluation results
為了證明本文方法的有效性,進(jìn)行了消融實(shí)驗(yàn),用于對(duì)比的模型去掉了本文提出的語義合成網(wǎng)絡(luò),并將本文提出的特征空間變換算法替換為文獻(xiàn)[13]中使用的算法。實(shí)驗(yàn)結(jié)果如圖16所示,第一行表示將源圖像中的衣服變換到目標(biāo)人體圖像上,第二行表示對(duì)源人體圖像的姿態(tài)進(jìn)行變換。從實(shí)驗(yàn)結(jié)果可以看出本文提出的方法只改變目標(biāo)屬性,不會(huì)破壞其他屬性,證明了本文提出的方法是可行的。
圖16 消融研究結(jié)果對(duì)比Fig.16 Comparison of ablation study results
此外,由算法1可知本文提出的算法只對(duì)人體圖像所在的像素點(diǎn)進(jìn)行空間變換,這樣做不僅可以獲得更好的變換效果,還可以提高推理和訓(xùn)練時(shí)的計(jì)算效率。兩種算法運(yùn)行的幀率如表2所示,證明了本文提出的方法更加高效。
表2 算法效率比較Table 2 Comparison of algorithm efficiency
針對(duì)現(xiàn)有人體圖像合成方法無法靈活地編輯人體外觀屬性的問題,本文使用圖像分割技術(shù)對(duì)人體外觀屬性進(jìn)行分離,替換這些屬性以實(shí)現(xiàn)外觀屬性編輯的目的,通過提出新的特征空間變換算法實(shí)現(xiàn)將多個(gè)外觀屬性特征合成為人體圖像,并且可以保留各個(gè)屬性的外觀細(xì)節(jié)。實(shí)驗(yàn)結(jié)果表明本文提出的方法可以有效地編輯人體外觀及姿態(tài)等屬性,相比于其他方法本文的方法合成的人體圖像能夠保留衣服上的紋理和圖案,合成的圖像更加清晰,有更好的視覺效果。但由于人臉?biāo)嫉南袼乇容^少,導(dǎo)致臉部區(qū)域合成效果較為不佳,接下來將進(jìn)一步增強(qiáng)人臉合成的效果。