在自动驾驶汽车技术中,卷积神经网络(CNN)已证明是一种非常强大的道路特征识别工具。卷积神经网络经过工程师们的训练可以检测道路类型和路边的特征。在用于这种训练的各种数据集的帮助下,这种模型会以类似小孩学步那样教汽车学习驾驶技巧。
本文描述了在现有驾驶员评估系统中如何训练和整合CNN模型,同时介绍了这种模型及其改进版本VGGNet的本质,以便更好地理解这一相对未知的课题。VGGNet的使用可以极大地提升预测的精度,特别是考虑到车内驾驶员面前的摄像机时。作为嵌入式系统,驾驶员评估系统的运算能力是非常有限的。工程师团队受命在该模型和现有驾驶员评估系统基础上使用实际世界数据开发CNN,结果发布在本文的总结部分。本文还讨论了CNN的模型集成和训练处理优化,同时强调了神经网络的可重用性。
定期的驾驶员评估是车辆行驶管理和服务行业的一个重要步骤。具有正确反馈措施的定期评估可以提升驾驶员的表现。借助近来机器学习领域中的进步及仪器使用的价值,我们可以很容易地将机密的和精确的数据连接到登录上的中央计算系统。这样的计算机和其它模块一起可以用作一套组合工具来评估驾驶员的表现。
图1:传统的驾驶员评估系统(来源:Einfochips)。
数据块(时间、视频、传感器数据);收集数据块的离线处理;管理员评估
图1对传统驾驶员评估系统进行了简单的描述。类似这样的系统可以用来接受来自不同传感器的数据,然后提供给板载计算机(低等级)进行存储,并完整地传送给离线数据处理单元。当驾驶员过来进行评估时,离线数据处理单元再将数据发布给管理者。
在传统环境中,视频提供的数据,以及来自传感器的数据必须进行人工管理。但众所周知,人工管理容易出错。
鉴于这种情况,能够智能抽象、分类并提取信息的机制将特别管用,特别是在OBD-II的帮助下。下面我们将讨论如何融合/组合这两组信息向驾驶员和管理者产生合理的输出。
在服务器端只有传感器数据是不足以完成驾驶员评估的。比如,让我们看个实时场景:
下坡:一般意味着连续的加速,比方说8到10秒,远远超出发布的极限。这肯定会影响驾驶员驾驶汽车的性能数据。事实上这是一种真阴性(假阳性)情形。我们建议的系统有助于判断上坡和下坡,而检测到真阴性后可以提升驾驶员的评估性能。
图2:基于训练过的神经网络的驾驶员评估系统(来源:Einfochips)。
数据块的智能离线处理;自动生成的成绩单;训练过的神经网络
如上图所示,数据块的离线处理被数据块的智能处理所替代。这种数据处理是在训练过的神经网络帮助下完成的。卷积神经网络可以将连续视频观察任务从人卸载给智能机器。这里的想法是分类特征(在这个例子中的上坡和下坡)并使用这些信息和时间轴上的OBD-II数据判断驾驶员的性能。
NeuralTalk2用于分类图像。它使用卷积神经网络机制分类图像。针对每种检测到的特征,它提供置信值。
图3:一般的深度学习流程图(来源:Einfochips)。
卷积+非线性;合并;完全连接;鸟;日出;海洋;上坡路
神经卷积网络的工作方式:
步骤1:滤波器、参数和权重被分配一定的随机值。权重是指完整连接的网络值,滤波器是卷积滤波器的数量。
步骤2:网络接收输入的图像,开始正向传播(卷积,非线性激活,空间合并,最后进入完全连接(FC)的层),它还寻找每种特征的可能性——参考卷积和非线性部分以及图3中的合并部分。
卷积:f(x)=fD(…f2(f1(x;w1);w2)…),wD)
这里的fd作用是输入一个值xd和一个参数值wd,产生输出结果xd+1。虽然函数的类型和结果是人工的,但参数w=(w1,…,wD)是从训练中学到的。
非线性激活ReLU(调整过的线性单元):
f(x)=max(0, x)
空间合并:
f(x) = max(Stride)
步骤3:计算总误差
总误差 = ∑ ½(目标误差–输出误差)²
步骤4:使用后向传播最大限度地减小误差。为了做到这点,先获得相对权重的梯度误差,然后使用梯度下降更新滤波器的值和参数,以尽量减小输出误差。这里发生改变的是滤波器值,连接权重也得到了更新。这是在完全连接层完成的。
**w=wi–ƞ×dL/dw
w=权重
wi=初始权重
ƞ=学习速率**
由于这个应用与驾驶员评估有关,因此他/她驾驶时所处的场景或场景是最重要的,而不是单单仪器读数。为了理解这种场景(让我们想象一条路),我们需要一个非常好的分类器。为了克服这个问题,我们可以使用内部使用VGGNet的NeuralTalk2。VGGNet是一种卷积网络,最擅于识别物体的位置。它还擅长于分类物体本身。输入是一个图像,输出是概率(图4)。
图4:一般的VGGNet模块(来源:Einfochips)。
VGGNet有这种能力依赖于一种因素。它相信这个因素可以识别/分类图像,这对理解图像的深度是很有用的。深度分析做的越多,图像可以被分类的越精确。换句话说,卷积的越多,物体分类的越好。在VGGNet中有16个卷积层,用于提升预测的精度。CONV层执行3×3卷积,步幅为1,填充为1。POOL层执行2×2最大化合并,步幅为2,填充为0。
在训练阶段一套训练用输入会提供给NeuralTalk2。我们限制训练集为直路、上坡、下坡、弯路、左转和右转。这在以更加有效的方式训练模型中特别有用,因为输入数量是有限的。我们这样做的目的是我们想在进行评估时取得更高的精度。
产生的经过训练的网络/模型专门关注训练集中提到的特征,如上坡、左转和右转。这个模型可以被移植到大多数X86 Linux计算机。
输入传感器:OBD-II是汽车内的一种标准接口。该硬件用于从终端传感器收集OBD-II的发动机转速、热量、速度数据,并将这些数据提供给运算模块作为其输入。
评估仪表板:仪表板将对这些数据进行第一层的分析,它会显示理想的和原始的数据图。当点击原始数据图上的任何点时,它会显示数据集中可用的该点的完整细节。
前置摄像机记录汽车前方的视频。当驾驶员驾驶汽车上坡时,很明显他会踩下更大的油门以维持汽车的推力。随后这些数据连同前置摄像头的视频一起被记录到与硬件相连的存储设备中。
当驾驶员的旅程结束并且在停车场停下来后,这些记录的数据将得到分析。视频和图像通过计算机进行分析,这个计算机中已经内置有训练过的分类模型。除了视频外,转速、速度、热量等其它汽车参数也会被分析。由于计算机已经学会了检测上坡,因此它会自动丢弃不断增加的汽车转速数据,这在传统装置中是不可能的。这种机制在避免错误地驾驶员评估中是很有用的。
现场图像的检测
图5:直线道路的检测(来源:Einfochips)。
图6:下坡路的检测(来源:Einfochips)。
图7:上坡路的检测(来源:Einfochips)。
这种训练过的模型能够以很高的精度识别直路和坡路。
训练算法的伪码
以下是完整的训练算法伪码:
测试算法的伪码
注意:伪码中提到的概率值是假设的。
在有效地针对各种道路类型和特征进行训练后,神经卷积网络本身可以成为未来自动驾驶技术的强有力武器。这种模型也可以集成进软件平台,用于增强现有驾驶员评估系统的精度。还可以用各种数据集对这种神经网络进行再次训练,比如物体识别、物体分类、快照识别等。因此模型很有效率,并且可重复使用。
我们还可以进一步推论,卷积神经网络模型和其它软件整合后将提供更大的灵活性。未来工作可以通过优化模型的总体训练过程得以开展。优化底层库函数和频繁使用的函数可以极大地改善总体训练过程。