[论文阅读] Exploring Dense Context for Salient Object Detection
论文地址:https://dx.doi.org/10.1109/TCSVT.2021.3069848
代码:https://github.com/Mhaiyang/TCSVT2021_DCENet
发表于:TCSVT 2021
Abstract
上下文在显著目标检测中起着重要作用。高级上下文描述了不同物体/物体不同部分之间的关系,因此有助于发现显著目标的具体位置;而低级上下文可以为显著目标边界的划分提供精细的信息。然而,现有的SOD方法还没有充分研究如何去感知并利用丰富上下文。常见的上下文提取策略,例如,利用大卷积核或者空洞卷积,其没有同时考虑effectiveness与efficiency,可能只能得到次优解。在本文中,我们致力于探索一种有效、高效的方式来学习上下文,最终实现准确的SOD。具体来说,我们构造了一个密集上下文探索(DCE)模块来捕捉密集的多尺度上下文信息,并进一步利用学到的上下文来提高特征的可辨识度。然后,我们将多个DCE模块嵌入至Encoder-Decoder架构中,以获取不同层次的密集上下文。此外,我们提出了一个带有注意力的skip connection,将有用的特征从编码器传到解码器,用于更好地探索密集上下文。大量的实验表明,我们提出的方法在六个基准数据集上取得了比18个SOTA更优的结果。
I. Motivation
目前获取多级上下文的方法主要有
- 使用大卷积核
- 堆叠小卷积核
- 使用空洞卷积
这几种,其实就是如何扩大感受野的问题。文中指出,前两种方法拥有较高的计算复杂度,需要消耗更多的显存,效率高而性能低;而后一种方法属于一种稀疏采样,在dilation rate较大的时候,容易造成上下文信息的丢失,效率高但性能低。为此,本文提出了DCE模块来解决这一问题。
此外,传统的skip connection直接将Encoder的特征concat至Decoder,能够实现一定的特征融合,并缩短Encoder特征与最终输出结果之间的路径,提升最终效果。然而Encoder、Decoder的特征存在一定的gap,Encoder所学到的特征中也包含着一些噪声,如果直接进行连接的话,会将无效信息引入最终结果中。为此,本文为skip connection引入了注意力机制。
II. Network Architecture
采用了Encoder(ResNet50)-Decoder架构。其中,SeE-SpE为skip connection注意力的组成部分,而DCE位于每个Decoder block后,用于对Decoder所学特征进行进一步处理。
III. Dense Context Exploration
在本节中,我们将讨论文章所提出的DCE模块。DCE模块由多个DCE block组成,因此我们先对其进行分析:
DCE block的具体流程如下:
- 对于输入特征图,利用1×1卷积进行通道降维
- 使用两个并行的{1×k,k×1}\{1 \times k, k \times 1\}{1×k,k×1}、{k×1,1×k}\{k \times 1, 1 \times k\}{k×1,1×k}卷积来对传统的k×k卷积进行近似,实现局部上下文提取
- 利用1×1卷积进行通道降维
- 使用3×3的空洞卷积来提取全局上下文
抛去两个用来降维的1×1卷积,DCE block可以简单看做为k×k空洞卷积前额外加了个传统的k×k卷积。那么接下来以单独的k×k空洞卷积为例对比,说明在其之前加一个k×k卷积的意义。为了描述方便,以一维的形式进行说明:
记输入向量为aia_{i}ai,那么一个卷积核大小为3,dilation rate为3的空洞卷积的结果c0c_{0}c0可以记为:c0=fa(a0,a3,a6)c_{0}=f_{a}\left(a_{0}, a_{3}, a_{6}\right) c0=fa(a0,a3,a6) 其中faf_{a}fa为空洞卷积操作。可以看到,此时{a1,a2,a4,a5,a7,a8}\left\{a_{1}, a_{2}, a_{4}, a_{5}, a_{7}, a_{8}\right\}{a1,a2,a4,a5,a7,a8}便丢失了。那么如果在空洞卷积之前加个传统卷积的话,则有:
c~0=fa(b0,b3,b6)=fa(fc(a0,a1,a2),fc(a3,a4,a5),fc(a6,a7,a8))\begin{aligned} \tilde{c}_{0} &=f_{a}\left(b_{0}, b_{3}, b_{6}\right) \\ &=f_{a}\left(f_{c}\left(a_{0}, a_{1}, a_{2}\right), f_{c}\left(a_{3}, a_{4}, a_{5}\right), f_{c}\left(a_{6}, a_{7}, a_{8}\right)\right) \end{aligned} c~0=fa(b0,b3,b6)=fa(fc(a0,a1,a2),fc(a3,a4,a5),fc(a6,a7,a8)) 此时a0a8a_{0}~a_{8}a0 a8所有九格的信息都得到了保留,即避免了信息的丢失。
之所以说DCE block既能做到effective也能做到efficient,是因为:
- (effective)采用了密集采样
- (effective)将k×k卷积与k×k空洞卷积结合起来,尽可能的避免了空洞卷积造成的信息丢失
- (efficient)将k×k卷积拆成了1×k与k×1卷积,降低了运算量
而DCE模块的结构如下所示:
其实从这种比较全局的角度来看,DCE就类似于Inception,将不同感受野学习到的信息给concat起来,只是区别在于Inception中的卷积被替换为了DCE block。多个DCE block构成了DCE模块,而每个DCE block只能提取某一固定尺度下的特征,因此,在DCE中,不同DCE block的kkk是不同的(kkk对应着卷积核尺寸,在本文中,分别为3、5、7、9)。
这里创新的一点是,相邻DCE Block之间是相连的,当前DCE block的信息会传递至下一个DCE block。
IV. Attentive Skip-Connection
在本节中,我们将讨论文章所提出的Attentive Skip-Connection,其结构如下所示,可以进一步分为SeE Block与SpE Block两个部分:
Semantic Enhancement Block
在特征图中,不同的通道是对不同的语义进行响应的,因此需要将包含有价值语义的通道进行加强,反之进行削弱。SeE Block便是这么一种通道注意力模块。如图所示,其主要包含一个全局池化层(GAP)和两个全连接层,这三层的作用就是算权重,然后将得到的权重与输入特征进行pixel-wise乘便可以得到经过注意力强化后的特征。这里有趣的一点是尽管引入了两个FC层,但文中表示其并不会带来太多的计算开销。
Spatial Enhancement Block
其实从结构上看,SpE做的是注意力上的注意力,即对经过通道注意力后的特征图再进行一次注意力操作。而这次注意力的是从解码器特征学习而来,以尽可能去消除编码器解码器特征之间的gap。实验结果也证实了SpE的有效性:
可以看到,深层解码器特征(SpE_3)所生成的注意力图主要关注在对象的全局位置上,而浅层解码器特征(SpE_1)所生成的注意力图主要关注在对象的边缘上。通过这么个注意力,可以更好地利用浅层编码器得到的局部特征,以及深层编码器得到的全局特征。
落实到实现上,图级别的注意力只需要用一个卷积层及其附件实现即可。
V. Loss
本文所采用的的loss如下:
L=αℓbce+βℓiou+γℓedge\mathcal{L}=\alpha \ell_{b c e}+\beta \ell_{i o u}+\gamma \ell_{e d g e} L=αℓbce+βℓiou+γℓedge 其中α=β=γ=1\alpha=\beta=\gamma=1α=β=γ=1。相比于传统BCE与IoU的组合而言,多了个edge preservation loss,该loss由PFAN(CVPR 2019)[1]提出,作用是更好地对显著目标边界进行监督训练。
VI. Experiment
性能超越了18个最近模型,包括C2SNet(ECCV 2018)、RAS(ECCV 2018)、PAGRN(CVPR 2018)、DGRL(CVPR 2018)、R3Net(IJCAI 2018)、BMPM(CVPR 2018)、PiCANet(CVPR 2018)、DSS(CVPR 2017)、BASNet(CVPR 2019)、CPD(CVPR 2019)、PAGE(CVPR 2019)、PoolNet(CVPR 2019)、AFNet(CVPR 2019)、BANet(ICCV 2019)、CANet(TMM 2020)、DSR-Net(TCSVT 2020)、ITSD(CVPR 2020)、MINet(CVPR 2020)。
VII. Summary
本文在结构上算是比较简练的那一类,虽然是从上下文的角度出发,整体依然围绕着特征提取融合来做。
DCE与ASPP等模块类似,作用是更好地对特征进行处理,只是本文的DCE加在了每个Decoder Block之后而非仅加在Encoder-Decoder的特征处,更大的亮点在于向各DCE block间引入了信息流动。efficiency通过非对称卷积实现,算是早在Inception V3时提出的一种卷积核降参数策略;而effectiveness指的是在空洞卷积之前加一个同尺寸的普通卷积,既避免了只用空洞卷积造成的信息丢失,又避免了采用连续两个普通卷积带来的性能问题,有可能能成为使用空洞卷积时的一种技巧。
至于Attentive Skip-Connection,虽然和skip connection谈上了关系,但是从结构上依然可以看做是传统的对Encoder学到的特征进行后处理。其中的通道注意力部分与其他网络类似(都是一个全局平均池化后面跟两个全连接层),亮点在于使用Decoder学到的特征来给Encoder特征做注意力。
Ref
[1] T. Zhao and X. Wu, “Pyramid feature attention network for saliency detection,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2019, pp. 3085–3094.
[论文阅读] Exploring Dense Context for Salient Object Detection相关推荐
- [论文阅读] Unifying Global-Local Representations in Salient Object Detection with Transformer
论文地址:https://arxiv.org/abs/2108.02759 代码:https://github.com/OliverRensu/GLSTR 发表于:Arxiv 2021.08 Abst ...
- 论文阅读:BASNet:Boundary-Aware Salient Object Detection
论文地址:https://webdocs.cs.ualberta.ca/~xuebin/BASNet.pdf 内容简介 这个网络是用来做显著目标检测的(SOD),可以在边界处取得比较出色的效果 Bou ...
- 论文阅读 End-to-End Multi-View Fusion for 3D Object Detection in Lidar Point Clouds
[论文阅读] End-to-End Multi-View Fusion for 3D Object Detection in Lidar Point Clouds 原文链接:https://arxiv ...
- 论文笔记007:[TOMM2020]Exploring Image Enhancement for Salient Object Detection in Low Light Images
摘要 在非均匀光照环境下获取的弱光图像通常会随着场景深度和环境光的不同而退化.这种退化导致退化图像模式下的目标信息严重丢失,由于低对比度和人工光的影响,使得显著目标检测变得更加困难.然而,现有的显著目 ...
- 【论文阅读】【综述】3D Object Detection 3D目标检测综述
目录 写在开头 3D Object Detection 相关博客: Sliding window Vote3Deep: Fast Object Detection in 3D Point Clouds ...
- ICPR 2020 | 论文阅读 ——SyNet: An Ensemble Network for Object Detection in UAV Images
SyNet 1. Motivation 2. Method 2.1. Object detecion 2.2. SyNet 2.3 Image Augmentation 3. Experiments ...
- 论文阅读:Oriented RepPoints for Aerial Object Detection (CVPR 2022)
paper:https://arxiv.org/abs/2105.11111 code:GitHub - LiWentomng/OrientedRepPoints: The code for &quo ...
- 论文阅读:CenterNet: Keypoint Triplets for Object Detection(CVPR2019)
论文地址:https://arxiv.org/abs/1904.08189 github实现:https://github.com/Duankaiwen/CenterNet 摘要 目标检测中,基于关键 ...
- 三维目标检测论文阅读:PointPillars: Fast Encoders for Object Detection from Point Clouds
PointPillars: Fast Encoders for Object Detection from Point Clouds code ID: https://github.com/nuton ...
最新文章
- wordpress ajax 调用wpdb_莫名其妙的调用Roboto字体又莫名其妙的恢复的过程
- oracle DBA 常用表和视图
- leetcoder reverse polish notation解题笔记
- centos6.5 Building the main Guest Additions module
- 如何用ABAP代码的方式弹出SPRO里的customizing activity
- 伪装 php 版本号,linux伪装隐藏Nginx,PHP版本号提升服务器安全性
- ubuntu修改固定ip
- 避免大规模故障的微服务架构设计之道
- 8255数码管显示0到9_汇编语言--键盘扫描及显示实验(含代码解释)
- 从 JavaScript 到 TypeScript
- 鸿蒙的应用列表,图解鸿蒙列表组件ListContainer
- 远程登录服务器时,提示未被授予终端服务器登录权限?
- electron build报错,nsis下载不下来的情况
- 什么是web前端开发和后端开发?
- 【Linux环境下C语言编程】
- 1946年第一台计算机在哪个国家面试,面试问题 计算机
- 一起学英语-英语名词,代词,动词辨析,混合词序,原级比较,形容词副词比较,多音节形容词,接词连词冠词,动词时态
- 教你快速去除照片上的水印?操作简单,小白一学就会!
- ping unknown host问题怎么解决?
- 6.1.3 一阶线性方程的线性、齐次与通解公式
热门文章
- e300氛围灯哪里调节_保时捷macan内饰改装升级32色呼吸氛围灯
- 钉钉小程序使用vant_高效钉钉小程序开发丨详解Hello,dingtalk
- python画散点图带直线和图例_带图例的Matplotlib散点图
- (第二章)mysql创建数据库
- linux thinkphp 计划任务_ThinkPHP定时任务项目案例分析
- labview csv文件处理_LabVIEW 相关知识点分类汇总
- postman 指定响应格式_牛鹭学院:Postman接口测试方法,新手必看!
- 《南溪的目标检测学习笔记》——权重初始化
- Python Tkinter之variable用法
- 使用RDKit将pdb文件转成SMILES