感谢你的提问。
1)关于相机内参
训练和测试阶段的相机内参是可以不同的,这在设计上是允许的,也是常见设置(训练使用合成数据内参,测试使用真实相机内参)。
但需要注意:推理阶段使用的相机内参必须与测试图像严格对应,否则会直接导致位姿估计出现明显偏差。
2)关于 depth_scale
这里设置为 0.1 主要是为了提高深度图的量化精度。
在以 uint16 格式存储时:
- depth_scale = 1 → 分辨率为 1 mm
- depth_scale = 0.1 → 分辨率为 0.1 mm
更小的 depth_scale 可以保留更细腻的深度信息,通常对位姿估计更有利。这个参数本身一般不会导致明显的位姿偏差问题。
3)关于你当前的位姿偏差问题
目前提供的信息还比较有限,比较难直接判断具体原因。可以考虑从以下几个方面排查:
(1)相机内参是否正确
请重点检查推理阶段使用的内参是否与测试数据完全一致(包括 fx, fy, cx, cy)。这是最常见的问题来源之一。
(2)渲染数据设置
如果你的物体是金属/弱纹理物体,建议在数据生成时开启:
- 随机基础颜色(base color)
- 金属度(metallic)和高光(specular)随机化
否则模型容易过拟合单一外观,影响泛化。
(3)对称性问题
部分物体可能存在旋转对称性(例如近似二阶旋转对称)。这种情况下,即使视觉上“看起来对齐”,数值误差也可能较大。
建议检查 HCCE 编码的预测结果(例如可视化编码或统计错误率),判断是否存在对称性引起的歧义。
(4)训练是否充分
默认的 50000 步在大多数情况下是够用的,但如果数据分布较复杂,或者是新数据集,也可以尝试继续训练或观察 loss / 编码误差是否已经收敛。
如果方便的话,建议补充以下信息,有助于进一步定位问题:
- 训练过程中的日志(loss 或编码误差变化)
- HCCE 编码的可视化结果
- 测试结果示例(预测 vs GT 对比)
- PBR 渲染生成的训练数据图像(RGB)
PBR 渲染图像可以帮助判断渲染质量、材质设置以及是否存在明显的 domain gap 问题。
额外地,提供一个正确的效果图:
Originally posted by @WangYuLin-SEU in #12
尊敬的作者您好!
我正在使用贵团队开源的 HCCEPose 代码,在 ITODD 数据集的 train_pbr 数据上训练单个物体。训练配置基本采用原论文代码中的默认设置:batch size 为 24,学习率为 2e-4,计划训练约 50000 次迭代。
训练初期 loss 下降很快,但经过几百至几千次迭代后,日志中的 front/back surface loss 长期在 0.2~0.3 左右波动,下降速度明显变慢。请问在 ITODD 上完成约 50000 次迭代后,front loss、back loss、mask loss 以及 total loss 通常大约会收敛到什么范围?
此外,如果 front/back loss 长期保持在 0.2~0.3,这是否属于正常现象,还是说明训练或数据预处理可能存在问题?
感谢您的帮助!
Originally posted by @WangYuLin-SEU in #12
尊敬的作者您好!
我正在使用贵团队开源的 HCCEPose 代码,在 ITODD 数据集的 train_pbr 数据上训练单个物体。训练配置基本采用原论文代码中的默认设置:batch size 为 24,学习率为 2e-4,计划训练约 50000 次迭代。
训练初期 loss 下降很快,但经过几百至几千次迭代后,日志中的 front/back surface loss 长期在 0.2~0.3 左右波动,下降速度明显变慢。请问在 ITODD 上完成约 50000 次迭代后,front loss、back loss、mask loss 以及 total loss 通常大约会收敛到什么范围?
此外,如果 front/back loss 长期保持在 0.2~0.3,这是否属于正常现象,还是说明训练或数据预处理可能存在问题?
感谢您的帮助!