Bench2Drive:闭环端到端自动驾驶基准完整指南
【免费下载链接】Bench2Drive[NeurIPS 2024 Datasets and Benchmarks Track] Closed-Loop E2E-AD Benchmark Enhanced by World Model RL Expert项目地址: https://gitcode.com/gh_mirrors/ben/Bench2Drive
Bench2Drive 是 NeurIPS 2024 发布的闭环端到端自动驾驶基准:13638 个专家数据片段、220 条闭环评测路线、12 项多能力指标。本文带你从下载数据到算出驾驶得分,一次跑通。
图 1:Bench2Drive 三大支柱 —— 左侧是 RL 专家 Think2Drive 生成的大规模训练集,中间是准真实场景闭环评测,右侧是多维度能力评估报告
🚗 它解决了什么问题
做端到端自动驾驶研究时,你大概率撞过这三堵墙:
- 缺高质量训练数据:模型想要"会开车"的专家轨迹,但公开数据要么质量参差,要么标注不全。Bench2Drive 由世界模型强化学习专家 Think2Drive 统一采集,Full 集共 13638 个片段、约 4TB,每个片段含 9 路相机、1 个激光雷达、5 个毫米波雷达,外加深度/语义/实例分割掩码和逐帧标注。
- 闭环评测难跑通:在 CARLA 里真开车评测,进程易崩、脚本各写各的、多卡不会切。Bench2Drive 把 CARLA 0.9.15 的 Leaderboard 整套封装好:220 条路线覆盖 19 个城镇与多种天气,配一键 debug 与多卡并行脚本。
- 单一分数说不清好坏:只看驾驶得分,你不知道模型是合流弱还是急刹弱。Bench2Drive 额外输出 12 项细分能力成功率(Merging、Overtaking、Emergency Brake、Give Way、Traffic Signs 等)与驾驶效率、舒适度指标。
图 2:闭环评测的典型场景 —— 城市路口、多车排队、红绿灯与交通流同时生效,这正是开环指标测不到的部分
⚙️ 核心机制:一次讲透
闭环评测:输入 → 处理 → 输出
一次评测的完整流程可以拆成三步:
- 输入:你的 agent 只被允许使用"合法传感器"(9 路相机、1 个激光雷达、5 个雷达、canbus 自车状态)加导航指令,输出 2Hz 的油门、转向、刹车三控制量。
- 处理:
leaderboard_evaluator自动拉起 CARLA 0.9.15,读取路线 XML(城镇、天气、起终点、途经点),由 scenario_runner/ 调度背景车流与红绿灯逻辑,然后你的 agent 在仿真里真刀真枪地开完整个路线。 - 输出:每条路线产出一个 json(驾驶得分、违规计数、最终状态),220 条汇总后得到总分与多能力成绩。
数据从哪来:Think2Drive 专家
训练集不是人工采集的。Think2Drive 在潜在世界模型里用强化学习学会开车,再回到 CARLA 中执行策略,采集代码 tools/data_collect.py 直接对接 CARLA API,逐帧落盘为图像、点云、雷达与标注,最大限度减少信息损失。你可以先下载 10 个片段的 Mini 集看结构,再决定是否拉 400GB 的 Base 集。
图 3:评测时仿真器内的视角 —— 左侧面板显示速度、油门/转向/刹车、车辆与交通流数量,与 agent 拿到的输入同源
📁 数据与文件布局
仓库顶层结构:
Bench2Drive/ ├── assets/ # 论文示意图与演示视频 ├── docs/ # 标注说明 anno.md、三个子集的文件清单 ├── leaderboard/ # 评测框架:CARLA 自动拉起、agent 挂载、结果落盘 │ ├── data/ # 220 条路线 XML,含 Dev10 快速验证集 │ └── scripts/ # debug / 多卡并行评测一键脚本 ├── scenario_runner/ # 场景执行引擎:交通流管理、判据与指标记录 └── tools/ # 数据可视化、视频生成、指标统计脚本数据集里每个片段(clip)按场景名/Town_天气_路线/组织:
anno/:00000.json.gz,自车位姿速度、三控制量、所有交通参与者 3D 边界框、各传感器内外参(世界→相机、相机→自车矩阵齐全)camera/:9 个视角的 RGB(JPG,质量 20)+ 深度/语义/实例分割图lidar/:00000.laz点云(laszip 压缩);radar/:00000.h5(HDF5)expert_assessment/:00000.npz,专家策略评估信息
🚀 最短上手路径
环境要求:
- Ubuntu + Python 3.7 或 3.8(CARLA 0.9.15 的 wheel 只支持这两个版本,Python 3.9+ 会报错)
- NVIDIA GPU;注意 CARLA 渲染由命令行
-graphicsadapter指定,与CUDA_VISIBLE_DEVICES无关 - 可用 Vulkan(lavapipe 软渲染也能跑,但更慢)
- 克隆代码:
git clone https://gitcode.com/gh_mirrors/ben/Bench2Drive - 装 CARLA 0.9.15(评测框架绑死这个版本):
wget https://carla-releases.s3.us-east-005.backblazeb2.com/Linux/CARLA_0.9.15.tar.gz tar -xvf CARLA_0.9.15.tar.gz cd CARLA_0.9.15/Import && wget https://carla-releases.s3.us-east-005.backblazeb2.com/Linux/AdditionalMaps_0.9.15.tar.gz cd .. && bash ImportAssets.sh # 把 carla egg 指进你的 python3.7/3.8 环境(设好 CARLA_ROOT) echo "$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.15-py3.7-linux-x86_64.egg" >> $CONDA_PREFIX/lib/python3.7/site-packages/carla.pth- 下载 Mini 集验证:
bash tools/download_mini.sh(10 个片段,约 4GB;Base 集约 400GB、Full 集约 4TB,文件清单见 docs/) - 接入并 debug 你的 agent:把 agent 放进
leaderboard/team_code/、模型目录软链到仓库根目录,然后bash leaderboard/scripts/run_evaluation_debug.sh(需先设置GPU_RANK、TEAM_AGENT、TEAM_CONFIG)。这一步的作用是确认你的模型在真实闭环里能输出合法控制,比直接跑全量省几十小时。 - 统计指标,一条流水走完:
python tools/merge_route_json.py -f your_json_folder/ # 合并 220 条 → 驾驶得分/成功率 python tools/ability_benchmark.py -r merge.json # 12 项多能力成功率 python tools/efficiency_smoothness_benchmark.py -f merge.json -m your_metric_folder/🔍 深度使用
Dev10 快速验证集:10 个片段跑消融
- 是什么:从 220 条官方路线中人工挑出的 10 个片段,既难又有代表性、方差低,路线文件为 leaderboard/data/drivetransformer_bench2drive_dev10.xml。
- 怎么用:评测时把路由列表换成它,单次评测时间缩短到原来的约 1/20,适合参数调优与消融实验。
- 注意什么:只在 Dev10 上调参,最终对比必须回 220 全量跑一遍,否则容易过拟合这 10 条路线。
多能力指标:把"能不能开"拆成 12 个问题
- 是什么:按场景名把 220 条路线归入 Merging、Overtaking、Emergency Brake、Give Way、Traffic Signs 等能力组,统计各组成功率。
- 怎么用:上一步的
tools/ability_benchmark.py直接输出雷达图式分组成绩。 - 注意什么:官方当前使用的结果版本是 V0.0.3(修复了能力统计笔误),对比不同论文时先核对版本,旧版 V0.0.1/0.0.2 已弃用。
图 4:V0.0.3 官方基准表 —— 上半部分是各方法闭环驾驶得分与成功率,下半部分是五类能力成功率,DriveAdapter 以 42.08 的能力均值领先
可视化与视频:排查问题的放大镜
- 是什么:
tools/visualize.py可把自车轨迹、HD-Map(车道中心线、拓扑、触发体积,*.npz格式)与标注叠加展示;tools/generate_video.py把逐帧 RGB 合成带 canbus 信息的调试视频。 - 怎么用:
python tools/visualize.py -f 片段路径 -m maps/Town13_lanemarkings.npz,再python tools/generate_video.py -f your_rgb_folder/。 - 注意什么:数据涉及 World、Ego、LiDAR、Compass 四种坐标系,可视化前先分清标注字段属于哪个系;RGB 存的是 JPG 质量 20 的有损压缩,推理时对传感器图像做同样压缩,可避免训练-推理分布差。
图 5:指标分析示例 —— 自车与对向车辆距离随帧号变化,这类曲线用于复盘急刹、让行类场景的决策时机
⚠️ 踩坑与 FAQ
现象:合并后驾驶得分为 0,或指标脚本报错。原因:merge_route_json.py默认结果里必须恰好有 220 条路线,缺的路线按 0 分计,日志缺失(如 CARLA 崩掉没落盘)会让结果不全。 解法:评测前先检查 json 数量;Failed/Crashed 状态的路线可以保留(按失败计),但要补齐文件再合并;多卡评测脚本建议加自动重启循环,CARLA 崩溃属常见现象。
现象:CARLA 启动秒退,或评测中途挂死、端口冲突。原因:多为 Vulkan 环境问题或上一轮残留的僵尸进程;另外 CARLA 不受CUDA_VISIBLE_DEVICES控制,-graphicsadapter编号在某些机器上不连续(4 卡可能对应 0/2/3/4)。 解法:多次执行bash tools/clean_carla.sh清进程;用vulkaninfo | head -n 5检查 Vulkan,必要时sudo apt install vulkan-tools vulkan-utils重装;端口用lsof -i:你的端口排查,避免使用 10000 以下端口;慢机器记得把脚本里的 sleep 时间调长。
现象:训练数据里"行人速度全是 0、静态车位置漂移"。原因:这些是 CARLA API 的已知 bug,不是你的采集代码错了。 解法:行人速度需自行用相邻帧位置差分;静态车(state=="static")只信center与extent(注意 extent 是长宽高的一半),世界系框用world2vehicle的逆矩阵变换;触发体积的旋转是相对父物体的,要加上父物体旋转才是全局值。完整清单见 docs/anno.md。
Bench2Drive = 大规模专家训练数据 + 标准化闭环评测 + 12 项多能力指标,一个仓库闭环覆盖。 建议路径:Dev10 调参 → Mini 集验证 → Base/Full 全量对比。 核心资料:docs/anno.md(标注与坐标系)、leaderboard/scripts/(评测脚本)、tools/(指标与可视化工具)。
【免费下载链接】Bench2Drive[NeurIPS 2024 Datasets and Benchmarks Track] Closed-Loop E2E-AD Benchmark Enhanced by World Model RL Expert项目地址: https://gitcode.com/gh_mirrors/ben/Bench2Drive
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考