v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

Normal
0
false

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"微软雅黑",sans-serif;}

这几天帮学长研究这篇论文,整理了这些笔记,由于我在CV方面刚刚入门,博客中可能会有很多错误与不当之处,希望大家能多多指正。

附上我自己修改的C++代码,可以运行在windows环境下:

链接:https://pan.baidu.com/s/1nnQO9HEkiaRLYHRAIzNDaw

提取码:jarz

代码参考自:https://github.com/coderSkyChen/MBS_Cplus_c-

1. Introduction

显著性目标检测目的是得到显著图(saliency map),现有技术要求高质量和高速度。

论文的核心算法是基于最小化栅格距离 (MBD) 变换提出。 这个算法对像素值波动的鲁棒性很好, 因此可以直接用在 raw 像素值上, 而不必经过区域抽象化预处理(region abstraction, 处理之后可得到超像素)。但是, 由于 MBD 算法的复杂度很高且计算耗时, 本文提出一种 “近似 MBD” 转换的FastMBD 算法,同时提供了误差边界分析。

3. Fast Approximate MBD Transform

3.1. Background: Distance Transform

图像距离变换的目的是计算相对于一组背景种子像素的距离图。

D(t)就是我们要求得的距离图。F是路径代价函数,它有很多种选择:

1.geodesic path cost function:

2.Minimum Barrier Distance

所以,我们的目标是让D(t)最小,而D(t)表示从种子(背景)点集合(在下文中我们会看到取图像边界一周的像素为种子集合S)到当前处理的像素点t的所有路径(注意是四邻接)中路径代价函数的最小值。如果路径代价函数采用MBD,那么就是每条路径中包含的最大像素值与最小像素值之差。如果采用geodesic path cost function,就是路径中后一像素减去前一像素的绝对值之和。

下面一行的结果中间是模糊的原因。而用MBD,由于它只关注路径中像素最大值减去最小值,所以对于这些小误差并不会累积,而且路径从背景走到前景时,像素值差异会很大,这样计算出的D(t)具有很好的效果。

3.2. Fast MBD Transform by Raster Scan

FastMBD 是使用一种迭代的方法得到近似的 MBD 值。

通过下式进行迭代:

其中P(y)·<y,x>代表了一条从y点走到当前x点的路径,由于是四邻接,所以有上下左右四个方向到达x,这四条路就可以通过Raster Scan和Inverse Raster Scan去遍历到。注意论文中使用了两个额外图的作用:U和L,U记录路径y上的最大像素值,L记录路径y上的最小像素值,参考式(3),这种方式可以很快地计算出MBD的值。感觉这里面有一些动态规划的思想。

3.3. Approximation Error Analysis

FastMBD (Eqn. 4)的更新规则与Dijkstra算法求解最短路径问题具有相同的性质。但是,从[30]中可以看出,由于矩阵的非光滑性,使得类dijkstra算法不能准确地求解MBD变换。FastMBD的收敛解一般不等于精确的MBD变换。

定义1:图L的最大本地误差:εL

定义为在L上共享一条边或一个角的一对像素之间的最大绝对像素值差。

当种子集S是单个元素或者相互连接时,相应的误差以2εL为界,这是很松弛的一个边界。

在接下来的工作中,我们给出了一个FastMBD的收敛解是精确的非平凡充分条件。

首先根据下式取整函数将图像L离散化:

它告诉我们,对于图上的每一个非种子点x,如果这个图的种子集合S相连的话,那么每个像素点和种子点之间的MBD距离与离散之后图的最小MBD距离D(x)小于一个定值εL。这个引理的用处在于告诉我们Fast*算法也能得到一个让我们较为满意的解。

邻接的,如果种子集合相互连接且εL等于1,那么FastMBD的收敛解是精确的值。εL等于1可以作为FastMBD在极限下精确的理论保证。

除了最坏情况误差边界外,在实际中,均值误差收敛速度更为重要。

倍。

4. Minimum Barrier Salient Object Detection

本节讨论了基于fast-MSD的显著性物体检测的系统实现。

4.1. MBD Transform for Salient Object Detection

。我们在FastMBD中使用了三个通道,发现增加通道的数量并不能提高性能。

上图中间一列显示了分别用MBD(上)和geodesic distance得到的distance maps。也就是我们上一段提到的最终组合的图B。最后一列显示了相应的最终显著性图。由于geodesic distance对像素值波动的敏感性,其中心区域具有模糊性。

Y.Wei, F.Wen,W. Zhu, and J. Sun. Geodesic saliency using background priors. In ECCV. 2012.中提到了一种在geodesic distance图上采用自适应边缘权值裁剪方法,解决了小权值累积的问题,但是本文中没有用,所以中心仍有模糊。MBD方法则不存在这个问题。

4.2. Combination with Backgroundness Cue

假设背景区域与图像边界区域有相似的外观,结合基于外观的背景线索,对该方法进行了扩展。这种基于外观的线索在显著区域与图像边界接触时具有较强的鲁棒性,与MBD map B捕捉到的几何线索互补。我们提出了一个更有效的方法来利用这一背景线索使用颜色空间增白。

首先计算Image Boundary Contrast (IBC) Map 图像边界对比图 U,用来突出与图像边界在外观上有高对比度的区域。考虑4个边界区域:上、下、左、右。每个区域是 r 个像素宽,计算每个区域的均值和协方差矩阵,然后IBC Map:

可以根据马氏距离均值颜色的距离计算:

Uk被归一化,值在[0,1]之间。上述公式相当于在白化的颜色空间中测量色差。在加白的颜色空间中,由于加白空间的坐标是去相关和归一化的,因此欧几里德距离样本均值可以更好地表示像素的特殊性。最终的IBC图u计算公式:

当其中一个图像区域大部分被前景占据时,上述公式更加具有鲁棒性。最后我们缩放U的值,让它最大值为1。

最终,我们把B和U线性组合相加,得到图B+,可以大大提升性能。

4.3. Postprocessing

首先,为了在保持有效边界细节的同时平滑S,我们在S上应用形态学平滑步骤,先膨胀后腐蚀。通过对宽度为δ的源图像进行腐蚀(膨胀),得到了膨胀重建的标记图。δ由下式得到:

其中a是预定义常数,s是B的平均像素值。

为了计算在许多显著的目标检测数据集中观察到的中心偏差,我们用一个无参数中心映射C逐像素乘S,定义如下:

,并对S进行对比度增强操作,该操作使用sigmoid函数增强前景和背景区域的对比度:

b是一个预定义的参数,用于控制对比度级别。

5. Experiments

在我们的处理中,输入图像先被调整为最大维数是300像素,在9式中的a值取50,假设颜色值在[0,1]内,我们把11式中的b设定为10。在4.2节中提到的边界宽度 r 取30。我们其实在实践中会发现我们的算法对这些参数的设定并不敏感。

缺陷:

图像边界和前景相互接触时,会导致MB的效果不好,如果前景和背景像素差异大,那么MB+可以解决这类问题,如果前背景差异不大,MB+效果也会不好。

算法流程

1.     将待处理图像resize为最大维度300像素,分解为三通道的三幅灰度图像

2.     dowork -> computeSaliency -> fastMBS ->getSaliencyMap,得到MBmap,它是把上一步每个通道代表的灰度图像分别计算D(t),再全部累加起来得到的。

参照论文算法流程图:

3. 根据4.3节9式,进行先膨胀后腐蚀的平滑,得到morphmat。

4. 根据4.3节11式,增大前景和背景的对比度,得到smallres。

5. resize回原来大小,得到res。

Minimum Barrier Salient Object Detection at 80 FPS 论文阅读笔记的更多相关文章

  1. (不断更新)关于显著性检测的调研-Salient Object Detection: A Survey

    <Salient Object Detection: A Survey>作者:Ali Borji.Ming-Ming Cheng.Huaizu Jiang and Jia Li 基本按照文 ...

  2. [Arxiv1706] Few-Example Object Detection with Model Communication 论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #042eee } p. ...

  3. 论文阅读笔记五十五:DenseBox: Unifying Landmark Localization with End to End Object Detection(CVPR2015)

    论文原址:https://arxiv.org/abs/1509.04874 github:https://github.com/CaptainEven/DenseBox 摘要 本文先提出了一个问题:如 ...

  4. 论文阅读笔记五十三:Libra R-CNN: Towards Balanced Learning for Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.02701.pdf github:https://github.com/OceanPang/Libra_R-CNN 摘要 相比模型的结构 ...

  5. 论文阅读笔记五十二:CornerNet-Lite: Efficient Keypoint Based Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.08900.pdf github:https://github.com/princeton-vl/CornerNet-Lite 摘要 基 ...

  6. 论文阅读笔记五十一:CenterNet: Keypoint Triplets for Object Detection(CVPR2019)

    论文链接:https://arxiv.org/abs/1904.08189 github:https://github.com/Duankaiwen/CenterNet 摘要 目标检测中,基于关键点的 ...

  7. 论文阅读笔记四十八:Bounding Box Regression with Uncertainty for Accurate Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1809.08545.pdf github:https://github.com/yihui-he/KL-Loss 摘要 大规模的目标检测数据集在 ...

  8. 论文阅读笔记四十六:Feature Selective Anchor-Free Module for Single-Shot Object Detection(CVPR2019)

    论文原址:https://arxiv.org/abs/1903.00621 摘要 本文提出了基于无anchor机制的特征选择模块,是一个简单高效的单阶段组件,其可以结合特征金字塔嵌入到单阶段检测器中. ...

  9. 论文阅读笔记四十四:RetinaNet:Focal Loss for Dense Object Detection(ICCV2017)

    论文原址:https://arxiv.org/abs/1708.02002 github代码:https://github.com/fizyr/keras-retinanet 摘要 目前,具有较高准确 ...

随机推荐

  1. 【BZOJ2437】[Noi2011]兔兔与蛋蛋(博弈+二分图)

    传送门 题意: 给出一个\(n*m\)的棋盘,上面有若干个黑色棋子,若干个白色棋子,还有一个空格. 每次先手选择一个空格,将它与相邻的某个白色棋子交换:后手则选择一个空格,与相邻的某个黑色棋子交换. ...

  2. pycharm安装pymysql包

    1.为什么? 每个程序连接数据库,python开发2.*版本可以直接使用MySQL,python3.*版本需要下载使用PyMySQL包才能连接数据库... 2. 怎么做? 2.1. 更改源:pycha ...

  3. 浅谈this指向问题

    链接地址:https://www.jianshu.com/p/34572435b5d0

  4. Tensorflow加载预训练模型和保存模型(ckpt文件)以及迁移学习finetuning

    转载自:https://blog.csdn.net/huachao1001/article/details/78501928 使用tensorflow过程中,训练结束后我们需要用到模型文件.有时候,我 ...

  5. windows下 go vscode编译运行方法

    1:直接在终端运行go run命令编译 2.安装code runner插件,根据箭头标示顺序,可以在右侧看到它支持的语言.

  6. postman(十二):发送携带md5签名、随机数等参数的请求

    想起来之前在借助百度翻译接口做翻译小工具的时候,需要把参数进行md5加密后再传输. 而在平时的接口测试工作中难免会遇到类似这种请求参数,比如md5加密.时间戳.随机数等等.固然可以先计算出准确的参数, ...

  7. [题解向] CF#536Div2の题解 E&F

    \(0x01~~Preface\) \(emmm\)这次CF本身打的很顺畅,但是居然unrated了--咕咕咕咕 这是头一次CF有比赛我全部题目都做了--可喜可贺可喜可贺233 简单总结一下前面四道题 ...

  8. vue_04 练习

    目录 vue_项目初始: car.vue Nav.vue: cardata.vue vue_项目初始: 1.Home.vue页面组件显示基本信息:欢迎来到汽车系统 Car.vue页面组件,完成Cars ...

  9. Paper | FFDNet: Toward a Fast and Flexible Solution for CNN based Image Denoising

    目录 故事背景 核心思想 FFDNet 网络设置 噪声水平图 对子图像的去噪 保证噪声水平图的有效性 如何盲处理 为啥不用短连接 裁剪像素范围 实验 关于噪声水平图的敏感性 盲处理 发表在2018 T ...

  10. 【转】Python zip() 函数

    转自:http://www.runoob.com/python/python-func-zip.html 描述 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回 ...