BEVFormer代码跑通

1 环境配置

1.1 环境安装

# 1 拉取源码   github加速代理https://ghproxy.com/
git clone https://github.com/fundamentalvision/BEVFormer.git

# 2 创建虚拟环境
conda create -n bev python=3.8 -y

# 3 激活虚拟环境
conda activate bev

# 4.1 安装torch,torchvision,torchaudio
pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html

# -i https://pypi.tuna.tsinghua.edu.cn/simple/

# 4.2 conda安装
conda install pytorch==1.10.0 torchvision==0.11.0 torchaudio==0.10.0 cudatoolkit=11.3 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/

# 5 gcc版本 可选
conda install -c omgarcia gcc-6 # gcc-6.2

# 6  mmcv-full会装很久,可以先装openmim,用mim安装mmcv-full快一些
pip install mmcv-full==1.4.0 mmdet==2.14.0 mmsegmentation==0.14.1

# 7 源码安装mmdet3d-v0.17.1版本
# 7.1 进入bevformer目录
cd bevformer
# 7.2 下载mmdetection3d   github加速代理https://ghproxy.com/
git clone https://github.com/open-mmlab/mmdetection3d.git
# 7.3 进入mmdetection3d目录
cd mmdetection3d
# 7.4 切换v0.17.1
git checkout v0.17.1
# 7.5 安装mmdet3d-v0.17.1版本
python setup.py install

# 8 安装 Detectron2 and Timm
# 8.1 安装基本python依赖包
pip install einops fvcore seaborn iopath==0.1.9 timm==0.6.13  typing-extensions==4.5.0 pylint ipython==8.12  numpy==1.19.5 matplotlib==3.5.2 numba==0.48.0 pandas==1.4.4 scikit-image==0.19.3 setuptools==59.5.0 yapf==0.40.1
# 8.2 安装 Detectron2
python -m pip install 'git+https://github.com/facebookresearch/detectron2.git'

# 9 下载预训练模型
# 9.1 进入bevformer目录
cd bevformer
# 9.2 创建并进入ckpts文件夹
mkdir ckpts && cd ckpts
# 9.3 下载预训练权重r101_dcn_fcos3d_pretrain.pth,github加速代理https://ghproxy.com/
wget https://github.com/zhiqi-li/storage/releases/download/v1.0/r101_dcn_fcos3d_pretrain.pth

1.2 运行报错汇总

# 报错1 ImportError: libGL.so.1: cannot open shared object file: No such file or directory
# 修改:安装libsm6 libxext6 libgl1-mesa-glx
apt-get install libsm6 libxext6 libgl1-mesa-glx

 
# 报错2 ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory
# 修改:安装libglib2.0-dev
apt-get install libglib2.0-dev

# 报错3 ModuleNotFoundError: No module named 'tools'
# 修改:添加python环境变量
export PYTHONPATH="./"

# 报错4
# from data_converter import indoor_converter as indoor
# File "/home/lin/Documents/BEVFormer/tools/data_converter/indoor_converter.py", line 6, in <module>
# from tools.data_converter.s3dis_data_utils import S3DISData, S3DISSegData
# ModuleNotFoundError: No module named 'tools.data_converter'

修改:./tools/data_converter/indoor_converter.py的6-8行位置左右
将from tools.data_converter.s3dis_data_utils import S3DISData, S3DISSegData改成由from data_converter.s3dis_data_utils import ...
也就是tools.data_converter换成data_converter


# 错误5 TypeError: FormatCode() got an unexpected keyword argument 'verify'
# 修改:更新yapf版本为0.40.1
pip install yapf==0.40.1

# 错误6 显存爆炸
# 修改:samples_per_gpu=1, 48G显存设2显存就炸了, bev没钞能力还是不要玩 

我没用use_can_bus将配置文件中use_can_bus改为False,生成数据use_can_bus有关的代码注释掉

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
BEVFormer是一种纯视觉的自动驾驶感知算法。它过融合环视相机图像的空间和时序特征来生成具有强表征能力的BEV(Bird's Eye View)特征,并应用于下游的3D检测、分割等任务,取得了SOTA(State-of-the-Art)的结果。在BEVFormer算法的部署中,主要包括以下几个部分。 首先是backbone,用于从6个角度的环视图像中提取多尺度的multi-camera feature。这个过程主要过对多个相机的内外参信息进行特征提取,以获得统一的BEV视角的multi-camera feature。 其次是BEV encoder,该模块主要包括Temporal self-Attention和Spatial Cross-Attention两个部分。Spatial Cross-Attention结合多个相机的内外参信息对对应位置的multi-camera feature进行query,从而在统一的BEV视角下将multi-camera feature进行融合。Temporal self-Attention将History BEV feature和current BEV feature过self-attention module进行融合,以获取具有时序信息的BEV feature。 最后是Det&Seg Head,这是针对特定任务的task head。它进一步使用BEV feature进行3D检测和分割任务。 在BEVFormer的部署中,我们还对训练代码进行了优化,包括数据读取和减少内存拷贝消耗等方面的优化。此外,我们还使用了推理优化工具PAI-Blade对模型进行了优化,以提高推理速度。过PAI-Blade优化后的模型,在A100机器下能够获得42%的优化加速。 总而言之,BEVFormer的部署主要包括backbone、BEV encoder和Det&Seg Head三个部分,并过优化训练代码和使用推理优化工具来提高算法的训练速度和推理速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加油吧小森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值