圖像任意指定區域的神經風格轉移(論文解讀以及tensorflow實現)

簡介

github項目地址:https://github.com/zhangcliff/style-transfer-of-arbitrary-region

乍一看文章題目,顯得有點複雜。先來說一說神經風格轉移吧!假設我們現在有兩幅圖片,一張是梵高的畫作,一張是我們的照片。神經風格轉移,就是用一個神經網絡學習梵高畫作的風格,再將這種風格與我們的照片進行結合,最後生成一張帶有梵高畫作風格的照片,效果如下圖所示。


下面再來說說指定區域的神經風格轉移。假如我只想將下圖中的鳥進行風格轉移,應該怎麼辦呢。有人肯定會說,先將整張圖片進行風格轉移,再用鳥的掩膜(mask)將風格轉移後鳥的部分切割出來,與原圖的背景進行拼接就行了。這種方法肯定也是可以的,但今天我們討論另外一種方法。該方法使用了一個有條件輸入的轉移網絡(Conditional transfer network),原圖作爲主要輸入,目標區域掩膜圖作爲條件輸入。轉移網絡只對目標區域進行風格轉移,而保持非目標區域不變,從而達到任意制定區域的神經風格轉移。如下圖所示。



本文所討論的方法基於論文:Local Perceptual Loss Function for Arbitrary Region Style Transfer (ICPR2018在審論文)。

github項目地址:https://github.com/zhangcliff/style-transfer-of-arbitrary-region

一、 Conditional transfer network

文章中使用的Conditional transfer network與論文Conditional Fast Style Transfer Network中使用的比較類似,如下圖所示。



Enconder首先將內容圖作爲輸入,產生特徵圖。之後將一個掩膜矩陣(Mask matrix)串聯在特徵圖的尾部,通過一個1×1的卷積層進行信息的整合。Deconder將特徵信息進行解碼,最後生成一張效果圖。

從上圖中可以看出,作爲條件輸入的Mask指定圖片的左半部分爲目標區域,則轉移網絡只對左半部分進行風格轉移,而保持右半部分不變。

二、 Perceptual loss

在論文Perceptual losses for real-time style transfer and super-resolution 中,作者使用Perceptual losses訓練了一個transfer network,這種方法可以對圖片進行實時的風格轉移。

首先我們說一下Perceptual losses,其由兩部分組成,content loss 和 style loss。content loss和style loss都是通過一個損失網絡(pretrained vgg16)來計算的。

Content loss

將生成的圖片和內容圖通過一個pretrained vgg16網絡得到特徵圖,φ_j (y_c)表示內容圖在vgg16第j層的特徵,Hj,Wj以及Cj分別表示第j層特徵的高、寬和通道數。最小化該損失函數,也就意味着生成圖和內容圖在vgg16的特徵空間中的歐氏距離達到最小,也就能使生成圖和內容圖在圖片內容上保持一致。當兩幅圖片的內容比較相似時,其通過vgg16產生的特徵自然也就比較相似(歐式距離比較小)。

Style loss:

在內容損失中,用特徵表示圖片的內容,那用什麼表示圖片的風格呢?這裏用的是Gram矩陣。Gram矩陣可以通過以下方式進行計算:

(1)  將特徵φ reshape,變成如下形狀:C×HW

(2)  G(∙)=  (φφ^T)/HCW

通過Gram矩陣表示圖片的風格,可以理解爲用特徵中每個通道之間的分佈來表示風格,這在直觀上還是比較好理解的。最小化生成圖和風格圖Gram矩陣之間的歐氏距離,使得生成圖和風格圖的在風格上保持一致。


三、Local perceptual loss

說完了Perceptual losses,下面我們接着說Local perceptual loss。顧名思義,該損失是在圖像的局部計算損失誤差。

Localstyle loss


Gram矩陣的計算方式還是一樣的,區別在於:對於生成圖,我們只計算目標區域的Gram矩陣;對於風格圖,依然是計算整張圖片特徵的Gram矩陣。通過優化這個損失函數,使得目標區域的風格與風格圖保持一致。

Local content loss



這裏將內容損失分成了兩部分來計算,一部分是目標區域的內容損失,一部分是非目標區域的內容損失。Mt表示掩膜矩陣,其爲二值矩陣,Mt+Mnt=E。E爲全1矩陣。最後總的損失函數如下所示。


通過文章中定義的Local perceptual loss,可以訓練Conditional transfer network捕捉到mask中的空間位置信息,進而對目標區域進行風格轉移。

四、試驗效果

由Gram的定義我們可以知道,必須要求目標區域是矩形時,才能計算Gram矩陣。因此在訓練網絡的時候,我們將目標區域都定爲矩形。最後得到的效果圖如下。看起來效果還是不錯的。


下面我們使用一些不規則形狀作爲目標區域,效果圖如下。從下圖中可以看出,雖然訓練時,目標區域只能時矩形,但是測試使用時,目標區域可以是任意形狀。因此,可以判斷網絡在訓練中很好的學習到了目標區域的空間位置信息,而不侷限於某一特定的形狀。


但是從效果圖中,還是可以看出一些小瑕疵的。在目標區域的邊緣有信息損失,會產生白化現象。如果要產生更加美觀的圖片,我們可能要與原圖進行結合,如下所示。效果還是不錯的。

到了這裏,可能有讀者就會吐槽了,最後還是要用掩膜(mask)將風格轉移後的部分切割出來,與原圖的背景進行拼接,爲什麼要多此一舉設計一種算法來進行局部的風格轉移呢?

其實呢,方法不同,產生的效果自然就不同。下面給出用論文Perceptual losses for real-time style transfer and super-resolution的方法進行整幅圖像的風格轉移,再用掩膜(mask)將風格轉移後的部分切割出來,與原圖的背景進行拼接得到效果圖,在與這篇文章的效果圖進行對比(右邊爲我們的效果圖)。


至於左邊好看還是右邊好看,這完全是仁者見仁智者見智,在這裏就不評價了。方法不同,效果就不同。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章