圖像風(fēng)格遷移

做項(xiàng)目時(shí)涉及到圖像風(fēng)格遷移的東西亭珍,于是補(bǔ)了一下,用本篇博客記錄之绑雄,并附上pytorch代碼唧取,以備不時(shí)之需铅鲤。


圖1 風(fēng)格遷移示意圖

所謂風(fēng)格遷移,其實(shí)是圖像生成枫弟,即用兩種圖像生成一種結(jié)合二者內(nèi)容和風(fēng)格的新圖像邢享。

如何量化生成圖像的內(nèi)容風(fēng)格呢:
(1)生成圖像的內(nèi)容,即兩幅圖像像素值越相同越好淡诗;
(2)生成圖像的風(fēng)格骇塘,即兩幅圖像紋理上越相似越好。

1.生成圖像的內(nèi)容

如圖1所示韩容,給定隨機(jī)圖(像素隨機(jī)生成)x和內(nèi)容圖p款违,以及訓(xùn)練好的CNN(全卷積,不含全連接)群凶,隨機(jī)圖輸入CNN插爹,在第l層輸出的特征圖為F^{l}_{ij}。內(nèi)容圖輸入CNN请梢,在第l層輸出的特征圖為P^{l}_{ij}赠尾,要想使隨機(jī)圖通過(guò)梯度下降法更新至和內(nèi)容圖一樣,那么我們只需要定義二者的損失函數(shù)為:
L^l_c(x,p)=\frac{1}{2} \sum_{i,j}(F^{l}_{ij}-P^{l}_{ij})^2 \tag{1}
此處的損失函數(shù)為誤差平方損失毅弧,很容易理解气嫁,就是使二者通過(guò)同一個(gè)CNN得到的特征圖的激活值誤差最小。因?yàn)橄嗤膬煞鶊D像够坐,輸入同一CNN杉编,在某一層輸出的特征圖是相同的。二者特征圖的激活值越相近咆霜,那么二者像素點(diǎn)的值也會(huì)越相近邓馒。

在訓(xùn)練過(guò)程中保持CNN的參數(shù)不變,使用梯度下降法更新輸入圖像:
x=x-\lambda \frac{\partial L_c}{\partial x} \tag{2}
即可實(shí)現(xiàn)隨機(jī)圖像更新至內(nèi)容(像素點(diǎn))和內(nèi)容圖越來(lái)越相近蛾坯。

2.生成圖像的風(fēng)格

比起內(nèi)容光酣,風(fēng)格是一種不容易量化的抽象特征。為了量化圖像的風(fēng)格脉课,我們用紋理結(jié)構(gòu)來(lái)描述不同圖像的風(fēng)格特征救军,而紋理結(jié)構(gòu)可以用CNN提取的不同特征的相關(guān)性(協(xié)方差)來(lái)衡量。

特征圖F \in \mathbb{R}^{C \times H \times W}的不同通道表征著圖像的不同特征倘零,把特征圖的不同通道展開(kāi)寫(xiě)成一行唱遭,則其維度變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=F%20%5Cin%20%5Cmathbb%7BR%7D%5E%7BC%20%5Ctimes%20HW%7D" alt="F \in \mathbb{R}^{C \times HW}" mathimg="1">,其不同特征的相關(guān)性(協(xié)方差)用Gram矩陣表示:
G^{L}_{ij}=\sum_k F^{l}_{ik}F^{l}_{jk}, \quad G^{L} \in \mathbb{R}^{C \times C} \tag{3}
借用兩幅圖來(lái)表述這一過(guò)程:

圖2 將特征圖的通道展開(kāi)成一行

圖3 計(jì)算不同特征的協(xié)方差矩陣

至此呈驶,我們已經(jīng)知道了量化圖像風(fēng)格的方法拷泽。如圖1所示,給定隨機(jī)圖x和風(fēng)格圖a,要使隨機(jī)圖使用梯度下降法更新至紋理和風(fēng)格圖相近司致,那么我們?cè)贑NN的第l層需要定義的損失函數(shù)為:
L^{l}_{s}(x,a)=\frac{1}{4C_{l}^{2}W_{l}^{2}H_{l}^{2}}\sum_{i,j}(G^{l}_{ij}-A^{l}_{ij})^2 \tag{4}
其中G^{l}_{ij}是隨機(jī)圖x在第l層的特征圖的Gram矩陣拆吆,A^{l}_{ij}是風(fēng)格圖a在第l層的特征圖的Gram矩陣。這里的損失函數(shù)也是誤差平方損失脂矫,只不過(guò)是二者協(xié)方差矩陣的誤差枣耀。輸入特征進(jìn)過(guò)計(jì)算協(xié)方差,由前后變化的維度即可得知損失了位置信息庭再,但是這不影響風(fēng)格的遷移捞奕。

原論文的作者認(rèn)為CNN不同層生成的風(fēng)格水平不同,同時(shí)采用多個(gè)層的風(fēng)格損失相結(jié)合會(huì)使生成圖像效果更好:
L_s=\sum_{l}w_{l}L^{l}_{s} \tag{5}
其中w_{l}是不同層的風(fēng)格損失的權(quán)重拄轻,是經(jīng)驗(yàn)值(就是超參數(shù)缝彬,隨便調(diào))。

vgg16示意圖哺眯,內(nèi)容損失只采用conv3_3的輸出,風(fēng)格損失采用conv1_2扒俯,conv2_2奶卓,conv_3_3以及conv4_3的輸出

同樣的,通過(guò)保持CNN參數(shù)不變撼玄,使用梯度下降法在訓(xùn)練中不斷更新隨機(jī)圖(更新方法參考公式(2))夺姑,即能使其具有風(fēng)格圖的紋理特征。

3.風(fēng)格遷移:

如圖1所示掌猛,風(fēng)格遷移的目標(biāo)是給定內(nèi)容圖盏浙,風(fēng)格圖,以及訓(xùn)練好的CNN荔茬,使隨機(jī)圖通過(guò)訓(xùn)練不斷更新废膘,能夠即具有內(nèi)容圖的內(nèi)容,又具有風(fēng)格圖的紋理慕蔚,即圖1中的結(jié)合圖丐黄。從結(jié)果來(lái)看,我們是把風(fēng)格圖的風(fēng)格“遷移”到了內(nèi)容圖上孔飒。但從過(guò)程來(lái)看灌闺,實(shí)際是一個(gè)圖像生成的過(guò)程。

這一目標(biāo)實(shí)際就是以上兩步(內(nèi)容生成和風(fēng)格生成)的結(jié)合坏瞄,我們定義的損失函數(shù)就是內(nèi)容損失函數(shù)和風(fēng)格損失函數(shù)的加權(quán)和:
L(x,p,a)=\alpha L_c + \beta L_s
這里的\alpha\beta分別是內(nèi)容損失和風(fēng)格損失的權(quán)重桂对,也是經(jīng)驗(yàn)值。\alpha越大鸠匀,結(jié)合圖的內(nèi)容就越具像蕉斜,反之越模糊;\beta值越大,結(jié)合圖的紋理越相近蛛勉。

同樣地鹿寻,和公式(2)一樣,在訓(xùn)練過(guò)程中诽凌,保持CNN參數(shù)不變毡熏,通過(guò)反向傳播,利用梯度下降法不斷地更新隨機(jī)圖x侣诵,即可實(shí)現(xiàn)內(nèi)容圖和風(fēng)格圖的結(jié)合痢法,生成圖1所示的結(jié)合圖。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杜顺,一起剝皮案震驚了整個(gè)濱河市财搁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌躬络,老刑警劉巖尖奔,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異穷当,居然都是意外死亡提茁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)馁菜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)茴扁,“玉大人,你說(shuō)我怎么就攤上這事汪疮∏突穑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵智嚷,是天一觀(guān)的道長(zhǎng)卖丸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)盏道,這世上最難降的妖魔是什么坯苹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮摇天,結(jié)果婚禮上粹湃,老公的妹妹穿的比我還像新娘。我一直安慰自己泉坐,他們只是感情好为鳄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著腕让,像睡著了一般孤钦。 火紅的嫁衣襯著肌膚如雪歧斟。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天偏形,我揣著相機(jī)與錄音静袖,去河邊找鬼。 笑死俊扭,一個(gè)胖子當(dāng)著我的面吹牛队橙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播萨惑,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼捐康,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了庸蔼?” 一聲冷哼從身側(cè)響起解总,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姐仅,沒(méi)想到半個(gè)月后花枫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掏膏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年劳翰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壤追。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖供屉,靈堂內(nèi)的尸體忽然破棺而出行冰,到底是詐尸還是另有隱情,我是刑警寧澤伶丐,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布悼做,位于F島的核電站,受9級(jí)特大地震影響哗魂,放射性物質(zhì)發(fā)生泄漏肛走。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一录别、第九天 我趴在偏房一處隱蔽的房頂上張望朽色。 院中可真熱鬧,春花似錦组题、人聲如沸葫男。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)梢褐。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盈咳,已是汗流浹背耿眉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鱼响,地道東北人鸣剪。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像热押,于是被迫代替她去往敵國(guó)和親西傀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容