1. R-CNN
论文题目:《Rich feature hierarchies for accurate oject detection and semantic segmentation》
推荐博文:【深度学习】R-CNN 论文解读及个人理解
架构
步骤
- Selective Search(SS)算法:提取大约2000个候选区域RP(Region Proposal);
- warped region:相当于resize到固定尺寸,送入CNN;
- 卷积神经网络CNN:对每一个RP使用CNN(论文中使用AlexNet)提取抽象特征向量(固定长度的);
- Linear SVM:对每一个RP的特征向量进行分类Classification,每一个类别都对应一个SVM,然后采用NMS去除冗余;
- Linear Regression:分类后,用线性回归器对RP和GT的四点坐标进行线性回归,生成Bounding Box。
总结
R-CNN本质是用SS提取海量的RP,warped后,让每一个RP都前向通过CNN,提取特征向量,并以此训练/预测每一类的线性SVM分类器,再用线性回归器对BBOX进行回归预测。并且,论文中引入了在超大数据集上预训练pre-train、在自己规模较小的数据集上微调fine-tuning,即现在的迁移模型的概念。
2. Fast R-CNN
论文题目:《Fast R-CNN》
推荐博文:【目标检测】Fast RCNN算法详解
架构
多任务损失函数
步骤
- CNN:提取feature map,实现共享卷积,提高效率
- SS:在feature map上投影出ROI
- ROI Pooling:SPP空间金字塔池化的简化版,把不同尺度的ROI 池化为相同尺度
- Softmax:ROI Pooling后拉成一维向量,全连接层FCs,得到ROI feature vector,用Softmax分类
- Bbox Regression:对BBox四点坐标进行线性回归预测
总结
相较于R-CNN,Fast R-CNN的特点:
- 把SS提取RP和CNN位置前后交换,实现了CNN的卷积参数共享,提高了效率
- 简化SPP,提出了ROI Pooling,实现了不同尺度ROI能够池化为fix-length
- Softmax替换了线性SVM,实现了除SS提供RP外,从CNN到分类、回归的端到端训练
3. Faster R-CNN
论文题目:《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》
推荐博文:【目标检测】Faster RCNN算法详解
架构
损失函数
步骤
- CNN:得到feature map
- RPN:输入-conv feature map,输出-ROI
- ROI Pooling:得到fix-length特征向量,在送入fc
- softmax分类和regressor回归Bbox
轮流训练
- 先训练RPN
- 再训练Fast R-CNN
- 再训练RPN
- 再训练Fast R-CNN。。。
- 完成上述2次迭代
总结
Faster R-CNN = Fast R-CNN + RPN
RPN网络中引入了Anchor锚点的概念:
每个像素点,都有3种面积x3种尺度(1:1,1:2,2:1)共9个Anchor boxes,
对每个Anchor boxes进行二分类(前景(即ROI)和背景),
对每个Anchor boxes进行ROI box的粗略回归定位,(后面的regressor会对ROI进行refine)
4. Mask R-CNN
论文题目:《Mask R-CNN》
推荐博文:Mask R-CNN原理详细解读
架构
特点
- 采用了ResNet-FPN作为backbone网络,有利于多尺度检测
- ROI Pooling改良成了ROI Align:因为ROI Pooling有2次整数化的过程(生成ROI时坐标整数化,Pooling分块时坐标整数化),影响Bbox的回归精度。而ROI Align直接避开整数化的处理过程,采用双线性插值,计算坐标的浮点坐标值
- 加入了Mask分支:即在ROI Align后面加入FCN全卷积网络,实现segmentation(实质是对像素级别的分类)