橘智橘智
FakeOrange
预计阅读时间:4分钟58秒

CenterNet算法介绍(Anchor-Free,无锚点检测)

将目标检测问题转化为关键点检测问题

0
0


前言


本文为对CenterNet无锚点检测的介绍补充,之前的相关内容戳这里~


以下是使用中文详细介绍Anchor-Free的目标检测算法CenterNet的训练方法、工作原理、所需数据类型及与YOLOv8的对比



一、CenterNet算法介绍(Anchor-Free)


1.1 算法介绍


CenterNet是典型的Anchor-Free(无需预定义锚框)目标检测算法,最早由论文《Objects as Points》中提出。该方法的核心思想:


  • 不再需要Anchor(锚框),直接预测目标的中心点位置。
  • 将目标检测问题转化为关键点检测问题,通过预测物体中心点的热力图(Heatmap)及其对应的宽高、偏移量来完成检测。


1.2 检测原理 (本段参见内容知乎)


CenterNet借鉴关键点检测与Encoder-Decoder架构及热力图的思想实现通用检测。在具体技术细节上也具有YOLO算法的影子。


1.2.1 检测中心点


在早期的YOLO版本(如YOLOv1~YOLOv4)中,都采用了“一对一匹配策略”,即一个目标框只被分配一个正样本,这个正样本通常取自目标中心点所在网格。换言之,YOLO算法实际上检测的是目标中心点的位置,以此为基础实现定位功能。因此,CenterNet中的“中心点检测”原理和YOLO是有着异曲同工之妙的。

然而,两者的叙述角度有所不同:


  • YOLO 从网格(grid)匹配的角度切入。
  • CenterNet 则从关键点(keypoint detection)领域的思路出发,将目标的中心视为需要检测的关键点,并利用关键点领域常用的“高斯核函数(Gaussian Kernel)”生成热力图,表示目标中心点的可能位置。


具体地,目标中心点位置的高斯热力图生成公式如下:


data/78df2c1f-e442-415d-a382-fa7925af0c4b/94982caf-0b31-489e-9137-4659a905003b/0d2cimage.png


  • 其中均值 (x~,y~) 为中心点对应的特征图网格坐标,CenterNet和YOLO一样,都对原图尺度的中心点坐标做降采样处理,获得在特征图尺度下的网格坐标:


data/78df2c1f-e442-415d-a382-fa7925af0c4b/94982caf-0b31-489e-9137-4659a905003b/2616image.png


  • 方差 σ 决定了高斯函数的扩散区域,即中心点热力图的“软”区域大小。与YOLO的“硬阈值”不同(YOLO中目标中心网格置信度为1,其余均为0),CenterNet通过高斯分布赋予目标中心点附近区域以平滑的置信度值(介于0到1之间的连续值)。CenterNet论文虽未详细阐述此参数,但从实际代码中我们发现,其与CornerNet算法一致,属于关键点检测领域的常用操作。
  • 推理(inference)阶段,CenterNet仅需从预测出的热力图中选取局部峰值作为目标中心。具体实现方式为:使用一个 3×33\times33×3 大小的最大池化层(max pooling)筛选峰值点,实质上类似于一种简易版的非极大值抑制(NMS)。因此,CenterNet论文中所声称的“NMS-free”理念并不完全准确,实际上只是未采用传统的IoU-based NMS方法。
  • 由于输出热力图的通道数等于类别数,因此CenterNet逐个通道筛选峰值点(每个类别独立),该操作易于在现代深度学习框架中并行化执行。完成所有通道峰值筛选后,即可获得所有类别的检测目标。


1.1.2 学习偏差(offset)和边界框尺寸(size)


类似于YOLO,CenterNet的预测和回归任务都在特征图尺度上进行,这本质上依旧是基于网格(grid-based)的思想。因此,实际目标中心点与网格中心之间存在一定偏差,需要额外学习这一偏差(offset),其损失函数定义为:


data/78df2c1f-e442-415d-a382-fa7925af0c4b/94982caf-0b31-489e-9137-4659a905003b/dd9eimage.png


  • 其中 O^k_hat 为网络预测的偏移量,Ck 是目标在原图尺度的中心点坐标,s 是特征图的步长(stride),Ck_hat​ 为目标在特征图尺度上的网格坐标。
  • 值域范围明显为0~1,作者经验表明,相比原文使用的L1损失,使用sigmoid函数结合二元交叉熵(BCE)损失可能在训练过程中更稳定、更有效。


另一方面,CenterNet并不使用先验锚框,因此直接采用L1损失回归目标边界框尺寸:


data/78df2c1f-e442-415d-a382-fa7925af0c4b/94982caf-0b31-489e-9137-4659a905003b/d1d0image.png


  • S^k_hat 为网络预测尺寸,Sk 为真实尺寸。
  • 当前主流研究已逐渐采用更先进的IoU系列损失函数(如GIoU、CIoU)取代L1,以提升边界框预测性能。

综上所述,CenterNet将边界框回归拆分成了“中心点偏差”和“边界框尺寸”两个独立任务,体现了其设计的模块化特征和易于优化的优势。


1.1.3 NMS-free思想


CenterNet的一个重要贡献即为推理时无需传统目标检测框架常用的基于IoU的NMS操作来剔除冗余框。

具体实现方式为:


  • 通过在输出热力图上应用 3×3(或5×5)的max pooling筛选局部峰值点:


pythonCopyEdit# 简单版NMS-free
hmax = F.max_pool2d(cls_pred, kernel_size=3, padding=1, stride=1)
keep = (hmax == cls_pred).float()
cls_pred *= keep


  • 然而实践中发现,对于尺寸较大的目标,仅使用这种简单的峰值筛选策略,依旧可能产生冗余检测框。因此,有些场景下(尤其大物体较多的数据集),仍然建议额外使用传统NMS进行后处理,以提升检测精度和结果质量。


总的来说,CenterNet并非完全无需NMS,而是通过热力图峰值抑制的方式替代了传统的基于IoU的NMS操作,但这一方式在某些情形下可能不完全有效,因此需根据实际数据场景决定是否添加额外NMS。


二、CenterNet的工作原理


2.1 网络结构


CenterNet网络架构通常采用全卷积网络结构(如Hourglass、DLA或ResNet为主干网络):


  • 主干网络(Backbone):提取特征,例如ResNet-18、ResNet-50或Hourglass等。
  • 上采样层(Up-sampling):将深层特征图放大,生成高分辨率特征图以检测小物体。
  • 输出头(Detection heads):通常分为3个独立分支: 中心点热力图预测(Heatmap):预测每个类别的中心点位置。 尺寸预测(Size):预测物体宽高。 位置偏移预测(Offset):预测中心点在输出特征图上的偏移量,以提升定位精度。


最终合并三种预测结果,输出目标物体的边界框(Bounding Box)及类别。


2.2 中心点热力图(Heatmap)预测


  • CenterNet将每个物体视为特征图上的一个单独的关键点。
  • 热力图中每个像素值代表该位置为物体中心的可能性,通常用二维高斯分布对真实中心点进行建模:


data/78df2c1f-e442-415d-a382-fa7925af0c4b/94982caf-0b31-489e-9137-4659a905003b/39a6image.png


  • 训练时采用Focal Loss损失函数来处理类别不平衡问题:


data/78df2c1f-e442-415d-a382-fa7925af0c4b/94982caf-0b31-489e-9137-4659a905003b/5dccimage.png


2.3 尺寸预测(宽高回归)


  • 尺寸头输出每个目标中心位置对应的宽度和高度:
    • 采用L1 Loss进行监督训练:


data/78df2c1f-e442-415d-a382-fa7925af0c4b/94982caf-0b31-489e-9137-4659a905003b/f1f4image.png


  • Sk_hat 表示预测的宽高,Sk表示真实的宽高。


2.4 偏移量预测(Offset)


  • 由于特征图尺寸比原图小,物体中心点的真实位置通常无法完美落在特征图的整数网格上,因此需要预测中心点的微小偏移量。
  • 通常使用L1 Loss监督:


data/78df2c1f-e442-415d-a382-fa7925af0c4b/94982caf-0b31-489e-9137-4659a905003b/5f4dimage.png


  • 偏移量监督仅在物体中心点周围的像素位置上进行。


2.5 整体损失函数


CenterNet整体的损失函数由三个头共同组成:


data/78df2c1f-e442-415d-a382-fa7925af0c4b/94982caf-0b31-489e-9137-4659a905003b/8444image.png


通常,权重参数lambda_size 和 lambda_offset分别取0.1和1,具体可以调节。


三、CenterNet的训练流程


  1. 数据预处理 数据增强(旋转、缩放、随机裁剪、颜色抖动)。 图像尺寸统一到固定大小,如512×512或1024×1024。
  2. 网络前向传播 特征提取(Backbone),特征上采样后经过3个独立头预测Heatmap、尺寸和Offset。
  3. 损失函数计算 分别计算Heatmap、尺寸和Offset的损失值,合并为整体损失。
  4. 梯度反向传播与权重更新 根据损失函数进行反向传播,更新网络参数。
  5. 推理阶段 热力图阈值化,选择局部极大值作为中心点。 根据预测宽高和偏移量确定物体的Bounding Box。


四、训练所需的数据


训练CenterNet所需的数据与一般目标检测数据集相同:

  • 图像:JPEG、PNG等图像格式。
  • 标签:每个物体的类别与边界框标注(Bounding box标注方式:COCO、Pascal VOC等格式均可)。


常用数据集如:


  • COCO
  • Pascal VOC
  • 自定义标注的数据集(需提供类别名及边界框坐标)。


五、CenterNet与YOLOv8对比


特性CenterNet (Anchor-Free)YOLOv8 (Anchor-Free & Anchor-based Hybrid)
网络结构热力图+尺寸+偏移预测分类、目标框回归、多任务头
检测速度中等,依赖backbone较快,经过多代优化
精度表现在COCO数据集表现良好最新版本YOLOv8略优于CenterNet
定位方式热力图中心点定位直接回归框坐标
模型复杂度中等中低
训练稳定性稳定性较好,但对超参数敏感非常稳定,对超参数鲁棒性更好
小目标检测能力适合,热力图能较好地体现小目标位置一般,更依赖特征金字塔结构(FPN)
部署难易度较易部署,纯卷积网络结构更易部署,官方提供了轻量级实现方案

总体而言:

  • CenterNet更强调将检测问题转为关键点检测问题,在训练过程中需要精细调参;
  • YOLOv8经过多次迭代和优化,在速度、准确性和易用性上表现更优,是当前目标检测的主流选择。


六、小结


CenterNet是Anchor-Free的典型代表,将目标检测问题转换成关键点热力图预测问题,适合中小目标检测和细节定位场景。相比之下,YOLOv8更加成熟,速度快,易于部署。

实际应用中,可以根据数据集特点和具体场景来选择适合的模型:

  • CenterNet更适合对精确度要求较高、对小物体检测效果更敏感的任务;
  • YOLOv8则更适合追求更高的实时性、快速部署、平衡精度与速度的应用。
评论