【內附資源】Adobe 工程師開發只用「一張圖」就能訓練 GAN 的機器學習技術

【為什麼我們要挑選這篇文章】著名網站 This person do not exist(這個人不存在)即是使用 GAN 技術製成,但要做出假以亂真的圖片,訓練 GAN 需要一定數量的數據集做訓練;對於數據量偏少的開發者,真的就只能乾瞪眼放棄嗎?

Adobe 工程師開發新型態 GAN 技術,一張圖也能成功訓練!(責任編輯:陳伯安)

本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請聯繫出處

作者:量子位/十三

數據集太小了,無法訓練 GAN?試試從ㄧ個圖像入手吧。

去年谷歌就提出了 SinGAN,是第一個拿 GAN 在單幅自然圖像學習的非條件生成模型(ICCV 2019 最佳論文)。

而最近,來自 Adobe 和德國漢堡大學(University of Hamburg)的研究人員,對這個方法做了改進,探討了幾種 讓 GAN 在單幅圖像提高訓練和生成能力的機制

研究人員將改進的模型稱作 ConSinGAN。

那麼,先來看ㄧ下 ConSinGAN 的效果吧。

上圖左側是用來訓練的單個圖像,右側是利用 ConSinGAN 訓練後生成的複雜全局結構。

可以看出效果還是比較逼真。

當然,ConSinGAN 還可以用來處理許多其他任務,例如圖像超分辨率(image super-resolution)、圖像動畫(image animation),以及圖像去霧(image dehazing)。

下面兩張就是它在圖像協調(image harmonization)和圖像編輯(image editing)上的效果。

ConSinGAN 是怎麼做到的?

首先,我們先來看下 SinGAN 的訓練過程。

SinGAN 在圖像中訓練幾個單獨的生成網路,下圖便是第一個生成器,也是唯一從隨機噪聲生成圖像的無條件生成器。

在 SinGAN 中訓練的第一個生成器

這裡的判別器從來不將圖像看做一個整體,通過這種方法,它就可以知道「真實的」圖像補丁(patch)是什麼樣子。

這樣,生成器就可以通過生成,在全局來看不同,但僅從補丁來看卻相似的圖像,來達到「欺詐」的目的。

在更高分辨率上工作的生成器,將前一個生成器生成的圖像作為輸入,在此基礎上生成比當前還要高分辨率的圖像。

所有的生成器都是單獨訓練的,這意味著在訓練當前生成器時,所有以前的生成器的權重都保持不變。

這一過程如下圖所示。

而在 Adobe 與德國漢堡大學的研究人員發現,在給定的時間內僅能訓練一個生成器,並將圖像(而不是特徵圖)從一個生成器傳輸到下一個生成器,這就限制了生成器之間的交互

因此,他們對生成器進行了端到端的訓練,也就是說,在給定時間內訓練多個生成器,每個生成器將前一個生成器生成的特徵(而不是圖像)作為輸入。

這也就是 ConSinGAN 名字的由來——並行的 SinGAN,過程如下圖所示。

然而,採取這樣的措施又會面臨一個問題,也就是過擬合。 這意味著最終的模型不會生成任何「新」圖像,而是只生成訓練圖像。

如何避免 ConSinGAN 無法生成新圖的 bug?

為了防止這種現象發生,研究人員採取了 2 個措施:

在任意給定時間內,只訓練一部分生成器;對不同的生成器採用不同的學習率(learning rate)。

下圖就展示了使用這兩種方法實現的模型。默認情況下,最多同時訓練 3 個生成器,並對較低的生成器,分別將學習率調至 1/10 和 1/100。

在這個過程中,有一個有趣的現象。

如果對較低的生成器採用較高的學習率,那麼生成的圖像質量會高些,但是差異性較弱。

相反,如果對較低的生成器採用較小的學習率,那麼生成圖像的差異性會豐富一些。如下圖所示。

程式碼已在 GitHub 上開源

ConSinGAN 的程式碼已經在 GitHub 上開源。

老規矩,先介紹一下運行所需要的環境:Python 3.5;Pytorch 1.1.0。

安裝也非常簡單:

pip install -r requirements.txt

若要使用論文中的默認參數訓練模型:

python main_train.py –gpu 0 –train_mode generation –input_name Images/Generation/angkorwat.jpg

在英偉達 GeForce GTX 1080Ti 上訓練一個模型大約需要 20 – 25 分鐘。

不同的學習率和訓練階段數量,會影響實驗的結果,研究人員推薦二者的默認值分別是 0.1 和 6。

當然也可以修改學習率:

python main_train.py –gpu 0 –train_mode generation –input_name Images/Generation/colusseum.jpg –lr_scale 0.5

修改訓練階段的數量:

python main_train.py –gpu 0 –train_mode generation –input_name Images/Generation/colusseum.jpg –train_stages 7

當然,模型也可以用來處理「圖像協調」和「圖像編輯」等任務,詳情可參閱 GitHub。

資源傳送門

論文

GitHub 連結

(本文經 AI 新媒體 量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈单张图像就可以训练 GAN!Adobe 改良图像生成方法 | 已开源 〉,首圖來源: 截自量子位 。)

你可能感興趣

Python 弱掉了!中國工程師開發「文言文程式語言」,讓你的 coding 充滿文學情懷
在家從零自學沒問題!22 歲數據工程師大推 3 本必看的機器學習入門書
矽谷神話不再!為何工程師「從新創逃到大廠」一樣面臨裁員?


科技報橘 LinkedIn 上線!

最新科技產業動態、技術新突破、專業職能技巧提升 ....... 鎖定 TO  LinkedIn 專業品牌,提升職能與產業 Know-how,躋身產業菁英之列 https://www.linkedin.com/showcase/techorange

點關鍵字看更多相關文章: