Faster RCNN核心思想理解-尺度变换梳理
Faster RCNN 是目标检测领域里程碑式的算法,其融合了"Region Proposal","Anchor Based"等早期目标检测的重要思想,并且在开放世界目标检测中又重新获得应用。本文将以分析Faster RCNN为主线,探讨目标检测涉及到的设计思路和理论基础。
参考链接:
RCNN 到 Faster RCNN:https://blog.csdn.net/qq_43799400/article/details/123127851
两阶段检测器的思想
最早的图像处理任务是“图像分类”,即将完整的一副图像送入神经网络完成类别判断。这仅涉及到输入图像级别的缩放,同时图像内部也应只包含一个目标。
从“图像分类”任务过渡到“目标检测”任务后,不仅需要完成“分类”,还需要完成“定位”任务,而如何确定“多个”目标的“位置”和“尺度”成为需要解决的难题。
一种自然的思想是,在原始图像上进行裁剪,生成不同尺度、不同位置的多副图像,然后分别使用原有的图像分类模型进行分类,这样就将目标检测任务转换成了图像分类任务。这就是 RCNN 的做法。
RCNN:
- 采用 Selective Search 算法在图像上生成多个候选区域(region proposal),设为2000;
- 分别将这些候选区域送入CNN网络获得embedding,维度设为 [2000,4096];
- 采用 N+1 个SVM分类器进行分类;
- 对 region proposal 进行回归修正。
Fast RCNN则先生成特征图,再根据 ROI projection 去映射,省去了大量的冗余前向推理。同时将最后两步采用神经网络完成。
Fast RCNN:
- 采用 Selective Search 算法在图像上生成多个候选区域(region proposal),设为2000;
 图像通过 CNN 获得特征图;通过 ROI projection 将 proposal 映射到特征图上,获取对应区域的特征,设为[2000,W,H,4096]。
- ROI Pooling,将特征同一池化为 [7,7]尺度,则得到[2000,7,7,4096];
- 分类头,通过 MLP 进行分类 [2000,7x7x4096]→[2000,N+1]
 回归头,[2000,4]
Faster RCNN

1.Generalized RCNN Normalization
- 对输入图像进行 normalization
- resize 打包成 batch
- 并且记录下图像的原始尺寸(需要将proposal 映射到原图像上,因此需要保存原图像的尺寸)
2.Backbone
- 经过 CNN 提取特征,设尺度变换为:\([3,W,H]\rightarrow[4096,W^\prime=W/32,H^\prime=H/32]\)
3.RPN网络
Region Proposal Network从特征图上学习生成 proposal。RPN网络其实就是一个小的、类别无关的目标检测器,其需要基于 anchor确定目标的位置,同时完成前景/背景的分类。这个特性可以被用于开放世界目标检测。

1)anchors generator
- 
anchor 其实就是认为设置的 proposal 的尺度,是在原图尺寸上的。有 [32,64,128,256,512]的尺度和[0.5,1,2]比例,共\(5\times3=15\)种 anchor。
- 
对每个尺度特征图(如果FPN网络则有5层)上的每个像素点,反向映射到原图上,然后计算 anchor 坐标。如某一层的尺度为\([W^\prime,H^\prime]\),则该层特征图上共有\(W^\prime\times H^\prime\times15=32\times64\times15=30720\)个 注意,不管在哪层特征图上,生成的 anchor 都是原图像上的尺寸。 
2)RPN Head
采用两个 MLP ,对每个像素点进行分类和box回归。k 是anchor的个数。
- 分类头:\([4096,W^\prime,H^\prime]\rightarrow[4096,W^\prime\times H^\prime]\rightarrow[W^\prime\times H^\prime,k\times1]\)
- 回归头:\([4096,W^\prime,H^\prime]\rightarrow[4096,W^\prime\times H^\prime]\rightarrow[W^\prime\times H^\prime,k\times 4]\)
Box 的回归预测的是基于 anchor 尺度上的偏移量,分别基于 \(k\) 个 anchor 分别预测偏移量,因此,anchors 的作用就是作为先验,加速网络的收敛。
3)生成 proposal
根据预测的 anchor 和 GT 逐一进行 IoU匹配,执行采样策略。
- 计算每个 anchor 匹配的 GT(成功,失败,丢弃)
- 为筛选出的 anchor 计算 box regression 参数(计算 smoothl1 loss 用)
- 正负样本均衡,设置 batch_size(如256) ,根据正负比例(如0.5),采样匹配失败的anchor作为负样本
4)计算 RPN Loss
- 分类损失:由于只用预测前景/背景,因此可以只用一个节点输出,接 sigmoid,计算二值交叉熵损失;
- 回归损失:对每个 anchor 对应的 GT,计算 smoothl1 损失。
RPN 网络的输出
生成原图尺度的 proposal \([2000,4]\)
4.ROI网络
ROI网络与 Fast RCNN 完全相同,因为Faster RCNN 只是使用 RPN 替代了 Selective Search。ROI 同样采用 ROI Pooling 池化到统一尺度,然后进行分类和回归(第二次对box的回归)。

5.后处理
NMS 极大值抑制,映射回原始图像。

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号