InterFuser
InterFuser 是一款专为提升自动驾驶安全性而设计的开源算法框架,曾荣获 CoRL 2022 会议认可并在 CARLA 自动驾驶排行榜上取得领先成绩。它主要解决自动驾驶系统在复杂路况下感知不全、决策不够安全可靠的难题。通过深度融合摄像头、激光雷达等多模态传感器的多视角数据,InterFuser 能够构建对周围环境的全面理解。
其核心亮点在于引入了“可解释的传感器融合 Transformer"架构。与传统黑盒模型不同,InterFuser 在内部生成具有明确语义的中间特征,这些特征不仅增强了场景理解的深度,还能作为安全约束,确保车辆的驾驶动作始终处于安全范围内,从而显著降低事故风险。
该项目非常适合自动驾驶领域的研究人员、算法工程师及相关专业的学生使用。用户可以在 CARLA 仿真环境中利用 InterFuser 进行模型训练、评估及二次开发,探索更安全、更透明的端到端自动驾驶方案。虽然项目包含详细的环境搭建与数据生成指南,但由于涉及深度学习与仿真器配置,建议使用者具备一定的编程基础与人工智能背景。
使用场景
某自动驾驶研发团队正在 CARLA 仿真环境中测试其城市道路导航算法,试图解决复杂路口多传感器数据融合难、突发状况应对不安全的问题。
没有 InterFuser 时
- 感知盲区频发:单一视角摄像头或独立处理的雷达数据无法有效互补,导致车辆在湿滑清晨等恶劣天气下难以识别侧方突然切入的车辆。
- 决策缺乏可解释性:黑盒模型输出的驾驶指令(如急转弯或急刹)缺乏中间语义特征支撑,工程师难以定位是传感器故障还是逻辑错误导致了危险操作。
- 安全约束薄弱:传统融合方法仅输出最终动作,未在特征层面构建“安全集”约束,使得车辆在面对行人鬼探头时容易做出超出物理极限的规避动作。
- 长尾场景泛化差:在未见过的复杂交通流(如无保护左转配合拥堵车流)中,模型因缺乏对场景的全面理解而频繁接管或碰撞。
使用 InterFuser 后
- 全模态深度融合:InterFuser 利用 Transformer 架构同时处理多视角摄像头图像与激光雷达点云,显著提升了雨天及遮挡环境下的目标检测准确率,消除了感知盲区。
- 中间特征可视化:系统生成具有语义信息的中间可解释特征,让开发人员能清晰看到模型如何理解“前方有车”或“红灯亮起”,极大缩短了调试周期。
- 动作安全集约束:通过解析中间特征,InterFuser 将驾驶动作严格限制在理论安全范围内,确保即使在极端突发状况下,车辆的转向和制动也符合物理安全边界。
- SOTA 级场景理解:凭借对多模态信息的全面建模,该方案在 CARLA 排行榜上达到当时最先进水平,能够流畅处理高难度的无保护左转和密集车流博弈。
InterFuser 通过可解释的多传感器融合机制,不仅让自动驾驶汽车“看得更全”,更让其决策过程“想得明白且行得安全”。
运行环境要求
- Linux
需要 NVIDIA GPU(用于运行多实例 CARLA 服务器和训练),具体型号未说明,但示例脚本显示支持多卡并行(CUDA_VISIBLE_DEVICES=0-7),需安装 NVIDIA Container Toolkit 以支持 Docker 运行 CARLA。
未说明

快速开始
InterFuser: 基于可解释传感器融合Transformer的安全增强自动驾驶

Hao Shao、Letian Wang、RuoBing Chen、Hongsheng Li、Yu Liu
本仓库包含论文《基于可解释传感器融合Transformer的安全增强自动驾驶》的代码实现。该工作对多模态、多视角传感器信息进行充分处理与融合,以实现全面的场景理解。此外,我们的框架还能生成中间可解释特征,这些特征具有更丰富的语义信息,并被用于更好地将行为约束在安全集合内。
截至2022年6月11日,我们的方法在CARLA AD Leaderboard上取得了新的最先进水平。
最新消息
[12/21] 现在,类似的数据集可以在Hugging Face或OpenXLab上找到。唯一的区别在于,该数据集的采样率为10Hz,而InterFuser的数据集为2Hz。
演示视频
目录
设置
安装Anaconda
wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
bash Anaconda3-2020.11-Linux-x86_64.sh
source ~/.profile
克隆仓库并构建环境
git clone https://github.com/opendilab/InterFuser.git
cd InterFuser
conda create -n interfuser python=3.7
conda activate interfuser
pip3 install -r requirements.txt
cd interfuser
python setup.py develop
下载并设置CARLA 0.9.10.1
chmod +x setup_carla.sh
./setup_carla.sh
easy_install carla/PythonAPI/carla/dist/carla-0.9.10-py3.7-linux-x86_64.egg
注意: 我们选择使用setuptools==41版本进行安装,因为该版本支持easy_install功能。安装完carla.egg后,可以再安装最新版的setuptools,以避免出现No module named distutils_hack的错误。
注意: 常见问题解答:https://github.com/opendilab/InterFuser/issues/107
数据集
数据是通过CARLA 0.9.10.1中的leaderboard/team_code/auto_pilot.py脚本,在8个CARLA城镇中,利用leaderboard/data目录下提供的路线和场景文件生成的。
收集到的数据集结构如下:
- TownX_{tiny,short,long}:对应不同的城镇和路线文件
- routes_X:包含单条路线的数据
- rgb_{front, left, right, rear}:分辨率为400x300的多视角相机图像
- seg_{front, left, right}:对应的分割图像
- depth_{front, left, right}:对应的深度图像
- lidar:.npy格式的三维点云
- birdview:用于训练LBC所需的俯视分割图像
- 2d_bbs_{front, left, right, rear}:对应相机视角下的不同目标的二维边界框
- 3d_bbs:不同目标的三维边界框
- affordances:不同类型的操作可能性
- measurements:包含自车的位置、速度等元数据
- other_actors:包含周围车辆及交通信号灯的位置、速度等元数据
数据生成
使用多个CARLA服务器生成数据
除了数据集之外,我们还提供了所有用于生成数据的脚本,并且可以根据不同CARLA版本的需求进行修改。数据集是由一个基于规则的专家智能体在不同天气和城镇条件下收集的。
启动CARLA服务器
# 启动14个CARLA服务器:IP [localhost], 端口 [20000 - 20026]
cd carla
CUDA_VISIBLE_DEVICES=0 ./CarlaUE4.sh --world-port=20000 -opengl &
CUDA_VISIBLE_DEVICES=1 ./CarlaUE4.sh --world-port=20002 -opengl &
...
CUDA_VISIBLE_DEVICES=7 ./CarlaUE4.sh --world-port=20026 -opengl &
关于Docker的设置说明请参见这里。拉取CARLA 0.9.10.1的Docker镜像docker pull carlasim/carla:0.9.10.1
Docker 18:
docker run -it --rm -p 2000-2002:2000-2002 --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=0 carlasim/carla:0.9.10.1 ./CarlaUE4.sh --world-port=2000 -opengl
Docker 19:
docker run -it --rm --net=host --gpus '"device=0"' carlasim/carla:0.9.10.1 ./CarlaUE4.sh --world-port=2000 -opengl
如果Docker容器无法正常启动,请添加环境变量-e SDL_AUDIODRIVER=dsp
运行自动驾驶程序
生成批量采集数据的脚本。
cd dataset
python init_dir.py
cd ..
cd data_collection
python generate_yamls.py # 可以调整帧率、路点分布强度等...
# 如果不需要所有天气条件,可以修改以下脚本
python generate_bashs.py
python generate_batch_collect.py
cd ..
运行所需城镇和路线类型的批量执行脚本。
bash data_collection/batch_run/run_route_routes_town01_long.sh
bash data_collection/batch_run/run_route_routes_town01_short.sh
...
bash data_collection/batch_run/run_route_routes_town07_tiny.sh
注1: 如果您的数据集不需要全部14种天气条件,可以修改上述代码和脚本。
注2: 我们还在leaderboard/team_code/auto_pilot.py中提供了7种夜间天气条件,您可以修改上述代码和脚本以收集夜间数据集。
使用单个CARLA服务器生成数据
使用单个CARLA服务器,运行自动驾驶程序开始数据生成。
carla/CarlaUE4.sh --world-port=2000 -opengl
./leaderboard/scripts/run_evaluation.sh
用于数据生成的专家智能体定义在leaderboard/team_code/auto_pilot.py中。需要设置的不同参数则在leaderboard/scripts/run_evaluation.sh中指定。
一些实用工具
我们在 tools/data 中提供了一些有用的 Python 脚本,例如:
batch_merge_data.py:将多个碎片化的数据合并为一个文件,随后可以修改interfuser/timm/data/carla_dataset.py以减少 IO 时间。batch_stat_data.py:获取已收集数据的统计结果。batch_preload.py:计算一条路线中所有帧的航点,并保存到一个文件中。batch_stat_blocked_data.py和batch_recollect_blocked_data.py:查找并删除自动驾驶车辆长时间被堵住的帧。
训练
cd interfuser
bash scripts/train.sh
GPU_NUM=8
DATASET_ROOT='dataset/'
./distributed_train.sh $GPU_NUM $DATASET_ROOT --dataset carla --train-towns 1 2 3 4 6 7 10 --val-towns 5 \
--train-weathers 0 1 2 3 4 5 6 7 8 9 --val-weathers 10 11 12 13 \
--model interfuser_baseline --sched cosine --epochs 25 --warmup-epochs 5 --lr 0.0005 --batch-size 16 -j 16 --no-prefetcher --eval-metric l1_error \
--opt adamw --opt-eps 1e-8 --weight-decay 0.05 \
--scale 0.9 1.1 --saver-decreasing --clip-grad 10 --freeze-num -1 \
--with-backbone-lr --backbone-lr 0.0002 \
--multi-view --with-lidar --multi-view-input-size 3 128 128 \
--experiment interfuser_baseline \
--pretrained
DATASET_ROOT 需要一个名为 dataset_index.txt 的文件来列出训练和评估数据。格式应如下所示:
route_path_dir data_frames_in_this_dir
route_path_dir 应该是相对于 DATASET_ROOT 的相对路径,训练代码会将 DATASET_ROOT 和 route_path_dir 拼接成完整的路径来加载数据。
例如:
weather-7/data/routes_town06_long_w7_11_28_18_28_35/ 1062
weather-2/data/routes_town01_short_w2_11_16_08_27_10/ 1785
weather-2/data/routes_town01_short_w2_11_16_09_55_05/ 918
weather-2/data/routes_town02_short_w2_11_16_22_55_25/ 134
weather-2/data/routes_town01_short_w2_11_16_11_44_08/ 569 ...
其中,1062 表示 weather-7/data/routes_town06_long_w7_11_28_18_28_35/rgb 或 weather-7/data/routes_town06_long_w7_11_28_18_28_35/rgb_front 等目录下的帧数。
评估
启动一个 CARLA 服务器(如上所述),并运行所需的智能体。充分的路线和场景文件已在 leaderboard/data 中提供,所需变量需要在 leaderboard/scripts/run_evaluation.sh 中设置。
更新 leaderboard/scripts/run_evaluation.sh,加入以下代码以在 Town05 Long Benchmark 上评估模型:
export CARLA_ROOT=/path/to/carla/root
export ROUTES=leaderboard/data/evaluation_routes/routes_town05_long.xml
export TEAM_AGENT=leaderboard/team_code/interfuser_agent.py
export TEAM_CONFIG=leaderboard/team_code/interfuser_config.py
export CHECKPOINT_ENDPOINT=results/interfuser_result.json
export SCENARIOS=leaderboard/data/scenarios/town05_all_scenarios.json
CUDA_VISIBLE_DEVICES=0 ./leaderboard/scripts/run_evaluation.sh
使用 ROUTES=leaderboard/data/42routes/42routes.xml 和 SCENARIOS=leaderboard/data/42routes/42scenarios.json 来运行 CARLA 42 路线基准测试。
预训练权重
我们还提供了可供直接评估的示例模型权重,可从 这里 下载。该模型需要移动到 leaderboard/team_code/ 目录下。
注意: 该模型是在包含若干城镇和天气条件的部分完整数据集上训练的。
致谢
本实现基于多个仓库中的代码。
引用
如果您认为我们的仓库、数据集或论文有用,请按以下方式引用我们:
@article{shao2022interfuser,
title={Safety-Enhanced Autonomous Driving Using Interpretable Sensor Fusion Transformer},
author={Hao Shao and Letian Wang and RuoBing Chen and Hongsheng Li and Yu Liu},
journal={arXiv preprint arXiv:2207.14024},
year={2022},
}
许可证
本仓库中的所有代码均采用 Apache License 2.0 许可证。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备