張皓 周鳳
(貴州大學計算機科學與技術學院 貴陽 550000)
人臉圖像生成是計算機圖形學與計算機視覺領域中的一個重要問題。人臉圖像生成在電影特效,平面設計,計算機藝術等多個領域有豐富的應用。自2014年生成對抗網絡(GAN)由Goodfellow等[1]提出后,基于該網絡的模型就成為了人臉圖像生成研究的熱門方向。人臉圖像的生成分通常為兩種途徑[2]:一種是無條件輸入的生成,即生成對抗網絡通過無監督的方式學習從低維潛在空間向高維圖像的映射,由于使用者無法得知低維潛在空間與高維圖像之間的具體映射關系模型只能隨機的生成圖像。例如將一個128維的高斯分布輸入模型輸出一張人臉圖片。而另一種則是有條件輸入的生成,通常是給定一個或多個條件,引導模型生成滿足給定條件的人臉圖片。例如輸入一張側臉的圖片經過模型輸出一張正臉的圖片[3]。實現多屬性人臉圖像生成需要依靠第二類模型。
關于第二類模型,最早的研究是Mirza等[4]提出的CGAN,CGAN將標簽信息作為輸入放入生成與判別網絡,以引導網絡生成符合條件的數字圖片。Xi Chen等[5]提出InfoGAN通過將帶有先驗分布的向量c輸入網絡,使網絡自動的將生成的數字圖片的傾斜度,粗細等特征與c相關聯,以賦予模型控制數字圖片傾斜度,粗細等屬性的能力。ZHANG等[6]提 出StackGAN,該 網 絡 嘗 試 解 決CGAN無法生成高分辨率圖片的問題,其核心思想就是搭建兩個生成網絡,第一個網絡結構與CGAN類似,生成指定條件的低分辨率圖片,然后把第一個網絡的結果放入第二個網絡中,以生成高分辨率的圖片。鮑建敏[7]提出CVAE-GAN,通過將條件變分自編碼器與生成對抗網絡相結合,相比原版CGAN能生成多樣性更高的圖片。L Wan[8]提出FM-GAN,該模型設置兩個共享參數的判別網絡,可以以性別,種族,年齡為條件生成不同屬性的人臉。
傳統的第二類模型存在兩個不足:一個是控制生成人臉圖片的屬性時,不能有效地保持圖片特征,圖片中其他不相關的特征也會被改變。造成這一不足的原因通常是由于模型沒有正確的學習到人臉的某一屬性與人臉圖片上的具體特征的關系。另一個則是此類模型在多屬性生成任務上性能不佳。造成這一不足的原因是現有的模型對數據集應用的靈活度不高,模型使用者無法針對性的調整數據集分布,導致樣本屬性不均衡顯著地降低多屬性圖片能力。
針對以上兩點不足,論文提出了基于特征保持的條件生成對抗網絡,針對第一類問題提出基于類激活映射的損失懲罰項,以保證改變圖片屬性時,與屬性無關的信息不被改變。針對第二類問題提出了通過改變潛在空間表示來控制圖片屬性的方法,使模型能更靈活地使用標記數據。
論文提出的框架包括四個部分,見圖1:生成網絡G,判別網絡D,編碼網絡E,分類網絡C。

圖1 網絡框架示意圖
生成網絡G接受輸入潛在空間表達z并得到輸出人臉圖片x'=G(z),它學習從潛在空間z向真實圖像x的映射。判別網絡D對輸入的真實圖片x和生成圖片x'進行二分類。生成網絡與判別網絡的性能決定了生成圖片的質量,論文的生成網絡與判別網絡將使用類似PGGAN[9]的從低分辨率到高分辨率逐級訓練方法,這種訓練方法在生成高分辨率圖片上性能優秀。編碼網絡E是將潛在空間表達z和標簽y輸入后得到z到z'的度量δ,其中z'是可以生成包含標簽y的圖片的潛在空間表達,即z'=G(-1)(C(-1)(y)),通過將δ與z疊加,再輸入生成網絡G即可以生成包含標簽y特征的圖片。分類網絡C是將輸入的真實圖片x或生成圖片x'進行分類,同時,抽出分類網絡中間層的梯度通過計算獲得圖片的類激活映射(Class Activation Map)[10],用來針對性地約束生成圖片x'的特征。
在早期的生成對抗網絡的研究中,很難生成高分辨率的圖片,且圖片真實度不高。PGGAN提出從低分辨率到高分辨率逐級提升分辨率的訓練方法,生成的圖片分辨率達到了1024×1024。如果不采用逐級訓練的方法來訓練生成如此高分辨率圖片的生成對抗網絡,成功率不高,且訓練速度非常緩慢,原因是高分辨率下的真實圖片的分布非常復雜。
具體的訓練過程見圖2,模型的訓練開始于4×4像素的低分辨率的生成網絡與判別網絡。隨著訓練的持續進行,將逐漸向生成網絡與判別網絡中增加卷積層,進而增加生成圖片的分辨率。

圖2 漸進式訓練生成對抗網絡
同時,因為網絡層數的突然變化會造成模型的不穩定,這會影響模型訓練效率,乃至使模型崩潰。所以卷積層的增加時,需要保持平滑的過程。
如圖3所示,以從4×4分辨率轉換到8×8分辨率的過程為例。在(b)過程中,將高分辨率的層視為一個殘差塊,將低分辨率部分的輸出視為殘差,將殘差塊的輸出與殘差疊加。使用權重α來平滑這個過程。當α=0時,相當于過程(a),也就是高分辨率層未添加前;當α=1時,相當于過程(c),也就是高分辨率層已經完全添加。權重α從0到1逐漸增長,使訓練過程保持穩定。

圖3 網絡層數增加時的平滑過程
在生成網絡與判別網絡訓練完成后,模型已經可以生成高質量的人臉圖像,但還不具備控制生成圖片屬性的能力。論文提出通過改變潛在空間表示來控制人臉圖片屬性的方法。
傳統的條件生成對抗網絡,其控制生成樣本屬性的方法,是在生成網絡與判別網絡學習真實人臉圖片分布時,同時學習標簽c與人臉圖片中特征的映射關系來實現的。但這種結構對數據集的使用不靈活,在多屬性人臉生成任務上,會因為訓練樣本分類屬性不平衡,導致不能正確地學習到圖像特征與標簽的映射關系。舉例來說,Celeba數據集中,性別這個屬性的正例與負例的數量比例接近1∶1,是均衡的,通常模型可以較好地學習到正例和負例的區別。但是否帶眼鏡這個屬性,正例和負例的數量比例約1∶6,屬于不均衡數據。在這種情況下,模型經常會簡單地判斷所有圖像都是負例,因為即使所有圖片都判負例,模型也有86%的正確率。只有對數據集進行處理之后,如刪掉大部分負例使數據比例平衡,模型才能正確地學習到圖像特征與標簽的映射關系的。但是另一方面,生成對抗網絡需要通過學習大量的無標記數據來保證生成樣本的多樣性。這就使得要生成多屬性的人臉圖像變得困難,尤其是包含一些數據屬性不平衡的標簽時。
針對這一難點,論文采用將生成高質量的人臉圖片,與控制人臉圖片特征的任務分離出來。
圖4展示了在兩張生成圖片所對應的潛在空間表示z,z'之間進行插值的過程。使用權重α控制插值的強度。可看出生成的人臉圖片隨著α的連續變化,在兩張圖片間連續變化。這表明從潛在空間z到圖片x=G(z)的映射具有連續性。

圖4 在兩張圖片的潛在空間表示間插值
而圖5所做的工作是將一張生成圖片x=G(z)的潛在空間表示z疊加一個相同維度的高斯分布的噪聲δ,再將新的潛在空間表示z'輸入到生成網絡G中,實驗結果顯示,生成的圖片G(z')仍然服從人臉圖片的分布,并且在保持人臉的關鍵屬性(如五官的尺寸和位置)的情況下,帶來了一下細節上的變化,如膚色,發量,發色,性征等。這個實驗證明了z到G(z)的映射在各方向都是稠密的。

圖5 向圖片的潛在空間表示疊加隨機噪聲
Andrew Brock等[11]的研究與Mario Lucic等[12]的研究也表明,成功訓練的生成網絡生成的樣本在分布上接近于訓練集真實樣本的分布,從數學意義上構成一個連續稠密的流形。
基于前面兩個實驗結果,論文提出通過改變潛在空間表示來控制人臉圖片屬性的方法。其思想是將控制圖片屬性的能力從生成網絡中抽出,生成網絡與判別網絡專注提升生成圖片的真實度,而通過增加編碼網絡E和分類網絡C,就能通過影響潛在空間來控制生成樣本的屬性。
編碼網絡E的訓練過程如圖6所示。將一個潛在空間表達z和標簽y輸入到編碼網絡E,輸出一個向量δ,δ是z到z'的度量,其中z'是可以生成包含標簽y的圖片的潛在空間表達。通過將δ與z疊加得到z',將z'輸入生成網絡G,再將G輸出的圖片x'輸入分類網絡C,得到標簽y'。最后將y'與y輸入損失函數,將損失的梯度由反向傳播傳回E,以更新E的權重。

圖6 編碼網絡E的訓練過程
編碼網絡損失函數的數學表達如下:

經過前文訓練的模型具備了依照輸入的標簽y生成符合人臉圖片的能力。但經過模型生成的圖片x'=G(z'),與原始的x=G(z)差異過大,失去了原有的特征。如圖7。

圖7 未進行特征保持生成的圖片
圖7左邊為由兩個潛在空間表示z輸入G中隨機生成的圖片x,右邊為編碼網絡輸出的向量δ與z疊加后的z'輸入G中生成的包含標簽“戴眼鏡”的圖片x'。雖然x'確實包含了戴眼鏡的屬性,但是與原圖x相比,與戴眼鏡不相關的屬性也被改變了。
而理想的效果應該是與標簽相關的特征被改變,而無關的特征則保持不變。論文通過為編碼網絡的損失增加一個懲罰項P來實現:


而帶懲罰項的編碼網絡損失函數如下:

類激活映射的示意圖見圖8。通過一個判斷是否帶眼鏡的分類網絡從中間層抽出激活值,經過類激活映射計算得到了類激活映射圖,在類激活映射圖中,其中的元素值的大小與輸入圖片各像素對分類網絡的激活程度相對應,激活程度越高,則元素值越高,在激活映射圖中的色調越暖,激活程度越低,則元素值越低,在激活映射圖中的色調越冷??梢钥闯鲈谶@張人臉圖片對應的類激活映射圖中眼鏡部分激活程度高,色調偏暖,而其他部分則激活程度低,色調偏冷。類激活映射圖能夠有效的求出圖片中與標簽c對應的屬性的位置。

圖8 類激活映射示意圖
論文中模型在ffhq,CelebA上數據集上進行了驗證。
CelebA數據集是由香港中文大學[13]制作的人臉圖片數據集,包含21萬張人臉圖片,圖片為178*218像素的RGB圖片。CelebA擁有豐富的標記,包括圖片中人臉的40種特征,以及人臉關鍵點坐標。在本實驗中CelebA數據集中的圖片將以人臉的鼻尖為中心縮放裁剪為128*128像素后作為訓練樣本。
ffhq數據集是由Nvidia公司制作的人臉圖片數據集,包含7萬張人臉圖片,圖片為128*128像素的RGB圖片。與CelebA不同,ffhq數據集是專門用于人臉生成任務的數據集,其中的圖片具有更高的飽和度,也沒有CelebA中為了增加分類器魯棒性而添加的圖像噪聲,同時這個數據集是無標記的。
由于ffhq的人臉圖片沒有屬性標記,故模型中的分類網絡將使用CelebA數據集進行訓練。
論文將對生成的人臉圖片樣本,進行兩方面的定量評價。一是評價包含某標簽c的生成樣本,與包含同樣標簽的真實樣本,在分布上的距離。針對第一種屬性,論文引入FID(Fréchet Inception Distance)作為評價指標。FID是由Heusel et al.(2017)最先引入[14]并用來評估GAN的度量方法。在FID中,首先使用inception network分別提取真實樣本與生成樣本中間層的特征,然后使用一個均值為 方差為C的正態分布去模擬這些特征的分布,最后計算真實樣本與生成樣本在特征分布層面的距離。
FID值越低則說明生成樣本與真實樣本的特征分布約接近。其數學表達如下:

Tr表示矩陣對角線上元素的總和,矩陣論中也稱之為“跡”。μr為真實樣本的特征均值,μg為生成樣本的特征均值,Cr為真實樣本的特征協方差矩陣,Cg為生成樣本的特征協方差矩陣。
二是判斷經過潛在空間控制后轉變屬性的圖片與轉變前的圖片是否保持了特征。針對第二種屬性,論文引入FaceNet-Distance[15]對兩張圖片進行人臉相似度比較。FaceNet-Distance通過CNN將人臉映射到歐式空間的特征向量上,計算不同圖片人臉特征的距離來判斷人臉的相似度。FaceNet-Distance值越低則說明兩張人臉圖片在歐式空間的特征向量上的距離接近。
圖9和圖10展示了基于特征保持的條件生成對抗網絡在CelebA數據集和ffhq數據集上通過控制潛在空間生成的多屬性人臉圖片。

圖9 CelebA數據集上的多屬性人臉圖片生成

圖10 ffhq數據集上的多屬性人臉圖片生成
可以看出,在CelebA和ffhq數據集上都有效地完成了多屬性人臉生成任務。兩個數據集的實驗結果都顯示,在通過操作潛在空間改變生成圖片屬性時,模型有效地進行了特征保持。而在ffhq上的實驗結果顯示模型靈活的使用了標記數據,利用圖像質量更好的ffhq數據集有效的訓練了生成網絡與判別網絡,利用CelebA數據集訓練了分類網絡,這是傳統條件式生成模型不容易做到的。
表1反映了生成數據集在屬性變化和特征保持的性能。

表1 實驗結果統計
從表中可以看出在多屬性人臉生成任務中,論文模型相比傳統的cGAN模型,在FID與Facenet-distance上都有更好的表現,這說明論文模型生成的圖片有更好真實性,在控制人臉圖片屬性時更好的保持了人臉特征。
傳統生成網絡模型在多屬性人臉生成任務中存在兩個不足,一是控制生成人臉圖片的屬性時,不能有效地保持圖片特征;二是現有的條件式生成對抗網絡由于數據集應用不靈活,造成在不平衡數據上進行多屬性人臉生成時表現不佳。針對這兩點不足,論文提出了一種基于特征保持的條件生成對抗網絡。通過改變潛在空間表示來控制圖片屬性以及基于類激活映射的損失懲罰項來生成多屬性的人臉圖片。通過實驗驗證,模型可以有效地生成多屬性人臉圖片,并保持圖片的特征。在未來的工作中,將嘗試在更高分辨率的人臉圖片上進行多屬性生成實驗。