地平线DiffusionDrive v1和v2的细节对比解读
点击下方卡片,关注“自动驾驶之心”公众号
戳我->领取自动驾驶近30个方向学习路线
作者 | 三两声@知乎
编辑 | 自动驾驶之心
原文链接:https://zhuanlan.zhihu.com/p/2023721669739430016
本文只做学术分享,如有侵权,联系删文
>>自动驾驶前沿信息获取→自动驾驶之心知识星球
本文结合DiffusionDrive和DiffusionDriveV2的开源代码进行对比解读,希望能进一步加深理解。在阅读本文时,如果对两篇论文的整体框架还不清楚,欢迎大家参考:扩散模型在自动驾驶中的应用——DiffusionDrive, DiffusionDriveV2——扩散模型加强化学习. 为了简洁起见,下文使用DD表示DiffusionDrive,使用DD2表示DiffusionDriveV2。
策略梯度与DiffusionDrive的采样
策略梯度的形式表示为:
在DD和DD2中每一步的去噪都被看做策略。DD和DD2中模型是直接来预测,在DD中推理时采用的DDIM的采样方式是确定性采样。在DD2中,每次训练时,都同时进行多步采样。
在DD2中,训练时采用的多步采样和DD中DDIM的确定性采样不同,在进行DDIM的确定性采样之后,作者进行了人为加噪。DDPM和DDIM的采样的统一公式为:
其中:
需要注意的是DD和DD2中是直接预测
其中:
在DDPM的采样中
在DD2中RL训练是,采样的是DDPM的采样方式,不过最后的随机噪声就像文中提到的,采取的是横纵乘以随机系数的方式来进行加噪。
确定性采样的部分得到
假设采样得到
开源出来的代码,使用的乘法的方式加噪,但是开源出来的代码推导是错的,式5才是正确的计算方式。
Reward的计算与GRPO的优势函数
如论文中提到的,reward的采用最终的轨迹进行计算。整个计算过程采用的半闭环的方式。将自车的轨迹转换到全局坐标系,然后使用LQR控制器进行轨迹的追踪,得到闭环的轨迹。使用闭环轨迹计算轨迹的reward。其中环境信息是开环的,是提前缓存好的。
代码中采用并行计算的方式,一次性将一个batch的轨迹计算其score。在代码中一共计算了6种类型的score,分别为:NO_COLLISION, DRIVABLE_AREA, PROGRESS, TTC, COMFORTABLE, DRIVING_DIRECTION.
整个reward的计算流程为:
将训练的轨迹进行插值
插值后的轨迹进行坐标转换,转换到世界坐标系
使用LQR进行轨迹的闭环追踪,得到闭环轨迹
使用闭环轨迹和缓存下来的环境信息,计算得到每条轨迹的score
为了清晰起见,我会详细说明reward的计算逻辑.下图为5条去噪轨迹和原始的GT轨迹。
根据自车状态,将所有的轨迹转到全局坐标系,并且进行插值,0.1S进行插值。
为了进行对比,将插值后的轨迹重新转到自车坐标系
使用LQR进行闭环轨迹的追踪,闭环的轨迹如下图所示
挑选其中一条预测轨迹和闭环追踪轨迹进行对比
最后根据闭环轨迹和环境信息计算score,最后将score综合起来作为整条轨迹的score.
作者引入了GRPO算法,避免引入critic网络带来的开销,GRPO算法的Loss表示为:
但是在作者开源出来的代码中,并没有使用
结语
这是一篇瑕不掩瑜的文章,结合开源代码能否加深理解。为DIffusion和RL结合提供了很好的的思路,很有启发性。
自动驾驶之心
求点赞
求分享
求喜欢
