用扩散模型来构建自动驾驶的世界

本文提出一种结合多视角、时间序列、空间布局和文本信息的世界模型,通过扩散模型改造和时间编码、多视角编码等技术,实现自动驾驶的视觉预测与规划。模型利用端到端规划生成一致性高的多视图,并通过FID和FVD评估生成质量,以及KMP和CVT评估一致性与可控性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Multiview Visual Forecasting and Planning with World Model for Autonomous Driving

论文出处:

[2311.17918] Driving into the Future: Multiview Visual Forecasting and Planning with World Model for Autonomous Driving (arxiv.org)

结合多视角的图像,时间序列,空间布局,文本等各种信息构造世界模型。预测不同动作自动生成场景做评估,挑选最好的规划

多视角视频生成

  1. 多视角结合时间数据共同建模,利用扩散模型改造。

    1. 增加两个层:时间编码层,把图像的扩散模型提升为时间模型。多视角编码层,要共同建模多个视图,不同的视图之间要进行信息的交换,让每个视图的生成风格一致。

    2. 多视角时间调整:先用单视图条件训练一个标准的扩散模型,然后固定参数,用视频数据对时间层和多视角编码层做微调

  2. 多视角因子分解:分成两类:参考视图(前,左后,右后),拼接视图(左前,右前,后);这两类视图之内是不会有重叠部分的,但是两个类别之间有部分是会重叠的。这样可以基于参考视图来做联合不重叠的部分建模,再结合时间的连贯性,可以结合上下文帧来实现视图生成,生成的多视图一致性强

  3. 统一条件生成:结合多种形式的信息。

      总共四个维度的条件

    1. 图像:初始上下文帧结合参考视图,ConvNeXt 做编码,从不同的图片提取特征然后连接到一个维度。

    2. 布局:把3D box, HD map投影到2D透视图中,然后利用图像编码的形式,得到一系列基于投影布局和bev分割信息的位置嵌入

    3. 文本:遵循扩散模型的惯例,用CLIP作为编码器,得到视图的各种描述信息

    4. 动作:将一个时间步长内的动作定义成(∆x, ∆y),使用MLP将动作做d维度的嵌入

最终统一方式:所有的编码嵌入都是降到了d维度的,把所有的提取到的特征都做一个连接,然后做交叉注意力

端到端的的规划

使用预训练好的模型,输入真实的视角,然后构建决策树的形式,模型生成各个轨迹规划的视频并且结合激励函数的反馈做最佳的选择

决策的激励:1.地图激励(车道上合适的位置,远离路边缘,中心线一致)2.物体激励(安全的行车距离)

进一步从非矢量化表示中获得激励,如GPT-4V去获取图片进一步的特征信息,增加驾驶安全性

模型评估

生成视频的质量:FID:统计生成的图片和真实图片的特征特征分布,用来衡量生成的效果;FVD:用于视频的FID

多视图的一致性:使用KMP关键点匹配,计算当前视图和其两个相邻视图之间匹配关键点的数量和生成数据中匹配点的数量与真实数据中匹配点数量之间的比例

可控性评测:CVT分割背景,3D目标检测,在线地图重建

### 扩散模型自动驾驶数据去噪中的应用 扩散模型(Diffusion Model)是一种基于概率分布建模的技术,在图像生成和修复领域表现出色。对于自动驾驶数据的去噪问题,可以通过以下方式实现: #### 数据预处理与特征提取 在自动驾驶场景中,传感器采集的数据通常包含噪声。这些噪声可能来自环境干扰、硬件缺陷或其他外部因素。为了有效去除噪声并保留有用信息,可以先对原始数据进行预处理[^1]。例如,通过注意力机制可视化因果关系来增强重要特征的权重。 #### 扩散过程设计 扩散模型的核心在于定义一个逐步增加随机性的前向扩散过程以及学习逆向恢复干净样本的过程。具体到自动驾驶数据上: - **正向扩散阶段**:逐渐向输入加入高斯白噪音直到其接近纯噪声状态。 - **反向生成阶段**:训练神经网络估计每一步所需的条件均值以便重建无噪版本的数据点序列[^2]。 #### 实现细节 以下是使用Python编写的一个简单框架用于展示如何构建基本版的扩散模型来进行数据清理工作: ```python import torch from torch import nn class DiffusionModel(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(DiffusionModel, self).__init__() self.network = nn.Sequential( nn.Linear(input_dim + 1, hidden_dim), # Add timestep embedding nn.ReLU(), nn.Linear(hidden_dim, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, output_dim) ) def forward(self, x_t, timesteps): """ Predict noise given noisy image at time step `t`. Args: x_t (Tensor): Noisy images. timesteps (Tensor): Time steps corresponding to each batch element. Returns: Tensor: Estimated added Gaussian noise εθ(x(t), t). """ combined_input = torch.cat([x_t, timesteps.unsqueeze(-1)], dim=-1) return self.network(combined_input) def sample(model, shape, beta_schedule='linear'): """Sample new clean samples from the diffusion process.""" device = next(model.parameters()).device b = shape[0] img = torch.randn(*shape).to(device) # Start with pure random normal distribution num_steps = len(beta_schedule) for i in reversed(range(num_steps)): t = torch.full((b,), i, dtype=torch.long, device=device) predicted_noise = model(img, t.float()) alpha_t = ... # Compute based on schedule definition sqrt_one_minus_alpha_cumprod_t = ... z = torch.randn_like(img) if i > 1 else 0 img = ( 1 / torch.sqrt(alpha_t)) * (img - ((1-alpha_t)/torch.sqrt(1-alpha_cumprod_t))*predicted_noise)+\ torch.sqrt(betas[i]) *z return img.cpu().numpy() ``` 此代码片段仅作为概念验证用途,并未完全优化适用于实际生产环境中复杂情况下的部署需求[^3]。 #### 验证方法论 针对所提出的解决方案的有效性和鲁棒性评估方面,则可采用布尔满足度测试技术配合二值化神经网络结构完成自动化校验流程[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦叮当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值