DeepMind的TF Hub demo詮釋「史上最強 GAN 圖像生成器」
BigGAN 一經提出即引起了大量關注,被稱為「史上最強 GAN 圖像生成器」。今日,DeepMind 放出了 BigGAN 的拿來即用 TF Hub demo,可以在 Colab 上運行圖像生成和圖像插值任務。
本文引用地址:http://www.j9360.com/article/201811/394648.htm
TF Hub demo 地址:https://tfhub.dev/s?q=biggan
Colab 地址:https://colab.research.google.com/github/tensorflow/hub/blob/master/examples/colab/biggan_generation_with_tf_hub.ipynb#scrollTo=Cd1dhL4Ykbm7
ICLR 2019 大會將在明年 5 月 6 日于美國舉行,9 月 27 日論文提交截止后很多論文引起了大家的關注,其中就有一篇 GAN 生成圖像的論文。該研究生成圖像的目標和背景都高度逼真、邊界自然,并且圖像插值每一幀都相當真實,簡直稱得上「創造物種的 GAN」。該論文還引起了 Oriol Vinyals、Ian Goodfellow 的關注。上周,ICLR 2019 的論文評審結果出爐,評審們已經在論文的 openreview 頁面公布了他們的評論和分數。這篇 BigGAN 論文獲得了 8、7、10 的評分,三位評審人員對該論文給出了很高的評價,參見:https://openreview.net/forum?id=B1xsqj09Fm。
BigGAN 簡介
該論文出自 DeepMind,提出了一種新型 GAN 模型 BigGAN,該模型因其出色性能被稱為「史上最強 GAN 圖像生成器」。該研究的創新點是將正交正則化的思想引入 GAN,通過對輸入先驗分布 z 的適時截斷大大提升了 GAN 的生成性能,在 ImageNet 數據集下 Inception Score 竟然比當前最好 GAN 模型 SAGAN 提高了 100 多分(接近 2 倍)!
該研究展示了 GAN 可以從訓練規模中顯著獲益,并且能在參數數量很大和八倍批大小于之前最佳結果的條件下,仍然能以 2 倍到 4 倍的速度進行訓練。作者引入了兩種簡單的生成架構變化,提高了可擴展性,并修改了正則化方案以提升條件化(conditioning),這可論證地提升了性能。作為修改方法的副作用(side effect),該模型變得服從「截斷技巧」,這是一種簡單的采樣技術,允許對樣本多樣性和保真度進行精細控制。此外,該研究發現大規模 GAN 帶來的不穩定性,并對其進行經驗的描述。從這種分析中獲得的洞察表明,將一種新型的和已有的技術結合可以減少這種不穩定性,但要實現完全的訓練穩定性必須以顯著降低性能為代價。

由 BigGAN 生成的類條件樣本。

(a)增加截斷的效應。從左到右,閾值=2, 1.5, 1, 0.5, 0.04。(b)應用截斷和性能差的條件生成模型的飽和度偽影。

由 BigGAN 在 512x512 分辨率下生成的其它樣本。

BigGAN 生成網絡結構。
現在 DeepMind 終于放出了 BigGAN 的 TF Hub demo,讓我們來一探究竟。
教你怎么用 Colab Demo
這個 Colab Demo 的使用非常簡單,直接用 Chrome 瀏覽器打開 Colab 地址,登陸你的谷歌賬號,就可以開始耍了。
剛打開 Colab 時,我們可以看到代碼總體上分成四大塊,分別是 BigGAN Demo、Setup、Explore BigGAN samples of a particular category、Interpolate between BigGAN samples。前面兩塊給出了大致的使用說明,以及具體實現(從 TF Hub 加載預訓練模型、定義函數、創建會話和初始化變量等),之后兩塊才是重點,提供了特定類別的圖像樣本生成,以及指定兩個類別的圖像插值兩個任務演示。只需要點擊幾個按鈕,我們就能輕松啟動運行和修改參數,完全不需要修改代碼。

這個 Colab 的環境配置如下,打開「修改」-「筆記本設置」就可以看到。該 Colab 在 Python 2 環境和 GPU 上運行,這個不用修改,也不能修改,會報錯。

那么要怎么開始呢?很簡單,直接打開「代碼執行程序」-「全部運行」,就可以了。該 GPU 能提供 11G 左右的內存,運行過程中經常會出現內存不足的情況,如果沒有報錯,直接忽略就行。如果報錯了,就打開「代碼執行程序」-「重置所有代碼執行程序」,重新開始吧。
在執行過程中,我們不一定需要同時執行生成和插值兩個任務。為此,我們可以選中 Explore BigGAN samples of a particular category 這個單元格,然后打開「代碼執行程序」-「運行當前單元格之前的所有單元格」,然后再分別執行之后的其中一個單元格,這樣也能避免內存不足的問題。
在大部分情況下,內存不足并沒有導致報錯。在啟動一個任務后,大概等待 10 秒左右的時間,我們就可以看到生成和插值的結果。

評論