胡艳,曹钻
(西安培华学院,西安 710125)
近年来,随着人工智能技术的快速发展,传统汽车工业和信息技术的结合在研究自主驾驶技术方面取得了较大进展。该行业的许多大公司在该领域的研发过程中都投入了大量的资金[1]。谷歌、丰田、百度和BYD等国内外公司都发布了令人满意的自动驾驶实验产品。随着自主驾驶技术的发展和改进,预计其将进入实际应用阶段,并将在全球范围内普及。依托自动驾驶,人们可实现自由旅行,而不用担心酒驾、超速、无证驾驶和疲劳驾驶等交通违法行为[2,3]。鉴于此,基于机器视觉和深度学习的自动驾驶技术具有广泛的科研和商业应用前景。
自动驾驶是未来汽车驾驶的必然发展方向,汽车企业和互联网公司都渴望在这个全新的领域占得先机。然而,汽车行业是一个特殊的行业,由于乘客的安全保障最为重要,不允许发生事故,因此对行车安全的要求极为严格[4,5]。因此,在研究自动驾驶时,对传感器和算法的准确性和可靠性要求非常高。另一方面,自动驾驶汽车的受众是一般消费者,因此需要控制成本。传感器、算法的精度与传感器的成本是正相关的,这就导致传感器的价格居高不下,也难以开发出大众能够承担的产品。这种矛盾在过去很难解决。现代学习技术的高度精准使得在许多关键领域,如任务、决策和传感器的应用使得开发自动驾驶系统成为了可能[6]。
作为自动驾驶技术的主要业务和关键技术之一,目标识别包括道路交通和规避行人的识别。目标识别系统使用计算机视觉监测交通情况,通过实时视频自动识别目标,提供实时自动驾驶的基础,如启动、停车、转向、加速和减速。由于道路条件极其复杂,基于传统目标探测的自动驾驶技术的效率难以显著提高。现有的自主驾驶技术通常依赖于改进的雷达系统来补偿,从而大大提高了系统的运行成本。随着科学技术水平的不断发展,神经网络可以直接感知和分析道路上的车辆[7]。经过一段时间的正确驾驶,你可以在实际道路条件下学习和感知相应的驾驶技能,而不需要考虑具体的道路条件和不同的目标,从而可以提高自动驾驶算法的性能。
目前,主要的自动驾驶技术是基于视频进行分析的。在移动场景中拍摄的视频序列包含了不同的目标,如行人、汽车、道路、障碍物、背景中的不同目标,必须确定测试图像中的兴趣类目标,提供车辆控制作为决策的基础。标识的识别和表示是一个重要的步骤,包括对目标图像的编码方法。理想的识别方法必须能够适应各种干扰因素,如大小、外观、闭塞、复杂背景等。传统的驾驶方法对道路和车道识别、车辆检测和行人检测系统识别效果一般[8]。
基于视频分析的探测和目标识别技术已经从传统功能转变为深度学习。这些传统和直观的功能在这个阶段取得了很好的结果。然而,由于目标的多样性和角度变化等因素,传统的基于特征的目标检测遇到了难以克服的瓶颈。近年来,深度学习技术大大提高了在多个状态探测和识别目标的效率,甚至超过了人类在这一方面的能力。深度学习函数是一个可以自动从大量学习数据中提取相关数据的函数,比传统函数具有更高的识别效率[9,10]。深度训练有多种模式,基于旋转神经网络的深度学习模型是研究中最常用的模型和热点之一。通过扫描窗口观察和发现目标大大提高了识别多个目标的效率。然而,基于扫描窗口的一个主要缺点是扫描窗口的大小和位置的组合极为复杂,有时甚至无法计算。
近年来,卷积神经网络算法一直在不断的改进,其计算的精确性和效率也得到了显著提高。卷积神经网络和多通道处理对图像识别也有很好的影响:它在N个深层神经网络中输入图像并训练它们。以N个结果的算数平均值作为最终结果,其识别率可达99 %以上,完全超出了人工识别的范围。
在自动驾驶中需要确定和评估许多目标,包括行进路线上的车辆、非机动车辆、行人、路标、道路、车道等,使得目标识别环境复杂而难以实现。从对行人和车辆的识别角度分析,基于深度学习的方法显著优越于传统方法。由于其可以通过学习提取图像数据中的特征,具有更好的稳定性和准确性。
卷积神经网络(CNN)属于人工神经网络,因为其网络模型通常由几个层次组成,也被称为深度卷积神经网络(DCNN)。CNN可以被看作是多层感知网络的进一步发展,它通过空间关系减少了待调整参数的数量,提高了反向传播算法的学习效率。与传统的人工神经网络相比,CNN最显著的优点是权值共享和局部链接,从而降低了网络模型的复杂性。因此,CNN适合图像识别这样具有大量输入数据和丰富信息的任务。
在CNN的底部,输入信息是一小部分图像,一个局部感受野。输入信息不断地传输到不同的层级,每个层的数字滤波器被用来获取最重要的数据特征。由于局部感受神经元捕捉图像的基本元素,如图像方向的边缘和角度,CNN的数据传输方法可以获取缩放、偏差和旋转等特征。
卷积神经网络的典型模型是由卷积层、池化层和全连接层构成,如图1所示。
图1 典型卷积神经网络模型
2.1.1 卷积层
CNN使用不同的卷积核来处理本地输入。完成后,数据窗口将进行移动,直到所有数据均参与了运算。则开始针对下一个卷积核进行处理。其数学表达式如下:
卷积运算所得到的特征图宽度W、卷积核尺寸F、训练步长S和ZeroPadding数量P满足如下关系:
2.1.2 池化层
卷积层与池化层保持周期性的间隔。池化层的主要作用是降采样,逐步减少网络数据块的大小,从而减少网络参数的数量,提高学习速度,抑制模型的过拟合现象。该层的输入与输出数据尺寸由如下关系确定:
2.1.3 全连接层
全连接层的作用是将CNN中另外两层所学习的特征分布映射到样本标记空间,也就是将进行训练的图像和学习到的特征数据的三维空间映射到样本标签的一维空间。
2.2.1 SceneNet网络模型
与其他分类任务相比,场景识别是独一无二的,其不仅是类别之间的巨大差异,而且有场景类别中的视觉差异。这导致存在许多错误的分类,也是识别场景的困难之一。
对于CNN分类能力的改进已经有较多的研究。有两种方法可以增加网络的深度和宽度。例如,VGG-NET网络的结构根据AleNet网络的结构加深了网络层次结构。另一种方法是开发一个新的网络结构,比如谷歌的原始结构,ResNet也有残差模块化结构。
虽然上述方案通常只会增加场景深度或模型宽度,但同时也将导致网络模型参数的过度扩容,导致过拟合和计算的困难。此外,梯度会因网络深度过大而消失,进而引起学习难度的增加。使用随机梯度算法(CNN)基于学习水平(微包子集)的下降,训练效果没有充分反映网络的深度。由于培训数据的海量性,不可能为每次训练迭代提供所有的培训数据。因此,开发有效且可识别的损失函数是进一步提高CNN效率的关键。以此为出发点,本文引入了新的损失函数,并建立了基于自动感知场景相似度的网络模型,如图2所示。
图2 SceneNet模型
SceneNet学习到特征按照相似性可分为两个等级:粗糙相似性和精确相似性。如果两物体提取自不同场景和交通设施,虽然他们属于同一属性则具有粗略相似性;如果两个物体,不仅来自同一场景且属性一样,则他们具有精确相似性。
SceneNet网络中的损失函数针对粗略或精确相似性特征,但在图像中相距较远者执行动态惩罚,增强网络学习特征的差异性,和对相似场景的感知能力。损失函数的实现如下:
式(6)描述了图像iI的特征,标签中心与标签种类间的关系。
2.2.2 损失函数实现
由于场景类型的多样性和硬件容量和性能的限制,需要对SceneNet损失函数执行的算法进行如下调整:
1)减少标签中心更新的数量;
2)为了防止一些未标记的样本带来扰动,通过设置一个参数来限制训练的速度,限制中心点的更新。损失函数计算特征梯度和更新中心点的表达如式(7)和(8)所示。
SceneNet中的损失函数由粗略/精确相似性函数和softmax损失函数组成,如式(9)所示:
SceneNet可以解决场景目标的识别问题,但是实际应用场景中的车辆和行人都是运动的,仅仅识别到目标是远远不够的。如果安全策略过于保守,则导致一旦识别到目标,自动驾驶汽车就会停止,在复杂的或密集度较高的场景中,容易造成多个车辆在安全机制上的互锁。如果能够同时识别到目标的运动轨迹,则可释放运动轨迹与行车轨迹无交集的部分区域的通行权限,这样可在保障安全性的同时最大限度的提升自动驾驶汽车行驶的灵活性。
由于强场景和几何模型约束易于提示集成和强时间跟踪检测模型,滑动窗口检测器已经展现出显著的识别性能。场景内容可非常简洁地表示为一组单独的检测对象。然而,对部分场景内容被遮挡情况是难以识别的。
区域中心模型在几何要素和涉及对象类方面通用性较好。然而,其分组基于像素级强度、深度或运动不连续性、较少的几何或场景约束会导致重建的场景模型中存在噪声。此外,对场景分割处理方法通常在计算上开销较大,并且对于许多现实世界的应用来说,最终可能导致过度冗余。为调和这种情况,视觉语义场景的理想模型应当是一种以场景为中心的表示形式,其建立在对象中心模型和区域中心的优势之上。
我们可以采用一种基于密集视差图的紧凑环境表示法。与以物体为中心的方法相比,分离成柱状像素(Stixels)保留了足够的灵活性来处理复杂的几何形状和部分遮挡。更准确地说,Stixel模拟场景中直立物体的一部分,并由其3D脚点、高度、宽度和到相机的距离来定义。
使用空间正则化的语义对象类别和运动信息来增强Stixel表示,以便在重建的场景模型轻松获取场景中对象的所有相关信息。为此,本文通过基于Stixel的提案区域作为输入的语义特征包分类模型来聚合强度和深度信息。通过稀疏点轨迹估计自我运动校正的速度同时以递归方式来保障语义标签的时间一致性。最后,使用单个Stixels作为节点加强随机场空间一致性。
选择恰当的初始区域对于语义分割性能尤为重要。为了快速获取适当区域,本文利用Stixel World的中等深度信息来理解语义场景。通过半全局匹配可获得密集视差图和其Stixel表示。
为了有效地获得更大的提议区域kR,根据其3D空间的接近度对Stixels进行了分组。这种方法适用于户外交通场景,并且有助于场景表示的规范化。
选择隐藏马尔可夫模型(HMM)方法整合来制得语义区域分类输出本文将标签转换建模为每个轨迹的马尔可夫链,并执行标签过滤,如图3所示。
递归标签过滤方案,适用于每个点轨迹。图3展示了带有三个标签的展开的定向马尔可夫模型,其中箭头表示可能的因果转换。
图3 带有三个标签的定向展开马尔可夫模型
对于长度为100(时间步长)的轨迹进行模拟,其结果如图4所示。
图4中,点表示噪声,实线表示在给定所有先前观察到的数据的情况下在每个时间步骤中标记的后续滤波后验。
图4 模拟结果
对于时间步长为t的轨迹,估计标签点亮后的后验概率P(li,t|χt),给定所有前期和当前观测的集合χt= {X0,X1,… ,Xt}。 使用前向推断执行预测和更新:
式(10)中的P(li,t|lj,t−1)对应于两个后续时间步长之间的标签的转移模型用于时间正则化。理想情况下,对象不会随着时间的推移而更改其标签。标签改变的唯一两个原因是观察模型P(Xt|lj,t)中的误差或轨迹中的测量误差,即跟踪点被意外地分配给另一个对象。因此,本文为转移矩阵的对角线元素分配了一个相对较大的权重α∈ (0,1),为剩余的条目分配了一个较小的值,这样我们就可以得到一个合适的行动轨迹概率分布:
本文实验选用戴姆勒城市数据集,其包含上万张现代化都市的人车混行环境图像,算法实现平台采用I7 7700CPU和NVDIA GTX1060高性能显卡,采用C++作为编程语言。实验主要为验证所设计方法对城市中车、人以及建筑物等目标的识别。
如图5所示,分别为目标中心所在区域的识别。通过一个方形窗口现实目标所在的位置,其中汽车采用绿色标识,行人采用红色标识;其中区域识别部分识别了目标的轮廓和所占的碰撞体积。图6为神经网络学习到的柱状直方图。
图5 目标识别结果
图6 目标柱状直方图
轨迹实验主要针对如下三种情况开展。分别为:①行人轨迹;②汽车轨迹;③人车混行情况下的行人和汽车轨迹,选择行动轨迹的概率分布权重为0.95。图7为对行人目标的轨迹预测结果,该图显示轨迹预测与其行走方向基本保持一致。
图7 行人轨迹
图8为汽车行进轨迹的预测结果,基本与实际车头的行进方向保持一致。
图8 汽车目标轨迹
在人车混行环境中,自动驾驶汽车对于行人行进方向需要敏锐感知,才能保障行人以及行车安全,图9为行人和行车轨迹的预测结果,识别结果准确。
图9 人车混行目标轨迹
本文主要针对基于计算机视觉和深度学习的自动驾驶方法进行了研究。
1)通过引入SceneNet深度网络模型进行场景的目标识别,分析了其卷积层、池化层、全连接层的概要结构,阐明了SceneNet场景识别网络的要素并提出了损失函数的改进实现方法;
2)结合SceneNet深度网络模型,并通过基于视觉的场景语义分割手段,对图像进行处理,分析预测行人和车辆的轨迹,为自动驾驶中避让行人和车辆提供依据。实验结果表明,通过提出的方法可准确识别环境中的目标和其运动轨迹。