【显著目标检测论文】Pyramid Feature Attention Network for Saliency detection

2019发表于CVPR的一篇显著目标检测论文
论文原文
代码地址


摘要

显著性检测是计算机视觉的基本挑战之一。如何提取有效的特征是显著性检测的一个关键点。最近的方法主要是不加区分地采用融合多尺度卷积特征。然而,并非所有的特征都对显著性检测有用,有些甚至会造成干扰。为了解决这个问题,我们提出了金字塔特征注意力网络,以关注有效的高级背景特征和低级空间结构特征。首先,我们设计了上下文感知的金字塔特征提取(CPFE)模块,用于多尺度高层特征图,以捕获丰富的上下文特征。其次,我们在CPFE特征图后采用通道注意力(CA),在低层次特征图后采用空间注意力(SA),然后将CA和SA的输出融合在一起。最后,我们提出了一个边缘保留损失,以指导网络在边界定位中学习更多的细节信息。在五个基准数据集上进行的广泛评估表明,所提出的方法在不同的评估指标下优于最先进的方法。


一、创新点

  • 我们提出了一种用于图像显著性检测的金字塔特征注意(PFA)网络。对于高级特征,我们采用了一个上下文感知的金字塔特征提取模块和一个通道注意模块来捕获丰富的上下文信息。对于低层次的特征,我们采用空间注意模块来过滤掉一些背景细节。
  • 我们设计了一种新的边缘保持损失来指导网络学习边界定位中更详细的信息。

二、Related Works

1.Salient Object Detection

类似文献综述,不多赘述。

2.Attention Mechanisms

由于注意机制具有很强的特征选择能力,因此它是对显著性检测的最佳选择。在集成卷积特征的同时,大多数现有的方法对多层次特征的处理都没有区别。有些方法采用了一些有效的策略,如门函数[42]和渐进注意[45],但这些方法选择一定方向选择特征,忽略了高级特征和低级特征之间的差异。与之不同的是,对于高级特征,我们采用了上下文感知的金字塔特征提取(CPFE)模块和通道注意模块来获取丰富的上下文信息。在CPFE模块中,我们在VGG网络的三个高级块侧采用多尺度空洞卷积,然后通过通道注意机制对突出物体显示出高响应的通道分配较大的权重。对于低级特征,存在一些背景区域,分散了显著性地图的生成。空间注意机制根据高级特征过滤掉一些背景细节,更多地关注前景区域,有助于生成显著性预测的有效特征。

三、 Pyramid Feature Attention Network(PFANet)

在这里插入图片描述

1.Context-aware pyramid feature extraction

在这里插入图片描述
我们将VGG-16中的conv 3-3、conv 4-3和conv 5-3作为基本的高级特征。为了使最终提取的高级特征包含尺度和形状不变性特征,我们采用不同扩张率的空洞卷积,设置为3、5和7以捕获多接受域上下文信息。然后结合不同卷积层的特征映射和1×1维降维特征。在此之后,我们得到了三个具有上下文感知信息的不同尺度特征,我们将两个较小的特征上采样到最大的一个。最后,我们通过跨通道连接将它们合并,作为上下文感知金字塔特征提取模块的输出。

2.Attention mechanism(注意力机制)

根据不同层次特征的特征,对高级特征采用通道注意,对低层次特征采用空间注意来选择有效的特征。此外,我们不对高级特征使用空间注意,因为高级特征包含高抽象语义[16,45],因此不需要过滤空间信息。然而,我们没有对低级特征使用通道级注意,因为在低级特征的不同通道之间几乎没有语义区别。

1.Channel-wise attention(通道注意)

在上下文感知金字塔特征提取后,我们将加权多尺度多接受域高级特征的[16,3]模块添加到通道注意(CA)中。CA将为对突出物体显示高响应的通道分配更大的权重。
在这里插入图片描述
我们将高级特征fh∈RW×H×C展开为fh= [ fh1,fh2 ,…,fhC ],其中fhi∈RW×H是fh的第i个切片,C是总通道数。首先,我们将平均池化应用于每个fhi,以获得一个通道特征向量vh。之后,使用两个连续的完全连接(FC)层来完全捕获通道级依赖关系(见上图)。[16]为了限制模型的复杂性和帮助泛化,我们通过在非线性周围形成一个具有两个FC层的瓶颈来对通道级特征向量进行编码。然后,通过 sigmoid运算,对映射到[0,1]的编码通道特征向量进行归一化处理。
在这里插入图片描述

其中W为通道级注意块中的参数,σ1为sigmoid运算,fc为FC层,δ为ReLU函数。通过对上下文感知的金字塔特征与CA进行加权,得到了块的最终输出feh。
在这里插入图片描述
代码如下:

class ChannelwiseAttention(nn.Layer):
    def __init__(self, in_channels):
        super(ChannelwiseAttention, self).__init__()
        self.in_channels = in_channels
        self.linear_1 = nn.Linear(self.in_channels, self.in_channels // 4)
        self.linear_2 = nn.Linear(self.in_channels // 4, self.in_channels)

    def forward(self, input_):
        n_b, n_c, h, w = input_.shape

        feats = F.adaptive_avg_pool2d(input_, (1, 1)).reshape((n_b, n_c))
        feats = F.relu(self.linear_1(feats))
        feats = F.sigmoid(self.linear_2(feats))

        # Activity regularizer
        ca_act_reg = paddle.mean(feats)
        
        feats = feats.reshape((n_b, n_c, 1, 1))
        feats = feats.expand_as(input_).clone()

        return feats, ca_act_reg

2.Spacial attention(空间注意)

在显著性检测中,我们希望获得显著性物体和背景之间的详细边界,而没有其他会分散人类注意力的纹理。因此,我们没有平均考虑所有的空间位置,而是采用空间注意来更多地关注前景区域,这有助于生成预测显著性的有效特征。
在这里插入图片描述

我们将低级特征表示为fl∈RW×H×C。空间位置的集合用R = {(x,y)|x = 1,…,W;y = 1,…,H}表示,其中j =(x,y)为低层次特征的空间坐标。为了增加感受野和获取全局信息而不增加参数,类似于[26],我们采用两个卷积层,一个核为1×k,另一个核为k×1,对于高级特征捕获空间问题(见上图)。然后,利用sigmoid运算,对编码的空间特征图映射到[0,1]进行归一化处理。
在这里插入图片描述
其中W为空间注意块中的参数,σ2为sigmoid操作,conv1和conv2为1×k×C和k×1×1卷积,我们在实验中设置k=9。用SA将fl加权,得到该块的最终输出fel
在这里插入图片描述

代码如下:

class SpatialAttention(nn.Layer):
    def __init__(self, in_channels, kernel_size=9):
        super(SpatialAttention, self).__init__()

        self.kernel_size = kernel_size
        self.in_channels = in_channels
        pad = (self.kernel_size - 1) // 2  # Padding on one side for stride 1

        self.grp1_conv1k = nn.Conv2D(self.in_channels, self.in_channels // 2, (1, self.kernel_size), padding=(0, pad))
        self.grp1_bn1 = nn.BatchNorm2D(self.in_channels // 2)
        self.grp1_convk1 = nn.Conv2D(self.in_channels // 2, 1, (self.kernel_size, 1), padding=(pad, 0))
        self.grp1_bn2 = nn.BatchNorm2D(1)

        self.grp2_convk1 = nn.Conv2D(self.in_channels, self.in_channels // 2, (self.kernel_size, 1), padding=(pad, 0))
        self.grp2_bn1 = nn.BatchNorm2D(self.in_channels // 2)
        self.grp2_conv1k = nn.Conv2D(self.in_channels // 2, 1, (1, self.kernel_size), padding=(0, pad))
        self.grp2_bn2 = nn.BatchNorm2D(1)

    def forward(self, input_):
        # Generate Group 1 Features
        grp1_feats = self.grp1_conv1k(input_)
        grp1_feats = F.relu(self.grp1_bn1(grp1_feats))
        grp1_feats = self.grp1_convk1(grp1_feats)
        grp1_feats = F.relu(self.grp1_bn2(grp1_feats))

        # Generate Group 2 features
        grp2_feats = self.grp2_convk1(input_)
        grp2_feats = F.relu(self.grp2_bn1(grp2_feats))
        grp2_feats = self.grp2_conv1k(grp2_feats)
        grp2_feats = F.relu(self.grp2_bn2(grp2_feats))

        added_feats = F.sigmoid(paddle.add(grp1_feats, grp2_feats))
        added_feats = added_feats.expand_as(input_).clone()
        return added_feats

3.Loss function

在显著目标检测中,我们总是使用最终显著图与真实图之间的交叉熵损失。损失函数的定义为:
在这里插入图片描述
我们利用拉普拉斯算子[12]来得到网络输出的地面真实值边界和网络输出的显著性图,然后利用交叉熵损失来监督显著目标边界的生成。
在这里插入图片描述
在这里插入图片描述
拉普拉斯算子是n维欧几里得空间中的一个二阶微分算子,定义为梯度的散度(∆f)。因为二阶导数可以用来检测边缘,所以我们使用拉普拉斯算子来得到突出的对象边界。二维中的拉普拉斯算符由等式(8)给出,其中x和y是xy平面的标准笛卡尔坐标。事实上,由于拉普拉斯算子使用了图像的梯度,所以它在内部调用卷积操作来执行其计算。然后我们使用绝对操作,然后是tanh激活(9).将该值映射到[0,1]。最后,我们利用交叉熵损失来监督显著目标边界的生成等式 (10).总损失函数是它们的加权和:
在这里插入图片描述
通过实验得出α的最佳取值为0.7
在这里插入图片描述

三、 实验

在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 特征金字塔网络(Feature Pyramid Networks, FPN)是一种用于目标检测的神经网络架构。它通过在深层特征图上构建金字塔结构来提高空间分辨率,从而更好地检测小目标。FPN具有高效的多尺度特征表示和鲁棒性,在COCO数据集上取得了很好的表现。 ### 回答2: 特征金字塔网络(Feature Pyramid Networks,简称FPN)是一种用于目标检测深度学习模型。该模型是由FAIR(Facebook AI Research)在2017年提出的,旨在解决单一尺度特征不能有效检测不同大小目标的问题。 传统的目标检测算法通常采用的是滑动窗口法,即在图像上以不同大小和不同位置进行滑动窗口的检测。但是,这种方法对于不同大小的目标可能需要不同的特征区域来进行检测,而使用单一尺度特征可能会导致对小目标的错误检测或漏检。FPN通过利用图像金字塔和多层特征提取,将不同尺度的特征合并起来,从而达到对不同大小目标的有效检测。 FPN主要分为两个部分:上采样路径(Top-Down Pathway)和下采样路径(Bottom-Up Pathway)。下采样路径主要是通过不同层级的卷积神经网络(CNN)来提取特征,每层都采用了非极大值抑制(Non-Maximum Suppression,NMS)方法来选择最具有代表性的特征。上采样路径则主要是将低层特征进行上采样操作,使其与高层特征的尺寸对齐,并与高层特征相加,实现特征融合。 FPN在目标检测中的优势体现在以下几个方面。首先,FPN可以提高模型对小目标的检测能力,同时仍保持对大目标的检测准确度。其次,FPN的特征金字塔结构可以在一次前向传递中完成目标检测,减少了计算时间。最后,FPN对于输入图像的尺寸和分辨率不敏感,可以在不同分辨率的图像上进行目标检测,从而适应多种应用场景。 总之,FPN是一种在目标检测领域中得到广泛应用的模型,其特征金字塔结构能够有效地解决单一尺度特征不足以检测不同大小目标的问题,并在检测准确率和计算效率方面取得了不错的表现。 ### 回答3: 特征金字塔网络是一种用于目标检测深度学习模型,主要解决的问题是在不同尺度下检测不同大小的物体。在传统的卷积神经网络中,网络的特征图大小会不断减小,因此只能检测较小的物体,对于较大的物体则无法很好地检测。而特征金字塔网络则通过在底部特征图的基础上构建一个金字塔状的上采样结构,使得网络能够在不同尺度下检测不同大小的物体。 具体来说,特征金字塔网络由两个主要部分构成:共享特征提取器和金字塔结构。共享特征提取器是一个常规的卷积神经网络,用于提取输入图像的特征。而金字塔结构包括多个尺度的特征图,通过上采样和融合来获得不同尺度的特征表示。这些特征图之后被输入到后续的目标检测网络中,可以通过这些特征图来检测不同尺度的物体。 特征金字塔网络可以有效地解决目标检测任务中的尺度问题,并且在许多实际应用中表现出了优异的性能。例如,通过使用特征金字塔网络,在COCO数据集上得到的目标检测结果明显优于现有的一些目标检测算法。 总之,特征金字塔网络是一种非常有效的深度学习模型,可以处理目标检测任务中的尺度问题,提高模型在不同大小物体的检测精度。它在实际应用中具有很高的价值和应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值