論文原文:https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7115171&tag=1
一、簡介
超分辨率(super resolution)的任務目標是將輸入的低分辨率的圖像轉換為高分辨率的圖像,與圖像去噪、圖像去模糊等一脈相承。個人認為:超分辨率關注的是從小尺寸到大尺寸圖像如何填充新的像素;圖像去噪則是關注在圖像尺寸不變的情況下,將被“污染”的像素替換為正確的像素。
SRCNN是首個使用CNN結構(即基于深度學習)的端到端的超分辨率算法,這個相當于什么呢?就像faster r-cnn在目標檢測的地位一樣,將整個算法流程用深度學習的方法實現了,并且效果比傳統多模塊集成的方法好。SRCNN流程如下:首先,輸入預處理。對輸入的低分辨率lr圖像使用bicubic算法進行放大,放大為目標尺寸。那么接下來算法的目標就是將輸入的比較模糊的lr圖像,經過卷積網絡的處理,得到超分辨率sr的圖像,使它盡可能與原圖的高分辨率hr圖像相似。
二、模型及訓練
SRCNN的結構較簡單,整個卷積網絡包括三個卷積層,甚至沒有池化和全連接層:
- 對低分辨率的圖進行卷積操作,生成n1維的feature maps
- 對n1維的feature map進行卷積操作生成n2維 feature maps
- 對n2維的feature maps進行卷積生成超分辨的圖像
分別對應三個處理流程:
- 提取圖像特征:從低分辨率圖像中提取多個patch圖像塊,每個塊被卷積操作表示為多維的向量(維數等于filter的數量),所有的特征向量組成特征矩陣(feature maps)
- 非線性映射:將n1維特征矩陣,通過卷積操作實現非線性映射,變成另一n2維特征矩陣。
- 重構圖像:等于是個反卷積的過程,將n2的特征矩陣還原為超分辨圖像
模型訓練的優化參數是三層卷積層對應的卷積核(w)和bias(b),參數P={W_1,W_2,W_3,b_1,b_2,b_3}。訓練的目標損失是最小化超分辨率圖像F(Y;P)與原高分辨率圖像X基于像素的均方誤差MSE,定義如下:
其中n是訓練樣本數量,即每次訓練的樣本數量。接下來無非就是隨機梯度下降法反向傳播,網絡訓練得到最終的參數P使損失L最小化,參數更新公式如下:
三、實驗
3.1、對比卷積核大小(filter size)、卷積核數量(filter numbers)對復原效果的影響的實驗
結論:卷積核數量越多,即特征向量維數越高,實驗效果越好,但是會影響算法速度,故需要綜合考慮;另外三層卷積層的卷積核大小越大,實驗效果也會略微更好,同樣會影響算法速度。
3.2、對比網絡層數(layer numbers)對復原效果的影響的實驗
結論:并非網絡越深,效果越好,結果恰恰相反。作者也給出了解釋:因為SRCNN沒有池化層和全連接層,導致網絡對初始參數和學習率非常敏感,結果即網絡訓練的時候非常難以收斂,即使收斂了也可能停在了壞的局部最小值(bad local minimum)處,并且即使訓練了足夠的時間,學習到的filter參數的分散度也不夠好。
3.3、與最前沿的其他超分算法對比速度與性能的實驗
數據集選擇的是ImageNet上的BSD200、Set14、Set5,對比對象是Bicubic、SC、NE+LLE、KK、ANR、A+與SRCNN。結果如下:
結論:
對于復原質量,SRCNN在大部分指標上都表現最好。超分辨率問題(SR)用PSNR作為重建的指標,但是高PSNR并不意味著重建結果好。因為SR是病態問題,這就意味著可能解有無窮多個。以MSE(等價于PSNR)為loss函數得到的解往往是這些可能解的平均,而不是最優解。這就導致以MSE為loss的SR算法得到的結果有些區域看起來過于模糊,缺乏應有的細節。這也是為什么出現了數值評估低,但肉眼看著效果更好的現象。故作者選擇了很多項指標來評價復原圖像的質量;
對于復原速度,前面提到卷積核大小會影響速度,故作者對比了三種不同卷積核大小的SRCNN與其他算法的速度,總的來說SRCNN的復原速度屬于前列水平。
3.4、通道對復原效果影響的實驗
結論:RGB通道聯合訓練效果最好;YCbCr通道下,Cb、Cr通道對性能提升基本無幫助,只基于Y通道的訓練效果更好。
四、小結
SRCNN提出輕量的端到端網絡SRCNN來解決超分問題,的確在當時取得了比傳統方法性能更強、速度更快的效果,另外作者將基于SC(稀疏編碼)的超分方法理解為卷積神經網絡的一種形式,都是非常值得閱讀的亮點。