参考代码:Inside-Outside-Guidance
paper数据集:Pixel-ImageNet

1. 概述

导读:这篇文章提出了一种新的交互式分割算法,其通过inside-outside guidance(IOG)引导分割网络生成更加精细的分割结果(也就是目标bounding box的左上和右下两个顶点和目标中心的点)。inside guidance是指目标区域的中心位置的点,用以标明前景信息,而outside guidance是目标区域之外的点,用以标明背景信息。这样进行交互引导的好处体现为:
1)outside的两个点可以排除其它目标和背景的影响;
2)inside的点可以排除bounding box内部无关区域的干扰;
3)交互的方式简单明确,从而不像之前的一篇文章DEXTR在一些极端情况下交互困难;
4)文章的方式还支持更多点的引导,从而指导生成更加精细的分割结果;
文章的方法不仅分割准确,而且在不经过域适应的情况下展现出了较好的泛化能力。对于那些只有bounding box标注的数据集文章提出了一种两阶段的解决办法用以生成高质量的分割mask,这里可以参考文章的“Extension to datasets with box annotations only”章节。

之前的方法DEXTR使用上下左右的四个目标边界进行引导,也取得了很好的分割结果,但是在一些极端的case下便出现了问题以及一些不方便的地方:

  • 1)寻找目标准确的上下左右4个边界是需要耗费较多心力的;
  • 2)在下面的(a)图中可以看到这样的引导方式存在目标细长带来标注困难和不同目标重叠带来定义模糊的问题;

    而文章的方法是通过2个outside和1个inside点组合而成,其中2个outside点会通过推理得到另外的两个点,从而组成了包含目标的5个点,可以排除上述目标描述方式的缺陷,见上图(b)所示。

在进行运算的时候文章的方法会对初始给定的bounding box进行几个像素的扩展,在根据得到的4个背景点信息和1个前景点信息进行目标分割,见下图(c)所示:

使用文章给出的交互方式可以极大提升交互的效率,并且还可以通过后期加点的方式对不准确的信息进行修正,在使用3个点的情况下文章在PASCAL数据集下为93.2%的mIoU,而使用4个的时候达到了94.4%。

2. 方法设计

2.1 inside-outside引导


inside guidance:
文章的inside guidance用于标明需要分割的目标,见图2的c图所示。为了模拟人工标注的时候对目标中心点的选取,文章提出了一个策略:选择那些原理目标边界最远的点。使用O\mathcal{O}O代表目标中的像素点,则可以计算一个距离图DDD,则像素点iii其在距离图上的描述为:
Di=min⁡∀j∈Odist(i,j)D_i=\min_{\forall j\in\mathcal{O}}dist(i,j)Di​=∀j∈Omin​dist(i,j)
其中使用到的距离是欧式距离。这里的jjj个人认为是边界上的点,具体的还需要看了代码之后才明了。则对应可能的中心点采样就描述为了:
k=arg max⁡∀i∈ODik=\argmax_{\forall i\in\mathcal{O}}D_ik=∀i∈Oargmax​Di​
其实在文章的代码里面就是写的目标内部到目标mask边界最远的点(看作是,因为边界之外就是背景了),那么不就是中心么?代码中使用的是下面的这个函数:

scipy.ndimage.distance_transform_edt()

outside guidance:
文章对于外部引导的打点事较为简单的,并不需要很贴合的bounding box,只需要相对贴合就行了,见图2的a,b图所示。

标注的点信息在算法中的表达:
对于标注点的表达文章使用的2D高斯分布的heatmap形式,其对应的生成代码参考:

def make_gaussian(size, sigma=10, center=None, d_type=np.float64):""" Make a square gaussian kernel.size: is the dimensions of the output gaussiansigma: is full-width-half-maximum, whichcan be thought of as an effective radius."""x = np.arange(0, size[1], 1, float)y = np.arange(0, size[0], 1, float)y = y[:, np.newaxis]if center is None:x0 = y0 = size[0] // 2else:x0 = center[0]y0 = center[1]return np.exp(-4 * np.log(2) * ((x - x0) ** 2 + (y - y0) ** 2) / sigma ** 2).astype(d_type)

生成的heatmap按照标注是否为前景氛围2个channel的信息,因而输入网络的是5个channel的信息。在进行标注边界确定的时候还会对背景区域进行relax,参考图2的d图。文章使用上面的交互引导方式具有以下两点考量:

  • 1)可以灵活设置前景背景的交互点数量,从而在分割精度与效率上实现很好平衡;
  • 2)通过点的位置和裁切操作可以定位背景区域和目标大致的尺寸,进而编码更多的先验信息;

2.2 文章的网络结构

文章的算法是在ResNet-50的基础上添加PSP模块组成的基础分割架构,但是在基础的分割架构上文章发现其在边缘部分的效果很差,见下图所示:

对此结合多阶段的优化策略,文章将分割网络的解码器部分划分为CoarseNet和FineNet部分,分别用于粗分割和进一步优化,其结构见下图所示:

对于各部分其贡献度见下表所示:

2.3 更多交互点引入

为了提升分割的精度和性能需要更多的交互用以补充先验知识,对于该补充的先验知识文章是通过添加一个Refinement部分实现的(在进行PSP模块之前),参考图4的c部分。这样不仅可以不用之前的编码网络(由于额外点的不确定性),而且还可以加快网络的运行速度。

对于额外点的引入文章中提到是根据每次分割之后错误区域进行指引,从而下次infer的时候确定额外点的位置,使用这种迭代优化的策略给整体的性能带来了一定的提升(但是目前2021.03.24给出的代码里面是没有包含对应的部分的),见下图所示:

3. 实验结果

性能比较

《IOG:Interactive Object Segmentation with Inside-Outside Guidance》论文笔记相关推荐

  1. 论文笔记之Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...

  2. 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...

  3. 论文笔记Understanding and Diagnosing Visual Tracking Systems

    最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...

  4. 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...

  5. 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)

    追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...

  6. ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...

  7. Understanding and Diagnosing Visual Tracking Systems

    文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...

  8. CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...

  9. ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...

  10. CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...

最新文章

  1. C++/C++11中头文件numeric的使用
  2. 通过代码获取Bitmap图片资源
  3. java序列化与反序列化(转)
  4. gpu的单位表示_GPU编程1--GPU中的基本概念
  5. 7z apache解析漏洞_解析漏洞(Web漏洞及防御)
  6. 堆的构建、堆的插入、堆的删除、堆排序
  7. 聚水潭是如何基于AnalyticDB for PostgreSQL 构筑海量实时数仓平台的
  8. 诊断域帐号被锁定的原因
  9. 卷积运算和运算后特征图大小计算2
  10. [简单]itext官网例子链接
  11. 阿里云主机(ECS)入门(图文说明)详细了解
  12. html日历页面节假日_JavaScript实现有农历和节气节假日的日历
  13. opencart seo优化_opencart seo 优化技巧有哪一些
  14. 07 Anykey图像优化及文字头像生成与加载
  15. iOS 录视频,相册选择视频,视频压缩,存储本地文件,播放,上传
  16. 进入黑客的世界:Kali Linux 中的 Metasploit 渗透测试利器
  17. Python的简单代码:两天肝出画函数图像(散点图)的程序(不用matplotlib)(含白菜也能看懂的超超超详细讲解和源代码哦)
  18. company corporation enterprise 等等公司名称的区别
  19. 中国人民大学与加拿大女王大学金融硕士——在这里,打开精彩“识界”
  20. Python提取Word文件中的目录标题保存为Excel文件

热门文章

  1. ICIAR2018数据集下载
  2. STM32F407--芯片解读
  3. 20162330 2017-2018-1《程序设计与数据结构》课程总结
  4. 【Flutter -- 基础组件】Flutter 导航栏
  5. 数据文件储存服务器入什么科目,云服务器会计上入什么科目
  6. 网络编程及socket模块
  7. 爬虫学习笔记(六)——Scrapy框架(一):安装、运行流程及简单使用
  8. 医院在线预约挂号管理系统(Java+SSH+MySQL)
  9. 2.4g和5g要不要合并_路由器WiFi的2.4g和5g要不要合并?
  10. 上传文件连接失败问题