極少的樣本實現極逼真的變形,「AI造假神術」驅動的換臉模型有望顛覆時尚界
在人工智慧「造假」領域有著三大「邪術」:「AI 換臉術」Deepfake 、「無中生有術」StyleGAN,和「造假神術」CycleGAN 與 StarGAN。其中,「造假神術」大小通吃:大,可以讓你把風景照隨意變成大師的油畫;小,可以讓你按心情給自拍換個造型,染個頭髮,改個表情。這便是「圖像風格遷移」。
但是,如絕大多數機器學習領域一樣,人工智慧「造假」的成本可不低。一個成熟的模型是由大量訓練數據「喂」出來的。訓練樣本不夠,模型吐出來的只能被稱為「半成品」。
近日,英偉達的研究科學家劉洺堉等人,發明了一個稱為FUNIT(Few-shot Unsupervised Image-to-image Translation)的小樣本非監督圖像轉換模型,只需少量樣本(幾張照片),就能將一張新圖片中的一些姿勢、五官分布等特徵轉換到這些樣本圖上。賦予AI 可以媲美人類的「腦補」能力:「看幾眼」新物種,便能「推測」出新物種某些(與新圖片一致的)動作姿勢,就像有人第一眼看到獨角獸,便能想像它怎樣奔跑。
圖 | 輸入吐舌歪頭殺的金毛以及兩張模型訓練集中未出現過的新動物圖像,輸出吐舌歪頭殺的新動物(來源:Ming-Yu Liu, et al./ nvidia)
對比其他非監督圖圖轉換,FUNIT 一枝獨秀,不僅秀在所需目標樣本極少,而且秀在適用廣,輸入兩張圖像,從二狗子到貓主子,從小野豹到虎大爺,無不乖巧聽話被轉換。
FUNIT 模型框架
與其他各種「造假」模型一樣,FUNIT 的本質也是生成對抗網路(GAN),但它改進了傳統 GAN 的結構,並推出了一個獨特的網路框架。模型由兩部分組成:條件圖像生成網路(Conditional image generator)和多任務對抗判別網路(Multi-task Adversarial Discriminator criminator)。
首先是條件圖像生成網路,它的功能類似傳統 GAN 中的 G,既生成網路。它的輸入為一張「內容圖」和一組「類別圖」,輸出則會在結構上與內容圖類似,但在類別上與類別圖一樣,實現圖像風格轉移。
舉個例子:如果內容圖為一隻張嘴吐舌的狗,而類別圖是小狐狸的正臉與側臉,輸出的便是張嘴吐舌的小狐狸。
訓練時,條件圖像生成網路在內容圖和類別圖上進行如此的轉換,而測試時,類別圖是訓練集中從未出現的圖像(即未見過的動物),期望輸出未見過動物的新動作。
在具體結構上面,條件圖像生成網路是由內容編碼器(Content encoder)、類別編碼器(Class encoder)、解碼器(Decoder)三部分組成。
內容編碼器含有 4 個二維卷積層和 2 層殘差網路,將內容圖像映射成內容編碼。
類別編碼器含有 5 個二維卷積層和 1 個均值池化,分別將每個類別圖像進行向量化,再取均值作為類別編碼。
解碼器含有多個自適應實例標準化殘差網路(AdaIN Residual Blocks),即殘差網路模型利用 AdaIN(Adaptive Instance Normalization)做歸一化層。AdaIN 是風格遷移模型中的一個手段,本質是對 Instance Normalization(實例標準化)的改進,可以進行任意風格的圖像遷移。
除此之外,解碼器還存有多個卷積層,將內容編碼做仿射變換(即風格遷移,仿射變換的參數由類別編碼經過全連接層變換得到),得到具有內容圖像特徵的類別圖像類似圖。通俗來講,編碼解碼後實現了將豹哥(抽取類別圖像獵豹面部特徵)轉換成大眼賣萌的獵豹(內容圖像是大眼賣萌狗子)。
圖 | 小樣本圖像轉換網路模型的三個子模型結構(來源:Ming-Yu Liu, et al./ nvidia)
多任務對抗判別網路的功能與傳統GAN 中的 D,既判別網路類似。它需要判斷圖像是真實圖像還是條件圖像生成網路產生的轉換圖像。無論是哪種圖像,判斷失敗都會加大懲罰,即加大損失函數,通過最小損失來逼生成網路的轉換圖像越來越逼真。
而與傳統的判別網路不同,FUNIT 的判別模型為 Patch GAN discriminator,有 1 個卷積層和 10 個殘差網路,和直接輸出真偽的傳統判別網路相比,Patch GAN 判別網路的輸出是一個 NN 矩陣,每個矩陣元素代表對輸入的某一圖塊的真偽判斷。
訓練與測試結果
FUNIT 模型在訓練時會抽取內容圖像的特徵,生成具有該特徵的他類動物。比如在訓練過程中,將側臉的狗子抽取,生成了長毛狗的側臉。在模型足夠泛化後進行測試時,僅用幾張訓練集中不存在的新圖像作為類別圖像(如獵豹),使用大眼賣萌汪的內容圖像特徵,便收穫了獵豹的賣萌凝視。AI 此時便獲得了「實用的想像力」,它憑藉已看過的狗狗賣萌,在看幾眼新動物——獵豹時,就知道獵豹的賣萌模樣。
圖 | FUNIT 模型訓練過程和測試過程(來源:Ming-Yu Liu, et al./ nvidia)
在試驗中,FUNIT 每次都可以使用極少的樣本成功抽取特徵,展現出可媲美人類的想像能力。
看見新狗子能知道它怎麼伸脖子,看見新貓咪能知道它怎麼伸舌頭,看見新鳥知道它怎麼叉腿兒,即使訓練集中從未出現,測試集出現類別圖像 y1、y2 兩張圖,就能根據內容圖 X,成功輸出類似的圖,可以說很強了。
圖 | FUNIT 對小樣本輸入圖像的成功動作轉換,將輸入的兩張圖像 y1、y2 賦予 x 的動作。(來源:Ming-Yu Liu, et al./ nvidia)
此外,FUNIT 還優於現有最佳的非監督圖圖轉換模型StarGAN。
測試結果最右側的 FUNIT 結果說明,即使訓練集中沒有目標圖像(即以前沒見過汪 y1,y2),當測試集中出現 y1,y2 時(即看見新汪),可以成功模擬出新汪內容圖像(Input x)做的動作,而 StarGAN 在訓練集中無新汪,即因為 FUNIT 也沒見過新汪的 Fair(公平)結果時,輸出圖根本不是新汪在做動作。而 StarGAN 在訓練集有新汪,即 Unfair(不公平)結果時,勉強輸出了信息,但仍有點怪怪的,顯然被 FUNIT 甩 n 條街。
圖 | FUNIT 和訓練集加入目標圖像的 StarGAN、訓練集未加入目標圖像的 StarGAN 對比(來源:Ming-Yu Liu, et al./ nvidia)
介於 FUNIT 模型無需大量目標圖像數據即可實現對內容圖像的模擬,且泛化很強,它的使用前景極其廣泛。想像一下,如果有一個拍你幾張照片後,就能輕鬆把你的特徵根據一張新照片進行替換的手機 APP,可以輕鬆模擬各種造型的美妝、服裝、髮型,哪些整容愛好者豈不是會爽翻天。
Demo 都準備好了,注意,圖像包括但不限於犬科、貓科、植物花朵、炒麵……但請考慮一下物種,本模型訓練集主要是動物,請審慎嘗試輸入人類等其他物種圖片。
大家快去試試吧!地址:
https://nvlabs.github.io/FUNIT/petswap.html
-End-
參考:
https://arxiv.org/abs/1905.01723
https://arxiv.org/abs/1611.07004
https://arxiv.org/abs/1801.04406
https://arxiv.org/abs/1804.04732
video 介紹:https://www.youtube.com/watch?v=kgPAqsC8PLM
源代碼:https://github.com/NVlabs/FUNIT
關注 DeepTech
發現改變世界的新興科技
(微信號:deeptechchina)
※CoinDesk 在Consensus共識大會首日宣布將推出中文版
※華裔建築大師貝聿銘走了,留下特立獨行的符號
TAG:DeepTech深科技 |