Faster RCNN核心思想理解-尺度变换梳理

Faster RCNN 是目标检测领域里程碑式的算法,其融合了"Region Proposal","Anchor Based"等早期目标检测的重要思想,并且在开放世界目标检测中又重新获得应用。本文将以分析Faster RCNN为主线,探讨目标检测涉及到的设计思路和理论基础。

参考链接:

RCNN 到 Faster RCNN:https://blog.csdn.net/qq_43799400/article/details/123127851

两阶段检测器的思想

最早的图像处理任务是“图像分类”,即将完整的一副图像送入神经网络完成类别判断。这仅涉及到输入图像级别的缩放,同时图像内部也应只包含一个目标。

从“图像分类”任务过渡到“目标检测”任务后,不仅需要完成“分类”,还需要完成“定位”任务,而如何确定“多个”目标的“位置”和“尺度”成为需要解决的难题。

一种自然的思想是,在原始图像上进行裁剪,生成不同尺度、不同位置的多副图像,然后分别使用原有的图像分类模型进行分类,这样就将目标检测任务转换成了图像分类任务。这就是 RCNN 的做法。
RCNN:

  1. 采用 Selective Search 算法在图像上生成多个候选区域(region proposal),设为2000;
  2. 分别将这些候选区域送入CNN网络获得embedding,维度设为 [2000,4096]
  3. 采用 N+1 个SVM分类器进行分类;
  4. 对 region proposal 进行回归修正。

Fast RCNN则先生成特征图,再根据 ROI projection 去映射,省去了大量的冗余前向推理。同时将最后两步采用神经网络完成。
Fast RCNN:

  1. 采用 Selective Search 算法在图像上生成多个候选区域(region proposal),设为2000;
    图像通过 CNN 获得特征图;通过 ROI projection 将 proposal 映射到特征图上,获取对应区域的特征,设为[2000,W,H,4096]
  2. ROI Pooling,将特征同一池化为 [7,7] 尺度,则得到 [2000,7,7,4096]
  3. 分类头,通过 MLP 进行分类 [2000,7x7x4096][2000,N+1]
    回归头,[2000,4]

Faster RCNN

image

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确定目标的位置,同时完成前景/背景的分类。这个特性可以被用于开放世界目标检测。

image

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的回归)。
image

5.后处理

NMS 极大值抑制,映射回原始图像。
image

posted @ 2025-01-04 20:53  kuaik  阅读(78)  评论(0)    收藏  举报