本期推薦的論文筆記來自 PaperWeekly 社群使用者 @TwistedW。本文獲得 ECCV 2018 最佳論文榮譽提名。GANimation 將 Action Units 和 GAN 結合,實現了人面部表情變化的過程展示效果。Action Units 的大小控制著人面部表情的幅度,從而對單個影象可以實現表情生成的漸進過程,採用無監督訓練,並將 Attention 輔助矯正影象的背景和照明帶來的問題。
關於作者:武廣,合肥工業大學碩士生,研究方向為影象生成。
■ 論文 | GANimation: Anatomically-aware Facial Animation from a Single Image
■ 連結 | www.paperweekly.site/papers/2171
■ 原始碼 | github.com/albertpumarola/GANimation
GAN 在面部生成上已經取得了很大的成果,StarGAN [1] 已經可以實現人臉面部的高清和多屬性的生成,但是這類生成是基於資料集的,往往在兩幅屬性不一的影象上做插值生成是實現不了的。當然,將 VAE 或 AE 和 GAN 結合可以實現較好的插值生成,但是如何合理的插值仍然是一個困難的過程。
GANimation 介紹了一種基於動作單元(Action Units)為條件的新型 GAN 模型,可以根據 Action Units(簡稱 AC)的大小調節面部表情生成的幅度,從而實現面部表情不同幅度過程的生成。
論文引入
從單張人臉面部影象生成出表情變化的多幅影象將為不同領域帶來不一樣的靈感,比如可以根據單幅照片做不同人物表情變化的影象,這可以用在電影電視的創作中。想象一下讓特別嚴肅的人設做滑稽的表情變化是不是很有意思的一件事。
GAN 已經可以在人臉面部屬性上做很多變換的生成,StarGAN 是屬性生成上比較好的模型,可以同時生成多屬性的人臉影象。但是 StarGAN 受限於資料集,因為 StarGAN 的生成是在屬性標籤的基礎上完成的,所以 StarGAN 不能做插值的漸進生成。
雖然 VAE 和 GAN 的結合可以實現插值生成,但是合理的插值仍然是一個待解決和優化的過程。GANimation 將 Action Units(AU)和 GAN 結合,利用動作單元(AU)來描述面部表情,這些動作單元在解剖學上與特定面部肌肉的收縮相關。
儘管動作單元的數量相對較少(發現 30 個 AU 在解剖學上與特定面部肌肉的收縮相關),但已觀察到超過 7,000 種不同的 AU 組合。例如,恐懼的面部表情通常通過啟用產生:Inner Brow Raiser(AU1),Outer Brow Raiser(AU2),Brow Lowerer(AU4),Upper Lid Raiser(AU5),Lid Tightener(AU7),Lip Stretcher( AU20)和 Jaw Drop(AU26)。 根據每個 AU 的大小,將在表情程度上傳遞情緒幅度。
為了說明 AU 的作用,我們一起來看看通過調節特定 AU 的大小實現的面部表情漸變的效果:
由上圖我們可以看出來,在 AU 設定為微笑表情的動作時,隨著 AU 的大小逐漸增大途中人物微笑表情的力度也越來越大,對比度最強的是 AU=0 和 AU=1 的情況下,可以清楚的看到人物面部嘴角和笑臉的變化,當然中間隨著 AU 的增大,微笑也是越來越燦爛。
總結一下 GANimation 的貢獻:
將動作單元(AU)引入到 GAN 中實現了人物面部表情漸變生成;
將 Attention 引入到模型中用於克服生成中背景和光照的影響;
模型可應用於非資料集中人物面部表情的生成。
GANimation模型
我們一起來看看實現 GANimation 的模型結構:
先把圖中的變數交代一下,真實影象記為,與它對應的生成的影象記為,是動作資訊它是屬於 N 種動作單元,由於存在兩組生成器(另一組為了讓生成的影象還原為原始影象,做迴圈誤差優化網路),將生成器的輸入統一記為,動作單元記為,輸出記為。
為 Attention 生成器,生成的是一維的影象包含了影象中 Attention 的位置。則是畫素影象生成器,用於生成包含影象畫素的三維影象。最後將的輸出和的輸出結合形成完整的影象輸出,其中的輸出是為了指示畫素影象的每個畫素在哪個範圍內對最終的輸出作用力度。對應的判別器也由兩部分組成,用於區分真實影象和生成影象,而則是用來區分影象的條件資訊也就是影象的 AU 資訊用來讓生成的影象的 AU 特性更加的好。
和的結合方式由下圖所示:
最終生成器的輸出就是:
有了以上的分析,我們再來捋一遍模型框架。將真實影象輸入到生成器和動作單元結合生成具有動作單元資訊的影象,為了區分真實影象和生成影象將生成影象和真是影象送入判別器去判別,區分真假影象,區分 AU 資訊,不斷優化生成器和判別器達到共同進步。為了實現迴圈優化網路,做了一個重構的迴圈生成,將生成的影象進一步根據原始影象的 AU 還原回去生成。
整個模型框架就是這樣,接下來就是損失函式的設計了。
GANimation損失函式
GANimation 採用的 GAN 模型是 WGAN-GP [2](利用 Earth Mover Distance 代替 GAN 中的 Jensen-Shannon divergence),其優點是訓練會更加的穩定。所以接下來的分析是在 WGAN-GP 的基礎上展開的。
GANimation 模型的損失函式細分的話有 4 個,分別為 Image Adversarial Loss,Attention Loss,Condition Expression Loss 和 Identity Loss。
Image Adversarial Loss
這就是傳統的影象對抗損失,用於優化生成器和判別器,需要考慮 Earth Mover Distance 中的梯度懲罰:
這部分的損失函式沒必要細說,就是比較傳統概念上的 GAN 的損失。
Attention Loss
這部分是 Attention 的損失函式,主要是 Attention 的知識,考慮影象的前後對應關係。由於 Attention 優化後得到的 A 很容易飽和到 1,對應上面的公式中的則沒了意義,所以為了防止這種情況,將 A 做 l2 損失。得到損失函式:
Condition Expression Loss
這部分損失還是蠻重要的,它的作用是讓 AU 作用下生成的影象更具有 AU 的動作特性,整體的思路是優化生成器和判別器,通過對抗實現共進步。
Identity Loss
最後一個損失就是迴圈損失了,也可以說為重構損失,這一塊也沒什麼說的:
最後將損失函式統一一下:
GANimation實驗
實驗先對單 AU 進行編輯,在不同強度下啟用 AU 的能力,同時保留人的身份。下圖顯示了用四個強度級別(0,0.33,0.66,1)單獨轉換的 9 個 AU 的子集。對於 0 強度的情況,不改變相應的 AU。
對於非零情況,可以觀察每個 AU 如何逐漸加強,注意強度為 0 和 1 的生成影象之間的差異。相對於眼睛和麵部的半上部(AU1,2,4,5,45)的 AU 不會影響口腔的肌肉。同樣地,口腔相關的變形(AU10,12,15,25)不會影響眼睛和眉毛肌肉。
對於相同的實驗,下圖顯示了產生最終結果的注意力 A 和顏色 C 掩模。注意模型是如何學會將其注意力(較暗區域)以無人監督的方式聚焦到相應的AU上的。
多 AU 編輯的實驗結果就是正文的第一張圖,非真實世界的資料上也顯示了出了較好的結果(阿凡達的那張)。
實驗還將 GANimation 與基線 DIAT,CycleGAN,IcGAN 和 StarGAN 進行比較。
最後,實驗展示了在非資料集上的實驗效果,圖片選自加勒比海盜影片。
當然,實驗也展示了不足的地方。
總結
GANimation 提出了一種新穎的 GAN 模型,用於臉部表情漸進生成,可以實現無監督訓練。模型通過 AU 引數化與解剖學面部變形是一致的,在這些 AU 上調整 GAN 模型允許生成器通過簡單插值來渲染各種表情幅度。此外,作者在網路中嵌入了一個注意模型,對背景和光照有一定的補充。