澳门大学最新!CoT-Drive:开启自动驾驶思维链时代,突破复杂场景理解瓶颈~

点击下方卡片,关注“自动驾驶之心”公众号

戳我-> 领取自动驾驶近15个方向学习路线

今天自动驾驶之心为大家分享澳门大学最新的工作—CoT-Drive!开启自动驾驶思维链时代。如果您有相关工作需要分享,请在文末联系我们!

自动驾驶课程学习与技术交流群事宜,也欢迎添加小助理微信AIDriver004做进一步咨询

>>点击进入→自动驾驶之心『大模型』技术交流群

论文作者 | Haicheng Liao等

编辑 | 自动驾驶之心

写在前面 && 笔者理解

感知、预测、规划三位一体的自动驾驶架构虽然在端到端的趋势下,逐渐退出历史舞台,但是对于每个环节的理解和提升,也可以推动更好的模型设计和发展。今天要介绍的这篇工作,就是要用新技术做更好的旧任务——如何运用LLMs和思维链的提示去做预测任务。

首先,不可否认的是,自动驾驶车辆在动态环境中对交通参与者进行精准运动预测,是下游决策制定和安全规划的基础,也是整个系统非常核心环节。这些环境要求运动预测模型能够有效理解上下文语义信息,包括各类参与者(如车辆、行人、骑行者)的运动行为、交通信号和道路状况等环境因素,以及这些实体之间复杂的交互关系。

  • 论文链接:https://arxiv.org/pdf/2503.07234

现在主流的 data-driven 的深度学习模型通常关注常见且简单的场景,当面对与训练数据差异较大的真实环境时,尤其是一些 corner cases,性能会大幅下降。这引发了一个紧迫的问题:如何提升这些模型的适应性和鲁棒性?

答案是用 LLMs。一些近期的研究表明,LLMs不仅能提升常见交通场景下的运动预测性能,在需要深度理解上下文细节和多参与者交互的复杂场景中表现尤为突出。这些强大的泛化和推理能力,使LLMs成为解决该领域挑战的潜在方案。然而,在实车上部署是个大问题:

  • 在线LLMs(如GPT-4 Turbo和Palm)虽能提供全面的场景理解并减轻边缘设备计算负担,但其效果受通信条件限制,在网络不稳定或高延迟的农村或欠发达地区可能因响应延迟危及乘客安全。

  • 访问这些在线服务的高昂成本(如API费用和订阅费)进一步限制了其在AVs中的普及。更重要的是,数据传输过程中的数据泄露或恶意篡改风险可能严重威胁乘客安全和财产。

  • 离线LLMs(如Vicuna和Flan-T5)虽能缓解隐私和延迟问题,但通常难以像在线LLMs那样灵活捕捉复杂交通场景的动态性和不确定性。此外,本地部署这些模型的高存储和计算需求对AVs中资源受限的边缘设备构成重大挑战。

这些多维度问题和挑战促使作者思考以下关键问题:如何开发一种能在边缘设备实时运行,同时保持全面场景理解和泛化能力的模型?

本研究提出CoT-Drive,一种新颖框架,通过知识蒸馏将LLMs的高级场景理解能力迁移至轻量级边缘模型。图1展示了作者提出的方法,其中思维链(CoT)提示技术增强了上下文语义分析能力,并引导语言模型(LMs)模拟LLMs的交通场景理解模式。作者采用“师生”知识蒸馏策略,以GPT-4 Turbo作为“教师”模型,将其场景理解能力迁移至轻量级“学生”模型(即LMs)。该学生模型集成到运动预测框架中,在提升场景解释和泛化能力的同时,避免了直接使用本地LLMs的高计算和存储开销。通过CoT提示技术对“教师”模型进行优化,使其推理过程与人类驾驶认知对齐,从而为AVs提供高效精准的预测。

本研究聚焦三个核心研究问题:

  • Q1:CoT-Drive如何在高速公路、密集城区和复杂交叉口等挑战性场景中实现高效精准的运动预测?

  • Q2:知识蒸馏如何有效将LLMs的高级场景理解能力迁移至轻量级模型,确保在计算受限的边缘设备上实现高效高精度预测?

  • Q3:能否利用CoT提示增强LLMs在复杂场景中的上下文理解,从而无需额外微调即可提升运动预测的准确性和可靠性?

相关工作

自动驾驶中的运动预测

近期研究利用深度学习模型捕捉交通参与者间的时空交互。早期工作如 CS-LSTM 强调了社会交互的作用。后续研究如 MFTraj 和 NEST 通过注意力机制和目标导向方法提升了轨迹精度。GAN-based 模型和 WSiP 中的波叠加技术进一步提高了长期预测精度。近期研究通过引入行为不确定性和强化学习(RL)优化预测,但常缺乏对人类驾驶行为的细粒度建模。HLTP 和 WAKE 等模型通过认知策略和小波变换理论增强驾驶行为理解,HLTP++ 则通过动态池化机制模拟人类驾驶时的视觉注意力分配。

自动驾驶中的大语言模型

LLMs 在 AD 领域展现出卓越潜力,支持复杂场景分析、类人推理和实用决策。早期模型如 DiLu 和 CAVG 率先使用 LLMs 处理海量驾驶数据,但跨环境泛化能力不足。Traj-LLM 等改进多模态理解和上下文感知能力,Co-Pilot 结合 LLMs 与特征工程优化决策。W3AL 进一步细化场景理解,但 LLM-based 方法仍面临高计算成本、超参数敏感性和实际部署难题。

自动驾驶中的思维链提示

CoT 提示通过结构化提示引导 LLMs 逐步解决问题,模拟人类认知过程以提升规划能力和可解释性。研究表明,CoT 提示能有效增强 LLMs 在自动驾驶中的结构化推理能力,但其在运动预测中的应用尚未充分探索。通过渐进式问答嵌入类人推理过程,CoT 提示帮助 LLMs 更准确地感知和响应复杂现实场景,减少幻觉,最终提升场景理解和预测精度。

方法论

架构概述

本研究的主要目标是在自动驾驶车辆感知范围内预测目标交通参与者的未来轨迹。在时间步 ,给定目标参与者(下标为0)及其周围交通参与者(下标1到 )在时间间隔 内的历史状态 ,任务是预测目标参与者在预测时间范围 内的未来轨迹 。历史状态包括目标参与者和周围参与者的二维位置坐标、航向角、速度、车道标识和加速度。CoT-Drive的整体架构如图3(a)所示,基于编码器-解码器范式,包含四个关键组件:语言引导编码器(Language-Instructed Encoder)交互感知编码器(Interaction-aware Encoder)跨模态编码器(Cross-modal Encoder) 和 解码器(Decoder)

简而言之:

  1. 语言引导编码器 生成交通场景的语义描述(包括交互分析、风险评估和运动预测),提供全面场景理解,并提取为多模态特征

  2. 交互感知编码器 同时提取局部空间特征

  3. 跨模态编码器 整合特征 ,生成跨模态特征

  4. 解码器 利用

你遇到的错误提示: > **“The property 'Border.Child' is set more than once.”** > 或者中文:“子元素已设置多次” 这个错误的原因是:你在 `Border` 控件内部直接写了多个元素(比如两个 `Image`),而 **`Border` 只能有一个子元素**! --- ### ❌ 问题出在这段代码: ```xml <Border Grid.Row="2" Grid.ColumnSpan="7" Visibility="{Binding COT2Working}" Margin="0,0,0,0"> <!-- cot201 背景 --> <Border.Background> <ImageBrush ImageSource="/Gumming;component/Resource/4c8hPicture/cot201.png" Stretch="Fill"/> </Border.Background> <!-- 中层:cot202 --> <Image Source="...cot202.png" Visibility="{Binding COT2Have, ...}"/> <!-- 顶层:cot203 --> <Image Source="...cot203.png" Visibility="{Binding COT2Working, ...}"/> </Border> ``` 虽然看起来像是在设置背景和内容,但实际上: - `<Border.Background>` 是一个属性设置 - 后面的第一个 `<Image>` 被视为 `Border.Child` - 第二个 `<Image>` 又试图设置 `Border.Child` → ⚠️ 冲突!不允许! 👉 **WPF 的 `Border` 派生自 `Decorator`,只能包含一个直接子元素。** --- ### ✅ 正确做法:使用 `Grid` 作为容器来容纳多层图像 你需要把所有图层放在一个支持多子元素的面板中,例如 `Grid`。 #### ✔ 修改后的正确 XAML: ```xml <Border Grid.Row="2" Grid.ColumnSpan="7" Margin="0,0,0,0"> <!-- 使用 Border 包裹一个 Grid,让 Grid 来管理多层 --> <Border.Background> <ImageBrush ImageSource="/Gumming;component/Resource/4c8hPicture/cot201.png" Stretch="Fill"/> </Border.Background> <!-- Grid 作为唯一子元素,用于叠加图片 --> <Grid> <!--COT2Have 为 True 时显示 cot202 --> <Image Source="/Gumming;component/Resource/4c8hPicture/cot202.png" Stretch="Fill" Visibility="{Binding COT2Have, Converter={StaticResource BooleanToVisibilityConverter}}"/> <!--COT2Working 为 True 时显示 cot203(最上层) --> <Image Source="/Gumming;component/Resource/4c8hPicture/cot203.png" Stretch="Fill" Visibility="{Binding COT2Working, Converter={StaticResource BooleanToVisibilityConverter}}"/> </Grid> </Border> ``` --- ### ✅ 解释结构 | 元素 | 作用 | |------|------| | 外层 `Border` | 提供统一布局、边距,并设置 `cot201` 为背景 | | `Border.Background` | 设置底层图像 `cot201.png` | | `Grid` | 作为 `Border.Child` 唯一子元素,但它自己可以有多个孩子 | | `Image (cot202)` | 绑定 `COT2Have`,条件性显示 | | `Image (cot203)` | 绑定 `COT2Working`,优先级最高,自动盖住前面 | > ✅ 因为 `cot203` 在 XAML 中定义在最后,所以它自然绘制在最上面。 --- ### 🔁 层级渲染顺序说明(Z-order) WPF 中,在同一个容器内: - **先声明的元素先绘制(在底层)** - **后声明的元素后绘制(在上层)** 所以顺序很重要: ```xml <Image cot202 /> <!-- 下层 --> <Image cot203 /> <!-- 上层 --> ``` 如果反过来写,就会被遮挡。 --- ### 🛠 补充建议:确保转换器存在 请确认你在资源中定义了 `BooleanToVisibilityConverter`,例如在 `UserControl.Resources` 或 `App.xaml` 中添加: ```xml <UserControl.Resources> <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> </UserControl.Resources> ``` 或者如果是 .NET Core/.NET 5+,需要引用 `System.Windows.Controls` 命名空间(通常已默认可用)。 --- ### ✅ 总结:关键点 | 关键点 | 说明 | |--------|------| | `Border` 只能有一个子元素 | 不能直接放多个 `Image` | | 使用 `Grid` 容器解决多层叠加 | 推荐方式 | | 利用 WPF 绘制顺序控制层级 | 后写的元素在上层 | | `Border.Background` 可独立设置 | 不占用 Child 位置 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值