Rcnn系列算法的演进

最近在用Mask-Rcnn做人体分割关键点的检测,加上之前也在AI芯片上面写过Faster-Rcnn的网络模型,就顺便去研究了下Rcnn系列论文的演进过程。

Rcnn

2014年,第一次有人提出用CNN的方式去做目标检测,并且取得了非常好的效果,一站成名。Rcnn的任务,就是找到图片中主要目标的位置[bounding boxes],并识别这个目标是什么[classifications]。

Rcnn的做法是这样的,先从图片中找出N多个候选框[region proposals],对每一个候选框进行CNN的处理,并判断是否包含目标,如果包含目标,再判断包含目标的类别。图示如下:

Smiley face

Smiley face

原始图片输入;

采用Selective Search方法,提取出约2K个候选框;

从原图中一个个扣出候选框,并缩放到一个标准的正方形,放入到CNN网络[改进的AlexNet],提取图片特征;

接着放入到一个SVM分类其中,判断是否为目标以及目标是什么类别;

对鉴别出来的目标,做一个线性回归[linear regression],微调候选框的位置;

Fast-Rcnn

到了2015年,有人基于Rcnn提出了一个新的算法,叫做Fast-Rcnn,它做要解决的是Rcnn的两个问题:

Rcnn中2K个候选框每个都要在CNN网络中做一次推理,严重影响速度嘛;

Rcnn需要训练三个不同的model,特征提取/分类器/位置回归器[CNN/SVM/Liner Regression],那也太麻烦了;

所以Ross大神提出了他的解决方法,主要依赖于RoiPooling和FC网络。

Smiley face

Smiley face

改进一:既然对于一张图的每个候选框,都要重新算feature map,那为什么不对一张图只计算一次,然后共享计算结果呢?于是乎,它就采用了一次计算,多次提取的方式。接着,通过RoiPooling的方式,对候选框进行处理,得到固定尺寸的featture map输入到下一个环节;

改进二:通过全连接网络和Softmax函数,代替原来的SVM,从使得CNN/classifier/bounding box结合起来,输入输出都来自于同一个网络,方便训练啦;

Faster-Rcnn

又过了一年,大神们又开始找茬,想进一步提升Fast-Rcnn的性能,终于一个微软的团队找到了一种几乎不增加计算量的网络架构Faster-Rcnn。

Smiley face

与原来采用Selective Search提取候选框的方式不同,Faser-Rcnn中新增了一个Region Proposal Network,RPN网络对每个特征图上的点提供多种anchor boxes。对每个候选框先进行foreground和background判断,以及坐标位置的回归。从中选取置信度较高的N个框,还原到CNN后的特征图,提出来后做识别。网络结构如下:

Smiley face


至此,目标检测和识别的网络告一个段落了,放两个对比图

Smiley face
Smiley face

Mask-Rcnn

2017年,何凯明大神登场,提供除了一种像素级别的分割方法,Mask-Rcnn。Mask-Rcnn的主要目的和上述Rcnn系列算法有些差异,偏向于目标分割,在原来的Faster-Rcnn上增加了一个Mask分支。

Smiley face
Smiley face

MaskRcnn解决的问题是Faster-Rcnn在做Roipooling的时候,采用四舍五入的方式,导致在计算bouding boxes的位置信息时会有精度损失,得到的框会存在略微的偏移。而这个问题在分割上会被放大。因此,何大神提出了一种新的方法RoiAlign,来解决轻微的不对齐问题,并在还原过程中采用双线性插值法来对未region of interest做pooling操作,得到固定尺寸的输入。

总结

以上只做一个简单的总结,每个算法的细节建议参考原始论文为佳:

1.R-CNN: https://arxiv.org/abs/1311.2524
2.Fast R-CNN: https://arxiv.org/abs/1504.08083
3.Faster R-CNN: https://arxiv.org/abs/1506.01497
4.Mask R-CNN: https://arxiv.org/abs/1703.06870

关于Mask-Rcnn,Fckbook AI Research发布了一个基于caffe2编写的模型,灵活性非常高,可利用该模型进行二次开发,地址如下:https://github.com/facebookresearch/Detectron

参考博客:

https://blog.athelas.com/a-brief-history-of-cnns-in-image-segmentation-from-r-cnn-to-mask-r-cnn-34ea83205de4