导读
目前,自动驾驶仿真方法不仅可以降低自动驾驶汽车在实际场景中测试所带来的高昂成本,还能够提供各种具有挑战性的场景进行测试,以确保自动驾驶安全性。本文针对现有自动驾驶仿真方法不够直观且无法与人类交互的局限性,提出了Talk2Traffic,以支持用户的多模态输入来生成各种交通场景。
项目主页:Talk2Traffic
部署自动驾驶汽车(AVs)需要在各种具有挑战性的场景中进行测试,以确保安全性和可靠性,但是采集现实世界数据仍然成本高昂。尽管基于仿真的方法提供了成本效益较高的替代方案,但是大多数现有方法缺乏对生成场景直观、交互式编辑的足够支持。本文提出了Talk2Traffic,这是一种利用多模态大型语言模型(MLLMs)实现交互式、可编辑交通场景生成的新框架。Talk2Traffic允许人类用户通过多模态输入(文本、语音和草图)来生成各种交通场景。本文方法首先采用基于MLLM的解释器从这些输入中提取结构化表示。然后,使用检索增强的生成机制将这些表示转换为可执行的Scenic代码,以缓解幻觉问题并且确保语法的正确性。此外,人类反馈引导模块能够通过自然语言指令对场景进行迭代细化和编辑。实验表明,Talk2Traffic在生成具有挑战性的场景方面优于最先进的方法。定性评估进一步表明,该框架可以处理不同的输入模态,并且支持场景编辑。
近年来,自动驾驶汽车(AVs)取得了显著进展,但是安全性问题一直对其在公共道路上的广泛部署构成了重大挑战。确保自动驾驶汽车的可靠性需要在各种复杂的交通场景中进行大量训练和验证,这些交通场景涵盖了现实世界驾驶条件的全部范围。尽管现有的大规模自动驾驶数据集(包括Waymo Open Dataset、nuScenes和Argoverse)提供了有价值的交通数据,但是采集和标注现实世界场景的过程仍然成本非常高昂且耗时。此外,这些数据集固有地捕获了可能发生的交通交互的有限子集,这使自动驾驶汽车容易受到不可预见场景的影响。这一局限性促使通过基于仿真的交通场景生成来开发更具成本效益和灵活性的方法。
在仿真环境中生成交通场景的现有方法已经朝着几个方向发展。传统的基于规则的方法(例如CARLA ScenarioRun)通过参数化模板实现了结构化场景配置,在预定义条件下提供了可重复的测试用例。然而,它们对人工制定规则的依赖性限制了场景的多样化,并且需要广泛的领域专业知识来建模复杂的智能体交互。数据驱动的方法(特别是那些利用扩散模型的方法)通过从现实世界数据分布中学习,在生成多样化且逼真的交通场景方面展现出有前景的结果。这些方法可以捕获难以通过显式规则指定的复杂交互模式。然而,这些方法的一个关键局限性在于,它们无法充分支持指令引导的交互式编辑。因此,用户无法在生成过程中通过反馈来动态调整智能体行为或者修改场景布局。这一局限性阻碍了交通场景的高效构建和迭代编辑,无法满足定制的测试需求。
多模态大型语言模型(MLLMs)的兴起为解决这一局限性提供了机会。GPT-4、Llama和Qwen等最先进的MLLMs经过互联网规模的多模态数据(包括文本、图像和视频)的训练,在统一的跨模态理解和推理方面展现出前所未有的能力。在此基础上,这些模型可以理解复杂的空间关系和时间动态变化,这些对交通场景生成是至关重要的。此外,MLLMs在遵循交互式指令方面的固有优势自然地与需要逐步改进或者修改交通场景的人类设计师的迭代工作流程相符合。然而,尽管具有这些有前景的特点,但是现有交通场景生成方法尚未充分探索MLLMs在实现交通场景的交互式编辑和语义控制方面的潜力。
本文提出了Talk2Traffic,这是一种利用MLLMs的能力来实现交互式且可编辑交通场景生成的新框架,如图1所示。
图1|Talk2Traffic使人类设计师能够通过多模态输入(文本描述、语音命令和手绘草图)来构建交通场景
本文框架通过专门的解释器来处理多模态输入(文本、语音和草图),该解释器提取交通场景的结构化表示。然后,使用检索增强生成(RAG)方法将这些表示转换为可执行的Scenic代码,该方法将MLLMs的输出结果置于代码片段中,有效地缓解了幻觉问题并且确保了语法正确性。生成的场景可以通过人因闭环控制流程中的自然语言反馈进行迭代优化或者编辑。
本项工作的主要贡献包括:
1)本文引入了一种多模态指令接口,它使用户能够通过文本描述、语音命令和基于草图的图像来指定交通场景,从而提高了场景构建的直观性和表现力;
2)本文开发了一种检索增强的代码生成机制,它使用了高置信度场景片段精标库,以缓解幻觉问题并且确保有效的仿真器性能规格;
3)本文实现了一个人类反馈引导模块,它能够对生成的场景进行优化和编辑,从而支持实体行为、环境条件和道路布局等各种调整。
本节介绍了所提出的Talk2Traffic框架,该框架利用MLLMs为自动驾驶汽车测试实现了交互式且可编辑的交通场景生成。图2展示了整体架构,它由三个主要模块组成:(1)多模态指令解释器,它处理包括文本、语音和草图在内的各种用户输入;(2)检索增强代码生成模块,它将结构化表示转换为可执行的Scenic代码;(3)人类反馈引导机制,它能够迭代编辑所生成的场景。
图2|Talk2Traffic框架的概览
3.1 多模态指令解释器
多模态指令解释器将不同输入模态下的直观人类表达统一并且转换为标准化的结构化表示。然后,这个中间表示将作为后续代码生成过程的基础。
多模态输入处理:Talk2Traffic 接受各种输入模态, 以适应不同的用户偏好和场景描述需求。用户可以通过语音命令或者文本描述 来提供自然语言指令,其中
表示语言词汇,
为最大长度。对于语音输入,本文采用开源的语音到文本的模型 Whisper,它在处理之前将音频信号转换为文本格式。此外,用户可以使用草图图像或者手绘图
来补充描述, 其中
表示 2D RGB 图像空间。
这种多模态方法显著提高了场景规范的表现力和直观性。文本或者语音描述有效地传达了行为属性和时间动态 (例如 “车辆突然刹车”),而草图和绘画擅长传达空间关系和场景布局 (例如,十字路口处车辆的相对位置)。通过结合这些互补的模态,用户可以更自然地表达他们的预期场景。
结构化表示提取:解释器的核心功能是将多模态输入转换为结构化表示,它可以由框架的后续模块进行处理:
(1)
其中,为引导 MLLM 解释过程的任务描述。值得注意的是,用户可以根据他们的偏好和他们希望描述的场景复杂性来提供单一模态输入或者结合多种模态。
结构化表示由多个分量组成:
(2)
其中,描述了地图配置, 包括车道数量、十字路口配置、交通信号灯和其它相关的基础设施元素。分量
捕获了天气和时间条件 (例如, 晴天、阴天、雨天、白天、夜间)。元素
表示场景中的每个实体,其中,
。
场景实体分为两种主要类型:动态参与者和静态元素。动态参与者包括车辆、行人、骑行者和其它交通智能体,其特征是位置和行为属性。静态元素包括交通锥桶、警告标志和其它静止物体,主要由其位置和物理特性定义。
为了确保一致性并且促进下游处理,本文利用GPT-4o将用户的多模态指令转换为标准化的YAML格式。为了提高结构化输出的质量和可靠性,本文在提示GPT-4o时实现了上下文学习技术。该方法为模型提供了几种场景类型的高质量YAML表示示例,有效地引导它生成与用户期望场景一致的结构化输出结果。
3.2 基于场景片段的检索增强代码生成
在多模态指令解释器提取结构化表示的基础上,本节现在着重于将这种表示转换为可执行的仿真场景。本文利用了Scenic,这是一种领域特定的概率编程语言,专门为CARLA等仿真器中的场景规范而设计。Scenic为描述交通场景提供了一种自然语法,并且内置了空间关系和智能体行为的抽象。
尽管GPT-4o等MLLMs在各种任务中展现出卓越的能力,但是直接提示它们生成Scenic代码将带来重大挑战。这些模型往往会产生幻觉,导致语法错误或者引用不存在的APIs。为了解决这些局限性,本文实现了一种检索增强生成(RAG)方法,它将代码生成过程建立在经过验证的Scenic代码片段基础上。与直接从预定义库中检索和应用代码片段的ChatScene不同,本文方法为MLLM提供了生成语法正确的代码的相关示例。这种区别显著提高了灵活性和适应能力,使所提出的Talk2Traffic框架能够处理更多样化、更复杂的交通场景。
Scenic 代码片段数据库和检索:本文构建了一个全面的 Scenic 代码片段数据库来支持 RAG 方法。该数据库是通过适配和扩展官方Scenic 仓库和 ChatScene 提供的代码库中的示例来编译的。这些代码片段经过精心设计,与结构化表示 的分量保持一致。
对于数据库中的每个代码片段,创建对应的自然语言描述,以形成描述-片段对。这些描述旨在以通俗易懂的语言来捕获每个片段的语义含义,使其适合与用户指令进行语义匹配。数据库 可以表示为:
(3)
其中,表示第
个自然语言描述,
表示对应的代码片段。
为了从 中检索给定查询的最相关的代码片段, 使用 Sentence-T5 模型来编码每个描述,以生成嵌入向量:
(4)
其中, 为嵌入向量。类似地,本文编码结构化表示
的每个分量来构建查询向量:
(5)
其中,表示
的一个分量。然后计算每个查询向量和数据库中所有描述向量之间的余弦相似度:
(6)
其中, 表示欧式范数。对于每个分量
,根据计算的相似度得分选择前
个最相似的描述-片段对
。
代码片段生成和集成:这些选定的作为上下文学习的示例, 以引导 MLLM为
中的每个分量生成适当的Scenic代码。本文使用这些示例和目标分量描述来提示GPT-4o:
(7)
其中,为提示模板,它引导模型来生成 Scenic代码,
为生成的代码片段。
最后,本文再次利用GPT-4o将单独生成的代码片段集成到完整的Scenic脚本中:
(8)
其中, 和
分别为地图、天气和智能体分量的生成代码片段,
表示完整的 Scenic 脚本。该集成过程由专门的提示
来引导, 确保了变量声明和引用的一致性,以及整体语法的正确性。
3.3人类反馈引导
尽管最近在交通场景生成方面取得了进展,但是大多数现有方法在根本上缺乏交互式编辑功能,这限制了它们在AV测试工作流程中的实用性。AV测试本质上是迭代式的,需要人类设计人员不断优化场景。此外,当生成的场景不能完美地封装预期的测试用例时,设计人员需要一种方式来提供对需要调整的特定元素的反馈,而不是从头开始重新生成整个场景。
为了应对这些挑战,本文实现了一种人类反馈引导机制,它利用了MLLMs的多轮对话能力。该交互式方法允许用户通过自然语言反馈来编辑和优化场景,同时维持先前交互的上下文。该反馈过程一般表述为:
(9)
其中, 表示第
次迭代的场景脚本,
表示第
次迭代的用户反馈,
为提示模板,它引导编辑和优化过程。
人类反馈机制支持各种类型的场景调整。例如,由于Scenic是一种概率编程语言,用户可以修改参数分布来引入可控的变化。当用户提供反馈(例如,“车辆应该保持更大的跟车距离,但变化较小”)时,Talk2Traffic会调整Scenic代码中的相关概率分布以反映这一要求。类似地,用户可以优化场景实体行为(例如,“让行人更小心地过马路”)、环境条件(例如,“增加降雨强度以测试感知性能”)或者道路布局(例如,“将三车道改为两车道”)。
4.1 设置
本节使用CARLA仿真器来评估Talk2Traffic,该仿真器提供了一个高保真的驾驶环境,它具有逼真的渲染和多样化的道路布局。为了支持所提出的RAG方法,本文构建了一个全面的描述-片段对数据库,它分为三个主要部分:
1)地图配置:63对描述-片段涵盖了各种道路布局、十字路口类型和交通信号灯等基础设施;
2)天气和时间:32对描述-片段描述了不同天气条件(例如,晴天、雨天、阴天、雾天)以及影响能见度和驾驶条件的时段设置;
3)实体规格:188对描述-片段详细描述了各种交通参与者及其行为,包括车辆(乘用车、卡车和摩托车)、行人、骑行者和静态目标(交通锥桶、栅栏)。
在检索过程中,选择前K(K=3)个最相似的描述-片段对来引导代码生成过程。
4.2生成质量评估
为了定量评估Talk2Traffic生成的交通场景的质量,本实验遵循ChatScene和SafeBench中为安全关键场景生成制定的评估协议。这能够将所提出的框架与现有方法进行比较,同时维持与既定基准的一致性。
评估指标:本实验采用一套全面的指标来评估在三个关键维度上生成的场景:安全性、功能性和礼仪性。安全性指标包括碰撞率(CR)、闯红灯频率(RR)、违反停车标志频率(SS)和偏离道路平均距离(OR)。较高的值表明场景更具挑战性。功能性指标包括路径跟踪稳定性(RF)、路径完成度(Comp)和花费时间(TS)。RF和Comp的值越低,TS的值越高,表明场景对AV能力的挑战越大。礼仪性指标包括平均加速度(ACC)、平均偏航速度(YV)和车道侵入频率(LI)。较高的值表明场景更好地测试AV保持驾驶舒适性和遵守交通规范的能力。此外,本文还计算了综合得分(OS),它汇总了在所有指标上的性能,较低的值表明更具挑战性的场景。
基线:为了进行评估,本实验选择了四种具有代表性的基线方法:(1)Learning-to-Collide(LC):一种基于强化学习的方法,它训练对抗性智能体来创建碰撞场景;(2)AdvSim(AS):一种基于轨迹扰动的方法,它采用黑盒搜索算法来生成对抗场景;(3)对抗轨迹优化(AT):一种使用轨迹优化来识别故障情况的方法;(4)ChatScene(CS):一种最先进的基于LLM的安全关键场景生成方法。
实验方案:本实验涵盖了八种常见但具有挑战性的场景类型:直行障碍物、转弯障碍物、变道、超车、闯红灯、无保护左转、右转和过马路。每种场景类型包含大约100种具有挑战性的配置。
为了进行评估,本实验首先使用通过SafeBench训练的替代自车。然后,不同的场景生成方法构建具有挑战性的场景,以测试此替代自车的局限性。接着,这些生成的场景用于评估由SAC、PPO和TD3训练的三种不同的自车。本文给出了它们在所有指标上的平均性能。
对于Talk2Traffic,本实验使用由ChatScene提供的相同提示为每个类别生成场景。然而,与依赖于采样50个不同参数配置以识别具有挑战性场景的ChatScene不同,本文方法利用了人类反馈引导,根据测试目标来迭代地优化场景。
结果和分析:表格1展示了Talk2Traffic框架(T2T)与基线方法在不同场景类型上的比较,着重于碰撞率(CR)和综合得分(OS)。结果表明,Talk2Traffic在大多数场景类型中均优于所有基线方法。
表格1|Talk2Traffic(T2T)与基线方法在安全关键场景生成方面的性能比较
在碰撞率方面,Talk2Traffic实现了最高的平均CR,比次佳的方法(ChatScene)高出4.6%。这表明本文框架生成了能够更有效地挑战AV防撞能力的场景。值得注意的是,Talk2Traffic在闯红灯(CR为0.900,而ChatScene的CR为0.787)和无保护左转(CR为0.833,而ChatScene的CR为0.753)等复杂场景中展现出显著的改进。在综合得分方面,Talk2Traffic实现了最低(最佳)的平均得分,略优于ChatScene。这表明,本文框架生成了具有综合复杂性的场景,同时在多个维度上挑战了AVs。
表格2提供了在所有评估指标上更详细的性能分解。
表格2|Talk2Traffic(T2T)与基线方法在安全关键场景生成方面的综合评估
研究结果展示了一些有趣的见解。Talk2Traffic在安全相关的挑战方面表现出色,在所有方法中实现了最高的CR。在功能性方面,Talk2Traffic实现了最低的路径完成度和最高的驾驶花费时间,这表明生成的场景有效地挑战了车辆在困难条件下导航时维持功能性的能力。在礼仪性指标方面,ChatScene通常优于Talk2Traffic。这种差别突显了场景生成方法的权衡:尽管Talk2Traffic优先考虑了安全性挑战和功能性困难,但是ChatScene生成的场景往往会引发更激进的驾驶模式。这两种方法均有效地测试了AVs,但是突出了驾驶性能的不同方面。总体而言,这些结果证明了人类反馈引导模块在优化场景以针对特定挑战方面具有有效性。
4.3消融研究
为了系统性地评估Talk2Traffic框架的检索增强代码生成模块中每个组件的作用,本文进行了全面的消融研究,着重于代码执行成功率。该指标定义为生成的Scenic脚本可以正确执行的百分比。
本文构建了框架的四个变体,以隔离每个组件的影响:
1)基线:直接提示GPT-4o根据用户指令来生成Scenic代码,无需任何结构化表示、RAG或者代码集成;
2)SR:采用结构化表示提取,但是使用直接提示来生成代码片段,然后是简单连接生成的片段;
3)SR+RAG:使用结构化表示和检索增强代码生成,直接连接生成的代码片段,没有智能集成;
4)SR+RAG+CA:本文完整的Talk2Traffic框架,其中GPT-4o智能地集成代码片段,确保变量声明和引用之间的一致性,以及整体语法的正确性。
本文为每种变体提供了100个不同的自然语言描述,以生成相应的交通场景。该场景描述涵盖了各种交通状况,包括不同的道路类型、天气状况和多智能体交互。
表格3展示了评估Talk2Traffic框架中组件作用的消融研究结果。
表格3|消融研究结果评估了Talk2Traffic框架中组件的作用
结果表明,当加入每个组件时,代码执行成功率明显提高。基线配置在没有任何支持机制的情况下直接提示GPT-4o,成功率仅为15%,这突显了根据语言描述生成特定领域代码所带来的固有挑战。当引入结构化表示提取时,成功率提高到41%,这表明将复杂场景分解为子组件可以增强生成过程。进一步的改进来自RAG方法的集成,通过在经过验证的Scenic代码片段基础上生成代码,将成功率提高到80%。尽管取得了这一重大进展,但是当代码片段被简单连接时,SR和SR+RAG均会遇到类似问题,即命名冲突和导入不一致。本文的完整框架实现了89%的成功率,这反映了智能代码集成过程的重要性。即使使用本文的完整框架,11%的场景仍然会失败,这主要涉及复杂的多智能体交互或者偶发的幻觉。
4.4场景可视化
本节展示了定性结果,证明了Talk2Traffic能够解释多模态输入并且实现交互式场景编辑。
多模态输入:图3展示了Talk2Traffic如何有效地处理不同的输入模态,以在CARLA中生成逼真的交通场景。
图3|定性结果
图3(a)展示了本文框架如何解释一个简单的文本描述,该文本描述指定了在一个有交通信号灯的十字路口处汽车根据不断变化的信号以有序的方式行驶。在分析了该描述后,Talk2Traffic成功地在十字路口处生成了多辆汽车,并且将其配置为自动驾驶模式,以正确响应交通信号。
图3(b)展示了一个由语音命令生成的场景,该命令描述了在晴朗的黄昏下两辆缓慢行驶的摩托车阻碍了自车前进,需要自车刹车以确保安全性。仿真序列明显符合这一要求。值得注意的是,该框架正确地将CARLA的时间设置修改为日落,这准确地反映了语音输入中指定的环境条件。
图3(c)展示了如何将简单的手绘草图转换为逼真的交通场景。尽管草图很简单,但是该框架成功地解释了空间布局以及车辆的相对位置和行为,并且生成了一个场景,即自车接近十字路口以右转,而另一辆汽车直行。
人类反馈以实现场景编辑:图4展示了Talk2Traffic通过自然语言反馈来编辑场景的能力,展现了该框架对不断变化的测试需求的适应性,而无需用户直接修改代码。
图4|人类反馈命令下的编辑结果
图4(a)展示了对图3(b)中生成场景的编辑。在接收到指令后,该框架将原始的两车道道路重新配置为三车道道路。它还重新编程了自车的行为逻辑,以便在遇到速度较慢的智能体时可以执行变道和超车操作。
图4(b)展示了该框架将图3(c)中的常规驾驶场景转换为安全关键测试用例的能力。当接收到“提高直线行驶汽车的速度以模拟油门失控并且加速自车”的反馈时,Talk2Traffic正确地解释了这一请求,并且修改了接近车辆的速度曲线以与自车发生碰撞。
本文引入了Talk2Traffic,这是一种利用多模态大型语言模型实现自动驾驶交互式且可编辑交通场景生成的新框架。本文方法通过集成多模态指令接口、检索增强的Scenic代码生成和人类反馈引导,弥补了直观人类表达和可执行仿真代码之间的差距。实验结果表明,Talk2Traffic的性能优于现有方法。该框架能够准确地解释多模态输入并且实现人类引导的修改,这有助于高效构建多样化测试场景,而无需专门的编程知识。未来工作将着重于扩展仿真器的兼容性,并且提高语义推理能力。