BASNet,一种能关注边缘的显著性检测算法

转自:https://zhuanlan.zhihu.com/p/71538356

今天要聊的这篇文章是2019年CVPR的一篇显著性检测的文章。《BASNet: Boundary-Aware Salient Object Detection》,看文章标题,顾名思义,就知道文章可以很好的关注到显著性目标的边缘信息。

文章:

https://webdocs.cs.ualberta.ca/~xuebin/BASNet.pdf​webdocs.cs.ualberta.ca

 

代码:

NathanUA/BASNet​github.com图标


主要贡献

1)将显著性检测网络两个部分,一部分是predict网络,可以得到coarse saliency region,一部分是紧跟在预测网络后后面的fine网络,用来对上一步得到的coarse saliency区域进行进一步的细化,得到更加精确地显著性图。这两个网络的网络结构大致相同,都是经典的Encode-Decode网络,只不过predict网络的结构更加深一些,而fine网络则浅一些。

2)提出了hybrid loss。通过将Binary Cross Entropy (BCE),Structural SIMilarity (SSIM)和Intersection-over-Union (IoU)三种loss进行结合,让模型能够关注到图像的pixel-level,patch-level和map-level三个不同层级的显著性信息。从而获得更加精确的显著性结果。

BASNet网络结构

上面的网络结构即整个BASNet算法的网络结构,同时也是整个算法的pipeline。

整个BASNet的网络结构分为两个部分:

一部分是Predict Module,这部分网络输入一张图像,然后经过encode和decode层,输出初步预测的显著性图。这部分网络就是毕竟经典的Ecode-Decode网络,前面的Encode对图像进行提取特征,使用Pooling方法得到了分辨率逐步变小的高层语义特征,后面的Decode部分则负责将高层语义信息逐步还原放大,从而逐步获得大分辨率的feature map图,最终输出和原图一样大小的显著性图。在Encode和Decode之间,会有shortcut,将相同分辨率的feature map图相加,从而让最终的输出的feature map能够兼顾low-level和high-level的特征。值得一提的是, 在decode的过程中,共有 6 种不同分辨率的feature map图,再加上encode阶段最后一层的feature map,一共使用了7个feature map进行loss算,这种多层多loss的方法有点类似于中继loss,一方面可以帮助网络更好的收敛,另一方面可以让网络关注到不同尺度的显著性图。

另一部分是Residual Refinement Module,这部分的网络结构其实和前面的Predict Module模块网络结构一样,使用conv、BN、RELU构造encode和decode,只不过与前面的Predict Module相比,这部分的网络结构要简单一些,网络深度低一些。另外,这部分的loss只用最后一层的输出作为loss,中间层的输出则没有。

Loss

总的loss等于每层的loss的加权和: [公式]

而每层的loss又由三部分loss组成: [公式]

三部分loss分别:

  1. pixel-level的Binary Cross Entropy (BCE)loss: [公式][公式]

[公式]

其中 [公式] 表示在第r行第c列处的真实值, [公式] 则表示的是预测值。从公式形式可以看出,loss与每个像素都有关,因此是pixel-level的loss。

2. patch-level的Structural SIMilarity (SSIM) loss: [公式]

[公式]

其中 [公式] 表示从预测的显著性图和groundtruth上抠出的N*N区域。 [公式] 分别表示 [公式] 的均值和方差, [公式] 则表示他们的协方差。 [公式] 则都为了防止出现除以0 的情况。分析loss可以发现,每个像素点的产生的loss都与其附近的局部patch有关(这里是N*N的patch),因此在训练的过程中,会对物体边缘部分的loss值加强,对非边缘部分抑制。正式因为这个loss的存在,使得该算法可以关注到更多的目标显著性的边缘细节信息,

3. map-level的IoU loss: [公式]

[公式]

这里的S、G和BCE loss的含义是一样的。

三种loss中,BCE loss和IOU loss都是比较常见的目标检测、分割的loss。而SSIM loss在分割则不常用。这个loss一般用于衡量两幅图像的结构相似性,其对局部结构变化比较敏感。

实验结果

下图是实验结果对比,可以发现性能还是比较强悍的,在GPU上,256*256的图像也可以达到25fps。虽然网络结构的改进只是对Encode-Decode结构进行叠加,loss的改进创新也只是对三种loss进行组合,但是最终的结果来看还是比较work的,也说明作者的改进点简单有效。

总结:

2大贡献:

1、构造了Coarse-to-Fine的Encode-Decode网络结构

2、借鉴目标检测、目标分割、图像相似度匹配的思想,构造了混合的loss,此loss能够关注图像的pixel-level、patch-level、map-level的显著性,从而获得更加精细的显著性结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值