代码:https://github.com/Sense-GVT/Fast-BEV
论文:https://arxiv.org/pdf/2301.07870.pdf
一、环境问题
安装CUDA10.2
因为过高的pytorch版本编译不了mmdet3d,所以需要安装较低版本pytorch,在这里我安装的是1.6.0版本的。对应的最高CUDA版本为10.2,所以就需要安装10.2版本的CUDA。
因为本来已经安装了11.4,所以再次安装的时候建议不要选择CUDA Toolkit中的建立连接的选项以及安装驱动选项。安装完成之后在~/.bashrc文件中添加如下环境变量:
export PATH=/usr/local/cuda-11.4/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
可以根据修改cuda-11.4来选择使用哪个版本的cuda,记得修改完成之后需要source ~/.bashrc。
新建虚拟环境并安装依赖包
安装完成CUDA10.2之后,在conda中新建一个虚拟环境,安装1.6的pytorch,CUDA版本太高的话安装不了太低版本的pytorch,所以需要安装10.2版本的CUDA。安装完pytorch之后,安装mm需要的库,如下:
mmcv-full>=1.3.8,<=1.4.0
mmdet>=2.14.0,<=3.0.0
mmsegmentation>=0.14.1,<=1.0.0
之后再安装其他需要用到的安装包。
二、运行问题(参考:https://zhuanlan.zhihu.com/p/608929598)
数据集
原作者训练的数据为完整的nuscences数据集,项目里面提供的pkl文件对应真个nuscences数据集,而对于个人学习来说,一般只能使用mini数据集。因为就需要生成mini数据集的pkl文件。解决方法:
① 利用BEVFormer项目生成 nuscenes_infos_temporal_train.pkl 、...test.pkl、 ...vak.pkl
② BEVFormer下的数据集剪切到FastBEV下面,并重命名为nuscenes_infos_train.pkl、nuscenes_infos_val.pkl、nuscenes_infos_test.pkl
③ 运行tools/data_converter/nuscenes_seq_converter.py生成训练所需要的nuscenes_infos_train_4d_interval3_max60.pkl、...val_4d_interval3_max60.pkl...文件。
照上面的方法就可以得到训练和测试mini数据集,本文也提供百度云链接:https://pan.baidu.com/s/1FGvYLqShz8VzWs6syq8uUw?pwd=qgpw,提取码:qgpw。
最后数据集的格式:
![](https://i-blog.csdnimg.cn/blog_migrate/4463ebafda53e7d6ff2b640c3046e530.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9afdb8b80805dec5bd8fd8c97541dee0.png)
预训练权重和work_dirs按照源码readme放就行。
在这里用的nusense v1.0-mini数据集,与源代码中的train数据集不一样。需要在源码中mmdet3d/datasets/nuscenes_monocular_dataset_map_2.py 文件中的v1.0-trainval改为v1.0-mini。
代码以及依赖包问题
把所有东西准备好,首先需要使用命令:python setup.py develop编译代码,主要是为了编译作者自己写的mmdet3d库。
在RTX3090上编译的时候遇到了这个问题:ValueError:Unknown CUDA arch(8.6)or GPU not supported。解决方法:将conda环境所在文件夹中的cpp_extension.py内容从:
named_arches = collections.OrderedDict([
('Kepler+Tesla', '3.7'),
('Kepler', '3.5+PTX'),
('Maxwell+Tegra', '5.3'),
('Maxwell', '5.0;5.2+PTX'),
('Pascal', '6.0;6.1+PTX'),
('Volta', '7.0+PTX'),
('Turing', '7.5+PTX'),
])
supported_arches = ['3.5', '3.7', '5.0', '5.2', '5.3', '6.0', '6.1', '6.2',
'7.0', '7.2', '7.5']
修改为:
named_arches = collections.OrderedDict([
('Kepler+Tesla', '3.7'),
('Kepler', '3.5+PTX'),
('Maxwell+Tegra', '5.3'),
('Maxwell', '5.0;5.2+PTX'),
('Pascal', '6.0;6.1+PTX'),
('Volta', '7.0+PTX'),
('Turing', '7.5+PTX'),
('Ampere', '8.0;8.6+PTX'),
])
supported_arches = ['3.5', '3.7', '5.0', '5.2', '5.3', '6.0', '6.1', '6.2',
'7.0', '7.2', '7.5', '8.0', '8.6']
然后这个问题就解决啦!
然后会报error::The read operation timed out这个错,这是因为pip安装第三方库超时造成的。但其实编译已经成功了,只需要把没有安装的依赖包安装好。通过一下方法可以知道自己还缺哪些依赖包。
把train.py文件做以下修改。
parser.add_argument("--config",default="configs/fastbev/exp/paper/fastbev_m0_r18_s256x704_v200x200x4_c192_d2_f4.py",help="train config file path",)
parser.add_argument("--work-dir",default="work_dir",help="the dir to save logs and models")
group_gpus.add_argument("--gpu-ids",type=int,default=[0],help="ids of gpus to use ""(only applicable to non-distributed training)",)
就可以直接使用命令python ./tools/train.py来运行程序啦!然后就会报错缺少各种包,依次安装好就行。安装的过程中会有很多包的版本问题,慢慢安装就行。包安装完成之后编译就成功啦。
把包装完之后遇到了KeyError: 'SwinTransformer is already registered in models’这个问题,解决方法就是把mmdet3d/models/backbones/__init__.py中的from .swin_transformer import SwinTransformer注释了。
之后又遇到了ImportError: cannot import name '_functional' from 'torch.optim' (/home/qsz/anaconda3/envs/openmmlab/lib/python3.8/site-packages/torch/optim/init.py)这个错,mmdet3d/models/opt/adamw.py函数中的from torch.optim import _functional as F 改为from torch import optim as F 就好了。
然后程序就可以成功运行啦!最后附一下环境包的版本。如果哪个包的版本不对照着下边装就好。
absl-py 1.3.0
actionlib 1.13.2
addict 2.4.0
angles 1.9.13
anyio 3.6.2
arbotix-python 0.11.0
argon2-cffi 21.3.0
argon2-cffi-bindings 21.2.0
arrow 1.2.3
asttokens 2.2.1
attrs 22.2.0
backcall 0.2.0
base_local_planner 1.17.2
beautifulsoup4 4.11.1
black 22.12.0
bleach 5.0.1
bondpy 1.8.6
brotlipy 0.7.0
cachetools 5.2.0
camera-calibration 1.16.0
camera-calibration-parsers 1.12.0
catkin 0.8.10
certifi 2022.12.7
cffi 1.15.1
chardet 4.0.0
charset-normalizer 2.0.4
click 8.1.3
cloudpickle 2.2.1
cob-cartesian-controller 0.8.19
cob-script-server 0.6.29
cob-twist-controller 0.8.19
colorama 0.4.6
comm 0.1.2
commonmark 0.9.1
ConfigArgParse 1.5.3
contourpy 1.0.6
controller-manager 0.19.5
controller-manager-msgs 0.19.5
controller-manager-tests 0.19.5
cryptography 38.0.1
cv-bridge 1.16.2
cvxopt 1.3.0
cycler 0.11.0
dash 2.7.1
dash-core-components 2.0.0
dash-html-components 2.0.0
dash-table 5.0.0
debugpy 1.6.4
decorator 5.1.1
defusedxml 0.7.1
descartes 1.1.0
diagnostic-analysis 1.11.0
diagnostic-common-diagnostics 1.11.0
diagnostic-updater 1.11.0
dynamic-reconfigure 1.7.3
dynamixel_sdk 3.7.51
entrypoints 0.4
exceptiongroup 1.1.0
executing 1.2.0
fastjsonschema 2.16.2
fire 0.5.0
flake8 6.0.0
Flask 2.2.2
flit_core 3.6.0
fonttools 4.38.0
fqdn 1.5.1
future 0.18.3
gazebo_plugins 2.9.2
gazebo_ros 2.9.2
gencpp 0.7.0
geneus 3.0.0
genlisp 0.4.18
genmsg 0.6.0
gennodejs 2.0.2
genpy 0.6.15
google-auth 2.15.0
google-auth-oauthlib 0.4.6
grpcio 1.51.1
gym 0.26.2
gym-notices 0.0.8
idna 2.10
image-geometry 1.16.2
imageio 2.23.0
importlib-metadata 5.2.0
importlib-resources 5.10.1
iniconfig 1.1.1
install 1.3.5
interactive-markers 1.12.0
ipdb 0.13.13
ipykernel 6.19.4
ipython 8.7.0
ipython-genutils 0.2.0
ipywidgets 8.0.4
isoduration 20.11.0
itsdangerous 2.1.2
jedi 0.18.2
Jinja2 3.1.2
joblib 1.2.0
joint-state-publisher 1.15.1
joint-state-publisher-gui 1.15.1
jsonpointer 2.3
jsonschema 4.17.3
jupyter 1.0.0
jupyter_client 7.4.8
jupyter-console 6.4.4
jupyter_core 5.1.1
jupyter-events 0.5.0
jupyter_server 2.0.5
jupyter_server_terminals 0.4.3
jupyterlab-pygments 0.2.2
jupyterlab-widgets 3.0.5
kiwisolver 1.4.4
laser_geometry 1.6.7
llvmlite 0.31.0
lyft-dataset-sdk 0.0.8
Markdown 3.4.1
MarkupSafe 2.1.1
matplotlib 3.5.1
matplotlib-inline 0.1.6
mccabe 0.7.0
message-filters 1.15.14
mistune 2.0.4
mkl-fft 1.3.1
mkl-random 1.2.2
mkl-service 2.4.0
mmcls 0.25.0
mmcv-full 1.4.0
mmdet 2.26.0 /home/qsz/anaconda3/envs/openmmlab/lib/python3.8/site-packages
mmdet3d 0.16.0 /home/qsz/my_projects/Lane_detection/training_network/Fast-BEV-dev
mmpycocotools 12.0.3
mmsegmentation 0.30.0
model-index 0.1.11
moveit-core 1.1.10
mypy-extensions 0.4.3
nbclassic 0.4.8
nbclient 0.7.2
nbconvert 7.2.7
nbformat 5.5.0
nes-py 8.2.1
nest-asyncio 1.5.6
networkx 2.2
notebook 6.5.2
notebook_shim 0.2.2
numba 0.48.0
numpy 1.19.2
nuscenes-devkit 1.1.9
oauthlib 3.2.2
open3d 0.16.0
opencv-python 4.6.0.66
openmim 0.3.4 /home/qsz/anaconda3/envs/openmmlab/lib/python3.8/site-packages
ordered-set 4.1.0
packaging 22.0
pandas 1.2.0
pandocfilters 1.5.0
parso 0.8.3
pathspec 0.10.3
pexpect 4.8.0
pickleshare 0.7.5
Pillow 9.3.0
pip 22.3.1
pkgutil_resolve_name 1.3.10
platformdirs 2.6.0
plotly 5.11.0
pluggy 1.0.0
plyfile 0.7.4
pr2_controller_manager 1.8.21
prettytable 3.5.0
prometheus-client 0.15.0
prompt-toolkit 3.0.36
protobuf 3.20.3
psutil 5.9.4
ptyprocess 0.7.0
pure-eval 0.2.2
pyasn1 0.4.8
pyasn1-modules 0.2.8
pycocotools 2.0.6
pycodestyle 2.10.0
pycparser 2.21
pyflakes 3.0.1
pyglet 1.5.21
Pygments 2.13.0
pyOpenSSL 22.0.0
pyparsing 3.0.9
pyquaternion 0.9.9
pyrsistent 0.19.2
PySocks 1.7.1
pytest 7.2.0
python-dateutil 2.8.2
python-json-logger 2.0.4
python-qt-binding 0.4.4
pytz 2022.7
PyWavelets 1.4.1
PyYAML 6.0
pyzmq 24.0.1
qt-dotgraph 0.4.2
qt-gui 0.4.2
qt-gui-cpp 0.4.2
qt-gui-py-common 0.4.2
qtconsole 5.4.0
QtPy 2.3.0
requests 2.28.1
requests-oauthlib 1.3.1
resource_retriever 1.12.7
rfc3339-validator 0.1.4
rfc3986-validator 0.1.1
rich 12.6.0
rosbag 1.15.14
rosboost-cfg 1.15.8
rosclean 1.15.8
roscreate 1.15.8
rosgraph 1.15.14
roslaunch 1.15.14
roslib 1.15.8
roslint 0.12.0
roslz4 1.15.14
rosmake 1.15.8
rosmaster 1.15.14
rosmsg 1.15.14
rosnode 1.15.14
rosparam 1.15.14
rospy 1.15.14
rosservice 1.15.14
rostest 1.15.14
rostopic 1.15.14
rosunit 1.15.8
roswtf 1.15.14
rqt_action 0.4.9
rqt_bag 0.5.1
rqt_bag_plugins 0.5.1
rqt_console 0.4.11
rqt-controller-manager 0.19.5
rqt_dep 0.4.12
rqt_graph 0.4.14
rqt_gui 0.5.3
rqt_gui_py 0.5.3
rqt_image_view 0.4.16
rqt_joint_trajectory_controller 0.20.0
rqt_launch 0.4.9
rqt_logger_level 0.4.11
rqt-moveit 0.5.10
rqt_msg 0.4.10
rqt_nav_view 0.5.7
rqt_plot 0.4.13
rqt_pose_view 0.5.11
rqt_publisher 0.4.10
rqt_py_common 0.5.3
rqt_py_console 0.4.10
rqt-reconfigure 0.5.5
rqt-robot-dashboard 0.5.8
rqt-robot-monitor 0.5.14
rqt_robot_steering 0.5.12
rqt_runtime_monitor 0.5.9
rqt-rviz 0.7.0
rqt_service_caller 0.4.10
rqt_shell 0.4.11
rqt_srv 0.4.9
rqt_tf_tree 0.6.3
rqt_top 0.4.10
rqt_topic 0.4.13
rqt_web 0.4.10
rsa 4.9
rviz 1.14.19
scikit-image 0.19.3
scikit-learn 1.2.0
scipy 1.9.3
Send2Trash 1.8.0
sensor-msgs 1.13.1
setuptools 67.6.0
shapely 2.0.0
six 1.16.0
smach 2.5.0
smach-ros 2.5.0
smclib 1.8.6
sniffio 1.3.0
soupsieve 2.3.2.post1
srdfdom 0.6.3
stack-data 0.6.2
tabulate 0.9.0
tenacity 8.1.0
tensorboard 2.11.0
tensorboard-data-server 0.6.1
tensorboard-plugin-wit 1.8.1
termcolor 2.1.1
terminado 0.17.1
terminaltables 3.1.10
tf 1.13.2
tf-conversions 1.13.2
tf2-geometry-msgs 0.7.5
tf2-kdl 0.7.5
tf2-py 0.7.5
tf2-ros 0.7.5
threadpoolctl 3.1.0
tifffile 2022.10.10
timm 0.6.5
tinycss2 1.2.1
tomli 2.0.1
topic-tools 1.15.14
torch 1.6.0
torchaudio 0.6.0a0+f17ae39
torchvision 0.7.0
tornado 6.2
tqdm 4.64.1
traitlets 5.8.0
trimesh 2.35.39
typing_extensions 4.4.0
urdfdom-py 0.4.6
uri-template 1.2.0
urllib3 1.26.13
wcwidth 0.2.5
webcolors 1.12
webencodings 0.5.1
websocket-client 1.4.2
Werkzeug 2.2.2
wheel 0.37.1
widgetsnbextension 4.0.5
xacro 1.14.13
yapf 0.32.0
zipp 3.11.0