在自动驾驶系统中,BEV(Bird’s Eye View)+ Transformer 主要应用于 感知与环境建图(Perception & Scene Understanding) 环节,尤其是在 多传感器融合、目标检测、语义分割、轨迹预测 等任务中。
应用环节 | BEV+Transformer 的作用 |
---|---|
感知(Perception) | 多摄像头图像融合成BEV视角,进行目标检测、语义分割 |
预测(Prediction) | 基于BEV表示预测其他交通参与者的未来轨迹 |
规划(Planning) | 利用BEV地图进行路径规划和决策 |
多传感器融合 | 将图像、雷达、IMU等数据统一到BEV空间中,Transformer进行融合建模 |
一些代表性的模型,比如:
BEVFormer 是一款在自动驾驶感知领域广受关注的模型,首次发表于 ECCV 2022,核心思想是将多摄像头图像通过 时空 Transformer 融合为统一的 BEV(Bird’s Eye View)表示,以支持 3D 目标检测、语义分割等任务。
BEVFormer 的整体架构由三个关键模块组成:
BEVFormer 及其变体已被广泛应用于学术研究和工业界:
特性 | 描述 |
---|---|
纯视觉输入 | 不依赖激光雷达,仅用多摄像头图像实现高精度感知 |
时空融合 | 同时建模空间和时间信息,提升遮挡场景下的鲁棒性 |
稀疏注意力机制 | 显著降低计算复杂度,适合部署 |
开源生态完善 | 提供完整代码、模型、文档,便于复现与扩展 |
主要还是需要带显卡的机器,操作系统Linux的,以下是基于 Ubuntu + Conda 环境的完整训练流程:
git clone https://github.com/fundamentalvision/BEVFormer.git
cd BEVFormer
conda create -n bev python=3.8 -y
conda activate bev
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
pip install -U openmim
pip install mmcv-full==1.4.0
pip install mmdet==2.14.0
pip install mmsegmentation==0.14.1
git clone https://github.com/open-mmlab/mmdetection3d.git
cd mmdetection3d
git checkout v0.17.1
python setup.py install
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes --version v1.0-mini --canbus ./data
./tools/dist_train.sh projects/configs/bevformer/bevformer_tiny.py 1
./tools/dist_test.sh projects/configs/bevformer/bevformer_tiny.py ckpts/bevformer_tiny_epoch_24.pth 1
模型训练最主要的是吃显卡资源,以下是比较推荐的
bevformer_tiny
:约 6.5GBbevformer_base
:约 28GBbevformer_small.py
:适中性能与资源消耗在自己的数据集上训练 BEVFormer(或 BEVFormer++)是完全可行的,但需要满足一定的数据格式和采集要求。
数据类型 | 描述 |
---|---|
多摄像头图像 | 通常为 6 个摄像头(前、后、左、右、左前、右前),每帧同步采集 |
相机内参(intrinsics) | 每个摄像头的焦距、主点等参数 |
相机外参(extrinsics) | 每个摄像头相对于车辆坐标系的位置和姿态 |
车辆位姿(ego pose) | 每帧车辆在世界坐标系中的位置和朝向(通常来自 GPS+IMU) |
时间戳 | 用于帧间对齐和时序建模 |
BEVFormer 使用的数据格式与 nuScenes 数据集类似,建议参考其结构:
data/
└── my_dataset/
├── samples/ # 原始图像(按摄像头分类)
├── sweeps/ # 历史帧图像(用于时序建模)
├── maps/ # 可选语义地图
├── annotations/ # 目标检测标注(如 3D box)
├── calib/ # 相机内外参
├── ego_pose.json # 每帧车辆位姿
└── timestamps.json # 每帧时间戳
为了让 BEVFormer 识别你的数据,需要将其转换为 MMDetection3D 支持的格式:
ego_pose.json
、calib.json
等文件。create_data.py
脚本或自定义转换脚本。bevformer_tiny.py
,修改以下字段:
dataset_type
:改为你的数据类名data_root
:指向你的数据路径class_names
:改为你的目标类别camera_names
:改为你的摄像头名称列表mmdetection3d/datasets
中添加你的数据类(继承 Custom3DDataset
)load_annotations()
和 get_data_info()
方法./tools/dist_train.sh configs/my_bevformer_config.py 1
方式 | 描述 | 推荐工具 |
---|---|---|
车载采集 | 安装多摄像头系统,同步采集图像和 GPS/IMU | ROS + Realsense/Daheng/Blackfly |
仿真采集 | 使用仿真平台生成数据 | Carla、LGSVL、AirSim |
手动采集 | 单摄像头采集 + 后处理同步 | OpenCV + GPS Logger |
如果其他模型也感兴趣,欢迎大家随时讨论!