生成对抗性网络简介
生成對抗性網絡簡介
- 1. 原理
- 1. GANs如何工作
- 2. GAN架構
- 3. 培訓GAN
- 4. 藝術家與評論家
- 5. 評估指標
- 6. GAN變體
- 7. GAN應用
- 8. 圖像合成(Image synthesis)
- 9. 圖像到圖像的轉換(Image-to-image translation)
- 10. 文本到圖像(Text-to-Image)
- 11. 超越圖像
- 12. 其他GAN應用
- 參考
這篇博客將介紹生成對抗性網絡(GAN)、各種GAN變體以及解決現實世界問題的有趣的應用程序。雖然這篇文章中的大多數例子都是關于將GANs用于藝術和設計,但同樣的技術可以很容易地適應并應用于許多其他領域:醫學、農業和氣候變化。GANs功能強大且多才多藝。
Generative Adversarial Networks (GANs) 生成對抗性網絡
這是GAN系列教程的第一篇文章:
1. 原理
1. GANs如何工作
GANs是一種生成模型,它觀察許多樣本分布,并生成更多相同分布的樣本。其他生成模型包括變分自動編碼器(VAE variational autoencoders )和自回歸模型( Autoregressive models)。
2. GAN架構
在基本的GAN架構中有兩個網絡:生成器模型和鑒別器模型。 GANs的名字中有“對抗性”一詞,因為這兩個網絡是同時訓練的,并且相互競爭,就像在國際象棋等零和游戲中一樣。
生成器(generator )模型生成新的圖像。生成器的目標是生成看起來如此真實的圖像,從而愚弄鑒別器。在用于圖像合成的最簡單的GAN架構中,輸入通常是隨機噪聲,其輸出是生成的圖像。
鑒別器(discriminator )只是一個二進制圖像分類器,它的工作是分類圖像是真的還是假的。在更復雜的GANs中,可以用圖像或文本來調節鑒別器,以進行圖像到圖像的翻譯或文本到圖像的生成(Image-to-Image translation or Text-to-Image generation))。
綜合來看,GAN的基本架構是這樣的:生成器生成假圖像;將真實圖像(訓練數據集)和偽圖像分別分批輸入鑒別器。然后,鑒別器告訴圖像是真的還是假的。
3. 培訓GAN
Minimax游戲:G對D
大多數深度學習模型(例如圖像分類)都是基于優化:找到成本函數的低值。GANs是不同的,因為兩個網絡:生成器和鑒別器,每個網絡都有自己的成本,目標相反:
生成器試圖欺騙鑒別器,使其將假圖像視為真實圖像
鑒別器試圖正確地對真實圖像和偽造圖像進行分類
下面的極小極大博弈數學函數說明了訓練過程中的這種對抗性動態。如果你不理解數學,不要太擔心,我將在未來的DCGAN文章中對G損失和D損失進行編碼時更詳細地解釋。
在訓練過程中,生成器和鑒別器都會隨著時間的推移而改進。生成器越來越善于生成與訓練數據相似的圖像,而鑒別器則越來越善于區分真實圖像和偽造圖像。
訓練GAN是為了在以下情況下在游戲中找到平衡(equilibrium):
生成器生成的數據看起來與訓練數據幾乎相同。
鑒別器不再能夠區分假圖像和真實圖像之間的區別。
4. 藝術家與評論家
模仿杰作是學習藝術的好方法-“藝術家如何在世界著名博物館復制杰作”。作為一名模仿杰作的人類藝術家,我會找到我喜歡的藝術品作為靈感,并盡可能多地復制它:輪廓、顏色、構圖和筆觸,等等。然后一位評論家看了一眼這本書,告訴它看起來是否像真正的杰作。
GANs的培訓與該過程類似,可以把生成器看作藝術家,把鑒別器看作評論家。不過,請注意人類藝術家和機器藝術家之間的類比差異:生成器無法訪問或查看它試圖復制的杰作。相反,它只依靠鑒別器的反饋來改善它生成的圖像。
5. 評估指標
一個好的GAN模型應該具有良好的圖像質量——例如不模糊并且類似于訓練圖像;多樣性:生成了各種各樣的圖像,這些圖像近似于訓練數據集的分布。
為了評估GAN模型,可以在訓練期間或通過與生成器模型的推理來直觀地檢查生成的圖像。如果你想定量評估GAN,這里有兩個流行的評估指標:
- Inception Score 捕捉生成圖像的質量和多樣性
- Fréchet Inception Distance 比較真實圖像和偽造圖像,而不僅僅是孤立地評估生成的圖像
6. GAN變體
自從Ian Goodfellow等人在2014年發表最初的GAN論文以來,已經出現了許多GAN變體。它們傾向于相互建立,要么解決特定的訓練問題,要么創建新的GANs架構,以實現對GANs的更精細控制或更好的圖像。
以下是其中一些突破性的變體,為未來GAN的進步奠定了基礎。無論如何,這并不是所有GAN變體的完整列表。
-
DCGAN(具有深度卷積生成對抗性網絡的無監督表示學習)是第一個在其網絡架構中使用卷積神經網絡(CNN)的GAN提案。目前大多數GAN變體在某種程度上是基于DCGAN的。因此,DCGAN很可能是你的第一個GAN教程,學習GAN的“Hello World”。
-
創建WGAN(Wasserstein GAN)和WGAN-GP(是為了解決GAN訓練挑戰,如模式崩潰——當生成器重復生成相同的圖像或(訓練圖像的)一小部分時。WGAN-GP通過使用梯度懲罰而不是權重裁剪來提高訓練穩定性,從而改進了WGAN。
-
cGAN(條件性生成對抗性網絡)首先引入了基于條件生成圖像的概念,該條件可以是圖像類標簽、圖像或文本,就像在更復雜的GAN中一樣。Pix2Pix和CycleGAN都是條件GAN,使用圖像作為圖像到圖像轉換的條件。
-
Pix2PixHD(具有條件GANs的高分辨率圖像合成和語義操作)消除了多個輸入條件的影響,并如論文示例所示:控制生成的服裝圖像的顏色、紋理和形狀,用于時尚設計。此外,它可以生成逼真的2k高分辨率圖像。
-
SAGAN(自注意生成對抗性網絡)提高了圖像合成質量:通過將自注意模塊(NLP模型中的一個概念)應用于神經網絡,使用來自所有特征位置的線索生成細節。谷歌DeepMind擴大了SAGAN的規模,打造了BigGAN。
-
BigGAN(用于高保真自然圖像合成的大規模GAN訓練)可以創建高分辨率和高保真圖像。
-
ProGAN、StyleGAN和StyleGAN2都可以創建高分辨率圖像。
-
ProGAN(用于提高質量、穩定性和變異性的GAN的漸進式增長)使網絡逐步增長。
-
由NVIDIA Research推出的StyleGAN(一種用于生成對抗性網絡的基于風格的生成器架構)使用了具有自適應實例規范化(AdaIN)的進步增長的ProGAN加圖像風格傳輸,并能夠控制生成圖像的風格。
-
StyleGAN2(分析和改進StyleGAN的圖像質量)通過在歸一化、漸進生長和正則化技術等領域進行一些改進,對原始StyleGAN進行了改進。
7. GAN應用
GANs是通用的,可以用于各種應用。
8. 圖像合成(Image synthesis)
圖像合成可能很有趣,并提供實際用途,例如機器學習(ML)訓練中的圖像增強或幫助創建藝術品和設計資產。
GANs可以用來創建以前從未存在過的圖像,這也許是GANs最出名的地方。 它們可以創造出看不見的新面孔、貓的形象和藝術品,等等。我在下面包含了一些高保真度的圖像,這些圖像是我從StyleGAN2支持的網站上生成的。轉到這些鏈接,自己做實驗,看看你從實驗中得到了什么圖像。
Zalando Research使用GANs生成基于顏色、形狀和紋理的時尚設計(在GANs中解開多個條件輸入)。
臉書研究的時尚++超越了創造時尚,而是推薦時尚改變建議:“什么是時尚?”
GANs還可以幫助訓練強化劑。例如,NVIDIA的GameGAN模擬游戲環境。
9. 圖像到圖像的轉換(Image-to-image translation)
圖像到圖像的轉換是一項計算機視覺任務,它將輸入圖像轉換到另一個領域(例如,顏色或風格),同時保留原始圖像內容。這也許是在藝術和設計中使用GANs最重要的任務之一。
Pix2Pix(具有條件對抗性網絡的圖像到圖像翻譯)是一種條件GAN,可能是最著名的圖像到圖片轉換GAN。然而,Pix2Pix的一個主要缺點是它需要成對的訓練圖像數據集。
使用條件對抗網絡的圖像到圖像轉換
研究了作為通用解決方案的條件對抗網絡圖像到圖像的轉換問題。這些網絡不僅學習從輸入圖像映射到輸出圖像,還要學習損失函數訓練此映射。 這使得應用相同的通用方法成為可能,對于傳統上需要非常不同的損失公式的問題。 我們證明了這種方法可以有效地合成來自標簽貼圖、從邊緣貼圖重建對象以及為圖像著色等其他任務。 事實上,自從 pix2pix 軟件發布以來 這篇論文,大量網民(其中不乏藝術家)紛紛發帖 他們自己對系統的實驗,進一步證明了其廣泛的適用性和易于采用,無需調整參數。如這項工作表明可以在不手工設計損失的情況下獲得合理的結果函數之一。
GAN中多個條件輸入的糾纏
在本文中,我們提出了一種在生成對抗性網絡(GANs)中解開多輸入條件影響的方法。特別是展示了為計算機輔助時裝設計控制生成的服裝圖像的顏色、紋理和形狀的方法。為了解開輸入屬性的影響,我們定制了具有一致性損失函數的條件GAN。 在實驗中一次調整一個輸入,并表明可以引導網絡生成新穎逼真的服裝圖像。此外還介紹了一個服裝設計過程,該過程估計現有服裝的輸入屬性,并使用生成器對其進行修改。
CycleGAN基于Pix2Pix構建,只需要未配對的圖像,在現實世界中更容易獲得。它可以將蘋果的圖像轉換為橙子,白天轉換為夜晚,馬的圖像轉換成斑馬…好吧。這些可能不是現實世界中的用例;從那時起,為藝術和設計開發了許多其他圖像對圖像的Gan。
現在你可以把你的自拍翻譯成漫畫、繪畫、卡通或任何其他你能想象到的風格。例如使用白盒卡通GAN(White-box CartoonGAN)將我的自拍變成卡通版。
著色不僅可以應用于黑白照片,還可以應用于藝術品或設計資產。在藝術品制作或UI/UX設計過程中,我們從輪廓或輪廓開始,然后上色。自動著色可以為藝術家和設計師提供靈感。
10. 文本到圖像(Text-to-Image)
我們已經看到了很多由GANs翻譯的圖像到圖像的例子。還可以使用單詞作為生成圖像的條件,這比使用類標簽作為條件更靈活、更直觀。
近年來,NLP與計算機視覺的結合已成為一個熱門的研究領域。以下是幾個例子:用于高分辨率圖像合成的StyleCLIP和Taming Transformers(StyleCLIP and Taming Transformers for High-Resolution Image Synthesis)。
展示了如何 (i)使用CNN來學習上下文豐富的圖像詞匯成分,進而 (ii) 利用變壓器有效地對其建模 高分辨率圖像中的構圖。 我們的方法很容易應用于 條件合成任務,其中既有非空間信息,如對象 類和空間信息(如分割)可以控制 生成的圖像。特別是,我們展示了關于 使用變壓器對百萬像素圖像進行語義引導合成并獲得 類條件 ImageNet 上自回歸模型的最新情況。
11. 超越圖像
GANs不僅可以用于圖像,還可以用于音樂和視頻。例如,Magenta項目中的GANSynth可以制作音樂。這里有一個有趣的GAN視頻動作轉移示例,名為“Everyone Dance Now”(YouTube | Paper)。我一直很喜歡看這段迷人的視頻,視頻中專業舞者的舞蹈動作被轉移到業余愛好者身上。
12. 其他GAN應用
以下是其他一些GAN應用程序:
圖像修復:替換圖像中缺失的部分。
圖像取消剪切或擴展:這可能有助于模擬虛擬現實中的相機參數。
無界:用于圖像擴展的生成對抗性網絡
圖像擴展模型在圖像編輯、計算攝影和計算機圖形學中有著廣泛的應用。雖然文獻中對圖像修復進行了廣泛的研究,但將最先進的修復方法直接應用于圖像擴展是一項挑戰,因為它們往往會生成語義不一致的模糊或重復像素。我們在生成對抗性網絡(GAN)的鑒別器中引入了語義條件,并在具有連貫語義和視覺上令人愉悅的顏色和紋理的圖像擴展方面取得了很好的結果。我們還在極限擴展中顯示了有希望的結果,例如全景生成。
使用生成對抗性網絡的照片真實單圖像超分辨率
盡管使用更快、更深的卷積神經網絡在單圖像超分辨率的準確性和速度方面取得了突破,但一個核心問題在很大程度上仍未解決:當在大規模放大因子下進行超分辨率時,如何恢復更精細的紋理細節?基于優化的超分辨率方法的行為主要由目標函數的選擇驅動。最近的工作主要集中在最小化均方重建誤差上。 由此產生的估計具有高峰值信噪比,但它們往往缺乏高頻細節,并且在感覺上不令人滿意,因為它們無法匹配在更高分辨率下預期的保真度。在本文中,我們提出了SRGAN,一種用于圖像超分辨率(SR)的生成對抗性網絡(GAN)。據我們所知,這是第一個能夠推斷4倍放大因子的照片逼真自然圖像的框架。為了實現這一點,我們提出了一個感知損失函數,該函數由對抗性損失和內容損失組成。對抗性損失使用鑒別器網絡將我們的解決方案推向自然圖像流形,該鑒別器被訓練來區分超分辨率圖像和原始照片逼真圖像。 此外使用了由感知相似性而不是像素空間中的相似性驅動的內容損失。 深度殘差網絡能夠在公共基準上從大量下采樣的圖像中恢復照片逼真的紋理。一項廣泛的平均意見得分(MOS)測試顯示,使用SRGAN在感知質量方面有非常顯著的提高。與使用任何最先進的方法獲得的MOS分數相比,使用SRGAN獲得的MOS得分更接近原始高分辨率圖像的MOS分數。
以下是一個如何利用GANs應對氣候變化的例子。地球智能引擎是FDL(前沿發展實驗室)2020項目,使用Pix2PixHD模擬洪水后一個地區的樣子。
地球智能引擎是FDL 2020項目,旨在幫助城市規劃者更有效、更直觀地溝通洪水風險,以支持氣候適應性基礎設施的發展。
我們通過將生成計算機視覺方法與氣候科學模型相結合,創建了第一個物理一致、真實感強的沿海洪水和重新造林可視化引擎。我們通過確保GAN生成圖像的物理一致性的新方法,以及使用多個視覺和氣候模型的模塊化方法來實現這一點。
我們已經看到了來自論文和研究實驗室的GAN演示。以及開源項目。這些天,我們開始看到使用GANs的真正商業應用程序。設計師熟悉使用圖標中的設計資源8。看看他們的網站,你會注意到GAN的應用程序:從Smart Upscaler、Generated Photos到Face Generator。
參考
- https://pyimagesearch.com/2021/09/13/intro-to-generative-adversarial-networks-gans/
總結
- 上一篇: 做小红书营销,如何注意发布低腰产品的图文
- 下一篇: 【第二讲】数据结构