Depth-induced Multi-scale Recurrent Attention Network for Saliency Detection
)
简介
这是一篇卢湖川团队2019年发布在ICCV上的一篇关于rgb-d显著性检测的文章。数据集和代码均可在github上找到。
github:
https://github. com/OIPLab-DUT/DMRA_RGBD-SOD
动机和贡献
动机:
1. 以前大多数的基于CNN的SOD方法没有考虑到多级RGB和Depth信息的互补性,只是浅层或者深层阶段直接融合RGB和Depth的特征。但其实,深层特征可以提供区别性的语义信息,而浅层特征包含足够的局部细节,可以准确识别突出的对象。
2. 场景中的多个对象在深度和比例上都有很大的差异,探索深度线索与不同比例的对象之间的关系可以进一步为精确定位显着区域提供重要的提示。但是,据作者所知,在以前的SOD工作中从未研究过这种相关性
3. 研究表明,人们使用内部生成机制(IGM)感知视觉信息。在IGM中,人类捕捉到的显着性不是眼部输入的直译,而是一系列大脑活动推理的结果,尤其是在复杂场景中。但是,以前的工作从未探讨过IGM全面了解场景并捕获准确的显着区域的好处。特别是,融合特征直接用于预测,而忽略融合特征中的内部语义关系。
贡献:
为了解决动机中所说的那些问题,文章提出DRMANet( depth-induced multi-scale recurrent attention network),具体的:
1. 设计有效的深度完善block(DRB),利用残差连接的优势来完全提取并融合多层次的互补RGB和深度特征
2. 创新地设计了深度感应多尺度加权(DMSW)模块。 在该模块中,在显着性检测任务中首次探索了深度信息与不同尺度对象之间的关系。 消融分析表明,利用这种相关性可以提高检测精度并促进RGB和深度数据的集成。 在这两个过程之后,将生成具有丰富显着提示的融合特征。
3. 设计了一种新颖的循环注意力模块(RAM),其灵感来自人脑的IGM。 通过全面学习融合特征的内部语义关系,RAM可以迭代生成更准确的显着性结果
提出的模型
整体模型如下,提取特征用的是五个VGG-19的卷积块;用DRB模块进行特征融合;深度信息进行进一步处理后和融合特征再送入DMSW;最后为了提升模型性能,加入了一个新颖的RAM模块。
Multi-level Fusion Module
分别从第 i 级 stream 分别提取RGB和Depth的特征。融合后的特征经过上下采样达到相同的分辨率。后面接的残差单元用来重新放缩特征值,1x1卷积用来调整通道维数。
Depth-induced Multi-scale Weighting Module
考虑到图像由多个不同的对象组成,这些对象具有不同的大小,比例,并且以多种布局跨越不同的空间位置,因此文章提出了深度诱导的多尺度加权(DMSW)模块。 在此模块中,深度信息还与多尺度特征连接在一起,以精确定位突出的对象。结构图(Fig 4)如下:
可以看到DMSW模块中,深度信息被进一步处理,用以引导多种尺度特征的权重分配。具体的,为了获取多尺度contex features,文章使用全局池化层和几个size和dilation rates不同的kernel的并行的卷积层,得到特征输入
F
f
u
s
e
F_{f u s e}
Ffuse。这样就可以得到6个相同分辨率但contex不同的多尺度特征
F
m
(
m
=
1
,
2
,
…
,
6
)
F_{m}(m=1,2, \dots, 6)
Fm(m=1,2,…,6)。(dilated convolution [空洞卷积] 可以在不牺牲图像分辨率和增加计算量的情况下提升感受野)
并且为了获得相关的深度向量,在最后一个VGG-19模块后面加了一个全局平均池化层和卷积层,然后使用softmax去获取
V
depth
∈
R
1
×
1
×
M
V_{\text {depth}} \in \mathbb{R}^{1 \times 1 \times M}
Vdepth∈R1×1×M(这里的M就是6)
DMSW模块的公式可以定义为:
V
d
e
p
t
h
=
δ
(
W
b
∗
A
v
g
P
o
o
l
i
n
g
(
F
c
o
n
v
5.4
)
)
V_{d e p t h}=\delta\left(W_{b} * A v g P_{o o l i n g}\left(F_{c o n v 5.4}\right)\right)
Vdepth=δ(Wb∗AvgPooling(Fconv5.4))
F
m
=
ξ
(
F
fuse
;
θ
m
)
F_{m}=\xi\left(F_{\text {fuse }} ; \theta_{m}\right)
Fm=ξ(Ffuse ;θm)
F
Σ
=
∑
m
=
1
M
V
d
e
p
t
h
m
×
F
m
F_{\Sigma}=\sum_{m=1}^{M} V_{d e p t h}^{m} \times F_{m}
FΣ=m=1∑MVdepthm×Fm
Recurrent Attention Module
RAM模块的结构图也在Fig 4中。这也是这篇文章的一个最重要的提升精度的结构。
这个模块的关键在于结合attention机制和ConvLSTM。RAM可以通过之前记忆的结果帮助当前的决策,它通过不断迭代学习不同语义之间的时空依赖性,通过记忆中的场景理解( memory-oriented scene understanding)优化检测细节。ht代表用于记忆场景的先前记忆,FΣ是输入特征。
RAM部分的公式可以定义为:
A
t
t
c
(
h
t
,
F
Σ
)
=
δ
(
AvgPooling
(
W
0
∗
h
t
+
W
1
∗
F
Σ
)
)
F
~
Σ
,
t
=
A
t
t
c
(
h
t
,
F
Σ
)
⊗
F
Σ
\begin{aligned} A t t_{c}\left(h_{t}, F_{\Sigma}\right) &=\delta\left(\text {AvgPooling}\left(W_{0} * h_{t}+W_{1} * F_{\Sigma}\right)\right) \\ & \widetilde{F}_{\Sigma, t}=A t t_{c}\left(h_{t}, F_{\Sigma}\right) \otimes F_{\Sigma} \end{aligned}
Attc(ht,FΣ)=δ(AvgPooling(W0∗ht+W1∗FΣ))F
Σ,t=Attc(ht,FΣ)⊗FΣ
消融试验
消融试验的框架如下:
消融结果如下表:
总结
这篇文章给我提供了以下思路:
1. 利用两个VGG19 streams(因为还看到一篇之前的AFNet文章也用的VGG,但是是VGG16)提取特征,可以作为主干网络。浅层和深层特征都要提取,并且加以融合。浅层包含更多的空间信息,而深层更多的是语义信息。浅层特征用来找到显著物体的大致位置,深层信息可以用以在复杂环境中,提取显著物体的特征。
2. 这里,深度信息用来引导融合后的特征不同尺度下的权重分配,但是这里我觉得有点疑问,虽然深度信息确实有丰富的空间信息,但是有很多深度图质量不高,几乎是一片黑的灰的,所以这里我表示质疑。或者,我认为这里可以加上一个深度图的判断模块,如果对比度太差,低于某个指标,可以先进行增强再去引导融合。因为这里需要深度信息引导,所以不能像D3Net里那样用DDU模块剔除不好的深度图。
3. 最后的RAM模块没什么好说的,是这篇文章的亮点,其中包含了通道注意力机制和ConvLSTM的反复迭代优化,这个模块应该可以直接拿来所用,优化自己的模型。
4. 还有softmax用于多尺度特征的权重引导,这篇文章通过对深度信息进行softmax函数的分段,设置成6段,然后每一段的权重去引导融合后的6个尺度特征的权重。
5. ConvLSTM和attention机制 还需要再认真看一下。觉得这两个对显著性检测的作用非常大。