Fast BEV复现踩坑实录:我是如何搞定地图文件、Petrel依赖和可视化Bug的

张开发
2026/4/15 16:17:13 15 分钟阅读

分享文章

Fast BEV复现踩坑实录:我是如何搞定地图文件、Petrel依赖和可视化Bug的
Fast BEV复现实战从地图文件缺失到可视化Bug的完整排雷指南上周在实验室尝试复现Fast BEV时本以为按照官方文档就能顺利跑通结果却遭遇了连环坑。从地图文件版本不匹配到Petrel客户端的神秘报错再到可视化脚本的诡异断言失败整个过程堪比技术侦探小说。下面就把这些坑和解决方案完整记录下来希望能帮到同样卡在半路的你。1. 环境配置的隐藏陷阱刚开始搭建环境时我发现requirements.txt里有两个包怎么都装不上# 问题依赖项 waymo-open-dataset-tf-2-1-01.2.0 # 无法找到 codecov # 测试依赖但实际不需要经过反复测试这两个依赖其实不影响核心功能。我的建议是直接修改requirements文件打开requirements/optional.txt注释掉waymo那行打开requirements/tests.txt注释掉codecov执行精简版安装pip install -r requirements/base.txt pip install -r requirements/runtime.txt注意如果使用CUDA 11环境建议手动安装匹配版本的torch和torchvision避免自动安装的版本不兼容。2. 数据集准备的版本暗礁使用mini数据集时官方提供的pkl文件不适用需要自己生成。但这里有个版本陷阱# 修改前的create_data.py关键行约235-242行 # 需要注释掉这部分校验代码否则mini数据集会报错完整操作流程下载NuScenes mini数据集v1.0-mini解压到data/nuscenes并重命名tar zxvf v1.0-mini.tgz -C data/nuscenes/ mv data/nuscenes/v1.0-mini data/nuscenes/v1.0-trainval运行数据转换脚本python tools/create_data.py nuscenes --root-path ./data/nuscenes \ --out-dir ./data/nuscenes --extra-tag nuscenes但最大的坑在于地图文件。当运行测试脚本时出现的这个错误FileNotFoundError: NuScenesMultiView_Map_Dataset2: [Errno 2] No such file or directory: ./data/nuscenes/maps/expansion/singapore-hollandvillage.json根本原因NuScenes在2023年更新了地图格式旧版地图包缺少关键文件。必须下载最新的maps扩展包解压后完整替换原maps文件夹。3. Petrel客户端的配置玄机当一切准备就绪运行时突然遭遇ImportError: Please install petrel_client to enable PetrelBackend.这个问题很具有迷惑性因为实际并不需要Petrel功能除非使用阿里云OSS错误源于配置文件默认设置解决方案是修改模型配置文件如fastbev_m2_r34_s256x704_v200x200x4_c224_d4_f4.py# 原配置约146行 # backend_args dict( # backendpetrel, # path_mappingdict({ # ./data/nuscenes/: s3://nuscenes/, # data/nuscenes/: s3://nuscenes/})) # 修改为 backend_args None或者更彻底的方法直接注释掉所有Petrel相关配置改用本地路径。4. 可视化Bug的联合围剿测试脚本运行正常后可视化阶段又出现两个棘手问题4.1 AssertionError: assert len(_list) len(sort)这个错误发生在mmdet3d/datasets/nuscenes_monocular_dataset.py的192行附近。需要修改排序逻辑# 修改前 assert len(_list) len(sort) results[img_filename] _list # 修改后 if len(_list) len(sort): results[img_filename] _list else: results[img_filename] sorted(_list)4.2 视频写入失败 ValueError运行可视化脚本时出现ValueError: Could not find a backend to open show_dir/video_pred.mp4 with iomode wI这是因为缺少视频编码支持安装以下两个扩展即可pip install imageio[ffmpeg] pip install imageio[pyav]5. 完整工作流验证经过以上修复后标准操作流程应该是数据准备python tools/create_data.py nuscenes --root-path ./data/nuscenes \ --out-dir ./data/nuscenes --extra-tag nuscenes运行测试python tools/test.py configs/fastbev/exp/paper/fastbev_m2_r34_s256x704_v200x200x4_c224_d4_f4.py \ epoch_20.pth --out output.pkl --eval bbox --show-dir result可视化结果python tools/misc/visualize_results.py \ configs/fastbev/exp/paper/fastbev_m2_r34_s256x704_v200x200x4_c224_d4_f4.py \ --result output.pkl --show-dir result最终会在result目录生成两个视频文件video_gt.mp4真值可视化video_pred.mp4预测结果可视化整个过程让我深刻体会到复现前沿算法不仅是跑通代码更是一次对问题排查能力的全面考验。特别是面对报错时理解错误背后的设计意图往往比直接搜索解决方案更重要。

更多文章