GAN能合成2k高清圖了!還能手動改細節 | 論文+代碼,英偉達出品

夏乙 安妮 編譯整理

量子位 出品 | 公眾號 QbitAI

輸入一張語義地圖——

就能為你還原整個世界。

輸入一張親媽都認不出來的語義標註圖——

為你合成一張真實的人臉。

聰明的你可能已經發現,這個名為pix2pixHD的神奇功能,可以通過條件生成式對抗網路(條件GAN),將一張語義標註的圖像還原成現實世界的樣子。pix2pixHD合成的圖像解析度可高達2048x1024,和CRN、pix2pix等其他圖像合成工具相比可以發現,pix2pixHD的效果顯然領先了好幾條街!

pix2pixHD與pix2pix、CRN對比圖

有趣的是,連李飛飛高徒、現特斯拉人工智慧與自動駕駛視覺部門主管Andrej Karpathy也在Twitter上大呼「非常鵝妹子嚶!」

到底是怎麼一回事?上車,我們前去看看論文。

效果驚人

pix2pixHD具有通過語義標註的圖像還原到現實世界的能力,並且還能根據需要輕鬆修改和搭配圖像。你可以一鍵更換車輛的顏色和型號,改變街道的類型,甚至還可以移除圖像內景物甚至增加圖像中的樹木。

一張語義地圖背後,是豐富的現實世界。

輸入的語義地圖

輸出的不同合成場景

pix2pixHD不僅可以將街景語義圖轉化為真實圖像,甚至還可以轉化人臉。

和街景類似,根據語義標註的人臉圖像,我們可以選擇組合人物的眼睛、眉毛和鬍鬚等五官特徵,還能在標註圖上調整五官的大小。

無論是在街景中增加和減少物體,還是改變人臉的五官,都是通過一個可編輯的界面完成的。這個界面神似眾多穿衣搭配的Falsh小遊戲的界面,實現了「一鍵換車」和「一鍵換眼」,長鬍子、改膚色,也都是點一下滑鼠的事。

只能搞定256×256的pix2pix,怎樣變成這個「鵝妹子嚶」pix2pixHD的呢?我們來看看技術細節。

網路架構

要生成高解析度圖片,直接用pix2pix的架構是肯定不行的。作者們在論文中說,他們試過了,訓練不穩定,生成圖片的質量也不如人意。

還是得在它的基礎上,進行改造。

於是,他們在pix2pix的基礎上,增加了一個「從糙到精生成器(coarse-to-

fine generator)」、一個多尺度鑒別器架構和一個健壯的對抗學習目標函數。

從糙到精生成器

生成器包含G1和G2兩個子網路,G1是全局生成網路,G2是局部增強網路。兩個子網路結合起來使用,結構如下圖所示:

其中G1計算的解析度是1024×512,而G2將輸出圖像的解析度擴大到4倍,也就是橫向縱向分別乘以2,2048×1024。如果想生成解析度更高的圖片,可以再加一個同樣的局部增強網路,輸出4096×2048的圖。

在訓練這個生成器時,先訓練全局生成器,然後訓練局部增強器,然後整體微調所有網路的參數。

多尺度鑒別器

高解析度圖片不僅生成起來難,讓計算機鑒別真假也難。

要鑒別高解析度圖像是真實的還是合成的,就需要一個感受野很大的鑒別器,也就是說,要麼用很深的網路,要麼用很大的卷積核。這兩種方法都會增加網路容量,導致容易過擬合,訓練時也都會佔用更多內存。

跟生成器搶內存?不行不行。於是這篇論文的作者們提出了一種新思路:多尺度鑒別器,也就是用3個鑒別器,來鑒別不同解析度圖片的真假。

如上圖所示,這三個鑒別器D1、D2和D3有著相同的網路結構,但是在不同尺寸的圖像上進行訓練。通過對高解析度圖像進行兩次降低採樣,生成3種大小的圖像,然後訓練鑒別器D1、D2和D3分別來辨別這3種尺寸圖像的真假。

最粗糙尺度上的鑒別器感受野最大,負責讓圖像全局和諧,最精細尺度的鑒別器負責引導生成器生成出精緻的細節。

改良損失函數

在Conditional GAN的目標函數LGAN(G, D)

的基礎上,pix2pixHD又基於鑒別器引入了一個特徵匹配損失,生成器訓練之後所生成的各種尺寸圖像越來越自然,損失在也隨之穩定。

將鑒別器Dk第i層的特徵提取器表示為D(i)k,特徵匹配損失函數可以表示如下:

完整的目標函數如下,包含GAN損失和特徵匹配損失:

從語義標記圖到合成圖像

圖像生成經常用到語義標記圖(semantic lable maps),不過本文作者們認為,實例圖(instance map)里最重要信息,並沒有包含在語義標記圖中。

比如說上圖a里,所有汽車連成一體,無法分開,這就需要先計算出如上圖b所示的實例邊界圖(instance boundary map)。

用了實例邊界圖,生成的圖像就不會出現下圖a中兩輛汽車細節不清楚的情況了。

解決了語義標記圖自身的缺陷之後,還有一個問題:我們前面所說的圖上每個物體都能單獨控制,是怎樣實現的呢?

在pix2pixHD中,作者們為了生成低維特徵,訓練了一個編碼網路E來尋找和圖中每個實例的真實目標相對應的低維向量。另外,還使用了一個標準的編碼器-解碼器組成的編碼架構。

為了確保每個實例內部的特徵都協調,作者們在編碼器的輸出上添加了一個實例級平均池化層,來計算實例的平均特徵。然後這個將這個平均特徵廣播到實例中的所有像素位置上,如下圖所示:

從pix2pix到HD

這個pix2pixHD,從名字到架構,都可以說是pix2pix的升級版。

這篇新論文主要來自英偉達,不過混入了一位加州大學伯克利分校的作者Jun-Yan Zhu,清華CMU伯克利系列學霸、貓奴、也是pix2pix的二作。

他所在的實驗室,在圖像合成和風格遷移領域貢獻了大量論文,還非常良心地都開源了代碼。

其中,pix2pix更是流傳甚廣,比如說不少廣為人知的線稿變照片demo,都是基於他們的pix2pix,其中最知名&好玩的,大概要數隨手就能畫只貓的edges2cats。

畫貓的demo大受歡迎,以至於後來被網友們玩出了各種各樣的新高度,量子位之前整理的靈魂畫師合輯,就收集了其中不少「傑作」。

同樣基於pix2pix,畫鞋畫包畫房子的都有,這裡有一系列demo,都可以上手試一試:affinelayer.com/pixsrv/

還有用它來把塗鴉變成人臉的,用它做色彩搭配的,非常熱鬧。

如今,有了高清版的pix2pixHD,同樣開源了代碼,不知道又要玩出什麼新花樣了。

期待~

相關鏈接

pix2pixHD

主頁:tcwang0509.github.io/pi

代碼:github.com/NVIDIA/pix2p

論文:arxiv.org/abs/1711.1158

pix2pix

主頁:phillipi.github.io/pix2

Jun-Yan Zhu

主頁:people.eecs.berkeley.edu

—完—

歡迎大家關注我們的專欄:量子位 - 知乎專欄

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。

量子位 QbitAI · 頭條號簽約作者

?"?" ? 追蹤AI技術和產品新動態

推薦閱讀:

《面經篇》一個深度腦殘的實習面試經歷
Mask R-CNN源代碼終於來了,還有它背後的物體檢測平台Detectron
【小林的OpenCV基礎課 番外】Spyder下配置OpenCV
【博客存檔】TensorFlow之深入理解VGGResidual Network

TAG:生成对抗网络GAN | 图像处理 | 计算机视觉 |