检测系列--RCNN系列

截图来自小象学院ppt,若有侵权,联系我删除

一,RCNN

框架:

1,selective search

2,区域预处理,尺寸缩放到227×227

3,利用Alexnet(去掉最后分类层,4096维向量),做特征提取,一个物体一个SVM分类,(当时认为SVM比softmax分类好)bounding box回归

4,正负样本选择方法

全连接层最后一层换成分类数+背景,IOU>0.5,正样本,IOU<0.5,负样本,每个类别对应一个SVM分类器

5,回归,利用的是第五层卷积特征做回归

6,测试,测试出来的最大分值的框,做NMS去掉多余的框

7,评价指标,召回率例如是坏人就抓回监狱

速度慢的原因:每个区域都需要卷积,用于SVM、b-box 回归的特征需要存储到磁盘中,这将需要占用大量的磁盘空间,而且提取这些特征也会耗费好多时间。

问题:训练时间很长(84小时),Fine-tune(18)+ 特征提取(63)+ SVM/Bbox训练(3),测试阶段很慢:VGG16一张图片47s,复杂的多阶段训练。

二,SPP-Net

1,改进:(1)共享卷积,直接在Conv5用特征

(2)引入空间金字塔池化(spp),为不同尺寸的区域在conv5输出上提取特征,映射到尺寸固定的全连接层

2,spp网络结构

3,分块,块里面做最大池化

4,特征位置与原图对应

5,训练过程:注意与RCNN区别,冻结卷积层权重

问题:
• 继承了R-CNN的剩余问题,需要存储大量特征,复杂的多阶段训练,训练时间仍然长(25.5小时),Fine-tune(16)+ 特征提取(5.5)+ SVM/Bbox训练(4),带来了新问题,SPP层之前的所有卷积层参数不能fine tune,误差过不了spp层,因为计算困难。

三,Fast R-CNN

1.改进:

比R-CNN,SPP-Net更快的trainng/test,更高的mAP, 实现end-to-end(端对端)单阶段训练,多任务损失函数(Multi-task loss), 所有层的参数都可以fine tune, 不需要离线存储特征文件

2,引入新技术

感兴趣区域池化层(RoI pooling layer)替换spp层, 多任务损失函数(Multi-task loss)

3,roi pooling,注意:spp和roi的区域都是通过slective search选择的,此时误差可传过roi了。

4,重叠区域误差传播做法

5

5,修正框

6,损失函数

7,奇异值分解,加速全连接

8,性能比较

四,Faster R-CNN

1,改进

rpn代替selective search

2,RPN,conv5经3x3卷积核,1x1卷积核得到的特征去做回归,另一个1x1卷积核得到的特征去做分类。

3,anchor选择方法,一般k=9

4,训练过程,先训练rpn做好anchor,在做fast rcnn,注意共享卷积层以后,要冻结卷积层

5,性能比较

6,网络总体比较

fast rcnn多任务损失函数

五,R-FCN

1,全连接会丧失空间信息

2,红色框是R-FCN的特有之处,所有通道数等于分类数+背景

3,每类对应每层通道

4,feature map   可视化

5,损失函数

猜你喜欢

转载自blog.csdn.net/fanzonghao/article/details/82946058