ROACH

news2025/2/22 20:31:41

End-to-End Urban Driving by Imitating a Reinforcement Learning Coach
CARLA-Roach
ICCV‘21论文:模仿一个强化学习教练的端到端城市驾驶

文章目录

  • Roach输入
    • BEV语义分割图像
    • 测量向量
  • Roach输出
  • 训练
    • 策略网络
    • 价值网络
  • 具体实现
  • 由 Roach 监督的模仿学习(IL)智能体
    • 硬目标
    • 动作分布损失
    • 特征损失
    • 价值损失

Roach输入

BEV语义分割图像

采用 BEV 语义分割图像 i∈ [ 0 , 1 ] W ∗ H ∗ C [0,1]^{W * H *C} [0,1]WHC 来降低问题复杂度。它由基于真实模拟状态(GT)渲染的c个大小为W * H 的灰度图像组成。

在这里插入图片描述
自车(ego - vehicle)朝上,在图像中位于底部上方 D像素处且不被渲染。通过不同的通道来表示不同的信息,
Fig. 2a 渲染可行驶区域,
Fig. 2b 展示预期路线,
Fig. 2c 中实线为白色、虚线为灰色表示车道边界,
Fig. 2d 是包含自行车和车辆(以白色边界框表示)的 个灰度图像的时间序列
Fig. 2e 类似但针对行人
Fig. 2f 渲染交通灯的停止线和停车标志的触发区域,且不同颜色的交通灯和停车标志有不同的亮度表示。红灯和停车标志按最亮的级别着色,黄灯按中间级别着色,绿灯按较暗级别着色。当停车标志处于激活状态(自车进入其附近且自车完全停止后消失)时进行渲染,这样 BEV 表示能够记忆自车是否停止,从而可以使用无循环结构的网络架构,减小了 Roach 的模型尺寸。
所有通道的彩色组合在 Fig. 1 中可视化呈现。
在这里插入图片描述

测量向量

Roach 输入测量向量 m R L ∈ R 6 m_{RL}∈R^{6} mRLR6 ,它包含 BEV 中未表示的自车状态,如转向、油门、刹车、挡位、横向和水平速度的真实测量值。这些额外的信息有助于 Roach 更全面地了解自车的动态情况,从而做出更准确的决策

Roach输出

CARLA 的低级动作包括转向(steering)∈[-1,1]、油门(throttle)∈[0,1] 和刹车(brake)∈[0,1]

降低问题复杂度的一种有效方法是预测路径点计划,然后由 PID 控制器跟踪这些计划以产生低级动作 [9, 40]。然而,PID 控制器对于轨迹跟踪并不可靠,且需要大量的参数调整
基于模型的控制器会是一个更好的解决方案,但无法直接获取 CARLA 的车辆动力学模型。为避免参数调整和系统识别,Roach 直接预测动作分布:
其转向和加速度的动作空间为a∈ [ − 1 , 1 ] 2 [-1,1]^2 [1,1]2,其中正加速度对应油门,负加速度对应刹车。
我们使用 Beta 分布B(α,β)来描述动作,其中αβ>0,分别是对 1 和 0 的集中程度。与在无模型强化学习中常用的高斯分布相比,Beta 分布的取值范围是有界的,从而避免了为强制满足输入约束而进行的截断或挤压操作。这使得学习问题的表现更好,因为不需要 tanh 层,并且可以显式地计算熵和 KL 散度。此外,Beta 分布的形态也适合驾驶。

训练

训练采用带裁剪的proximal policy optimization (PPO)方法训练策略网络和价值网络
价值网络训练回归期望回报,而策略网络更新通过以下公式:

策略网络

在这里插入图片描述
Lppo使得新策略在保证性能提升的同时不会过度偏离旧策略,从而实现稳定的学习过程,引导策略网络朝着能获得更高奖励的方向调整动作决策,不断优化驾驶策略,例如在路口、弯道等场景下做出更合理的转向、加速或减速决策。

Lent避免过早陷入局部最优解,增加对环境的探索。比如在面对复杂交通状况时,车辆不会局限于已有的经验动作,而是有一定概率尝试新的操作方式,可能发现更优的驾驶路径或应对策略,提高模型在不同场景下的通用性。

Lexp引导车辆在后续训练中避免再次出现类似的危险情况,同时保持转向不受影响(在某些情况下)。例如,如果车辆发生了碰撞或即将闯红灯,会在加速度上施加一个特定的分布(如pz=B(1,2.5)表示在加速维度上倾向于减速),帮助模型快速学习并纠正错误决策,增强在复杂交通规则场景下的安全性和适应性。它的主要作用是在训练过程中引导智能体进行更有针对性的探索,以避免重复出现导致情节终止的不良行为。当智能体处于类似的状态时,尝试不同的转向角度或速度,以找到更合适的行驶路线,避免再次偏离/碰撞
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

价值网络

未知???

具体实现

在这里插入图片描述
在(a)Roach架构中,用六个卷积层对 BEV 进行编码,两个全连接 (FC) 层对测量向量进行编码;两个编码器的输出连接在一起,由另外两个 FC 层处理产生潜在特征 jRL,然后输入到价值头和策略头中,每个头都有两个 FC 隐藏层;轨迹以 10 FPS 频率从六个 CARLA 服务器收集,每个服务器对应六个LeaderBoard地图的一个;在每个情节开始时,随机选择一对起始位置和目标(target)位置,并使用 A* 搜索算法计算所需的路线;一旦达到目标,就选择一个新的随机目标;除非满足 Z 的终止条件之一,否则该插曲不会结束。我们采用 [47] 中的奖励设置,并额外对大的转向变化进行惩罚,以防止车辆出现振荡操作。为避免高速违规,我们会添加一个与自车速度成比例的额外惩罚。

由 Roach 监督的模仿学习(IL)智能体

硬目标

在这里插入图片描述
在这里插入图片描述

动作分布损失

利用基于动作分布的新动作损失来替代LA
CILRS 的动作头被修改以预测分布参数,并且损失被定义为 Roach 专家预测的动作分布与 CILRS 智能体预测的之间的 KL 散度
在这里插入图片描述
为什么用KL散度呢:KL 散度能够有效度量两个概率分布之间的差异。
相比于传统的基于确定性动作的损失,利用 KL 散度基于动作分布的损失能够让智能体从更丰富的信息中学习,有助于提升智能体的性能和泛化能力。

特征损失

在这里插入图片描述

Roach 的潜在特征 jRL 是一种紧凑的表示,它包含驾驶所需的关键信息,因为它可以通过仅由两个 FC 层组成的动作头映射到专家动作(参见图 3a)。此外,由于 Roach 使用鸟瞰图(BEV)表示,jRL 对渲染和天气变化具有不变性。学习将相机图像嵌入到 jRL 的潜在空间中应该有助于 IL 智能体泛化到新的天气和新的情况。因此,我们提出特征损失
在这里插入图片描述

价值损失

Roach 预测的值包含驾驶相关信息,因为它估计了预期的未来回报,这与情况的危险程度相关。因此,我们给 CILRS 增加一个价值头并将价值回归作为一个辅助任务。价值损失是 Roach 估计的值v帽与 CILRS 预测的值 v 之间的均方误差
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2298235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机械臂运动学笔记(一):正向运动学

正向运动学指的是通过相邻关节间的转动和移动坐标,将末端的坐标计算出来。 反向运动学指的是已知机械臂末端的坐标,反算每个关节可能的转动和移动参数。 参考资料:4.机械臂几何法与DH表示法_哔哩哔哩_bilibili 一.任意连杆连接的变量定义&a…

【DuodooBMS】给PDF附件加“受控”水印的完整Python实现

给PDF附件加“受控”水印的完整Python实现 功能需求 在实际工作中,许多文件需要添加水印以标识其状态,例如“受控”“机密”等。对于PDF文件,添加水印不仅可以增强文件的可识别性,还可以防止未经授权的使用。本代码的功能需求是…

GitCode 助力 Dora SSR:开启游戏开发新征程

项目仓库(点击阅读原文链接可直达) https://gitcode.com/ippclub/Dora-SSR 跨越技术藩篱,构建游戏开发乐园 Dora SSR 是一款致力于打破游戏开发技术壁垒的开源游戏引擎。其诞生源于开发者对简化跨平台游戏开发环境搭建的强烈渴望&#xff0…

Mediamtx+Python读取webrtc流

一、功能思路: 1、我采用ffmpeg -re -stream_loop -1 -i xcc.mp4 -c:v libx264 -profile:v baseline -x264opts "bframes0:repeat_headers1" -b:v 1500k -preset fast -f flv rtmp://127.0.0.1:1835/stream/111推流到mediamtx的rtmp上 2、通过mediamtx自…

每日一题——矩阵最长递增路径

矩阵最长递增路径问题 题目描述数据范围:进阶要求:示例示例 1示例 2 题解思路算法步骤:代码实现代码解释复杂度分析总结 题目描述 给定一个 n 行 m 列的矩阵 matrix,矩阵内所有数均为非负整数。你需要在矩阵中找到一条最长路径&a…

【CLIP系列】4:目标检测(ViLD、GLIP)

目录 1 ViLD2 GLIP2.1 前言2.2 损失计算2.3 模型框架 1 ViLD OPEN-VOCABULARY OBJECT DETECTION VIA VISION AND LANGUAGE KNOWLEDGE DISTILLATION 从标题就能看出来,作者是把CLIP模型当成一个Teacher,去蒸馏他自己的网络,从而能Zero Shot去…

Cesium for Unity Linux版本

Cesium for Unity 直装不支持Linux 参照官方开发流程一些操作命令issues 宝藏最后运行图 参照官方开发流程 https://github.com/CesiumGS/cesium-unity/blob/main/Documentation~/developer-setup.md 系统已经安装过dotnet和cmake xuefeixuefei:~$ dotnet --version 9.0.102 …

关于 IoT DC3 中驱动(Driver)的理解

在开源IoT DC3物联网系统中,驱动(Driver)扮演着至关重要的角色,它充当了软件系统与物理设备之间的桥梁。驱动的主要功能是依据特定的通信协议连接到设备,并根据设备模板中配置的位号信息进行数据采集和指令控制。不同的…

EasyRTC嵌入式WebRTC视频通话SDK支持Web浏览器、Linux、ARM、Android、iOS

随着互联网技术的飞速发展,实时通信(RTC)已经成为现代应用中不可或缺的一部分。无论是视频会议、在线教育、远程医疗,还是社交娱乐,实时通信技术都在其中扮演着重要角色。 然而,WebRTC技术在PC和移动端的支…

数据库脚本MySQL8转MySQL5

由于生产服务器版本上部署的是MySQL5,而开发手里的脚本代码是MySQL8。所以只能降版本了… 升级版本与降级版本脚本转换逻辑一样 MySQL5与MySQL8版本SQL脚本区别 大多数无需调整、主要是字符集与排序规则 MySQL5与MySQL8版本SQL字符集与排序规则 主要操作&…

【PGCCC】commit_delay 对性能的提升:PostgreSQL 基准测试

通过禁用参数可以来调整事务工作负载synchronous_commit。该措施有惊人效果。但在操作系统崩溃期间丢失已提交事务的可能性使其成为许多应用程序无法启动的因素。因此我决定写下来。 WAL 刷新是事务数据库工作负载的瓶颈 为了确保已提交的事务不会丢失,PostgreSQL…

AI大模型随机初始化权重并打印网络结构方法(以Deepseekv3为例,单机可跑)

背景 当前大模型的权重加载和调用,主要是通过在HuggingFace官网下载并使用transformer的库来加以实现;其中大模型的权重文件较大(部分>100GB),若只是快速研究网络结构和数据流变化,则无需下载权重。本文…

Ollama+WebUI+DeepSeek部署自己的本地大模型

前言 使用AI几乎成为互联网工作者必备技能了,DeepSeek的出现把AI再次推向高潮,在本文中,我们将带领大家借助 Ollama、WebUI 和 deepseek 这三个工具,成功搭建属于自己的本地大模型环境。Ollama 作为一款轻量级的大模型运行工具&a…

(篇六)基于PyDracula搭建一个深度学习的软件之新版本ultralytics-8.3.28调试

ultralytics-8.3.28版本debug记录 1传入文件 代码太多不粘贴在这里了,完整代码写在了篇三 def open_src_file(self):config_file config/fold.jsonconfig json.load(open(config_file, r, encodingutf-8))open_fold config[open_fold]if not os.path.exists(op…

NLP Word Embeddings

Word representation One-hot形式 在上一周介绍RNN类模型时,使用了One-hot向量来表示单词的方式。它的缺点是将每个单词视为独立的,算法很难学习到单词之间的关系。 比如下面的例子,即使语言模型已经知道orange juice是常用组合词&#xf…

使用HX搭建UNI-APP云开发项目(适合新手小白与想学云开发的宝子)

什么是uni-app云开发 uni-app云开发是uni-app提供的一套后端服务,它可以帮助开发者快速搭建起一个完整的后端服务,包括数据库、云函数、存储等。开发者只需要关注前端页面的开发,后端服务由uni-app云开发提供。 uni-app云开发的优势: 快速搭建后端服务:uni-app云开发提供了…

sql:时间盲注和boolen盲注

关于时间盲注&#xff0c;boolen盲注的后面几个获取表、列、具体数据的函数补全 时间盲注方法 import time import requests# 获取数据库名 def inject_database(url):dataname for i in range(1, 20):low 32high 128mid (low high) // 2while low < high:payload &q…

【STM32】ADC|多通道ADC采集

本次实现的是ADC实现数字信号与模拟信号的转化&#xff0c;数字信号时不连续的&#xff0c;模拟信号是连续的。 1.ADC转化的原理 模拟-数字转换技术使用的是逐次逼近法&#xff0c;使用二分比较的方法来确定电压值 当单片机对应的参考电压为3.3v时&#xff0c;0~ 3.3v(模拟信…

arcgis for js实现层叠立体效果

在 Web 开发中&#xff0c;利用 ArcGIS for JS 实现一些炫酷的地图效果能够极大地提升用户体验。本文将详细介绍如何使用 ArcGIS for JS 实现层叠立体效果&#xff0c;并展示最终的效果图。 效果图 实现思路 要实现层叠立体效果&#xff0c;关键在于获取边界图形的坐标&#xf…

多模态本地部署和ollama部署Llama-Vision实现视觉问答

文章目录 一、模型介绍二、预期用途1. 视觉问答(VQA)与视觉推理2. 文档视觉问答(DocVQA)3. 图像字幕4. 图像-文本检索5. 视觉接地 三、本地部署1. 下载模型2. 模型大小3. 运行代码 四、ollama部署1. 安装ollama2. 安装 Llama 3.2 Vision 模型3. 运行 Llama 3.2-Vision 五、效果…