作者 | 文永亮

学校 | 哈尔滨工业大学(深圳)

研究方向 | 目标检测

概要

​ 这是一篇发表于CVPR2019的关于显著性目标检测的paper,《BASNet:Boundary-Aware Salient Object Detection》[1]显而易见的就是关注边界的显著性检测,主要创新点在loss的设计上,使用了交叉熵、结构相似性损失、IoU损失这三种的混合损失,使网络更关注于边界质量,而不是像以前那样只关注区域精度。在单个GPU上能跑25 fps,在六种公开数据集上能达到 state-of-the-art的效果。作者也在github上放出了源码:https://github.com/NathanUA/BASNet

模型架构

Fig 1. BASNet 的网络结构

这个网络结构的特点:

  • 采用深层编码器-解码器的结构得到一个粗糙的结果
  • 采用RRM(Residual Refinement Module)修正结果,使用了残差模块

\[
S_{refined}=S_{coarse}+S_{residual}
\]

Fig 2. (a)红色:GT(Ground Truth,以下都简称GT)的概率图,(b)绿色:粗糙边界与GT不对齐,(c)蓝色:粗糙区域内部判定概率也低,(d)紫色:粗糙的预测通常都有这两个问题。

其中“粗糙“定义为两个方面:

  • 如Fig 2(b)所示,粗糙表现在边界无法与GT对齐。
  • 如Fig 2(c)所示,粗糙表现在不均匀的区域预测概率。

而经过前面步骤的得到的真正的粗糙结果通常都是带有以上两个问题。

loss上的设计

三种loss的叠加对应三个层次:(这让我想起了之前的Libra R-CNN也是三个平衡对应三个层次)
\[
\ell^{(k)}=\ell_{b c e}^{(k)}+\ell_{s s i m}^{(k)}+\ell_{i o u}^{(k)}
\]
\(\ell_{b c e}^{(k)}\) 对应pixel-level,\(\ell_{s s i m}^{(k)}\) 对应patch-level,\(\ell_{i o u}^{(k)}\) 对应map-level。
\[
\ell_{b c e}=-\sum_{(r, c)}[G(r, c) \log (S(r, c))+(1-G(r, c)) \log (1-S(r, c))]
\]
\(\ell_{bce}\) 就是最基本的最常用的二值交叉熵,其中\(G(r,c)\in\{0,1\}\) 表示(r, c)像素点是否为GT label,\(S(r,c)\) 表示预测出(r, c)像素点为显著物体的概率。
从结构相似性指标引出结构相似性损失:

\[
\operatorname{SSIM}(x, y)=\frac{\left(2 \mu_{x} \mu_{y}+c_{1}\right)\left(2 \sigma_{x y}+c_{2}\right)}{\left(\mu_{x}^{2}+\mu_{y}^{2}+c_{1}\right)\left(\sigma_{x}^{2}+\sigma_{y}^{2}+c_{2}\right)}
\]

作为结构相似性理论的实现,结构相似度指数从图像组成的角度将结构信息定义为独立于亮度、对比度的,反映场景中物体结构的属性,并将失真建模为亮度、对比度和结构三个不同因素的组合。均值作为亮度的估计,标准差作为对比度的估计,协方差作为结构相似程度的度量。[2]

\[
\ell_{\text {ssim}}=1-\frac{\left(2 \mu_{x} \mu_{y}+C_{1}\right)\left(2 \sigma_{x y}+C_{2}\right)}{\left(\mu_{x}^{2}+\mu_{y}^{2}+C_{1}\right)\left(\sigma_{x}^{2}+\sigma_{y}^{2}+C_{2}\right)}
\]

\(\ell_{ssim}\) 是结构相似性损失,SSIM就是structural similarity index的意思,这是本文关注边界的重点部分,是为了评估图片质量的,捕捉结构化信息,是用于学习显著性目标与GT之间的结构化信息的。结构相似性损失的表达如上面的公式(3)所示。

简单的来说,就是要计算两张图的结构相似性,我们需要开一个局部窗口(N x N大小的),计算窗口内的结构相似性损失,以像素为单位滑动,最后取所有窗口的结构相似性损失的平均。 具体计算方式就是令两张图片的对应像素点表示为为\(x\)和\(y\),其中\(x=\{x_j:j=1, ...,N^2\}\) 和\(y=\{y_j:j=1,...,N^2\}\) ,因为窗口大小为\(N\times N\) ,\(\mu_x,\mu_y\) 和$\sigma_x,\sigma_y $ 分别是\(x\)和\(y\)的均值和方差,\(\sigma_{xy}\)为\(x\)和\(y\)的协方差。\(C_1=0.01^2\)和\(C_2=0.03^2\)是为了避免分母为0。

SSIM损失作用于patch-level的,关键在于它着眼于边界,但是这个标准真的能着眼于边界吗?具体地讲,就是会对边界对不上的地方加大惩罚吗?作者用热力图(heatmap)可视化了整个训练过程损失的变化,用来阐述各种loss的作用。

Fig 3. P_fg和P_bg是表示预测为前景或背景的概率。

可以看到Fig 3的这三行热力图变化,颜色越红代表损失对待该像素点的权重越大,也就是越重视该点,越蓝表示权重对待越小。从第一行的BCE损失变化可以看出,BCE损失是pixel-wise的,它是一个非常公平的损失函数,对待前景和背景一开始区别不大,训练过程中几乎达到了任何像素点都一视同仁

而第二行关于结构相似性损失的变化,可以看到无论\(\hat{P}_{fg}\)和\(\hat{P}_{bg}\)怎么变化都是对显著物体边界赋予较高的权重

第三个损失是IoU损失,就是交叠率损失,数学表达式如下:
\[
\ell_{i o u}=1-\frac{\sum_{r=1}^0{H} \sum_{c=1}^{W} S(r, c) G(r, c)}{\sum_{r=1}^{H} \sum_{c=1}^{W}[S(r, c)+G(r, c)-S(r, c) G(r, c)]}
\]
其中的\(S(r,c),G(r,c)\)都与\(\ell_{ssim}\)表示的一致。文中也没有对其做过多的解释。

实验结果

对于RRM模块,作者在对比实验中用了下面三种,(c)是文章所用的结构:

Fig 4. (a) local boundary refinement module RRM_LC; (b) multi-scale refinement module RRM_MS; (c) our encoder-decoder refinement module RRM_Ours

对于不同的结构和不同的损失函数做了组合对比实验,得到下面的表格:

Table 1. 各种loss和基础网络结构的组合的对比

其中的\(F_{\beta}\)如下:
\[
F_{\beta}=\frac{\left(1+\beta^{2}\right) \times \text {Precision} \times \text {Recall}}{\beta^{2} \times \text {Precision}+\text {Recall}}
\]
\(relaxF_\beta\)是边界评价标准,可以参考文献[3]

下面是各种loss的情况下,显著性检测的效果,在传统困难的多物体重合与背景差别不大的情况下,从效果图中能看到三种loss一起的效果跟有结构性损失的效果都表现的不错。

各种方法的对比下,在\(relaxF_\beta\)的标准下始终能够达到state-of-the-art的效果,但是对于\(maxF_\beta\)这个评价标准,并不能在所有的数据集上做到最好,这也是因为这个方法着眼于解决边界质量。

总结

​ BASNet该方法主要的亮点在于引入结构相似性损失,最后三种损失(BCE损失,SSIM损失,IoU损失)相加,同时考虑,着眼于解决边界模糊问题,更注重边界质量,因为在结构相似性损失下,边界的损失会比显著性物体内部或其他地方赋予的权重更高。文章也尝试从三种层次上解答为什么设计三个损失,结构还算清晰。但是个人认为主要还是结构相似性损失的引入比较有价值。

参考文献

[1]. Xuebin Qin, Zichen Zhang, Chenyang Huang, Chao Gao, Masood Dehghan, Martin Jagersand. BASNet: Boundary-Aware Salient Object Detection. The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2019, pp. 7479-7489

[2]. Zhou Wang, Eero P Simoncelli, and Alan C Bovik. Multiscale structural similarity for image quality assessment. In The Thrity-Seventh Asilomar Conference on Signals, Systems & Computers, 2003, volume 2, pages 1398–1402. IEEE, 2003.

[3]. Marc Ehrig and J´erˆome Euzenat. Relaxed precision and recall for ontology matching. In Proc. K-Cap 2005 workshop on Integrating ontology, pages 25–32. No commercial editor., 2005.

CVPR2019 论文解读| BASNet:关注边界的显著性目标检测的更多相关文章

  1. CVPR2020论文解读:3D Object Detection三维目标检测

    CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...

  2. CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状

    CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状 ROI-10D: Monocular Lifting of 2D Detection to 6D Pose and Metric Sha ...

  3. CVPR2019 | Mask Scoring R-CNN 论文解读

    Mask Scoring R-CNN CVPR2019 | Mask Scoring R-CNN 论文解读 作者 | 文永亮 研究方向 | 目标检测.GAN 推荐理由: 本文解读的是一篇发表于CVPR ...

  4. 带你读AI论文丨用于目标检测的高斯检测框与ProbIoU

    摘要:本文解读了<Gaussian Bounding Boxes and Probabilistic Intersection-over-Union for Object Detection&g ...

  5. CVPR 2019|PoolNet:基于池化技术的显著性检测 论文解读

    作者 | 文永亮 研究方向 | 目标检测.GAN 研究动机 ​ 这是一篇发表于CVPR2019的关于显著性目标检测的paper,在U型结构的特征网络中,高层富含语义特征捕获的位置信息在自底向上的传播过 ...

  6. CVPR2019 | Libra R-CNN 论文解读

    作者 | 文永亮 学校 | 哈尔滨工业大学(深圳) 研究方向 | 目标检测.GAN 推荐理由 ​ 这是一篇发表于CVPR2019的paper,是浙江大学和香港中文大学的工作,这篇文章十分有趣,网友戏称 ...

  7. zz扔掉anchor!真正的CenterNet——Objects as Points论文解读

    首发于深度学习那些事 已关注写文章   扔掉anchor!真正的CenterNet——Objects as Points论文解读 OLDPAN 不明觉厉的人工智障程序员 ​关注他 JustDoIT 等 ...

  8. CVPR2020行人重识别算法论文解读

    CVPR2020行人重识别算法论文解读 Cross-modalityPersonre-identificationwithShared-SpecificFeatureTransfer 具有特定共享特征变换 ...

  9. 点云配准的端到端深度神经网络:ICCV2019论文解读

    点云配准的端到端深度神经网络:ICCV2019论文解读 DeepVCP: An End-to-End Deep Neural Network for Point Cloud Registration ...

随机推荐

  1. git最最最最...常用命令

    使用git 也有一段时间了,但是一直没有好好的去学下:今天刚好有空,就把自己不足的地方补了一下:废话就不多说了,直接步入正题: 1:git 如何提交代码 以及 如何拉代码 git clone可以将远程 ...

  2. html中删除表格的一行(有弹窗)

    html中删除表格一行其实很简单,但是加上一个提示弹窗后,点击确定后却获取不到要删除的是哪一行,下面是一个demo html: <tr> <td> <input type ...

  3. 在服务端中,读取properties资源文件中的数据

    1.获取到资源的路径 2.读取数据 //properties文件对象 Properties properties = new Properties(); //通过HttpServletRequest ...

  4. 阅读之Redis性能

    Redis作为一种KV缓存服务器,有着极高的性能,相对于memcache,Redis支持更多中数据类型,因此在业界广泛应用. Redis为什么快: 数据是存储在内存中的. Redis是单线程的. 将数 ...

  5. 【Linux学习一】命令行CLI、BASH的基本操作

    ●操作系统的基本结构 操作系统的基本结构通过Kernel(内核)和Shell(壳)构成.常见的Shell分为GUI和CLI GUI 图形方面的shell ------〉windows .mac osC ...

  6. node的安装和配置教程

    node,除了做数据服务处理,还是各大框架的环境依赖,作为前端开发人员,node是必不可少的.好了,接下来直接开始. 一.根据自己的安装环境(即你的电脑系统版本)下载对应安装包,官网地址:https: ...

  7. C# 遍历控件名称

    List<string> list = new List<string>(); list.Add("textBox2"); list.Add("t ...

  8. head first 设计模式笔记8-模板方法模式

    模板设计模式:就是定义一个算法的骨架,而将具体的算法延迟到子类中来实现. 优点:使用模板方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求. 缺点:如果算法骨架有修改的 ...

  9. 计算机网络(十三),Socket编程实现TCP和UDP

    十三.Socket编程实现TCP和UDP 1.TCP (1)TCPServer.java类 package com.interview.javabasic.socket; import com.int ...

  10. 获取URL值带参数跳转

    //要跳转界面 api.openWin({ name: 'PayOrder', url: 'PayOrder.html?id=2', pageParam:{name:pr} }); //跳转后的界面 ...