这篇文章的网络结构和写作手法和RDN都非常相似,然后一看作者就是同一批 。这篇文章是EDSR的一个加强版,也是RDN的姊妹版(把RDN的Dense Block换成了ResBlock)当然这篇文章中提出了新的通道注意力机制CA。
论文链接:
RCAN: Image Super-Resolution Using Very Deep Residual Channel Attention Networks
EDSR: Enhanced Deep Residual Networks for Single Image Super-Resolution
RDN: Residual Dense Network for Image Super-Resolution
RCAN源码
作者发现影响图像SR性能的两个问题:
为了解决以上问题,作者提出了深度残差通道注意网络(RCAN)。
residual in residual(RIR)
结构来形成非常深的网络,它由几个具有长跳跃连接LSC
的残差群组RG
组成。每个残差群组RG包含一些具有短跳跃连接SSC
的通道残差块RCAB
。每个通道注意力残差块RCAB由简单残差块BN
和通道注意力机制CA
组成。同时,RIR允许通过多个跳跃连接绕过丰富的低频信息,使主网络专注于学习高频信息。通道注意力机制
,通过考虑通道之间的相互依赖性,自适应地重新缩放通道特征,以改变不同通道特征对重建图像的影响权重。大量实验表明,作者提出的RCAN相对于最先进的方法达到了更好的准确度,实现了更好的视觉效果。
因此作者提出了一种残差通道注意力网络(RCAN),来加深网络的深度,同时自适应地学习更多有用的通道特征。
以上,这篇文章的贡献有三个方面:
这篇文章是EDSR的加强版,使用的也是ResNet结构,从上图中可以看到RCAN和EDSR都是使用一层卷积作为低层特征提取,中间n个ResBlock接一层卷积,使用跳跃连接把浅层特征和高层特征相加,最后使用上采样和重建模块,得到输出SR。不同之处在于ResBlock和RG内部。RG内部多了”套娃“块,还使用了跳跃连接和通道注意力机制。
可以看到RDN结构和RCAN也非常像,先是两层卷积提取低层特征,然后d个RDB块提取高级特征接一层卷积,使用跳跃连接,最后上采样加重建输出SR。RDB内也是”套娃“,每个RDB内是多个稠密块。
三个网络不同之处都在于高级特征的提取,其余的部分都非常相似,所以文章只重点介绍高级特征提取部分RIR。包括RCAB和CA。对于其他部分有疑问的可以参看EDSR和RDN。
RCAN主要包括四个部分:浅层特征提取、Residual in Residual(RIR)深度特征提取、上采样和重建部分。
I L R I_{LR} ILR和 I S R I_{SR} ISR记作为RCAN的输入和输出。
浅层特征提取:(shallow feature extraction)
使用一个卷积层
(Conv)从LR输入中提取浅层特征 F 0 F_0 F0。 H S F ( ⋅ ) H_{SF} (·) HSF(⋅)表示卷积操作。 F 0 F_0 F0还会用于后续RIR模块对深层特征的提取。
F 0 = H S F ( I L R ) , (1) F_0 = H_{SF} (I_{LR}),\tag{1} F0=HSF(ILR),(1)
深度特征提取(RIR):(deep feature extraction)
H R I R ( ⋅ ) H_{RIR }(·) HRIR(⋅)表示深层特征提取的一整个复合函数。该模块是非常深的RIR残差结构,包含多个RG块,每个RG块都由多个RCAB块组成,每个RCAB块都包含残差块和空间注意力机制
。RCAN达到了迄今为止现有的最大网络深度,并且有非常大的感受野,所以该模块输出记作深层特征(deep feature)。
F D F = H R I R ( F 0 ) , (2) F_{DF} = H_{RIR} (F_0),\tag{2} FDF=HRIR(F0),(2)
上采样:(upscale module)
上采样模块采用的亚像素卷积ESPCN(上采样的三种方式:①反卷积,②最近邻上采样+CNN,③ESPCN)。 H U P ( ⋅ ) H_{UP} (·) HUP(⋅)是上采样算子,输出采样后的特征记为 F U P F_{UP} FUP
F U P = H U P ( F D F ) , (3) F_{UP} = H_{UP} ( F_{DF}),\tag{3} FUP=HUP(FDF),(3)
重建:(reconstruction)
最后通过一个Conv层重建放大的特征, H R E C ( ⋅ ) H_{REC} (·) HREC(⋅) and H R C A N ( ⋅ ) H_{RCAN} (·) HRCAN(⋅)分别代表重建层卷积算子和整个RCAN网络的复合函数。
I S R = H R E C ( F U P ) = H R C A N ( I L R ) , (4) I_{SR} = H_{REC} (F_{UP} ) = H_{RCAN} (I_{LR}),\tag{4} ISR=HREC(FUP)=HRCAN(ILR),(4)
LOSS:
RCAN采用L1loss函数作为损失函数(三种常用损失函数:L2、L1、感知和对抗损失)。
L ( Θ ) = 1 N ∑ i = 1 N ∣ ∣ H R C A N ( I L R i ) − I H R i ∣ ∣ 1 , (5) L(Θ) =\frac{1}{N}\sum^N_{i=1}{||H_{RCAN}(I^i_{LR})-I^i_{HR}||_1} ,\tag{5} L(Θ)=N1i=1∑N∣∣HRCAN(ILRi)−IHRi∣∣1,(5)
文章的最重点部分。深度特征提取(RIR)Residual in Residual 结构。看图。
(RG)块作为基础
,加一条长跳跃连接LSC
来融合浅层特征和深层特征,一共包含G个RG块。RCAB块
组成,每个RG内有一条短跳跃连接SSC
来融合局部的深浅特征。残差块
和通道注意力机制CA
。这种残差结构允许训练非常深的CNN(超过400层)以获得高性能的图像SR。
RG+LSC:(多个RG间的连接)
在先前的实验中已经证明堆叠的残差块和LSC可用于构建深度CNN。但在SR任务中以这种方式构建的非常深的网络不仅难以训练,而且难以获得更高的性能增益。受SRRestNet和EDSR中先前工作的启发,提出了残差群组(RG)作为更深层次网络的 基本模块 。
H g ( ⋅ ) H_g (⋅) Hg(⋅)表示第g个RG的映射, F g − 1 、 F g F_{g-1}、F_{g} Fg−1、Fg表示第g个RG块的输入feature map和输出feature map,第g个RG的输出公式如下:
简单的叠加RG组并不能获得更好的性能。为了解决这个问题,RIR中进一步引入了长跳跃连接(LSC),以稳定超深网络的训练
。LSC还可以通过以下方式提高残差学习
的性能。
F 0 F_0 F0是先前提取的浅层特征, W L S C W_{LSC} WLSC 是RIR最后一个RG块后接的一层卷积层参数,RIR输出的深层特征 F D F F_{DF} FDF公式如下:
LSC不仅可以简化RGs之间的信息流,而且将浅层信息和深层信息相融合,增强图像信息,减少信息丢失。
RCAB+SSC:(RG内部)
LR输入和特征中包含大量丰富的信息,而SR网络的目标是恢复更多有用的信息。为了进一步实现残差学习,使用短跳跃连接融合不同的层级信息。
在每个RG中堆叠B个残差通道注意力块RCAB
。
F g , b − 1 、 F g , b F_{g,b-1}、F_{g, b} Fg,b−1、Fg,b表示第g个RG块中第b个RCAB块的输入与输出, H g , b ( ⋅ ) H_{g,b}(\cdot) Hg,b(⋅)为第g个RG内第b个RCAB块的映射,则第g个RG中的第b个RCAB输出可以表示为:
在每个RG内(RCAB间)引入短跳跃连接,融合不同层级的特征信息, W g W_g Wg是第g个RG内部最后一个RCAB后接的Conv层的参数, F g − 1 F_{g-1} Fg−1是前一个RG的输出。第g个RG的输出公式如下:
以往的算法对不同通道的feature map都同等看待,但其实不同通道包含的特征信息是不同的,所以需要分配给每个通道不同的权重,让网络更加的关注一些包含重要信息的通道,于是引入了注意力机制。提出了通道注意力机制CA。
如何对每个通道产生不同的注意力权重是最关键的一步。主要有两个关键:
根据以上分析,作者使用全局平均池化
将每个通道的全局空间信息转化为通道描述符(一个常数 S c S_c Sc)。
如图3所示,设输入为 X = [ x 1 , ⋅ ⋅ ⋅ , x c , ⋅ ⋅ , x c ] X=[x1,···,xc,··,xc] X=[x1,⋅⋅⋅,xc,⋅⋅,xc],共有C个通道每个通道是大小为H×W的特征映射。
其中 x c ( i , j ) x_c(i,j) xc(i,j)是第c个通道位置为 ( i , j ) (i,j) (i,j)处的值。 H G P ( ⋅ ) H_{GP}(·) HGP(⋅)表示全局平均池化。除了全局平均池,这里还可以引入更复杂的聚合技术。 池化后的结果 z c z_c zc一共有C维,每张特征图输出为一个常数(每张图的平均值)公式表示为:
为了从经过全局平均池化聚合的信息中完全捕获通道间的依赖关系,引入了一种选通机制。选通机制应满足两个标准:
非线性相互作用
。多个通道特性
而不是只获取一个最佳通道(one-hot)。作者使用了简单的门控机制和sigmoid函数, δ ( ⋅ ) 、 f ( ⋅ ) δ(⋅)、f(⋅) δ(⋅)、f(⋅)分别表示ReLU激活函数和sigmoid门。公式如下:
W D W_D WD是Conv层的参数,它作为通道缩小
比例r,输出通道数为 C r \frac{C}{r} rC。在被ReLU激活后,再经过第二个卷积层,参数为 W U W_U WU,作为通道放大
比例r增加,输出通道数为C。最后使用sigmoid激活,获得最终的通道统计信息s,也就是通道注意力权重
。
最后按不同通道将注意力权值和feature map进行相乘结合,公式如下:
通过通道注意力,RCAB中的残差分量将自适应地重新缩放,分配不同的权值,根据自身的特性体现出不同的贡献,进一步增强网络的辨别能力。
这部分简单剖析了RCAB内部的结构。简单残差块串联通道注意力机制 ResNet + CA
,并使用了一个short-cut
F g , b − 1 、 F g , b F_{g,b-1}、F_{g, b} Fg,b−1、Fg,b表示第g个RG块中第b个RCAB块的输入与输出, R g , b ( ⋅ ) R_{g,b} (⋅) Rg,b(⋅)表示第g个RG中第b个RCAB中CA的映射关系, X g , b X_{g,b} Xg,b 是残差块BN输出的差特征信息。第g个RG中的第b个RCAB输出可以表示为:
X g , b X_{g,b} Xg,b 是残差特征信息,通过卷积+ReLU+卷积层得到,因此残差块BN的输出:
作者分析了RCAB和残差块(RB)之间的关系
。发现,MDSR和EDSR中使用的RBs可视为RCAB的特例。 且EDSR中使用的residual scaling位置和CA一摸一样,所以residual scaling可以看作是固定CA权重值的特例。
因此RCAB相对于EDSR和MDSR的残差块更加灵活,它可以利用不同通道的特征信息以及它们之间的关系(获取不同权重)来灵活调整块地输出,提高模型的表现力。
★到此RCAN中的重点部分RIR结构已经全部详细介绍了,是一个大结构(RIR)套小结构(RG)再套小结构(RCAB)的层层递进式,大家可以回头再梳理一遍。
训练:DIV2K数据集的800张训练图像
测试:五个标准基准数据集:Set5、Set14、B100、Urban100和Manga109
使用双三次(BI)和模糊缩小(BD)两种退化模型进行实验
在Y通道上使用PSNR/SSIM作为图像质量客观评价指标
图像数据增强:随机旋转90°, 180°, 270°、水平翻转
batch:16
patch:48×48
optimizor:Adam
初始化学习率设置为 1 0 − 4 10^{-4} 10−4,每隔 2 × 1 0 5 2\times 10^5 2×105 个iterations,学习率减半
RIR结构中将RG数设置为G=10。在每个RG中,将RCAB数量设置为B=20
除了CA使用1×1卷积外,其余均使用3 × 3卷积核
CA缩减率r设置为16,其余通道均使用C = 64
上采样层使用亚像素卷积层ESPCN
使用L1loss
累了不想写了,总之就是效果最好,即使不用自集成(就是图像增强)也优于其他方法。在比例因子较大时,增益更明显(和别人的差距更大)。
EDSR的参数数量(43m)是远大于RCAN的(16m),但RCAN获得了更好的性能。这也说明了非常大的网络深度和CA可以提高性能。
和他其算法相比,RCAN可以更好地缓解模糊伪影,恢复更多细节。
图像SR还可作为高级视觉任务(如物体识别)的预处理步骤。作者评估了最先进的七种SR方法用于目标识别的性能,以进一步证明RCAN的有效性。
这篇文章提出了深度残差通道注意网络(RCAN),用于高精度的图像SR。
RCAN由RG作为基础模块,由几个具有长跳跃连接LSC
的残差群组BG
组成。每个RG包含一些具有短跳跃连接SSC
的通道残差块RCAB
。每个通道注意力残差块RCAB由简单残差块BN
和通道注意力机制CA
组成。
迄今为止,EDSR最宽,RCAN最深。
最后祝各位科研顺利,身体健康,万事胜意~