Rethinking RGB-D Salient Object Detection: Models, Datasets, and Large-Scale Benchmarks

简介

这是一篇程明明团队2019年发布在arXiv上的一篇关于rgb-d显著性检测的文章。数据集和代码均可在github上找到。

github:

https://github.com/DengPingFan/D3NetBenchmark

动机和贡献

这篇文章的 动机 :因为当前在3D显著性检测的研究工作中很少有真实世界人类活动的检测,因此在这篇文章中,为了填补这一缺陷做了如下三点贡献:
1.搜集了新的显著人物(SIP)数据集,其中包含1k张高分辨率的从各种姿势、角度、遮挡、照明、背景的现实世界场景搜集的图像。
2:提出了一种迄今为止最为全面的benchmark,该方法在这一领域已经缺失,因此可以用作未来的研究基准。
3.提出了一种简单的baseline结构,称为Deep Depth-Depurator Network(D3Net)。其中包含了深度调试单元和特征学习模块,分别进行初始的低质量的深度图滤波,和跨模态的特征学习。

Related Works

数据集及model对比

datasets

Rethinking RGB-D Salient Object Detection: Models, Datasets, and Large-Scale Benchmarks

model

Rethinking RGB-D Salient Object Detection: Models, Datasets, and Large-Scale Benchmarks

提出的模型

模型图如下
Rethinking RGB-D Salient Object Detection: Models, Datasets, and Large-Scale Benchmarks

Depth Depurator Unit(DDU)

DDU模型的目的是为了将深度图分成合理的和低质量的图,在后续的模型通道里不用差的深度图。
如图:Rethinking RGB-D Salient Object Detection: Models, Datasets, and Large-Scale Benchmarks
高质量深度图中的独立显着对象通常以定义明确的封闭边界为特征,并在其深度分布中显示出清晰的双峰。
为了剔除低质量深度图,DDU模块首先使用Otsu算法给每个输入的深度图Sd一个最佳阈值t*
t=argmaxt(σSd>t2σSdt2) \mathbf{t}^{*}=\underset{\mathbf{t}}{\arg \max }\left(\sigma_{S_{d}>\mathbf{t}}^{2}-\sigma_{S_{d} \leq t}^{2}\right) (显著区域大于t,非显著区域小于t)。
然后使用H来衡量对象在显着区域和非显着区域之间的差异。 如果像素的显着对象与背景明显区分开,则H将很高。 H可以表示为H=μ(Sdt)μ(Sd>t)H=\left|\mu\left(S_{d} \leq \mathbf{t}^{*}\right)-\mu\left(S_{d}>\mathbf{t}^{*}\right)\right|

(其中μ\mu是深度图显著区域或者非显著区域的平均值。)
再通过使用非显着区域的方差来公式化深度图的能量E:
E=σ2(Sd>t) E=\sigma^{2}\left(S_{d}>\mathbf{t}^{*}\right)
最后进一步结合特征H和E,因为对于每个深度图,一个简单的组合特征在技术上都是1D共同特征HEd=[H,E]\mathbf{H E}_{d}=[\boldsymbol{H}, \boldsymbol{E}](这句话目前没懂)。为了有效地净化低质量深度图,我们遵循回归树的一般思想对深度图像进行分类:
xd=RTree(HEd,yd;θ) \mathbf{x}_{d}=\operatorname{RTree}\left(\mathbf{H E}_{d}, \mathbf{y}_{d} ; \boldsymbol{\theta}\right)
其中 xd{0,1}\mathbf{x}_{d} \in\{0,1\}, 是预测标签(0表示低质量图,1是正常图)。yd{0,1}\mathbf{y}_{d} \in\{0,1\},是GT标签。θ是回归树的参数。

Feature Learning Module(特征学习模块,FLM)

文章设计了FLM,当DDU输出的Xd = 1的时候使用RGB - D 作为特征学习的输入,否则只使用RGB。
为了简单起见,文章使用标准ResNet50模块与几块并行的PDC(Pyramid Dilated Convolution)模块级联来提取空间特征,但是空洞不同。如网络结构图下面一层所示,用一组并行的,空洞不同的卷积核{Drk}k1K\left\{\mathbf{D}_{r_{k}}\right\}_{k-1}^{K}对支路输出F进行卷积来生成特征图{PkRW×K×M}\left\{\mathbf{P}_{k} \in \mathbb{R}^{W \times K \times M}\right\}:Pk=DrkF \mathbf{P}_{k}=\mathbf{D}_{r_{k}} * \mathbf{F} 为了解决网络退化问题,并且自动学习多尺度特征Q={Pk}k=1KQ=\left\{\mathbf{P}_{k}\right\}_{k=1}^{K}文章联合F和Q:X=Q,F=[P1,P2,,PK,F] \mathbf{X}=|\mathbf{Q}, \mathbf{F}|=\left[\mathbf{P}_{1}, \mathbf{P}_{2}, \dots, \mathbf{P}_{K}, \mathbf{F}\right]
最后用一个3x3的512通道的卷积核和一个3x3的256通道的卷积核缩减维度,最后为了生成特征图用一个1x1的一通道卷积核读出,并且用sigmoid函数**。
(作者还说自己的结构和ASPP很像,但是比后者大,可以采集更多不同尺度的信息。)

实施细节

DDU:文章为了学习回归树的参数θ,需要把每一张深度图的质量标签分配到训练集里。因此他们把S-measure<0.45的标记为低质量(0),其他为中、高质量(1)。文章随机的从NJU2K数据集选择1.4k作为训练图,并把回归树设置为5级

PDC:VGG-16和Res-101可以作为备用骨干网络。最后两个模块的卷积步长为1,输入图像resize为512x512。四个dilation factiors设置为r0=1,rk=12*k(k=1,2,3)

LOSS Function:使用交叉熵损失函数:L(S,G)=1Ni=1N(gilog(si)+(1gi)log(1si)) L(\mathbf{S}, \mathbf{G})=-\frac{1}{N} \sum_{i=1}^{N}\left(g_{i} \log \left(s_{i}\right)+\left(1-g_{i}\right) \log \left(1-s_{i}\right)\right) S和G分别是显著图和GT图,N是像素总数。

消融试验

Rethinking RGB-D Salient Object Detection: Models, Datasets, and Large-Scale Benchmarks
文章把D3Net模块作为baseline进行消融分析,并且把RGB和RGB-D分别作为BASE1和BASE2。
(这里是先不要DDU模块,BASE1和2单独跑数据集,最后再加上DDU进行整体的测试作为比较)
最后发现DDU模块对模型性能提升很大。

总结

这篇文章主要是提供了新的Datasets,并且提出了一种D3Net作为Baseline,网络标准ResNet50串联一个并行的PDC提取空间特征。最重要的部分我认为是DDU模块,这是数据筛选的一个重要过程,其实把表现很差的深度图剔除掉,只用RGB图的话,就不会让差的图去影响结果。我曾经想加上权重去分配D和RBG的特征,结果这个更狠,直接踢掉了。。。