Instance Segmentation入门总结
前一阵子好忙啊,好久没更新了。最近正好挖了新坑,来更新下。因为之前是做检测的,而目前课题顺道偏到了instance segmentation,这篇文章简单梳理一下从检测、分割结果到instance segmentation结果问题在哪里,以及已有的解决方案。
初见instance segmentation
分类、检测、分割是有天然的联系的:从目的来讲,三个任务都是为了正确的分类一张(或一部分)图像;进一步,检测和分割还共同负责定位任务。这些任务之间的不同是由于人在解决同一类问题时,对问题的描述方案不同导致的,是人为的。因而,可以找到一种共同的描述(或任务),即instance segmentation。那么,instance segmentation既然集成了上述3种任务,如果有上述3种任务的结果,是不是通过简单组合就可以得到instance segmentation的结果呢?显然是不行的。
为什么不可以呢?或者说需要补全什么才可以得到instance segmentation的结果呢?我们先从每个任务分开来看,
- 检测:已经编码了空间上的相关性,但是缺少精细的定位(即segmentation mask)
- 分割:已经具备了精细的定位,但是缺少空间相关性
解释一下空间上的相关性,它对于检测和instance segmentation都非常重要。空间上的相关性即同一个像素由于处在物体的不同相对位置,它对于不同物体可能语义并不相同,如图中人的框虽然覆盖了部分羊,但是该框并不会分到羊这个类别,而是分到了人,正是由于空间上,羊没并有主导整个框。既然如此,解决方案似乎显而易见了,缺什么补什么就行了。
常用instance segmentation范例
依然沿着以上思路,精细定位比较容易补出来,那么空间相关性如何编码呢?与检测相似,可以采用roi pooling或position sensitive map解决。由于region是不规则的类似one-stage detection的anchor box的方案,就比较难实现了。我们可以开发出几种不同的解决方案:
- segmnetation-first:rank segmentation proposal, cut segmentation map
- 使用分割结果作为初步结果,进一步加工产生结果
- instance-first
- 使用bounding box作为初步结果,然后在框内估计region mask
- simutaneously
- 借助position-sensitive map同时产生instance segmentation和detection的结果
对于每一个方案,将简要介绍一篇相关论文,加深理解。仅仅是为了阐述明白每一个解决方案,文章不是特别新,大家多包涵了。
Segmnetation-first
Rank Segmentation Proposal: Simultaneous detection and segmentation [2] (2014)
这篇文章解决方案非常直接,对每个segmentation proposal提取特征,对他们进行分类,就可以得到instance segmentation的结果。采用两种特征:1)segmentation proposal bounding box内的特征,2)以上特征mask掉segmentation proposal的背景部分。
Cut Segmentation Map: Instancecut: from edges to instances with multi-cut [9] (2017)
也可借助另外一种方案使用segmentation map:利用边缘图对segmentation map进行分割,分割成不同的物体。[9]使用instance segmentation的标注训练了边缘检测器,注意这里的“边缘”是boundary,而不是edge。然后,使用这个边缘图划分超像素,以超像素为单位对图进行划分和贴标签。这里假设了一个物体一定对应一个联通域(这个假设是有问题的,有时候由于遮挡等问题可能对应多个联通域)。
其中,image partition采取非深度学习的方法进行求解,是CRF和multicut的结合。我自己对这部分的理解如下。
输入有三种:
其中,u,v是两个超像素,l,l'是他们的label。
为了给所有超像素选取标签(xu,l=1表示超像素u标注为l)采用conditional random field(CRF),这里先假设同标签的超像素之间不存在边缘。
利用已有的数学工具可有效的对最后一个方程式求解。
为了分割属于不同物体但被标为同一类别的像素,采用multicut的方法。
最后一个方程的不等式约束,使得图中所有的cycle只能包含0个或2个以上cutting edge。设想如果没有第二个cutting edge那么一定存在一个cycle可以联通两个区域,即无法形成联通域;如果有2个或以上cutting edge则可以将cycle彻底阶段,只能形成区域内和区域外的循环。 同样,利用已有的数学工具可有效的对方程式求解。
最后,为了同时对上述两个问题求解,只需要优化一个共同的目标,即:
Instance-first
这类方法比较多,如著名的mask RCNN就属于这种方法,思路是先进行检测,再对检测框中的内容进行分割。
我选的这篇文章Instance-aware semantic segmentation via multi-task network cascades [11] 年代更早一点,从结构图中,可以清晰的看到先进行类别无关的物体检测(rpn),然后对框内的部分估计一个类别无关的mask,最后对mask进行分类(与[1]方法相似)。
注意在stage3上再加入一个额外的box regression支路,这个结构就可以进行多次叠加。
Simutaneously
这里介绍Fully convolutional instance-aware semantic segmentation [12],把它分为simutaneously不知道是否合适,不过这个方法确实比较不同。
由于物体的部件很难完全重合在一起,那么通过部件位置+类别就可以区分出不同物体,因而采用inside score map。outside score map是为了同时进行检测和分割任务,outside部分虽然不属于物体,但是对bounding box有贡献,也需要有响应,因而又设置了outside score map并使用pixel-wise max的方式对inside和outside map进行结合,投票出检测结果。
总结
Reference
- Segmentation First
- Resort segment proposals
- [1] B. Hariharan, P. Arbela ́ez, R. Girshick, and J. Malik. Simultaneous detection and segmentation. In ECCV. 2014.
- [2] B.Hariharan,P.Arbela ́ez,R.Girshick,andJ.Malik.Hyper- columns for object segmentation and fine-grained localization. In CVPR, 2015.
- [3] J. Dai, K. He, and J. Sun. Convolutional feature masking for joint object and stuff segmentation. In CVPR, 2015
- Learn to propose
- [4] P. O. Pinheiro, R. Collobert, and P. Dollar. Learning to segment object candidates. In NIPS, 2015.
- [5] P. O. Pinheiro, T.-Y. Lin, R. Collobert, and P. Dolla ́r. Learning to refine object segments. In ECCV, 2016.
- [6] J. Dai, K. He, Y. Li, S. Ren, and J. Sun. Instance-sensitive fully convolutional networks. In ECCV, 2016.
- Cut semantic segmentation map into instances
- [7] A. Arnab and P. H. Torr. Pixelwise instance segmentation with a dynamically instantiated network. In CVPR, 2017.
- [8] M. Bai and R. Urtasun. Deep watershed transform for in- stance segmentation. In CVPR, 2017.
- [9] A. Kirillov, E. Levinkov, B. Andres, B. Savchynskyy, and C. Rother. Instancecut: from edges to instances with multi- cut. In CVPR, 2017.
- [10] S. Liu, J. Jia, S. Fidler, and R. Urtasun. SGN: Sequen- tial grouping networks for instance segmentation. In ICCV, 2017.
- Resort segment proposals
- Instance First
- [11] J. Dai, K. He, and J. Sun. Instance-aware semantic segmentation via multi-task network cascades. In CVPR, 2016.
- Mask RCNN (2018)
- Simultaneously
- [12] Y. Li, H. Qi, J. Dai, X. Ji, and Y. Wei. Fully convolutional instance-aware semantic segmentation. In CVPR, 2017.
Instance Segmentation入门总结的更多相关文章
- 论文阅读笔记二十二:End-to-End Instance Segmentation with Recurrent Attention(CVPR2017)
论文源址:https://arxiv.org/abs/1605.09410 tensorflow 代码:https://github.com/renmengye/rec-attend-public 摘 ...
- 论文笔记:Dynamic Multimodal Instance Segmentation Guided by Natural Language Queries
Dynamic Multimodal Instance Segmentation Guided by Natural Language Queries 2018-09-18 09:58:50 Pape ...
- semantic segmentation 和instance segmentation
作者:周博磊链接:https://www.zhihu.com/question/51704852/answer/127120264来源:知乎著作权归作者所有,转载请联系作者获得授权. 图1. 这张图清 ...
- Instance Segmentation with Mask R-CNN and TensorFlow
Back in November, we open-sourced our implementation of Mask R-CNN, and since then it’s been forked ...
- Rank & Sort Loss for Object Detection and Instance Segmentation 论文解读(含核心源码详解)
第一印象 Rank & Sort Loss for Object Detection and Instance Segmentation 这篇文章算是我读的 detection 文章里面比较难 ...
- 图像分割:Semantic/Instance/Panoramic Segmentation
一. 背景介绍 语义分割(Semantic Segmentation):对一张图片上的所有像素点进行分类,同一物体的不同实例不需要单独分割出来. 实例分割(Instance Segmentation) ...
- cs231n spring 2017 lecture11 Detection and Segmentation 听课笔记
1. Semantic Segmentation 把每个像素分类到某个语义. 为了减少运算量,会先降采样再升采样.降采样一般用池化层,升采样有各种"Unpooling"." ...
- PaperNotes Instance-Level Salient Object Segmentation
title: PaperNotes Instance-Level Salient Object Segmentation comments: true date: 2017-12-20 13:53:1 ...
- 论文笔记:A Review on Deep Learning Techniques Applied to Semantic Segmentation
A Review on Deep Learning Techniques Applied to Semantic Segmentation 2018-02-22 10:38:12 1. Intr ...
随机推荐
- VSLAM技术框架详述
最早的SLAM雏形是在军事(核潜艇的海底定位)上的应用,主要传感器是军用雷达.SLAM技术发展到如今已经几十年,目前以激光雷达作为主传感器的SLAM技术比较稳定.可靠,仍然是主流的技术方案.但随着最近 ...
- 绿色版NVM安装与配置详细说明
绿色版本(不需要安装,直接解压,然后配置环境变量等) 由于最初发布的nvm并不支持window,所以如果希望可以像在*nix上一样控制node的版本,有两种选择: nvm-windows nodi ...
- FPGA基础学习(4) -- 时序约束(理论篇)
在FPGA 设计中,很少进行细致全面的时序约束和分析,Fmax是最常见也往往是一个设计唯一的约束.这一方面是由FPGA的特殊结构决定的,另一方面也是由于缺乏好用的工具造成的.好的时序约束可以指导布局布 ...
- LeetCode8. 字符串转整数 (atoi)
8. 字符串转整数 (atoi) 描述 实现 atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连 ...
- [BZOJ 3613][Heoi2014]南园满地堆轻絮
传送门 这题......注意读题就行 刚开始读成了Ans = Σ{|A[j]-B[j]|}以为是道神题,结果是Ans = Max{|A[j]-B[j]|}. 嗯.......可以证明Ans = 最大的 ...
- 打开页面时就提交,可以做一些自动登陆 还有SICLOGIN的测试代码
<HTML> <head> <title> Untitled Document</title > (1)自动提交表单: <meta http- ...
- 基于 bootstrap html 响应式 布局
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- Wamp环境域名重定向问题
打开浏览器输入地址跳转不到页面,还得再次输入www后的内容, 解决办法: D:\wamp\bin\apache\apache2.4.9\conf(这里安装在D盘所以是D) 目录中文件:httpd.co ...
- java se系列(四) 函数、数组、排序算法、二分法、二维数组
1 函数 1.1 数的概述 发现不断进行加法运算,为了提高代码的复用性,就把该功能独立封装成一段独立的小程序,当下次需要执行加法运算的时候,就可以直接调用这个段小程序即可,那么这种封装形形式的具体表 ...
- Python+Selenium定位元素的方法
Python+Selenium有以下八种定位元素的方法: 1. find_element_by_id() eg: find_element_by_id("kw") 2. find_ ...