本文会详细解释当前在自动驾驶领域的各种数据生成技术,其中包括有:BEVgen, BEVControl, MagicDrive, DrivingDiffusion, WoVoGen, Drive-WM, DriveDreamer-2, SubjectDrive, Panacea 总计7种模型。
技术背景
为什么需要数据生成
- 自动驾驶数据的收集很贵,目前Tesla有很庞大的车队可以用来收集数据但是其他的自动驾驶厂商并没有多的数据。
- 自动驾驶领域里面有很多的Corner Problem, 类似于:遇到行人突然倒在了车前这一类少见情况,必须要采用数据生成的方法。 这种Corner Problem数据集非常类似于 “弱智吧数据集” 会因其更加广泛的数据分布,从而提高模型的表现。
- 当前的Diffusion模型生成的效果已经非常强,可以生成非常真实的图片,生成的图片已经可以被证明能够提升自动驾驶的模型表现(后面会提到)
为什么Diffusion模型对自动驾驶的数据生成很有效
Diffusion模型效果更真实
Diffusion模型生成的效果已经被证明可以提高自动驾驶的表现,而且使用diffusion模型所生成的效果好于游戏引擎渲染所得到的结果,同时Diffusion模型可以使用文字去调控画面的变化,非常灵活。
从上面的两张图片(上图为仿真结果,下图为Diffusion仿真结果)可以看到Diffusion模型可以生成非常接近现实的图片,而仿真模型只能基于已有的建模去做内容,画面效果不够真实。
Diffusion模型更加灵活
我们可以通过文字输入来控制Diffusion模型,改变天气只需要输入不同的天气情况,例如:只需要添加文字“rainy day”,Diffusion模型就可以生成很真实的下雨天的模型,作为对比仿真模型要实现“下雨天”这一个要求就需要花费很多的精力去修改渲染引擎。
这里有一个对应的例子,通过输入文字描述以及车辆HDmap序列,就可以生真实的车辆运动情况。
对生成效果的评价指标
生成结果的定义
对于这样一个基于Diffusion的模型,我们可以将生成的视频结果的维度表示为 H * W * V * N,其中H 高度, W 宽度, V view数量,车辆的不同视角, N 帧数,表示时间。下图是一个对应的示例,通常我们所采用的view的数量是6个,前后,左前左后,右前右后。 对于N帧数即为生成的视频帧,目前受限于显存的大小,通常一次生成为8张图片,不过也有一次性生成很长图视频的方法(后文会提到)
关键问题
基于Diffusion模型的要求有很多,例如:要生成符合文字prompt要求的图片,要求图片中指定位置应该有什么内容等要求。上面这一类要求已经被很好解决了。针对自动驾驶领域,我们关注有时间稳定以及Corss-View稳定性。
- 时间稳定性为:我们需要生成的视频 H * W * V * N中,在N维度,对于不同的时间n,图片应与上一张图片n-1保持图像的风格,形状等保持一致。也就是视频应当保证流畅,更详细来说是:帧与帧之间的光流应该保证连续性和一致性。
- Corss-View稳定性:我们需要生成的视频 H * W * V * N,在V维度,不同视角之间需要是一致的,例如下图中不同视角的图片应该保证一致。 第一张图为没有保证这种稳定性,导致红框中的物体不能被匹配,而第二张图则较好地保证了对应的稳定性。
评价指标
- 使用FID FVD等指标通过生成的视频与实际的视频去进行比对来进行判断。
- 在实际的任务中去测试,例如:3D物体检测,BEV分割任务中去测试生成数据能否提高模型的表现。不过这个测试很多模型都没有去做。。
不同思路的模型
模型汇总
这些模型都是可以生成Multi-Frame, Multi-View的结果,我们对这些模型做一个简单的汇总:
可以看到大部分的模型都还没有开源,以及大部分模型的FID都是比较接近,但是FVD上面有比较大的差距。
上图中的HD map为视频所需要生成的路线数据,Box为HDmap上面对于不同框的标注。
关键技术解释
这些模型可以说都是非常类似的,本质上都是将Hdmap, Box以及文字输入等与diffusion结合起来,同时对diffusion进行修改来满足corss-view, cross-frame的需求。 这些步骤都是非常类似的,为了避免重复,我们在这里进行统一说明一下。
输入embedding
常用的输入有:文字描述, Hdmap(又为Road Map), Box, 还有对于视角view的编码。 此处知识简单描述编码方式。
- 文字描述编码:输入为一段文字描述 : A driving scene image. at {location} {description}一段简单的文字,采用通用的CLP编码
- 相机视角编码:输入分为P = {K,R,T}其中K, R, T分别为内参矩阵、旋转矩阵以及平移向量。对于相机参数P,我们采用Fourier embedding
- Box编码:输入为对应的位置框,以及对应的描述文字。同样对位置框进行Fourier embedding,对于描述文字用CLIP编码,并将位置以及文字的编码拼接起来。
- Road Map编码,输入为一个2D结构,这里的信息更加丰富很多,所以对其使用卷积层去进行编码。
cross-view & cross-frame一致性方法
为了保证相邻视角之间的一致性,我们采用cross-attention的方法,将左右相邻的图像来做cross-attention。经过实验我们发现对左右两个视角去做cross-attention的效果综合而言最好,也就是左右两边的view内容。
对多视角采用的cross-attention方法:
为了保证对应的Frame的一致,我们使用temporal attention,输入为当前帧以及前一帧。其他的方法会在后文中详细提到。目前而言各种模型在视频生成上还是会有一些稳定性的问题
具体的模型解释
- 因为只有MagicDrive目前开源了程序,我们以其作为基准,来看一下其他的模型对MagicDrive有了怎样的改进内容。
- writing
BEVControl
我们可以看到这里面还是有很多的数据哦