基于卷积神经网络的驾驶员检测和安全带识别
2019-09-10詹益俊陈光喜王佳鑫吕方方
詹益俊, 陈光喜, 黄 勇, 王佳鑫, 吕方方
(1.桂林电子科技大学 广西图像图形智能处理重点实验室,广西 桂林 541004;2.广州大学 广东省数学教育软件工程技术研究中心,广州 510006)
传统的驾驶员安全带检测方法已无法处理庞大的交通视频数据流,而如何实现汽车驾驶员检测和安全带佩戴识别的智能化执法已成为当前交通系统亟需解决的问题。
计算机视觉的迅猛发展让智能交通的实现成为可能,随着计算机视觉相关理论的不断深入发展,卷积神经网络[1-3]在智能化的很多方面都取得了优异的成果,如对交通路口行人检测数据进行分析、人脸识别车站乘车等[4-6]。卷积神经网络具有高效的数据特征提取和简化的数据计算流程等优点。采用卷积神经网络的方法进行驾驶员检测和驾驶员安全带识别,适应性强,能够自动提取和分析驾驶员图像的特征,能减少因遮挡、光照等复杂环境下的误检和漏检,从而获得更加准确的驾驶员检测和安全带识别结果。
现有的汽车驾驶员安全带检测方法主要有基于图像处理的传统方法、基于Adaboost的安全带检测系统和深度学习的汽车驾驶员安全带检测方法等。Guo等[7]通过基于图像处理的传统方法,采用驾驶区域定位模块和安全带检测模块,将HSV与边缘检测变化相结合,定位车窗检测区域,通过车牌、车窗与驾驶员的几何关系,确定驾驶员位置,用Hough变换检测安全带的2条长直线边缘,实现安全带的检测。但该方法的不足之处是,姿态遮挡、车身颜色和拍摄角度的变化都会对结果产生较大影响,鲁棒性差。Chen等[8]提出了基于Adaboost的安全带检测系统,通过提取Haar-like特征,将车窗、驾驶员和安全带目标对应训练为3个弱分类器,再加权级联成强分类器,经过高斯混合模型处理,检测出安全带。与传统方法相比,该系统准确率和鲁棒性有一定提高,但对图像质量要求较高,适应性较差,误报较多。章东平等[9]提出了一种深度学习的汽车驾驶员安全带检测方法,通过运用Faster-RCNN算法[10]训练车窗模型,检测出车窗,对车窗中的驾驶员进行标注,再用Faster-RCNN算法训练模型检测出驾驶员,用AlexNet算法[11]进行驾驶员安全带识别。该方法在精度上有较大提升,但结构复杂,训练时间长,检测速度慢,实时性和应用性较差。
针对驾驶员安全带检测面临驾驶员定位复杂,安全带因姿势遮挡,拍摄角度,光照强度变化等问题,提出了一种基于卷积神经网络的驾驶员检测和安全带识别方法。用多任务卷积神经网络(multi-task convolutional neural network,简称MTCNN)算法[12]进行汽车驾驶员检测,卷积神经网络充分提取汽车驾驶员特征,初步筛选和判别驾驶员候选框,经微调和去虚警,得到驾驶员检测目标,并通过级联构建的卷积神经网络进行驾驶员安全带佩戴识别。实验结果表明,本方法与主流驾驶员安全带检测算法相比,召回率、准确率和F值有较大提高,时耗大幅降低,实时性好。
1 驾驶员检测及安全带识别的方法
为了在复杂环境中快而精确地检测出驾驶员是否佩戴安全带,采用卷积神经网络驾驶员检测及安全带识别的方法。首先,运用MTCNN算法的P-Net驾驶员训练模型,对检测的图像进行驾驶员初定位处理,P-Net经过卷积得到驾驶员的特征图,以滑窗方式进行模型特征图比对,设定阈值判定,生成驾驶员候选框,经非极大值抑制(non maximum suppression,简称NMS)[13]合并重叠和边界框回归校准,粗定位出驾驶员候选框,与O-Net特征模型进行比对,通过阈值判定是否为驾驶员,通过非极大值抑制和边界框回归微调,得到最佳驾驶员候选框,最后用构建的卷积神经网络进行驾驶员安全带识别。该方法无需分模块定位车牌、车窗,再定位出驾驶员的位置,而是充分利用卷积神经网络强大的特征提取能力和适应性,正确区分驾驶员特征和背景特征,快速检测出驾驶员,再经构建的分类器处理,识别驾驶员是否佩戴安全带。该方法的主流程图如图1所示。
图1 驾驶员检测和安全带识别主流程图
1)抓拍的汽车图像,经检测器D充分利用驾驶员和背景特征区别,判别驾驶员目标,微调和去虚警,检测出汽车驾驶员目标。
2)将检测的驾驶员图像送入构建的二元分类器C中,并判别驾驶员是否系安全带,完成抓拍汽车图像驾驶员安全带检测。
1.1 基于MTCNN算法的驾驶员检测
1.1.1 改进的MTCNN算法
MTCNN算法是由P-Net、R-Net和O-Net级联构成。P-Net用来生成候选框,通过NMS合并重叠的候选框,用边界框回归校正候选框,得到粗选候选框;R-Net和O-Net网络功能大致相同,通过NMS合并和边界框回归,输出最终的驾驶员框。
MTCNN算法的训练样本分为驾驶员正样本(positives)、驾驶员负样本(negatives)和部分驾驶员(parts)3个部分。positives和negatives参与分类任务,positives和parts参与回归任务,将positives、parts和negatives的数量比控制为2∶4∶5,目的是增加驾驶员与背景特征的差异性,提高驾驶员框概率值,从而提高准确率。
改进的MTCNN算法采用P-Net和O-Net卷积神经网络级联,除去R-Net网络,以减少检测耗时;将P-Net网络训练图像增大至24×24,提高图像精度,增加细密纹理特征提取量,使检测器提取出较多的驾驶员框,不漏检,从而提高召回率;在O-Net网络的每个卷积层之后加上BN(batch normalization)[14]层,以加快训练速度,提高驾驶员检测的准确率。
驾驶员检测网络的模型结构如图2所示,结构参数如表1所示。
图2 驾驶员检测网络结构示意图
1.1.2 非极大值抑制筛选
在汽车驾驶员检测过程中,滑动窗口提取特征,经分类识别并将阈值大于0.6的框作为候选框,经非极大值抑制得到驾驶员粗选候选框,再次阈值筛选概率大于0.9的框,经非极大值抑制后得到精选驶员候选框。汽车驾驶员非极大值抑制(NMS)的流程如图3所示。
图3 汽车驾驶员非极大值抑制流程图
1.1.3 交叉熵损失函数和边界框回归
1.1.4 重叠度判断
对于边界框的定位精度,可以用重叠度来描述,定义为:
表1 驾驶员检测网络的结构参数
IOU=(A∩B)/(A∪B)。
重叠度值设置为0.5,IOU>0.5为驾驶员区域,IOU<0.5为非驾驶员区域,尽可能区分驾驶员区域和保留驾驶员区域的候选框,以提高驾驶员检测的准确率。边界框的重叠度如图4所示。
图4 A和B图像的重叠图示
1.2 构建驾驶员安全带识别网络
检测网络得到驾驶员区域的图像后,需要一个二元分类器对驾驶员分类,判断驾驶员是否系安全带。基于经典AlexNet、GoogLeNet和Inception V2网络,构造卷积神经网络来识别驾驶员有无系安全带。具体工作如下:
1)将卷积神经网络的第1层卷积核尺寸调整为5×5,前4层卷积层后加上Max_Pooling层,能降低模型参数量,也能减轻模型过拟合问题。
2)在每个卷积层后加一个BN层,BN层是很有效的正则化方法,能成倍提高训练速度,也能让收敛后的分类准确率得到较大提升。调整基础学习速率由0.01减至0.001,以适用BN规范化后的数据。
3)减少全连接层数量,一方面减少参数量,防止参数量过大而出现过拟合;另一方面减轻了训练以及测试的计算工作量,降低耗时,在第5卷积层后加Ave_Pooling层,减少邻域大小受限造成的估计值方差增大的影响,更多地保留图像的背景信息。
汽车驾驶员安全带识别的网络结构参数如表2,模型结构如图5所示。
表2 安全带识别的网络结构参数
图5 驾驶员安全带识别网络结构示意图
2 实验环境、结果与分析
本方法运行环境为64位Windows 7 Service Pack 1.8 GB内存、8核Inter(R) Core(TM) i7-7700@3.60 GHz CPU、GeForce GTX 750Ti GPU的台式机。程序采用深度学习的caffe[15]框架,运行环境为Visual Studio 2013,图像尺寸单位是像素,训练和测试过程均在GPU条件下进行。
驾驶员检测实验采用的评判标准是准确率P、召回率R、时间T和综合评判标准F。一般来说,前2个评判标准的参数值是自相矛盾的,而F值则是准确率和召回率的综合评判参数,当F值越高时,实验的检测性能越好。准确率P为检测到的正确驾驶员数占检测到的驾驶员总数百分比,召回率R为检测到的正确驾驶员数占检测到的实际驾驶员总数百分比,综合评判标准
2.1 驾驶员检测结果与分析
车辆图像数据集均来自不同时段、不同卡口的交通监控视频的采集,目的是增加卷积神经网络的环境适应能力,提高鲁棒性。用MTCNN算法检测驾驶员,采用14 690张可以看清驾驶员的汽车图像作为训练集进行模型训练,其中驾驶员(正驾驶和副驾驶)的数量为20 226个,测试时使用的图像数为3 000张,其中驾驶员数量为3 969个。将汽车图像统一转换为533×624的彩色图像。
在相同实验条件下,分别对改进的MTCNN算法、经典ACF行人检测算法[16]、文献[9]算法作驾驶员检测对比。将原MTCNN算法中的P-Net、R-Net和O-Net训练图裁剪为12×12、24×24和48×48进行训练,模型为model-1;model-2是在model-1的O-Net网络基础上,每个卷积层后加BN层;model-3是在model-1的基础上,去掉R-Net网络,同时把P-Net的训练图像增大至24×24;model-4在model-3的基础上,在O-Net网络的每个卷积层后加上BN层。
表3为驾驶员检测对比数据。从表3可看出,文献[9]算法、4个改进MTCNN算法与ACF算法相比,召回率、准确率和F值均有不同程度的提高,而model-3算法的综合性能远优于前4种算法,平均检测时间为0.033 2 s,虽然model-4算法的平均检测速度比model-3算法慢0.002 5 s,但其准确率、召回率以及F值分别提高了0.049、0.025和0.037,因此,可认为model-4是综合性能最佳算法。
图6 汽车驾驶员检测、安全带识别不同时段的部分样本
算法总驾驶员人数正确检测数检测到总数准确率召回率F值检测时长/s文献[16]算法3969322635960.8970.8130.8560.043 8文献[9]算法3969358038990.9180.9020.9100.181 0Model-1算法3969333336670.9090.8390.8730.036 4Model-2算法3969334534810.9610.8430.8980.039 1Model-3算法3969368940370.9140.9290.9220.033 2Model-4算法3969378839330.9630.9540.9590.035 7
2.2 驾驶员安全带识别结果与分析
用model-4算法在汽车图像数据集中检测驾驶员,并裁剪和筛选出38 462张较清晰、可分辨驾驶员是否系安全带的图像作为训练和验证集,其中系安全带的驾驶员图像32 120张,未系安全带的驾驶员图像6342张,从每4张驾驶员图像中随机抽取1张作为验证集,再用相同的方法得到训练和验证集不重复的驾驶员图像作为测试集,共筛选了7648张驾驶员图像,系安全带的驾驶员图像5096张,不系安全带的驾驶员图像2552张,并将汽车驾驶员图像统一转换为116×116的彩色图像。在同一条件下,数据集训练迭代相同次数,使用训练得到的模型对测试集测试,以各算法测试的最优实验结果做对比。
表4为本算法与文献[7-9]算法、Densenet-40[17]算法对比数据。从表4可看出,本算法相比文献[7]算法、Adaboost算法[8]和Alexnet算法[9],系安全带的召回率和准确率平均提高了8.2%和4.5%;与文献[17]的Densenet-40相比,召回率下降了0.06%,但检测时长降低了0.012 s,准确率提高了0.25%,具有明显的检测识别时间优势。
表4 5种算法性能比较
3 结束语
利用MTCNN算法的多任务特性及汽车驾驶员的全局和局部特征,检测出驾驶员,而无需先定位车窗等模块,再定位和筛选出驾驶员,简化了检测过程,降低了计算量,提高了检测效率;级联构建的卷积神经网络,利用驾驶员系和不系安全带特征的变化,识别驾驶员是否佩戴安全带,与其他方法相比,驾驶员安全带识别准确率提高至94.51%,检测时长低至0.038 08 s,实时性强。因此,本方法对智能交通违章执法具有一定的实用性。今后将对驾驶员的吸烟、打电话等属性问题进行深入研究,以达到多属性实时检测和识别的效果。