人工智能在自动驾驶上的应用,Comma.ai的策略是建立起一个代理(agent),通过模拟预测出未来路况事件来训练汽车模仿人类驾驶行为及驾驶规划能力。本论文阐述了一种我们目前研究用于驾驶模拟的方法,旨在研究变分自动编码器(Variational Autoencoder,简称VAE)及基于生成式对抗网络(generative adversarial network,简称GAN),用于实现道路视频预测的代价函数(cost function)。之后,我们训练了一种在此基础上结合了递归神经网络(RNN)的转换模型(transition model)。
该优化后的模型在像素空间中虽不存在代价函数,但我们展示的方法仍能实现对多帧逼真画面的预测。
自动驾驶汽车是人工智能研究中短期内最有前景的领域之一,现阶段该技术利用了大量驾驶过程中出现的,含标签且上下文信息丰富的数据。考虑到其感知与控制复杂性,自动驾驶技术一旦得以实现,也将拓展出许多有趣的技术课题,例如视频中的动作识别以及驾驶规划。现阶段,以摄像头作为主要传感器,结合视觉处理及人工智能技术实现自动驾驶的方式在成本上占尽优势。
由于深度学习、递归神经网络的发展,虚拟与现实交互(interaction)的愈加便捷,基于视觉的控制与强化学习在以下文献[7][8][9][10]中都取得了成功。这种交互形式使得我们能以不同策略来重复测试同一个场景,并能模拟出所有可能发生的事件来训练基于神经网络的控制器。例如,Alpha Go[9]利用深度卷积神经网络(CNN)通过不断累积与自己下棋博弈的经验来预测下次的获胜概率。Go的游戏引擎能够模拟出游戏过程中所有可能演变出的结果,并用来做马尔科夫链树(Markov Chain Tree)搜索。目前,如让Go学会用游戏屏幕玩Torcs[7]或者Atari[8],需进行数小时的训练学习。
由于学习代理难以实现与现实的穷举交互,对此目前大概有两种解决方案,其一是手动开发一套模拟器,其二是训练出预测未来场景的能力。前者的方案涉及到对物理世界的规则定义以及将现实的随机性建模的专业领域,但此类专业知识已经涵盖了所有与控制相关的信息,基本覆盖了现有如飞行模拟器[11],机器人行走[12]等领域。
我们重点研究通过设置人类代理(agent)来使其自己模拟预测现实世界场景,车前挡风玻璃上安装前置摄像头作为视频流的输入。
早年是基于物理代理的状态空间 [13]来进行控制器的训练模拟,其他仅靠视觉处理的模型又只能适应低维度或纹理特征简单的视频,如游戏Atari[14][16]。对于纹理特征复杂的视频,则是通过被动视频预测(passive video prediction)来识别其中动作[17]。
本论文对现有视频预测相关文献做了补充,我们让控制器自身去训练模型并预测出逼真的视频场景,计算出低维度的压缩表示并转换成相应动作。在下一节中,我们描述了用于对实时路况拍摄的视频进行预测所用到的数据集(dataset)。
我们开源了本论文中使用到的部分自动驾驶测试数据。数据集里的测试数据与comma.ai的自动驾驶汽车测试平台使用的是一致的摄像头与传感器。 我们在讴歌 ILX 2016的前挡风玻璃上安装了一个Point Grey摄像头,并以20hz频率对道路进行图像采集。释放的数据集中包含共计7.25小时的驾驶数据,分11段视频,视频帧为从捕获视频中间截取160*320像素的画面。除视频外,数据集中还包括数个传感器的数据,分别以不同频率进行测量,其中内插了100Hz,示例数据包含汽车车速、转向角、GPS、陀螺仪、IMU等。数据集以及测量设备的具体详情可以通过访问同步站点获取。
我们记录下传感器测量及捕获视频帧时的时间戳,并用测试时间及线性插入来同步传感器与视频数据。我们还发布了以HDF5格式存储的视频及传感器原始数据,该格式的选择是由于其较易于在机器学习及控制软件中使用。
本文中,将重点强调视频帧、转向角以及汽车速度。我们通过缩减像素采样原始数据得到了80*160的图像,并对图像进行了-1到1的像素微调重整(renormalizing),至此就完成了预处理。示例图像如图1所示。 在下一节中我们定义了本文旨在研究的难题。
xt表示的是数据集的第t帧,Xt是帧长为n的视频表示:
St是控制信号,与图像帧直接相关:
At与车速及转向角(steering angle)相对应。
预测道路图像时定义估值函数F:
下一帧的预测结果为:
注意,该定义为高维度且各维度之间相互关联,机器学习中类似的问题也会出现如收敛速度慢或数据欠拟合(underfit)[26]的情况。
有研究表明[20],使用卷积动态神经网络(convolutional dynamic network)时,若不进行适当正则项调整(regularization),模型虽对单组数据模拟良好但对整体其他数据的预测正确率偏低。
从前的方式都是通过简单、人造的视频[14]直接训练得到估值函数F,最近,论文[20][17]表明能够预测生成纹理复杂度较高的视频,但却没有解决运动条件转移的问题,也没有生成数据的一个紧凑的中间表示。换句话说,他们的模型未经缩减像素采样也没有低维度的隐藏编码,而是完全经过卷积变换实现。但由于高维密集空间(dense space)[18]中,概率,过滤器(filter)及控制输出的定义都模糊不清(ill-defined),紧凑的中间表示(compact intermediate representation)对我们的研究工作至关重要。
据我们所知,这是第一篇试图从现实公路场景来预测后续帧视频的论文,就此,在本文中,我们决定分段学习函数F,以便能分块对其进行debug调试。
首先,我们学习了一个Autoencoder将帧数据xt嵌入到高斯隐层Zt(Gaussian latent space),
维度2048是由实验需求决定,变分贝叶斯[1]自编码(variational Autoencoding Bayes)强制执行高斯假设。第一步是将像素空间的学习转移简化为了在隐层(latent space)里的学习,除此以外,假设自编码器Autoencoder可以正确地学习隐层的高斯特性,那么只要转移模型能保证不离开嵌入空间的高密度区域,我们就能模拟出逼真的视频画面。高密度区域的超球面半径为ρ,是嵌入空间维数和高斯先验方差的函数。在下一节中我们将会开始详细介绍Autoencoder以及转移模型。
考虑到问题的复杂性,我们不考虑端到端(End-to-End)的方法,而是使用分离的网络来学习视频预测。提出的体系架构基于两种模型:其一是利用Autoencoder来降维,其二是用一个RNN进行转换(transition)学习。完整的模型如图2所示。
自编码器(Autoencoder)我们选择了一个隐层为高斯概率分布的模型来学习数据嵌入,尤其能够避免超球体内集中在原点的低概率不连续区域,这块区域的存在会妨碍隐层中对连续转换模型的学习。变分Autoencoder[1]及相关工作[19][21]在原始数据的隐层中用高斯先验模型完成了生成模型(generative model)的学习。然而,在原始数据空间中高斯假设并适用于处理自然图像,因而VAE预测得到的结果看上去会很模糊(见图三)。另一方面,生成对抗网络(GAN)[22]及相关工作[2][3]会与生成器一起学习生成模型的代价函数。因此可以对generative与discriminator网络交替训练。
generative生成模型将隐层分布的样本数据转换到了数据集中,discriminator判别网络则将数据集中的样本从发生器的所有样本中判别出来,但generator能够起到fool discriminator的作用,因此discriminator也可以视作是generator的一个代价函数。
我们不仅需要学习从隐层到道路图像空间的发生器,还要能将道路图像编码反馈回给隐层,因此就需要将VAE与GAN网络相结合。直观地说,一种简单的方式就是将VAE方法与一个代价函数直接结合。在Donahue et.al的文献[23]中,提出了一种学习生成模型并双射变换编码的双向GAN网络。Lamb et. al.[24] 提出了判别生成网络(discriminator generative networks),将先前已训练的分类器特征差异作为代价函数的一部分。最后,Larsen et.al[25]提出对VAE与GAN网络一起进行训练,这样编码器能够同时优化隐层的高斯先验模型以及由GAN网络提取出特征上的相似性。发生器会将隐层输出的随机样本作为输入,并输出编码器网络,在经优化后即可fool discriminator,并尽量减少原始图像与解码图像的相似性。判别器则始终训练以区分输入图片的真实性——判别真伪。
我们用Larsen et.al.[25]的方法来训练Autoencoder,图2中原理图展示了此模型。在其论文中所述[25],编码器(Enc),发生器(Gen)以及判别器(Dis)网络优化后使得以下代价函数值最小:
在上面公式中,
满足编码输出分布q(z|x)与先验分布p(z)的Kullback-Liebler发散,都是VAE正则化矩阵,p(z)满足N(0,1)高斯分布,我们用reparemetrization来优化其regularizer,因此在训练过程中始终满足 z = µ + ∈σ ,在测试过程则满足z = μ(公式中 µ 和σ是编码网络的输出,∈则是与 µ、σ有相同维度的高斯随机向量 )
第二项是一个由计算得到的误差值,代表的是判别网络中第l层的隐藏activation值,该值用合法图像x以及对应的编码-再解码的值Gen(Dis(x))计算得到。
假设:
即可得到:
在训练过程中,为避免步骤过于繁琐,Dis通常以常量处理。
最后LGAN是生成对抗网络(GAN)的代价[22],代价函数表示了Gen与Dis之间的博弈关系。 当对Dis进行训练时,Enc与Gen始终保持固定值:
u是满足正态分布N(0,1)的随机变量,公式中的第一部分是Dis的对数似然函数,用于判别合法图像,剩下的两部分则是随机向量u或者编码值z = Enc(x)的对数值,用来判别是否为伪造的图像样本。
在对Gen进行训练时,Dis与Enc始终保持固定值:
表示Gen能够fool Dis判别网络,[25]等式中第二项的Enc(x)在训练过程中通常设为0。
我们对Autoencoder的训练次数为 200次,每一次迭代中包含10000的梯度更新,增量大小为64,如上一节中所述,样本从驾驶数据中随机采样。我们使用Adam进行优化[4],自编码器网络架构参考Radford et.al[3].发生器由4层去卷基层组成,每层后紧随样本的归一化以及leaky-ReLU的激活函数。判别器与编码器由多层卷基层组成,而第一层后面紧随的是样本的归一化操作,这里用到的激活函数则是ReLU。Disl是解码器第三层卷基层的网络输出,而后再进行样本的归一化与ReLU操作。判别器的输出大小为1,它的代价函数是二进制交叉熵函数,编码网络的输出大小为2048,这样的紧凑表示(compact representation)压缩成了原始数据维度的1/16。详细信息可查看图2或本论文同步代码,样本的编码-再解码以及目标图像见图3。
在训练好Autoencoder后,我们固定了所有的权重,并以Enc作为训练转换模型的预处理步骤,我们将在下一节讨论转换模型。
转换模型(transition model)
训练Autoencoder后,我们得到了用于转换的数据集,使用Enc将xt -> zt训练RNN: zt,ht,ct -> Zt+1来表示编码空间的转换。
公式中的W,V,U,A为可训练的权值,ht是RNN的隐藏状态,ct 直接控制了汽车车速与转向角信号,LSTM,GRU,以及ct与zt之间的乘法迭代将在今后作进一步的研究,现在用来优化可训练权值的代价函数即是均方误差(MSE):
显然该公式是最优的了,因为我们在训练Autoencoder时,对编码z的分布强加了Lprior的高斯约束。换句话说,均方误差会等于一个正态分布随机变量的对数值。假如预测的编码值为:
预估的画面帧就可以被表示为
我们用帧长为15的视频序列来训练转换模型,前5帧的学习结果输出后会作为后10帧学习网络的输入,即在用Enc(xt)函数计算出z1,…,z5后,继续作为后续输入,得到
再反馈继续作为输入。在RNN的文献中,将输出反馈回来继续作为输入被称作是RNN hallucination。为了避免复杂运算,我们将前者输出反馈继续作为输入过程中的梯度设为0。
此次研究中,我们将大部分精力花如何能使Autoencoding架构保留住道路的纹理特征上,如上文所提,我们研究了不同的代价函数,尽管它们的均方误差都差不多,但使用GAN网络的代价函数还是得到了视觉效果最佳的结果。如图3中所示,我们展示了由两组由对应不同代价函数的训练模型产生的解码图片,不出所料,基于MSE的神经网络产生的图像很模糊,使得将多条车道标识线被错误识别成了一条长单线车道。
此外,模糊重建也无法保留前车图像的边缘,因此这种方法无法用于推广的最主要原因是难以实现测距以及与前车车距的估算。另一方面,用MSE的方式去学习绘制出弯道标识线速度比基于对抗网络的模型要快。也许在学习对带有汽车转向角信息的像素进行编码时可以可以免这个问题。我们会保留这个问题用以今后研究。
一旦我们得到了性能良好的Autoencoder,就可以开始对转换模型进行训练。预测画面帧结果如图4所示,我们用5Hz视频对转换模型进行训练,学习后的转换模型甚至在100帧后都能始终保持道路画面结构。当以不同种子帧从转换模型采样时,我们观察到了包括通过车道线、靠近前车,以及前车驶开等驾驶事件,但该模型无法模拟出弯道场景。当我们用在弯道行驶的图像帧对转换模型进行初始化时,转换模型迅速就将车道线变直,并重新开始模拟直线行驶。在此模型下,尽管像素空间中没有准确优化的代价函数,我们依然能够学习出对视频的转换。我们也相信依赖更强大的转换模型(如深度RNN、LSTM、GRU)以及上下文编码contextual encoding(传感器辅助视频采样加上转向角和速度)将会出现更为逼近现实的模拟。
本论文中释放的数据集中包含了这种方法实验过程中所有必要的传感器。
本文介绍了comma.ai在学习汽车驾驶模拟器方面的初步研究成果,基于Autoencoder以及RNN的视频预测模型。我们并没有基于端对端(End-to-End)学习与所有事物的关联,而是先用基于生成对抗网络(GAN)的代价函数来训练Autoencoder,令其产生逼真的道路图像,而后我们在嵌入空间中训练了一个RNN转换模型。尽管Autoencoder以及转换模型的结果看起来都很逼真,但是想要模拟出所有与驾驶过程相关的事件仍需要做更多的研究。为了刺激自动驾驶上能有更深入的研究,我们发布了这份包含视频采样以及如汽车车速、转向角等传感器数据在内驾驶数据集,并开源了目前正在训练的神经网络源码。
原文地址:http://www.leiphone.com/news/201608/HPOt16vwh0UNYMPq.html