當前位置:
首頁 > 新聞 > GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

新智元報道

編譯:三石、肖琴、大明

【新智元導讀】隨著GAN的發展,單憑一張圖像就能自動將面部表情生成動畫已不是難事。但近期在Reddit和GitHub熱議的新款GANimation,卻將此技術提到新的高度。GANimation構建了一種人臉解剖結構(anatomically)上連續的面部表情合成方法,能夠在連續區域中呈現圖像,並能處理複雜背景和光照條件下的圖像。

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

若是能單憑一張圖像就能自動地將面部表情生成動畫,那麼將會為其它領域中的新應用打開大門,包括電影行業、攝影技術、時尚和電子商務等等。隨著生成網路和對抗網路的流行,這項任務取得了重大進展。像StarGAN這樣的結構不僅能夠合成新表情,還能改變面部的其他屬性,如年齡、發色或性別。雖然StarGAN具有通用性,但它只能在離散的屬性中改變面部的一個特定方面,例如在面部表情合成任務中,對RaFD數據集進行訓練,該數據集只有8個面部表情的二元標籤(binary label),分別是悲傷、中立、憤怒、輕蔑、厭惡、驚訝、恐懼和快樂。

GANimation的目的是建立一種具有FACS表現水平的合成面部動畫模型,並能在連續領域中無需獲取任何人臉標誌(facial landmark)而生成具有結構性(anatomically-aware)的表情。為達到這個目的,我們使用EmotioNet數據集,它包含100萬張面部表情(使用其中的20萬張)圖像。並且構建了一個GAN體系結構,其條件是一個一維向量:表示存在/缺失以及每個動作單元的大小。我們以一種無監督的方式訓練這個結構,僅需使用激活的AUs圖像。為了避免在不同表情下,對同一個人的圖像進行訓練時出現冗餘現象,將該任務分為兩個階段。首先,給定一張訓練照片,考慮一個基於AU條件的雙向對抗結構,並在期望的表情下呈現一張新圖像。然後將合成的圖像還原到原始的樣子,這樣可以直接與輸入圖像進行比較,並結合損失來評估生成圖像的照片級真實感。此外,該系統還超越了最先進的技術,因為它可以在不斷變化的背景和照明條件下處理圖像。

最終,構建了一種結構上連續的面部表情合成方法,能夠在連續區域中呈現圖像,並能處理複雜背景和光照條件下的圖像。它與其他已有的GAN方法相比,無論是在結果的視覺質量還是生成的可行性上,都是具有優勢的。

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

圖1:根據一張圖像生成的面部動畫

無監督學習+注意力機制

讓我們將一個輸入RGB圖像定義為GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼),這是在任意麵部表情下捕獲的。通過一組N個動作單元GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)對每個手勢表達式進行編碼,其中每個GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)表示0到1之間的歸一化值,表示第n個動作單元的大小。值得指出的是,由於這種連續的表示,可以在不同表情之間進行自然插值,從而可以渲染各種逼真、流暢的面部表情。

我們的目標是學習一個映射GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼),將GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)轉換成一個基於動作單元目標GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)的輸出圖像GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼),即:我們希望估計映射:

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

圖2. 生成照片級真實條件圖像方法的概述

所提出的架構由兩個主要模塊組成:用於回歸注意力和 color mask 的生成器G; 用於評估所生成圖像的真實度GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)和表情調節實現GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)評論家(critic) D

我們的系統不需要監督,也就是說,不需要同一個人不同表情的圖像對,也不假設目標圖像是已知的。

生成器G

生成器器GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)被訓練來逼真地將圖像中的面部表情轉換為期望的。

我們系統的一個關鍵要素是使G只聚焦於圖像的那些負責合成新表情的區域,並保持圖像的其餘元素如頭髮、眼鏡、帽子、珠寶等不受影響。為此,我們在生成器中嵌入了一個注意力機制。

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

圖3:Attention-based的生成器

給定一個輸入圖像和目標表情,生成器在整個圖像上回歸併注意mask A和RGB顏色變換C。attention mask 定義每個像素強度,指定原始圖像的每個像素在最終渲染圖像中添加的範圍。

具體地說,生成器器不是回歸整個圖像,而是輸出兩個mask,一個color mask C和一個attention mask A。最終圖像可表示為:

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

實驗評估

首先測試主要組件,即單個和多個AU編輯。然後將我們的模型與離散化情緒編輯任務中的當前技術進行比較,並展示我們的模型處理野外圖像的能力,可以生成大量的解剖學面部變換的能力。最後討論模型的局限性和失敗案例。

值得注意的是,在某些實驗中,輸入的面部圖像是未被裁剪的。在這種情況下,我們首先使用檢測器2來對面部進行定位和裁剪,利用(1)式進行表達式的轉換,以應用於相關區域。 最後,將生成的面部圖像放回原圖像中的原始位置。注意力機制(attention mechanism)可以確保經過變換處理的裁剪面部圖像和原始圖像之間的平滑過渡。

稍後圖中可見,與以前的模型相比,經過這三個步驟的處理可以得到解析度更高的圖像(鏈接見文末)。

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

圖4:單個動作單元的編輯

隨著強度(0.33-1)的增加,一些特定的動作單元被激活。圖中第一行對應的是動作單元應用強度為零的情況,可以在所有情況下正確生成了原始圖片。

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

圖5: 注意力模型

中間注意力掩模A(第一行)和顏色掩模C(第二行)的細節。 最底下一行圖像是經合成後的表達結果。注意掩模A的較暗區域表示圖像的這些區域與每個特定的動作單元的相關度更高。 較亮的區域保留自原始圖像。

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

圖6: 與當前最先進技術的定性比較

圖為面部表情圖像合成結果,分別應用DIAT、CycleGAN、IcGAN、StarGAN和我們的方法。可以看出,我們的解決方案在視覺準確度和空間解析度之間達到了最佳平衡。 使用StarGAN的一些結果則出現了一定程度的模糊。

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

圖7:採樣面部表情分布空間

通過yg向量對活動單元進行參數化,可以從相同的源圖像合成各種各樣的照片的真實圖像。

圖8:自然圖像的定性評估

上圖:分別給出了取自電影《加勒比海盜》中的一幅原圖像(左)及其用我們的方法生成的圖像(右)。 下圖:用類似的方式,使用圖像框(最左綠框)從《權力的遊戲》電視劇中合成了五個不同表情的新圖像。

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

圖9:成功和失敗案例

圖中分別表示了源圖像Iyr,目標Iyg,以及顏色掩膜C和注意力掩模A. 上圖是在極端情況下的一些成功案例。 下圖是一些失敗案例。

文獻參考地址

論文:https://arxiv.org/abs/1807.09251

代碼:http://www.albertpumarola.com/research/GANimation/

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

新智元AI WORLD 2018大會【早鳥票】開售!

新智元將於9月20日在北京國家會議中心舉辦AI WORLD 2018 大會,邀請機器學習教父、CMU教授 Tom Mitchell,邁克思·泰格馬克,周志華,陶大程,陳怡然等AI領袖一起關注機器智能與人類命運。

大會官網:

http://www.aiworld2018.com/

即日起到8月19日,新智元限量發售若干早鳥票,與全球AI領袖近距離交流,見證全球人工智慧產業跨越發展。

GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)

  • 活動行購票鏈接:

    http://www.huodongxing.com/event/6449053775000

  • 活動行購票二維碼:

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

「深度好文」怎樣用可交互對抗網路增強人類創造力
Guido 轉身離去,Python 何去何從?

TAG:新智元 |