专栏算法工具链fcos3d训练时加载的数据好像不太对

fcos3d训练时加载的数据好像不太对

解答中
九zoujiu.com.cn2026-06-14
18
2
  1. 和芯片无关

  2. 和板卡无关

  3. 天工开物开发包 OpenExplorer 版本:openexplorer/ai_toolchain_ubuntu_22_j6_gpu:v3.8.1,容器docker内开发

  4. fcos3d模型的训练 + 训练数据集3D框可视化 + predict可视化

  5. nuscenes数据集训练fcos3d模型,输入给模型的数据存在问题,导致fcos3d模型inference出来的predict的结果是部分错误的,导致predict结果部分不可用

训练时输入模型的数据部分是错误的

cd ~/horizon_j6_open_explorer_v3.8.1-py310_20260326/samples/ai_toolchain/horizon_model_train_sample/scripts/tools

python3 train.py --stage float --config ../configs/detection/fcos3d/fcos3d_efficientnetb0_nuscenes.py

nuscenes数据集的加载路径是:

1, /usr/local/lib/python3.10/dist-packages/hat/data/datasets/nuscenes_dataset.py, class NuscenesMonoDataset(NuscenesDataset): data = sample.get_mono_by_index(cam_idx)

2, def get_mono_by_name(self, name): cam_bbox = box.get_cam_bboxes(cam)

返回的相机坐标系的gt,def get_cam_bboxes(self, cam):这个函数的问题主要是在返回的yaw角上面,此时的yaw角应该是绕相机坐标系z轴旋转的角度,使用公司采集的数据集,然后用get_cam_bboxes返回的值可视化的结果3D框是倾斜的,也就是绕相机坐标系的x轴存在一定倾斜

这边发现主要的原因是相机安装不是水平的,也就是相机坐标系的xz平面和自车ego坐标系的xy平面不是平行的,而且相交的,导致只拿到某一个(yaw, pitch, roll)角不能完全还原物体的真实姿态,导致框是倾斜的,公司采集的数据,经过get_cam_bboxes函数以后返回值用来可视化,结果就是倾斜的

所以感觉这里存在问题的,这里给一张公司采集的图片,用来复现这个问题,以及修复的方案。相关复现的codes和修复方案在附件里面,运行evalcam3d.py即可的

可视化的工具是:

horizon_j6_open_explorer_v3.8.1-py310_20260326/samples/ai_toolchain/horizon_model_train_sample/scripts/tools/infer_hbir.py

python3 infer_hbir.py --config ../configs/detection/fcos3d/fcos3d_efficientnetb0_nuscenes.py

因为infer_hbir.py用到了from hat.visualize.cam3d import Cam3dViz这个类,所以实际可视化也是用的这个类

下面的codes就是复现和修复的部分

另外附部分lmdb加载的可视化的codes

附件:
算法工具链
技术深度解析征程6
评论2
0/600
  • 九zoujiu.com.cn
    Lv.1

    附件里面包含了复现的脚本和图片, 以及输出的可视化图片

    8小时前
    0
    0
  • 九zoujiu.com.cn
    Lv.1

    若是确定存在问题的话, 可能其他模型的输入也存在问题

    8小时前
    0
    0