基于神经网络融合的司机违规行为识别
2018-12-13李俊俊杨华民张澍裕李松江
李俊俊 杨华民 张澍裕 李松江
1(北京航天控制仪器研究所研发中心物联网与智能结构室 北京 100854)2(长春理工大学计算机科学技术学院 吉林 长春 130022)
0 引 言
随着经济的快速发展,人们逐渐过上了幸福的生活,轿车逐渐成为人们日常生活中的主要交通工具,轿车给人们生活带来便利的同时,也给不少人带来了生命的危险。交通事故的频频发生,使很多美好的家庭遭到沉重的打击。在调查造成交通事故发生的原因时,经过统计发现司机的不规范行为,比如在行驶过程中抽烟、玩手机是造成交通事故的很重要原因。通过制约司机的不规范行为可以在一定程度上减少不必要的交通事故。因此如何快速有效地识别出司机的不规范行为成为众多研究者关心和关注的问题。
司机驾驶违规检测技术的发展,离不开图像识别技术的发展,通过在汽车驾驶室里安装摄像头,来实时检测司机的驾驶行为。近年来随着深度学习的发展,把图像识别技术推向了前所未有的高度。图像识别是计算机视觉领域的重要研究方向之一,其主要是利用计算机对图像进行处理、分析和理解,从而能够识别多种不同情况下的目标及对象。在本文中主要利用图像识别技术来发现司机在行驶过程中的不规范行为。
深度学习作为近年来越来越热门的技术,其在图像识别中表现出了极佳的效果。深度学习在2006年,由Geoffery Hinto和他的学生Ruslan Salakhutdinov在国际顶级学术期刊《Science》上发表的一篇文章[1]中第一次提出,随后深度学习得到了迅速的发展。而作为深度学习中重量级的卷积神经网络CNN(Convolution neural network)则可以追溯到20世纪60年代初期,当时是由两位著名的生物学家Hubel和Wiesel在文献[2]中提出了感受野的概念。到了20世纪80年代中期Fukushima在文献[3]提出的基于感受野概念的神经认知机,在目前看来可以作为卷积神经网络第一次真正的实现。本文主要通过对深度学习中经典的模型-卷积神经网络进行改进,来检测司机在驾驶过程中出现吸烟和玩手机这两种行为,从而达到发出精准警告信息的目的,进而有效地降低交通事故的发生。因此司机违规行为识别研究就变得十分重要且有意义,本文正是基于此做的相关研究。
1 相关工作
司机违规检测[25-27]研究也是因为随着人们出行车辆逐渐变多,导致交通事故频发才逐渐引起研究人员的注意。近期学者对司机行为检测大多还是采用传统机器学习的算法。文献[28]采用传统的机器学习算法,提出一种基于自适应特征聚类的特征检测方法,该方法主要是将复杂环境下机车司机的操作行为特征提取出来,并通过和标准的操作行为进行比较,从而判断机车司机的操作行为是否违规。该文献提出的方法虽然表现出了一定的优势,但仅限于小规模数据集,对于大场景大规模数据集表现一般,因此迫切需要采用最新的深度学习算法来解决司机行为检测问题。另外对于司机行为检测另一个研究热点是对于疲劳驾驶的研究,其中文献[29]对目前司机疲劳驾驶检测方法做了最新的综述,从综述中看出,迫切需要新的方法来应用于司机行为检测的研究。文献[30]针对司机疲劳驾驶检测,设计了一种基于图像处理DSP芯片DM6437的疲劳驾驶视觉检测系统,但采用硬件DSP来解决检测问题,在算法上创新较少。本文所做的研究是采用最新的深度学习算法来更好地解决司机违规行为识别检测。
图像识别属于计算机视觉领域的一个主要研究方向,在过去的岁月里,很多学者都投身于图像识别的领域中,也涌现出一批优秀的图像识别算法。
最早的图像识别技术可以追溯到20世纪60年代[4],不过当时局限于硬件水平的发展,图像识别技术一直处于低迷状态。随着科技的发展,计算机硬件的发展得到了空前的提高,尤其是GPU的快速发展,基于深度学习的图像识别算法逐渐成为主流的算法。另外一个推动图像识别技术发展的是大规模数据集的发展,如ImageNet[5]、Places[6]、SUN397[7]等大规模数据集的出现,其中ImageNet数据集主要集中于物体概念的图像,当然也包括少量的场景概念图像,该数据集是推动深度学习算法的重量级数据集。
Krizhevsky等[8]在ImgeNet竞赛上取得了很好的成绩,而这是他们第一次在ImageNet上训练出了一个8层的深度模型。自此之后卷积神经网络在图像分类与识别领域受到前所未有的认可。后续很多学者献身于卷积神经网络的优化与改良。Simonyan等[9]在原来Krizhevsky等[8]的模型基础上,提出一个19层的CNN模型(VGG-19),VGG-19主要是通过增减卷积层来增加该模型的深度,同时采用较小的卷积滤波(3×3)。卷积神经网络能够利用图像的边缘、角点、纹理等高层特征,对特定任务的有针对性的(specific)特征[10-11],通过逐层特征学习来模拟人脑分层处理信息机制。随着ImageNet竞赛的推进,Szegedy等[12]受Hebbian原理和多尺度处理的启发,提出了一个22层的深度学习模型GoogleNet[12]。GoogleNet主要由多个Inception Model堆叠形成,它主要利用不宽的卷积核对前一层的输出做卷积,最后合并形成后一层的输入。Zhou等则在Places[6]上对于多场景分类训练出不错的深度模型,可以有效解决多场景分类问题。Liu等[13]采用在MIT-67上提出一种采用跨卷积层池化技术将卷积层的特征作为通用特征的模型,表现出了不错的效果。Gong等[14]先使用卷积神经网络基于图像块提取特征,随后使用主成分分析降低维度形成图形特征,相比于直接从整幅图上提取卷积神经网络特征,该方法提取的特征具有几何不变性。
以上这些模型都在通用数据集上表现出了不错的效果,但在特定领域的数据集上还不能完全适用。本文在解决特殊领域司机违规行为识别问题时,既要考虑性能问题,同时也要考虑效率问题。最终,本文提出了三级级联的卷积神经网络并通过改进激活函数的方法来有效地解决司机违规行为识别问题。
2 神经网络融合
传统的神经网络融合,通常是将两个或多个网络线性加权或者采用随机梯度的方式进行加权融合,而本文提出的神经网络融合是结合FCNN网络与本文提出的三级级联神经网络。首先我们使用FCNN网络对训练数据集进行数据处理,对图像进行分割,这样分割后的图像仅仅包含我们需要的任务信息,过滤边缘多余的信息,再通过本文提出的三级级联的神经网络进行最终的处理。整体架构图如图1所示。
2.1 卷积神经网络
卷积神经网络通常是由输入层、卷积层、池化层、全连接层以及输出层这五个部分组成,其中卷积层和池化层一般交替进行,即一个卷积层链接一个池化层,池化层后再链接一个卷积层,依次类推。从中也可以清晰地看到由于卷积层中输出特征面的每个神经元与其输入进行局部链接,并通过对应的连接权值与局部输入进行加权求和,再加上偏置值,得到该神经元输入值,该过程等同于卷积过程,CNN名称也由此而来[15]。
Yann LeCun教授在1998年提出了LeNet-5模型[15],LeNet-5目前被公认为是第一个成功应用于数据识别问题的卷积神经网络,LeNet-5模型可以达到大约99.2%的正确率。文献[16-23]分别提出了针对特定领域内的问题设计卷积神经网络结构,得到了精度很高的实验结果。虽然LeNet-5在公开的数据集中已经表现出了良好的性能,但是在特定领域的数据集中还存在一些不足。因此本文基础的对比模型是LeNet-5典型的卷积神经网络,但在LeNet-5的结构基础上采用了文献[24]中的激活函数来改进卷积神经网络中的激活函数,从而更好地识别出司机的违规行为。
2.2 FCNN网络
FCNN网络使用Lonjong等在CVP2015中提出的对图像进行像素级的分类网络模型,主要是为了更好地解决语义级别的图像分割问题。它与经典的CNN网络最大不同在于,经典的CNN网络在卷积层后通常使用全连接层得到固定长度的特征向量进行分类,也就是我们经常用的全连接层后面紧跟着SoftMax进行输出,而FCNN网络可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样,使它恢复到与输入图像相同的尺寸,从而对每个像素都产生一个预测,同时保留了原始输入图像的空间信息,并在上采样的特征图上进行逐像素分类。最后逐个像素计算softmax分类的损失,相当于每一个像素对应一个训练样本。
通过上面的描述,我们可以清晰地看到FCNN网络主要应用于图像分类,而本文的主要任务是进行图像分类,那么如何利用FCNN网络来提高分类性能,成为本文的主要工作点。本文采用FCNN网络是在图像预处理阶段,对图像先进行语义分割,保留人物部分。之所以保留人物部分是因为我们采集的图像,除了人物外还有很多车内的其他物体,但我们主要是检测司机的违规行为,因此只关注人物信息。在进行分类之前首先对图片进行语义分割,可以有助于过滤掉其他无关特征,保留更加有效的特征。
2.3 三级级联神经网络
在2.1节给出的神经网络是最基本的神经网络,在大部分的识别任务中可以得到不错的效果,但是对于司机违规行为识别领域,则表现一般。其原因在于司机在开车过程中主要的违规行为表现在头部与手臂部位,比如抽烟和玩手机这两种行为。因此针对司机的违规行为识别,我们先利用2.2节提出的FCNN网络对原始图像进行语义分割,再利用本文提出了三级级联的深度卷积神经网络对其进行识别,每一级都使用Tensorflow框架来实现,整体架构图如图2所示,框架包含三级。
第一级是一个比较简单的二分类卷积神经网络,它只包含一个卷积层和一个Softmax分类器,其中卷积层采用5×5大小的卷积核,池化层采用最大Pooling,最后通过Softmax输出分类结果。第一级卷积神经网络主要是用于快速剔除大量明显的正常司机行为,减少样本量,因此在本级神经网络中学习率采用0.5,以使其快速收敛。通过实验证明,第一级神经网络能剔除大量正常的司机行为,从而保留大量的司机驾驶异常行为,为接下来的第二级神经网络做准备。
第二级神经网络是整个框架的中间层网络,它只包含三个卷积层和一个Softmax分类器,其中三个卷积层采用5×5大小的卷积核,第一个卷积层后采用最大Pooling,剩余的两个卷积层后采用平均Polling。最后通过Softmax输出分类结果。它的作用与第一层类似,主要是进一步剔除司机的正常行为,由于第一级已经剔除了一定规模的司机正常驾驶样本,因此本级采用学习率为0.2,以使其能更好地剔除司机正常驾驶行为。如图2所示,第二级神经网络有三个卷积层及一个Softmax分类器组成,从图中可以明显看出,它比第一级网络要复杂一些,因此具有更高的区分力。
第三级神经网络将采用更加复杂的结构,经过实验检测,速度比较理想。这主要是因为经过第一级和第二级神经网络已经剔除了大量的司机正常驾驶行为样本,因此第三级神经网络在给出最终的识别结果时速度较快。同时由于第三级神经网络设计更为复杂,层数也最多,因此在性能上也可以更好地识别出司机的异常驾驶行为,相比第二级神经网络,第三级神经网络包括四层卷积层与一个Softmax层。其中四个卷积层采用5×5大小的卷积核,第一个卷积层后采用最大Pooling,剩余的三个卷积层后采用平均Polling。最后通过Softmax输出分类结果,由于本级是最后一级,是输出最后结果的一级,因此,本级学习率采用0.02,以使其达到更好的效果。
上述的三级级联卷积神经网络的优点是,前两级网络比较简单,可以快速去掉大量司机正常驾驶样本,虽然第三级网络复杂,但是由于前两级已经去掉大量的样本,因此第三级网络虽然复杂但整体速度还是比较快,相对于从始至终都采用第三级网络速度要快很多。
除了采用三级级联的卷积神经网络外,在激活函数方面,本文直接采用了文献[24]中改进的激活函数。该文提出的激活函数述结合ReLUs函数的稀疏性以及Softplus函数的光滑性,激活函数的公式如下:
(1)
3 实验结果与分析
3.1 实验数据
为能够确保数据的真实性,本文的实验数据通过真人模拟来采集,首先通过人工模拟吸烟与玩手机动作后,通过车上安装的摄像头来采集本实验所需要的图片素材,取帧软件为Windows自带的ffmpeg,采集到的图片详细数据如表1所示。为了防止模型容易训练过拟合,额外采集了5 000张正常司机行为的图片,把这些司机正常的数据集与之前人工模拟采集的违规行为数据集混合在一起,然后把数据集分为训练集、测试集和验证集。实验获取了吸烟、玩手机、正常3个类别的图片,图像为32(宽)×32(高)×3(RGB彩色通道),训练集15 000张,验证集图片6 000张,测试集图片9 000张。训练集、验证集和测试集中的司机行为类别个数始终保持相等,当这两个类别的概率都低于给定概率阀值时,则为第三种既没有吸烟也没玩手机类别。为了保证实验的有效性,本文在数据集产生过程中使用了随机采样,即训练集是分别从正常数据(正常的司机行为)和异常数据(司机抽烟和玩手机)中随机抽取相应数量的数据组成训练集,以同样的方式形成测试集及验证集。
表1 人工摸拟采集的数据集详情
下面给出实验中具体采集的图片样例:其中图3是司机驾驶过程中玩手机的样例图,在我们的算法中主要检测手机部分及相应的位置,来判断是否是在驾驶过程中使用手机。图4是司机驾驶过程中抽烟样例图,算法检测中主要检测香烟及手部部分来判断是否在驾驶过程中有抽烟行为。
图3 司机驾驶过程中使用手机样例图
图4 司机抽烟样例图
3.2 实验结果与分析
为了证明本文设计多级级联卷积神经网络在司机违规行为识别的有效性,进行了以下六组实验:
(1) 只采用三级级联神经网络模型与LeNet-5算法的对比;
(2) 只采用三级级联神经网络模型与AlexNet算法的对比;
(3) 本文设计的神经网络融合模型与LeNet-5的对比;
(4) 本文设计的神经网络融合模型与与AlexNet的对比;
(5) 本文设计的神经网络融合模型与只采用三级级联的神经网络算法对比;
(6) 本身设计的算法在不同激活函数下的对比。
下面将对实验进行详细分析:
从图5可以看出,只采用三级级联卷积神经网络结构,随着迭代次数的增加,当迭代3 000次左右能达到最大准确率,而基于LeNet-5算法的结构需要迭代4 000次左右准确率才能达到最高,达到最大准确率所需的迭代次数前者要小于后者。
图5 LeNet-5算法和三级级联神经网络随迭代次数变化
图6为只采用三级级联卷积神经网络算法在性能上与LeNet-5和AlexNet模型结构算法的对比。从图中可以看出,三级级联的卷积神经网络在准确率方面要好于LeNet-5与AlexNet,原因在于三级级联的卷积神经网络中,前两级神经网络已经过滤掉大量的司机正常驾驶行为数据,因此到第三级神经网络识别时就能很轻易地识别出异常司机驾驶行为,从而准确率要优于LetNet-5与AlexNet。
图6 各算法准确率比较
图7为本文提出的神经网络融合模型与三级级联的卷积神经网络对比,随着迭代次数的增加,当迭代2 500次左右的时候本文提出的神经网络融合模型能达到最大准确率,而三级级联的神经网络要在3 000次左右。之所以神经网络融合的方法能更快收敛,是因为经过FCNN语义分割后,图像变得更加简单,在随后的分类中更加容易识别出任务特征。
图7 本文方法和三级级联神经网络随迭代次数变化
从图8中可以看出本文提出的神经网络融合的方法相对于其他方法,在准确率方便表现出明显的优势,证明了本文提出的神经网络融合的模型在司机违规行为识别方面是一个行之有效的模型。
图8 本文提出的模型与其他模型比较
4 结 语
本文通过使用神经网络融合的架构,结合FCNN网络与三级级联神经网络,在每级卷积神经网络中采用更好的激活函数,使用改进后的卷积神经网络对司机驾驶行为如抽烟、玩手机进行识别。通过对比实验可以看出,本文提出的方法相对于经典的LetNet-5与AlexNet表现出了良好的性能。实验结果表明本文提出的方法较之对比实验中的方法更能有效地进行司机违规行为识别。后续除了研究提高数据集的准确率外,还需要优化训练速度,比如充分利用多个GPU并行化训练模型或者使用分布式系统来部署TensorFlow以加快训练速度等。