【編程奇妙夜】神經(jīng)網(wǎng)絡(luò)風(fēng)格遷移-手機(jī)街拍秒變世界名畫

神經(jīng)網(wǎng)絡(luò)風(fēng)格遷移-手機(jī)街拍秒變世界名畫
例如



風(fēng)格遷移
將風(fēng)格圖圖片遷移到內(nèi)容圖


不會寫代碼,這個網(wǎng)站可以直接生成


神經(jīng)網(wǎng)絡(luò)風(fēng)格遷移算法原理


兩個損失函數(shù),內(nèi)容損失函數(shù),和風(fēng)格損失函數(shù)

算法流程

例如

預(yù)備神經(jīng)網(wǎng)絡(luò)知識

卷積神經(jīng)網(wǎng)絡(luò)核心

一個卷積核對一個feature map


不同卷積核提取不同特征



越來越復(fù)雜抽象提取的特征

總結(jié):

淺層卷積核提?。哼吘?、顏色、斑塊等低層像素特征
中層卷積核提?。簵l紋、紋路、形狀等中層紋理特征
高層卷積核提?。貉劬?、輪胎、文字等高層語義特征
最后的分類輸出層輸出最抽象的分類結(jié)果
講解論文,VGG網(wǎng)絡(luò)

每一個block提取不同的卷積核

對比VGG16、19

損失函數(shù)設(shè)計
內(nèi)容損失函數(shù)


網(wǎng)絡(luò)越深重建效果越差、會存在信息丟失

風(fēng)格損失函數(shù)

不同通道不同卷積核,提取不同特征


歸納


從更高層重建效果會更好

不同層重建不同紋理,越高層紋理信息越豐富


融合風(fēng)格損失函數(shù)和內(nèi)容損失函數(shù)

網(wǎng)絡(luò)越深重建效果越差。

總損失函數(shù)


風(fēng)格圖的大小也會改變

小的更細(xì)節(jié),感受野越大
代碼實現(xiàn)
公眾號 人工智能小技巧 回復(fù) 風(fēng)格遷移。下載資料、代碼、論文筆記

權(quán)重參數(shù)定義
--content_weight 內(nèi)容損失函數(shù)所占的權(quán)重
--style_weight 風(fēng)格損失函數(shù)所占的權(quán)重
--tv_weight 全局像素平滑損失函數(shù) total variation loss
內(nèi)容損失函數(shù)的計算方法:將內(nèi)容圖和生成圖分別由預(yù)訓(xùn)練CNN運(yùn)行,獲得各自的中間層特征,然后求兩個特征的L2距離
風(fēng)格損失函數(shù)的計算方法:通過Gram矩陣可以提取風(fēng)格圖中不同尺度的顏色/紋理信息
風(fēng)格圖和生成圖分別在ImageNet數(shù)據(jù)集中預(yù)訓(xùn)練的CNN中運(yùn)行,獲得不同層各自的Gram矩陣,然后計算每一層的兩個Gram矩陣的L2距離,再對不同層的結(jié)果求損失


解析命令行參數(shù)


按照內(nèi)容圖的尺寸調(diào)整生成圖像的大小

定義工具函數(shù)
預(yù)處理,將

將張量傳入ImageNet數(shù)據(jù)集上預(yù)訓(xùn)練好的VGG19模型中
模型的輸入為定義好的Input_tensor
獲得模型的所有層以及每一層的輸出

定義三個損失函數(shù)

全局像素平滑損失函數(shù)(total variation loss)的作用是平滑像素點(diǎn),防止噪聲,使圖像看上去更貼近自然圖像

融合三個損失函數(shù)

算法擴(kuò)展升級


如保留內(nèi)容圖顏色

融合多個風(fēng)格圖

把不同畫家風(fēng)格融合在一張圖,之前融合一個風(fēng)格


Fast Style Transfer

fast-style-transfer

網(wǎng)站:http://github.com/jcjohnson/fast-neural-style

Instance Normalization歸一化方法

Batch Norm:mini-batch中N個圖片用同樣卷積核卷積得到的第C個feature map
Layer Norm:mini-batch中第一個圖片的全部C通道feature map
instance norm:mini-batch中第一張圖片的第C個feature map
group norm:mini-batch中第一個圖片的某些通道的feature map

加instance norm的效果 ,

但是這個存在缺點(diǎn)是每種風(fēng)格都必須單獨(dú)訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)
因此考慮一種網(wǎng)絡(luò)生成多種風(fēng)格,把不同的風(fēng)格來進(jìn)行融合,只需要調(diào)整里面的參數(shù)

conditional instance normalization

fast-style transfer

pip 安裝各種python的第三方工具包
conda不局限于python,既可以當(dāng)?shù)谌焦ぞ甙部梢援?dāng)做環(huán)境管理工具,不局限于Python,在javascript這些環(huán)境中都可以使用
訓(xùn)練
.checkpoint里面存放各種風(fēng)格訓(xùn)練好的模型


運(yùn)行視頻的風(fēng)格遷移

論文解析:A Neural Algorithm of Artistic Style
fine art:指的是繪畫、建筑、雕塑、音樂、詩歌、戲劇、舞蹈等藝術(shù)






通過白噪聲重構(gòu)的方法,使用低層神經(jīng)網(wǎng)絡(luò)提取的特征來重構(gòu)的話,獲得的就是低層的特征,只有邊緣斑點(diǎn)信息,越到高層就可以捕捉更大范圍的風(fēng)格信息,低層感受野小,捕捉細(xì)節(jié)條紋斑塊,高層感受野大,捕捉星團(tuán),點(diǎn)彩的信息

內(nèi)容信息重建,使用卷積神經(jīng)網(wǎng)絡(luò)每層提取的特征來重建






















