前言
CVPR2019的一篇论文。
保证网络深度的同时,为了减少网络的参数量,通常使用循环的结构。但是,大多具有循环结构的网络都是以前馈的方式共享信息,这样前一层无法从后一层访问有用的信息。
生物学中,连接大脑皮层视觉区域的反馈连接可以将反应信号从高阶区域传递到低阶区域。受其启发,利用反馈机制将高级信息传回前一层,并细化低级编码特征。
借鉴CVPR2017论文Feedback Network的思路,提出了一种新的图像超分辨率网络,即超分辨率反馈网络(Super-Resolution Feedback Network, SRFBN)。本质上是一个带有反馈块(FB)的RNN。FB由多组上下采样层和密集的跳跃连接构成。
如下图所示,每次迭代时的输出都会流入下一次迭代以控制输入。
为了确保每次迭代的输出包含HR图像的信息,用损失函数监督训练过程中的每次迭代。反馈方案的原理是,粗糙SR图像的信息可以帮助LR图像重建更好的SR图像。
总结,论文的主要工作有以下三点:
- 提出了一种采用反馈机制的图像超分辨率反馈网络。这种带有反馈连接的循环结构有较强的早期重建能力,且需要的参数较少。
- 提出了反馈块(FB)。不仅有效地处理反馈信息流,而且通过上下采样层和密集的跳跃连接丰富高层表示。
- 基于课程学习的训练策略。根据重构难度对训练样本进行排序,使网络由易到难逐步学习。
感兴趣的地方:
- 反馈机制如何发挥作用
- 课程学习的训练方法,如何对训练样本进行排序
- 损失函数的设计
1. 模型结构与反馈机制
高级信息可以引导LR图像更好地恢复SR图像。有三个不可缺少的部分加强反馈方案。
- 每次迭代计算损失,迫使网络在每次迭代时重建SR图像,从而允许隐藏状态携带高层信息的概念。
- 使用递归结构,以实现迭代过程。
- 在每次迭代时提供LR输入,以确保低层信息的可用性。
网络整体结构如下图所示,蓝色箭头表示反馈连接,绿色箭头表示全局残差跳跃连接。
网络可以展开为T次迭代,从1到T。为了使每次迭代带有输出的概念,将每次迭代的输出计算损失。每次迭代的网络包含三个部分:LR特征提取块(LRFB)、反馈块(FB)、重构块(RB)。
FB的结构如下所示。
使用Conv(1,m)对 F i n t F_{in}^t Fint和 F o u t t − 1 F_{out}^{t-1} Foutt−1进行连接和压缩,通过反馈信息 F o u t t − 1 F_{out}^{t-1} Foutt−1来细化输入特征 F i n t F_{in}^t Fint,产生细化后的输入特征 L 0 t L_0^t L0t。
L 0 t = C 0 ( [ F o u t t − 1 , F i n t ] ) L_0^t=C_0([F_{out}^{t-1},F_{in}^{t}]) L0t=C0([Foutt−1,Fint])
其中, C 0 C_0 C0表示初始压缩操作, [ F o u t t − 1 , F i n t ] [F_{out}^{t-1},F_{in}^{t}] [Foutt−1,Fint]表示 F o u t t − 1 F_{out}^{t-1} Foutt−1和 F i n t F_{in}^t Fint串联拼接。
设 H g t H_g^t Hgt和 L g t L_g^t Lgt是FB中第g个投影组在第t次迭代时给出的HR和LR特征映射。
H g t H_g^t Hgt由以下方式获得:
H g t = C g ↑ ( L 0 t , L 1 t , … , L g − 1 t ) H_g^t=C_g^{\uparrow}({L_0^t,L_1^t,\ldots,L_{g-1}^t}) Hgt=Cg↑(L0t,L1t,…,Lg−1t)
其中, C g ↑ C_g^{\uparrow} Cg↑指的是第g个投影组使用Deconv(k,m)的上采样操作。
相应的,可以通过以下方式获得 L g t L_g^t Lgt。
L g t = C g ↓ ( [ H 1 t , H 2 t , … , H g t ] ) L_g^t=C_g^{\downarrow}([H_1^t,H_2^t,\ldots,H_g^t]) Lgt=Cg↓([H1t,H2t,…,Hgt])
其中, C g ↓ C_g^{\downarrow} Cg↓指的是在第g个投影组使用Conv(k,m)的下采样操作。除了第一个投影组外,为了参数和计算效率,在 C g ↑ C_g^{\uparrow} Cg↑和 C g ↓ C_g^{\downarrow} Cg↓之前加上了Conv(1,m)。
为了利用每个投影组的有用信息,并且使输出特征 F o u t t F_{out}^t Foutt与下一次迭代的输入LR特征 F i n t + 1 F_in^{t+1} Fint+1的大小保持一致。对投影组生成的LR特征进行特征融合。
F o u t t = C F F ( [ L 1 t , L 2 t , … , L G t ] ) F_{out}^t=C_{FF}([L_1^t,L_2^t,\ldots,L_G^t]) Foutt=CFF([L1t,L2t,…,LGt])
其中, C F F C_{FF} CFF代表Conv(1,m)。
2. 课程学习策略与损失函数
使用L1损失函数来训练网络。使用T个目标高分辨率图像 ( I H R 1 , I H R 2 , … , I H R T ) (I_{HR}^1,I_{HR}^2,\ldots,I_{HR}^T) (IHR1,IHR2,…,IHRT)来监督多个输出。 ( I H R 1 , I H R 2 , … , I H R T ) (I_{HR}^1,I_{HR}^2,\ldots,I_{HR}^T) (IHR1,IHR2,…,IHRT)对于同一个退化模型是相同的。对于复杂的退化模型, ( I H R 1 , I H R 2 , … , I H R T ) (I_{HR}^1,I_{HR}^2,\ldots,I_{HR}^T) (IHR1,IHR2,…,IHRT)根据T次迭代的任务难度进行排序,来进行课程学习。
网络中的损失函数可以表示为:
L ( Θ ) = 1 T ∑ t = 1 T W t ∥ I H R t − I S R t ∥ 1 L(\Theta)=\frac{1}{T} \sum_{t=1}^T W^t \| I_{HR}^t-I_{SR}^t \| _1 L(Θ)=T1t=1∑TWt∥IHRt−ISRt∥1
其中, Θ \Theta Θ表示网络的参数, W t W^t Wt是一个恒定的数,表示第t次迭代时输出的价值,与论文Feedback Network中一样,每次迭代时都设置为1,表示每个输出都有相同的贡献。