一、《Fast R-CNN》
1.1、基本信息
-
作者:Ross Girshick
-
机构:Microsoft Research
-
发表时间:2015年
-
论文链接:arXiv:1504.08083
-
代码开源:GitHub仓库(MIT License)
1.2、主要内容
Fast R-CNN是一种高效的基于区域提议的卷积神经网络(R-CNN)改进方法,主要解决了R-CNN和SPPnet在训练和检测速度上的瓶颈问题,同时提升了检测精度。核心创新点包括:
-
单阶段训练:通过多任务损失函数(分类+边界框回归)实现端到端训练,取代了R-CNN的多阶段流程(如SVM分类器、特征缓存等)。
-
RoI池化层:将不同大小的候选区域(RoI)统一为固定尺寸的特征图,共享卷积计算,显著加速训练和测试。
-
全网络微调:支持更新所有网络层(包括卷积层),而SPPnet无法更新卷积层。
-
性能提升:
-
训练速度:VGG16比R-CNN快9倍,比SPPnet快3倍。
-
测试速度:比R-CNN快213倍(使用截断SVD加速全连接层)。
-
检测精度:在PASCAL VOC 2012上mAP达到66%(R-CNN为62%)。
-
1.3、影响和作用
-
技术贡献:
-
推动了目标检测从多阶段流水线向端到端训练的演进,为后续Faster R-CNN(引入区域提议网络RPN)奠定了基础。
-
提出的RoI池化层成为后续检测模型(如Mask R-CNN)的标准组件。
-
-
实际应用:
-
高效的训练和检测速度使其更适合实际部署,尤其在需要处理大量候选框的场景。
-
开源实现促进了目标检测研究的快速发展。
-
-
后续影响:
-
启发了更快的模型(如Faster R-CNN、YOLO、SSD)和更复杂的任务(如实例分割)。
-
证明了深度卷积网络直接学习尺度不变性的能力,减少了对多尺度图像金字塔的依赖。
-
二、实现过程
1. 候选区域生成:使用选择性搜索或其他方法生成约2000个候选区域 (使用Selective Search方法)。
2. 获得特征矩阵:将原始的整幅图像输入网络得到相应的特征图,将SS 算法生成的候选框映射到特征图上获得相应的特征矩阵。
3. 预测:将每个特征矩阵通过 RoI(Region of Interest)池化层缩放到 7x7大小的特征图,Fast R-CNN通过全连接层对每个RoI进行分类和边 界框回归。分类任务用于确定RoI中是否包含感兴趣的对象类别,而回 归任务则用于精确定位物体的边界框 ( Fast R-CNN通过整合所有组件 (特征提取、RoI池化、分类、回归)为一个网络模型,实现了端到端 的训练,简化了整体流程。 )。
2.1、获得特征矩阵
在R-CNN中,需要对2000个候选区域都进行CNN,即进行2000次CNN计 算,在Fast R-CNN中,将整张图送入到CNN(使用的VGGNet-16)网络, 然后从特征图上提取相应的候选区域。
2.2、RoI池化层
将49个区域每一个区域都进行池化操作:
最大池化通常用于提取每个子区域中最显著的特征值,以保留最重要的 信息(使用的这个)。
平均池化则计算每个子区域中特征的平均值,用于保留更全局的信息。
就得到一个7 x 7 x channels的张量。
2.3、预测-分类器
Softmax之前的FC层输出节点有N+1个节点,经过Softmax之后,得到概 率结果,例如Pascal VOC就是20类+1个背景。
顺序是背景、第一类、...、第二十类。
2.4、预测-回归器
与RCNN的回归器是一样的,只是回归参数是由FC网络训练得到,即20*4 的矩阵。
2.5、损失函数
Fast R-CNN的损失函数是同时用于分类和边界框回归的联合损失函数。其 定义为:
Fast R-CNN的损失函数同时考虑了分类任务和回归任务:
1. 分类损失:通过交叉熵损失函数来度量模型预测的类别与真实类别之间 的差异。这个损失引导模型进行正确的分类。
2. 回归损失:通过平滑L1损失函数来度量模型预测的边界框与真实边界 框之间的差异。这个损失引导模型进行边界框的精确回归调整。
通过联合这两部分损失,Fast R-CNN可以同时优化目标检测中的分类和定 位任务,使得模型能够更准确地识别目标类别并精确定位目标边界。超参数 用于调节分类损失和回归损失的相对重要性,通常通过实验设置一个 合适的值。
三、 边框回归流程
四、 回归损失
训练样本偏移v的构造
x/y为什么要加缩放因子?