【模型架构】目标检测中的单阶段、两阶段、Anchor-Free和Anchor-based,以Faster-RCNN、YOLO、CornerNet、CenterNet为例

一、前言

目标检测算法中,可以按照单阶段(One-Stage)和两阶段(Two-Stage)进行划分,也可以按照Anchor-Free和Anchor-based进行划分类型。不过,目前更流行的提法是后者。

本文出现的论文的相关信息:

(1)Faster-RCNN

论文链接:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

代码链接:GitHub - yingxingde/FasterRCNN-pytorch: FasterRCNN is implemented in VGG, ResNet and FPN base.

(2)YOLOv1

论文链接:You Only Look Once: Unified, Real-Time Object Detection

代码链接:GitHub - yjh0410/new-YOLOv1_PyTorch

(3)CornerNet

论文链接:CornerNet: Detecting Objects as Paired Keypoints

代码链接:GitHub - princeton-vl/CornerNet

(4)CenterNet

论文链接:Objects as Points

代码链接:GitHub - xingyizhou/CenterNet: Object detection, 3D detection, and pose estimation using center point detection:

二、单、双阶段的目标检测算法

2.1 双阶段检测

双阶段目标检测算法是一种较早的目标检测框架,它分为两个主要阶段:候选区域提议生成(Proposal Generation)和候选区域分类及边界框回归(Proposal Classification)。

(1)提议生成阶段: 在这一阶段,算法首先在输入图像中生成一系列候选区域(region proposals),这些候选区域可能包含某些对象。这一步骤通常利用区域建议网络(Region Proposal Network, RPN)来完成,如在Faster R-CNN中的应用。

(2)提议分类阶段: 在第二阶段,算法对第一阶段生成的每个候选区域进行更精确的边界框回归和对象类别预测。

代表算法:RCNN、Faster RCNN

为什么要Anchor?

这是因为之前的目标检测都是模型直接回归边框的位置,而通过引入Anchor相当于加入了强先验信息,然后通过锚框再去筛选与修正,最后再得到预测框。这样做的好处在与是在Anchor的基础上做物体检测,这样要比从无到有的直接拟合物体的边框容易一些。让模型去预测Anchor与真实边框的偏移值,而不是直接预测边框的坐标。

以Faster RCNN为例说明检测过程:

Faster RCNN网络结构图

(1)特征提取:输入图像通过预训练的深度卷积神经网络(如VGG、ResNet等)作为基础网络,进行前向传播,得到特征图。这些特征图包含了图像的语义信息和空间信息。这部分对应上图conv layers。

(2)锚框生成:在特征图上,RPN使用滑动窗口(就是一个3x3的卷积,padding是1,stride=1)的方式生成一组候选框,称为锚框(anchors)。这些锚框通常覆盖了图像的各个位置和尺度,每个锚框对应着多个尺度和宽高比的候选区域。

图源自B站霹雳吧啦Wz,1.1Faster RCNN理论合集

  • 特征图的每个位置,都可以找到对应原图上的一个像素点,以该像素点为中心,画出9个不同大小和长宽比(人为经验得到,这里的9就是上图中的k,三种尺度:128x128、256x256、512x512,也就是产生在原图上的框的面积,三种比例1:1、1:2、2:1)的框,称为anchor 。这些anchor里面可能存在目标,也可能没有目标。

  • 对于每个锚框,RPN预测两个值:1)锚框中包含目标的概率(前景概率,是与不是);2)调整锚框位置以更好地匹配目标的边界框(4个,中心点xy和框的高宽)。

  • 这里作者提出了一个观点,VGG的感受野是228,但是从特征图到框的尺度却有256和512,这是来源于生活的经验,人类只需要看到一个物体的部分,也是可以检测出这个物体的(窥一斑而知全豹)。

这里的60x40就是特征图的大小(大概16倍下采样,stride=2的卷积提取4次即可),所以滑动窗口是一步步输出的

对于滑动窗口生成大约6k个的anchor,由RPN去预测2类值,概率和边界框回归参数,这样就从anchor变成了proposal(对anchor的第一个回归得到的候选框结果)。

为了便于理解,附上RPN的代码:

class RPN(nn.Module)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值