目标检测RCNN系列算法学习笔记
主要内容有:
- RCNN
- SPP
- Fast RCNN
- Faster RCNN
- Mask RCNN
最近在室里面交流会上做了个目标检测算法的ppt,所以拿出来做个记录。
发展综述
2018年发展我更倾向于Kaiming He的全景分割,但是这是一种全新定义的场景任务,所以没有写到上面。还有YOLO、SSD以及最近看的FPN打算写在另一篇博客当中。
RCNN
RCNN是深度学习在目标检测当中的开山之作。
基本所有这个方向的小伙伴都是首先要拜读的就是这篇RCNN。RCNN的主要思想就是提取proposal建议框送入CNN进行特征提取,在使用分类器进行分类。区别于DPM等算法,不再需要手工提取特征再分类,但是这一算还有许多不足,见红圈圈:
1. 使用Selective Search算法提取预选框,消耗时间。SS算法是一种过分割的方法,再应用颜色连通域等方法合并,生成大约2000个proposal。
2. 所有proposal都被裁成同样大小送入CNN网络,其中会造成形变拉伸和有效信息的损失。
3. CNN对每个proposal重复计算,这要是RCNN耗时的原因。
4. SVM分类器对每类进行判断,不能端到端地输出坐标。
之后的研究者们对这几个方面进行了优化。
SPP空间金字塔池化
CNN网络是不需要固定尺寸的输入的,可是在全连接层需要固定尺寸。
因此在全连接层之前加上SPP,空间金字塔池化层。对特征层进行4:2:1的池化,然后连接。所以不论特征图尺寸多少,最后输出都是21*256d。
Fast RCNN
主要改进有使用proposal映射的方式,不再需要重复计算,全图只需要计算一次,在特征图上映射就可以得到该proposal的最后特征。
使用了SPP思想,在这里叫Roi Pooling,输入不限制尺寸。
增加了bbox回归,回归建议框与groundtruth的偏差,增加IoU。
Faster RCNN
RPN网络来提取建议框,在最后一层特征图上使用滑动窗口生成不同尺度的anchors。
可以达到5fps。
Mask RCNN
RoiAligh像素对齐技术,不经过量化。
增加了mask损失函数,对应每一类分类生成一个二维掩膜。