截图来自小象学院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,损失函数