RCAN Image Super-Resolution Using Very Deep Residual Channel Attention Networks-ECCV2018
目录
一.提出问题:
1.卷积神经网络深度对于图像超分辨率至关重要。然而,我们观察到更深层的图像SR网络更难以训练。
2.低分辨率输入和特征包含丰富的低频信息,平等对待你这些通道,阻碍了cnn代表。
二.解决问题方法:
为了解决这些问题,我们提出了非常深的残余信道注意网络(RCAN)
具体来说
- 然而,据我们所知,简单地堆叠残差块来构造。更深层次的网络很难获得更好的改进。是否更深网络可以进一步促进图像SR和如何构建非常深的可训练的网络仍有待探索。因此,我们提出一种残差残差(RIR)结构,形成非常深的网络,它由几个具有长跳跃连接的残余组组成。各残差组包含一些具有短跳跃连接的残余块。同时,RIR允许丰富的低频信息。绕过多个跳过连接,构成主网络专注于学习高频信息。
- 此外,我们提出了一个信道注意机制自适应调整信道特征通过考虑信道间的相互依赖性。广泛的实验表明我们的RCAN能够达到更好的精度和效果。
理解为:
我们试图尽可能多地恢复高频信息。LR图像包含的大部分低频信息可以直接转发。
无区别对待每个通道,限制了网络的表达能力,提出CA方法(后面会讲到)
三.贡献:
总的来说,我们的贡献有三个方面:
(1)我们提出了非常深的残差。高精度图像SR的信道注意网络(RCAN)
(2)提出残差(RIR)结构来构造非常深的可训练网络,Lsc结构和Ssc结构可以使网络更高效。
(3)提出了信道注意(CA)机制自适应调整。通过考虑特征通道之间的相互依赖性特征。
四.网络结构
我们的RCAN主要由四部分组成:
1.浅特征提取
2.残差残差(RIR)
3.深度特征提取
4.重建部分
把LR和SR作为输入和输出。
五.Channel attention(CA)
这篇论文的最大创新点,也是比较难理解的地方。
结构如下:
class CALayer(nn.Module):
def __init__(self, channel, reduction=16):
super(CALayer, self).__init__()
# global average pooling: feature --> point
self.avg_pool = nn.AdaptiveAvgPool2d(1)
# feature channel downscale and upscale --> channel weight
self.conv_du = nn.Sequential(
nn.Conv2d(channel, channel // reduction, 1, padding=0, bias=True),
nn.ReLU(inplace=True),
nn.Conv2d(channel // reduction, channel, 1, padding=0, bias=True),
nn.Sigmoid()
)
def forward(self, x):
y = self.avg_pool(x)
y = self.conv_du(y)
return x * y
AdaptiveAvgPool2d操作:
nn.Sigmoid():
将求取的值变为0/1.
return x * y:
返回Channel attention。
总结起来结构如下:
六:结论
效果最佳的当然是LSC,SSC,CA都采用啦。
论文:
github代码:
https://github.com/yulunzhang/RCAN