使用行为克隆的模拟自主驾驶深度网络系统
摘要
本文研究了一种卷积神经网络(CNN)的性能,该网络通过使用来自模拟器的数据来学习车辆的行为,该模拟器可实时采集车辆底盘、机器位置和速度的信息。该网络利用前向、右侧和右摄像头的信息,以及车辆在车道上的位置和速度。该方法被证明非常有效:仅需从以游戏形式进行的正确驾驶模拟中获取最短的驾驶时间,系统即可学会在标线道路上行驶。该网络自动学习必要处理步骤的内部表示,例如有用道路特征检测、所需速度和轨迹位置。采用了不同类型的激活函数,发现指数线性单元(ELU)激活函数相比其他激活函数能够实现更优的学习效果。
关键词 :深度学习 · 卷积神经网络 · 行为克隆 · 自主驾驶 · 模拟器
1 引言
自动驾驶技术已经由许多公司在不同类型的车辆上进行开发。完整的无人驾驶系统仍处于高级测试阶段,但部分自动化系统在过去几年中已经在汽车行业中出现。
通过仿真,可以创建真实场景来训练神经网络。市场上现有的虚拟仿真平台已用于驾驶辅助多年。诸如自动紧急制动、巡航控制等各种功能通常使用虚拟仿真平台进行测试。随着全面部署完全自动驾驶汽车的竞争不断加剧,虚拟仿真平台比以往任何时候都更加受欢迎。大多数汽车制造商已公开披露使用虚拟平台对环境进行建模并测试其系统。通过改变天气、光照或物体行为等仿真动态,这些平台变得更加 robust。CarMaker、优达学城自动驾驶汽车和 CARLA等仿真器能够创建包含车辆、交通标志、行人、多种传感器以及不同天气条件的所需环境。
行为克隆是一种将人类能力转移到计算机程序中的方法。当人类受试者执行任务时,其行为会连同引发该行为的情境一起被记录下来。这些记录的日志作为学习系统的输入,最终使系统能够复现所需的行为。该方法可用于构建复杂任务的自动控制系统,而这些任务对于经典控制理论而言可能难以应用甚至不完整。
本文组织如下。第2节介绍了关于自动驾驶研究和应用的相关工作。第3节详细描述了当前模型的学习过程,从数据收集与处理到卷积神经网络的架构以及激活函数等单个神经元特性。第4节描述了一些实验结果,而第5节包含了我们工作的结论。
2 相关工作
卷积神经网络(CNNs)[1]彻底改变了模式识别领域[2];在大规模采用CNN之前,大多数模式识别项目都依赖于手工设计的组件提取作为初始阶段,随后使用分类器进行处理。CNN的进步在于特征能够从训练样本中自动学习。卷积神经网络在图像识别任务中尤为有效,因为卷积操作能够捕捉图像的二维特性。
此外,通过应用卷积核来扫描整幅图像,相比操作总数而言需要学习的参数更少[3]。尽管具有学习特征的卷积神经网络已在商业应用中使用了二十多年[4],但其广泛应用在过去几年中迅速增长,这主要得益于两项近期的发展。首先,大规模标注数据集(如ImageNet大规模视觉识别挑战赛(ILSVRC)[5])变得可用于训练与验证[3]。其次,CNN学习算法已实现在并行图形处理单元(GPU)上,从而加速了学习过程[3]。
DARPA自主车辆(DAVE)[6]展示了端到端学习的潜力,并被用来论证启动DARPA地面机器人学习(LAGR)计划[7]的合理性。然而,DAVE的成果尚不足以可靠地替代越野驾驶中的模块化方法:在复杂环境中,其平均碰撞间隔距离约为20米。最近,英伟达启动了一项新应用,旨在基于DAVE构建一个适用于公共道路驾驶的强大系统。该项目的基本动机是避免需要识别特定的人为指定特征,例如车道线、护栏或其他车辆,以及避免基于对这些特征的感知而建立一系列“if-then-else”规则[3]。
DAVE-2[6]受到波默勒[8]开创性工作的启发,他于1989年构建了基于神经网络的自主陆地车辆(ALVINN)系统。它证明了端到端训练的神经网络可以在公共道路上操控车辆[3]。
许多主要公司都参与了自动驾驶汽车的开发。在当前正在公共道路上测试此类车辆的公司中,可以提及的包括谷歌、特斯拉、丰田、宝马、日产、福特 [9]。
3 使用人类行为克隆的模拟驾驶
在本文中,我们构建了一个超越模式识别并学习车辆行为的卷积神经网络。
3.1 数据收集
训练数据是通过在模拟器中的flat道路赛道上驾驶车辆收集的。然后可以通过让汽车在同一或其他赛道上自主行驶来检查网络的性能。在图1中,可以看到车辆行驶时来自不同摄像头的一些图像。
3.2 不平衡数据
在车辆于道路上行驶过程中,转向角通常非常接近零,这在训练数据中可以明显观察到。在图2中,可以看到车辆沿路径行驶并尽可能保持在道路中央时记录的转向角直方图。这些是通过驾驶4–5次所收集的全部训练数据,用于训练最终模型。
一个主要问题是由于车辆沿赛道单向行驶导致的左右失真。这可以通过旋转每张录制的图像及其等效转向角来解决。更成问题的是直线行驶偏差:在某些罕见情况下,即使道路是弯曲的,汽车仍会直线行驶,然后为了保持在道路上而进行突然转弯(即高转向角)。解决此问题的一种可能方法是让车辆漂移到道路边缘并在发生碰撞前返回。另一种解决方案是比小角度事件更频繁地测试极端角度事件。然而,由于这些情况极为罕见,为了避免过拟合,可能需要收集大量的训练数据。最佳决策是模拟所有恢复事件。在训练过程中,车辆尽可能轻松地沿道路中央行驶。其根本动机始终是实现理想转向角。
3.3 数据增强
训练时使用了来自前、左和右三个摄像头的图像。侧摄像头拍摄的图像类似于车辆的平行平移。为了考虑偏离中心的情况,需要对侧摄像头拍摄的图像进行转向角校正:当远侧摄像头到道路中心的距离大于1.2米时,汽车应在接下来的20米内平稳转弯并返回道路中央。因此,转向角校正应约为1.2/20= 0.06弧度(使用tan(a) ≈ a)。事实证明,这是一种有效的手段,使车辆能够避免靠近道路边缘。
来自摄像头的图像包含了一部分车头盖。下一步,对图像进行裁剪以去除该部分。为了增加训练集的大小,从裁剪后的图像中,通过沿x轴随机选择较小区域,生成了3张新图像:160 × 320来自原始图像 160 × 380。此过程是
相当于一次平移,转向角需要相应地进行调整(图 3)。这使得弯曲的赛道片段在训练集中出现的频率与直道部分相当(图4)。最后,每张图像都进行了水平翻转,以使左转和右转尽可能频繁地出现。此外,还随机调整了亮度。
3.4 模型架构和训练
最终模型架构由一个卷积神经网络组成,其层和层大小如下,使用通常用于描述此类架构的表示法:
- 裁剪自 160 × 320 × 3;
- 归一化输入平面 100 × 320 × 3;
- 3@100 × 320 卷积 5 × 5 和最大池化 3 × 3;
- 24@32 × 106 卷积 5 × 5 和最大池化 2 × 2;
- 32@14 × 51 卷积 5 × 5 和最大池化 2 × 2;
- 48@5 × 24 卷积 3 × 3 和最大池化 1 × 1;
- 64@3 × 22 卷积 3 × 3 和最大池化 1 × 1;
- 64@1 × 20 展平100;
- 展平50;
- 展平10;
- 1实值输出:1@1 × 1。
该网络架构包含9层,其中包括一个归一化层、5个卷积层和3个全连接层。
网络的第一层执行图像归一化。在网络内部执行归一化使得归一化方案能够随着网络架构的调整而改变,并可通过GPU处理实现加速。
卷积层旨在执行特征提取,其结构通过一系列实验经验性地确定,这些实验改变了层的配置。我们在前三个卷积层中使用带步幅的卷积,步幅为 3 × 3/2 × 2,卷积核为 5 × 5,在最后两个卷积层中使用卷积核大小为 3 × 3的无步幅卷积。在五个卷积层之后,我们连接了三个全连接层,最终生成一个输出值。
这接近于英伟达 DAVE-2[3]。主要区别在于步幅(3,3),这使得能够更轻松地将我们卷积神经网络 100 × 320 的较大输入缩减为给定的 32 × 106。对于该卷积神经网络,我们使用了指数线性单元(ELU)激活函数,而不是简单的修正线性单元 (ReLU),因为其非线性区域更大。L2正则化器参数设置为0.0001,以最小化预测误差。
对于最终结果,我们还研究了不同的激活函数,以确定哪种更适用于此问题,如下一节所述。
3.5 激活函数
目前,深度神经网络中最流行的激活函数之一是修正线性单元 (ReLU),该函数最初被推荐用于受限玻尔兹曼机 [1],随后在神经网络中成功应用 [2]。
ReLU激活函数为:
$$ f_{\text{ReLU}}(x) = \max(0, x) $$
除了生成稀疏编码外,ReLU 的主要优势在于它没有梯度消失问题 [4, 10],因为对于正值而言其导数不是收缩的 [2]。另一方面,ReLU 是非负的,因此其平均激活大于零 [11]。
双曲正切激活函数(tanh)非线性将输入压缩到范围(−1, 1)内:
$$ f_{\text{tanh}}(x) = \frac{1 - e^{-2x}}{1 + e^{-2x}} $$
它确定一个以零为中心的输出。因此,较大的负值被映射到负输出,而接近零的输入值被映射到接近零的输出。Tanh的梯度高于单极sigmoid,但它也存在梯度消失问题。
我们使用的另一个激活函数是缩放指数线性单元(SELU):
$$
f_{\text{SELU}}(x) =
\begin{cases}
k \cdot a(e^x - 1), & x \leq 0 \
k \cdot x, & x > 0
\end{cases}
$$
其中 $ k = 1.0507 $ 且 $ a = 1.67326 $[12]。它具有自归一化特性,因为接近零均值和单位方差的激活值在经过多层网络层传播后,也会收敛于零均值和单位方差。这使得学习过程高度稳健,并允许训练具有多层网络层的网络 [13]。
由于通过将激活值集中在零附近可以加快学习速度,指数线性单元(ELU)也使用激活函数来实现零均值,从而加速深度神经网络中的学习并有助于提升学习性能:
$$
f_{\text{ELU}}(x) =
\begin{cases}
a(e^x - 1), & x \leq 0 \
x, & x > 0
\end{cases}
$$
超参数 $ a $ 控制ELU在负净输入下的饱和值。在最简单的情况下,$ a = 1 $[11]。
与ReLU(及其变体如泄漏修正线性单元或参数化修正线性单元)类似,ELU通过在正值上使用恒等函数来缓解梯度消失问题。
这些激活函数在图5中以图形方式显示。
4 实验结果
使用不同激活函数的卷积神经网络在模拟驾驶场景中实现行为克隆的结果如图6和7所示。这些结果总体上相似,但仔细观察可以发现,ELU激活函数在训练和验证数据上均导致更小的均方误差损失。
如图例所示,“[activation-function]-loss”表示在训练集上获得的损失,而“[activation-function]-val-loss”表示在验证集上获得的损失。ELU激活函数表现最佳的原因在于:一方面,与ReLU相比,ELU在负区域具有非零梯度;另一方面,与Tanh相比,ELU在更远的正区域不会使其梯度饱和。
仅考虑指数线性单元激活函数的行为时,图8更清晰地展示了训练与验证数据上的结果对比。正如预期,训练数据的性能更优,但总体而言,这两个值非常接近,这表明模型具有良好的泛化能力。
图9展示了在更多训练轮次(即100轮而非10轮)下均方误差损失的演变情况。可以看出,训练与验证损失存在一些波动,但整体数值保持相对稳定,且相较于仅进行10轮训练的情况,性能提升并不显著。因此,我们可以得出结论:行为克隆模型在极少的训练轮次下即可实现良好的性能。
5 结论
在本文中,我们通过实验表明,卷积神经网络能够学习车道和道路跟随的整个任务,而无需手动将其分解为道路或车道标记检测、路径规划和控制。少量的驾驶训练数据就足以训练车辆在道路上行驶。卷积神经网络可以从非常稀疏的训练信号(如转向和速度)中学习到有意义的道路特征。例如,该系统能够发现并检测道路轮廓,而无需在训练期间提供特定标签。使用指数线性单元(ELU)激活函数可以获得最佳性能。
作为未来的研究方向,可以改进该系统,使其能够在复杂道路上学习更快速地驾驶。为此,需要进一步努力优化网络架构并恰当地选择训练数据。
在当前场景中,汽车是其环境中的单一智能体,主要目标是尽可能靠近道路中央行驶。下一步的努力还应解决包含更多交通参与者的情况,并在可能发生事故之前引入纠正措施。
1324

被折叠的 条评论
为什么被折叠?



