Task: Object Detection
Method: anchor-free, keypoint
Venue: CVPR
Year: 2019
Paper: https://arxiv.org/abs/1904.07850
Code: https://github.com/xingyizhou/CenterNet
问题描述
目标检测的发展中,两大主流方案各有局限:
两阶段方法(Faster R-CNN、Mask R-CNN):
- 穷举大量潜在物体位置
- 对每个候选框重新计算图像特征
- 需要额外后处理(NMS),难以端到端训练
- 低效且复杂
单阶段方法(SSD、YOLO、RetinaNet):
- 设计复杂的 anchor 排列,在图像上滑动
- 需要人工设计 anchor 尺度和比例
- 正负样本极度不平衡(大量背景anchor)
- 仍然需要 NMS 后处理(不可微分)
- 无法端到端训练
核心痛点:通过 bounding box 将目标检测”降维”为分类任务,但这种”降维”引入了额外的设计复杂度和冗余计算。
核心思想
将目标检测彻底重新定义为 关键点检测问题:
$$\text{Object Detection} = \text{Center Point Detection} + \text{Size Regression}$$
不再枚举候选框,而是直接预测物体中心点的位置,用单个点表示目标。中心点处的 heatmap 峰值对应物体位置,中心点特征预测物体宽高。
方法概述
基本流程:输入图像 → Backbone(stride=4)→ 3 个预测头 → 峰值检测 → 目标框
三个预测头:
| 预测头 | 输出尺寸 | 功能 |
|---|---|---|
| Heatmap | $H/4 \times W/4 \times C$ | 检测目标中心点(每类一通道) |
| Size | $H/4 \times W/4 \times 2$ | 预测宽高 |
| Offset | $H/4 \times W/4 \times 2$ | 修正量化误差(±0.5像素) |
关键设计:
- Size/Offset 跨类别共享参数(减少参数量)
- Heatmap 用高斯核标注:$Y_{xyc} = \exp\left(-\frac{(x-c_x)^2 + (y-c_y)^2}{2\sigma^2}\right)$,多物体重叠取最大值
- Offset 补偿 stride=4 引入的 0-3 像素偏差,提升 1.2% AP
网络结构
输入图像 |
损失函数:
$$L = L_{heatmap} + 0.1 L_{size} + L_{offset}$$
其中 heatmap 使用 focal loss,size 和 offset 使用 L1 loss。
创新点
- Object = Point:用单个中心点表示目标,消除 anchor、proposal、NMS
- 为什么中心点最优:相比 CornerNet(需匹配角点)和 ExtremeNet(需匹配 5 个点),中心点检测无需匹配过程,且在 keypoint-based 方案中性能最高(45.1% vs 40.5%/40.2%)
- 完全 Anchor-free:无先验设计,无样本不平衡问题
- 参数共享:Size/Offset 跨类别共享,减少参数和计算量
- 高斯软监督:Heatmap 用高斯核而非硬标签,对噪声更鲁棒
实验结论
Datasets: MS COCO, KITTI (3D), nuScenes
实验结果:
- MS COCO: CenterNet (Hourglass-104) 达到 45.1% AP(2019 年当时的最高精度之一)
- 速度: ResNet-18 backbone 可达 142 FPS,DLA-34 达到 52 FPS
- 多任务: 可同时完成检测、3D检测、姿态估计
消融研究:
- Offset head 对精度有明显提升(+1.2 AP)
- Heatmap Gaussian kernel 的 sigma 对性能影响较大
性能瓶颈分析:
CenterNet 的性能瓶颈几乎 100% 来自中心点检测部分。一旦中心点、尺寸、offset 都替换为 GT,检测任务几乎是”零难度”的,这说明 Size 和 offset 预测已经足够准确,提升空间在于改进 heatmap 预测。
局限性与失效场景
中心点碰撞问题:当两个不同的物体中心点完全重合时,CenterNet 无法同时检测两者。在 COCO 数据集上这种失效场景仅占 ~0.1%,远低于 Faster R-CNN (~2%) 和 Anchor-based 方法 (~20%) 的失效率。
其他限制:
- 密集/遮挡目标:多个紧密相邻的物体容易混淆,高度遮挡时性能下降明显
- 极端尺度目标:极小目标(<50px)需要高分辨率输入,极端长宽比的边界框预测不准确
- 3D 检测困难:深度和方向估计难以直接回归,需要特殊的数学变换处理
复杂度分析
参数量(以 COCO 80 类为例):
- ResNet-18: ~13.6M 参数,~12 GFLOPs
- DLA-34: ~15.3M 参数,~14 GFLOPs
- Hourglass-104: ~50M 参数,~40 GFLOPs
内存占用:
- 训练(batch=16):6GB(ResNet-18),12GB(Hourglass)
- 推理:<1GB(单张图片)
工程应用与多任务扩展
效率对比(COCO 数据集):
| 方法 | AP | FPS | 参数量 | 后处理 |
|---|---|---|---|---|
| Faster R-CNN | 36.5 | 5 | 137M | 两阶段,需要NMS |
| RetinaNet | 40.8 | 15 | 88M | 一阶段,需要NMS |
| CenterNet-Res18 | 28.1 | 142 | 13.6M | 无需NMS |
| CenterNet-DLA34 | 37.4 | 52 | 15.3M | 无需NMS |
| CenterNet-Hourglass | 45.1 | 7.8 | 50M | 无需NMS |
3D 目标检测扩展:
CenterNet 可直接扩展到 3D 检测。新增预测头:深度估计(使用变换 $d = \frac{1}{\sigma(\hat{d})} - 1$ 强制正值)、3D 尺寸 $(h, w, l)$、方向/旋转(使用 sin/cos 对处理周期性)。注意 3D 检测分支不应用数据增强以保持度量真实性。
多人姿态估计扩展:
在 2D 检测基础上为每个人体边界框回归 17 个关键点(关节),性能与主流方法相当。
工业部署:
支持 TensorRT/ONNX 格式转换,添加新任务只需增加预测头。应用场景包括监控系统、机器人感知、自动驾驶感知模块、移动端检测。
相关工作与对比
Keypoint-based 检测方法对比:
| 方法 | 关键点数 | 匹配复杂度 | 精度 | 速度 |
|---|---|---|---|---|
| CornerNet | 2(左上/右下角) | 需要配对,组合爆炸 | 40.5% AP | 中等 |
| ExtremeNet | 5(上下左右+中心) | 需要组合 5 点 | 40.2% AP | 中等 |
| CenterNet | 1(中心点) | 无需匹配 | 45.1% AP | 快速 |
为何中心点方案性能最优:
相比角点和极值点,中心点具有两个根本优势:
- 空间位置稳定:中心点相对物体的几何位置最稳定,在物体旋转、形变时变化最小
- 无组合问题:单个点直接代表物体,避免了多点配对的组合爆炸和匹配错误
其他结构优势:
- 只需 3 个预测头(heatmap、size、offset),参数和计算量少
- 推理无需后处理匹配,直接峰值即目标
Anchor-free 方法的发展脉络:
2018-2019 年间,目标检测开始探索 anchor-free 范式,出现了多条并行路线:
目标检测方法演进 |
CenterNet 采用了 keypoint-based 中最简化的表示(单点),在该方向上达到了最高的精度(45.1% AP)。同期 FCOS 代表了 dense-based 方案,两者共同标志了 anchor-free 时代的开始。
与 Anchor-based 方法的核心差异:
传统 Anchor-based 方法的设计逻辑:
- 预定义多个 anchor 框(尺度、宽高比)
- 对每个 anchor 分类(是否含物体)和回归(框偏移)
- 后处理 NMS 去重
- 问题:anchor 设计复杂,样本不平衡严重,NMS 不可微
CenterNet 的设计逻辑:
- 直接预测物体中心位置(heatmap 峰值)
- 在中心点处回归尺寸和偏移
- 无需 NMS(本质上解决了样本不平衡问题)
- 优势:设计简洁,端到端可训练,性能反而更优
研究启示
问题重新定义的力量:CenterNet 通过中心点重新定义检测任务,消除了复杂度反而提升了性能。启示:有时”简化问题定义”比”增加网络复杂度”更有效
软监督信号的优势:Heatmap 中高斯核软标签对标注噪声更鲁棒,隐含编码物体尺寸信息
精细的参数共享策略:Size/Offset 跨类别共享,不增加参数但保持精度
深入的性能分析:错误分析表明系统 100% 的失误来自中心点检测。启示:找到”木桶短板”,精准突破比盲目改进更重要
范式转变的历史意义:CenterNet 证明了完全无先验的方法可以超越 anchor-based,之后 FCOS、YOLOX 等相继出现,anchor-free 成为新主流
复现注意事项
Backbone 初始化:下采样层用 ImageNet 预训练,上采样层随机初始化。原因是下采样层学到”语义”特征(ImageNet 教过),上采样层需要学”几何/定位”(ImageNet 没教过)。
Heatmap 生成:高斯标准差 sigma 通常设为 2,范围 1-3 最优。必须可视化 GT heatmap,验证后再开始训练。
Loss 权重配置:heatmap 权重 = 1.0,size 权重 = 0.1,offset 权重 = 1.0。Heatmap 使用 focal loss 处理类别不平衡。
峰值检测:采用 3×3 max pooling 找局部最大值,只保留值 > 阈值的峰值,最多保留 100 个。
训练配置:Batch size 设为 29,学习率多步衰减(epoch 90, 120)。输入分辨率从 256×256 增加到 512×512 可提升约 8% AP。
3D 检测分支:3D 检测分支不应用数据增强(裁剪/缩放会改变 3D 度量的真实性),而 2D 检测分支仍正常使用数据增强。
推理策略:翻转测试时平均网络输出后再解码(不是平均最后的 bbox),多尺度测试用 NMS 合并不同尺度的结果。
改进与优化方向
精度提升方向:
- 多尺度融合:参考 FPN 设计,在多个尺度同时预测中心点,预期提升 +1~2% AP
- Attention 增强:使用 CBAM 或 Self-Attention 强化关键特征表达,预期提升 +0.5~1.5% AP
- Deformable 卷积:增强对复杂形状和遮挡的适应性,预期提升 +0.5~1% AP
- 动态 Gaussian:根据物体尺寸动态调整 heatmap 的 sigma,预期提升 +0.3~0.8% AP
轻量化方向(速度优化):
- 去除 Offset 头:牺牲 -1.5% AP,换取 +10% FPS,适合极致速度优先的场景
- 轻量 Backbone:换用 MobileNet/EfficientNet-Lite 等轻量网络,精度损失 -5~10% AP,速度提升 2-3 倍,适合移动端/边缘设备
- 单尺度训练:固定输入分辨率,简化数据处理流程,精度损失 -1~2% AP,适合特定尺度物体的检测任务
针对特定场景的优化:
由于 CenterNet 的性能瓶颈在于中心点检测,可针对特定应用优化:
- 行人检测:人体长宽比固定(0.4~0.5),可调整 heatmap sigma 以适应固定的几何约束
- 车辆检测:车辆长宽比差异大,多尺度特征融合效果显著
- 密集场景(如人群):中心点碰撞问题突出,可考虑偏移中心点定义或融合分割辅助信息
论文贡献与影响
技术贡献:
- 证明了用单一关键点(中心点)可以高效表示目标
- 消除了 anchor、proposal、NMS 等复杂模块,反而提升性能
- 支持多任务扩展(2D 检测、3D 检测、姿态估计)共用同一 backbone
性能指标(COCO 数据集):ResNet-18(28.1% AP, 142 FPS)、DLA-34(37.4% AP, 52 FPS)、Hourglass-104(45.1% AP, 7.8 FPS),精度范围覆盖轻量化到最优,适用不同应用需求。
影响力:
- 官方代码开源,已被 MMDetection 等主流框架集成
- 工业应用广泛:监控、自动驾驶、机器人等领域
- 开启 anchor-free 检测新方向(2019 年同期 FCOS 并行发布)
- 在 anchor-based 到 anchor-free 的范式转变中扮演关键角色