GAN能合成2k高清圖了!還能手動改細節 | 論文+代碼,英偉達出品
夏乙 安妮 編譯整理
量子位 出品 | 公眾號 QbitAI
輸入一張語義地圖——
就能為你還原整個世界。
輸入一張親媽都認不出來的語義標註圖——
為你合成一張真實的人臉。
聰明的你可能已經發現,這個名為pix2pixHD的神奇功能,可以通過條件生成式對抗網路(條件GAN),將一張語義標註的圖像還原成現實世界的樣子。pix2pixHD合成的圖像解析度可高達2048x1024,和CRN、pix2pix等其他圖像合成工具相比可以發現,pix2pixHD的效果顯然領先了好幾條街!
有趣的是,連李飛飛高徒、現特斯拉人工智慧與自動駕駛視覺部門主管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,都可以上手試一試:https://affinelayer.com/pixsrv/index.html
還有用它來把塗鴉變成人臉的,用它做色彩搭配的,非常熱鬧。
如今,有了高清版的pix2pixHD,同樣開源了代碼,不知道又要玩出什麼新花樣了。
期待~
相關鏈接
pix2pixHD
主頁:https://tcwang0509.github.io/pix2pixHD/
代碼:https://github.com/NVIDIA/pix2pixHD
論文:https://arxiv.org/abs/1711.11585
pix2pix
主頁:https://phillipi.github.io/pix2pix/
Jun-Yan Zhu
主頁:http://people.eecs.berkeley.edu/~junyanz/
—完—
歡迎大家關注我們的專欄:量子位 - 知乎專欄
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。
量子位 QbitAI · 頭條號簽約作者
?"?" ? 追蹤AI技術和產品新動態
推薦閱讀:
※《面經篇》一個深度腦殘的實習面試經歷
※Mask R-CNN源代碼終於來了,還有它背後的物體檢測平台Detectron
※【小林的OpenCV基礎課 番外】Spyder下配置OpenCV
※【博客存檔】TensorFlow之深入理解VGGResidual Network