fast bev是最近新出的3D目标检测算法,在复现的过程中出现了很多问题,在此做个记录,希望大家能避开我躺的坑
在安装时requirements/optional.txt中的waymo-open-dataset-tf-2-1-0==1.2.0和requirements/tests.txt中的codecov死活找不到,直接把它俩注释掉,后面发现注释掉好像也没出现什么问题
因为原作者公开的pkl文件是完整数据集上生成的,而完整数据集太大了,下载不方便,所以可以下载mini数据集自己生成pkl文件,生成方式如下
:
1、下载mini数据集:
2、创建data/nuscenes文件夹,使用 tar zxvf v1.0-mini.tgz -C data/nuscenes/命令把mini压缩包解压到nuscenes,解压后是这样的
3、把v1.0-mini文件夹改名为v1.0-trainval
4、把tools/create_data.py 中的235-242行代码注释
4、在fastbev目录下运行:
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes
运行成功后会在data/nuscenes里生成两个pkl文件
5、修改tools/data_converter/nuscenes_seq_converter.py的第15行为:
并在fastbev目录下运行:
python tools/data_converter/nuscenes_seq_converter.py
成功后会生成两个train…max60.py和val…max60.py文件到此数据及构建完成
1、‘config’:模型运行时所需的配置文件,在config/fastbev下面有6个m0-m6,选择与自己下载的模型对应的文件即可
2、‘checkpoint’:作者训练好的模型参数’epoch_20.pth’
3、‘–fuse-conv-bn’:是否把conv和bn融合,可提高运行速度
4、‘–eval’:评价指标,3D目标检测选择’bbox’
5、‘–show’:是否把结果直接打印到图片上,原作者代码还没写好,加上这个参数会报错
6、‘–out’:保存推理的结果文件,自己创建一个out.pkl文件即可
1、把下载的模型参数文件放在fastbev目录下,并创建一个‘out.pkl’和一个result文件夹,运行:
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 --show
2、报错1:缺少地图信息
FileNotFoundError: NuScenesMultiView_Map_Dataset2:
[Errno 2] No such file or directory: ‘./data/nuscenes/maps/expansion/singapore-hollandvillage.json’
解决:去nuscenes官网下载最新的地图信息:
必须要下载最新的,不然也会报错
解压到data/nuscenes文件夹并替换掉原来的maps文件夹,
3、ImportError: Please install petrel_client to enable PetrelBackend.
解决办法:修改configs/fastbev/exp/paper里的配置文件,我的是146行左右,把注释打开,把147-150代码注释掉:
4、ValueError: too many values to unpack (expected 3)
前文说过,原作者的可视化代码还有点问题,所以只要在输出参数中加入:‘–show’,就会报错,
解决,不加‘–show’,运行以下命令即可:
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
作者也提供了可视化的脚本,步骤:1、先运行test.py把推理结果保存到output.pkl中,2、在fastbev目录运行tools/misc/visualize_results.py文件,运行以下代码:
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
1、AssertionError:assert len(_list) == len(sort)
解决办法:
进入到:Fast -BEV/mmdet3d/datasets/nuscenes monocular_dataset.py,找到192行修改成下面这样:
2、ValueError:Could not find a backend to open ‘show_dir/video_pred.mp4’ ‘with iomode ‘wI’’
解决办法:安装那两个模块即可:
pip install imageop[ffmpeg]
pip install imageio[pyav]
运行成功后就会在result目录生成两个渲染后的视频文件:
至此,Fast BEV复现完成,train.py同样按此方法运行,不过需要添加一个预训练文件