超分辨率-RDN

一、簡介

RDN——Residual Dense Network—— 殘差深度網絡
RDN是基於深度學習的超分方法之一,發表於CVPR 2018

二、結構

RDN網絡結構分爲4個部分:

1、SFENet(Shallow Feature Extraction Net, 淺層特徵提取網絡)
2、RDBs( Residual Dense Blocks, 殘差稠密塊)
3、DFF(Dense Feature Fusion, 稠密特徵塊 )
4、Up-Sampling Net(上採樣網絡)

在這裏插入圖片描述

2.1 SFENet

包含兩個CONV層,用於提取淺層特徵

2.2 RDBs

包含D個RDB,用於提取各層特徵,一個RDB提取出一個局部特徵。RDB結構如下圖(c)所示:
在這裏插入圖片描述
可以看出,RDB = Residual block(殘缺塊) + Dense block(稠密塊)
由於網絡深度的增加,每層CONV層的特徵會逐漸分級(得到hierarchical features),因爲有不同的感受野(receptive fileds)。而Hierarchical features對圖像重建提供了重要信息, 我們要充分利用所有層的信息和特徵。

一個RDB結構分爲3個部分:

2.2.1 CM(Contiguous Memory 近鄰記憶)

RDB含有C個[CONV+ReLU],CM機制會將上一個RDB的狀態發送到當前RDB中的每一個CONV層,也就是圖(c)的小橋們

2.2.2 LFF(Local Feature Fusion 局部特徵融合)

LLF將前一個RDB的各個狀態與當前RDB的所有CONV層融合在一起。
RDN中,前一個RDB輸出的feature-map 是直接與當前RDB串聯起來的,這時,減少feature的數量就很有必要了。
我們使用一個11的CONV來減少feature的數量/控制輸出信息:11CONV用於減少通道數,並保持nh,nw不變(具體看吳恩達深度學習4.2.5筆記)

2.2.3 LRL(Local Residual Learning 局部殘差學習)

也就是將以下兩者加起來,看c圖下部的紅箭頭以及綠色加號:
前一RDB的輸出 + 上面LFF的1*1CONV的輸出
引入LRL以進一步提高信息流、提高網絡表示能力,以達到更好的性能


2.3 DFF(Dense Feature Fusion, 稠密特徵塊 )

DFF在全局上提取各層特徵。
包含兩個部分:

2.3.1. GFF(global feature fusion 全局特徵融合)

GFF 用於將所有RDB提取到的特徵融合在一起,得到全局特徵。GFF分爲兩部分:

 1x1 CONV 融合一系列的特徵(1*1CONV的作用就是減少通道數,並保持Nh, Nw,詳見吳恩達4.2.5)
 3x3 CONV 爲下一步的GRL進一步提取特徵
2.3.2. GRL(global residual learning 全局殘差學習)

就是RDN結構圖中的綠色加號
就是實現:
淺層特徵 + 所有RDB提取到的特徵

2.4 UPNet(Up-Sampling Net 上採樣網絡)

該模塊表示網絡最後的上採樣+卷積操作。實現了輸入圖片的放大操作。


三、實現細節

  1. 除了用於融合局部或全局特徵的CONV層的kernel size = 1x1 外,其他的CONV層都是 3x3的
  2. kernel size = 3x3的CONV層,都用SAME padding 以保持inputsize不變
  3. 淺層特徵提取層、局部全局特徵融合層的CONV的filter數量都是G0 = 64
  4. 其他層(RDB中)的CONV的filter數量都是G,並使用ReLU作爲其激活函數
  5. 使用ESPCNN來提高粗分辨率特徵,從而使得UPNet性能更好(???)
  6. RDN最後的CONV,若需要輸出彩色高清圖像,則可設置其輸出的channel = 3;若需要輸出灰度高清圖像,可設置其輸出的channel = 1

四、討論(與其他網絡的區別)

4.1 Difference to DenseNet

  1. 受DenseNet的啓發,將局部密集連接加入到了RDB中
  2. 與DenseNet不同:移除了BN層,以提高運算速度降低計算複雜度和GPU內存的消耗
  3. 與DenseNet不同:移除了Pooling層,防止其將像素級的信息給去除掉
  4. 在RDN中,我們使用了局部殘差學習,來將密集連接層和局部特徵融合(LFF)結合起來
  5. 在RDN中,前一個RDB提取到的特徵會與當前RDB的每一個CONV直接連接起來(局部特徵融合LFF),更好地保障了信息流的貫通
  6. 與DenseNet不同:使用GFF將各RDB提取的特徵全部concat起來,充分利用。而DenseNet 整個網絡中只使用每一個DenseBlock最後的輸出。

4.2 Difference to SRDenseNet

  1. RDN在三個方面對SRDenseNet的DenseNet進行了改進:
    1)加入了CM機制,使得先前的RDB模塊和當前的RDB模塊都有直接接觸
    2)使用了LFF,使得RDB可以用更大的增長率
    3)RDB中的LRL模塊增加了信息和梯度的流動
  2. 在RDB中,提取全局特徵時不使用Dense Connection,取而代之的是DFF(Dense Feature Fusion, 稠密特徵塊,包含GFF和GRL)
  3. 損失函數:SRDenseNet使用L2 ;RDN使用L1(提高了性能,加快了收斂)

4.3 Difference to MemNet

  1. 損失函數:MemNet使用L2 ;RDN使用L1(提高了性能,加快了收斂)
  2. MemNet要用Bicubic插值方式對LR圖片進行上採樣,從而使LR圖片達到所需的大小,這就導致特徵提取和重建過程都在HR空間(高分辨率空間)中進行;而RDN從原始的LR圖片(低分辨率圖片)提取各層特徵,很大程度上減少了計算的複雜度,並提高了性能
  3. MemNet中包含了遞歸和門限單元,這使得當前層不能接收上一層的輸入,而RDB的前後模塊是有交互的
  4. MemNet 沒有全部利用中間的特徵信息,而RDN通過Global Residual Learning 將所有信息都利用起來。

五、實驗及結果

5.1 實驗設置:

數據集
  1. 數據集: DIV2K(800 training imgs + 100 vali imgs + 100 testing imgs)
  2. 訓練:DIV2K——800 training img + 5 vali img
  3. 測試:五個standard benchmark datasets:Set5 [1], Set14 [33], B100 [18], Urban100 [8], and Manga109 [19].
退化模型

訓練的輸入圖片(LR)使用DIV2K的高清圖片通過下面3種退化模型得到:

  1. BI模型:Bicubic插值方式對高清圖片進行下采樣, 縮小比例爲x2,x3,x4
  2. BD模型:先對高清圖片做(7*7卷積,1.6方差)高斯濾波,再對濾波後圖片做下采樣, 縮小比例爲x3。
  3. DN模型:①Bicubic插值方式對高清圖片進行下采樣, 縮小比例爲x3,②再加30%的高斯噪聲。
訓練設置
  1. 在每個訓練batch中,隨機取出16張RGB的LR patches(shape = 32 * 32)作爲輸入
  2. 隨機地對patches做數據增強——上下翻轉,垂直翻轉90°等
  3. 一個epoch包含1000個iteration
  4. 使用Touch7框架來寫RDN,並使用Adam作爲優化器
  5. 所有層的學習率初始化都是10-4,並且每200個epoch就減少至一半
  6. 訓練RDN需要一天的時間,泰坦GPU,200個epoch
超參D/C/G的設置

在這裏插入圖片描述
從上圖看出,大的D/C/G值能提升性能,原因是加深了網絡深度

Ablation Investigation(消融研究)

在這裏插入圖片描述
可看出, CM, LRL, and GFF 缺一不可,缺一個性能就下降

實驗結果(退化模型下)
  1. 在BI退化模型下:
    在這裏插入圖片描述在這裏插入圖片描述
    可看出,RDN的重建效果最佳
  2. 在BD和DN退化模型下:
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    可看出,依然是RDN的重建效果最佳

實驗結果(真是圖片下)

在真實圖片下,不再有原始的高清圖片(如DIV2K),因此也當然沒有退化模型,真實圖片的退化模型(比如湍流大氣和視寧度造成的模糊)都是未知規律的
在這裏插入圖片描述
從結果可以看出,分層特徵對於不同或未知的退化模型執行依然有魯棒性(強健)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章