R-CNN缺点
- 训练是个multi-stage pipeline(CNN提取特征、通过log loss 微调网络、训练SVMs、bounding-box regression)
- 训练费时间和空间
- 目标检测很慢
SPPnet 缺点
- 训练是个multi-stage pipeline(CNN提取特征、通过log loss 微调网络、训练SVMs、bounding-box regression)
- 不同于R-CNN,微调算法不能更新空间金字塔池化层前面的卷积层
Fast R-CNN优点
- 高的监测质量(准确率+速度)
- 训练是single-stage,采用一个多任务损失multi-task loss
- 训练可以更新网络的所有层
- 不需要将提取的特征写入硬盘中,节省空间
Fast R-CNN算法流程
- 输入图片和(2000左右个)RoI(最开始提取出的RoI区域只是为了最后的Bounding box regression时使用,用来输出原图中的位置。)
- 对图片用CNN进行处理
- 通过selective search算法在feature map上寻找region proposal
- 对每个候选区域采用RoI pooling,提取出固定长度的特征向量,并送入后面全连接层
- softmax层用于判断属于每个类别的概率,bounding box regression用于微调每个目标的边界框
一些细节说明
- RoI pooling layer 其实是 spatial pyramid pooling layer的特例,即只采用一层金字塔等级。
- RoI pooling 输出的尺寸H*W是个超参数,与RoI(候选区域)的大小无关。H和W的数值根据所用CNN网络的第一层全连接层确定,(如VGG16采用H=W=7)
- bounding box regression输出是四元元组(r,c,h,w),其中(r,c)为左上角点坐标,h,w为长和宽,共输出4*K个数值(K为类别数)
- softmax输出K+1个概率值(K个类别+背景)
用预训练好网络初始化Fast R-CNN(迁移学习)需方法
-
用RoI pooling layer代替原网络最后一层最大池化层
-
原网络最后一层全连接层和softmax层被上述的softmax和BB Regression代替
-
将原网络调整为接受两种输入:batch个图片以及这些图片的RoIs