当激光雷达扫过一辆车,最该被记住的不是它有多长多宽,而是它在哪儿。
✦ ✦ ✦
为什么需要再换一种检测思路
在自动驾驶的世界里,激光雷达每秒会向周围抛出上百万个点。这些点汇成一片「点云」,构成车辆、行人、路面、树木的三维骨架。从这片骨架里,把车辆、行人准确「认」出来——这就是 3D 目标检测 要解决的事。
很长一段时间,主流做法是 Anchor-Based(基于锚框)。简而言之,提前在场景里撒一堆预设尺寸的"候选框",让神经网络去逐个判断:这个框里到底是车还是空地?框的位置和真实目标差多远?
这招在 2D 图像上很成功。但搬到 3D 点云里,麻烦立刻浮现——
1三维世界的物体朝向任意。一辆车可能正面朝你、也可能侧面朝你、甚至斜着停。预设锚框要么得穷举所有朝向(数量爆炸),要么只能用对齐的矩形框(贴合不准)。2正负样本严重不均衡。一帧点云里几万个框,真正盖到物体的可能就几十个,剩下的全是"背景"。模型很容易学着学着就被背景带偏。3超参数巨多。每种物体、每个数据集都要人工设计一套锚框尺寸和朝向,调起来又累又玄学。2020 年,UT Austin 的 Tianwei Yin、Xingyi Zhou、Philipp Krähenbühl 三人在论文《Center-based 3D Object Detection and Tracking》里提出了一个干脆利落的替代方案——
这就是 CenterPoint,后来发表在 CVPR 2021,一度是 nuScenes 和 Waymo 两大基准上的 SOTA。
✦ ✦ ✦
一句话核心思想:万物皆可"盯中心"
CenterPoint 的英文名已经把它的灵魂暴露无遗——Center Point。它的关键洞察是:
任何一辆车、一个行人、一辆自行车,在鸟瞰图(BEV,从上往下看)下,都对应一个唯一的中心点。
把这个中心点找出来,物体的"在哪儿"就解决了。至于"多大、朝哪、跑多快",都可以从中心点附近的特征回归出来。
这一思路并非凭空而来,它借鉴自 2D 检测领域的前作 CenterNet(注意是 2D 的那个,不是 3D 的)。CenterNet 已经证明:在图像里,把目标检测当成"关键点检测"问题,是行得通的。CenterPoint 干的就是把这套哲学搬进 3D 点云世界,并且针对点云的特殊性做了一系列改造。
✦ ✦ ✦
第一阶段:先找点,再补属性
CenterPoint 的整个流程分两阶段。先说第一阶段。
Step 1:把点云变成"鸟瞰图"
激光雷达给出的原始数据,是一团散乱的三维点。直接处理很难,于是先用一个 3D 骨干网络(VoxelNet、PointPillars 都行)把它"压缩"成二维。具体方式是:把空间切成小格子(体素 Voxel)或柱子(Pillar),对每个单元里的点做特征提取,最后沿高度方向拍扁,得到一张从上往下看的 BEV 特征图。
这一步相当于把一团 3D 点云,变成了一张"上帝视角的卫星图"。
Step 2:用关键点检测器找中心
有了 BEV 特征图,接下来就要在上面找物体的中心点。这里用一个标准的 2D CNN(比如 CenterNet 的检测头)做 heatmap(热力图)预测——网络对每个像素位置输出一个分数,表示"这里是不是某个物体的中心"。
为什么不直接用 anchor 检测?因为 anchor 本质上是在空间里预定义一组长方形;而关键点检测直接在 heatmap 上找峰值,哪个位置出现高响应,哪里就是物体的中心。整套流程完全没有预设框,Anchor-Free。
Step 3:从中心点回归出全部属性
找到中心点只是开始。接下来,网络从中心点对应的特征向量,回归出物体的其余属性:
●3D 偏移(中心点在 BEV 上的小幅修正,帮助对齐)至此,一个完整的 3D 边界框就生成了:位置(中心点)+ 尺寸 + 朝向,框出物体在三维空间里的精确形态。
用一句话概括第一阶段:别画框,找点;找到点,属性全有。
✦ ✦ ✦
第二阶段:把"点"抠出来再精修一遍
第一阶段已经能输出像样的 3D 框了。但作者认为还有提升空间,于是加了第二阶段。
第二阶段的逻辑非常巧妙——把预测出来的 3D 边界框的顶点,当作额外的"关键点",再去原图特征里抠一遍。
具体来说:根据第一阶段预测的 3D 框,可以算出它在 BEV 上的 4 个角点(顶视图看是矩形)。把这 4 个顶点 + 1 个中心点,共 5 个位置,从骨干网络输出的 BEV 特征图里双线性插值抠出对应的特征向量;把这些特征送进一个轻量级 MLP,再做一次残差回归——预测尺寸、朝向、速度的微调量,叠加到第一阶段的结果上。
为什么这么有效?因为 3D 物体的角点本身包含极强的几何信息:一辆斜着停的车,它的 4 个顶点位置直接编码了它的朝向和尺寸。把这些关键点的特征单独喂给网络,相当于给模型一次"重新审视边界"的机会。尤其在远距离、小目标、遮挡场景下,第二阶段带来的精度增益非常明显。
至此,整个 CenterPoint 流程走完:点云 → BEV 特征 → 中心点 heatmap → 第一阶段 3D 框 → 第二阶段精修 3D 框。
✦ ✦ ✦
意外彩蛋:跟踪白送一个
CenterPoint 还有个"顺带手"的能力——3D 多目标跟踪,几乎不花额外成本。
因为它的预测里天然包含速度。既然知道每个物体在 BEV 上往哪个方向跑,那么相邻两帧的同一辆车的轨迹,就是简单的物理外推:上一帧位置 + 速度 × 时间 ≈ 这一帧位置。
于是 CenterPoint 的跟踪策略简洁到离谱:
2对当前帧的检测结果,做贪心最近邻匹配——和哪个预测位置最近,就是同一辆车;3匹配上就续接轨迹,没匹配上的开新轨迹,长期没匹配上的删除。整个跟踪流程不需要额外的 Re-ID 网络,不需要复杂的关联算法,更不需要后处理优化。这一节在论文里只占很小篇幅,但把 3D tracking 这个本来挺复杂的问题,简化成了中学几何题。
✦ ✦ ✦
战绩说话:双榜 SOTA
光说思路不够,还得看战绩。论文里给出的关键数字:
在 nuScenes 数据集(自动驾驶主流基准之一)上——
🎯 核心指标
3D 检测:65.5 NDS(nuScenes Detection Score,综合指标),单模型 SOTA3D 跟踪:63.8 AMOTA,同样是单模型 SOTA实时版:检测+跟踪端到端跑 30 FPS,仍能拿到 48.3 mAP / 54.2 AMOTA
🏆 Waymo 战绩
CenterPoint 大幅超过此前所有单模型方法,登上纯 LiDAR 提交榜单第一名。
这两个数据集是 3D 感知领域最权威的标尺。能在两个榜单上同时登顶,本身就是这套"以点代框"哲学成立的最有力证据。
✦ ✦ ✦
为什么它能成
回头看,CenterPoint 的成功可以归结为三个关键判断:
1选对了表达方式。用中心点替代 anchor,绕开了 3D 朝向穷举、超参数爆炸、样本不均衡三大顽疾,整个流程变得清爽。2选对了降维空间。把 3D 问题降到 BEV 上处理,让 2D 卷积的成熟工具箱直接复用,效率远高于 3D 卷积。3保留了"二次审视"的余地。第二阶段的角点特征精修,把 anchor-free 方法在小目标、远距离上的天然短板补齐了,精度直追甚至超过更重的两阶段 anchor-based 方法。✦ ✦ ✦
它的遗产
CenterPoint 之后,"center-based" 几乎成了 3D 检测的默认起点。无论后续的 CenterPoint++、SMOKE、PolarMix,还是大量商用感知方案,都能看到它的影子。在自动驾驶量产项目中,它至今仍是许多团队的强基线(strong baseline)——你提出新方法,先打过 CenterPoint 才有说服力。
更深远的影响或许在于:它把 3D 物体检测这件事,从"框的工程"重新拉回"点的哲学"。就像论文开头那句精炼的总结——
📌 参考文献Yin, T., Zhou, X., & Krähenbühl, P. (2021). Center-based 3D Object Detection and Tracking. CVPR 2021. arXiv:2006.11275.开源代码:github.com/tianweiy/CenterPoint
如果觉得有帮助,点赞/在看/分享是对原创最大的支持 🙏关注获取更多 AI 技术深度解读