- Deep Learning Methods
- ★★★
[Mask R-CNN] - ★★
[MNC], [InstanceFCN], [Dynamically Instantiated Network], [FCIS], [PANet] - ★
[MPA], [DWT], [BAIS], [MaskLab], [InstanceCut], [SGN], [PGN],[Monocular Object], [DeepMask], [SharpMask], [Box2Pixel], [MS R-CNN]
- ★★★
[Paper] Simultaneous Detection and Segmentation
[Year] ECCV 2014
[Authors] Bharath Hariharan, Pablo Arbelaez, Ross Girshick, Jitendra Malik
[Pages] https://www2.eecs.berkeley.edu/Research/Projects/CS/vision/shape/sds/
[Description]
[Paper] Hypercolumns for Object Segmentation and Fine-grained Localization
[Year] CVPR 2015 Oral
[Authors] Bharath Hariharan, Pablo Arbelaez, Ross Girshick
[Pages] https://github.com/bharath272/sds
[Description]
[Paper] Convolutional Feature Masking for Joint Object and Stuff Segmentation
[Year] CVPR 2015
[Authors] Jifeng Dai, Kaiming He, Jian Sun
[Pages]
[Description]
[Paper] Monocular Object Instance Segmentation and Depth Ordering with CNNs
[Year] ICCV 2015
[Authors] Ziyu Zhang, Alexander Schwing, Sanja Fidler, Raquel Urtasun
[Pages]
[Description]
- 大致浏览, 主要用于城市道路实例分割, 基于patch和MRF.
[Paper] Learning to segment object candidates
[Year] NIPS 2015
[Authors] Pedro O. Pinheiro, Tsung-Yi Lin, Ronan Collobert, Piotr Dollàr
[Pages]
[Description]
- 大致浏览. DL做instance segmentation较早的一篇paper, 目前因性能有效基本无法使用.
- 网络分为两支, 一支预测segmentation mask, 另一支预测该patch是目标的概率. 结果是category agnostic的
[Paper] Learning to Refine Object Segments
[Year] ECCV 2016 Spotlight
[Authors] Pedro O. Pinheiro, Tsung-Yi Lin, Ronan Collobert, Piotr Dollàr
[Pages]
[Description]
- 大致浏览, 基于DeepMask做了改进, 目前因性能有效基本无法使用.
- segmentation一支采用类似encoder-decoder的结构, 融合高分辨和低分辨率的特征图, 以利用low level特征的空间信息和high level的全局目标信息.
[Paper] Instance-aware Semantic Segmentation via Multi-task Network Cascades
[Year] CVPR 2016 Oral
[Authors] Jifeng Dai, Kaiming He, Jian Sun
[Pages] https://github.com/daijifeng001/MNC
[Description]
- 模型包含三个网络: differentiating instances, estimating masks, categorizing objects. 代码之后可以详细研究一下.
- 区分实例, 即得到每个instance的不分类别的bounding box, 类似RPN,
- 预测mask, 即得出每个bbox中的二值mask. bbox经过ROI Warp到固定尺寸, 用2个全连接层完成每个像素的二值分类.
- 分类, 即根据bbox和mask得到当前instance的类别. 此处对于输入特征考虑了两种选择, 一是直接将bbox的特征作为输入, 二是将bbox的特征与mask做点乘, 只输出mask部分的特征其余位置置零.
- 设计了5层的级联网络, 上述的三个步骤即为stage 1, 2, 3, 接下来以前面得到的class和bbox组成proposal, 再次进行mask预测和分类, 即重复stage 2和3.
[Paper] Instace-sensitive Fully Convolutional Networks
[Year] ECCV 2016
[Authors] Jifeng Dai, Kaiming He, Yi Li, Shaoqing Ren, Jian Sun
[Pages]
[Description]
- DL用于Instance-segmentation较早的一篇paper. 在FCN的基础上提出instance-sensitive的InstanceFCN, 通过将每个pixel相对于某instance的relative position进行assemble, 得到output instance candidate.
- Instance-sensitive score maps: 将FCN的"each output pixel is a classifier of an object category"改造成"each output pixel is a classifier of relative positions of instances". Instance assembling module: 将每个sliding window划分成k x k的网格, 对应于k^2个relative position. 相同网格中的像素取对应于相同位置的score map进行assemble.
- 优点: InstanceFCN具有local coherence的优点, 且没有任何high-dimensional layer. 缺点: inference时将输入进行多尺度缩放来处理multi-scale问题, 感觉有点简单粗暴; 模型的输出只能分辨每个instance mask, 但不能得出每个instance的类别.
- 没有找到开源代码, 对training和inference的具体实现没仔细研究.
[Paper] Multi-scale Patch Aggregation (MPA) for Simultaneous Detection and Segmentation
[Year] CVPR 2016 Oral
[Authors] Shu Liu, Xiaojuan Qi, Jianping Shi, Hong Zhang, Jiaya Jia
[Pages]
[Description]
- 粗读, 提出了一种基于patch的instance segmentation方法, 其中patch对应的是目标的一部分, 而不是整个目标.
- 经过若干层特征提取后(VGG16), 在feature map上提取四个尺度的patch, 类似于ROI pooling那一套, 再将patch align到相同尺寸, 分别送入分类和分割两支, 得到label和segmentation mask. patch的真值是根据一系列规则确定的.
- 得到patch的label和mask后, 对相同尺度的patch在水平和竖直方向进行aggregate, 聚合相同label的patch的mask.
- 几点疑问: 密集取patch送入后面的两个网络是否会造成inference速度很慢? 四个尺度的path且没经过坐标修正, 鲁棒性够强吗? mask预测一支对于部分目标能很好地分割吗, 会不会存在混淆(比如patch里包括的是两个人的衣服, 能否准确把其中的一件衣服分为前景)
[Paper] Reversible Recursive Instance-Level Object Segmentation
[Year] CVPR 2016
[Authors] Xiaodan Liang, Yunchao Wei, Xiaohui Shen, Zequn Jie, Jiashi Feng, Liang Lin, Shuicheng Yan
[Pages]
[Description] <Br
[Paper] A MultiPath Network for Object Detection
[Year] BMVC 2016
[Authors] Sergey Zagoruyko, Adam Lerer, Tsung-Yi Lin, Pedro O. Pinheiro
[Pages] https://github.com/facebookresearch/multipathnet
[Description]
[Paper] Pixelwise Instance Segmentation with a Dynamically Instantiated Network
[Year] CVPR 2017
[Authors] Anurag Arnab, Philip Torr
[Pages] http://www.robots.ox.ac.uk/~aarnab/instances_dynamic_network.html
[Description]
- 粗读. 本篇paper的思路比较新奇, 在全图上做segmentation和detection, 再用instance CRF区分instance, 整个模型可用类似CRFasRNN的思路端到端完成.
- semantic segmentation部分用semantic CRF.
- Instance CRF的unary potential包括三部分, box term, global term和shape term. 其中box term和global term是根据detection和segmentation共同确定的, shape term是根据预先定义的shape exemplar决定的. Pairwise term是一densely-connected Gaussian potentials.
- loss采用cross entropy loss. 这里groundtruth和prediction的对应是根据最大IoU得到的.
[Paper] Fully Convolutional Instance-aware Semantic Segmentation
[Year] CVPR 2017 Spotlight
[Authors] Yi Li, Haozhi Qi, Jifeng Dai, Xiangyang Ji, Yichen Wei
[Pages] https://github.com/msracver/FCIS
[Description]
- 基于InstanceFCN中position sensitive score map的概念, 提出了end to end的可区分类别的实例分割方法.
- backbone为resnet-101,从conv4开始分为两支, RPN一支产生ROI, 另一支产生2K^2(C+1)个位置敏感score map. 之后对每个ROI进行根据K*K个相对位置进行assemble, 每类输出ROI inside 和ROI outside两个score map. 根据inside和outside score map的大小组合可以得到一个pixel的两个信息: 1.它是否位于某个目标的相应位置上; 2.它是否属于该目标分割的前景. 最后通过max和softmax操作得到ROI的类别和segmentation mask.
- 个人总结, 这种encode K*K的相对位置的策略有几个好处, 1.对位置敏感, 这正是instance任务需要的; 2.对ROI的偏移有一定程度的鲁棒性; 3.可以使需要对每个ROI分别进行的subnetwork变得更小, 节省时间.
[Paper] Deep Watershed Transformation for Instance Segmentation
[Year] CVPR 2017
[Authors] Min Bai, Raquel Urtasun
[Pages] https://github.com/min2209/dwt
[Description]
- 用分水岭的思想做instance segmentation,分Direction Network和Watershed Transform Network两个阶段
- Direction Network:计算pixel到最近边界的距离变换的单位梯度
- Watershed Transform Network:以前一阶段得到的梯度为输入,计算16个Bin能量的概率,Bin 0表示边界部分的能量
- 边界部分有相同的能量,避免over segmentation问题
- 实验部分,计算confidence score没看懂,可以再研究一下
- 能量Bin的划分,每个能量在算loss权重部分没看懂
[Paper] Boundary-aware Instance Segmentation
[Year] CVPR 2017
[Authors] Zeeshan Hayder, Xuming He, Mathieu Salzmann
[Pages] https://vitalab.github.io/deep-learning/2017/08/22/boundary-aware.html
[Description]
- 提出一种基于距离变换的instance segmentation方法, 可以克服bounding box不准确的问题. 包括三部分: 提取bounding box, 预测object mask (OMN), object分类, 整个网络都是可微的, 可端到端训练;
- OMN基于目标内像素到其边界的距离变换, 设计网络得到K个boundary-aware object mask, 然后decode成完整的object mask;
- 仿照MNC, 采用multi-stage策略: 根据上一阶段得到的object mask, 对bounding box进行refine;
- 实验及一些具体实现没研究, 如object mask与bounding box feature是如何结合起来的等;
[Paper] Instancecut: From edges to instances with multicut
[Year] CVPR 2017
[Authors] Alexander Kirillov, Evgeny Levinkov, Bjoern Andres, Bogdan Savchynskyy, Carsten Rother
[Pages]
[Description]
- 粗读. 提出一种通过instanc-agnostic的segmentation和edge detection做instance segmentation的方法, .
- 分割和边缘检测使用的都是FCN, 其中边缘检测的网络为了得到sharp edge做了一些改动. 最后通过image partition block使用segmentation和edge的信息得到instance的分割结果, 为了加速是在superpixel上进行的, 这段没仔细看
- 此方法的一个很大缺点是不适用于不连续的instance, 此外其性能与soa相比还有很大差距. 这一类的方法虽然思路上比较新奇, 但实际应用上还是有很大局限性, 并且它们大多只在cityscape上进行实验, 可能是这种方法只对这种目标较小且形状较为简单的情况效果好?
[Paper] Mask R-CNN
[Year] ICCV 2017
[Authors] Kaiming He, Georgia Gkioxari, Piotr Dollár, Ross Girshick
[Pages]
https://github.com/facebookresearch/Detectron
https://github.com/matterport/Mask_RCNN
[Description]
- 在Faster R-CNN基础上加入了Mask Head, 用于预测每个目标的mask.
- 骨干网络换成了ResNeXt+FPN, 根据ROI的尺寸选择从C2到C5的某个level中取feature作为Mask和Cls Head的输入.
- Mask Head为每个类别都预测一个mask, 最后取Cls Head中预测的概率最大的类别作为此目标分割结果, 这么做的好处是避免了类间竞争, 对instance segmentation任务来说能带来明显的性能提升.
- ROI Align代替ROI pooling, 用双线性插值计算相应位置的feature而不是简单地取整. 这可以大大减小feature的位置偏差, 对预测mask起重要作用.
- Mask R-CNN已集成到Deterctron中, 应掌握这个框架.
[Paper] SGN: Sequential grouping networks for instance segmentation
[Year] ICCV 2017
[Authors] Shu Liu, Jiaya Jia, Sanja Fidler, Raquel Urtasun
[Pages]
[Description]
- 大致浏览. 与现有的基于分割或检测的方法都不同, 把instance问题看作把许多由breakpoint分割的线段组合起来的问题, 思路有趣, 性能有限, 未开源.
- 由预测breakpoints, 组合breakpoints成线段, 把线组合成连通域, 融合被隔开的实例四部分, 每个阶段都由特别设计的规则和网络组成.
[Paper] BlitzNet: A Real-Time Deep Network for Scene Understanding
[Year] ICCV 2017
[Authors] Nikita Dvornik, Konstantin Shmelkov, Julien Mairal, Cordelia Schmid
[Pages] http://thoth.inrialpes.fr/research/blitznet/
[Description]
[Paper] Path Aggregation Network for Instance Segmentation
[Year] CVPR 2018 Spotlight
[Authors] Shu Liu, Lu Qi, Haifang Qin, Jianping Shi, Jiaya Jia
[Pages]
[Description]
- Mask R-CNN的改进, COCO 2017 Instance冠军. paper偏工程, 很多东西理论性不强, 但实际工程中可以借鉴
- 在FPN后面加了一Bottom-up Path Augmentation, 就是给高层特征加入底层语义信息.
- Adaptive Feature Pooling, 就是从每个level都取特征, 在后续网络的某个位置用MAX或SUM融合起来, box一支在fc1和fc2之间融合效果好, mask一支貌似没提到.
- mask一支加入了一全连接层, 并与原来的结果fuse起来. 道理说服力不强, 但从结果来看提升了效果.
[Paper] MaskLab: Instance Segmentation by Refining Object Detection with Semantic and Direction Features
[Year] CVPR 2018
[Authors] Liang-Chieh Chen, Alexander Hermans, George Papandreou, Florian Schroff, Peng Wang, Hartwig Adam
[Pages]
[Description]
- Liang-Chieh Chen的xxLab系列又一弹, detection-based和segmentation-based结合做instance. 粗读, 和DeepLab一样还是偏工程的.
- 分为box detection, semantic segmentation logits和direction prediction logits三部分. box detection负责检测目标的bounding box和其类别; semantic segmentation负责得到整张图中的分割label map; direction prediction负责得到每个pixel相对于其所属instance中心的方向.
- 检测出某一目标的bbox和类别后, 从semantic和direction的feature中分别crop出相应区域, 将direction进行assemble, 做法与instanceFCN基本相同, 然后把semantic和direction的feature map concat起来完成最后的分割.
- 用了Hypercolumn, atrous, deform conv等多种技术, 目前看来效果不如mask r-cnn(20180721).
[Paper] Instance-level Human Parsing via Part Grouping Network
[Year] ECCV 2018 Oral
[Authors] Ke Gong, Xiaodan Liang, Yicheng Li, Yimin Chen, Ming Yang, Liang Lin
[Pages] https://github.com/Engineering-Course/CIHP_PGN
[Description]
- 分割+边缘检测做instance segmentation的一篇paper, 主要用于多人解析中, 在一般的实力分割数据集中不一定有非常好的效果.
- 分为backbone网络, segmentation branch, edge detection branch和refinement branch四部分. backbone为resnet101, 把最后三个block concat起来作为多尺度feature送入接下来的branch中; segmentation branch和edge detection branch结构钢相似, 都使用了pyramid pooling, 此外边缘检测部分还使用了deep supervision, 即将最后三个block的feature拉出来做ASPP后都去预测边缘; 最后, 分割和边缘检测的结构concat起来送入refinement branch得到最后的分割和边缘检测结果.
- instance partition部分, 首先水平和垂直地扫描, 根据edge确定属于同一instance的segments, 这些线段组成一连通图; 用BFS找到属于同一instance的pixel; 最后进行grouping, 去掉边缘检测的一些假边缘产生的小区域.
- 提出了CHIP多人解析数据集, 这个数据集标注的比较精细.
[Paper] Learning to Segment Every Thing
[Year] CVPR 2018
[Authors] Ronghang Hu, Piotr Dollar, Kaiming He, Trevor Darrell, Ross Girshick
[Pages] http://ronghanghu.com/seg_every_thing/
[Description]
[Paper] Box2Pix: Single-Shot Instance Segmentation by Assigning Pixels to Object Boxes
[Year] IEEE Intelligent Vehicles Symposium (IV), 2018
[Authors] Jonas Uhrig, E. Rehder, B. Fröhlich, U. Franke, Thomas Brox
[Pages]
[Description]
- 粗读, 提出了一个用于街景的实例分割方案, 在cityscape和kitti上达到了10FPS的速度, 整体是偏工程的, trick很多.
- 基于GoogleNet V1, 完成了三个子任务: 基于SSD的目标检测, 语义分割, 预测center offset. Loss计算时使用了task uncertainty技巧; SSD的prior box是根据数据集特点手动定义的; SSD在对应预测框和真值时用了"相对坐标变化"来代替IoU, 能更好地利用bounding box.
- 一些具体实现没细看, 也没有代码供参考. 疑问: 网络是以原尺寸作为输入的?
[Paper] Mask Scoring R-CNN
[Year] CVPR 2019 Oral
[Authors] Zhaojin Huang, Lichao Huang, Yongchao Gong, Chang Huang, Xinggang Wang
[Pages] https://github.com/zjhuang22/maskscoring_rcnn
[Description]
- 创新点是提出了MaskIoU Head, 简单易行, 通用性强. 在Mask R-CNN的基础上进一步提升了性能.
- MaskIoU Head以ROI feature和Mask Head输出concat起来为输入, 输出Mask IoU, 使用回归的方式优化. 测试时只用Mask IoU去修正分类的分数.
- 做了大量ablation study, 如有需要, 可再细读.