【seeprettyface.com】定製人臉生成

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

定製人臉生成

  這一部分會介紹基於StyleGAN,進一步地做定製人臉生成採用的方法。主要有兩個處理步驟,第一個步驟是從源頭上通過控制生成碼Z的分佈範圍,從而控制生成的人臉類型,這是從大方向上控制生成的人臉類型,比如性別、人種、年齡等;第二個步驟是在圖片生成器的內部,通過特定維度上特徵的替換,將引入的目標(模板)人臉的精細風格賦予在生成人臉上,比如白皮膚、捲髮等,這是在精細角度上控制生成的人臉圖片效果。

· 步驟一 從源頭控制生成圖片


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

· 步驟二 從生成過程中控制生成圖片


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

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