文章目录
本篇博客将要解析的论文是Fast R-CNN,论文地址为: https://arxiv.org/abs/1504.08083
一、介绍
本文是Ross Girshick于2015年发表的一篇文章,该论文提出了Fast R-CNN模型,改进了R-CNN系列的算法流程和网络结构,在SPPNet的基础上,继续提高了目标检测模型的运算速度和准确率。
二、拟解决的关键问题
不同于分类任务,目标检测算法还需要获取物体的精准定位信息,目前准确率较高的几种目标检测算法如R-CNN、SPPNet等大都是基于区域推荐算法来实现以上目标,但这种方式目前也存在一些问题:
- 大量的推荐框会被产生并处理——耗时耗内存
- 推荐框只能提供粗略定位,仍然需要再次处理去获得精确定位——训练流程较为复杂
下面简单分析一下R-CNN以及SPPNet的主要缺陷:
- R-CNN
-
训练过程是一个多阶段的流程
- 使用log loss在推荐框上微调一个卷积网络
- 将卷积神经网络提取到的特征送入SVM中训练一个SVM分类器
- Bounding Box Regression
-
训练过程既耗时又耗空间
对于SVM和Regressor的训练过程,特征是每张图片的所有推荐框提取得到的特征,并事先保存在硬盘中,训练时再重新读取
-
目标检测慢
由于测试时需要为每张图片的每个检测框提取特征,导致运行很慢
- SPPNet
与R-CNN类似,仍然是一个多阶段的流程:提取特征,使用log loss微调网络,训练SVM,应用Bounding Box Regressor。不同于R-CNN,SPPNet的微调算法不能更新SPP Layer之前的卷积层,这个部分内容后续再做更为详细地阐述。
R-CNN慢的重要原因在于:其没有共享权重,而是为每个推荐框运行一次卷积网络。而SPPNet通过共享权重则是加快了运行速度:SPPNet为整张图片提取一个卷积特征图,然后使用从共享特征图中提取的固定长度的特征完成分类。但其微调算法限制了检测准确率。
Fast R-CNN则是提出了一个Single-Stage训练算法,可以同时学习去分类推荐框以及优化推荐框的空间位置,并采用多任务学习的方式,同时提升子任务——分类和回归的准确率。
三、Fast R-CNN结构以及训练算法
1. 整体结构

输入:一整张图片以及该张图片对应的一系列的推荐框
网络:
- 一系列的卷积层和最大池化层,用于产生一个卷积特征图
- 针对每个推荐框,使用ROI Pooling Layer从特征图中提取一个固定长度的特征向量
- 送入一系列的全连接层,并产生两路分支:
-
1. 分类头:产生一个softmax概率(K + 1),用于推荐框的分类 2. 回归头:为每个类别(K)产生一个四维向量,用于推荐框位置的修正
2. ROI Pooling Layer
ROI Pooling Layer使用Max Pooling将任何大小的ROI都转化为一个具有固定空间尺度H * W的特征图,例如7 * 7,H和W是一个与ROI无关的超参数,每个ROI通过四个参数定义 ( r , c , h , w ) (r,c,h,w) (r,c

FastR-CNN由Ross Girshick于2015年提出,改进了R-CNN系列算法,提升了目标检测的速度和准确率。文章分析了R-CNN和SPPNet的缺陷,介绍了FastR-CNN的结构,包括整体流程、ROIPoolingLayer、预训练网络的调整、微调策略和尺度不变性。FastR-CNN采用单阶段训练,实现了分类和回归的多任务学习。
最低0.47元/天 解锁文章
1207

被折叠的 条评论
为什么被折叠?



