單張圖像就可以訓(xùn)練GAN!Adobe改良圖像生成方法 | 已開源
十三 發(fā)自 凹非寺
量子位 報道 | 公眾號 QbitAI
數(shù)據(jù)集太小了,無法訓(xùn)練GAN?試試從單個圖像入手吧。
去年谷歌就提出了SinGAN,是第一個拿GAN在單幅自然圖像學(xué)習(xí)的非條件生成模型(ICCV 2019最佳論文)。
而最近,來自Adobe和漢堡大學(xué)的研究人員,對這個方法做了改進(jìn),探討了幾種讓GAN在單幅圖像提高訓(xùn)練和生成能力的機(jī)制。
研究人員將改進(jìn)的模型稱作ConSinGAN。
那么,先來看下ConSinGAN的效果吧。
上圖左側(cè)是用來訓(xùn)練的單個圖像,右側(cè)是利用ConSinGAN訓(xùn)練后生成的復(fù)雜全局結(jié)構(gòu)。
可以看出效果還是比較逼真。
當(dāng)然,ConSinGAN還可以用來處理許多其他任務(wù),例如圖像超分辨率( image super-resolution)、圖像動畫(image animation),以及圖像去霧(image dehazing)。
下面兩張就是它在圖像協(xié)調(diào)(image harmonization)和圖像編輯(image editing)上的效果。
ConSinGAN是怎么做到的呢?
訓(xùn)練架構(gòu)優(yōu)化:并行的SinGAN
首先,我們先來看下SinGAN的訓(xùn)練過程。
SinGAN在圖像中訓(xùn)練幾個單獨(dú)的生成網(wǎng)絡(luò),下圖便是第一個生成器,也是唯一從隨機(jī)噪聲生成圖像的無條件生成器。
△在SinGAN中訓(xùn)練的第一個生成器
這里的判別器從來不將圖像看做一個整體,通過這種方法,它就可以知道“真實(shí)的”圖像補(bǔ)丁(patch)是什么樣子。
這樣,生成器就可以通過生成,在全局來看不同,但僅從補(bǔ)丁來看卻相似的圖像,來達(dá)到“欺詐”的目的。
在更高分辨率上工作的生成器,將前一個生成器生成的圖像作為輸入,在此基礎(chǔ)上生成比當(dāng)前還要高分辨率的圖像。
所有的生成器都是單獨(dú)訓(xùn)練的,這意味著在訓(xùn)練當(dāng)前生成器時,所有以前的生成器的權(quán)重都保持不變。
這一過程如下圖所示。
而在Adobe與漢堡大學(xué)的研究人員發(fā)現(xiàn),在給定的時間內(nèi)僅能訓(xùn)練一個生成器,并將圖像(而不是特征圖)從一個生成器傳輸?shù)较乱粋€生成器,這就限制了生成器之間的交互。
因此,他們對生成器進(jìn)行了端到端的訓(xùn)練,也就是說,在給定時間內(nèi)訓(xùn)練多個生成器,每個生成器將前一個生成器生成的特征(而不是圖像)作為輸入。
這也就是ConSinGAN名字的由來——并行的SinGAN,過程如下圖所示。
然而,采取這樣的措施又會面臨一個問題,也就是過擬合。這意味著最終的模型不會生成任何“新”圖像,而是只生成訓(xùn)練圖像。
為了防止這種現(xiàn)象發(fā)生,研究人員采取了2個措施:
- 在任意給定時間內(nèi),只訓(xùn)練一部分生成器;
- 對不同的生成器采用不同的學(xué)習(xí)率(learning rate)。
下圖就展示了使用這兩種方法實(shí)現(xiàn)的模型。默認(rèn)情況下,最多同時訓(xùn)練3個生成器,并對較低的生成器,分別將學(xué)習(xí)率調(diào)至1/10和1/100。
在這個過程中,有一個有趣的現(xiàn)象。
如果對較低的生成器采用較高的學(xué)習(xí)率,那么生成的圖像質(zhì)量會高些,但是差異性較弱。
相反,如果對較低的生成器采用較小的學(xué)習(xí)率,那么生成圖像的差異性會豐富一些。如下圖所示。
代碼已開源
ConSinGAN的代碼已經(jīng)在GitHub上開源。
老規(guī)矩,先介紹一下運(yùn)行所需要的環(huán)境:Python 3.5;Pytorch 1.1.0。
安裝也非常簡單:
pip?install?-r?requirements.txt
若要使用論文中的默認(rèn)參數(shù)訓(xùn)練模型:
python?main_train.py?--gpu?0?--train_mode?generation?--input_name?Images/Generation/angkorwat.jpg
在英偉達(dá)GeForce GTX 1080Ti上訓(xùn)練一個模型大約需要20-25分鐘。
不同的學(xué)習(xí)率和訓(xùn)練階段數(shù)量,會影響實(shí)驗(yàn)的結(jié)果,研究人員推薦二者的默認(rèn)值分別是0.1和6。
當(dāng)然也可以修改學(xué)習(xí)率:
python?main_train.py?--gpu?0?--train_mode?generation?--input_name?Images/Generation/colusseum.jpg?--lr_scale?0.5
修改訓(xùn)練階段的數(shù)量:
python?main_train.py?--gpu?0?--train_mode?generation?--input_name?Images/Generation/colusseum.jpg?--train_stages?7
當(dāng)然,模型也可以用來處理“圖像協(xié)調(diào)”和“圖像編輯”等任務(wù),詳情可參閱GitHub。
傳送門
論文地址:
https://arxiv.org/pdf/2003.11512.pdf
GitHub項(xiàng)目地址:
https://github.com/tohinz/ConSinGAN
- 商湯林達(dá)華萬字長文回答AGI:4層破壁,3大挑戰(zhàn)2025-08-12
- 商湯多模態(tài)大模型賦能鐵路勘察設(shè)計(jì),讓70年經(jīng)驗(yàn)“活”起來2025-08-13
- 以“具身智能基座”為核,睿爾曼攜全產(chǎn)品矩陣及新品亮相2025 WRC2025-08-11
- 哇塞,今天北京被機(jī)器人人人人人塞滿了!2025-08-08