鱼和熊掌兼得的Mask RCNN
鱼和熊掌兼得的Mask RCNN
1、MaskRCNN简介
MaskRCNN是何凯明基于以往的FasterRCNN架构提出的新的卷积网络,一举完成了对象实物分割(object
instance
segmentation),该方法在现有的目标检测的同时完成了高质量的语义分割,可称为鱼和熊掌兼得。其主要思路是在现有的FasterRCNN基础上进行扩展,添加一个预测mask的分支,对目标进行并行预测。同时这个网络结构比较容易实现和训练,速度5fps也算比较快,并且很方便应用到其他领域,比如目标检测、分割和人物关键点检测等。
MaskRCNN是一个实物分割(instance
segmentation)算法,实物分割是一种在像素层面识别目标轮廓的任务,其不仅能分类不同的类,而且能把同一类物体中的多个不同物体分别标记出来。图1展现分类(classigication),语义分割(Semantic
Segmention)、目标检测(Object Detection)和实物分割(Instance
Segmentation)的任务。
图1
- Classigication:这张图像中有一个气球。
- Semantic Segmention:这些全是气球像素。
- Object Detection:这张图像中的这些位置上有 7 个气球。
- Instance Segmentation:这些位置上有 7 个气球,并且这些像素分别属于每个气球。
2、MaskRCNN优势
- 高速和高准确率:
作者选用了经典的目标检测算法Faster-rcnn和经典的语义分割算法FCN。Faster-rcnn可以即快又准的完成目标检测的功能;FCN可以精准的完成语义分割的功能,两个算法都是对应领域中的经典之作。Mask
R-CNN比Faster-rcnn复杂,但是最终仍然可以达到5fps的速度。这和原始的Faster-rcnn的速度相当。由于发现了ROL
Pooling中存在的像素偏差问题,提出了对应的ROlAlign策略,加上FCN精准的像素MASK,使得其可以获得高准确率。
- 简单直观
整个Mask
R-CNN算法的思路很简单,就是在原始Faster-rcnn算法的基础上增加了FCN来产出对应MASK分支。即Faster-rcnn+FCN,更细致的是RPN+ROlAlign+fast-rcnn+FCN
- 易于使用
整个Mask
R-CNN算法非常的灵活,可以用来完成多种任务,包括目标分类、目标检测、语义分割、实例分割、人体姿态识别等多个任务,这将其易于使用的特点展现的淋漓尽致。除此之外,我们可以更换不同的backbone
architecture和Head Architecture来获得不同性能的结果。
3、MaskRCNN网络框架
Mask R-CNN算法实现流程:
- 第一步:输入一幅你想处理的图片,然后进行对应的预处理操作,或者预处理后的图片;
- 第二步:将其输入到一个预训练好的神经网络中(ResNet-FPN等)获得对应的多张不同尺度的特征图(feature
map); - 第三步:对feature map中的每一点设定预定个的ROI,从而获得多个候选ROI;
- 第四步:将这些候选ROI的9个尺度的anchor,通过ROI pooling
,得到候选区域的ROI。送入RPN网络进行二值分类(前景或背景)和BB回归,过滤掉一部分候选的ROI; - 第五步:对这些剩下的ROI进行ROIAlign操作。ROIAlign摈弃了ROIpooling采用的取消取整的这种粗暴做法,采用双线性插值来得到固定四个点坐标的像素值,从而使得不连续的操作变得连续起来,返回到原图的时候误差也变得更小。(ROIAlign为创新点1)
- 第六步:这些ROI进行分类(N类别分类),BB分类和MASK生成(在每个ROI里面进行FCN操作)(引入FCN生成Mask为创新点2)
总之,Mask
R-CNN是一个非常灵活的框架,可以增加不同的分支完成不同的任务,可以完成目标分类、目标检测、实例分割,人体姿势识别等多种任务,真不愧是一个好算法。
参考文献/博客
Faster RCNN :https://zhuanlan.zhihu.com/p/31426458
FCN: https://www.cnblogs.com/gujianhan/p/6030639.html
FPN: https://blog.csdn.net/WZZ18191171661/article/details/79494534
MaskRCNN:https://blog.csdn.net/heavenpeien/article/details/80534963