Perceptual Losses for Real-Time Style Transfer and Super-Resolution----論文筆記
本文是參考文獻[1]的筆記。該論文是Li Fei-Fei名下的論文。
引入
最近新出的影象風格轉換演算法,雖然效果好,但對於每一張要生成的圖片,都需要初始化,然後保持CNN的引數不變,反向傳播更新影象,得到最後的結果。效能問題堪憂。
但是影象風格轉換演算法的成功,在生成影象領域,產生了一個非常重要的idea,那就是可以將卷積神經網路提取出的feature,作為目標函式的一部分,通過比較待生成的圖片經過CNN的feature值與目標圖片經過CNN的feature值,使得待生成的圖片與目標圖片在語義上更加相似(相對於Pixel級別的損失函式)。
影象風格轉換演算法將圖片生成以生成的方式進行處理,如風格轉換,是從一張噪音圖(相當於白板)中得到一張結果圖,具有圖片A的內容和圖片B的風格。而Perceptual Losses則是將生成問題看做是變換問題。即生成影象是從內容圖中變化得到。
影象風格轉換是針對待生成的影象進行求導,CNN的反向傳播由於引數眾多,是非常慢的,同樣利用卷積神經網路的feature產生的loss,訓練了一個神經網路,將內容圖片輸入進去,可以直接輸出轉換風格後的影象。而將低解析度的影象輸入進去,可以得到高解析度的影象。因為只進行一次網路的前向計算,速度非常快,可以達到實時的效果。
架構
下面這個網路圖是論文的精華所在。圖中將網路分為Transform網路和Loss網路兩種,在使用中,Transform網路用來對影象進行轉換,它的引數是變化的,而Loss網路,則保持引數不變,Transform的結果圖,風格圖和內容圖都通過Loss Net得到每一層的feature啟用值,並以之進行Loss計算。
在風格轉換上,輸入x=yc是內容圖片。而在圖片高清化上,x是低解析度圖片,內容圖片是高解析度圖片,風格圖片未曾使用。
網路細節
網路細節的設計大體遵循DCGAN中的設計思路:
- 不使用pooling層,而是使用strided和fractionally strided卷積來做downsampling和upsampling,
- 使用了五個residual blocks
- 除了輸出層之外的所有的非residual blocks後面都跟著spatial batch normalization和ReLU的非線性啟用函式。
- 輸出層使用一個scaled tanh來保證輸出值在[0, 255]內。
- 第一個和最後一個卷積層使用9×9的核,其他卷積層使用3×3的核。
確切的網路引數值請參考文獻2。
輸入輸出
- 對於風格轉換來說,輸入和輸出的大小都是256×256×3。
- 對於圖片清晰化來說,輸出是288×288×3,而輸入是288/f×288/f×3,f是壓縮比,因為Transform Net是全卷積的,所以可以支援任意的尺寸。
Downsampling and Upsampling
- 對於圖片清晰化來說,當upsampling factor是f的時候,使用後面接著log2f個stride為1/2卷積層的residual blocks.
- fractionally-strided卷積允許網路自己學習一個upsampling函數出來。
- 對於風格轉換來說,使用2個stride=2的卷積層來做downsample,每個卷積層後面跟著若干個residual blocks。然後跟著兩個stride=1/2的卷積層來做upsample。雖然輸入和輸出相同,但是這樣有兩個優點:
- 提高效能,減少了引數
- 大視野,風格轉換會導致物體變形,因而,結果影象中的每個畫素對應著的初始影象中的視野越大越好。
Residual Connections
殘差連線可以幫助網路學習到identify function,而生成模型也要求結果影象和生成影象共享某些結構,因而,殘差連線對生成模型正好對應得上。
損失函式
同影象風格轉換演算法類似,論文定義了兩種損失函式。其中,損失網路都使用在ImageNet上訓練好的VGG net,使用φ來表示損失網路。
Feature Reconstruction Loss
- j表示網路的第j層。
- CjHjWj表示第j層的feature_map的size
使用不同層的重建效果如下:
Style Reconstruction Loss
對於風格重建的損失函式,首先要先計算Gram矩陣,
產生的feature_map的大小為CjHjWj,可以看成是Cj個特徵,這些特徵兩兩之間的內積的計算方式如上。
兩張圖片,在loss網路的每一層都求出Gram矩陣,然後對應層之間計算歐式距離,最後將不同層的歐氏距離相加,得到最後的風格損失。
不同層的風格重建效果如下:
Simple Loss Function
- Pixel Loss,畫素級的歐氏距離。
- Total Variation Regularization,是之前feature inversion和super resolution工作中使用的損失,具體還需參考論文的參考論文[6,20,48,49]
Loss對比
在影象風格轉換任務上,針對不同解析度的影象,Loss值在Perceptual Loss(ours)和影象風格轉換([10])以及內容圖片上的。
可以看到,使用Perceptual Loss相當於原始演算法迭代50到100次。
而就時間來看:
可以提升幾百倍,在GPU上0.0015s可以達到相當的效果,在CPU上更具實用性。
效果圖
風格轉換
雖然風格轉換是在256的圖片上訓練的,但也可以應用到其他size上,比如512的
圖片超清
4倍清晰度提升:
8倍清晰度提升:
總結
貢獻當然就是影象風格轉換的實用化:
- 速度三個量級的提升。
- fully convolutional network可以應用於各種各樣的尺寸。
參考文獻
- Perceptual Losses for Real-Time Style Transfer and Super-Resolution.
- Perceptual Losses for Real-Time Style Transfer and Super-Resolution: Supplementary Material