LingBot-Depth 2.0 的室内三维重建任务,数据标注的核心目标不是给每张图打一个笼统的“室内”标签,而是为深度估计和后续三维融合提供可监督的几何参考。建议围绕“稀疏深度真值 + 相机位姿 + 尺度参考 + 语义/动态掩码”四类信息展开标注,并把标注结果拆成独立文件保存,方便分阶段质检和增量修正。
室内三维重建的数据标注应以几何真值为中心,优先标注可验证的稀疏深度点、相机姿态和尺度参考,同时保留动态物体与反光表面掩码。标注流程需要包含自动预标注、人工修正、几何一致性校验三个环节;质量验收应聚焦深度误差、遮挡边界和时序一致性,而不是追求像素级稠密标注。
标注任务拆解
LingBot-Depth 2.0 这类深度模型,训练时通常需要“图像 + 对应深度图”或“图像序列 + 位姿”。室内场景最大的问题是纹理弱、反光多、物体摆放杂乱,所以标注前先把任务拆成四个子项,分开做比混合在一起做更容易控制质量。
- 稀疏深度点:在关键帧上标注特征点对应的实际距离,使用激光雷达、结构光或已知尺寸的标定板作为参考。如果没有现成深度传感器,可以先标注图像中的线段端点、墙角、物体边缘,配合已知物体尺寸推算深度。
- 相机位姿:对连续帧序列标注相对位姿变化,优先使用视觉里程计或动捕系统预生成,再人工检查漂移。
- 尺度参考:记录场景中已知长度的物体(例如门高、地砖边长),用于把单目深度恢复成真实尺度。
- 动态/干扰掩码:标注人、动物、移动物体、反光表面、玻璃区域,训练时让模型忽略这些不可靠区域。
数据组织与文件格式
建议每个场景一个文件夹,每帧图像与对应标注文件同名,后缀区分类型。下面是一个可供参考的文件组织方式:
scene_001/
frame_0001.jpg
frame_0001.sparse_depth.json
frame_0001.pose.json
frame_0001.mask.png
frame_0002.jpg
...
scene_scale.json稀疏深度文件用 JSON 存储,包含图像尺寸、标注点坐标与深度值,以及参考坐标系说明:
{
"image": "frame_0001.jpg",
"image_width": 1280,
"image_height": 720,
"depth_units": "mm",
"points": [
{"x": 345.2, "y": 211.8, "depth": 1234.5, "source": "lidar"},
{"x": 810.0, "y": 502.3, "depth": 890.1, "source": "manual"}
]
}位姿文件保存相对第一帧的变换矩阵:
{
"frame": "frame_0001",
"relative_to": "scene_001/frame_0000",
"transform_4x4": [
[1,0,0,0],
[0,1,0,0],
[0,0,1,0],
[0,0,0,1]
]
}掩码保存为 PNG,单通道,0 表示有效区域,255 表示忽略区域。
标注流程建议
不要一开始就让标注员逐张点深度点,效率低且主观偏差大。建议按下面这个流程走:
- 先用现有深度估计模型或传统多目重建生成初始深度图,再与图像叠加显示。
- 标注员在初始深度基础上修正明显错误的深度点,删除漂移点,补标缺失的关键点。
- 对同一场景的多帧标注做交叉验证:同一个物理点在不同帧中的投影深度应接近,误差超过阈值就回流修正。
- 最后检查遮挡边界和动态区域。如果标注点落在掩码区域,需要调整掩码或删除该点。
工具选型上,可以使用任何支持多边形绘制的标注工具;关键是导出格式要和后续训练脚本对齐。建议先用一个简单的 Python 脚本校验 JSON 结构,再进入训练流程。
质量验收标准
验收不能只看标注数量,要看稀疏深度点是否覆盖到纹理稀疏区域和物体边缘。可以先用下面这个清单做快速检查:
- 每帧至少有多少可用点?这个标准需要根据模型输入自行确定,建议先收集几帧人工统计分布。
- 深度值是否与场景尺度一致?例如已知门高 2 米,图像中门上点的深度推算出的三维高度应与 2 米接近。
- 连续帧的点云重投影误差是否小于设定阈值?阈值需要结合相机内参确认,建议先做 10 帧试标再定阈值。
- 动态物体掩码是否完整包裹了移动的人或动物?掩码边缘不能切进物体内部。
- 反光面、玻璃区域的点是否全部被掩码覆盖?如果没有,这些点很可能干扰训练。
最后提醒一点:室内三维重建的数据标注往往需要迭代,第一次标注的结果可能因为尺度不一致或位姿漂移导致模型训练不稳定。建议先标注一个包含 20-30 帧的小场景,跑通训练与重建流程,确认标注格式和语义定义没有歧义,再批量扩展,避免返工。