本节摘要:姿态估计识别目标的关键点位置。本节讲它在自动驾驶行人意图理解中的作用——从姿态判断行人要干嘛。
阅读完本节,你应当能够:
姿态估计识别目标关键点(如人体关节)位置,推断姿态。自动驾驶用它理解行人意图——站、走、跑、要过马路。
| 类型 | 输出 | 用途 |
|---|---|---|
| 2D 姿态 | 图像平面关键点 | 姿态识别 |
| 3D 姿态 | 3D 关键点 | 精确姿态、动作 |
人体姿态估计识别关节关键点:
| 模型 | 特点 |
|---|---|
| OpenPose | 经典 2D 多人姿态 |
| HRNet | 高分辨率网络,精度高 |
| AlphaPose | 速度快 |
| BlazePose | 移动端实时 |
| SMPL | 3D 人体模型 |
姿态估计帮助理解行人意图:
姿态比单纯检测框更能判断行人下一步行为。
车辆 3D 姿态估计判断朝向角,用于:
姿态估计是意图识别(2.8 节)的输入:
⚠️ 遮挡:行人关节常被挡(如腿被车挡),姿态估计要处理遮挡,用上下文推断被挡关键点。
💡 关键直觉:姿态估计识别关键点(关节),用于行人意图理解(头部朝向/步态判断过马路)和车辆朝向。2D 平面、3D 精确。模型 OpenPose/HRNet。挑战遮挡/多人/小目标。姿态是意图识别输入。
下一节讲深度估计。
主流姿态估计把关键点预测建模为热图回归:网络为每个关键点(头、肩、肘、腕、髋、膝、踝)输出一张概率热图,热图上每个位置的值代表该位置是关键点的置信度,训练时用高斯核在关键点真值处生成目标热图。推理时取热图峰值即为关键点坐标。热图范式天然保留了空间信息,对遮挡和抖动比直接回归坐标更稳。
# 热图范式示意 heatmaps = model(image) # 输出 (C, H, W),C=关键点数 for c in range(C): y, x = argmax(heatmaps[c]) # 每通道取峰值 confidence = heatmaps[c][y, x]
Top-down 方法先检测人再单做姿态,精度高但多人时速度随人数线性增长;Bottom-up 方法先检测所有关键点再聚合成人,速度稳定但匹配容易出错。自动驾驶里的行人一般离车有一定距离、数量不多,多用 Top-down 或轻量的单人姿态网络。
单靠检测框无法区分"站着看手机"和"准备加速过马路"的行人。姿态估计提供了关键信息:头部朝向是否看向来车方向、重心是否前倾、双腿是否呈起步姿态、有没有挥手示意。把这些姿态特征和行人轨迹(位置、速度、方向)一起喂给一个时序分类器,就能输出"静止、行走、奔跑、意图过街"等状态。实际落地上,姿态识别的稳定性比精度更重要——判断错了顶多多等一会儿,判断漏了可能造成危险,因此状态切换通常也要加时序确认,避免单帧姿态抖动引发误判。顺带一提,姿态估计还可以服务于车内监控:驾驶员监控系统用类似的关键点方法判断驾驶员是否闭眼、低头、分心,这与行人姿态估计共享同一套底层技术。