和芯片无关
和板卡无关
天工开物开发包 OpenExplorer 版本:openexplorer/ai_toolchain_ubuntu_22_j6_gpu:v3.8.1,容器docker内开发
fcos3d模型的训练 + 训练数据集3D框可视化 + predict可视化
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
