(附論文&代碼)這個GAN沒見過豬,卻能把狗變成豬
點擊左上方藍(lán)字關(guān)注我們

轉(zhuǎn)載自 | 量子位
不用成千上萬張目標(biāo)圖片訓(xùn)練,就能讓GAN生成你想要的圖片,有可能嗎?
還真有可能!
來自特拉維夫大學(xué)和英偉達(dá)的研究人員成功地盲訓(xùn)出領(lǐng)域自適應(yīng)的圖像生成模型——StyleGAN-NADA。
也就是只需用簡單地一個或幾個字描述,一張目標(biāo)領(lǐng)域的圖像也不需要,StyleGAN-NADA就能在幾分鐘內(nèi)訓(xùn)練出你想要的圖片:
比如現(xiàn)在在幾張狗狗的基礎(chǔ)圖片上輸入“Sketch”,不到1分鐘,一張張草圖風(fēng)格狗的圖片就出來了。(視頻沒有聲音可放心“食用”)
00:41
再比如在人像上給出文字“Pixar”,就能生成皮克斯風(fēng)格的圖片:

各種人像風(fēng)格都可以:

甚至把狗變成豬也行:

問題來了,AI不可能生成它完全沒有見過的照片,但是又不給它參考照片,那怎么滿足要求呢?
基于CLIP
答案就是借助CLIP的語義能力。
CLIP是OpenAI提出的根據(jù)文字生成圖片的DALL模型的圖像分類模塊,可以根據(jù)文字描述給圖片的匹配程度打分。
今年年初,就有人用CLIP做出了一個用“大白話”檢索圖片的功能,效果還挺驚艷的。
△輸入“The word love written on the wall”的搜索結(jié)果
總的來說,StyleGAN-NADA的訓(xùn)練機(jī)制包含兩個緊密相連的生成器Gfrozen和Gtrain,它倆都使用了StyleGAN2的體系結(jié)構(gòu),并共享同一個映射網(wǎng)絡(luò),因此也具有同一個隱空間(latent space)和隱碼(latent code),所以它們在最開始生成的圖像是一樣的。

首先使用在單個源域(例如人臉、狗、教堂或汽車數(shù)據(jù)集)上預(yù)訓(xùn)練的模型權(quán)重初始化這兩個生成器。
由于最終目標(biāo)是生成一個風(fēng)格不一樣的圖像,那就要更改其中一個成對生成器的域,同時保持另一個作為參考域。
具體的話就是Gfrozen的權(quán)重保持不變,而Gtrain的權(quán)重通過優(yōu)化和迭代層凍結(jié)(iterative layer-freezing)方案進(jìn)行修改。
而Gtrain的域在通過用戶提供的文本方向進(jìn)行更改(shift)的同時,會保持共享隱空間(latent space)。
具體怎么“更改”呢?
這就用到了一組基于CLIP的損失(loss)和“分層凍結(jié)”(layer-freezing)方案。
該方案可以自適應(yīng)地確定在每次迭代訓(xùn)練中最相關(guān)的子層、并“凍結(jié)”其余層來提高訓(xùn)練穩(wěn)定性保證效果。下面就詳細(xì)介紹一下這兩個方法。
基于CLIP的損失(loss)
StyleGAN-NADA依靠預(yù)先訓(xùn)練的CLIP作目標(biāo)域的唯一監(jiān)督來源。為了有效地從CLIP中提取“知識”,一共用了三種損失算法:
(1)負(fù)責(zé)確定在每次迭代中訓(xùn)練哪個子集層的全局目標(biāo)損失 (Global CLIP loss);
(2)旨在保持多樣性的局部定向損失 (Directional CLIP loss);
(3)以及防止圖像生成不必要的語義偽影的嵌入范數(shù)損失 (Embedding-norm Loss)。
△ 局部定向損失要求源/目標(biāo)圖像/文字的CLIP-space方向一致
“分層凍結(jié)”(layer-freezing)
此機(jī)制分為兩階段:
(1)選層階段,保持所有網(wǎng)絡(luò)權(quán)重不變并對一組隱碼進(jìn)行優(yōu)化,然后選擇變化最顯著的一層(優(yōu)化使用目標(biāo)域文本描述驅(qū)動的全局CLIP損失進(jìn)行);
(2)優(yōu)化階段,“解凍”選定層的權(quán)重,然后使用定向CLIP損失進(jìn)行優(yōu)化和更改。

大多數(shù)訓(xùn)練只需幾分鐘就可完成
首先,該模型可以實現(xiàn)范圍廣泛的域外自適應(yīng),從紋理變化到大的形狀修改,從現(xiàn)實到魔幻風(fēng)格……甚至包括一些收集高質(zhì)量數(shù)據(jù)成本很高的目標(biāo)域。
其次,所有的這些圖片的生成都只需給一個簡單的文字描述,除了極端情況,大多數(shù)訓(xùn)練只需幾分鐘就能完成。
對于基于紋理的修改目標(biāo),該模型通常需要300次迭代,batch size為2,在一個NVIDIA V100 GPU上訓(xùn)練大約3分鐘。在某些情況下(比如從“照片”到“草圖”),訓(xùn)練只需不到一分鐘的時間。
然后,所有的實驗用的就是這個完整當(dāng)然模型,沒有添加任何latent mapper。研究人員發(fā)現(xiàn),對于純粹是基于樣式的圖像生成,模型需要跨所有層進(jìn)行訓(xùn)練,比如下面這種:

而對于較小的形狀修改,則只需訓(xùn)練大約2/3數(shù)量的層數(shù)就能折中保持訓(xùn)練時間和效果:

最后,將該模型與StyleCLIP(結(jié)合了StyleGAN和CLIP的域內(nèi)圖像編輯模型)、以及只用了Gfrozen生成器的模型對比發(fā)現(xiàn),只有StyleGAN-NADA可以實現(xiàn)目標(biāo)。

再將零樣本的StyleGAN-NADA與一些少樣本的圖像生成模型對比發(fā)現(xiàn),別的都要么過擬合要么崩潰(MineGAN更是只記住了訓(xùn)練集圖像),只有StyleGAN-NADA在保持多樣性的情況下成功生成(但它也有偽影出現(xiàn))。

下面是消融實驗:
△ 通過訓(xùn)練latent mapper可以進(jìn)一步提高生成質(zhì)量
ps.在論文的最后,研究人員表示:
由于這項技術(shù),也許在不久的將來,這類圖像生成的工作將不再受到訓(xùn)練數(shù)據(jù)的約束,而只取決于我們的創(chuàng)造力。
論文地址:
https://arxiv.org/abs/2108.00946
GitHub地址:
https://github.com/rinongal/StyleGAN-nada
參考鏈接:
https://stylegan-nada.github.io/
END
整理不易,點贊三連↓

