1. 程式人生 > >Generative Adversarial Nets[iGAN]

Generative Adversarial Nets[iGAN]


本文來自《Generative Visual Manipulation on the Natural Image Manifold》,是大神Jun-Yan Zhu在2016年9月的作品。

0 引言

視覺交流在現在的社會發展中一直處於技術不夠強大的現狀,比如你想要去商場買個衣服,你想要告知導購衣服的顏色,款式,花紋等等,而最後導購拿出來的衣服卻並不是你心中所想,這時候如果是個畫家,他可以將自己所思所想畫出來讓導購看,而非畫家就很難將心中所想進行可視化了。然而Photoshop雖然強大,可是能夠精通的也沒幾個。而且非畫家畫出來的東西也是抽象多過具體讓人糊塗。

對自然影象流行進行理解並建模一直是個未解決的問題。不過GAN的提出讓該問題變得相對容易了些。不過還是有2個方面讓GAN等方法不能落地:

  • 生成的影象雖然很好,可是仍然不能與真實場景拍攝的照片相比(還有解析度不高的問題);
  • 這些生成模型通過一個潛在的向量空間,以隨機取樣的方式來生成圖片,那麼意味著不可控,即使用者不能和畫畫一樣指定如拉伸,填充等操作。

本文中朱儁彥使用GAN去學習自然影象的流行,不過不是用來做影象生成,而是用來作為各種影象編輯操作輸出上的約束,即讓結果能一直處在學到的自然影象流行上。這就可以讓使用者使用好幾個編輯操作,如顏色,形狀等等。然後模型自動調整輸出,儘可能保持結果和真實場景的影象一致。

本文會呈現三種應用:

  • 影象編輯:基於潛在的生成模型,操作一個現有存在的圖片,改變它的顏色和形狀;
  • 風格轉移:將一個圖片進行“生成變換”,讓它看起來向另一個圖片;
  • 圖片生成:基於使用者的塗鴉和幾個UI控制元件從頭生成一張圖片。

所有的操作都是以簡單直觀的方式執行的,基於梯度優化,得到一系列快速簡單的影象編輯工具。

1 學習自然影象流行

假設所有的自然影象都落在一個理想的低維度流行\(\mathbb{M}\),其中距離函式\(S(x_1,x_2)\)測量兩個圖片\(x_1,x_2 \in \mathbb{M}\)之間的感知相似度(perceptual similarity)。直接對\(\mathbb{M}\)進行建模是極具挑戰的,因為需要在一個高度結構化和複雜百萬維度空間中訓練一個生成模型。隨著最近深度生成網路在生成自然圖片上的成功,作者通過GAN在一個大規模影象集合上,學習一個模型來近似該圖片流行。在得到高質量結果的同時,GAN還有其他的特性。

GAN
主要部分略。定義\(z\)為生成器的輸入,是一個均勻分佈\([-1,1]^d\).定義\(\tilde{\mathbb{M}}=\{G(z)|z\in \mathbb{Z} \}\),並使用它作為理想流行\(\mathbb{M}\)的近似\(\tilde{ \mathbb{M}}\approx \mathbb{M}\)。同時兩個生成的圖片間距離函式,近似為對應的潛在向量之間的歐式距離\(S(G(z_1),G(z_2))\approx ||z_1-z_2||^2\)

GAN作為一個流行近似
使用GAN去近似一個理想的流行有兩個原因:

  • 它會生成高質量的取樣(圖2a),雖然有時候會缺少視覺細節,模型可以合成大致看上去很自然合理的樣本;
  • 潛在空間上的歐式距離通常對應一個感知上有意義的視覺相似度(如圖2b)。

所以GAN是一個強大的生成模型,可以很好的對影象流行進行建模。

穿越這個流行
給定兩個在該流行上的圖片\(G(z_0),G(z_N)\in \tilde{\mathbb{M}}\),並想找到一個平滑的N+1個圖片序列\([G(z_0),G(z_1),...G(z_N)]\)。該問題的思路通常是構建一個image graph,其中image是node,逐對距離函式作為edge,計算開始image和結束image之間的最短路徑。在本場景中,計算\(\min \sum_{t=0}^{N-1}S(G(z_t),G(z_{t+1}))\),這裡\(S\)是距離函式。在本場景中,\(S(G(z_1),G(z_2))\approx ||z_1-z_2||^2\),所以一個簡單的線性插值\([(1-\frac{t}{N}\cdot z_0+\frac{t}{N}\cdot z_N)]_{t=0}^N\)就是最短路徑.。圖2c就是通過潛在空間中兩個點之間插值生成的一個平滑的,有意義的影象序列。這裡會用該自然影象的流行近似作為真實的圖片編輯。

2 本文方法

圖1是本方法的概述。


給定一個真實照片,首先將它對映到影象流行的近似上,即找到與原始圖片最接近的GAN潛在特徵向量 \(z\)。然後,用一個實時的方法逐步和平滑的更新潛在向量 \(z\),生成一個合適的影象,能夠同時滿足使用者的編輯(一個塗鴉或者其他操作)且與自然影象流行保持相近。不幸的是,在該變換中,生成模型通常會丟失輸入影象low-level的細節。因此,作者提出了一種密集的對應方法,該方法從應用於生成模型的編輯中估計每畫素顏色和形狀變化。然後通過邊緣感知插值方式遷移這些變化到原始照片上,生成最後的操作結果。

2.1 將一張影象對映到流行上

假定一個真實的照片\(x^R\)處在理想的影象流行\(\mathbb{M}\)上。然而對於近似流行\(\tilde{\mathbb{M}}\),這裡的目標是找到一個生成的圖片\(x^{*}\in \tilde{\mathbb{M}}\)在以某個距離測度方法\(\mathcal{L}(x_1,x_2)\)基礎上能夠接近\(x^R\):
\[x^*=\underset{x\in \tilde{\mathbb{M}}}{\arg \min}\,\, \mathcal{L}(x,x^R)\]
對於GAN的流行\(\tilde{\mathbb{M}}\),將其重寫為:
\[z^*=\underset{z\in \tilde{\mathbb{Z}}}{\arg \min}\,\, \mathcal{L}(G(z),x^R) \tag{2}\]
這裡的目標是使用生成模型G來重構原始照片\(x^R\),通過最小化重構誤差。基於某個可微分的特徵空間\(\mathcal{C}\)\(\mathcal{L}(x_1,x_2)=||\mathcal{C}(x_1)-\mathcal{C}(x_2)||^2\)。如果\(\mathcal{C}(x)=x\),那麼重構誤差就簡化成逐畫素歐式誤差。《Generating images with perceptual similarity metrics based on deep networks》和《Perceptual losses for real-time style transfer and super-resolution》等文獻表明通過一個DNN可以重構感知上有意義的細節。作者發現將原始畫素和AlexNet(基於Imagenet訓練的)中conv4的特徵(x0.002)進行權重結合的效果最好。

通過最優化來實現對映
正如特徵提取器\(\mathcal{C}\)和生成模型G是可微分的,可以直接採用L-BFGS-B來優化上述目標函式。然而,\(\mathcal{C}(G(z))\)的級聯讓問題變得高度非凸,所以重構的結果就嚴重依賴一個很好的\(z\)初始化。可以從多個隨機初始化開始,輸出具有最小cost的結果。然而,隨機初始化的重試次數可能很大(超過100次),這讓實時處理變得不可能。所以作者直接訓練一個DNN來直接最小化式子2

通過一個前向網路來實現對映
訓練一個前向NN \(P(x;\theta_p)\),從\(x\)直接預測潛在向量\(z\)。預測模型\(P\)的可訓練目標為:
\[\theta_p^*=\underset{\theta_p}{\arg \min}\sum_n \mathcal{L}(G(P(x_n^R;\theta_p)),x_n^R) , \tag{3}\]
這裡\(x_n^R\)表示資料集中第\(n\)個圖片。模型\(P\)的結構等同於對抗網路中的判別器D,只是最終輸出的網路數量有所不同。目標函式3讓人想起AE模型,其中編碼器\(P\),解碼器\(G\)。然而,解碼器G在訓練中是固定不變的。式子2其實就是式子3,基於學習的方法通常執行的更好,而且也不會陷入區域性最優。這裡將此行為歸因於對映問題的規律性和網路P的有限容量。相似圖片的對映會共享相似的網路引數,並生成相似的結果。在許多場景下,一個圖片的loss為更多具有相似外觀的影象提供資訊。然而,AE本身的逆權重矩陣通常不是最優的,需要引入更多的優化方法來提升效能。

一個混合的方法
混合方法同時結合上述2個方法的優點,給定一個真實相片\(x^R\),首先預測\(P(x^R;\theta_p)\),然後用它作為最優化目標(式子2)的初始化。所以訓練好的預測模型扮演著為了解決非凸最優化問題上一個快速自底向上初始化的方法。


圖3展示這三個方法的對比。

2.2 操作潛在變數

用上述方法,將影象\(x_0^R\)對映到流行\(\tilde{\mathbb{M}}\)上如\(x_0=G(z_0)\),可以開始修改流行上的圖片了,即更新初始化的對映\(x_0\),通過同時匹配使用者的操作並保持其一直位於流行上,使其接近原始影象\(x_0\)
每個編輯操作形式化為輸出影象\(x\)上區域性位置的一個約束\(f_g(x)=v_g\)。編輯操作\(g\)包含顏色,形狀和warping constraints。給定一個初始化對映\(x_0\),去尋找一個新的圖片\(x\in \mathbb{M}\),使其接近\(x_0\),並且儘可能滿足如下約束:


這裡資料項是測量約束的偏離程度;平滑項強制在流行上移動一小步,所以影象內容不會修改太多。這裡 \(\lambda_s=5\)

上述式子在近似GAN流行\(\tilde{\mathbb{M}}\)上簡化為:


這裡最後一項 \(E_D=\lambda_D\cdot log(1-D(G(z)))\)可選地抓取由GAN鑑別器D判斷的,所生成輸出的,視覺真實性。其可以將圖片推向自然圖片流行方向,並輕微提升結果的視覺質量。預設情況下,該項被忽略以加快幀率。

梯度下降更新
最約束的式子5是非凸的。這裡通過梯度下降的方式來解決,其允許我們提供給使用者一個實時的反饋。目標5也是實時評估的。因為計算的原因,只在改變約束\(v_g\)後執行一小會的梯度下降更新。每個更新step大概需要50-100ms,這保證互動式反饋。


圖4展示了 \(z\)的一個更新例子。給定一個初始化的紅鞋,使用者逐步的在鞋圖片(圖4a)上畫上黑色的一筆,然後更新方法通過增加越來越多的使用者約束,來平滑的改變圖片的外觀(圖4b),一旦最後結果 \(G(z_1)\)計算完成,使用者可以看到介於初始化點 \(z_0\)\(z_1\)之間的插值序列(圖4c),然後選擇任意中間結果作為新的開始點。

雖然該編輯框架允許使用者在近似自然影象流行\(\tilde{\mathbb{M}}\)上修改任何生成的圖片,它不會直接提供給使用者一種方法來修改原始高解析度的圖片\(x_0^R\)。下面會介紹如何在近似流行上的編輯可以變換到原始圖片上。

2.3 編輯遷移

給定原始照片\(x_0^R\)(如一個黑鞋子),和其在流行上的對映\(G(z_0)\),和一個基於本文定義的使用者修改\(G(z_1)\)(如生成紅鞋子),生成的圖片\(G(z_1)\)需要捕獲到我們大致想要的結果,雖然畫質比原始影象有所下降。
那麼能否直接調整原始照片,然後生成一個更具真實的結果\(x_1^R\),其中包含了所需要的修改?一個直觀的方法就是直接遷移畫素的改變(即\(x_1^R=x_0^R+(G(z_1)-G(z_0))\))。作者已經嘗試了這種方法,而因為兩幅影象的錯位,其引入了新的偽造影象。為了解決該問題,作者提出一個密集對應演算法來同時評估因編輯操作引起的幾何和顏色的改變。

具體的,給定兩個生成的圖片\(G(z_0)\)\(G(z_1)\),可以生成任意數量的中間幀\([G((1-\frac{t}{N})\cdot z_0+\frac{t}{N}\cdot z_1)]_{t=0}^N\),連續幀之間僅有輕微的視覺變化。

動作+顏色流動演算法(Motion+Color ow algorithm)
通過以傳統的光流方法中的亮度恆定性假設來估計顏色和幾何變化。其生成下面的動作+顏色流目標:


這裡 \(I(x,y,t)\)表示在生成的影象 \(G((1-\frac{t}{N})\cdot z_0+\frac{t}{N}\cdot z_1)\)中畫素 \((x,y)\)上的RGB值 \((r,g,b,1)^T\)\((u,v)\)是關於 \(t\)改變的流向量, \(A\)表示一個 \(3\times 4\)的顏色仿射變換矩陣。資料項通過引入區域性仿射顏色轉移模型A 來放鬆顏色恆常性假設(the color constancy assumption),而空間和顏色的正則化項會促進運動和顏色變化的平滑性。
作者通過採用傳統光流演算法迭代式的評估流 \((u,v)\)來解決該目標函式,並通過求解一個線性等式系統來計算顏色變化A。作者迭代3次。並生成8箇中間幀(即N=7)。作者同時評估近鄰幀之間的變化,然後逐幀來合併這些變化以獲得基於任何兩幀 \(z_0\rightarrow z_1\)之間的長期變化。
[]( https://img2018.cnblogs.com/blog/441382/201901/441382-20190108095329398-401082072.png

圖5展示一個在初始化對映 \(G(z_0)\)上應用flow後的warping序列。

將編輯遷移到原始照片上
在評估生成影象序列中顏色和形狀變化後,將他們應用在原始影象上,並生成一個有趣的變化序列。因為flow的解析度和顏色域的是受限於生成的影象(64x64),需要將這些編輯以一個引導的影象濾波器進行上取樣。

3 使用者介面

就是如何將該演算法與使用者進行互動的UI介面。
使用者介面包含一個主要視窗用於展示當前編輯的圖片,一個展示所有候選結果的縮圖,一個滑動條來搜尋原始圖片和最終結果之間的圖片序列中圖片。
候選結果:基於初始化\(z\),生成多個不同的結果,生成64個結果,並展現按照式子5計算cost最小的9個結果。

3.1 編輯約束

該系統提供三個約束來編輯圖片:著色(coloring),素描( sketching),扭曲( warping)。所有的約束都是以畫刷展示:

  • 著色畫刷:著色畫刷允許使用者改變指定區域的顏色。使用者從調色盤選取顏色,然後調整畫刷size。對於每個以該畫刷標記的相似,可以約束每個畫素\(p\)的顏色\(f_g(I)=I_p=v_g\)到選定的值\(v_g\);
  • 素描畫刷:素描畫刷允許使用者勾勒出形狀或者增加細節部分。在影象的具體位置\(p\)上增加\(f_g(I)=HOG(I)_p\),一個可微分HOG描述符,以接近使用者的筆畫(即\(v_g=HOG(stroke)_p\))。選擇HOG特徵提取器是因為他可以拿來即用,這也使得其對素描不準確性具有魯棒性;
  • 扭曲畫刷:扭曲畫刷允許使用者更明顯的修改形狀,使用者首先選擇一個區域性區域(一個可調整size的視窗),將其拖拽到另一個位置。然後在空餘區域上面增加顏色和素描約束,以使其模仿拖拽區域的外形。


圖8 展示顏色和素描畫刷用在互動式圖片生成的上下文中結果;圖1展示用扭曲畫刷來拖拉鞋子的頂部;

圖6是更多的例子。

4 實現細節

網路結構
採用DCGAN一樣的網路結構。基於100維度的隨機向量,訓練G生成一個64x64x3的影象。注意到本方法也可以用在其他生成模型上(如VAE),去近似自然影象流行。

計算時間
執行在Titan x上,每次更新向量\(z\)大致需要50-100微秒,一旦編輯完成了,需要5-10秒來將編輯遷移結果去生成高解析度的最終結果。

5 結果