重读CV系列——2、Fast-RCNN学习

发布时间:2026/8/6 19:48:43
重读CV系列——2、Fast-RCNN学习 1、详细工作流程步骤操作与R-CNN的差异1. 生成候选区域同样使用Selective Search生成约2000个候选框。无变化候选框生成依然独立。2. 整图特征提取将整张图片输入CNN得到一张共享的、高分辨率的特征图Feature Map。核心改进整图只过一次CNN计算量锐减。3. 映射与池化将每个候选框的坐标映射到特征图上对应的区域。然后对该区域使用RoI Pooling将其池化为固定大小如7×7的特征图。关键创新引入RoI Pooling层解决不同尺寸候选框需要统一大小的问题且操作发生在特征图上而非原图上。4. 全连接与分类回归将池化后的特征图展开输入到全连接层得到一个特征向量。然后通过两个并行的输出分支一个Softmax做类别分类一个边界框回归器做位置微调。重要改进将分类和回归合并到一个网络中实现多任务Loss联合训练不再需要SVM。2、创新点创新1RoI PoolingRegion of Interest Pooling这是Fast R-CNN的灵魂组件。解决的问题R-CNN需要将每个候选区域裁剪并缩放到固定尺寸如227×227这个过程会破坏图像长宽比且非常耗时。Fast R-CNN的做法它将候选区域映射到特征图上比如将原图上的100×200的框映射到缩小了16倍的特征图上就变成了约6×12的区域然后对这个非整数、不同尺寸的区域用最大池化Max Pooling将其统一池化为固定大小如7×7。具体操作面试官可能会追问细节假设要把一个h×w的区域池化为H×W如7×7则将其划分为H×W个网格每个网格大小约为h/H × w/W然后对每个网格取最大值。这样无论输入尺寸如何输出都是H×W。创新2多任务损失函数Multi-task LossFast R-CNN将分类和回归融合在一个网络里联合训练。分类Loss使用Softmax的交叉熵损失判断RoI属于哪个类别K个目标类 1个背景类。回归Loss使用Smooth L1损失微调边界框的位置。它只对“有物体”的RoI计算回归损失背景框不参与回归训练。总损失L L_cls λ * L_loc其中λ控制两者权重。为什么用Smooth L1而不是L2因为L2损失对离群点outlier非常敏感梯度会很大导致训练不稳定。Smooth L1在误差较小时梯度平滑在误差较大时梯度饱和更鲁棒。3、与RCNNDA全面对比对比维度R-CNNFast R-CNN特征提取方式每个候选区域独立过CNN2000次前向传播整图只过一次CNN1次前向传播尺寸统一方式将候选区域裁剪/缩放到固定尺寸如227×227使用RoI Pooling在特征图上池化为固定大小训练流程三阶段预训练CNN → 训练SVM → 训练回归器端到端单阶段一个网络一个Loss联合训练分类器使用SVM每个类别一个二分类器使用Softmax多分类与CNN融合训练速度慢需大量磁盘存储特征快约9倍训练快约200倍推理存储开销需要存储每个候选框的特征向量到硬盘不需要特征在内存中即时计算精度mAP约58.5% (PASCAL VOC 2012)约66%(PASCAL VOC 2012)明显提升4、面试考点问1为什么Fast R-CNN能实现端到端训练而R-CNN不能答因为Fast R-CNN将分类器和回归器都设计为神经网络层Softmax和全连接回归并统一用反向传播优化。而R-CNN的SVM是独立的机器学习模型其损失无法回传到CNN因此无法联合训练。问2RoI Pooling与R-CNN的裁剪缩放有什么本质不同答R-CNN是在原图RGB像素上做裁剪缩放会改变图像的视觉内容而RoI Pooling是在CNN提取的深层特征图上操作它是对特征做池化不改变原图且计算发生在GPU上速度快得多。问3RoI Pooling的反向传播是怎么做的答RoI Pooling的反向传播与标准Max Pooling类似但更复杂一些。每个池化后的输出单元对应原始特征图上一个h/H × w/W的网格。反向传播时梯度只传递给该网格中最大值所在的位置。由于不同RoI可能重叠一个特征图上的位置可能被多个RoI的梯度累加。为什么RoI Pooling的反向传播是“稀疏”的理解这个稀疏性非常重要它直接影响了网络的学习能力。原因前向传播时每个输出单元只“激活”了输入特征图上的一个像素。反向传播时梯度自然也只流经这一条路径。后果这意味着只有被选为最大值的“胜利者”像素才能获得梯度并更新权重。其他大量的像素即使它们也可能包含了有用的信息也不会接收到任何反馈信号因而无法学习。这就是RoI Pooling的主要缺点之一也是后续方法如RoI Align试图改进的关键点。RoI Align通过使用双线性插值让每个输出像素结合周围多个输入像素的信息从而实现了密集的梯度回传使网络能够学习到更精细的特征。