共计 1932 个字符,预计需要花费 5 分钟才能阅读完成。
为什么 6D 标注如此重要?
在物体位姿估计(Pose Estimation)任务中,6D 标注(三维位置 + 三维旋转)是模型训练的黄金标准。但新手常踩的坑是:以为随便拍几张照片就能标注。实际上,数据采集阶段的问题会导致后期标注事倍功半。

- 光照不均 :强反光或阴影会掩盖物体表面特征,导致位姿(Pose)难以确定
- 遮挡缺失 :实际场景中物体常被遮挡,但采集时若全是 ” 干净 ” 样本,模型遇到遮挡就失效
- 视角单一 :只从固定角度拍摄,缺少俯视 / 侧视等视角,模型无法学习完整空间关系
主流标注工具横向评测
LabelFusion(学术向)
- 优势:支持多传感器数据同步(RGB- D 相机 +IMU),适合科研场景
- 劣势:需要配置 ROS 环境,学习曲线陡峭
Supervisely(企业级)
- 优势:云端协作功能完善,支持多人实时审核
- 劣势:订阅费用较高($200/ 月起)
CVAT(开源首选)
# 用 CVAT API 批量导出标注示例
import cvat_sdk
client = cvat_sdk.Client("http://localhost:8080")
tasks = client.tasks.list()
for task in tasks:
task.export("COCO 1.0", f"{task.id}.zip")
手把手教您写质检脚本
核心是检查点云对齐和位姿一致性。数学上,可以用 Huber 损失函数评估误差:
$$L_{\delta}(a) = \begin{cases}
\frac{1}{2}a^2 & \text{当} |a| \leq \delta \
\delta(|a| – \frac{1}{2}\delta) & \text{否则}
\end{cases}$$
import numpy as np
def check_pose_consistency(gt_pose, pred_pose, threshold=0.01):
"""
位姿一致性校验
:param gt_pose: 4x4 齐次矩阵格式的真值位姿
:param pred_pose: 预测位姿
:param threshold: Huber 损失阈值
:return: 误差得分
"""
try:
diff = np.linalg.inv(gt_pose) @ pred_pose
t_error = np.linalg.norm(diff[:3, 3])
r_error = np.arccos((np.trace(diff[:3, :3]) - 1) / 2)
# Huber 损失计算
def huber_loss(x):
return np.where(x <= threshold, 0.5*x**2, threshold*(np.abs(x)-0.5*threshold))
return huber_loss(t_error) + huber_loss(r_error)
except np.linalg.LinAlgError as e:
print(f"矩阵求逆失败: {e}")
return float('inf')
新手避坑清单
- 坐标系统一 :所有标注必须使用同一世界坐标系(建议用右手系)
- 遮挡处理 :明确标注遮挡区域(用特殊标签如 ”occluded”)
- 对称物体 :对旋转对称物体要标注旋转约束(如圆柱体只需标注 Z 轴旋转)
- 标注冗余 :每个物体至少应有 3 个视角的标注
- 物理合理性 :检查物体间穿透、悬浮等违反物理规律的情况
优化标注效率的技巧
分布式标注
- 按物体类别拆分:不同标注员专攻特定物体
- 按场景复杂度分级:简单场景分配给新手标注员
评估指标
- ADD(Average Distance Deviation):模型预测的 3D 点与真值的平均距离
- ADI(Average Distance with Iterative Closest Point):考虑 ICP 优化后的距离
# ADD 计算示例
def calculate_add(model_points, gt_pose, pred_pose):
"""
:param model_points: 物体 3D 模型点云 (Nx3)
:return: 平均欧氏距离
"""
gt_points = (gt_pose[:3, :3] @ model_points.T + gt_pose[:3, [3]]).T
pred_points = (pred_pose[:3, :3] @ model_points.T + pred_pose[:3, [3]]).T
return np.mean(np.linalg.norm(gt_points - pred_points, axis=1))
实践心得
经过两个实际项目的磨练,我发现:
- 标注工具选择上,小团队用 CVAT+ 自定义插件性价比最高
- 质检脚本要集成到标注流水线中,每 100 条数据自动抽检
- 对称物体标注是最容易出错的环节,建议单独设计校验规则
希望这篇指南能帮你少走弯路。记住:好的标注数据比 fancy 的模型结构更重要!
正文完
发表至: 未分类
近两天内
