神經(jīng)風(fēng)格遷移

準(zhǔn)備

一個(gè)style image 、一個(gè) content image以及一個(gè)訓(xùn)練好的CNN(一般用VGG網(wǎng)絡(luò)就可以,可以去github上下載)

style image
content image

輸入

有三個(gè),分別是:noise image、content image、 style image

功能

將style image和content image進(jìn)行融合,即將style image的風(fēng)格放到content image中,但又不損失content image里面的內(nèi)容。

原理

從卷積神經(jīng)網(wǎng)絡(luò)的可視化可以知道,在低層的神經(jīng)網(wǎng)絡(luò)中會(huì)有一些紋理、顏色的一些低級(jí)特征識(shí)別,越往上層,學(xué)習(xí)到的feature map越復(fù)雜,就會(huì)出現(xiàn)一些特定的pattern,比如:人臉、鳥的腿等等。(具體可以參看這個(gè)可視化的paper

1.所以考慮讓content image在接近輸出的神經(jīng)層算content_feature_maps,讓style image在接近輸入的神經(jīng)層算style_feature_maps.

2.對(duì)noise image做相同的操作,得到noise_style_feature_maps (獲取maps的層數(shù)和style image相同)和 noise_content_feature_maps(獲取maps的層數(shù)和content image相同)

3.計(jì)算noise_content_feature_maps和content_feature_maps之間的loss,記為content loss,計(jì)算方法如下:
MSE=mean((noise\_content\_feature\_maps - content\_feature\_maps)^2)

4.之后計(jì)算noise_style_feature_maps和style_feature_maps之間的loss,記為style loss,計(jì)算方法如下,即各自gram matrix的MSE:

  • 什么是gram matrix?:

????gram matrix是:一個(gè)vector x(列向量),如果計(jì)算它的gram matrix就是x'x,gram matrix可以衡量兩個(gè)feature map之間的相似程度。

  • 為什么不直接用MSE呢?

    因?yàn)閟tyle衡量的是紋理、顏色等一不一樣,所以計(jì)算的是某種相關(guān)性。而不需要像content那樣每個(gè)像素點(diǎn)都比較接近(即內(nèi)容比較接近),所以在這里計(jì)算的是gram matrix的MSE。
    MSE_{gram\_matrix} = mean((gram\_matrix_{noise\_style\_feature\_maps} - gram\_matrix_{style\_feature\_maps})^2)

5.最后呢,最小化style_loss+content_loss

結(jié)果

下面是我自己跑出來的結(jié)果,比較難看,但是已經(jīng)有了風(fēng)格遷移的味道,有些內(nèi)容有點(diǎn)失真,我感覺應(yīng)該是訓(xùn)練的不夠,但是鑒于我的電腦太久遠(yuǎn)了,一運(yùn)行就卡的不行,就這樣的結(jié)果也是跑了很長時(shí)間的了。


鬼畜圖片

代碼

我的github。代碼里面只需要運(yùn)行style_transfer.py文件即可。還有一個(gè)VGG網(wǎng)絡(luò)的訓(xùn)練參數(shù)文件“vgg16.npy”需要下載,這個(gè)文件比較大,上傳太費(fèi)時(shí)了,可以去github上找,或者網(wǎng)盤。

有什么問題可以及時(shí)留言,歡迎批評(píng)指正!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 上周六,很幸運(yùn)有機(jī)會(huì)可以站在270人的場地里進(jìn)行了一場6分鐘的演講,作為一名演講小白,雖然講的不算出色,比起其他的...
    茜喵閱讀 968評(píng)論 6 16
  • 姓名:吳廣明 公司:力創(chuàng)商業(yè)地產(chǎn) 盛和商學(xué)第346期努力二組副隊(duì)長 【知~學(xué)習(xí)】 《六項(xiàng)精進(jìn)》大綱背誦1遍共21...
    吳廣明閱讀 130評(píng)論 0 0
  • 1989年我還沒出生??蓱c幸的是我是一個(gè)愛聽故事的人,而且我身邊有那么多有故事而且愛講故事的人。所以聽他們的...
    一只古靈精怪的貓閱讀 682評(píng)論 0 0
  • 你喜歡玩黏土嗎? 今天我來給你展示怎樣玩可以吃的“黏土”。 首先,取一塊可以吃的“黏土”。先來一塊兒綠色的吧。(配...
    彪悍另一只貓閱讀 1,566評(píng)論 29 34

友情鏈接更多精彩內(nèi)容