论文地址:https://doi.org/10.1016/j.patcog.2021.107867
发表于:PR 2021

Abstract

显著目标检测(SOD)是计算机视觉领域的一个基本问题。本文提出了一个新颖的空间上下文感知网络(SCA-Net),用于图像中的SOD。与最近其他基于深度学习的SOD方法相比,SCA-Net能够更有效地聚合多级深度特征。一个长路径上下文模块(LPCM)用于赋予包含全局信息特征图更好的辨别能力。这样,就可以得到一个更好的初始saliency map,以用于后续的预测。此外,SCA-Net还采用了一个短路径上下文模块(SPCM),用于逐步加强局部上下文线索与全局特征之间的互动。在五个大型benchmark上进行的广泛实验表明,SCA-Net与最近的SOTA相比取得了良好的性能。

I. Motivation

在CNN中,全局上下文信息是通过一系列下采样操作(如不同stride卷积层、池化层)得到的。对于最终得到的全局特征,存在这么些问题:

  • 空间分辨率较小
  • 缺乏局部细节

而后续的预测过程基本都是要基于Encoder学到的全局特征的,全局特征的质量会对最终结果产生关键的影响,一个例子如下所示:

一般来说,得到的全局特征图会像b这样,确实能够包含显著目标(图中的马)的大致位置,但是在一些关键区域(如耳朵、腿)仍然是模糊的。因此,有必要提升全局特征中这些模糊区域的可区分性,达到类似c中的效果。

此外,对于许多方法,局部上下文信息是通过将深层信息与浅层信息逐渐融合得到的,而如果此时中间特征包含大量噪声,便会影响最终特征融合的效果,如上图e所示。因此,需要寻找一种方法来恢复全局特征图中的细节信息。

II. Network Architecture


从整体结构而言,分为三个部分:Encoding Network(ResNet 50)、Decoding Network、Fusion Network。

III. Long-Path Context Module

Long-Path Context Module,长路径上下文模块,这个东西的作用是"提升包含全局信息的特征图的可判别性",也就是对全局特征做文章,提升下全局特征的精度。既然是用来处理全局特征的,那么LPCM位置基本上就跑不了了,与大多数情况类似,其位于Encoder与Decoder的连接处:

因为文中没有给出LPCM的结构示意图,因此下面用公式一点一点来分析这个模块的思想和作用。

在此之前,需要先了解Affinity Matrix(亲和矩阵,相似矩阵)是什么东西。一般来说在计算机视觉任务中,Affinity Matrix算的就是图像中每个点与其他所有点的相关性,而这个相关性通常是用余弦相似度来计算的。当两个向量垂直时,cos值为0,不相似;当两个向量平行时,cos值为1,相似。低相关性意味着相应像素的独特性。有关Affinity Matrix的一些更详细的讲解可以见文章[1~2]。

记输入特征图为F∈RW×H×C\mathbf{F} \in \mathbb{R}^{W \times H \times C}F∈RW×H×C,fi∈R1×1×C\mathbf{f}_{i} \in \mathbb{R}^{1 \times 1 \times C}fi​∈R1×1×C为F\mathbf{F}F于(Wi,Hi)\left(W_{i}, H_{i}\right)(Wi​,Hi​)处的特征向量,xi\mathbf{x}_{i}xi​、xj\mathbf{x}_{j}xj​分别为 (Wi,Hi)\left(W_{i}, H_{i}\right)(Wi​,Hi​)、(Wj,Hj)\left(W_{j}, H_{j}\right)(Wj​,Hj​)处的特征向量,g(xi,xj)g\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right)g(xi​,xj​)为相关系数,计算的是xi\mathbf{x}_{i}xi​、xj\mathbf{x}_{j}xj​之间的相关性(即上文提到的亲和矩阵中的亲和性)。至此,可以将LPCM模块的任务记为下式:
fiL=1N(x)∑∀jg(xi,xj)⋅fj\mathbf{f}_{i}^{L}=\frac{1}{\mathcal{N}(\mathbf{x})} \sum_{\forall j} g\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right) \cdot \mathbf{f}_{j} fiL​=N(x)1​∀j∑​g(xi​,xj​)⋅fj​ 即,将某个位置原有的特征向量fi\mathbf{f}_{i}fi​,替换为了图像中其余位置所有特征向量的加权和fiL\mathbf{f}_{i}^{L}fiL​。上式中N(x)\mathcal{N}(\mathbf{x})N(x)为标准化因子,作用为保证相关系数的和1,有1N(x)∑∀jg(xi,xj)=1\frac{1}{\mathcal{N}(\mathbf{x})} \sum_{\forall j} g\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right)=1N(x)1​∑∀j​g(xi​,xj​)=1。和一般卷积操作相比,这相当于将感受野扩展到了整张特征图,对全局信息进行了编码。

落实到具体网络实现,首先,将特征图F\mathbf{F}F按通道展开,得到F‾∈RN×C\overline{\mathbf{F}} \in \mathbb{R}^{N \times C}F∈RN×C,其中N=W×HN=W \times HN=W×H。那么上面刚提到的LPCM任务式便可以被重写为:F‾L=GL×F‾\overline{\mathbf{F}}^{L}=\mathbf{G}^{L} \times \overline{\mathbf{F}}FL=GL×F 其中GL={g(xi,xj)}i,j=1N∈RN×N\mathbf{G}^{L}=\left\{g\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right)\right\}_{i, j=1}^{N} \in \mathbb{R}^{N \times N}GL={g(xi​,xj​)}i,j=1N​∈RN×N便表示长路径亲和矩阵。在该矩阵中,每个元素都对成对的亲和关系进行了编码。可以看到,这其实就是个可微的线性变换,因此很容易使用CNN进行实现。落实到具体特征上,有:
fj=f(xj)=Wfxj\mathbf{f}_{j}=f\left(\mathbf{x}_{j}\right)=\mathbf{W}_{f} \mathbf{x}_{j} fj​=f(xj​)=Wf​xj​ Wf\mathbf{W}_{f}Wf​就是个可学习的权重矩阵。而对于相关性的具体计算,有:
g(xi,xj)=eα(xi)Tβ(xj)g\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right)=e^{\alpha\left(\mathbf{x}_{i}\right)^{T} \beta\left(\mathbf{x}_{j}\right)} g(xi​,xj​)=eα(xi​)Tβ(xj​) 其中α(xi)=Wαxi\alpha\left(\mathbf{x}_{i}\right)=\mathbf{W}_{\alpha} \mathbf{x}_{i}α(xi​)=Wα​xi​,β(xj)=Wβxj\beta\left(\mathbf{x}_{j}\right)=\mathbf{W}_{\beta} \mathbf{x}_{j}β(xj​)=Wβ​xj​为嵌入函数。

总体看下来,命名中的Long-Path,其实对应的就是这个Affinity Matrix。由于亲和矩阵的计算需要与特征图中各位置的特征向量进行比较,所以其是"长路径"的。至于最终作用,LSPM可以利用相似性强化局部区域(前景),并弱化背景。

IV. Short-Path Context Module

Short-Path Context Module,短路径上下文模块,这个东西的作用是"逐步加强局部上下文与全局特征之间的交流",也就是做局部特征与全局特征的融合。从这一作用的角度,容易想到其位于各Decoder的连接处:

相比于LPCM的一点在于这次SPCM是给出网络结构图了…不过我们依然先从数学推导开始说明。同样地,记输入特征图为F∈RW×H×C\mathbf{F} \in \mathbb{R}^{W \times H \times C}F∈RW×H×C,SPCM的目标是得到:fiS=1N(x)∑j∈N(xi)g(xi,xj)⋅fj\mathbf{f}_{i}^{S}=\frac{1}{\mathcal{N}(\mathbf{x})} \sum_{j \in N\left(\mathbf{x}_{i}\right)} g\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right) \cdot \mathbf{f}_{j}fiS​=N(x)1​j∈N(xi​)∑​g(xi​,xj​)⋅fj​ 这里与LPCM的一点不同是,jjj不再是图中其他任意位置,而只是输入xi\mathbf{x}_{i}xi​的附近位置(周围一圈八格),所以这个东西是"短路径"的。记此时的短路径亲和矩阵为GS\mathbf{G}^{S}GS,类似地,将F\mathbf{F}F按通道展开,有:
F‾S=GS×F‾\overline{\mathbf{F}}^{S}=\mathbf{G}^{S} \times \overline{\mathbf{F}} FS=GS×F 作为一个矩阵乘法,其同样可以改写为下式以便用卷积网络实现:fi,jS=∑s,t=−11wi,j(s,t)⊙fi+s,j+t\mathbf{f}_{i, j}^{S}=\sum_{s, t=-1}^{1} \mathbf{w}_{i, j}(s, t) \odot \mathbf{f}_{i+s, j+t} fi,jS​=s,t=−1∑1​wi,j​(s,t)⊙fi+s,j+t​ fi,j\mathbf{f}_{i, j}fi,j​为(i,j)(i,j)(i,j)处的特征向量,wi,j∈R3×3×C\mathbf{w}_{i, j} \in \mathbb{R}^{3 \times 3 \times C}wi,j​∈R3×3×C为网络的可学习参数(即3×3卷积核),⊙\odot⊙为element-wise乘。

SPCM的结构示意图如下:

V. Fusion Network

Fusion Network做的是side-output prediction的融合,以得到最终的预测结果。这里比较有意思的一点是,其将原始图像也引入了融合过程中,如下所示:

具体过程如下:

  • 将各side-output prediction上采样至原图像尺寸
  • 将采样后的各prediction与原始图像进行channel-wise concat
  • 通过四个卷积层学习得到最终结果

VI. Loss

本文没有采用比较特别的loss设计技巧,还是用的Cross Entropy交叉熵损失,最终的loss如下:
Ltotal =LI+∑i=14LD(i)+LF\mathcal{L}_{\text {total }}=\mathcal{L}_{I}+\sum_{i=1}^{4} \mathcal{L}_{D}^{(i)}+\mathcal{L}_{F} Ltotal ​=LI​+i=1∑4​LD(i)​+LF​
其中:

  • LI\mathcal{L}_{I}LI​: 初始预测结果SI\mathbf{S}_{I}SI​的损失
  • LD(i)\mathcal{L}_{D}^{(i)}LD(i)​: 中间预测结果SDi\mathbf{S}_{Di}SDi​的损失
  • LF\mathcal{L}_{F}LF​: 最终预测结果SF\mathbf{S}_{F}SF​的损失

VII. Experiment

性能超越了13个最近模型,包括MINet(CVPR 2020)、RAS(ECCV 2018)、PoolNet(CVPR 2019)、AFNet(CVPR 2019)、BAS(CVPR 2019)、HRSD(ICCV 2019)、MLMS(CVPR 2019)、PiCA(CVPR 2018)、BMPM(CVPR 2018)、PAGR(CVPR 2018)、R3Net(IJCAI 2018)、Amulet(ICCV 2017)、DSS(CVPR 2017)

VIII. Summary

从出发点来讲,本文做的是比较经典的如何处理Encoder得到的全局特征(LPCM)与怎样进行更好的特征融合(SPCM),核心创新思想在于引入了在传统图像领域里面用的更多一些的Affinity Matrix概念,用来强化模型去学习"对比度"这样的一个能力。

Ref

[1] https://blog.csdn.net/haohulala/article/details/109602671
[2] https://deepai.org/machine-learning-glossary-and-terms/affinity-matrix

论文阅读:Spatial context-aware network for salient object detection相关推荐

  1. [论文阅读] Cross-layer feature pyramid network for salient object detection

    论文地址:https://dx.doi.org/10.1109/TIP.2021.3072811 发表于:TIP 2021 Abstract 基于特征金字塔(FPN)的模型,以渐进的方式融合语义与显著 ...

  2. 【论文笔记】Multi-Content Complementation Network for Salient Object Detection in Optical RSI

    论文 论文:Multi-Content Complementation Network for Salient Object Detection in Optical Remote Sensing I ...

  3. [论文阅读] AMPNet: Average- and Max-Pool Networks for Salient Object Detection

    论文地址:https://dx.doi.org/10.1109/TCSVT.2021.3054471 发表于:TCSVT 2021 Abstract 显著目标检测的任务是检测图像中最具视觉特色的物体. ...

  4. 论文阅读:Pyramidal Feature Shrinking for Salient Object Detection

    论文地址:https://ojs.aaai.org/index.php/AAAI/article/view/16331 发表于:AAAI 2021 I. Intro 这个网络是用来做显著目标检测的 核 ...

  5. 自监督论文阅读笔记 Self-Supervised Pretraining for RGB-D Salient Object Detection

    现有的基于 CNN 的 RGB-D 显著对象检测 (SOD) 网络都需要在 ImageNet 上进行预训练,以学习有助于提供良好初始化的层次特征.然而,大规模数据集的收集和注释既耗时又昂贵.在本文中, ...

  6. EGNet: Edge Guidance Network for Salient Object Detection 论文及代码解读

    EGNet: Edge Guidance Network for Salient Object Detection 论文及代码解读 注:本文原创作者为Jia-Xing Zhao, Jiang-Jian ...

  7. 显著性目标检测之Global Context-Aware Progressive Aggregation Network for Salient Object Detection

    Global Context-Aware Progressive Aggregation Network for Salient Object Detection 文章目录 Global Contex ...

  8. 分析显著性目标检测--Global Context-Aware Progressive Aggregation Network for Salient Object Detection

    分析显著性目标检测--Global Context-Aware Progressive Aggregation Network for Salient Object Detection 引入 方法 网 ...

  9. ECCV 2020预会议 直播笔记| Suppress and Balance: A Simple Gated Network for Salient Object Detection

    目标跟踪基础与智能前沿 寻找 目标跟踪方向的小伙伴,如果你苦于没有地方可以和同方向的小伙伴交流,我们创建了一个交流群,点上方链接可以进入,每周的交流活动通过该号宣传,群里随时随地可以展开讨论,无论是学 ...

  10. 文献阅读20期:Transformer Transforms Salient Object Detection and Camouflaged Object Detection

    [ 文献阅读 ] Transformer Transforms Salient Object Detection and Camouflaged Object Detection [1] 表现SOTA ...

最新文章

  1. poj2002 hash+数学
  2. 使用CA和CCA克隆账户
  3. jtable如何从表格中定位_Java Swing组件编程之JTable表格用法实例详解
  4. mysql时间与字符串相互转换
  5. 嵌入式IAP开发笔记之一:面向STM32的BootLoader程序
  6. python字符串百分号_Python字符串格式化的2种方法
  7. respondsToSelector的相关使用
  8. jsp以及servlet中文乱码问题
  9. Luogu1832 A+B Problem(再升级)
  10. 深度学习的1000+篇文章总结
  11. 调通sina33下的AP6212A0(WIFI+BT)V1.2
  12. python function terminated_评论第2页 – Calibre 转换 TXT 文件出现 Errno 21 错误的解决方法 – 书伴...
  13. 生物学和计算机学哪个好,生物学和计算机
  14. 文件及文件夹删除失败的解决方法
  15. LeetCode 1114:按序打印
  16. 学习笔记(34):Python 面试100讲(基于Python3.x)-用正则表达式分别提取电话号的区号、电话号和分机号...
  17. 鲲鹏与江西才俊的七夕之约
  18. 把屏幕竖起来看代码很爽
  19. Django Iframe +Form 上传图片文件等 前端显示
  20. 拓扑排序(最大食物链计数、图文结合)

热门文章

  1. linux系统sed语法,22. Linux sed命令
  2. mfc 使打开的窗口至于最顶层_MFC界面开发控件BCG帮助文档——功能区设计器(2)
  3. 递归求解全排列问题以及八皇后问题
  4. set容器内元素的访问
  5. CUDA——安装Cython包
  6. Python中循环(列表循环)的学习笔记~
  7. 像python一样运行js的__main__
  8. HDU3068 回文串 Manacher算法
  9. 【Qt串口调试助手】1.7 - QLabel标签插入链接,修改Qt应用图标
  10. 小技巧 ----- 通过二进制串的位运算进行二维指数型枚举