2015年,Ross Girshick提出Fast RCNN,在SPPNet之后提出。
1、Fast R-CNN框架
输入:一张包含多个ROI的图片
网络:多层卷积(用了VGG16)特征提取,每个ROI被池化成一个固定大小的Feature map,最后被全连接层展开成一个特征向量。
输出:特征向量被分享做两次操作(并行)
1:经过output为21维的全连接层,用来做softmax分类,对ROI区域做物体识别
2:经过output为84维的全连接层,用来做box regression候选框回归,修正定位,使定位框更加精准。
2、改进点
- 共享卷积。
这点和SPPNet一样,将整张图输入CNN,再采用选择搜索(SS)映射原始图中的候选框到特征图中。大大减少计算量。 - ROI Pooling
具体操作:
1)根据输入的图像,将ROI映射到特征图的对应位置
2)将映射后的区域划分为相同大小的sections
3)对每个sections进行max pooling操作
可以从不同大小的方框最终得到尺度相同的特征。 - 多任务损失函数
将分类与回归任务放在一起训练,用了softmax分类,不再使用SVM单独训练,节约了时间。
总结
Fast R-CNN实现了端到端,合并了特征提取和目标识别的步骤,加快了训练速度。
不足:
前面候选框的生成,用selective search消耗的时间是后面特征提取的十几倍。后面Faster RCNN在这方面有所改进。
具体的多任务损失函数:参考文章:Fast CNN 损失函数讲解