實(shí)時(shí)風(fēng)格轉(zhuǎn)移和超分辨率的感知損失

本文是基于Perceptual Losses for Real-Time Style Transfer and Super-Resolution這篇論文的總結(jié)耙替。原文鏈接:https://arxiv.org/pdf/1603.08155.pdf 熙卡。

一.摘要:

該方法適用于圖像轉(zhuǎn)換的問題似谁,即一張輸入圖片被轉(zhuǎn)為輸出圖片砸狞。

當(dāng)前用于解決該問題的方法有兩種:

1. 使用基于單像素點(diǎn)損失函數(shù)(輸出和標(biāo)準(zhǔn)圖片的損失)的前饋卷積神經(jīng)網(wǎng)絡(luò)。

2. 通過定義及優(yōu)化感知損失函數(shù)衙解,其是基于從預(yù)訓(xùn)練的網(wǎng)絡(luò)中提取的高質(zhì)量特征把将。

而此文,是將兩種方法的優(yōu)點(diǎn)結(jié)合起來揽惹,提出了一種能利用感知損失函數(shù)來訓(xùn)練的前饋神經(jīng)網(wǎng)絡(luò)被饿。

二.簡介:

很多經(jīng)典的問題都可以看作是圖像轉(zhuǎn)換的問題。比如是圖像處理問題(去噪搪搏,高分辨率和染色法)狭握,在這些問題中,輸入的圖片都是很低級的(含噪聲疯溺,低分辨率和灰度級)论颅,但輸出都是高質(zhì)量的彩色圖片。再比如囱嫩,在計(jì)算機(jī)視覺領(lǐng)域的語義分割(語義分割好文:http://www.tuicool.com/articles/eEfm2mv)和深度預(yù)測恃疯,即輸入是一張彩色的圖片,而輸出是一張將場景的語義或者地理信息編碼了的圖片墨闲。

解決這個(gè)問題的一種方法是用監(jiān)督學(xué)習(xí)的方法今妄,訓(xùn)練一個(gè)前饋卷積神經(jīng)網(wǎng)絡(luò),基于單像素點(diǎn)的損失函數(shù)去衡量輸出和標(biāo)準(zhǔn)圖片的差距鸳碧。這個(gè)方法被廣泛使用盾鳞,比如:

1. Dong, C., Loy, C.C., He, K., Tang, X.: Image super-resolution using deep convolutional networks. (2015)

2. Cheng, Z., Yang, Q., Sheng, B.: Deep colorization. In: Proceedings of the IEEE

International Conference on Computer Vision. (2015) 415–423

3. Long, J., Shelhamer, E., Darrell, T.: Fully convolutional networks for semantic

segmentation. CVPR (2015)

但是,這個(gè)單像素點(diǎn)誤差的方法不能捕捉輸出和標(biāo)準(zhǔn)圖片的感知差別瞻离。比如腾仅,兩幅完全相同的照片,但是有1個(gè)像素點(diǎn)的偏移套利。盡管在感知上是相似的(即你察覺不出來一個(gè)像素點(diǎn)的偏移對成像有什么影響)推励,但是在單像素點(diǎn)誤差的方法上衡量卻是有極大的差別鹤耍。

同時(shí),最近的工作表明验辞,高質(zhì)量的圖片能夠通過感知損失函數(shù)得來稿黄,但不是基于單像素點(diǎn)誤差的方法,而是基于與預(yù)先訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)從提取出的高水平圖片特征的不同跌造。

我們的方法是結(jié)合了這兩種方法抛猖,使得其更具有魯棒性。

該方法在兩種任務(wù)中做了實(shí)驗(yàn):風(fēng)格遷移和單圖像高分辨率鼻听。

三.相關(guān)工作:

1.前饋圖像轉(zhuǎn)換

2.感知優(yōu)化

3.風(fēng)格遷移:將一張圖片的內(nèi)容同另外一張圖片的風(fēng)格結(jié)合起來。這個(gè)是基于風(fēng)格重建損失函數(shù)联四。

4.圖像超分辨率


四.方法

如上圖所示撑碴,該系統(tǒng)由兩部分組成:圖像轉(zhuǎn)換網(wǎng)絡(luò)fw和損失網(wǎng)絡(luò)(用來定義許多的損失函數(shù))。圖像轉(zhuǎn)換網(wǎng)絡(luò)是一個(gè)通過權(quán)重W表示的深度殘差卷機(jī)神經(jīng)網(wǎng)絡(luò)朝墩;他通過一個(gè)映射y=fw(x)將輸入圖片x轉(zhuǎn)換為輸出圖片y醉拓。每個(gè)損失函數(shù)計(jì)算了一個(gè)標(biāo)量值,其衡量了輸出圖片與標(biāo)準(zhǔn)圖片的差距收苏。這個(gè)網(wǎng)絡(luò)用隨機(jī)梯度下降的方法去優(yōu)化損失函數(shù)亿卤。

為了解決單像素點(diǎn)損失的缺點(diǎn),使我們的損失函數(shù)更好的衡量圖片間的感知和語義差別鹿霸,我們從最近的論文中得到了些靈感排吴。這些方法的核心思想就是預(yù)先訓(xùn)練的圖像分類的卷機(jī)神經(jīng)網(wǎng)絡(luò)能夠?qū)W習(xí)到如何將我們將要在損失函數(shù)進(jìn)行衡量的感知和語義信息進(jìn)行編碼。

損失網(wǎng)絡(luò)是用來定義特征重建損失和風(fēng)格重建損失懦鼠。對于每個(gè)輸入圖片钻哩,我們都有一個(gè)內(nèi)容目標(biāo)和風(fēng)格目標(biāo)。對于風(fēng)格遷移肛冶,內(nèi)容目標(biāo)是輸入圖片x街氢,輸出圖片是內(nèi)容目標(biāo)和風(fēng)格目標(biāo)的結(jié)合,我們?yōu)槊總€(gè)風(fēng)格目標(biāo)訓(xùn)練一個(gè)網(wǎng)絡(luò)睦袖。對于單圖片超分辨率珊肃,輸入是低分辨率的圖片,內(nèi)容目標(biāo)是標(biāo)準(zhǔn)高分標(biāo)率突破馅笙,風(fēng)格重建損失沒有用到伦乔。

1. 圖像轉(zhuǎn)換網(wǎng)絡(luò)

這個(gè)網(wǎng)絡(luò)中,我們沒有使用pooling layer延蟹,而是使用strided and fractionally strided convolutions for in-network downsampling and upsampling.我們的網(wǎng)絡(luò)借助了其他論文的結(jié)構(gòu)评矩,使用了五個(gè)殘差塊。所有的非殘差卷基層都是用了batch normalization和Relu的非線性輸出層阱飘。除了第一層和最后一層用了9*9的卷積核斥杜,所有的卷積層都是用了3*3的卷積核虱颗。

輸入輸出:

風(fēng)格遷移的輸入輸出都是3*256*256的彩色圖片。超分辨率的規(guī)格是unsampling因子f蔗喂,輸出是3*288*288的高分辨率圖片忘渔,輸入是3*288/f*288/f低分辨率圖片。因?yàn)閳D片轉(zhuǎn)換網(wǎng)絡(luò)是全卷積的缰儿,所以對于任何的分辨率都可以用畦粮。

上采樣與下采樣:

downsampling即下采樣,主要是對數(shù)字信號進(jìn)行下采樣操作乖阵,例如數(shù)字圖像處理中對圖片進(jìn)行壓縮時(shí)宣赔,N*N的矩陣變成了(N/2)*(N/2),這個(gè)步驟就是對原圖片進(jìn)行了下采樣瞪浸。還有一個(gè)例子儒将,在離散小波變換(DWT)中,每次將m層的低頻成分的系數(shù)(n個(gè))通過低通濾波器以后得到m-1層的n個(gè)低頻成分系數(shù)对蒲,通過高通濾波器以后得到m-1層的n個(gè)高頻成分系數(shù)钩蚊,如果直接合并就成了2n個(gè)系數(shù),這里需要對兩種成分各自進(jìn)行下采樣蹈矮,使得經(jīng)過變化后的系數(shù)依然保持n個(gè)砰逻。

upsampling與downsampling概念相反,也可以理解成插值(interpolation)泛鸟。舉個(gè)例子蝠咆,比如在放大某個(gè)數(shù)字圖像的時(shí)候,新放大的圖像的某些像素點(diǎn)的值是需要預(yù)測插值的谈况,這個(gè)插值的過程其實(shí)就是上采樣勺美。

取自:https://www.zhihu.com/question/19913939/answer/13685695

對于超分辨率,上采樣因子f碑韵,在步長為1/2赡茸,log2f層卷積層后用了幾個(gè)殘差塊。這個(gè)與用雙三次插值低像素圖片后再輸入到網(wǎng)絡(luò)的方法不同祝闻。比起依賴于用一個(gè)固定的上采樣方程占卧,fractionally-strided的卷積使得上采樣方程能夠從剩下的網(wǎng)絡(luò)中學(xué)習(xí)到。

補(bǔ)一個(gè):雙三次插值:http://blog.csdn.net/qq_29058565/article/details/52769497

對于風(fēng)格遷移联喘,我們網(wǎng)絡(luò)使用步長為2的卷積網(wǎng)絡(luò)和幾個(gè)殘差塊去做下采樣华蜒,然后再用步長為1/2的兩個(gè)卷基層去做上采樣。盡管輸入和輸出有著相同的大小豁遭,先做下采樣然后再上采樣有幾個(gè)好處叭喜。

1. 計(jì)算量。 如果是最簡單的方法蓖谢,對C*H*W的輸入?yún)^(qū)域用3*3的卷積和濾波器C捂蕴,需要9hwc^2的乘加譬涡,這個(gè)的代價(jià)和在DC*H/D*W/D的輸入上用3*3的卷積用DC濾波器的代價(jià)是一樣的。在下采樣之后啥辨,我們可以在相同的代價(jià)上用一個(gè)更大的網(wǎng)絡(luò)涡匀。

2. 有效的感受野大小。高質(zhì)量的風(fēng)格遷移需要連貫的改變原圖片的大部分區(qū)域溉知,所以對于在輸出的每個(gè)像素點(diǎn)如果有一個(gè)大的有效的局部感受野的話陨瘩,無疑是有巨大的好處。如果沒有下采樣的話级乍,每個(gè)3*3的卷積層增加了2個(gè)單位的局部感受野舌劳。但是在D因子的下采樣之后,每個(gè)3*3的卷積層增加了2D大小的局部感受野玫荣,那就是說在相同數(shù)量的卷積層上蒿囤,能夠有更大的局部感受野。

殘差連接:

用了許多residual blocks崇决,每個(gè)block包含了2層3*3的卷積層。

2. 感知損失函數(shù)

Feature Reconstruction Loss:

比起直接的計(jì)算每個(gè)輸出的像素點(diǎn)與標(biāo)準(zhǔn)圖片的像素點(diǎn)的差距底挫,我們計(jì)算由pre-trained的損失網(wǎng)絡(luò)計(jì)算出來的相似特征表達(dá)的差距恒傻。公式如下:

Style Reconstruction Loss:

feature reconstruction loss懲罰了輸出圖片當(dāng)其與目標(biāo)圖片偏離。我們同樣懲罰圖片在風(fēng)格上建邓,比如顏色盈厘,質(zhì)地和模式等。為了達(dá)到這個(gè)效果官边,提出了style reconstruction loss沸手。公式如下:

3. 簡單的損失函數(shù)

除了上面定義的感知損失函數(shù),我們也定義了兩個(gè)簡單的僅依賴于低級的像素信息的損失函數(shù)注簿。

Pixel Loss:?

這個(gè)loss是輸出圖片與標(biāo)準(zhǔn)圖片的像素的歐式距離契吉。如果它們都是C*H*W的大小,那么像素loss可以定義為:

Total Variation Regularization


五. 實(shí)驗(yàn)

1. 風(fēng)格遷移

2. 單圖片的超分辨率

對于單圖片的超分辨率诡渴,這個(gè)任務(wù)是從低分辨率的輸入去生成一個(gè)高分辨率的輸出捐晶。這歌問題很棘手,因?yàn)閷τ诿總€(gè)低分辨率的圖片來說妄辩,都存在著生成多個(gè)高分辨率的圖片的可能性惑灵。這個(gè)問題隨著擴(kuò)大因子的變大而變得越來越棘手,因?yàn)楹茈y從低像素的圖片中找到支持高分辨率細(xì)節(jié)的證據(jù)眼耀。為了克服這個(gè)困難英支,我們用圖像特征重建函數(shù)來代替簡單的像素?fù)p失函數(shù)。

補(bǔ)充:

超分辨率:指的是將低像素的圖片轉(zhuǎn)化為高像素的圖片哮伟。圖片的分辨率高還是低取決于像素點(diǎn)的個(gè)數(shù)干花。如果要得到高的分辨率妄帘,那么圖片的大小必定要發(fā)生改變。這里的輸入是將原圖進(jìn)行下采樣把敢,然后喂進(jìn)神經(jīng)網(wǎng)絡(luò)寄摆,然后輸出同原圖一樣的大小。所以和輸入對比的話修赞,輸出的大小是變化了的婶恼。

The usual way of training a network:

You want to train a neural network to perform a task (e.g. classification) on a data set (e.g. a set of images). You start training by initializing the weights randomly. As soon as your start training, the weights are changed in order to perform the task with less mistakes (i.e. optimization). Once you're satisfied with the training results you save the weights of your network somewhere.

You are now interested in training a network to do perform a new task (e.g. object detection) on a different data set (e.g. images too but not the same as the ones you used before). Instead of repeating what you did for the first network and start from training with randomly initialized weights, you can use the weights you saved from the previous network as the initial weight values for your new experiment. Initializing the weights this way is referred to as using a pre-trained network. The first network is your pre-trained network. The second one is the network you are fine-tuning.

The idea behind pre-training is that random initialization is...well...random, the values of the weights have nothing to do with the task your trying to solve. Why should a set of values be any better than another set? But how else would you initialize the weights? If you knew how to initialize them properly for the task, you might as well set them to the optimal values (slightly exaggerated). No need to train anything. You have the optimal solution to your problem. Pre-training gives the network a head start. As if it has seen the data before.

What to watch out for when pre-training:

The first task used in pre-training the network can be the same as the fine-tuning stage. The datasets used for pre-training vs. fine-tuning can also be the same, but can also be different. It's really interesting to see how pre-training on a different task and different dataset can still betransferredto a new dataset and new task that areslightlydifferent. Using a pre-trained network generally makes sense if the both tasks or both datasets have something in common. The bigger the gap, the less effectvie pre-training will be. It makes little sense to pre-train a network for image classification by training it one financial data first. In this case there's too muchdisconnectbetween the pre-training and fine-tuning stages.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市柏副,隨后出現(xiàn)的幾起案子勾邦,更是在濱河造成了極大的恐慌,老刑警劉巖割择,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眷篇,死亡現(xiàn)場離奇詭異,居然都是意外死亡荔泳,警方通過查閱死者的電腦和手機(jī)蕉饼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玛歌,“玉大人昧港,你說我怎么就攤上這事≈ё樱” “怎么了创肥?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長值朋。 經(jīng)常有香客問我叹侄,道長,這世上最難降的妖魔是什么昨登? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任趾代,我火速辦了婚禮,結(jié)果婚禮上丰辣,老公的妹妹穿的比我還像新娘稽坤。我一直安慰自己,他們只是感情好糯俗,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布尿褪。 她就那樣靜靜地躺著,像睡著了一般得湘。 火紅的嫁衣襯著肌膚如雪杖玲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天淘正,我揣著相機(jī)與錄音摆马,去河邊找鬼臼闻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛囤采,可吹牛的內(nèi)容都是我干的述呐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼蕉毯,長吁一口氣:“原來是場噩夢啊……” “哼乓搬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起代虾,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤进肯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后棉磨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體江掩,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年乘瓤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了环形。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡衙傀,死狀恐怖斟赚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情差油,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布任洞,位于F島的核電站蓄喇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏交掏。R本人自食惡果不足惜妆偏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盅弛。 院中可真熱鬧钱骂,春花似錦、人聲如沸挪鹏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讨盒。三九已至解取,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間返顺,已是汗流浹背禀苦。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工蔓肯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人振乏。 一個(gè)月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓蔗包,卻偏偏與公主長得像,于是被迫代替她去往敵國和親慧邮。 傳聞我的和親對象是個(gè)殘疾皇子调限,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

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