在自动驾驶领域,随着BEV-based子任务/端到端方案的发展,高质量的多视图训练数据和相应的仿真场景构建愈发重要。针对当下任务的痛点,“高质量”可以解耦成三个方面:
而对仿真来说,可以直接通过布局进行满足上述条件的视频生成,无疑是最直接的multi-agent传感器输入的构造方式。而DrivingDiffusion则从一个新的角度解决了上述问题。
有需要的同学可以先看看项目主页:https://drivingdiffusion.github.io
布局控制的多视角图像生成
图中展示了以布局投影作为输入的multi-view图像生成效果。
调整布局:精确控制生成结果
图中上半部分展示了生成结果的多样性以及下文中模块设计的重要性。下半部分展示了对正后方的车辆进行扰动的结果,包含移动,转向,碰撞甚至悬浮在空中的场景的生成效果。
布局控制的多视角视频生成
上:DrivingDiffusion在nuScenes数据上训练后的视频生成结果。下:DrivingDiffusion在大量私有真实数据上训练后的视频生成结果。
根据输入帧+文本描述生成后续帧
使用单帧图像作为输入,根据对主车/他车的文本描述构建后续帧驾驶场景。图中前三行和第四行分别展示了对主车和他车行为进行文本描述控制后的生成效果。(绿框为输入,蓝框为输出)
根据输入帧直接生成后续帧
无需其他控制,仅使用单帧图像作为输入,预测后续帧驾驶场景。(绿框为输入,蓝框为输出)
DrivingDiffusion首先人为地构造场景中的所有3D真值(障碍物/道路结构),在将真值投影为Layout图像后,以此为模型输入得到多相机视角下的真实图像/视频。之所以没有直接使用3D真值(BEV视图或按照编码后的实例)作为模型输入,而是使用参数进行投影后输入,是为了消除系统性的3D-2D一致性误差。(在这样的一组数据中,3D真值和车辆参数都是人为地按照实际需求构造的,前者带来了随意构造罕见场景数据能力,后者消除了传统数据生产中几何一致性的误差。)
此时还剩下一个问题:生成的图像/视频质量能否满足使用需求?
提到构造场景,大家往往会想到使用仿真引擎,然而其生成的数据和真实数据存在着较大的domain gap。GAN-based 方法的生成结果往往和实际真实数据的分布存在一定bias。而Diffusion Models基于马尔可夫链通过学习噪声来生成数据的特性,其生成结果的保真度较高,更适合替代真实数据使用。
DrivingDiffusion依照人为构造的场景和车辆参数,直接生成时序multi-view视图,不仅可以作为下游自动驾驶任务的训练数据,还可以构建用于反馈自动驾驶算法的仿真系统。
这里的“人为构造的场景”仅包含障碍物和道路结构信息,但DrivingDiffusion的框架可以轻松引入标志牌,红绿灯,施工区域等layout信息甚至low-level的occupancy grid/depth map等控制模式。
生成多视角视频时,有几个难点:
DrivingDiffusion主要设计了一个通用的训练框架,将stable-diffusion-v1-4模型作为图像的预训练模型,并使用3D伪卷积将原有图像输入膨胀,用于处理视角/时序新增的维度后输入3D-Unet,在得到了处理新增维度的扩散模型后,进行了交替迭代式的视频扩展,通过关键帧控制和微调的操作保障了短时序和长时序的整体一致性。此外,DrivingDiffusion提出了Consistency Module和Local Prompt,分别解决了跨视角/跨帧一致性和实例质量的问题。
Consistency Module分为两部分:一致性注意力机制和一致性关联损失。
一致性注意力机制关注了相邻视角和时序相关帧的交互,具体来说对于跨帧一致性仅仅关注存在overlap的左右相邻视角的信息交互,对于时序模型,每一帧只关注关键帧以及前一帧。这避免了全局交互带来的巨大计算量。
一致性关联损失通过像素级关联并回归位姿来添加几何约束,其梯度由一个预先训练的位姿回归器提供。该回归器基于LoFTR添加位姿回归head,并在相应数据集的真实数据上使用位姿真值进行训练。对于多视角模型和时序模型该模块分别监督相机相对位姿和主车运动位姿。
Local Prompt和Global Prompt配合,复用了CLIP和stable-diffusion-v1-4的参数语义,对特定类别实例区域进行局部增强。如图所示,在图像token和全局的文字描述提示的交叉注意力机制基础上,作者对某类别进行local prompt设计并使用该类别mask区域的图像token对local prompt进行查询。该过程最大程度地利用了原模型参数中在open domain的文本引导图像生成的概念。
对于未来场景构建任务来说,DrivingDiffusion-Future使用了两种方式:一种是直接通过第一帧图像预测后续帧图像(视觉分支),并使用帧间光流作为辅助损失。这种方式较简单,但根据文本描述对后续生成帧进行生成的效果一般。另一种方式是在前者基础上新增了概念分支,该分支通过第一帧BEV视图预测后续帧BEV视图,这是因为对BEV视图的预测有助于模型捕捉驾驶场景的核心信息和建立概念。此时文本描述同时作用于两个分支,并通过BEV2PV的视角转换模块将概念分支的特征作用于视觉分支,其中视角转换模块的部分参数是通过使用真值图像替代噪声输入预先训练的(并在后续训练中冻结)。值得注意的是,主车控制文本描述控制器和他车控制/环境文本描述控制器是解耦的。
为了评估模型的性能,DrivingDiffusion采用帧级Fréchet Inception Distance (FID)来评估生成图像的质量,相应地使用FVD来评估生成视频质量。所有指标都是在nuScenes验证集上计算的。如表1所示,和自动驾驶场景中的图像生成任务BEVGen 和视频生成任务DriveDreamer相比,DrivingDiffusion在不同设定下的性能指标都有较大优势。
尽管FID等方法通常用于衡量图像合成的质量,但它们并没有完全反馈任务的设计目标,也没有反映不同语义类别的合成质量。由于任务致力于生成与3D布局一致的多视图图像,DrivingDiffuison提出使用BEV感知模型指标来衡量一致性方面的性能:利用CVT和BEVFusion的官方模型作为评测器,采用与nuScenes验证集相同的以真实3D布局为条件的生成图像,对每组生成的图像进行CVT和BevFusion推理,然后将预测的结果与真实结果进行比较,对其中可驾驶区域的平均交叉路口(mIoU)分数和所有对象类的NDS进行了统计,如表2所示。实验结果表明,对合成数据评测集的感知指标和真实评测集的指标十分接近,这体现了生成结果和3D真值的高度一致性和图像质量的高保真度。
除了上述实验外,DrivingDiffusion针对其主要解决的问题——提升自动驾驶下游任务表现,进行了加入合成数据训练的实验。表3展示了合成数据增强在BEV感知任务中实现的性能改进。在原始训练数据中,存在长尾分布的问题,特别是小目标、近距车辆和车辆定向角度。DrivingDiffusion专注于为这些样本有限的类别生成额外的数据来解决这个问题。在增加了专注于改善障碍物朝向角度的分布的2000帧数据后,NDS略有改善,而mAOE从0.5613显著下降到0.5295。在使用6000帧更全面,更专注于罕见场景的合成数据来辅助训练后,可以观察到nuScenes验证集有显著的增强:NDS由0.412上升至0.434, mAOE由0.5613下降至0.5130。这证明了合成数据的数据增强给感知任务带来的显著的提升。使用者可以根据实际需求,对数据中各个维度的分布进行统计,再针对性地使用合成数据进行补充。
DrivingDiffuison同时实现了多视角的自动驾驶场景视频生成和未来预测的能力,对自动驾驶任务有着重大意义。其中布局和参数全部人为构造且3D-2D之间的转换通过投影而非依赖可学习的模型参数,这消除了在以往获取数据过程中的几何误差,有较强的实用价值。同时DrivingDiffuison的可扩展性极强,支持新增场景内容layout以及额外的controller,同时也可以通过超分辨率和视频插帧技术无损地提升生成质量。
在自动驾驶仿真中,关于Nerf的尝试越来越多。然而在街景生成这一任务上,对动静态内容的分离,大范围街区重建,解耦天气等维度的表观控制等等,带来了巨大工程量,此外Nerf往往需要再特定范围场景内进行训练后才可支持后续的仿真中的新视角合成任务。而DrivingDiffusion天然包含了一定的通识先验,包括视觉-文字的联系,对视觉内容的概念理解等,可以仅通过构造布局快速地根据需求建立一段场景。但正如上文所述,整个流程较为复杂,且对于长视频的生成需要后处理的模型微调和扩展。DrivingDiffusion将继续探索视角维度和时间维度的压缩,以及结合Nerf进行新视角生成和转换,持续提升生成质量以及可扩展性。
以上是首个多视角自动驾驶场景视频生成世界模型 | DrivingDiffusion: BEV数据和仿真新思路的详细内容。更多信息请关注PHP中文网其他相关文章!