






















FastBEV 在纯视觉方案中性价比较高,本文记录代码复现过程。
上述环境为官方代码仓库所记录的需求
这里记录我的环境配置
说明: 这里说明一下,为之后的同学填坑
mmcv-full 1.4.0 比较久远了其实,因此所需环境也比较古老,mmlab 提供的 whl 并未包含该版本,因此安装需要自己编译,但是编译过程中需要引入 pytorch 的 THC/THC.h 头文件,而 pytorch 在 1.10 以后的版本(1.11+)将该文件删除了,因此最高 pytorch 版本为 1.10
mmcv-full 和 pytorch 版本既然锁死,到 Pytorch 的安装界面中可以看到,1.10 版本的 torch 支持最高版本的 CUDA 为 11.3, 因此 CUDA 版本我定在了 11.3
在 cuda 11.3 的官方文档中,记录了所需的 gcc 版本

可以看到 gcc 版本为 9.x,因此我在当前使用了 9.5 的 gcc 版本
其他环境正常安装就好了
下载地址:https://developer.nvidia.com/cuda-11.3.0-download-archive
1 | |
mmcv whl 包链接:https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html
1 | |
仓库地址:https://github.com/Sense-GVT/Fast-BEV
将 fast-bev 安装到 python 环境
1 | |
nuscenes数据集,nuscenes下载地址
这里只测试 nuscense 提供 mini 版本, 下载 map 跟 mini:

下载后得到2个压缩的文件
解压到当前目录
解压得到nuScenes-map-expansion-v1.3与v1.0-mini两个目录, 把nuScenes-map-expansion-v1.3中的三个文件复制到v1.0-mini/map目录下。最终得到新v1.0-mini目录,就行训练所需的数据集。

数据集转换为FastBEV支持格式
进入Fast-BEV工程目标, 创建data目录,然后将上面的v1.0-mini文件夹复制到./Fast-BEV/data下, 并将v1.0-mini重命名为nuscenes, 目录结构如下图所示:

因为使用的mini数据集, 转换时候加上参数--version 该数据未提供v1.0-test文件
如果使用全部的nuscenes数据可以不加--version
1 | |
执行后,产生下面红框中的文件

由于使用的mini数据集无test文件,需要修改nuscenes_seq_converter.py文件,找到代码15行和20行,修改如下:

修改后,运行:
1 | |
生成 nuscenes_infos_train_4d_interval3_max60.pkl 与 nuscenes_infos_val_4d_interval3_max60.pkl 两个文件,
这两个文件就是训练需要的数据集,如下图所示:

修改 dataset 文件 nuscenes_monocular_dataset_map_2.py

修改第 27 行

模型 下载链接 ,提供了r18,r34,r50三种残差网络模型。这里下载 cascade_mask_rcnn_r18_fpn_coco-mstrain_3x_20e_nuim_bbox_mAP_0.5110_segm_mAP_0.4070.pth
下载后,新建一个pretrained_models目录放入其中。

以 configs/fastbev/exp/paper/fastbev_m0_r18_s256x704_v200x200x4_c192_d2_f4.py,文件为例:
1 | |
安装setuptools-58.0.4版本
1 | |
配置文件中预训练模型地址修改, 代码331行,load_from参数指向第1步下载的预训练模型地址,如果不知道相对路径,可以直接给绝对路径,我这里是相对路径
1 | |
1 | |
参数说明
1 | |

训练时每完成一个 epoch 会在 work_dir 保存 epoch_x.pth 文件,我们用这个文件来进行推断。
1 | |
1 | |
用 tools/misc/visualize_results.py 把上一步的 result.pkl 生成视频流展示。
assert len(_list) == len(sort)解决办法:Fast -BEV/mmdet3d/datasets/nuscenes monocular_dataset.py, 找到192行修改成193行样子:

TypeError: write() got an unexpected keyword argument 'fps'解决方案:
1 | |
1 | |
生成的文件如下图所示:

发现
m0-r18模型效果不是很好,很多只检测了个寂寞,可以尝试用m5-r50的epoch_20pth,下载链接
运行效果
下载的模型运行了 m4-r50 的结果:
文章链接:
https://www.zywvvd.com/notes/study/deep-learning/bev/fastbev/fastbev-practice/
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。