来源:《新技术新工艺》杂志
作者:张亚初,刘 明,赵跃进,董立泉
摘要:目前,智能小车由于其应用广泛,是研究的热点之一,而基于神经网络与摄像头的智能车由于其在价格以及可靠性等方面的优越性更是受到了广大研究人员的青睐。然而,在端对端的卷积神经网络智能小车避障系统中,有时无论对网络结构和参数进行何种微调,总有一些图像是难以正确分类的,或者说要对某些图像进行正确分类,需要进行相当繁复的参数调整以及结构改变。针对上述问题,考虑采用双流卷积神经网络,利用原始图片与光流图片分别通过预训练的网络后,再将评分结果进行融合,得到最终的分类结果。事实证明,采用该方法可以有效改善传统卷积神经网络一些分类错误的问题。
具有自动识别路径、自动避障和自动驾驶等功能。近年来,移动机器人的导航研究已成为多个领域的研究热点,不仅在农业、工业、航空、航海、医疗服务及日常生活中具有广泛的应用前景,而且对促进和推动相关学科的发展,加强理论和实际应用的结合,促进科技向生产力的发展转化均有重要作用。
目前,大多数智能小车,包括无人车,使用的路径识别方法都是利用雷达、超声波等多种传感器相结合的方式。人类仅仅通过眼睛与大脑就可以判断眼前的道路和自己的前进的方向,因此,利用摄像头与神经网络结合也就成为了一种新的智能小车道路导航的方法,并且由于摄像头具有相较雷达价格低廉、可靠性更好和受环境天气等因素影响较小等优点,已经成为了新的研究热点。
1
卷 积 神 经 网 络 简 介
1.1 卷积神经网络特点
卷积神经网络是一种十分有效的特征提取分类方法,随着近几年的发展,其不断地引起研究者们的注意,并越来越被人们重视。20世纪60年代,科学家们在对猫的脑皮层结构进行研究时发现,猫的局部感知神经元以及进行方向选择的神经元等结构十分特殊,这种特殊的网络结构对反馈神经网络的复杂性具有积极的效果,能够极大地降低其复杂度,科学家们受这些启发,根据猫的这个特点提出了卷积神经网络。如今卷积神经网络已经被众多科学领域的研究者们重视起来,并加以研究,渐渐成为了各个研究领域的热点,特别是在图像分类、模式识别等领域。由于卷积神经网络可以直接处理原始输入数据(如原始图像),不需要对数据进行显式的特征提取,省略了数据复杂的前期预处理,因而在很多领域得到了广泛的认可和使用。
卷积神经网络对于图像中的图像位移、缩放以及各种类型的形变具有十分优秀的区分能力。由于卷积神经网络在特征提取时通过卷积层的网络结构对输入进行加权运算生成特征,所以避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者,由于卷积神经网络中同一卷积层使用权值共享的方法共享相同的卷积参数,所以网络可以并行学习,这种权值共享的方法使得卷积网络不同于其他传统神经网络。在语音和图像识别方面,权值共享的方法有着十分独特的优越性。从生物神经网络角度分析,这种结构更接近于实际的生物神经元连接方式,不仅降低网络时间空间复杂性,而且在数据训练过程中在对多维输入向量的处理时,同样避免了特征提取的复杂度。
1.2 卷积神经网络组成
卷积神经网络主要由卷积层、池化层、归一化层和Dropout层等各个层组成,每个层都有自己非常重要的作用。
1)卷积层。卷积层也被称为特征提取层。卷积层内2层之间采用非全连接的方式,输入层与特征映射层采用局部连接的方式,特征映射层通过局部连接提取出输入数据局部特征,并将该特征存放在特征映射层固定的位置,随着卷积窗口的移动,将顺序生成各个局部特征。在输入层与特征映射层之间采用的激活函数为sigmoid核函数,由于卷积层中权值共享,故网络运行中的参数将被极大地减少,同时降低了网络时间和空间复杂度。
2)池化层。在通过卷积获得了特征(features)之后,下一步我们希望利用这些特征进行分类。理论上讲,可以用所有提取得到的特征去训练分类器,例如softmax分类器,但在面对大的图片时,这样做将会面临计算量的挑战。学习一个拥有超过上百万特征输入的分类器十分不便,并且容易出现过拟合(over-fitting);因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,可以计算图像一个区域上的某个特定特征的平均值(或最大值)。这些概要统计特征不仅具有低得多的维度(相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化(pooling),有时也称为平均池化或者最大池化(取决于计算池化的方法)。
3)归一化层。随机梯度下降法(SGD)对于训练深度网络简单高效,但其缺点是需要人为地选择参数(比如学习率、参数初始化、权重衰减系数和Dropout比例等),而这些参数的选择对训练结果至关重要,因此很多时间被浪费在这些调参上。使用归一化层之后,就不需要刻意地慢慢调整参数。此外,神经网络一旦训练起来,参数就要发生更新,除了输入层的数据外(因为输入层数据,已经人为地为每个样本归一化),后面网络每一层的输入数据分布一直在发生变化,因为在训练时,前面层训练参数的更新将导致后面层输入数据分布的变化。归一化层同样可以解决数据分布变化的问题。
4)Dropout层。Dropout层是为了防止训练中的过拟合而出现的。Dropout就是指在神经网络训练的过程中,按照一定的概率暂时从网络中随机丢弃一些神经网络单元,即每一个mini-batch都在训练不同的网络,从而有效地避免了过拟合的发生。
2
基 于 端 对 端 卷 积 神 经 网 络 的 智 能 小 车 系 统 简 介
2.1 小车硬件
小车硬件主要由摄像头(320×240像素)、WiFi模块、驱动模块和下位机等部分组成(见图1)。
图1 智能小车硬件平台
2.2 建立数据集
数据集的建立主要依靠人为控制小车躲避障碍物,在此过程中进行视频拍摄,然后将视频按帧截取,图片分为直行和左转两类。
为了保证数据集的有效性,对数据集的采集要求如下:1)在尽可能多的不同场景下收集数据集;2)在不同的光照条件、天气条件、一天中的不同时间等情况下进行数据的采集;3)在尽可能相同的情况下进行直行和转向的指令;4)没有障碍物时应避免转向指令的发生等。
遵循上述要求,笔者在不同光照、环境条件下,在室内进行了数据集的采集,得到了直行(见图2)和左转(见图3)两类图像,分别约有700和800张。为了保证图像数量足够充足以防止过拟合等情况的发生,通过对原始图像加入高斯噪声和椒盐噪声等方式对数据集进行了数据扩增,最终得到了直行图像约2 000张,左转图像约2 300张,共4300余张图像的数据集。
图2 直行图像 图3 左转图像
2.3 卷积神经网络结构与功能实现
经过反复的参数调整之后,最终得到的卷积神经网络结构如图4所示。该卷积神经网络输入149×58像素的图像,经过各层后最终得到类别评分,然后判断前进的方向。
图4 卷积神经网络结构
整个端对端卷积神经网络避障小车系统的工作流程如下:首先,小车的摄像头每秒拍摄若干帧图片,图片经过WiFi传输到上位机后进行预处理;然后,输入到预训练好的神经网络中进行分类,得到图片类别,根据得到的类别情况,指挥小车进行障碍物的躲避等行为;最终,实现室内障碍物的躲避功能。
然而,笔者发现,在进行类别判断时,无论如何对网络结构与参数进行微调,总是会存在一些图片出现类别判断错误的情况;因此,考虑利用双流卷积网络对神经网络进行优化。
3
双 流 卷 积 神 经 网 络
3.1 双流卷积神经网络简介
最早,由Karen Simonyan与Andrew Zisserman提出的双流卷积神经网络(模型见图5),实现了对视频中动作的识别。该结构由2个支路流组成,一个称为空间流;另一个称为时间流。空间流中利用单帧的图像对网络进行预训练,而时间流中是利用相邻帧图像形成的光流图片进行预训练。
图5 双流卷积神经网络模型
Gibson在1950年首先提出了光流的概念。光流就是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。
在实际识别过程中,将待识别图像的单帧图像和其与上一帧图像对应的光流图像分别通过预训练后的网络进行识别,在经过神经网络后,将两路的评分进行融合,得到最终判断出来的类别。
在以往的目标识别中,大都是利用单帧的静止图像进行训练与识别等过程,通过图像中的空间信息进行类别判定。而利用双流法,加入了光流的信息,也就是加入了前、后2帧所包含的时间信息,将空间信息和时间信息相结合,可以更加准确地获得图像所对应的类别。
3.2 光流图像的获取
光流法的研究最早可以追溯到20世纪50年代,由Gibson等学者提出了利用二维平面的光流畅来恢复三维空间运动参数和结构参数的假设。Poggio和Reichartdt在1976年研究昆虫视觉时提出了关于光流的粗略计算方法。1981年Horn、Schunck、Lucas和Kanade将二维速度场与灰度相联系,引入了光流约束方程,他们对光流计算做了奠基性的工作,也标志着光流有效算法的正式提出。此外,Haralick等将二维物体表面划分成许多小块,假设每个小块内像素点的运动方向和速度近似且短时间内为常量,由此得到了光流的附加约束条件;Nagel在此基础上研究出了一种新的迭代算法,能够使得附加的光滑性约束在沿光流场梯度的垂直方向上变化率最小。
光流法的核心其实就是求解出运动目标的光流,也就是速度。根据视觉感知原理,客观物体在空间上一般是相对连续运动的,在运动过程中,投射到传感器平面上的图像实际也是连续变化的。为此可以假设:瞬时灰度值不变,即灰度不变性原理,由此可以得到光流基本方程:灰度对时间变化率等于灰度的空间梯度与光流速度的点积。此时需要引入另外的约束条件,从不同的角度引入约束条件导致了不同的光流分析方法:基于一阶梯度的方法、基于高阶梯度的方法、基于区域匹配的方法和基于频率域的方法等。本次研究用到的是传统的光流计算方法——Lucas&Kanade算法。
利用Lucas&Kanade算法,得到小车在直行和左转2种状态下的光流图像,分别如图6和图7所示。
图6 直行光流图像
图7 左转光流图像
4
利 用 双 流 卷 积 神 经 网 络 对 避 障 系 统 进 行 优 化
4.1 双流卷积神经网络结构
优化的双流卷积神经网络的结构如图8所示。将2路相同结构的神经网络在Softmax层后进行评分融合,得到最终的类别评分。2路支流分别是空间流和时间流,空间流的输入图像采用的是经过缩放、灰度变换等预处理后的149×58像素的图像,时间流的输入图像是利用原始图像得到的同样大小的光流图像。149×58像素的图像经过3×3的卷积核的卷积层后得到147×56像素的输出,再经过归一化层后,进入到池化层中,在池化层中按照3∶4的比例分别在水平与垂直方向对图像进行池化,得到了49×14像素的输出;再将输出经过Dropout层后输入到卷积核为5×3的卷积层中,得到45×12像素的输出,输出再经过归一化层后依次通过5∶3比率的下采样层(池化层)与4×3卷积核的卷积层,得到6×2像素的输出;然后再依次经过3∶1比率的池化层,dropout率为0.5的Dropout层、ReLU层、全连接层和Softmax层,得到最终的类别分数判断;最后,将分数进行融合,得到整个神经网络最终的类别判断。
图8 优化的双流法卷积神经网络结构
4.2 试验结果与分析
上述空间流和时间流2个支流的训练结果分别如图9和图10所示。
图9 空间流训练结果
图10 时间流训练结果
从图9和图10可以看到,2个支路最终都获得了非常高的识别率,收敛性也很优秀。如果只利用空间流的卷积神经网络来进行方向判定的话,不管如何调整优化学习率、网络结构和迭代次数等参数,总有一些图片是识别错误的(见图11);而如果加上时间流的卷积网络来帮助进行判定,则可以准确地确定图像的类别(见图12)。图12中,scores_s中0.313 7是空间流神经网络对直行类别判断的最终评分,0.686 3是该网络对转向类别的最终评分,可以看到空间流神经网络将该图像的类别判定为转向,而该图片的实际类别为直行;而在时间流神经网络的最终评分scores_t中,该网络对直行类别的评分为0.996 7,对转向类别的评分为0.003 3,正确的将图像类别判断为直行。在对2路支流的评分进行融合后,可以得到该图像的最终评分scores(直行评分为0.655 2,转向评分为0.344 8)将该图像类别判定为直行,解决了仅仅通过时间流卷积网络类别判断错误的问题。
图11 类别待判断图像
图12 双流法分类结果
5
结 语
本文通过对原双流卷积神经网络进行优化,提高了图像类别判断的准确性,获得了更可靠的神经网络系统,进而提高了整个机器人导航系统的性能。
张亚初(1993~),男,硕士研究生,主要从事机器学习、波前编码、智能图像处理等方面的研究。
领取专属 10元无门槛券
私享最新 技术干货