显著性检测学习笔记(1):D3Net

简介

这是一篇程明明团队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

Alt

model

各类模型对比

提出的模型

模型图如下
模型图

Depth Depurator Unit(DDU)

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

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

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

文章设计了FLM,当DDU输出的Xd = 1的时候使用RGB - D 作为特征学习的输入,否则只使用RGB。
为了简单起见,文章使用标准ResNet50模块与几块并行的PDC(Pyramid Dilated Convolution)模块级联来提取空间特征,但是空洞不同。如网络结构图下面一层所示,用一组并行的,空洞不同的卷积核 { D r k } k − 1 K \left\{\mathbf{D}_{r_{k}}\right\}_{k-1}^{K} {Drk}k1K对支路输出F进行卷积来生成特征图 { P k ∈ R W × K × M } : \left\{\mathbf{P}_{k} \in \mathbb{R}^{W \times K \times M}\right\}: {PkRW×K×M} P k = D r k ∗ F \mathbf{P}_{k}=\mathbf{D}_{r_{k}} * \mathbf{F} Pk=DrkF为了解决网络退化问题,并且自动学习多尺度特征 Q = { P k } k = 1 K Q=\left\{\mathbf{P}_{k}\right\}_{k=1}^{K} Q={Pk}k=1K文章联合F和Q: X = ∣ Q , F ∣ = [ P 1 , P 2 , … , P K , F ] \mathbf{X}=|\mathbf{Q}, \mathbf{F}|=\left[\mathbf{P}_{1}, \mathbf{P}_{2}, \dots, \mathbf{P}_{K}, \mathbf{F}\right] X=Q,F=[P1,P2,,PK,F]
最后用一个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 ) = − 1 N ∑ i = 1 N ( g i log ⁡ ( s i ) + ( 1 − g i ) log ⁡ ( 1 − s i ) ) 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) L(S,G)=N1i=1N(gilog(si)+(1gi)log(1si))S和G分别是显著图和GT图,N是像素总数。

消融试验

在这里插入图片描述
文章把D3Net模块作为baseline进行消融分析,并且把RGB和RGB-D分别作为BASE1和BASE2。
(这里是先不要DDU模块,BASE1和2单独跑数据集,最后再加上DDU进行整体的测试作为比较)
最后发现DDU模块对模型性能提升很大。

总结

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

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值