一种基于深度学习的危险驾驶行为实时检测方法与流程

文档序号:11063691阅读:4508来源:国知局
一种基于深度学习的危险驾驶行为实时检测方法与制造工艺

本发明涉及智能交通领域中的危险驾驶行为检测的相关问题,具体涉及一种基于深度学习的危险驾驶行为实时检测方法。



背景技术:

随着机械制造和车辆工程技术的进步以及人民经济生活水平的提高,我国的汽车和驾驶员数量在不断攀升,交通工具的进步给人们带来生活便利的同时,也造成了交通事故的频发,对人民的生命财产安全造成了极大的威胁,其中接听电话、抽烟等违规驾驶行为是造成事故的主要原因,这也引起了政府、高校等研究机构和汽车企业的重视,对违规驾驶行为的检测、提醒、监督也成为了目前的一个研究热点。

交通事故造成的人员伤亡和财产损失是非常巨大的,并且在全球范围内每年我国的交通事故数量都比其他国家高,这十分不利于我国的经济发展和社会进步。据欧美的一些调查显示,驾驶员人为因素造成的交通事故数量占事故总量的90%左右,其中85%左右是由驾驶员违规操作、行为规范差、经验不足等造成的,驾驶途中使用手持电话、抽烟等行为在交通违法行为中排名靠前。英国一家交通研究所研究称,驾驶途中使用电话时的大脑反应速度比酒后驾驶(血液中酒精浓度0.08w/v)慢30%,车祸发生的概率比正常驾驶时高4倍,且极易造成交通阻塞,这主要是由于接听电话造成驾驶人员注意力不集中造成的。驾驶途中抽烟易造成驾驶行为不规范、血氧饱和度降低并造成注意力下降、眼睛的感光性和适应性下降,影响驾驶安全。

目前的危险驾驶行为检测主要分为接触式和非接触式两大类。接触式检测主要有两类:(1)基于驾驶员生理特征分析的危险驾驶行为检测,例如吴群.基于心电信号的驾驶疲劳方法研究[D].杭州:浙江大学,2008。这类方法需要驾驶员佩戴一些生理、心理检测装置,操作复杂,佩戴不便,极易受到驾驶员个体因素的影响,不能真实有效的反应实际情况,并且由于价格和佩戴舒适度的影响,推广不易;(2)基于车辆传感器检测的检测系统,例如张希波.基于方向盘操作的驾驶人疲劳状态检测方法[J].清华大学学报:自然科学版,2010,50(7):1072-1076。这类方法是通过安装能够检测出车辆状态的各类传感器,通过车辆状态分析驾驶员行为并进行预报,此种方法对硬件要求高,价格昂贵,且由于不同驾驶员的驾驶行为差异较大,十分容易造成干扰,误报率高。

非接触式检测的方法,目前主要是通过在车内安装摄像头,通过传统的图像处理的方法进行检测分析,例如申请号201510585266.1,发明名称为《一种适用于多姿态下的驾驶人员接打电话行为检测方法》,这种方法相比于接触式检测方法受干扰因素小,使用方便,价格便宜,但难以满足检测实时性的要求,易受光线、驾驶员体貌的影响,并且图像分析需要根据全局和上下文信息进行判断,而传统的图像处理方法在第一步提取局部纹理特征的时候就丢失了全局信息,造成准确率的下降。



技术实现要素:

本发明技术解决问题:克服现有技术的不足,提供一种基于深度学习的危险驾驶行为实时检测方法,能够有效地提高危险驾驶行为检测的精度,并有具有良好的实时性和迁移性,具有广阔的应用前景。

本发明技术解决这群:一种基于深度学习的危险驾驶行为实时检测方法,包括以下步骤:

步骤一:搭建前车图像采集系统,收集训练样本并进行人工标注,建立危险驾驶行为数据集。

在城市随机选取五个路口,架设前车图像采集装置,收集前车图像,除去的无效图像,对剩余图像进行人工标注并分为四类:无危险驾驶行为、驾驶途中使用手持电话、驾驶途中抽烟、驾驶途中使用手持电话且吸烟,从中随机选取2-5万(本发明实施例采用2万张)张用于测试,剩余的前车图像中无危险驾驶行为、驾驶途中使用手持电话、驾驶途中抽烟、驾驶途中使用手持电话且吸烟这四类各选取2-5万张作为训练集,分别以0,1,2,3开头的数字命名,每类的2-5万张中随机选取20%作为验证集(本发明实施例4000张作2万为验证集),剩余的80%(本发明实施例16000)作为训练集。

步骤二:基于深度学习的方法,根据危险驾驶行为数据集的特点,提出空间金字塔池化的卷积深度置信归一化分类网络(SPP-CDBRNet)模型。

空间金字塔池化的卷积深度置信归一化网络(SPP-CDBRNet)模型自上而下依次为一个数据层data、两个卷积深度置信归一化模型CDBRN 1和CDBRN2、三个卷基层cnn3-cnn5(每个卷积层后跟一个激活层relu3-relu5,以relu函数作为激活函数,能有效解决梯度消失的问题)、一个降采样层pool5、一个空间金字塔池化层spp6、三个全链接层fc7-fc9(fc7与fc8均采用relu激活函数,并跟dropout层drop7-drop8,可以有效防止权值过渡拟合),一个损失层loss构成,损失层类型为Soft-max,label为危险驾驶行为数据集中对应于图像的分类标签,如图3所示,图中DriveNet为搭建网络架构模型时为SPP-CDBRNet的命名。

1)两个卷积深度置信归一化模型(CDBRN,分为CDBRN1和CDBRN2)

每个CDBRN模型均包含一个可视层(V)、一个隐含层(H)、一个降采样层(P)、一个归一化层(L),如图2所示。可视层实现对预处理图像的输入,为方便描述,输入图像为正方形大小为W*W,记可视层大小为WV*WV,隐含层滤波器大小为KH*KH,滤波器个数为NH,步长为SdH,在输入的每个边需要补充的像素为PadH,降采样层滤波器大小为KP*KP,滤波器个数为NP,步长为SdP,在输入的每个边需要补充的像素为PadP。因此,隐含层(H)大小WV=(W+2×padH-KH)/SdH+1,降采样层(P)大小WP=(W+2×padP-KP)/SdP+1。

CDBRN每个状态(v,h)的能量函数E为:

对有如下限制:

CDBRN1和CDBRN1均有一个对应的能量函数,有能量函数是因为它采用的了限制玻尔兹曼机的架构,所以必然有能量函数,又由于其中包含了卷积操作,所以其能量函数与一般的限制玻尔兹曼机的不同,是含有卷积的能量函数,能量函数对于CDBRN的作用就相当于损失函数对于网络架构的作用一样,CDBRN是通过能量函数的反向传播来调整参数的,因此每个CDBRN均由一个对应的能量函数。

其中,(v,h)代表能量函数的每一种可能的状态,

K是可视层和隐含层含有的特征映射的数量,H和P都有K组特征映射Hk和Pk,k=1,2,…K,WV是可视层的宽度,WH是隐含层的宽度,是隐含层H的第k个特征映射,i和j分别代表在特征映射中的行数和列数,代表卷积权重Wk的180度旋转,*代表卷积操作,bk是Hk中所有的单元共享的偏差,c是可视层单元共享的偏差,vi,j是可视层第i行第j列的单元,降采样层的宽度,α是对应于隐藏层某个单元的降采样结果。

2)空间池金字塔化(SPP-Net)

一般的网络都只能输入固定大小的图像,需要经过裁剪或者缩放等处理才能作为输入送到网络中,但这些处理往往会降低检测的精度,而空间金字塔池化能够使得任意大小的特征图都能够转化成固定大小的特征向量,从而使得加入了空间金字塔池化的网络可以输入任意大小的图像,提高网络的精度并减少网络的限制性。

设一张图像大小为W*W,希望提取出N个特征向量,为描述方便,设金字塔有两层,第一层提取出N1个特征向量,第二层提取出N2个特征向量,N=N1+N2,那么第一层的窗大小(windows size)为(W/N1,W/N1),第二层的窗大小(windows size)为(W/N2,W/N2)。

3)卷积层、池化层和全链接层

卷积神经网络包含特征提取层和特征映射层两层,其中特征提取层的每个神经元与前一层的局部连接域相连并提取局部特征,特征映射层主要通过激活函数使得特征映射具有位移不变性,并通过权值共享降低自由参数个数。

空间金字塔池化的卷积深度置信归一化网络采用了三层卷积加一个降采样层的方法来学习全局化的特征,因为一层卷积学到的特征往往是局部的。全连接层的主要作用是形成一个分类器。

4)SPP-CDBRNet各层的相关参数

第一个卷积深度置信归一化模型CDBRN1包含一个可视层(V1)、一个隐含层(H1)、一个降采样层(P1)、一个归一化层(L1),可视层(V1)输入的是经过预处理的前车图像,隐含层(H1)数据是可视层通过卷积得到的,降采样层(P1)数据是隐含层数据通过降采样得到的,降采样层(P1)数据经过归一化操作后生成归一化层数据;可视层(V1)输入经过预处理的前车图片像;隐含层(H1)的步长为4,卷积核为11,滤波器个数为96;降采样层(P1)的步长为2,池化区域为3*3,归一化层(L1)的缩放比例为0.001,指数为0.75,求和的空间区域长度为5*5;

第二个卷积深度置信归一化模型CDBRN2包含一个可视层(V2)、一个隐含层(H2)、一个降采样层(P2)、一个归一化层(L2),可视层(V2)输入为第一个卷积深度置信归一化模型归一化层的输出,隐含层(H2)的步长为4,卷积核为5,滤波器个数为256,降采样层(P2)的步长为2,池化区域为3*3,最后的归一化层(L2)的缩放比例为0.001,指数为0.75,求和的空间区域长度为5*5;

CDBRN2的归一化层(L2)的输出作为其后接的三个卷积层的第一个cnn3的输入,所述cnn3的卷积核大小为3*3,滤波器个数为384,cnn 4的卷积核大小为3*3,滤波器个数为384,才能cnn5的卷积核大小为3*3,滤波器个数为256;

cnn5后接降采样层pool5,降采样层pool5的卷积核大小为3*3,步长为2;

空间金字塔池化层spp6使用的是单层的空间金字塔,窗大小设为ns*ns,为降采样层pool5输出的特征图长度,其后接的三个全连接层fc7-fc9中的fc7神经元个数为2048,fc8神经元个数为1024,fc9神经元个数为4;

损失层的类型为Softmax。

步骤三:对建立的数据集进行预处理,采用带动量的随机梯度下降方法,利用预处理后的数据集对SPP-CDBRNet模型进行训练,得到能够精确识别是否具有危险驾驶行为(驾驶途中使用手持电话和抽烟)的SPP-CDBRNet

1)预处理方法

在实际应用中的图像可能有多种格式,比如:jpg、jpeg、png等,为了能使用于各种情况,先对图像进行处理,统一转化为lmdb格式。首先创建一个sh脚本文件,调用linux命令来生成训练集、测试集的图像清单,然后调用caffe自带的creat_lmdb.sh脚本文件生成最终的lmdb格式数据。由于图像减去均值后再进行训练能够提高训练速度和精度,所以在预处理中对转化为lmdb格式的图像进行减均值操作。

2)训练方法

采用随机梯度下降加动量的配置,相比普通的随即梯度下降算法,这种配置能极大地加快收敛速度,尤其是对高区率、梯度很小但一致或噪声梯度很有效。其参数更新规则为:

θ←θ+v

其中,v为相比于普通的随机梯度下降增加的速度向量,α为动量参数,ε为学习速率,为针对权重θ的微分,m为minibatch大小,L(f(x(i);θ),y(i))为损失函数,x(i)为针对权样本中的某个样例,y(i)为对应的标签。

本发明与现有技术相比优点在于:

(1)本发明能够准确地对驾驶员行车过程中使用手持电话和抽烟这两种危险驾驶行为进行检测。

(2)相比于目前已有的方法,本发明成本低,检测速度快,可以输入任意大小的图像,受外界干扰小,具有良好的实时性和迁移性,并且能有效提高检测的精度,具有十分广阔的应用前景。

附图说明

图1为本发明方法的流程示意图;

图2为卷积深度置信归一化模型(CDBRN)的结构示意图;

图3为本发明中空间金字塔池化的卷积深度置信归一化网络SPP-CDBRNet的结构示意图。

具体实施方式

下面结合附图及实施例对本发明进行详细说明。

在叙述本发明之前对下面叙述到的相关术语进行一下说明,

1)convert_imageset命令:caffe提供的图像转换工具,用于将图像转换成lmdb/leveldb格式。

使用方法:convert_imageset[FLAGS]ROOTFOLDER/LISTFILE DB_NAME

参数:ROOTFOLDER表示输入的文件夹

参数:LISTFILE表示输入文件列表

可选参数:[FLAGS]可以指示是否使用颜色空间,编码等。

2)Lmdb格式:是caffe支持的一种数据格式,常用于单标签数据,像分类等。

3)compute_image_mean.cpp:caffe提供的用于计算训练数据库平均图像的文件。

使用方法:compute_image_mean[FLAGS]INPUT_DB[OUTPUT_FILE]\n”)

参数:INPUT_DB表示数集库

参数(可选):OUTPUT_FILE表示输出文件名。

如图1所示,本发明的一种基于深度学习的危险驾驶行为实时检测方法,包括以下步骤:1、搭建前车图像采集系统,收集训练样本并进行人工标注,建立危险驾驶行为数据集;2、基于深度学习的方法,根据危险驾驶行为数据集的特点,提出空间金字塔池化的卷积深度置信归一化分类网络(SPP-CDBRNet)模型;3、对建立的数据集进行预处理,采用带动量的随机梯度下降方法,利用预处理后的数据集对SPP-CDBRNet模型进行训练,得到能够精确识别是否具有危险驾驶行为(驾驶途中使用手持电话和抽烟)的SPP-CDBRNet;4、利用确定的SPP-CDBRNet模型,对前车图像进行检测,实现对危险驾驶行为的实时检测。本发明能够有效地提高危险驾驶行为检测的精度,并有具有良好的实时性和迁移性,具有广阔的应用前景。

具体实施如下:

一、搭建前车图像采集系统,收集训练样本并进行人工标注,建立危险驾驶行为数据集

在城市随机选取五个路口,架设前车图像采集装置,收集前车图像,除去的无效图像,对剩余图像进行人工标注并分为四类:无危险驾驶行为、驾驶途中使用手持电话、驾驶途中抽烟、驾驶途中使用手持电话且吸烟,从中随机选取2万张用于测试,剩余的前车图像中无危险驾驶行为、驾驶途中使用手持电话、驾驶途中抽烟、驾驶途中使用手持电话且吸烟这四类各选取2万张作为训练集,分别以0,1,2,3开头的数字命名,每类的两万张中随机选取4000张作为验证集,剩余的16000张作为训练集。将每一类的4000张作为验证集的图像存至同一文件夹中,命名为test,将每一类中作为训练集的16000张的图像存至同一文件夹中,命名为train,将test和train文件夹均存至caffe下的data文件夹中的drive文件夹中。

二、对准备的数据进行预处理

在caffe的examples文件夹下创建一个drive的文件夹用于存放需要的配置文件和脚本文件。

1)将图像转化为lmdb格式

为了拓宽本发明的方法使用范围,使其能适用于各种格式的图像,首先将准备好的数据转化为lmdb格式。在drive文件夹下创建一个脚本文件drive_list.sh,用来生成训练集和测试集的txt格式的清单,运行该脚本文件,会在脚本编写的路径下分别生成关于训练集和测试集的txt文件,在这里将路径设置为caffe/examples/drive,txt文件中包含的是图像的列表清单。然后编写一个脚本文件调用caffe自带的convert_imageset命令用于转化数据格式,运行该脚本后会在相应路径caffe/examples/drive下生成img_train_lmdb和img_test_lmdb两个文件夹,其中保存的是转化后的lmdb文件。

2)减均值操作

为提高训练速度和精度,直接调用caffe自带的计算均值的文件compute_image_mean.cpp进行减均值预处理,在相应的路径下会生成均值文件mean.binaryproto。

三、搭建网络模型编写配置文件

1)搭建空间金字塔池化的卷积深度置信归一化分类网络(SPP-CDBRNet)模型

模型采用本发明提出的空间金字塔池化的卷积深度置信归一化分类网络(SPP-CDBRNet)模型,故须自己编写空间金字塔池化的卷积深度置信归一化分类网络(SPP-CDBRNet)模型架构的prototxt格式的文件,在drive文件夹下新建一个drive_train_test.prototxt文件,根据网络架构的编写规则编写,空间金字塔池化的卷积深度置信归一化网络(SPP-CDBRNet)模型自上而下依次为一个数据层data、两个卷积深度置信归一化模型CDBRN 1和CDBRN2、三个卷基层cnn3-cnn5(每个卷积层后跟一个激活层relu3-relu5,以relu函数作为激活函数,能有效解决梯度消失的问题,增加网络训练成功率,进而提升危险驾驶行为实时检测的效率。)、一个降采样层pool5、一个空间金字塔池化层spp6、三个全链接层fc7-fc9(fc7与fc8均采用relu激活函数,并跟dropout层drop7-drop8,可以有效防止权值过渡拟合,增加网络训练成功率,进而提升危险驾驶行为实时检测的效率),一个损失层loss构成,损失层类型为Soft-max,label为危险驾驶行为数据集中对应于图像的分类标签,为这个网络架构模型命名为DriveNet,如图3所示。

在drive_train_test.prototxt文件中,数据层有两个(训练和测试),在数据层中在mean_file后添加相应的均值文件mean.binaryproto的路径,在source后添加相应的img_test/train_lmdb文件的路径。

第一个卷积深度置信归一化模型CDBRN1包含一个可视层(V1)、一个隐含层(H1)、一个降采样层(P1)、一个归一化层(L1),可视层(V1)输入的是经过预处理的前车图像,隐含层(H1)数据是可视层通过卷积得到的,降采样层(P1)数据是隐含层数据通过降采样得到的,降采样层(P1)数据经过归一化操作后生成归一化层数据;可视层(V1)输入经过预处理的前车图片像;隐含层(H1)的步长为4,卷积核为11,滤波器个数为96;降采样层(P1)的步长为2,池化区域为3*3,归一化层(L1)的缩放比例为0.001,指数为0.75,求和的空间区域长度为5*5;

第二个卷积深度置信归一化模型CDBRN2包含一个可视层(V2)、一个隐含层(H2)、一个降采样层(P2)、一个归一化层(L2),可视层(V2)输入为第一个卷积深度置信归一化模型归一化层的输出,隐含层(H2)的步长为4,卷积核为5,滤波器个数为256,降采样层(P2)的步长为2,池化区域为3*3,最后的归一化层(L2)的缩放比例为0.001,指数为0.75,求和的空间区域长度为5*5;

CDBRN2的归一化层(L2)的输出作为其后接的三个卷积层的第一个cnn3的输入,所述cnn3的卷积核大小为3*3,滤波器个数为384,cnn 4的卷积核大小为3*3,滤波器个数为384,才能cnn5的卷积核大小为3*3,滤波器个数为256;

cnn5后接降采样层pool5,降采样层pool5的卷积核大小为3*3,步长为2;

空间金字塔池化层spp6使用的是单层的空间金字塔,窗大小设为ns*ns,ns=WP5/64,WP5为降采样层pool5输出的特征图长度,其后接的三个全连接层fc7-fc9中的fc7神经元个数为2048,fc8神经元个数为1024,fc9神经元个数为4;

损失层的类型为Softmax。

2)搭建测试网络模型

在drive文件夹下,新建名为drive_deploy.prototxt的文件,将drive_train_test.prototxt文件中的数据层和损失层去掉,网络名称同样命名为DriveNet。

3)编写配置文件

在drive文件夹下新建名为drive_solver.prototxt的文件,创建的训练集中有16000个验证样本,batch_size设为50,故test_iter为320,共64000个训练样本,batch_size设为100,故test_interval为640。学习策略设置为“step”,总的迭代次数设为256000,stepsize大小设为64000,即为迭代64000次降低一次学习率,动量设为0.9,权重衰减设为0.005,display设为640,base_lr设为0.01。

四、训练和测试

1)训练和测试

数据和相关的网络及配置文件都准备完毕,在命令窗口中直接运行drive_solver.prototxt文件即可。根据显示的训练误差和测试误差,适时终止训练,修改drive_solver.prototxt中的相关参数即可。

2)用训练好的模型分类新的图像

再训练中已经生成了训练好的caffemodel和solverstate文件,需要的drive_deploy.prototxt文件也已准备好,利用这三个文件对数据集中的2万张测试集进行分类检测。

五、用训练好的分类网络(SPP-CDBRNet)模型进行危险驾驶行为实时检测

1)从前车图像采集系统中获取道路上实时的前车图片像;)

2)对获取的前车图像进行预处理;

3)将预处理后的前车图像送入通过训练获得的caffemodel文件中进行分类,即获得该前车图像的危险驾驶行为实时检测结果。

六、对得到分类网络(SPP-CDBRNet)模型进行对比分析

经过对比和分析,相比于目前已有的其他方法,用空间金字塔池化的卷积深度置信归一化分类网络(SPP-CDBRNet)模型对危险驾驶行为进行检测精度更高,且成本低,检测速度快,可以输入任意大小的图像,具有良好的实时性和迁移性,应用前景十分广阔。

提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1