RAM: Residual Attention Module for Single Image Super-Resolution

1. 摘要

注意力机制是深度神经网络的一个设计趋势,其在各类计算机视觉任务中都表现突出。可是,应用到图像超分辨领域的注意力模型大都没有考虑超分辨和其它高层计算机视觉问题的自然不一样。python

做者提出了一个新的注意力模型,由针对 SR 问题优化的新的通道和空间注意力机制以及将这二者结合起来的融合机制组成。基于此,做者设计了一个残差注意力模块(RAM)以及用来超分辨的 SRRAM 网络。网络

2. 介绍

一般,大多数基于 CNN 来进行图像超分辨的方法在内部同等地处理全部类型的信息,这可能没法有效地区份内容的详细特征(例如低频和高频信息)。换句话说,网络选择性地使用特征的能力有限。dom

最近,注意力机制是各类计算机视觉问题中值得注意的网络结构之一。它容许网络从新校准提取的特征图,从而能够进行更加自适应和有效的训练。许多研究者也尝试了将注意力模型引入图像超分辨领域,但却都是从其余视觉任务(好比分类)中直接借鉴来的,针对超分辨问题则可能不是最优的。ide

所以,做者提出了一个新的注意力模型,能够有效地将通道注意力和空间注意力融合起来,而且是专门针对图像超分辨问题设计的。将这个注意力模型和基于 ResNet 的结构相结合,做者设计了一个 SRRAM 网络取得了比以往方法更好的效果。函数

3. 网络结构

3.1. 一些相关的注意力机制

RCAB 只有通道注意力,CBAM 以顺序的方式引入通道注意力和空间注意力,而 CSAR 则以并行的方式引入通道注意力和空间注意力。具体细节可参阅每篇论文阅读笔记。学习

3.2. RAM

在之前的方法中,通道注意力(CA)大多采用平均池化或者最大池化。可是,做者认为超分辨问题旨在恢复出图像的高频成分,所以利用通道的高频特性来学习注意力更加合理。因此,这里采起方差池化,也就是求得每一个通道大小为 W×H 的特征图的方差。后续步骤与以前方法相似,经过两层神经网络来预测注意力图。优化

在空间注意力(SA)中,每一个通道表明着一种滤波器,不一样的滤波器负责提取图像的不一样特征。例如,在提取到的边缘或复杂纹理特征图中,更详细的信息,即来自复杂滤波器的信息更重要。另外一方面,在该区域几乎没有诸如天空或漫画图像的均匀区域之类的高频份量的状况下,相对较不详细的信息更重要而且须要被关注。也就是说,咱们须要区别对待不一样的通道,而不是像以前的注意力机制那样直接对通道维度进行压缩。这里,做者采用了深度可分离卷积,针对每一个通道的特征分别卷积获得注意力图。spa

最后,将通道注意力图和空间注意力图相加后通过一个 Sigmoid 函数再与原特征相乘便可,与残差网络结合便获得了上图所示的 RAM 结构。其一个 TensorFlow 实现以下。.net

def RAM(input, reduction):
    """
    @Residual Attention Module for Single Image Super-Resolution
    Residual Attention Module
    """

    _, width, height, channel = input.get_shape()  # (B, W, H, C)

    u = tf.layers.conv2d(input, channel, 3, padding='same', activation=tf.nn.relu)  # (B, W, H, C)
    u = tf.layers.conv2d(u, channel, 3, padding='same')  # (B, W, H, C)

    # channel attention
    _, x = tf.nn.moments(u, axes=[1, 2], keep_dims=True)   # (B, 1, 1, C)
    x = tf.layers.conv2d(x, channel // reduction, 1, activation=tf.nn.relu)     # (B, 1, 1, C // r)
    x = tf.layers.conv2d(x, channel, 1)   # (B, 1, 1, C)

    # spatial attention
    filter = tf.random_normal([3, 3, int(channel), 1], stddev=0.01)
    y = tf.nn.depthwise_conv2d(u, filter, strides=[1, 1, 1, 1], padding='SAME')     # (B, W, H, C)

    z = tf.add(x, y)    # (B, W, H, C)
    z = tf.nn.sigmoid(z)
    z = tf.multiply(u, z)
    z = tf.add(input, z)

    return z

3.3. SRRAM

总体网络结构由特征提取和上采样组成,特征提取由 R 个 RAM 模块以及长跳跃链接组成,上采样网络负责提升图像的分辨率。设计

4. 实验结果

4.1. Ablation studies

引入 CA 后模型在全部数据集上的平均表现比基线模型要高出 0.1 dB,同时引入 CA 和 SA 后模型表现继续有更大提高,并且在大部分状况下也都优于其余注意力机制。

4.2. 客观和主观评价对比

image.png

获取更多精彩,请关注「seniusen」!

相关文章
相关标签/搜索