Image Generation from Sketch Constraint Using Contextual GAN

摘要:

本文探討由手寫簡筆畫到圖像的生成。當給定的簡筆畫不太好時,網路的輸出也會受到簡筆畫邊緣的強行約束去生成符合簡筆畫邊緣的圖像,這樣會使得訓練很不穩定。我們的做法不同,我們把簡筆畫作為弱約束,也就是說輸出的邊緣未必非要符合輸入的邊緣。我們用一個新穎的joint圖像的實現方法,為了實現輸出圖像的生成,簡筆畫提供圖像的上下文信息。我們訓練一個對抗網路,contextual GAN,用來學習簡筆畫和圖像的聯合分布。我們的模型有以下優點:1,圖像的聯合表示可以更簡單有效的學習圖像/簡筆畫的聯合概率分布,這樣可以避免交叉域學習中的複雜問題。2.雖然輸出依賴於輸入,但是輸入的特徵表現出更多的自由性,並不像傳統GAN那樣嚴格與輸入特徵對齊。3.從聯合圖像的觀點來看,圖像和簡筆畫沒有什麼不同,因此用一個相同的連結圖像實現網路來做圖像到簡筆畫的生成。

介紹:

圖像翻譯任務可以產生很逼真的圖像結果,目前常用的方法是條件對抗生成網路,把輸入和輸出做強行約束條件,即像素級的強行對應。當簡筆畫畫的並不是很好的時候,這種情況將會產生很嚴重的問題。下圖展示了一個隨手畫的簡筆畫所對應不同方法生成的真實圖像。

我們的目標是根據簡筆畫生成真實圖片,儘管大部分人畫的簡筆畫很差,但是在很多情況下還是可以表述出目標的屬性,例如我們可以加入一些文本描述。另一方面,這個轉換過程應該遵守一些稀疏的輸入內容,儘管在生成圖像上會有一些形狀上的差異。

為了解決這個挑戰,我們提出一個新的網路,我們把圖像生成的任務轉換成圖像實現問題,其中簡筆畫提供微弱的上下文約束。下圖展示了核心概念:

在傳統的圖像實現問題上,我們利用損壞的部分的周圍圖像內容作為上下文信息來補全輸入圖像以解決圖像實現(image completion)的問題。用鳥的復現來舉例,其中沒有被掩蓋的部分就可以作為上下文信息。通過類比推理,在我們的簡筆畫/圖像的實現過程中,被遮蓋的部分可以理解成整個真實圖像部分,而上下文信息則用簡筆畫圖像來提供。按照這個思路,我們把圖像翻譯任務(簡筆畫作為硬性約束)轉化成joint圖像的損失部分修復任務(簡筆畫作為上下文信息)。下圖給出了圖像生成任務中監督信息由弱到強的不同方法:

基於聯合簡筆畫/圖像實現的想法,我們提出了contextual gan網路框架,對抗生成網路通過訓練來學習到聯合分布進而捕捉到簡筆畫和對應圖片之間的固有屬性。這種方法相當於把有損失的圖像映射到和它最相近的的無損失圖像的空間中,進而來預測聯合圖像的另一部分是什麼樣子。為了推斷出最相近的映射,我們用簡筆畫作為contextual loss,同時加上原有的對抗損失。其次,為了更好的對簡筆畫部分初始化,我們添加了一個straight-forward scheme。我們模型的三個優點如摘要所說。

方法:

3.1 簡筆畫/圖像的聯合表示

由簡筆畫生成圖像不是一個容易的事情因為簡筆畫通常很抽象並且包含的信息也很稀疏,有時畫的效果也很差,我們沒有遵循以往常規的把簡筆畫和圖像分離的方法,我們採用一個模型把他們映射到同一個連接空間中。給定簡筆畫和真實圖像,我們把他們在空間上結合起來,如上面的圖2所示。利用我們提出的模型,聯合圖像可以很自然的捕捉到上下文信息,例如簡筆畫和圖像的對應關係,這個用GAN可以很容易地學習到聯合分布。

因此,我們利用一個完整的聯合圖像(AB)來作為GAN的輸入,然後生成器利用簡筆畫這部分作為上下文信息,進一步預測這個聯合圖像的被遮蓋部分。生成器相當於把聯合圖像映射到非線性聯合空間z,z是簡筆畫和圖像的共同映射。但是對於過去的工作來說,z僅僅是一個圖像的映射空間。這樣產生的結果是:我們並不是利用整個z空間來對生成圖像進行硬約束,而是利用z空間的一部分,也就是簡筆畫部分來約束輸出,這樣對輸出圖像來說就有了更大的自由度。圖四說明了我們的具體方法:

3.2目標函數

為了得到有損聯合圖像和重建聯合圖像的最相似映射,我們需要令生成的聯合圖像的簡筆畫部分盡量與輸入的簡筆畫部分相似。我們的損失函數包含以下兩部分:

簡單解釋下上述Contextual Loss損失函數:M是掩模(0,1分布的矩陣),用來把圖像部分遮蓋起來,僅僅留下簡筆畫部分,KL散度用用來衡量兩種分布的,如果兩種分布完全相同,KL散度就是0。y是標籤,也就是簡筆畫和真實圖像的空間連接。G(z)是生成的聯合圖像。這個損失函數的目的就是為了讓生成的聯合圖像的簡筆畫部分盡量相似。

這一部分是感知損失,為了保障圖像內容的真實性,其實也就是對抗損失中的G的部分,另外

ar{z} 的計算方法圖中也有說明,在下面的內容有所用到。

3.3 Contextual GAN

Contextual GAN模型包含兩個階段:訓練階段和實現階段。訓練階段和傳統的GAN訓練沒有什麼不同,唯一區別在於輸入的圖像是聯合圖象。經過訓練之後,生成器G就能夠實現聯合圖像數據分布的復現,也就是說能夠從隨機雜訊分布映射到聯合圖像的數據分布了。

我們的目標是把有損圖像映射到生成器流行空間中,盡量與真實圖像接近。我們並沒有直接最大化D(y),而是從目標函數中

計算出令其最小的z,這也就意味著我們把有損圖像映射到生成器的雜訊z空間上。準確的說,我們旨在找到和標籤聯合圖像的簡筆畫圖部分最為相似的G(z),進而找到相應的z。z是服從標準正態分布,我們通過上述公式不斷地更新z,在這一階段,G和D的權值不發生變化,只有z通過梯度下降進行更新。通過多次反向傳播更新,我們得到有損輸入的最接近的最優z,z通過生成器得到輸出,也就是產生的聯合圖像,再利用掩膜把圖像的這一側提取出來以實現生成的效果。下圖x就是最終生成的聯合圖像。

實驗部分:

因簡筆畫數據較少,為了防止過擬合和擴充數據的目的,文中提出四種生成簡筆畫的方法。

本文並沒有把三種類型的所有數據作為訓練集一次性全部進行訓練,而是先拿XDoG數據集訓練,然後在其他數據集上Fine tune。

數據集部分

最後放一張實驗對比圖


推薦閱讀:
相关文章