您當前的位置:首頁 > 書法

草圖秒變風景照,英偉達神筆馬良 GauGAN 終於開源了

作者:由 新智元 發表于 書法時間:2019-04-17

馬良的圖片怎麼畫

【新智元導讀】

英偉達最近釋出的影象合成 “黑魔法” GauGAN 效果令人驚歎,現在,相關程式碼和預訓練模型終於公開了。

還記得英偉達在 GTC 2019 披露的令人驚歎的影象生成器 GauGAN 嗎?僅憑几根線條,草圖秒變風景照,自動生成照片級逼真影象的技術堪比神筆馬良。

草圖秒變風景照,英偉達神筆馬良 GauGAN 終於開源了

草圖秒變風景照,英偉達神筆馬良 GauGAN 終於開源了

圖中,左邊是人類操作員畫的,右邊是 AI 直接 “簡單加上幾筆細節” 後生成的。在普通人看來,右邊的影象幾乎毫無破綻,看不出這並非一張風光照片,而是 AI 生成的虛擬海灘。

草圖秒變風景照,英偉達神筆馬良 GauGAN 終於開源了

草圖秒變風景照,英偉達神筆馬良 GauGAN 終於開源了

從圖中我們可以看出,GauGAN 並不是像 Photoshop 裡貼一個圖層那樣,簡單的把圖形貼上去,而是根據相鄰兩個圖層之間的對應關係對邊緣進行調整。比如石頭在水裡的倒影應該是什麼樣的、被瀑布沖刷的山石應該是怎樣的狀態、近處的山和遠處的山之間的層次應該如何表現…

請看下面的 demo:

草圖秒變風景照,英偉達神筆馬良 GauGAN 終於開源了

英偉達GauGAN demo

https://www。zhihu。com/video/1101905174322315264

相關閱讀:

英偉達再出黑魔法GauGAN:憑藉幾根線條,草圖秒變風景照

GauGAN 背後的技術來自來自英偉達和 MIT 的研究團隊。這個團隊,包括來自英偉達的 Ting-Chun Wang、劉明宇(Ming-Yu Liu),Taesung Park (當時在英偉達實習),以及來自 MIT 的朱儁彥(Jun-Yan Zhu)。

草圖秒變風景照,英偉達神筆馬良 GauGAN 終於開源了

論文地址:

https://

arxiv。org/pdf/1903。0729

1。pdf

他們提出一種名為

“空間自適應歸一化”(SPADE)

的語義影象合成技術,論文已經被 CVPR 2019 接收,併入選 oral paper。

近日,SPADE 的程式碼終於釋出,包括預訓練模型等,有興趣的同學趕緊來試試復現吧。

SPADE:空間自適應歸一化

GauGAN 是基於名為 “空間自適應歸一化”(spatially-adaptive normalization, SPADE) 技術實現的。該方法透過一個簡單但有效的層,在

給定輸入語義佈局

的情況下合成照片級真實的影象。

以前的方法直接將語義佈局作為輸入提供給網路,然後透過卷積、歸一化和非線性層進行處理。我們證明了以前的方法不是最優的,因為歸一化層往往會消除語義資訊。

為了解決這個問題,我們建議使用輸入佈局,透過空間自適應的、學習的變換來調整歸一化層中的啟用。

在幾個具有挑戰性的資料集上的實驗表明,與現有方法相比,SPADE 在視覺保真度和與輸入佈局的對齊方面具有優勢。最後,我們的模型允許使用者輕鬆地控制合成結果的樣式和內容,以及建立多模態的結果。

方法簡述

草圖秒變風景照,英偉達神筆馬良 GauGAN 終於開源了

在許多常見的歸一化技術中,如 Batch Normalization (Ioffe et al。, 2015),在實際歸一化步驟之後會應用到學習的 affine layers (如在 PyTorch 和 TensorFlow) 中。

在 SPADE 中,affine layers 是從語義分割對映中學習的。這類似於條件歸一化 (De Vries et al。, 2017 和 Dumoulin et al。, 2016),除了學習的 affine parameters,還需要空間自適應,這意味著我們將對每個語義標籤使用不同的縮放和偏差。

使用這種簡單的方法,語義訊號可以作用於所有層的輸出,而不受可能丟失這些資訊的歸一化過程的影響。此外,由於語義資訊是透過 SPADE 層提供的,所以可以使用隨機的潛在向量作為網路的輸入,從而實現操縱所生成的影象的樣式。

與現有方法的比較

草圖秒變風景照,英偉達神筆馬良 GauGAN 終於開源了

SPADE 在 COCO-Stuff 資料集上的效能優於現有方法。因為具有更多的場景和標籤,COCO-Stuff 資料集比 Cityscapes 資料集更具挑戰性。上面的圖片比較了 GRN、pix2pixhd 以及 SPADE 的效果。

應用到 Flickr 圖片

草圖秒變風景照,英偉達神筆馬良 GauGAN 終於開源了

由於 SPADE 適用於不同的標籤,因此可以使用現有的語義分割網路對其進行訓練,學習從語義對映到照片的反向對映。上面這些圖片是由 SPADE 對從 Flickr 上抓取的 40k 張圖片進行訓練生成的。

程式碼開源

安裝

克隆這個 repo

git

clone

https

//

github

com

/

NVlabs

/

SPADE

git

cd

SPADE

/

這段程式碼需要 PyTorch 1。0 和 python 3+。請透過以下方式安裝依賴項

pip install -r requirements。txt

程式碼還需要同步的 Synchronized-BatchNorm-PyTorch rep。

cd models/networks/

git clone https://github。com/vacancy/Synchronized-BatchNorm-PyTorch

cp Synchronized-BatchNorm-PyTorch/sync_batchnorm 。 -rf

cd 。。/。。/

為了重現論文中報告的結果,你需要一臺有 8 個 V100 GPU 的 NVIDIA DGX1 機器。

資料集準備

對於 COCO-Stuff、Cityscapes 或 ADE20K,必須預先下載資料集。請在相關網頁下載。

準備 COCO-Stuff 資料集。

影象、標籤和例項對映應該與資料集 /coco_stuff/ 中的目錄結構相同。特別地,我們使用了一個例項對映,它結合了 “things instance map” 和 “stuff label map” 的邊界。我們使用了一個簡單的指令碼資料集 /coco_generate_instance_map。py。請使用 pip install pycocotools 安裝 pycocotools,並參考指令碼生成例項對映。

準備 ADE20K 資料集。

解壓資料集後,將 jpg 影象檔案 ADEChallengeData2016/images/ 和 png 標籤檔案 ADEChallengeData2016/annotatoins/ 放在同一個目錄中。

使用預訓練模型生成影象

資料集準備好後,就可以使用預訓練模型生成影象。

1、從 Google Drive Folder 下載預訓練模型的 tar,儲存在 ‘checkpoint /‘中,然後執行

cd checkpoints

tar xvf checkpoints。tar。gz

cd 。。/

2、使用預訓練模型生成影象

python test。py ——name [type]_pretrained ——dataset_mode [dataset] ——dataroot [path_to_dataset]

3、輸出影象預設儲存在。/results/[type]_pretrained/。

訓練新模型

可以使用以下命令訓練新模型。

1、準備資料集

要在論文中的資料集上訓練,可以下載資料集並使用 ——dataset_mode 選項,該選項將選擇載入 BaseDataset 上的哪個子類。對於自定義資料集,最簡單的方法是使用。/data/custom_dataset。透過指定選項 ——dataset_mode custom,以及 ——label_dir [path_to_labels] ——image_dir [path_to_images]。你還需要指定更多選項,例如 ——label_nc (資料集中標籤類的數目),——contain_dontcare_label (指定是否有一個未知的標籤),或者 ——no_instance (表示地圖資料集沒有例項)。

2、訓練

# To train on the Facades or COCO dataset, for example。

python train。py ——name [experiment_name] ——dataset_mode facades ——dataroot [path_to_facades_dataset]

python train。py ——name [experiment_name] ——dataset_mode coco ——dataroot [path_to_coco_dataset]

# To train on your own custom dataset

python train。py ——name [experiment_name] ——dataset_mode custom ——label_dir [path_to_labels] —— image_dir [path_to_images] ——label_nc [num_labels]

你還可以指定許多選項,請使用 python train。py ——help。

測試

測試與測試預訓練模型相似

python test。py ——name [name_of_experiment] ——dataset_mode [dataset_mode] ——dataroot [path_to_dataset]

GitHub 地址:

NVlabs/SPADE

新智元 · AI_era

每日推送 AI 領域前沿學術解讀、AI 產業最新資訊

戳右上角【+ 關注】↗↗

喜歡請分享、點贊吧

標簽: dataset  SPADE  歸一化  name  語義