目录
RoI 池化层(Region of Interest Pooling)
Fast R-CNN
Fast R-CNN 简介
从早期的滑动窗口方法到 R-CNN 系列,检测框架不断演进。Fast R-CNN(Fast Region-based Convolutional Network)由 Ross Girshick 于 2015 年提出,是 R-CNN 系列的重要里程碑。它在 R-CNN 和 SPP-Net 的基础上,通过共享卷积计算、引入 RoI(Region of Interest)池化层和端到端的训练方式,大幅提升了检测速度和精度。
Fast R-CNN 算法流程
Fast R-CNN 的完整流程可以分为以下四个步骤:
- 特征提取:整张图像通过 CNN(如 VGG16、AlexNet、ResNet、etc)前向传播一次,生成共享的特征图。
- 区域提议:使用选择性搜索(Selective Search)等传统方法生成约 2000 个候选区域(Region Proposals)。
- RoI 池化:将每个候选区域映射到特征图上,并通过 RoI 池化层转换为固定尺寸(如 7×7)的特征块。
- 分类与回归:固定尺寸的特征块经过全连接层后,并行输出两个结果:类别概率(通过 Softmax)和边界框回归偏移量。
注意:从每张图像的候选区域随机采样 64 个 作为RoI(并不是每个候选区域都使用),其中正负样本比例为 1:3。正样本为与真实框 IoU ≥ 0.5 的候选区域,负样本为 IoU 在 [0.1, 0.5) 之间的区域。

Fast R-CNN网络结构设计

Fast R-CNN 通常以预训练的 ImageNet 分类网络(如VGG-16)作为骨干网络,移除其最后的全连接层和 Softmax,保留卷积层用于特征提取。之后接一个 RoI 池化层,然后是两个全连接层(每个接一个 ReLU),最后分支为两个输出层:一个输出 (K+1) 个类别的 Softmax 概率(K 个目标类别 + 背景),另一个输出 4*(K+1)个边界框回归参数(每个类别对应 4 个偏移量,dx、dy、dw、dh)。
RoI 池化层(Region of Interest Pooling)
RoI 池化是 Fast R-CNN 的关键组件,其作用是将任意大小的候选区域特征转换为固定长度的特征向量。给定一个 RoI(由四元组 (r, c, h, w) 定义,分别表示左上角坐标和宽高)和预定的输出尺寸 H×W(如 7×7),RoI 池化将 RoI 窗口划分为 H×W 个子窗口,对每个子窗口内的特征值进行最大池化。这确保了不同大小的 RoI 都能输出统一尺寸的特征,便于后续的全连接层处理。

多任务损失函数
Fast R-CNN 使用一个多任务损失函数进行端到端训练,同时优化分类和边界框回归:


Fast R-CNN 总结
Fast R-CNN 通过引入 RoI 池化、多任务损失和端到端训练,显著提升了 R-CNN 系列模型的训练和检测效率,并保持了较高的精度。它的主要局限在于区域提议阶段仍依赖耗时的选择性搜索,这催生了后续的 Faster R-CNN(引入 RPN 网络实现端到端的区域生成)。
Faster R-CNN
Faster R-CNN简介
Faster R-CNN 是目标检测领域里程碑式的算法,由任少卿、何恺明等人在 2015 年提出。它通过引入 Region Proposal Network (RPN) 将候选区域生成与目标检测统一到一个端到端的网络中,极大地提升了检测速度与精度。
简单来说,Faster R-CNN=RPN+Fast R-CNN
Faster R-CNN 算法流程
Faster R-CNN 的完整流程可以分为以下四个步骤:
- 特征提取:整张图像通过 CNN(如 VGG16、AlexNet、ResNet、etc)前向传播一次,生成共享的特征图。
- 区域提议:使用Region Proposal Network (RPN)生成约 2000 个候选区域(Region Proposals)。
- RoI 池化:将每个候选区域映射到特征图上,并通过 RoI 池化层转换为固定尺寸(如 7×7)的特征块。
- 分类与回归:固定尺寸的特征块经过全连接层后,并行输出两个结果:类别概率(通过 Softmax)和边界框回归偏移量。

Faster R-CNN 的核心创新在于 Region Proposal Network (RPN)。在 Fast R-CNN 中,候选区域(Region Proposals)的生成依赖于外部算法(如 Selective Search),计算成本高且无法与检测网络联合优化。Faster R-CNN 将这一步骤替换为区域建议网络(RPN),直接在特征图上预测候选框,实现了候选区域生成与目标检测的端到端训练。
Faster R-CNN网络结构设计

Faster R-CNN 的整体结构可以看作是两个模块的级联:RPN 和 Fast R-CNN 检测器。它们共享同一个骨干网络(如 AlexNet、VGG16、ResNet、etc)提取的特征图。
Region Proposal Network (RPN)

RPN 是一个全卷积网络,其输入是骨干网络输出的特征图,输出是一系列候选区域(Proposals)及其对应的“目标性”得分(Objectness Score)。

- 滑动窗口:一个 3×3 的卷积层在特征图上滑动,为每个位置生成一个 256-d(骨干网络是ZF)或 512-d(骨干网络是VGG16)的特征向量。

- 锚点(Anchors):在特征图的每个滑动窗口中心,预设 k 个不同尺度和长宽比的锚框(例如 3 种尺度 × 3 种长宽比 = 9 个锚点,9个矩形共有3种形状,3种尺度(面积)大约为128x128、256x256、512x512,3种长宽比大约为1:1、1:2、2:1)。这些锚点作为候选区域的参考,由于候选框之间存在大量重叠,采用非极大值抑制,IoU设为0.7,筛选出要输出的候选框。
- 两个并行输出层:
- 分类层(cls layer):一个 1×1 卷积,输出 2k 个分数,表示每个锚点是目标还是背景的概率。
- 回归层(reg layer):一个 1×1 卷积,输出 4k 个坐标偏移量(dx、dy、dw、dh),用于微调锚点的位置和大小。
Fast R-CNN 检测器
RPN 生成的候选区域(Proposals)被送入 Fast R-CNN 模块进行最终的分类和边界框回归。
- RoI Pooling:将不同大小的候选区域映射到固定大小的特征图(如 7×7)。
- 全连接层:将池化后的特征展平,通过一系列全连接层。
- 两个并行输出层:
- 分类层(cls layer):输出每个候选区域属于各个类别(包括背景)的概率。
- 回归层(reg layer):输出每个类别对应的边界框微调参数。
Faster R-CNN总结
Faster R-CNN 通过引入 RPN,将目标检测的两阶段(候选区域生成 + 分类回归)统一到一个端到端的框架中,在速度和精度上取得了显著突破,成为后续许多检测算法(如 Mask R-CNN)的基础。尽管如今单阶段检测器(如 YOLO、SSD)在速度上更具优势,但 Faster R-CNN 的设计思想、多任务损失和训练策略依然极具学习价值。

831

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



