魏程峰,董洪偉,徐小春
江南大學 人工智能與計算機學院,江蘇 無錫 214122
人體圖像合成(PIS)具有廣泛的潛在應用價值,例如電影制作、虛擬試衣和圖像編輯等。盡管生成對抗網絡(generative adversarial networks,GAN)在圖像合成領域已經取得顯著的成果,能夠合成真實的圖像,但是人體圖像合成仍然是一個具有挑戰性的問題,例如,當衣服上存在圖案時,純卷積結構的生成對抗網絡就無法很好地生成它們,因為卷積神經網絡對輸入的數據具有平移不變性,這限制了其對數據進行空間重組的能力。對于人體圖像合成的研究目前大多集中在人體姿態的編輯,但是人體屬性并不是只有姿態,還有人體外觀屬性(如:人臉、頭發、衣服和褲子等)針對這些屬性的編輯所做的研究還相對較少,效果也不能令人滿意。
為了解決上述問題,本文通過對輸入的人體圖像進行語義分割來實現人體外觀屬性的分離,通過替換其中的某些屬性來實現外觀屬性的編輯,通過提出新的空間變換算法來對多個外觀屬性特征進行空間變換,并將它們融合為目標人體圖像,有效保留了衣服上的紋理與圖案。實驗發現,本文提出的方法實現了同時編輯姿態、外觀等屬性的目的,并且得到的結果具有較好的視覺效果。
圖像空間變換通過改變源圖像中像素點的空間位置坐標來得到目標圖像,但由于卷積神經網絡對輸入的數據具有平移不變性,這一特性限制了其空間變換的能力,因此有很多增強其空間變換能力的方法被提出。Jaderberg等人[1]提出了空間變換器網絡(STN),其使用了可學習的空間變換模塊,用于估計全局轉換參數并且使用仿射變換在特征級別進行變換。Lin等人[2]在STN的基礎上提出在網絡中傳送變換參數而不是變換后的特征,在所有的對準模塊中使用相同的幾何預測器以避免采樣錯誤。Jiang等人[3]提出線性化多采樣方法以解決雙線采樣在尺度變化較大的情況下表現較差的問題。全局空間變換方法由于對全局特征采用相同的變換參數,無法處理像人體等可以發生形變的目標,基于流場的方法能夠對每一個特征點進行偏移,使用起來更為靈活。Zhou等人[4]提出Appearance flow用于預測源與目標之間的流場,通過對源圖像進行變換來生成目標圖像,但是該方法在像素級別對圖像進行變換,而不是特征級別,使其難以捕捉較大的動作和生成新的內容。Wang等人[5]以監督的方式訓練流場估計網絡,并使用生成對抗網絡來生成人體自遮擋部分的內容。Siarohin等人[6]提出將關鍵點定位在物體的剛性位置,通過輸入稀疏的關鍵點來獲得密集的流場。
姿態引導的人體圖像合成通過輸入一幅源人體圖像和一組目標姿態的關鍵點,得到一幅目標姿態的人體圖像,同時具有源圖像的外觀。Ma等人[7]提出一個二階段方法,在第一階段合成一幅粗糙的人體圖像,然后在第二階段對該粗糙的人體圖像進行完善,得到更為精細的結果。Esser等人[8]將變分自動編碼器和條件U-Net相結合對人體進行建模,然而,U-Net中的跳連接會引起特征錯位,影響生成結果。Siarohin等人[9]通過將U-Net中的跳連接改為可變形的跳連接后緩解了這一問題,但是可變形的跳連接需要預定義,使得這一方法的應用受到限制。Zhu等人[10]提出在生成器中使用級聯的姿態注意力轉換模塊對源人體圖像進行轉換。Han等人[11]使用基于流的方法對輸入的像素進行變換,但是在像素級別進行變換無法生成新的內容,因此也無法處理人體自遮擋的情況。為了解決了上述問題,本文提出了新的空間變換算法在特征級別進行空間變換,取得了較好的結果。
本文提出的方法允許用戶對各個人體屬性進行控制(如姿態、衣服、褲子和頭發等),并合成高質量的人體圖像。通過使用預訓練的語義分割方法,將不同的人體外觀屬性進行分離并將它們輸入外觀屬性編碼網絡中,得到各個屬性的特征,通過提出新的空間變換算法對這些屬性特征進行變換與組合,從而達到控制合成結果的目的。生成器整體結構如圖1所示。本文的方法主要由五個網絡所組成,分別是流場估計網絡、語義合成網絡、外觀屬性編碼網絡、人體圖像合成網絡和判別器網絡。流場估計網絡用于估計源人體圖像與目標人體圖像中相同特征之間的空間位置的坐標偏移量以及自遮擋情況,并以流場和掩碼的形式表示。語義合成網絡用于合成目標人體的語義分割圖,該語義分割圖用于在人體圖像合成階段進行像素級別的特征選擇,保證最終合成的人體圖像的質量。外觀屬性編碼網絡對源人體圖像中的各個外觀屬性進行編碼,得到各個屬性的特征,在后續階段將對這些特征進行空間變換,以合成目標人體圖像。人體圖像合成網絡是本文的主干網絡,該網絡接收其他網絡的輸出,用于合成高質量的目標人體圖像。

圖1 生成器整體網絡結構Fig.1 Overall network structure of generator
流場估計網絡E用于估計源人體外觀屬性與目標人體外觀屬性中相同特征之間的空間位置偏移量,以及人體自遮擋情況,然后分別以流場和掩碼的形式輸出。該網絡將源人體外觀屬性XS,源人體姿態PS和目標人體姿態PT作為輸入,然后輸出預測的流場W,遮擋掩碼M和特征圖F。網絡的超參數配置如圖2所示,不同的上角標代表不同的分辨率。

圖2 流場估計網絡超參數配置Fig.2 Flow field estimation network hyperparameter configuration

流場W中包含了目標屬性中每一個特征的坐標對應于源屬性特征坐標的偏移;掩碼M用于表示目標屬性中的內容是否被遮擋,如果沒有被遮擋,則從源屬性中得到特征,如果被遮擋,則從生成對抗網絡中生成;特征圖F將作為后續語義合成網絡的輸入。
本文的流場估計網絡是在特征級別進行估計,而不是在像素級別,在特征級別進行估計可以降低估計的難度,并且模型可以生成新的內容。為了保證在特征級別采樣的正確性,防止陷入局部最小,本文引入了采樣正確性損失函數[12],該損失函數用于測量兩個特征之間的相似性,即轉換后的源屬性特征和目標特征,源屬性特征VS和目標特征VT是分別將XS和XT送入預訓練的VGG網絡后得到的。

采樣正確性損失函數可以約束流場在源屬性特征與目標特征的語義相似區域采樣,但由于相鄰的特征具有相似性以及空間關系,這就會導致局部區域的采樣出現錯誤,因此,本文引入一個正則化項用于懲罰局部區域的采樣問題,使得局部區域的變換符合仿射變換。使用CT表示目標特征的坐標矩陣,源特征的坐標矩陣CS可以表示為CS=CT+W。使用Nn(CT,l)表示在坐標矩陣CT中以l為中心提取n×n大小的矩陣塊。該正則化項使得矩陣塊Nn(CT,l)和Nn(CS,l)之間的變換符合仿射變換。

本文提出的方法并不只是控制姿態這一個屬性,還可以控制人體外觀屬性,這就意味著這些屬性需要被分離,替換并單獨輸入網絡,然后再重新組合在一起生成新的高質量人體圖像。雖然流場可以將源屬性變換到目標屬性,但是當進行外觀屬性編輯時,這些源屬性是由不同人體圖像的外觀屬性組合而成,這就意味著轉換后的各個屬性之間很難完美的配合,可能會出現重疊之類的情況(例如長頭發可能會與衣服發生重疊)會導致最終的結果變差。因此,本文在流場估計網絡之后又增加了語義合成網絡,語義分割可以很好地明確各個屬性的邊界使得屬性之間可以完美配合,獲得較好的最終結果。網絡的超參數配置如圖3所示。

圖3 語義合成網絡超參數配置Fig.3 Semantic synthesis network hyperparameter configuration
語義合成網絡H將流場估計網絡對各個屬性輸出的特征圖進行連接后作為輸入,并輸出目標人體圖像的語義分割圖。

由于本文選擇在特征級別進行空間變換,而不是在像素界別,因此需要對外觀屬性進行編碼,外觀屬性編碼網絡C將外觀屬性XS作為輸入,得到該外觀屬性的特征FS。這些特征在經過空間變換后用于目標人體圖像的合成。網絡的超參數配置如圖4所示,不同的上角標代表不同的分辨率。


圖4 外觀屬性編碼網絡Fig.4 Appearance attribute encode network
人體圖像合成網絡G是本文的主干網絡,用于生成高質量的人體圖像。該網絡由編碼器和解碼器組成,編碼器對目標人體姿態PT進行編碼,得到特征圖FT。解碼器根據語義分割圖L^在源外觀屬性特征FS中進行選擇,根據流場W和掩碼M對該特征進行變換與融合,最后得到具有特定外觀屬性的目標人體圖像。網絡的超參數配置如圖5所示。


圖5 人體圖像合成網絡超參數配置Fig.5 Person image synthesis network hyperparameter configuration
由于基于純卷積的生成對抗網絡無法清晰地合成衣服上的圖案與紋理,導致先前的方法對有圖案的衣服進行轉換時效果較差。受到文獻[13]的啟發,本文提出了新的特征空間變換算法,該算法根據輸入的語義分割圖L^從多個源外觀屬性特征FS中選擇相對應的外觀屬性特征,根據對應的流場W對所選擇的特征進行空間變換。使用本文提出的特征空間變換算法可以對被分離的各個源屬性特征分別進行空間變換后再組合到一起,從而實現了外觀屬性編輯的目的。
本文使用CUDA在Nvidia GPU上實現該特征空間變換算法,以加快網絡的訓練和推理速度,基于該算法的特征空間變換模塊如圖6所示,其偽代碼實現如算法1所示。

圖6 特征空間變換模塊Fig.6 Feature spatial transformation module
算法1特征空間變換算法


為了使合成的圖像更加真實,本文加入了基于內容感知的局部注意力模塊,該模塊分別對變換后的特征圖FS′和目標特征FT以空間坐標l為中心,提取3×3大小的特征塊Nn(FS′,l)和Nn(FT,l),將兩個特征塊連接后輸入局部注意力網絡A得到注意力掩碼Kl。

注意力掩碼Kl需要與特征塊Nn(FS′,l)進行逐元素相乘,最后進行平均池化得到局部注意力特征圖在坐標l處的特征

其中,AP表示平均池化操作,?表示逐元素相乘操作。為了得到整個局部注意力特征圖,需要遍歷空間坐標得到每個坐標處的特征,最后組合成整個特征圖FAttn。局部注意力模塊如圖7所示。

圖7 局部注意力模塊Fig.7 Local attention module
然而,人體很容易出現自遮擋的情況,對于沒有被遮擋的部分可以從源屬性特征中得到,對于被遮擋的部分則需要讓網絡合成。流場估計網絡得到的遮擋掩碼M用于指示當前坐標的內容是可以在源屬性中找到的還是需要合成的。

目標人體圖像特征的掩碼Mfull并不能通過各個屬性的掩碼相加得到,而是需要先將語義分割圖進行分離與處理,然后與各個屬性的掩碼進行逐元素相乘后再相加,以避免掩碼之間的互相干擾。

最終的人體圖像特征Fout可以通過掩碼Mfull在特征圖FT與特征圖FAttn之間進行選擇得到。得到了特征圖Fout之后,需要將其送入上采樣層以得到最終的人體的圖像,為了避免在最終的結果中出現棋盤狀偽影,本文采用最近鄰插值與卷積而不是轉置卷積。
人體圖像合成網絡在多個損失函數的共同約束下進行訓練。

l1loss計算生成的目標人體圖像與真實人體圖像之間的l1距離誤差。

Adversarial loss[14]以對抗的方式來學習真實數據的分布,使得生成的數據與真實數據的分布相接近。

Perceptual loss[15]用于計算目標圖像的特征和生成圖像的特征之間的l1距離,這兩個特征圖可以通過提取預訓練VGG網絡的特定激活層的輸出得到。

數據集:本文使用DeepFashion[16]作為數據集,該數據集包含了52 712幅各種姿態的人體圖像,使用256×256分辨率進行訓練,將不同姿態的人體圖像進行配對后再隨機劃分101 966對作為訓練集,8 750對作為測試集。
數據預處理:為了分離人體外觀屬性,本文使用人體語義分割算法[17]對人體圖像進行分割,將人體圖像分為頭部、身體和腿部三個部分,同時也將表示姿態的關鍵點分為這三個部分。如圖8和圖9所示。

圖8 人體語義分割Fig.8 Semantic segmentation of human body

圖9 人體姿態分割Fig.9 Human posture segmentation
網絡參數設置:本文提出的方法除了包含流場估計網絡、人體圖像合成網絡、外觀屬性編碼網絡和語義合成網絡外,還包含了判別器網絡,判別器網絡的超參數設置如圖10所示。

圖10 判別器網絡超參數配置Fig.10 Discriminator network hyperparameter configuration
訓練方法:本文的實驗在一塊NVIDIA P100 16 GB顯卡上進行,網絡模型使用PyTorch框架進行編寫,使用Adam作為優化器,β1和β2分別設置為0.0和0.999,生成器和判別器的學習率分別設置為0.000 1和0.000 01。為了加快整個網絡的收斂速度,本文首先對流場估計網絡和語義合成網絡進行預訓練,待這兩個網絡收斂之后再加入人體圖像合成網絡進行整體訓練,整個網絡迭代訓練50個epochs后收斂。整個訓練過程中batchsize設置為8,損失函數的權重設置為λC=5,λR=0.002 5,λl1=5,λadv=2,λprec=0.5,λstyle=500和λlayout=6。
為了對本文提出的方法進行評估,本文選擇目前人體圖像合成領域較為先進的LiquidWarpingGAN[18]和ADGAN[19]進行對比。其中,能夠針對人體圖像的姿態與外觀屬性(如:頭部、衣服和褲子等)同時進行編輯的情況目前僅有ADGAN可以做到。
圖11~13展示了同時對人體圖像中的姿態與外觀屬性進行編輯的情形,相比于ADGAN,本文的方法得到的結果有更清晰的紋理,在編輯某一個外觀屬性的時候也不會破壞其他的外觀屬性。

圖11 頭部屬性變換Fig.11 Head attribute transform
圖14展示了只對人體圖像中的姿態屬性進行編輯的情形,相比于其他兩種方法本文提出的方法可以較好地保留衣服上的紋理以及衣服的樣式,合成的整體效果較好,更具真實性。

圖14 人體姿態變換Fig.14 Human posture transform
本文通過加入語義合成網絡實現了從人體關鍵點到人體語義分割圖的轉換,特征空間變換模塊通過合成的語義分割圖從特定的源屬性中提取特征,因此,語義分割圖合成的好壞程度就決定了特征選擇的正確程度,也決定了最終人體圖像的合成質量,人體語義分割圖合成的效果如圖15所示。

圖15 語義生成網絡的結果Fig.15 Result of semantic generating network

圖12 上身屬性變換Fig.12 Upper body attribute transform

圖13 下身屬性變換Fig.13 Lower body attribute transform
在客觀評價指標方面,本文選擇FID和SSIM兩個評價指標來對模型進行評估,由表1可知本文提出的方法在FID評價指標上超越了先前提出的方法,取得了較好的結果。

表1 評估結果比較Table 1 Comparison of evaluation results
為了證明本文方法的有效性,進行了消融實驗,用于對比的模型去掉了本文提出的語義合成網絡,并將本文提出的特征空間變換算法替換為文獻[13]中使用的算法。實驗結果如圖16所示,第一行表示將源圖像中的衣服變換到目標人體圖像上,第二行表示對源人體圖像的姿態進行變換。從實驗結果可以看出本文提出的方法只改變目標屬性,不會破壞其他屬性,證明了本文提出的方法是可行的。

圖16 消融研究結果對比Fig.16 Comparison of ablation study results
此外,由算法1可知本文提出的算法只對人體圖像所在的像素點進行空間變換,這樣做不僅可以獲得更好的變換效果,還可以提高推理和訓練時的計算效率。兩種算法運行的幀率如表2所示,證明了本文提出的方法更加高效。

表2 算法效率比較Table 2 Comparison of algorithm efficiency
針對現有人體圖像合成方法無法靈活地編輯人體外觀屬性的問題,本文使用圖像分割技術對人體外觀屬性進行分離,替換這些屬性以實現外觀屬性編輯的目的,通過提出新的特征空間變換算法實現將多個外觀屬性特征合成為人體圖像,并且可以保留各個屬性的外觀細節。實驗結果表明本文提出的方法可以有效地編輯人體外觀及姿態等屬性,相比于其他方法本文的方法合成的人體圖像能夠保留衣服上的紋理和圖案,合成的圖像更加清晰,有更好的視覺效果。但由于人臉所占的像素比較少,導致臉部區域合成效果較為不佳,接下來將進一步增強人臉合成的效果。