Accelerating the Super-Resolution Convolutional Neural Network
論文鏈接: Accelerating the Super-Resolution Convolutional Neural Network, ECCV2016
FSRCNN與SRCNN都是香港中文大學(xué)Dong Chao, Xiaoou Tang等人的工作。FSRCNN是對(duì)之前SRCNN的改進(jìn),主要在三個(gè)方面:一是在最后使用了一個(gè)反卷積層放大尺寸,因此可以直接將原始的低分辨率圖像輸入到網(wǎng)絡(luò)中,而不是像之前SRCNN那樣需要先通過(guò)bicubic方法放大尺寸。二是改變特征維數(shù),使用更小的卷積核和使用更多的映射層。三是可以共享其中的映射層,如果需要訓(xùn)練不同上采樣倍率的模型,只需要fine-tuning最后的反卷積層。
由于FSRCNN不需要在網(wǎng)絡(luò)外部進(jìn)行放大圖片尺寸的操作,同時(shí)通過(guò)添加收縮層和擴(kuò)張層,將一個(gè)大層用一些小層來(lái)代替,因此FSRCNN與SRCNN相比有較大的速度提升。FSRCNN在訓(xùn)練時(shí)也可以只fine-tuning最后的反卷積層,因此訓(xùn)練速度也更快。FSRCNN與SCRNN的結(jié)構(gòu)對(duì)比如下圖所示。
SRCNN和FSRCNN計(jì)算復(fù)雜度對(duì)比
SRCNN 的處理過(guò)程如下:
- 對(duì)輸入圖片利用雙立方采樣做上采樣,使得其分辨率為目標(biāo)分辨率
- 然后分別利用 9x9, 1x1, 5x5 的卷積來(lái)提高圖片質(zhì)量。其中 1x1 卷積是用來(lái)把低分辨率(LR)圖像向量非線性映射為高分辨率 (HR) 圖像向量.
計(jì)算復(fù)雜度為:
計(jì)算復(fù)雜度和HR圖像大小成線性比例,SHR。HR圖像越大,復(fù)雜度越高。
FSRCNN 包含如下五個(gè)主要處理步驟:
- 特征提?。豪靡粋€(gè) 5x5 卷積代替 SRCNN 中的雙立方差值
- 壓縮:利用 1x1 卷積把特征層從 d 壓縮為 s,其中 s 小于 d
- 非線性映射:多個(gè) 3x3 網(wǎng)絡(luò)層代替單個(gè)的寬網(wǎng)絡(luò)層
- 擴(kuò)大: 1x1 卷積把特征層從 s 擴(kuò)大為 d
- 反卷積: 利用 9x9 過(guò)濾器重建 HR 圖像
以上結(jié)構(gòu)就是 FSRCNN(d,s,m). 其計(jì)算復(fù)雜度如下:
可見(jiàn)復(fù)雜度和 LR 圖像大小成線性比例,SLR,所以它的復(fù)雜度小于 SRCNN
網(wǎng)絡(luò)中激活函數(shù)是 PReLU. PReLU意為帶參數(shù)的ReLu,目的是比 ReLU 更好。
PReLU:對(duì)于每個(gè)卷積層之后的激活函數(shù),我們建議使用參數(shù)整流線性單元(PReLU)代替常用的整流線性單元(ReLU)。它們?cè)谪?fù)數(shù)部分的系數(shù)上是不同的。對(duì)于ReLU和PReLU,我們可以將一般激活函數(shù)定義為
其中xi是第i個(gè)通道上激活f的輸入信號(hào),并且 ai是負(fù)數(shù)部分的系數(shù)。 對(duì)于ReLU,參數(shù)ai固定為零,但對(duì)于PReLU是可學(xué)習(xí)的。 我們選擇PReLU主要是為了避免ReLU中零梯度引起的“死亡特征”。 然后我們可以充分利用所有參數(shù)來(lái)測(cè)試不同網(wǎng)絡(luò)設(shè)計(jì)的最大容量。 實(shí)驗(yàn)表明,PReLU激活網(wǎng)絡(luò)的性能更穩(wěn)定。
代價(jià)函數(shù)是均方誤差(MSE):
如何利用 1x1 卷積對(duì)網(wǎng)絡(luò)進(jìn)行壓縮和擴(kuò)大
假設(shè)我們?cè)诓皇褂?1x1 卷積的情況下運(yùn)行 5x5 卷積,如下所示

計(jì)算次數(shù) = (14x14x48)x(5x5x480) = 112.9M
如果使用 1x1 卷積:

1x1 卷積計(jì)算次數(shù) = (14x14x16)x(1x1x480) = 1.5M
5x5 卷積計(jì)算此時(shí) = (14x14x48)x(5x5x16) = 3.8M
兩者總共計(jì)算次數(shù) = 1.5M + 3.8M = 5.3M,比只使用 5x5 足足少了 112.9M 次計(jì)算。
因此在兩個(gè)卷積層之前使用 1x1 卷積來(lái)減少連接(參數(shù))。通過(guò)減少參數(shù),我們只需要更少的乘法和加法運(yùn)算,最終加速網(wǎng)絡(luò)。這就是 FSRCNN 比 SRCNN 快的原因。
如何利用多個(gè) 3x3 卷積實(shí)現(xiàn)非線性映射
如上圖所示通過(guò)使用2層 3x3 濾波器來(lái)覆蓋 5x5 濾波器的區(qū)域,讓參數(shù)數(shù)量變少。
1層 5x5 濾波器的參數(shù)數(shù)量 = 5x5 = 25
2層 3x3 濾波器的參數(shù)數(shù)量 = 3x3+3x3 = 18
參數(shù)量減少了28%。而更少的參數(shù)意味著網(wǎng)絡(luò)在訓(xùn)練的時(shí)候可以更快的收斂,并減少過(guò)擬合問(wèn)題。
實(shí)驗(yàn)訓(xùn)練數(shù)據(jù)
訓(xùn)練集:之前傳統(tǒng)SR method基本都在Set91上訓(xùn)練,但是對(duì)CNN來(lái)說(shuō),Set91并不夠去訓(xùn)練大的網(wǎng)絡(luò)結(jié)構(gòu)。由于BSD500是jpeg格式,存在壓縮所以也不適合做訓(xùn)練dataset。本文提出general-100 + Set91進(jìn)行充當(dāng)訓(xùn)練集。并且進(jìn)行數(shù)據(jù)增強(qiáng),1)downscale 0.9, 0.8, 0.7 and 0.6。 2) Rotation 90,180,270。因此我們將會(huì)得到20倍的訓(xùn)練數(shù)據(jù)。