BEVFormer-加速版
更新时间:2026-01-15
模型介绍
一句话介绍:
BEVFormer:BEVFormer 通过提取环视相机采集到的图像特征,并将提取的环视特征通过模型学习的方式转换到 BEV 空间(模型去学习如何将特征从 图像坐标系转换到 BEV 坐标系),从而实现 3D 目标检测和地图分割任务,并取得了 SOTA 的效果。
详细图文介绍:

核心思想:提出一种新的框架BEVFormer,利用时空变换器(spatiotemporal transformers)从多摄像头图像中学习统一的BEV表示,以支持多种自动驾驶感知任务。
关键设计:
- 网格形BEV查询(BEV Queries):预定义为可学习参数,通过注意力机制灵活融合空间和时间特征。
- 空间交叉注意力(Spatial Cross-Attention):基于可变形注意力,使每个BEV查询仅与摄像头视图中感兴趣区域交互,有效聚合空间信息。
- 时间自注意力(Temporal Self-Attention):通过循环融合历史BEV信息,提取时间信息,提升对移动物体速度估计的准确性,并有助于检测严重遮挡物体,且计算开销小。
部署环境要求&最佳实践建议
| 部署要求 | 最佳实践 | |
|---|---|---|
| CPU | 按需 | 建议按表单默认值及以上 |
| 内存 | 按需 | 建议按表单默认值及以上 |
| GPU | 24G以上显存 | 建议24G以上显存 |
| CDS | 按需 | 按需 |
| 其它 | 如果更改了默认的数据集、存储挂载地址、代码地址,需要同时更改对应的脚本配置 | 若想获得最佳训练性能,建议将预置数据转储至PFS或CFS,转储方式见文末 |
使用说明
1. 创建与登录开发机
根据部署环境要求成功创建开发机后,点击登录开发机,进入开发机webIDE,并打开VScode中的terminal

- 代码保存路径:/root/workspace/BEVFormer
- 数据默认挂载路径:/mnt/dataset/autodrive
- 虚拟环境名:uniad_new
2. 启动训练
- 在试用案例之前,请确保已挂载了案例所需的数据集,否则脚本无法正常运行,可在脚本内更改数据集地址配置
- 若想获得最佳训练性能,建议将预置数据转储至PFS或CFS,转储方式见文末
2.1 一键启动训练
可以通过脚本,一键启动(单机or多机)快速训练。
Bash
1# 设置数据路径,nuscenes数据默认路径/mnt/dataset/autodrive
2export DATA_PATH=/mnt/dataset/autodrive
3# 设置训练配置文件
4export CONFIG=projects/configs/bevformer/bevformer_base.py
5# 设置训练使用gpu卡数,默认使用全部gpu
6export GPUS=$(nvidia-smi --query-gpu=gpu_name --format=csv,noheader | wc -l)
7# 设置训练结果保存路径,默认/root/workspace/BEVFormer/work_dir
8export WORK_DIR=/root/workspace/BEVFormer/work_dir
9
10cd /root/workspace/BEVFormer
11source /root/workspace/BEVFormer/env_bevformer.sh
12
13export PYTHONPATH=/root/workspace/BEVFormer:$PYTHONPATH
14cd /root/workspace/BEVFormer && \
15rm -rf ./data && ln -sf $DATA_PATH ./data
16
17NNODES=${NNODES:-1}
18NODE_RANK=${NODE_RANK:-0}
19PORT=${PORT:-29500}
20MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"}
21
22PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \
23
24python -m torch.distributed.launch \
25 --nnodes=$NNODES \
26 --node_rank=$NODE_RANK \
27 --master_addr=$MASTER_ADDR \
28 --nproc_per_node=$GPUS \
29 --master_port=$PORT \
30 tools/train.py \
31 $CONFIG \
32 --seed 0 \
33 --work-dir $WORK_DIR \
34 --launcher pytorch ${@:3} 2>&1 | tee output.log
2.2. 分步训练
分步进行训练任务,可以自定义训练相关参数信息。
2.2.1. 在环境变量中设置相关参数
若不修改默认配置,可跳过此步骤
Bash
1# 设置数据路径,nuscenes数据默认路径/mnt/dataset/autodrive
2export DATA_PATH=/mnt/dataset/autodrive
3# 设置训练配置文件
4export CONFIG=projects/configs/bevformer/bevformer_base.py
5# 设置训练使用gpu卡数,默认使用全部gpu
6export GPUS=$(nvidia-smi --query-gpu=gpu_name --format=csv,noheader | wc -l)
7# 设置训练结果保存路径,默认/root/workspace/BEVFormer/work_dir
8export WORK_DIR=/root/workspace/BEVFormer/work_dir
2.2.2. 激活模型运行虚拟环境
Bash
1cd /root/workspace/BEVFormer
2source /root/workspace/BEVFormer/env_bevformer.sh
2.2.3. 启动模型训练
Bash
1export PYTHONPATH=/root/workspace/BEVFormer:$PYTHONPATH
2cd /root/workspace/BEVFormer && \
3rm -rf ./data && ln -sf $DATA_PATH ./data
4
5NNODES=${NNODES:-1}
6NODE_RANK=${NODE_RANK:-0}
7PORT=${PORT:-29500}
8MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"}
9
10PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \
11
12python -m torch.distributed.launch \
13 --nnodes=$NNODES \
14 --node_rank=$NODE_RANK \
15 --master_addr=$MASTER_ADDR \
16 --nproc_per_node=$GPUS \
17 --master_port=$PORT \
18 tools/train.py \
19 $CONFIG \
20 --seed 0 \
21 --work-dir $WORK_DIR \
22 --launcher pytorch ${@:3} 2>&1 | tee output.log
3. 查看训练结果
训练结果保存在$WORK_DIR下,包含训练日志以及模型权重文件,使用其他保存路径可以修改环境变量$WORK_DIR。
Bash
1# 设置训练结果保存路径,默认/root/workspace/BEVFormer/work_dir
2export WORK_DIR=/root/workspace/BEVFormer/work_dir
可在路径下查看:
- 完整训练日志: output.log
- 最终模型权重:latest.pth
附: BOS数据转储PFS方式
- 挂载PFS或CFS
可以在创建或者更新开发机配置时,选择存储挂载,选择集群对应的PFS或者CFS,可自定义挂载路径

- 将预置数据(BOS)拷贝到对应的PFS或CFS路径
Bash
1#命令格式 cp -rv 源路径 目标路径
2cp -rv bos路径 PFS或CFS路径
3#命令示例 假设bos挂载地址为/mnt/dataset/autodrive PFS挂载地址为/mnt/pfs/urvmsq
4cp -rv /mnt/dataset/autodrive/ /mnt/pfs/urvmsq/
