一些fancy的GAN應用
來自專欄機器學習演算法工程師72 人贊了文章
前 言
GAN全稱是Generative adversarial networks,中文是生成對抗網路,是一種生成式模型,由good fellow在14年提出,近四年來被AI研究者瘋狂研(guan)究(shui),更有大神建立一個GAN zoo,收集了上百種不同的GAN:
https://github.com/hindupuravinash/the-gan-zoo
事實上隨著GAN理論的不斷完善,GAN逐漸展現出了自己非凡的魅力,在一些應用領域開始大放異彩,由此衍生了一些非常fancy的應用。本文對其中的一部分做一些匯總展示給讀者,希望在枯燥的科研生活之餘給讀者一些消遣。註:本文不牽涉複雜的公式說明,旨在用結果展示GAN的應用場景,文中包含大量的圖片。
章節目錄
- 圖像生成
- 圖像轉換
- 圖像合成
- 圖像超解析度
- 圖像域的轉換
- 圖像修復
- 文本填空
- 其他
圖像生成
前言里提到了GAN是一個生成模型,可以用來生成圖像、音頻等等,生成質量逐年增加,看下圖:
從32x32解析度生成都困難的GAN,到生成2K真假難辨高清解析度圖像的proGAN,GAN正在發揮著自己獨特的優勢,並且逐漸滲透到二次元領域。
上圖是同濟大學的一個工作,生成二次元軟妹子。
不僅僅作用於圖像,GAN用來生成3D目標和音樂上也是不含糊:說到這裡,就可能有一些疑問,圖像生成除了養眼,究竟有什麼用呢,事實上用處還是很廣泛的,比如可以用來製作海報,自己用來生成一個高清美女圖像作為海報主角,省了一大批廣告費。
圖像轉換
圖像轉換或者說是圖像翻譯,是將圖像轉換為另一種形式的圖像,與風格遷移稍有不同,這方面典型的工作是pixel-2-pixel
一般的GAN的生成器G輸入是一個隨機向量,輸出的是圖像,這裡的生成器的輸入是圖像,輸出的是轉換後的圖像。
感興趣的可以玩一下pix2pix的demo,還是很有趣的:https://affinelayer.com/pixsrv/說到這裡,就需要提到cycle-GAN了,可以實現風景畫和油畫互變,馬和斑馬互相轉換等domain transfer等任務,更多有意思的變化可以在論文主頁上看到:https://junyanz.github.io/CycleGAN/,cycleGAN的主要貢獻是提供了一種unpaired的圖像翻譯方法,這是pix2pix所做不到的:
除了cycleGAN還有一篇和其比較相似的論文,就是DiscoGAN,DiscoGAN在不需要label標記和圖像pairing的情況下學習交叉domain之間的聯繫,比如它可以將包包的圖像風格遷移到鞋子的圖像上,效果上圖:
事實上,理工科的可愛的研究員們可不會僅滿足於此,他們更希望全世界充滿笑容,於是用cycleGAN給冷酷大哥加上笑容,將人臉圖像轉換為卡通圖像,類似之前很火的臉萌APP,這個工作見DTN
(https://arxiv.org/pdf/1611.02200.pdf)。
圖像合成
圖像合成這個任務是通過某種形式的圖像描述創建新圖像的過程。pix2pix和cycleGAN 都屬於圖像合成領域的一部分。圖像合成也有一些典型的工作,並且有很nice的應用場景。
場景合成
首先,第一個場景合成,此部分在於如何給定部分顯示場景的信息還原出真實的場景信息,比如根據分割圖像還原出原始場景信息,剛好是圖像分割的逆過程,據說英偉達在不斷的開拓這個方向,試想一下,只要GAN還原的場景足夠真實,完全可以模擬無人駕駛的路況場景,從而在實驗室階段就可以完成無人駕駛汽車的上路測試工作,很nice的一個應用,但是面對的問題就是如何生成高解析度的和足夠真實的圖像,此部分工作可以見pix2pixHD。
人臉合成
人臉合成主要是根據一張人臉的圖像,合成出不同角度的人臉圖像,可以用做人臉對齊,姿態轉換等輔助手段提高人臉識別的精度,典型的工作是中科院的TP-GAN,可以根據半邊人臉生成整張人臉的前向圖,對人臉識別任務有很大的輔助效果。
文本到圖像的合成
這個方向是NLP與CV碰撞的結果,任務描述為:從給定的一段文字描述,生成一張和圖像文字匹配的圖像。比如:根據文字:一隻黑色冠冕和黃色喙的白色的鳥,生成下面的這張圖像;
類似的工作還有stack GAN和attn GAN:https://arxiv.org/abs/1711.10485,後者更是在細粒度的text-to-image上做了一番功夫。
風格遷移
效果看上去很nice,此部分的工作是:Precomputed Real-Time Texture Synthesis with Markovian Generative Adversarial Networks,作者發明了一種馬爾可夫GAN遷移圖像的風格,算是不錯的貢獻了。
年齡變化
想不想知道自己20年後長什麼樣子呢,Age-cGAN可以告訴我們答案,只要有一張年輕時候的照片,就可以提前知道自己幾十年之後的樣子,還是蠻期待的,這個方向之前有朋友做過,生成了一張50歲的韓庚的樣子,效果還不錯。
圖像超解析度
圖像超解析度一直是一個很重要的研究課題,比較重要的是對天文圖像和衛星圖像做超解析度,不管是在天文,軍事還是其他方面,都有很重要的應用。在生活中,如果有標清的視頻可以變為高清的視頻,我相信很多人還是很樂意的,下圖是超分之後的七龍珠和原版的七龍珠視頻。
上述過程都是可逆的,既然可以增加圖像的解析度,那麼同樣可以減小圖像的解析度。既然都說到了圖像超解析度,那麼就談談圖像去馬賽克的一些操作,知乎一位大佬集圖像轉化和超解析度之大成,完成了對愛情動作片的添加和去除馬賽克操作,詳情請移步知乎:https://zhuanlan.zhihu.com/p/27199954,36k的高贊文章,相信可以從中學到一些知識。
圖像域的轉換
GAN很適合學習數據的分布(只要是數據是連續的,對於離散的文本數據效果不是很好),同時也能完成domain轉換的任務,比如使用GAN完成domain的遷移,此部分有比較典型的工作,CVPR的oral論文StarGAN是其中一個。Pix2Pix模型解決了有Pair對數據的圖像翻譯問題;CycleGAN解決了Unpaired數據下的圖像翻譯問題。但無論是Pix2Pix還是CycleGAN,都是解決了一對一的問題,即一個domain到另一個domain的轉換。StarGAN就是在多個domain之間進行轉換的方法。可以做多個圖像翻譯任務,比如更換頭髮顏色,表情變化,年齡變換等等,文章公布了代碼:https://github.com/yunjey/StarGAN。
另外一個比較有意思的domain轉換的是穿衣搭配問題,詳細工作可見PixelDTGAN: https://github.com/fxia22/PixelDTGAN PixelDTGAN是指像素級的domain 轉換,輸入的是一張複雜的圖片,輸出的是不包含背景的單純的服飾的圖像,下圖中第一行是數據集中的例子,第二行是左圖是輸入圖像,右圖是輸出的效果。
感覺這個工作反過來就可以做穿衣搭配問題了,之前有個工作是穿衣搭配的,還被iangood fellow轉發在了twitter上,奈何現在找不到這個內容了。穿衣搭配也可以看為是conditioned image generation,不過更加複雜。
圖像修復
GAN在圖像修復(image inpainting)上絕對是大放異彩了,Generative Image Inpainting with Contextual Attention是其中一個
另外,感謝 @鄒瑜亮 大佬補充,另外一篇inpainting的論文提出使用gate convolution做圖像修復:Free-Form Image Inpainting with Gated Convolution,這個論文是他們組的inpainting v2,相比較v1有很大提高,演示的效果也是驚艷了(見下圖)!希望這些應用儘早落地應用吧!
英偉達最新的研究成果(Image Inpainting for Irregular Holes Using Partial Convolutions)是目前的state-of-art,給定一張缺失的圖像,修復出完整的圖像,下面左圖為待修復圖像,右圖為修復好的圖像。
之前藉助GAN做過一段時間的image inpainting,奈何實驗結果的更新速度總比不上arxiv上inpainting論文的更新速度。
文本填空
GAN在圖像領域建樹頗多,但是在文本領域作用並不是很大,主要是NLP中的詞的數據都是離散數據,GAN不適合學習離散的數據分布,但是並不意味著沒法學,Google brain的團隊發明了一個結合強化學習的MaskGAN,可以用作完型填空,具體任務是補全句子中的缺失部分。
不得不說,作者起名字也是很有水平,論文的標題竟然空了一個單詞,使用下劃線來代替,一般能這麼給論文起名字的作者都是大佬,比如attention is all you need。
其他
另外,有研究者們希望將GAN的學習方式和學習能力用在藥學分子和材料學領域,用來生成藥學分子結構和合成新材料配方,不得不說,這相當的有創意,如果真的能完成的話,那麼AI將無所不能。
上文總結的GAN應用並不包含所有的工作,舉得例子也很有限,另外有GAN用在視頻預測,視頻生成等領域的,在目標檢測、行人識別、重定位上也有輔助作用,了解有限,不詳細展開,讀者有意可自行Google查詢。
參考文獻
[1]Towards the Automatic Anime Characters Creation with Generative Adversarial Networks
[2] https://arxiv.org/pdf/1710.10196.pdf [3] http://papers.nips.cc/paper/6096-learning-a-probabilistic-latent-space-of-object-shapes-via-3d-generative-adversarial-modeling.pdf [4] https://arxiv.org/pdf/1703.10847.pdf [5]pix2pix https://affinelayer.com/pixsrv/[6]CycleGAN https://arxiv.org/pdf/1703.10593.pdf
[7] DiscoGAN https://github.com/carpedm20/DiscoGAN-pytorch
[8] TPGAN https://arxiv.org/pdf/1704.04086.pdf
[9]pix2pix HD https://tcwang0509.github.io/pix2pixHD/
[10]stackGAN https://arxiv.org/pdf/1612.03242.pdf [11] AttnGAN https://arxiv.org/abs/1711.10485 [12] DTN https://arxiv.org/pdf/1611.02200.pdf [13] MGAN https://arxiv.org/pdf/1604.04382.pdf [14]Age-cGAN https://arxiv.org/pdf/1702.01983.pdf [15] StarGAN https://arxiv.org/abs/1711.09020 [16]image inpainting https://arxiv.org/abs/1804.07723 [17] MaskGAN https://arxiv.org/abs/1801.07736[18] Free-Form Image Inpainting with Gated Convolution
推薦閱讀:
TAG:深度學習DeepLearning | 生成對抗網路GAN |