動手學深度學習之圖像風格遷移

圖像風格遷移是個有趣的應用,可以改變一副圖像的樣式,雖然照片內容沒變,但卻變成了另一種風格。

樣式遷移

如果你是一位攝影愛好者,也許接觸過濾鏡。它能改變照片的顏色樣式,從而使風景照更加銳利或者令人像更加美白。但一個濾鏡通常只能改變照片的某個方面。如果要照片達到理想中的樣式,經常需要嘗試大量不同的組合,其複雜程度不亞於模型調參。
在本節中,我們將介紹如何使用卷積神經網絡自動將某圖像中的樣式應用在另一圖像之上,即樣式遷移(style transfer)。這裏我們需要兩張輸入圖像,一張是內容圖像,另一張是樣式圖像,我們將使用神經網絡修改內容圖像使其在樣式上接近樣式圖像。下圖中的內容圖像爲本書1作者在西雅圖郊區的雷尼爾山國家公園(Mount Rainier National Park)拍攝的風景照,而樣式圖像則是一副主題爲秋天橡樹的油畫。最終輸出的合成圖像在保留了內容圖像中物體主體形狀的情況下應用了樣式圖像的油畫筆觸,同時也讓整體顏色更加鮮豔。
在這裏插入圖片描述

如何實現

下圖用一個例子來闡述基於卷積神經網絡的樣式遷移方法。首先,我們初始化合成圖像,例如將其初始化成內容圖像。該合成圖像是樣式遷移過程中唯一需要更新的變量,即樣式遷移所需迭代的模型參數。然後,我們選擇一個預訓練的卷積神經網絡來抽取圖像的特徵,其中的模型參數在訓練中無須更新。深度卷積神經網絡憑藉多個層逐級抽取圖像的特徵。我們可以選擇其中某些層的輸出作爲內容特徵或樣式特徵。以下圖爲例,這裏選取的預訓練的神經網絡含有3個卷積層,其中第二層輸出圖像的內容特徵,而第一層和第三層的輸出被作爲圖像的樣式特徵。接下來,我們通過正向傳播(實線箭頭方向)計算樣式遷移的損失函數,並通過反向傳播(虛線箭頭方向)迭代模型參數,即不斷更新合成圖像。樣式遷移常用的損失函數由3部分組成:內容損失(content loss)使合成圖像與內容圖像在內容特徵上接近,樣式損失(style loss)令合成圖像與樣式圖像在樣式特徵上接近,而總變差損失(total variation loss)則有助於減少合成圖像中的噪點。
最後,當模型訓練結束時,我們輸出樣式遷移的模型參數,即得到最終的合成圖像。
在這裏插入圖片描述
內容損失:使用的是平方誤差函數;
樣式損失:使用的也是平方誤差函數,不過對象是格拉姆矩陣,也就是協方差矩陣,被用來反應特徵重要性以及它們之間的關係;
總變差損失:用於降噪,降低與周圍像素的差異。
i,jxi,jxi+1,j+xi,jxi,j+1 \sum_{i, j}\left|x_{i, j}-x_{i+1, j}\right|+\left|x_{i, j}-x_{i, j+1}\right|
總的損失函數:是三種損失的加權和,其中權值超參數用於控制合成圖像在保留內容、遷移羊式以及降噪三方面的相對重要性。

有些話說

  1. CNN越靠近輸入的層輸出的特徵圖保留的是什麼信息,越深層輸出的又是什麼信息?

  1. 動手學深度學習 ↩︎

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