【seeprettyface.com】研究筆記:定製人臉生成

原始博客地址:www.seeprettyface.com/research_notes.html#step5
效果演示:www.seeprettyface.com/order_my_face.html
————————————————————————————————

定製人臉生成

  這一部分會介紹基於StyleGAN,進一步地做定製人臉生成使用的方法。目前採用過的方法有三種,第一種是從源頭上通過控制生成碼Z的分佈範圍,從而控制生成的人臉類型,這種方法能控制性別、人種、年齡等粗略類型;第二種方法是在圖片生成器的內部,通過特定維度上特徵的替換,將引入的目標(模板)人臉的精細風格賦予在生成人臉上,這種方法能控制白皮膚、捲髮等精細類型;第三種方法與前兩種思路完全不同,複雜一些但更通用,需要修改StyleGAN的架構,將InfoGAN與StyleGAN結合爲Info-StyleGAN,從而實現僅用一個模型就能控制生成圖片的類型。訓練出穩定的生成器之後將會開源實驗代碼。

· 方法一 從源頭控制生成圖片


  定製人臉生成需要3個神經網絡,分別是Z碼生成器,圖片生成器,和圖片分類器。它的主要思想是,針對我們想要的特定類型的圖片,首先訓練出一個對應的圖片分類器出來,然後固定住圖片生成器與圖片分類器,只訓練Z碼生成器(C是隨機向量),從而找到Z碼的範圍,使得通過該Z碼生成的圖片,能滿足圖片分類器的要求,即:找到z的分佈使得對應y的得分值最高。
  在這裏插入圖片描述
  在實際模型搭建中,Z碼生成器是一個64維到128維的簡單全連接網絡,圖片生成器取用StyleGAN裏面的模型,圖片分類器是一個已訓練好的類型分類器(譬如男/女分類器等,用CNN就能達到比較好的效果)。損失函數方面有兩個組成部分,一部分是(找到z)讓y的得分值越高越好,另一部分是讓z的熵越大越好(即z有多樣性)。由於實際的訓練只需訓練一個全連接層(Z碼生成器),所以epoch數無需太高。
  最後,每對應一個不同的圖片分類器,就會訓練出一個對應的Z碼生成器。在人臉定製中演示的模型,就是準備了多種Z碼生成器,和一個圖片生成器,然後根據用戶的選擇指定對應的Z碼生成器,從而實現定製人臉生成。

· 方法一優化 取消Z碼生成器,改爲微調圖片生成器

  在後續的實驗中發現,對於某些分類器來說,訓練出的Z碼生成器是不太穩定的。舉一個例子,如果希望指定生成黑種人或者白種人臉,上述方法可以實現,但是如果用同樣的方法訓練生成黃種人臉,就很難穩定生成。造成這種現象的原因是,黃種人界於白、黑種人之間,它的特點標誌不清晰,因此Z碼生成器很難找到一個Z碼的區域,能夠穩定生成黃種人臉。爲了改善這一情況,我們可以考慮取消Z碼生成器,改爲微調圖片生成器。
  在這裏插入圖片描述
  如上圖所示,首先用訓練好的圖片分類器將原始數據集中的目標圖片挑選出來(譬如黃種人臉),製作成新的訓練集。接下來,在新的訓練集下訓練圖片生成器,其初始化參數爲StyleGAN的預訓練模型參數,訓練狀態建議回覆至第10000個kimg處(見代碼),因爲此時已經進入了1024*1024分辨率的微調階段,然後持續訓練即可。接下來展示一段在黃種人臉生成器的訓練過程中的人臉遷移情況。
  在這裏插入圖片描述
  如上圖所示,從左至右爲同一生成碼在訓練過程中生成圖片的變化。可以看出,隨着訓練的進行,原本對應生成非黃種人的生成碼,逐漸變成了生成黃種人的樣子(代碼已開源)。

· 方法二 從生成過程中控制生成圖片


  不過上述方法,只能從大體上控制生成圖片的類型,因爲圖片分類器的製作成本通常比較高(需要大量含標籤數據),所以圖片分類器的劃分角度一般較爲寬泛(譬如男/女,老/少,黑/白等),不宜過細。所以,如果我們希望定製的人臉類型能更精細的話,只能考慮追求一些更簡便的處理,不妨關注一下StyleGAN生成器的內部結構。
  在這裏插入圖片描述
  可以看出,其實真正決定StyleGAN生成圖片類型的,在於控制生成網絡的18個特徵碼(它們分別控制的特徵類型已在圖中標出)。於是,現在我們希望能更精細控制生成圖片的類型,就可以考慮用已有圖片的特徵碼,對其進行替換,從而讓其具有被替換圖片的特定特徵。
  在這裏插入圖片描述
  譬如在上面這個例子中,用模板照片的5,6,7,8維特徵碼對原始的生成圖片進行替換,就會得到一張新的生成圖片,其具有模板人臉的精細特徵,例如黃皮膚、黑頭髮、黑眼睛等等。而如果選擇不同維度的特徵碼進行替換,新圖片得到的特徵也會不一樣。不過在我的實驗中,一般建議替換5,6,7,8維,因爲替換更低的維度會讓生成效果不穩定,而替換更高的維度會讓生成效果不明顯。最終,多做幾次嘗試就能找到合適的模板以及合適的維度替換方案,比如在人臉定製中展示的小男孩樣例,就是用這樣的方法生成的。
在這裏插入圖片描述

· 方法三 藉助InfoGAN的思想修改StyleGAN的架構


  前面兩種方法雖然能實現定製生成,但是由於每一種分類都是單獨一個模型,這不利於進一步擴展。我們希望能構造一個通用模型,它能夠實現所有定製化的需求。因此,我們藉助InfoGAN的思想,將Info信息引入StyleGAN的生成器中,構造出新的具有語義限制的生成器。
  在這裏插入圖片描述
  如上圖所示,新的生成器輸入info向量-c和噪音向量-z,其中c控制人臉類型,而z決定人臉樣貌。生成圖片X同時被傳給判別器和分類器,其中判別器的作用是保證生成圖片的清晰與逼真度,分類器的作用是保證生成圖片的類別符合向量c的控制——因爲它從生成圖片中提取出一個新的向量,這個向量要與c儘可能一致,而c包含的信息僅有圖像類別,所以只有生成圖片也符合圖像類別的情況下,提取出的向量才能與c一致,更詳細的證明請參閱InfoGAN。最後分類器與判別器共用大部分參數,只保留最後幾層參數不一致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章