一文看懂「生成对抗网络 - GAN」基本原理+10种典型算法+13种应用
生成對抗網絡 – Generative Adversarial Networks | GAN
文章目錄
- GAN的設計初衷
- 生成對抗網絡 GAN 的基本原理
- GAN的優缺點
- 10大典型的GAN算法
- GAN 的13種實際應用
- 百度百科+維基百科
- 擴展閱讀
此文章為轉載,這是原文地址
生成對抗網絡 – GAN 是最近2年很熱門的一種無監督算法,他能生成出非常逼真的照片,圖像甚至視頻。我們手機里的照片處理軟件中就會使用到它。
本文將詳細介紹生成對抗網絡 – GAN 的設計初衷、基本原理、10種典型算法和13種實際應用。
?
GAN的設計初衷
一句話來概括 GAN 的設計動機就是——自動化。
人工提取特征——自動提取特征
我們在《一文看懂深度學習(概念+優缺點+典型算法)》中講過,深度學習最特別最厲害的地方就是能夠自己學習特征提取。
機器的超強算力可以解決很多人工無法解決的問題。自動化后,學習能力更強,適應性也更強。
人工判斷生成結果的好壞——自動判斷和優化
我們在《監督學習》中講過,訓練集需要大量的人工標注數據,這個過程是成本很高且效率很低的。而人工判斷生成結果的好壞也是如此,有成本高和效率低的問題。
而 GAN 能自動完成這個過程,且不斷的優化,這是一種效率非常高,且成本很低的方式。GAN是如何實現自動化的呢?下面我們講解一下他的原理。
?
生成對抗網絡 GAN 的基本原理
大白話版本
知乎上有一個很不錯的解釋,大家應該都能理解:
假設一個城市治安混亂,很快,這個城市里就會出現無數的小偷。在這些小偷中,有的可能是盜竊高手,有的可能毫無技術可言。假如這個城市開始整飭其治安,突然開展一場打擊犯罪的「運動」,警察們開始恢復城市中的巡邏,很快,一批「學藝不精」的小偷就被捉住了。之所以捉住的是那些沒有技術含量的小偷,是因為警察們的技術也不行了,在捉住一批低端小偷后,城市的治安水平變得怎樣倒還不好說,但很明顯,城市里小偷們的平均水平已經大大提高了。
警察們開始繼續訓練自己的破案技術,開始抓住那些越來越狡猾的小偷。隨著這些職業慣犯們的落網,警察們也練就了特別的本事,他們能很快能從一群人中發現可疑人員,于是上前盤查,并最終逮捕嫌犯;小偷們的日子也不好過了,因為警察們的水平大大提高,如果還想以前那樣表現得鬼鬼祟祟,那么很快就會被警察捉住。
為了避免被捕,小偷們努力表現得不那么「可疑」,而魔高一尺、道高一丈,警察也在不斷提高自己的水平,爭取將小偷和無辜的普通群眾區分開。隨著警察和小偷之間的這種「交流」與「切磋」,小偷們都變得非常謹慎,他們有著極高的偷竊技巧,表現得跟普通群眾一模一樣,而警察們都練就了「火眼金睛」,一旦發現可疑人員,就能馬上發現并及時控制——最終,我們同時得到了最強的小偷和最強的警察。
?
非大白話版本
生成對抗網絡(GAN)由2個重要的部分構成:
下面詳細介紹一下過程:
第一階段:固定「判別器D」,訓練「生成器G」
我們使用一個還 OK 判別器,讓一個「生成器G」不斷生成“假數據”,然后給這個「判別器D」去判斷。
一開始,「生成器G」還很弱,所以很容易被揪出來。
但是隨著不斷的訓練,「生成器G」技能不斷提升,最終騙過了「判別器D」。
到了這個時候,「判別器D」基本屬于瞎猜的狀態,判斷是否為假數據的概率為50%。
第二階段:固定「生成器G」,訓練「判別器D」
當通過了第一階段,繼續訓練「生成器G」就沒有意義了。這個時候我們固定「生成器G」,然后開始訓練「判別器D」。
「判別器D」通過不斷訓練,提高了自己的鑒別能力,最終他可以準確的判斷出所有的假圖片。
到了這個時候,「生成器G」已經無法騙過「判別器D」。
循環階段一和階段二
通過不斷的循環,「生成器G」和「判別器D」的能力都越來越強。
最終我們得到了一個效果非常好的「生成器G」,我們就可以用它來生成我們想要的圖片了。
下面的實際應用部分會展示很多“驚艷”的案例。
如果對 GAN 的詳細技術原理感興趣,可以看看下面2篇文章:
《生成性對抗網絡(GAN)初學者指南 – 附代碼》
《長文解釋生成對抗網絡GAN的詳細原理(20分鐘閱讀)》
?
GAN的優缺點
3個優勢
2個缺陷
擴展閱讀:《為什么訓練生成對抗網絡如此困難?》閱讀這篇文章對數學要求很高
?
10大典型的GAN算法
GAN 算法有數百種之多,大家對于 GAN 的研究呈指數級的上漲,目前每個月都有數百篇論壇是關于對抗網絡的。
下圖是每個月關于 GAN 的論文發表數量:
如果你對 GANs 算法感興趣,可以在 「GANs動物園」里查看幾乎所有的算法。我們為大家從眾多算法中挑選了10個比較有代表性的算法,技術人員可以看看他的論文和代碼。
| GAN | 論文地址 | 代碼地址 |
| DCGAN | 論文地址 | 代碼地址 |
| CGAN | 論文地址 | 代碼地址 |
| CycleGAN | 論文地址 | 代碼地址 |
| CoGAN | 論文地址 | 代碼地址 |
| ProGAN | 論文地址 | 代碼地址 |
| WGAN | 論文地址 | 代碼地址 |
| SAGAN | 論文地址 | 代碼地址 |
| BigGAN | 論文地址 | 代碼地址 |
上面內容整理自《Generative Adversarial Networks – The Story So Far》原文中對算法有一些粗略的說明,感興趣的可以看看。
?
GAN 的13種實際應用
GAN 看上去不如「語音識別」「文本挖掘」那么直觀。不過他的應用已經進入到我們的生活中了。下面給大家列舉一些 GAN 的實際應用。
生成圖像數據集
人工智能的訓練是需要大量的數據集的,如果全部靠人工收集和標注,成本是很高的。GAN 可以自動的生成一些數據集,提供低成本的訓練數據。
?
生成人臉照片
生成人臉照片是大家很熟悉的應用,但是生成出來的照片用來做什么是需要思考的問題。因為這種人臉照片還處于法律的邊緣。
?
生成照片、漫畫人物
GAN 不但能生成人臉,還能生成其他類型的照片,甚至是漫畫人物。
?
圖像到圖像的轉換
簡單說就是把一種形式的圖像轉換成另外一種形式的圖像,就好像加濾鏡一樣神奇。例如:
- 把草稿轉換成照片
- 把衛星照片轉換為Google地圖的圖片
- 把照片轉換成油畫
- 把白天轉換成黑夜
?
文字到圖像的轉換
在2016年標題為“?StackGAN:使用 StackGAN 的文本到逼真照片的圖像合成?”的論文中,演示了使用 GAN,特別是他們的 StackGAN,從鳥類和花卉等簡單對象的文本描述中生成逼真的照片。
?
語意 – 圖像 – 照片 的轉換
在2017年標題為“?高分辨率圖像合成和帶條件GAN的語義操縱?”的論文中,演示了在語義圖像或草圖作為輸入的情況下使用條件GAN生成逼真圖像。
?
自動生成模特
在2017年標題為“?姿勢引導人形象生成?”的論文中,可以自動生成人體模特,并且使用新的姿勢。
?
照片到Emojis
GANs 可以通過人臉照片自動生成對應的表情(Emojis)。
?
照片編輯
使用GAN可以生成特定的照片,例如更換頭發顏色、更改面部表情、甚至是改變性別。
?
預測不同年齡的長相
給一張人臉照片, GAN 就可以幫你預測不同年齡階段你會長成什么樣。
?
提高照片分辨率,讓照片更清晰
給GAN一張照片,他就能生成一張分辨率更高的照片,使得這個照片更加清晰。
?
照片修復
假如照片中有一個區域出現了問題(例如被涂上顏色或者被抹去),GAN可以修復這個區域,還原成原始的狀態。
?
自動生成3D模型
給出多個不同角度的2D圖像,就可以生成一個3D模型。
?
?
百度百科+維基百科
百度百科版本生成式對抗網絡(GAN, Generative Adversarial Networks )是一種深度學習模型,是近年來復雜分布上無監督學習最具前景的方法之一。模型通過框架中(至少)兩個模塊:生成模型(Generative Model)和判別模型(Discriminative Model)的互相博弈學習產生相當好的輸出。原始 GAN 理論中,并不要求 G 和 D 都是神經網絡,只需要是能擬合相應生成和判別的函數即可。但實用中一般均使用深度神經網絡作為 G 和 D 。一個優秀的GAN應用需要有良好的訓練方法,否則可能由于神經網絡模型的自由性而導致輸出不理想。
查看詳情
維基百科版本生成對抗網絡(GAN)是一類用于無監督機器學習的人工智能算法,由在零和游戲框架中相互競爭的兩個神經網絡系統實現。他們是由Ian Goodfellow 等人介紹的。在2014年這種技術可以生成照片看起來至少在表面上真實的人的觀察員,有很多的現實特征(雖然在測試中的人可以真正告訴在許多情況下產生)。
查看詳情
?
擴展閱讀
入門類文章(1)生成對抗網絡GANs學習路線(2019-6)
「論文」生成性對抗網絡及其變體的工作原理
實踐類文章(6)O-GAN:簡單修改,讓GAN的判別器變成一個編碼器!(2019-3-8)
巧斷梯度:單個loss實現GAN模型(附開源代碼)(2019-3-5)
超詳綜述:GAN在圖像生成上的應用
互懟的藝術:從零直達WGAN-GP
ESRGAN:基于GAN的增強超分辨率方法(附代碼解析)
基于PyTorch的GAN框架TorchGAN:用架構級API輕松定制GAN項目
開拓視野類文章(18)綜述:基于GAN的圖像翻譯模型盤點(2019-9)
數據不夠?GAN來湊!(2019-7)
入大學前,Ta詳細梳理了GAN的發展脈絡(2019-6)
一文看懂GAN演進圖譜(2019-6)
關于生成式對抗網絡(GAN) 還有這些開放性問題尚未解決(2019-4)
七問生成對抗:谷歌大腦研究員提出未來GANs研究的七個深入方向(2019-4)
在GAN中畢業:從了解生成對抗網絡到運行自己的網絡(2019-4)
GAN – 為什么訓練生成對抗網絡如此困難!(2019-4)
生成性對抗網絡(GAN)的興起(2019-4)
四塊GPU即可訓練BigGAN:「官方版」PyTorch實現出爐(2019-3)
最新圖像合成GAN架構解讀:核心理念、關鍵成就、商業化路徑(2019-3)
MirrorGAN出世!浙大等提出文本-圖像新框架,刷新COCO紀錄(2019-3)
GAN之父5篇文章細數GAN在人臉生成方向4年多進展
谷歌大腦發布GAN全景圖:看百家爭鳴的生成對抗網絡
生成對抗網絡的最新研究進展(19年2月)
能量視角下的GAN模型(一):GAN=“挖坑”+“跳坑”
GANs 千萬條,安全第一條、
GAN最新進展:8大技巧提高穩定性
相關資源(1)GANs 算法大全 – the-gan-zoo
谷歌帶來GAN入門神器:瀏覽器上運行的可視化工具GAN Lab
總結
以上是生活随笔為你收集整理的一文看懂「生成对抗网络 - GAN」基本原理+10种典型算法+13种应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hive 复合类型_hive 常用函数整
- 下一篇: 【iOS开发】——MRC(手动内存管理)