1. Introduction
1.1 Background
物体分类只要预测出图像中出现的物体的类别;目标检测( Object detection)不仅需要提供图像中物体的类别,还需要提供物体的位置(bounding box)。语义分割( Semantic segmentation)需要预测出输入图像的每一个像素点属于哪一类的标签。实例分割( instance segmentation)在语义分割的基础上,还需要区分出同一类不同的个体。如下图Figure 1所示。
注:作者给出语义分割(c)与实例分割(d)的示意图应该是弄反了。
1.2 Issues
对于语义分割( semantic segmentation),我们希望分割精度( segmentation accuracy)和分割效率( segmentation efficiency)都达到一个比较好的程度。好的分割精度主要表现在定位的精确和物体类别识别的准确;好的分割效率指的是在可接受的内存/存储的情况下,时间达到实时。 用于分割的目标检测器的重要组成部分之一是良好的特征表示( good feature representation),它在目标检测中其中至关重要的作用。以前,有一些手工设计的特征,如SIFT,HOG等;目前大都是使用CNN来提取特征。 基于CNN的检测器,如RCNN,Faster RCNN和YOLO等,通常使用最上的CNN层作为物体的表示。不过存在一个问题,就是物体的尺度变化很大,这对检测任务是一个难点。解决这个问题的其中一个方法是使用图像金字塔( pyramid of images),但是这个方法比较耗资源和耗时。 实例分割目前存在的一些问题和难点。- 小物体分割问题。深层的神经网络一般有更大的感受野,对姿态,形变,光照等更具有鲁棒性,但是分辨率( resolution)比较低,细节也丢失了;浅层的神经网络的感受野比较窄,细节比较丰富,分辨率比较大,但缺少了语义上的信息。因此,如果一个物体比较小时,它的细节在浅层的CNN层中会更少,同样的细节在深层网络中几乎会消失。解决这个问题的方法有dilated convolution和增大特征的分辨率。
- 处理几何变换( geometric transformation)的问题。对于几何变换,CNN本质上并不是空间不变的( spatially invariant)。
- 处理遮挡( occlusions)问题。遮挡会造成目标信息的丢失。目前提出了一些方法来解决这个问题,如 deformable ROI pooling,deformable convolution和 adversarial network。另外,也可能可以使用GAN来解决这个问题。
- 处理图像退化( image degradations)的问题。造成图像退化的原因有光照,低质量的摄像机和图像压缩等。不过目前大多数数据集(如ImageNet,COCO和PASCAL VOC等)都不存在图像退化的问题。
2. Instance Segmentation Techniques: A Taxonomy
2.1 Classification of mask proposals
下图Figure2 展示了 Classification of mask proposals的大体框架。
2.1.1 Bottom-up Mask Proposals
在COCO推广之前,现代意义的实例分割是由 Hariharan等人(见论文: Simultaneous detection and segmentation)引入的。提出的方法包括mask proposals的生成,然后对这些生成的proposal进行分类。早期的时候,这种mask proposal的分类方法在其他很多地方使用。比如说Selective Search,可以用该方法获取box detection并用于语义分割;该方法也同样可以用于实例分割上。2.1.2 Deep Learning
在深度学习热门之前,一般依赖于 bottom-up mask proposal的生成。后来,该方法就被新的结构替代了,如RCNN。尽管RCNN有比较高的分割精度,但是也有一些缺点。比如,RCNN训练时是多阶段的,每一阶段需要分开训练,比较慢,并且比较难优化。后来,Fast RCNN和Faster RCNN等解决了这些问题。2.2 Detection followed by segmentation
The popular approach for instance segmentation involves object detection using a box followed by object-box segmentation。 下图Figure 3展示了这种方法的大体框架。
2.2.1 Mask Based Techniques
其中一个比较成功的方法是Mask RCNN。Mask RCNN是在Faster RCNN的基础上进行改进的,增加了一个简单的mask predictor。Mask RCNN训练更加容易,有更好的泛化性,并且在Faster RCNN上只需增加一点点的计算量。Mask RCNN最终精度也是不错的。2.2.2 Other Techniques
检测目标bounding box,下面方法也会使用:- sliding-window techniques
- region-based techniques
2.3 Labelling pixels followed by clustering
该方法包括将每一个图像像素点进行分类标注。接下来是使用聚类算法将像素分组到对象实例中。总体框架如下:
该方法得益于语义分割的积极发展,可以预测高分辨率的object mask。相比于 detection-followed-by-segmentation方法,该方法的精度较低;另外由于像素标记需要密集的计算,通常需要更多的算力。
2.4 Dense sliding window methods
该方法的总体架构如下:
2.4.1 Class Agnostic Mask Generation Techniques
这些方法使用密集滑动窗口( dense sliding-window)的方法来生成CNN的mask proposal,比如DeepMask和InstanceFCN等。2.4.2 TensorMask
与2.4.1提到的方法不同, TensorMask使用了一个新的架构并且有更好的效果。TensorMask涉及对多个类进行分类,这是与预测mask并行完成的。该特点也对实例分割很有用。该方法在COCO上有不错的表现,但是算法的复杂度比较高。 下面的表格Table 1是对Section 2的一个总结。
3. The Evolution of Instance Segmentation
Section 2部分提到了很多算法,这些算法提出的时间线如下图Figure 6。
3.1 RCNN
RCNN是一篇比较早的使用CNN来做实例分割的。该方法结合了AlexNet和selective search的region proposal方法。训练RCNN的包括如下步骤:- 使用selective search计算region proposals
- 使用region proposals来fine-tune一个已经预训练好的CNN模型,如AlexNet
- CNN提取到特征之后,利用SVM分类器来对不同类别分类
3.2 Fast RCNN
Fast RCNN解决了一部分RCNN的缺点,也提高了目标检测的精度。Fast RCNN使用端到端的训练方法。它同时学习sofamax分类器和特定类的bbox回归,而不是像RCNN那样单独训练模型的各个部分。Fast RCNN采用共享卷积和ROI pooling 的方法来提取region proposal的区域特征。这种方法可以大大加快训练速度。3.3 MultiPath Network
见论文: Zagoruyko S, Lerer A, Lin T-Y, Pinheiro PO, Gross S, Chintala S, Dollár P (2016) A multipath network for object detection. arXiv preprint arXiv:1604021353.4 Faster RCNN
见论文: Ren S, He K, Girshick R, Sun J (2017) Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. IEEE Transactions on Pattern Analysis and Machine Intelligence 39 (6):1137-1149. doi:10.1109/TPAMI.2016.25770313.5 Mask R-CNN
见论文: He K, Gkioxari G, Dollar P, Girshick R (2018) Mask R-CNN. IEEE transactions on pattern analysis and machine intelligence. doi:10.1109/tpami.2018.28441753.6 MaskLab
见论文: Chen L, Hermans A, Papandreou G, Schroff F, Wang P, Adam H MaskLab: Instance Segmentation by Refining Object Detection with Semantic and Direction Features. In: 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition, 18-23 June 2018 2018. pp 4013-4022. doi:10.1109/CVPR.2018.004223.7 Non-local Neural Networks
见论文: Wang X, Girshick R, Gupta A, He K Non-local Neural Networks. In: 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition, 18-23 June 2018 2018. pp 7794-7803. doi:10.1109/CVPR.2018.008133.8 Path Aggregation Network (PANet)
见论文: Liu S, Qi L, Qin H, Shi J, Jia J Path aggregation network for instance segmentation. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2018. pp 8759-87683.9 Hybrid Task Cascade
见论文: Chen K, Pang J, Wang J, Xiong Y, Li X, Sun S, Feng W, Liu Z, Shi J, Ouyang W (2019) Hybrid task cascade for instance segmentation. arXiv preprint arXiv:1901075183.10 GCNet
见论文: Cao Y, Xu J, Lin S, Wei F, Hu H (25 Apr 2019) GCNet: Non-local Networks Meet SqueezeExcitation Networks and Beyond. doi:arXiv:1904.11492v13.11 YOLACT
见论文: Bolya D, Zhou C, Xiao F, Lee YJ (2019) YOLACT: Real-time Instance Segmentation. arXiv preprint arXiv:1904026893.12 Mask Scoring R-CNN
见论文: Huang Z, Huang L, Gong Y, Huang C, Wang X (2019) Mask Scoring R-CNN. arXiv e-prints3.13 TensorMask
见论文: Chen X, Girshick R, He K, Dollár P (2019) TensorMask: A Foundation for Dense Object Segmentation. arXiv preprint arXiv:1903121744. Datasets
下面介绍一些热门的实例分割的2D图像数据集(2D图像指灰度图像或者RGB图像)。- Microsoft Common Objects in Context (COCO) Dataset。提供了82783张训练图像,40504张验证集图像,超过80000张的测试图像;包含80类物体。
- Cityscapes Dataset。该数据集是一个城市-街道-场景( urban-street-scene)图像的大集合。它侧重于对街景的语义理解。该数据集提供了语义标注,特定实例的标注和特定像素的标注,包含5000张标注良好的图像和20000张粗略标注的图像。
- The Mapillary Vistas Dataset (MVD)。该数据集是另外一个大型的街景图像数据集。它包含25000张标注好的图像,66个类别。
5. Summary and Discussion
在这一部分,我们主要讨论基于深度学习的实例分割出现的关键因素和问题。5.1 Detection frameworks: Two Stage versus Single Stage
如果以阶段数作为框架分类的方法,那么可以分为二阶段( Region based)和一阶段( unified framework)。 如果计算资源比较丰富,那么两阶段框架比单阶段框架有更好的精度。这是因为两阶段的框架更加灵活,更加适合于 region based detection,如 Mask RCNN。 一阶段的检测器,如YOLO,通常比两阶段的检测器速度上更快,这是因此一阶段检测器缺少了预处理,backbone比较轻量,候选区域个数也更少,并且使用全卷积。然而一阶段框架相比于二阶段框架比较难检测小目标。 为了提高检测器的精度与效率,大家做了很多尝试,最终导致一些关键的设计选择趋同:- 全卷积网络框架
- 从相关任务中探索互补的信息,如Mask RCNN
- 使用滑动窗口
- 主干网络中多层信息的融合
5.2 Backbone networks
主干网络对精度上的影响是一个很重要的因素。尽管如ResNet、ResNext等深度网络很成功,但是这些都比较耗计算资源。5.3 Improvement in robustness of representation of objects
遇到的问题以及解决方法。- 目标的大小/尺度( Object Size/Scale)。尤其是小目标,姿态等是难点。解决方法有如下:
- 使用图像金字塔( image pyramids)
- 使用不同卷积层不同分辨率的特征
- 在网络中提高分辨率( Up-scaling to better resolution)来检测小目标
- 遮挡、形变和其他因素( Occlusion, deformation and other factors)。
- 使用空间转换网络( spatial transformer network)。 该方法利用回归得到变形区域,然后根据变形区域对特征进行变形。
- 旋转问题在实际环境中经常出现,但是热门数据集(如COCO)中没有旋转角度很大的情况
- 遮挡问题在本领域研究比较少
5.4 Detection proposals
检测方案大大减少了实例分割候选对象的搜索空间。其中RPN是一个不错的方案。5.5 Strengths and weaknesses with various Instance Segmentation Techniques
各种实例分割技术的优缺点如下表Table 3.