CenterNet算法介绍(Anchor-Free,无锚点检测)
将目标检测问题转化为关键点检测问题
前言
本文为对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)”生成热力图,表示目标中心点的可能位置。
具体地,目标中心点位置的高斯热力图生成公式如下:

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

- 方差 σ 决定了高斯函数的扩散区域,即中心点热力图的“软”区域大小。与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),其损失函数定义为:

- 其中 O^k_hat 为网络预测的偏移量,Ck 是目标在原图尺度的中心点坐标,s 是特征图的步长(stride),Ck_hat 为目标在特征图尺度上的网格坐标。
- 值域范围明显为0~1,作者经验表明,相比原文使用的L1损失,使用sigmoid函数结合二元交叉熵(BCE)损失可能在训练过程中更稳定、更有效。
另一方面,CenterNet并不使用先验锚框,因此直接采用L1损失回归目标边界框尺寸:

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

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

2.3 尺寸预测(宽高回归)
- 尺寸头输出每个目标中心位置对应的宽度和高度:
- 采用L1 Loss进行监督训练:

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

- 偏移量监督仅在物体中心点周围的像素位置上进行。
2.5 整体损失函数
CenterNet整体的损失函数由三个头共同组成:

通常,权重参数lambda_size 和 lambda_offset分别取0.1和1,具体可以调节。
三、CenterNet的训练流程
- 数据预处理 数据增强(旋转、缩放、随机裁剪、颜色抖动)。 图像尺寸统一到固定大小,如512×512或1024×1024。
- 网络前向传播 特征提取(Backbone),特征上采样后经过3个独立头预测Heatmap、尺寸和Offset。
- 损失函数计算 分别计算Heatmap、尺寸和Offset的损失值,合并为整体损失。
- 梯度反向传播与权重更新 根据损失函数进行反向传播,更新网络参数。
- 推理阶段 热力图阈值化,选择局部极大值作为中心点。 根据预测宽高和偏移量确定物体的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则更适合追求更高的实时性、快速部署、平衡精度与速度的应用。