)
避坑指南在Ubuntu 20.04上从零搭建MIT BEVFusion环境含CUDA 11.3、PyTorch 1.10配置自动驾驶多模态感知模型的复现一直是开发者面临的挑战之一尤其是当涉及到复杂的环境配置和依赖管理时。MIT BEVFusion作为一个前沿的多传感器融合框架其环境搭建过程充满了各种坑。本文将从一个实际踩坑者的角度带你一步步完成从零开始的BEVFusion环境搭建避开那些让人抓狂的典型错误。1. 基础环境准备1.1 系统与CUDA环境检查在开始之前确保你的Ubuntu 20.04系统已经安装了正确的NVIDIA驱动和CUDA 11.3。运行以下命令检查nvidia-smi # 检查驱动版本 nvcc --version # 检查CUDA编译器版本如果CUDA未正确安装建议使用官方.run文件安装CUDA 11.3wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run sudo sh cuda_11.3.0_465.19.01_linux.run注意安装时不要勾选驱动选项避免与系统已有驱动冲突。1.2 OpenMPI编译与配置BEVFusion依赖OpenMPI进行分布式训练支持。以下是经过验证的安装步骤下载并解压OpenMPI 4.1.4wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.4.tar.gz tar -xzvf openmpi-4.1.4.tar.gz cd openmpi-4.1.4配置并安装./configure --prefix/usr/local/openmpi make -j$(nproc) sudo make install添加环境变量到~/.bashrcecho export MPI_HOME/usr/local/openmpi ~/.bashrc echo export OMPI_MCA_opal_cuda_supporttrue ~/.bashrc echo export PATH${MPI_HOME}/bin:$PATH ~/.bashrc echo export LD_LIBRARY_PATH${MPI_HOME}/lib:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc2. Python环境配置2.1 创建虚拟环境使用conda创建一个新的Python 3.8环境conda create -n mmdet3d-bev2 python3.8 -y conda activate mmdet3d-bev22.2 PyTorch与相关库安装安装与CUDA 11.3兼容的PyTorch 1.10pip install torch1.10.0cu113 torchvision0.11.0cu113 -f https://download.pytorch.org/whl/torch_stable.html验证PyTorch是否正确识别CUDAimport torch print(torch.cuda.is_available()) # 应返回True print(torch.version.cuda) # 应显示11.32.3 关键依赖安装以下是经过验证的依赖版本组合包名版本备注mmcv-full1.4.0必须指定CUDA和PyTorch版本mmdet2.20.0Pillow8.4.0图像处理库numba0.48.0影响点云处理性能numpy1.19.5高版本可能导致兼容性问题安装命令pip install mmcv-full1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html pip install mmdet2.20.0 conda install -y openmpi mpi4py pip install Pillow8.4.0 tqdm torchpack nuscenes-devkit ninja numpy1.19.5 numba0.48.0 shapely1.8.03. BEVFusion源码配置3.1 获取源码与修改克隆BEVFusion官方仓库git clone https://github.com/mit-han-lab/bevfusion.git cd bevfusion关键修改点spconv源码修改 找到mmdet3d/ops/spconv/src/indice_cuda.cu将所有4096改为256。这个修改是为了避免GPU内存溢出错误。预训练模型下载修复 修改download_pretrained.sh内容为wget https://hanlab18.mit.edu/projects/bevfusion/files/pretrained_updated/bevfusion-det.pth wget https://hanlab18.mit.edu/projects/bevfusion/files/pretrained_updated/bevfusion-seg.pth # 其他模型下载命令...3.2 编译安装执行编译命令python setup.py develop提示如果遇到CUDA_HOME错误确保~/.bashrc中有正确的设置export CUDA_HOME/usr/local/cuda4. 数据集准备与常见错误解决4.1 NuScenes数据集配置BEVFusion使用NuScenes数据集进行训练和验证。配置时最常见的路径错误可以通过以下方式避免创建正确的目录结构mkdir -p data/nuscenes修改bevfusion/tools/data_converter/nuscenes_converter.py中的路径配置info_path osp.join(info_prefix, {}_infos_train.pkl.format(info_prefix)) info_val_path osp.join(info_prefix, {}_infos_val.pkl.format(info_prefix))4.2 循环导入错误解决遇到feature_decorator_ext导入错误时需要修改两处文件注释掉mmdet3d/ops/__init__.py中的相关导入# from .feature_decorator import feature_decorator同样注释掉mmdet3d/models/backbones/__init__.py中的雷达编码器导入# from .radar_encoder import *5. 验证安装成功完成所有配置后运行以下命令验证环境是否正常工作python demo/lidar_camera_demo.py如果一切正常你应该能看到BEVFusion的联合推理结果。在实际项目中我发现最常出问题的环节是CUDA版本匹配和spconv的编译配置建议在这些步骤上多花些时间仔细检查。