CVPR2019 论文解读| BASNet:关注边界的显著性目标检测
作者 | 文永亮
学校 | 哈尔滨工业大学(深圳)
研究方向 | 目标检测
概要
这是一篇发表于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:关注边界的显著性目标检测的更多相关文章
- CVPR2020论文解读:3D Object Detection三维目标检测
CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...
- CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状
CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状 ROI-10D: Monocular Lifting of 2D Detection to 6D Pose and Metric Sha ...
- CVPR2019 | Mask Scoring R-CNN 论文解读
Mask Scoring R-CNN CVPR2019 | Mask Scoring R-CNN 论文解读 作者 | 文永亮 研究方向 | 目标检测.GAN 推荐理由: 本文解读的是一篇发表于CVPR ...
- 带你读AI论文丨用于目标检测的高斯检测框与ProbIoU
摘要:本文解读了<Gaussian Bounding Boxes and Probabilistic Intersection-over-Union for Object Detection&g ...
- CVPR 2019|PoolNet:基于池化技术的显著性检测 论文解读
作者 | 文永亮 研究方向 | 目标检测.GAN 研究动机 这是一篇发表于CVPR2019的关于显著性目标检测的paper,在U型结构的特征网络中,高层富含语义特征捕获的位置信息在自底向上的传播过 ...
- CVPR2019 | Libra R-CNN 论文解读
作者 | 文永亮 学校 | 哈尔滨工业大学(深圳) 研究方向 | 目标检测.GAN 推荐理由 这是一篇发表于CVPR2019的paper,是浙江大学和香港中文大学的工作,这篇文章十分有趣,网友戏称 ...
- zz扔掉anchor!真正的CenterNet——Objects as Points论文解读
首发于深度学习那些事 已关注写文章 扔掉anchor!真正的CenterNet——Objects as Points论文解读 OLDPAN 不明觉厉的人工智障程序员 关注他 JustDoIT 等 ...
- CVPR2020行人重识别算法论文解读
CVPR2020行人重识别算法论文解读 Cross-modalityPersonre-identificationwithShared-SpecificFeatureTransfer 具有特定共享特征变换 ...
- 点云配准的端到端深度神经网络:ICCV2019论文解读
点云配准的端到端深度神经网络:ICCV2019论文解读 DeepVCP: An End-to-End Deep Neural Network for Point Cloud Registration ...
随机推荐
- 2018年最佳JavaScript数据可视化和图表库
现在有很多图表库,但哪一个最好用?这可能取决于许多因素,如业务需求,数据类型,图表本身的目的等等.在本文中,每个JavaScript图表库将与一些关键因素进行比较,包括图表类型,商业或免费和开源状态. ...
- 简单使用logback日志框架
logback_config.xml 配置文件信息 <?xml version="1.0" encoding="UTF-8"?> <confi ...
- 20. ClustrixDB explain参数解读
ClustrixDB有一个流模型,它从容器(表和索引)开始并通过操作符图对行进行流处理.ClustrixDB有一组丰富的操作符,随着更多功能和优化的添加,这些操作符偶尔会增加.我们使用一个地方来记录操 ...
- <image>的src属性的使用
刚接触前端不久.怎么用image显示图片是个问题,怎么使用数据流还是base64呢?小小的研究一下 <image src="url"> 1.接口返回数据流,src可以直 ...
- LOJ #6145. 「2017 山东三轮集训 Day7」Easy 点分树+线段树
这个就比较简单了~ Code: #include <cstdio> #include <algorithm> #define N 100004 #define inf 1000 ...
- C语言 - strcpy和strncpy的编程实现及总结
一.字符串的strcpy与strncpy函数 1.编程实现strcpy函数(笔试很容易考到) 要求: 原型:char *stpcpy(char *strDest,char *strSrc); 头文件: ...
- “编程小白学python”阅读笔记
今天在豆瓣搜索“python”关键字,搜到一本知乎周刊,读来觉得不错 编程小白学python ,作者@萧井陌, @Badger 书中提到的很多书,第一次看惊呆了,记录下来,希望每周回看此博文,坚持学习 ...
- 在网页中嵌套网页的方法(frame)
在网页中嵌套网页目前通用的方法是通过 frame 框架来完成,该方法有实际的应用意义.也能很好的解决一些问题. 但是 JS 在操作的时候需要同源(不能跨域), 否则一切 js 相关的操作无法完成. 切 ...
- 微信小程序_简单组件使用与数据绑定
简单的数据传值 官方文档:传送门 点击"按钮"测试后,按钮文本改变,下方text文本改变,通过console.log()在输出台中打印按钮文本信息 程序结构 Page({ //页面 ...
- iview之avatar组件
avatar组件是一个获取网络路径图片的组件 它再vue中使用的话build时不会被打包,路径仍然为原来的路径 所以相对路径不会有效 如下: <Avatar style="margin ...