用了這個技術,我的元宵照片竟然藝術感爆表

前言

今天是一年一度的元宵節, Mr.Tech首先祝大家元宵快樂,團團圓圓。都說過好元宵纔算過完年。個推技術研發工程師飛鴿和船長憑藉自己的浪漫與藝術氣質,結合風格遷移技術,爲大家營造出了別具一格的節日氣息。如以下三列圖片所示,他們以第一列的原圖爲基礎,將第二列的風格遷移至原圖生成了頗具特色的元宵圖片(第三列)。這樣的元宵作品你見過嗎?

 

 

 

(以下是關於風格遷移原理的介紹)

 

風格遷移應用實例

曾經風靡全球的現象級應用 Prisma,來自於俄羅斯團隊,是一款簡潔的圖像美化工具。圖像美化類應用數不勝數,Prisma 的魅力在哪裏呢?我們先來看下其美化效果。

 

圖中左側是原始的圖像,經過 Prisma 應用美化後效果呈現於右側,一張寫實的照片瞬間蛻變成一幅充滿藝術氣息的油畫作品。從左側圖像到右側圖像的遷移過程可以稱之爲圖像風格遷移,這就是我們今天想要介紹的內容。

 

 

 

簡介

圖像風格遷移是指結合內容圖像與風格圖像,生成一張新的圖像,其在內容上與內容圖像相近,而在風格上與風格圖像相近。何爲相近是一個較難定義的問題,在神經網絡應用於風格遷移之前,大家都遵循一個相同的思路:在某個特定的風格圖像基礎之上,建立一個與該風格對應的數學或統計模型,然後再改變需要遷移的內容圖像,使它更好地符合建立的模型。

 

基於神經網絡的圖像風格遷移的方法在 2015 年由《Texture Synthesis Using Convolutional Neural Networks》和《A Neural Algorithm of Artistic Style》這兩篇論文提出。第一篇論文提出了一種用深度學習來給紋理建模的方法,第二篇基於卷積神經網絡,把局部特徵看做近似的圖像內容,得到一個圖像內容和圖像風格分開的系統,再將其內容和風格合併起來,形成風格遷移後的圖像。以這兩篇爲基礎,國外工程師們又相繼發表了實時的固定風格圖像遷移《Perceptual Losses for Real-Time Style Transfer and Super-Resolution》和任意風格圖像的極速遷移《Meta Networks for Neural Style Transfer》兩項技術成果。

 

以下主要對後三篇基於神經網絡的圖像風格遷移的論文內容做簡要介紹。

 

 

 

 

風格遷移開山之作

《Texture Synthesis Using Convolutional Neural Networks》這篇論文提出了一個思路:紋理可以用圖像局部特徵的統計模型來描述。有了這個前提之後,基於神經網絡的圖像風格遷移模型就應運而生了。《A Neural Algorithm of Artistic Style》這篇論文詳細講述瞭如何使用神經網絡實現圖像風格遷移。

 

在卷積神經網絡中,淺層的特徵一般代表着圖像的邊緣、輪廓、紋理、顏色等視覺特徵,而深層的特徵則指的是圖像的語義特徵。越往深層,語義特徵越來越強,即更能代表圖像的具體內容。要比較兩幅圖像的內容相似性,可以比較兩幅圖像在網絡深層特徵的相似性。這裏使用歐式距離來衡量特徵之間的相似性,具體公式如下:

我們使用兩幅圖像的較淺層特徵來比較圖像間的風格相似性。由於較淺層特徵也含有較多的圖像局部特徵,因此不能直接使用歐式距離比較相似性,故論文中使用了 Gram 矩陣比較風格的相似性。

風格相似性計算公式如下:

 

兩幅圖像間的相似度可以用內容損失和風格損失之和來評估:

直觀的網絡結構圖如下:

(圖片來源於《A Neural Algorithm of Artistic Style》)

 

具體的代碼實現可以參考:Neural-Style-Transfer

https://github.com/titu1994/Neural-Style-Transfer

 

 

實時風格遷移

根據上述的圖像風格遷移模型可以得到比較不錯的遷移效果,但是需要對每張內容圖像和風格圖像進行單獨訓練,所以圖像的生成速度很慢,於是就有人提出了改進:首先搭建一個轉換網絡,然後通過優化轉換網絡的權值來實現快速風格遷移。《Perceptual Losses for Real-Time Style Transfer and Super-Resolution》這篇論文詳細地講述了具體的實現過程。

 

爲解決耗時的問題,該文采用了end-to-end training的方法,訓練出了DCNN模型。該模型只用輸入單內容圖片,就可以給對象添加上某種風格。

(圖片來源於《Perceptual Losses for Real-Time Style Transfer and Super-Resolution》)

 

首先,該文章採用了訓練好的VGG16來作爲圖像特徵提取器。由上圖可以看到,對於內容圖的訓練,只採用了relu3_3層的特徵圖,而對於風格圖的訓練,則分別採用了relu1_2、relu2_2、 relu3_3和relu4_3這4層的特徵圖。

 

接着,該方法需要預先訓練出一個損失網絡,該網絡用來計算內容圖像於風格圖像的perceptual loss。然而,如何定義出損失函數是一個難題。對於計算機來說,很難去準確定義一個圖像的風格,因爲這個東西相對比較主觀。到底什麼是風格呢?換種思維來說,圖像中除去內容,那就是風格了,而圖像的內容最在意的就是特定像素點的位置。相反地,風格則對位置信息不敏感。於是該論文采用了Gram矩陣的形式:

Gram矩陣是針對於一個特徵圖而言的,對於一個用n個通道的特徵層,兩兩組合得到n*n組,每組計算兩個二維矩陣的點積的和,再壓平。這樣得到的Gram矩陣就去除了特徵中的位置信息。

(圖片來源於《Perceptual Losses for Real-Time Style Transfer and Super-Resolution》)

 

上圖展示風格圖在對應損失函數優化後,各個層的特徵圖。可以看出不同層的特徵圖在不同的顆粒度體現了原圖的風格,在保留了風格的前提下,這些特徵圖又去除了原圖的像素點的位置信息,這樣就不會影響內容圖了。

 

除了上述的perceptual loss,爲了保持風格轉換後的低層的特徵,文章還引入了兩個簡單的loss,一個是pixel loss:

這個損失函數只在有訓練的時候使用。 

 

另一個是total variation loss:

這個損失函數則用來提高圖像的平滑度。

具體代碼實現可以參考:fast_neural_style

 

https://github.com/pytorch/examples/tree/master/fast_neural_style

 

 

 

 

極速風格遷移

一般的圖像風格轉移網絡只能轉換一種風格,而在《Meta Networks for Neural Style Transfer》論文中,作者設計了一種 meta 網絡,將不同的風格圖像輸入到 meta 網絡中輸出不同的權重參數,再將這些參數輸入到轉換網絡中進行內容圖像的風格轉移,模型結構如下圖所示:

(圖片來源於《Meta Networks for Neural Style Transfer》)

 

將風格圖像輸入到固定的 VGG-16 網絡中得到風格特徵,再經過兩個全連接層得到權重參數,輸入到圖像轉移網絡(Image Transformation Network)生成轉移後的圖像。

 

總結

《A Neural Algorithm of Artistic Style》論文通過對內容圖像和風格圖像的訓練,不斷地改變權重來實現風格的遷移。《Perceptual Losses for Real-Time Style Transfer and Super-Resolution》論文搭建了固定風格的圖像轉移模型,然後訓練優化模型,輸入任意的內容圖像即可實現快速圖像風格遷移。《Meta Networks for Neural Style Transfer》論文通過模型來生成權重,可以快速實現任意內容、任意風格的圖像遷移。

 

如果大家不滿足於Prisma app所提供的固定款式的濾鏡,不妨藉助風格遷移原理,動動手自己做一個照片美化工具,讓你的圖片呈現出你獨特的藝術風格。 

 

 

結語

這個元宵節,個推的飛鴿和船長利用技術與藝術專長,創作出了別樣的元宵作品,向大家傳遞出了節日溫暖。相信我們也可以利用風格遷移以及其他方式,讓自己過好這個與衆不同的元宵節。再次祝大家元宵快樂!

 

參考資料:

1. Texture Synthesis Using Convolutional Neural Networks

2. A Neural Algorithm of Artistic Style

Perceptual Losses for Real-Time Style Transfer and Super-Resolution

3. Meta Networks for Neural Style Transfer

4. Neural-Style-Transfer-Papers-Code

5. 圖像風格遷移(Neural Style)簡史

 

 

發佈了76 篇原創文章 · 獲贊 25 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章