现代交通业的快速发展过程中, 交通事故给人民生命财产安全和国家经济带来了巨大的损失, 而疲劳驾驶是造成重大交通事故的原因之一[1]。对于疲劳驾驶的检测, 人的眼睛状态特征是作为面部信息能明显反映人的状态, 应用也最为广泛。这种检测方法一般是统计一段时间内眼睛状态信息来确定驾驶员的疲劳状态, 因此眼睛状态特征识别对于驾驶员疲劳检测尤为重要。
对于眼部状态特征的识别, 国内外已经取得了许多研究成果, 传统的眼部状态识别包含人脸检测、眼部关键点标记、特征空间建模以及疲劳等级划分[2]。Wierwille等[3]利用红外摄像头采集眼部信息, 提取眼动特征参数, 根据单位时间内眼睛闭合时间占比(percentage of eyelid closure time, PERCLOS)等特征参数判断驾驶员疲劳水平; 白中皓等[4]利用主动形状模型(active shape model, ASM)人脸特征定位算法, 应用8个ASM特征标记点定位眼睛和人眼的宽高比来衡量眼睛的张开与闭合; 李瑞等[5]采用AdaBoost方法定位人眼, 将椭圆模型和面积比模型融合识别眼睛的状态, 但模型融合进行判断的条件没有理论验证; 杨英等[6]基于神经网络的驾驶员觉醒水平双目标监测法利用小数据集(样本量100以下), 在训练三层的神经网络判断人眼的状态。该方法由于训练样本较小, 训练的模型在实际应用中精度会下降。这些方法的人脸图像是通过正对的人脸, 没有考虑实际应用中光照、表情和姿态变化等的干扰造成误检。此外, 上述研究方法都是先定位人眼位置, 再通过相应算法采用的特征参数判断人眼的状态。这对人眼定位的要求很高, 直接影响到后续的测试精度。本文提出了一种基于SR-CNN(selective region-convolutional neural networks)融合决策的眼部状态识别方法, 该方法采用wild人脸数据集进行训练, 训练过程中不需要定位人眼, 能隐式地从训练数据中学习特征进行人眼状态识别。SR-CNN融合决策的眼部状态识别方法针对小数据集引入先验知识, 能明显提高模型的泛化能力。
1 神经网络基础模型 1.1 神经网络神经网络一般包含输入层、隐含层和输出层, 由许多神经节点组成。Barron[7]证明了仅一个隐含层的结构就可以拟合任何函数, 但Bengio[8]认为, 过浅的全连接神经网络在数据集有限时, 训练得到的模型存在过拟合等问题, 带有多层隐含层的神经网络可以学习到更多抽象的特征, 对原始数据有更本质的刻画。神经网络节点一般由线性部分和非线性部分组成, 线性部分表示多项式加权求和, 即
$ \mathit{\boldsymbol{y}} = \mathit{\boldsymbol{Wx}} + \mathit{\boldsymbol{b}} $ |
式中:x是[x1, x2, …, xn]的输入列向量; y是[y1, y2, …, yn]T的输出列向量; W是m×n的矩阵, 称为权值; b是m×1的向量, 称为偏置。上式从识别角度来看, 输出y是对输入变量多角度采样的综合结果。
神经网络的非线性部分, 又称激活函数, 它是利用非线性函数sigmoid、tanh、ReLU等, 如式(1)、(2)
$ {\rm{sigmoid}}\left( \mathit{\boldsymbol{y}} \right) = \frac{1}{{1 + {\rm{exp}}\left( {-\mathit{\boldsymbol{y}}} \right)}} $ | (1) |
$ {\rm{ReLU}}\left( \mathit{\boldsymbol{y}} \right) = {\rm{max}}\left( {\mathit{\boldsymbol{y}}, 0} \right) $ | (2) |
以线性部分的输出作为输入。sigmoid函数归一化线性部分的输出, 增加了数值稳定性, 有利于后续的优化。Lennie等[9]估测大脑同时被激活的神经元只有1%~4%, 表明了神经元工作的稀疏性。ReLU函数给网络引入稀疏性, 激活方式简单, 速度快, 并且可以去掉无关的噪声, 提高模型的泛化能力。
1.2 卷积神经网络LeCun等[10]在多层感知器的基础上, 改进设计了卷积神经网络Lenet5, 该模型在文本图像识别上取得重大成果。卷积神经网络的核心是在以往的神经网络中加入了卷积层。对于图像处理, 卷积神经网络的优势在于网络结构引入了3个关键的改进思想:稀疏连接、权值共享[11]和池化。
1.2.1 稀疏连接和权值共享卷积神经网络在图像处理方面有突出的优势, 其核心是稀疏连接和权值共享。不同于全连接神经网络相邻的神经节点一一连接的结构如图 1(a)所示, 卷积神经网络在相邻的神经节点间采用稀疏连接的方式如图 1(b)所示。图中第m层的一个节点和第m-1层的相邻的3个神经节点相连, 提取该局部的基本特征。
Download:
|
|
对于图像识别这一特定问题, 往往所有像素点的组合信息远远高于解决问题需求的信息, 利用图像的局部相关性, 通过稀疏连接可以极大减少特征数量。同时图像中一个位置出现的某个特征, 也可能出现在其他位置, 所以不同位置可以共享权值, 利用相同的卷积核学习特征。权值共享进一步减少了网络中自由参数的个数, 降低了特征提取和分类过程中数据重建的复杂度。
1.2.2 池化池化层通常连接在卷积层后, 利用特征图的局部相关性, 即特征图的局部区域特征比较相似, 将局部块的特征合并, 在一定程度上过滤掉不必要的信息, 保留有用信息。池化层降低了特征图的维度, 整体上提供了特征图的平移不变性。一般地, 池化操作要求取局部单元的最大值, 池化操作如图 2所示。
Download:
|
|
池化操作前特征图的大小为n×w×h, 图中取局部区域为2×2, 滑动步长为2×2, 池化操作相当于对图像进行降采样操作。所有池化的输出特征图数目不变, 特征图的宽度和高度均减小一半。
2 CNN模型设计与优化方法 2.1 卷积神经网络结构为了保证人脸图像眼部的细节信息, 本文选取的人脸图像为100×100×3的RGB图。图像的像素值除以256归一化后作为卷积神经网络的输入层。如图 3构建了2个卷积层与池化层、1个全连接层和Softmax层的整体结构。
Download:
|
|
各层的超参数如表 1所示, “图像(3×100×100)”表示RGB图像转置后作为模型的输入层; “卷积(64, 3×4×4, 2×2)”表示利用64个3×4×4的卷积核在输入图像以步长为2×2进行滑动输出特征图; “池化(2×2, 2×2)”表示池化层取局部区域为2×2, 滑动步长为2×2。表中可以看出卷积层的参数个数远小于全连接层, 验证了卷积神经网络稀疏连接和权值共享的能大幅减少参数数量。
各层的权值W利用高斯分布初始化。卷积层C1均值μ取0.001, 卷积层C2均值μ取0.001, 全连接层FC和Softmax层均值μ取0.1, 方差σ2都取0。各层的偏置b都初始化为0。Softmax层使用softmax函数激活, 其余各层均利用ReLU函数激活。
为了进行实验对比, 构建了3个全连接层和Softmax层的全连接神经网络结构, 除了Softmax层以外, 各层均有1 024个神经节点, 每个节点使用ReLU函数激活。各层都利用均值μ取0.1, 方差σ2取0的高斯分布初始化权值, 偏置都初始化为0。
2.2 网络优化措施深度神经网络在测试阶段往往存在严重的过拟合问题, 并且由于神经网络的深度, 训练模型耗时很长, 梯度下降算法往往不能很好的收敛。针对这两个问题, 本实验中设计的模型采用以下几种措施优化网络, 加快模型训练速度, 提高模型的准确率:1)使用Dropout正则化技术; 2)动量更新方法训练模型; 3)学习率动态减小。
Nitish提出的Dropout技术可以有效减小深度神经网络的过拟合问题[12], 它以一定的概率使神经节点失活, 相当于每次训练都是一个新的模型, 使节点间特征的相互依赖性减弱。本实验中在卷积神经网络的全连接层以0.5的概率随机失活; 全连接神经网络的三层全连接层以0.3的概率随机失活。
Dauphin等[13]证明了深度神经网络训练时损失函数最优解并不是陷入局部最小值, 而是来自鞍点的问题。因此本实验中在采用随机梯度下降算法的基础上, 利用动量更新方法[14]帮助神经网络更好地收敛。
此外, 在模型训练过程中, 选择合适的学习率也非常重要, 学习率过小会导致损失函数收敛缓慢; 学习率过大引起损失函数在最小值附近波动, 甚至偏离最小值。所以训练过程中使用学习率退火的方法, 两个模型的初始学习率为0.1, 动量为0.95, 观察该模型在固定验证集上的错误率, 当在验证集上的错误率不再下降, 学习率乘以0.1, 继续训练。重复这个过程到学习率为0.000 1终止训练。
2.3 SR-CNN融合决策方案增大训练数据集能有效增强模型的泛化能力[15]。在实际训练模型数据量有限时, 可以创造数据来扩充训练数据集。针对图像数据, 可以利用简单的图像预处理技术来扩大数据集, 一般可以扩大数据集一个数量级, 一定程度上抑制了由于数据集规模引起的过拟合。
本文由于获取的人脸图像数据集规模相对较小, 针对人眼状态识别问题, 应用上述方法做了改动, 引入了针对人眼状态识别的先验知识。对于数据集中睁眼、闭眼的人脸图像, 经过简单的图像缩放、分割、遮挡和中心聚集得到5个不同的有选择性区域SR, 如图 4所示。这些几何变换处理方法不改变图像与识别任务相关人眼部分的像素值, 而是改变这些区域所在的位置来扩大数据集, 从而训练网络模型学习到更多的图像不变性特征。
Download:
|
|
图像分割主要是关注人眼的状态, 图 4中, 该人脸的左眼和右眼引导模型关注人眼区域的局部信息; 图像遮挡是尽可能去除与人眼状态识别无关的部分。本文中的遮挡操作是将图像下半部像素值置为0, 该方法也可以理解成对图片(1)和(2)的联合; 中心聚集方法一定程度上减小了噪声干扰(如去除了人脸的背景)。
SR方法让训练数据扩大了5倍, 这种扩大的有效性在于这些不同的SR图片是否能增强预测目标的置信度。这里的增强是指模型在检测测试集的准确率的提高和不同的SR图片(如左眼对右眼)之间相互联系的增强, Bengio[8]证明了该方法的有效性在于模型抽象出分布式表示特征, 让模型对预测数据的类别有很好的泛化能力。
SR方法数据扩增是针对训练数据集, 而判断模型的准确率是直接对验证集中的图像测试。尽管这样能提高判别时的准确率, 但未能发挥SR方法学习到的分布式表示特征的联合作用。张一鸣等[16]利用K近邻算法综合判断待识别样本的类别, 提高了表情识别准确率。因此, 为了让提出的SR方法在测试阶段能发挥作用, 提出SR融合决策方法。在测试时, 对测试图像也用SR方法得到5张图片, 如图 4, 对每张图片进行判断类别后统计结果, 统计结果较大的类别作为最终的类别输出。
3 实验与结果分析 3.1 原始数据集测试本文使用的数据集是从互联网上搜索的用于人眼状态识别的数据集, 如图 5, 该数据集的人脸图像有姿态、表情、光照条件等的差异性。
Download:
|
|
采用的数据集包括人眼睁开的图片1 230张, 人眼闭合的图片1 190张, 使用时将该数据集分成训练、验证和测试集, 数据集组成如表 2。
训练阶段利用训练数据集训练模型参数, 在验证集上确定模型的复杂度, 如图 6是学习率设置为0.01时, 训练卷积神经网络模型的训练集和验证集的错误率和训练周期的关系。图中训练集和验证集的起始错误率都在0.5左右, 这是因为模型参数利用高斯分布初始化, 训练集和验证集的人眼睁开和闭合的数据量相同, 判断类别输出类似于概率事件; 训练集和验证集的错误率走势基本相同, 说明该模型可以有效训练模型参数。
Download:
|
|
在训练完卷积神经网络模型和全连接神经网络模型后, 在测试集上测试模型的泛化性能, 得到的结果如图 7所示。图中CNN和FC分别表示使用卷积神经网络和全连接神经网络模型测试的结果。两种网络结构对闭眼的识别错误率比睁眼的识别错误率低大约3%, 这是因为眼睛睁开时像素值较复杂(眼球以及眼白部分), 而眼睛闭合时眼部特征容易区分; 从整体实验结果来看, CNN比FC的测试错误率低3%左右, 符合预期, 证明了卷积神经网络由于引入了卷积核的先验知识, 在图像处理上有明显的优越性。
Download:
|
|
测试使用的是3.1节给出的数据集, 1 800张训练集图像经过SR方法处理后, 数据集扩大5倍, 有9 000张图片; 验证集和测试集均不作改变。测试结果如表 3。
从整体的实验结果来看, SR方法提升了卷积神经网络模型的测试精度3%, 达到最好的整体错误率10.9%, 对于全连接神经网络也提升了1%, 这与2.3节中SR方法引入更多的先验知识提高模型的泛化能力结论一致。其次, 两种网络结构对闭眼的识别错误率比睁眼的识别错误率低大约2%, 这与未使用SR方法的对比结果相同, 意味着在驾驶员疲劳检测中, 可以应用卷积神经网络模型识别人眼闭合的状态作为基准。
3.3 SR融合决策方法测试SR融合决策方法能发挥出SR方法学习的分布式表示特征的联合作用。模型训练使用的是3.2节给出的9 000张训练集, 测试阶段测试集的图像使用SR方法, 分别判断5张SR图片的所属类别, 再融合判断最终输出类别。实验结果如表 4, 比较对象是使用SR方法的模型测试结果。
从整体的实验结果来看, SR融合决策方法, 相比于SR处理数据方法, 对于全连接神经网络整体测试结果变差了0.3%, 表中可以看出对闭眼的识别错误率偏差很大。这是因为全连接神经网络是相邻神经元间都产生交互, 用SR方法得到的图片放大了局部信息, 使模型学习的中间表示对判别产生很大干扰[17], 测试时的表现就是SR图片的测试错误率大于原始测试图像的错误率。但是SR融合决策方法对于卷积神技网络模型的表现符合预期, 测试错误率下降了2.4%, 达到最好的整体错误率8.5%。应用SR融合决策方法的卷积神经网络模型识别人眼闭合的状态准确度可以达到约95%左右, 高于椭圆模型的92.9%和面积比模型的93.3%, 接近李锐等的融合模型[5]区分人眼状态的精度。所以在实际驾驶员疲劳检测中, 可以应用基于SR融合决策方法的卷积神经网络模型识别人眼闭合状态作为基准。
4 结论1) 文中提出的两种深度神经网络模型在Wild人脸数据测试环境下, 可以从训练数据中学习特征进行人眼状态识别, 在保证较高测试准确率的情况下, 避免了人眼状态识别对人眼特征点检测的依赖性。
2) SR方法作为Wild数据的预处理方式, 简单易行, 引导学习模型朝泛化方向搜索, 降低了因数据集过小引起的泛化能力差的问题, 进一步降低了测试错误率。
3) SR融合决策方法利用数据的分布式表示特征, 测试准确率达到95%左右, 提高了卷积神经网络模型在人眼状态识别中的鲁棒性。在实际驾驶员疲劳检测中有极大的应用价值。
融合决策的方法判断眼睛的状态简单直接, 但是该方法对于局部表示的处理一致, 我们将结合高斯混合模型研究数据分布表示, 以期望减小局部表示的干扰。
[1] |
李都厚, 刘群, 袁伟, 等. 疲劳驾驶与交通事故关系[J]. 交通运输工程学报, 2010, 10(2): 104-109. LI Duhou, LIU Qun, YUAN Wei, et al. Relationship between fatigue driving and traffic accident[J]. Journal of traffic and transportation engineering, 2010, 10(2): 104-109. (0) |
[2] |
张伟. 基于机器视觉的驾驶人疲劳状态识别关键问题研究[D]. 北京: 清华大学, 2011. ZHANG Wei. Research on key issues in computer vision based driver drowsiness recognition[D]. Beijing: Tsinghua University, 2011. (0) |
[3] |
WIERWILLE W W, WREGGIT S S, KIRN C L, et al. Research on vehicle-based driver status/performance monitoring; development, validation, and refinement of algorithms for detection of driver drowsiness[R]. Washington: U. S. Department, 1994.
(0)
|
[4] |
白中浩, 焦英豪, 白芳华. 基于主动形状模型及模糊推理的驾驶疲劳检测[J]. 仪器仪表学报, 2015, 36(4): 768-775. BAI Zhonghao, JIAO Yinghao, BAI Fanghua. Driving fatigue detection based on active shape model and fuzzy inference[J]. Chinese journal of scientific instrument, 2015, 36(4): 768-775. (0) |
[5] |
李锐, 蔡兵, 刘琳, 等. 基于模型的驾驶员眼睛状态识别[J]. 仪器仪表学报, 2016, 37(1): 184-191. LI Rui, CAI Bing, LIU Lin, et al. Driver's eye state recognition based on model[J]. Chinese journal of scientific instrument, 2016, 37(1): 184-191. (0) |
[6] |
杨英, 盛敬, 杨佳, 等. 基于神经网络的驾驶员觉醒水平双目标监测法[J]. 东北大学学报(自然科学版), 2007, 28(3): 418-421. YANG Ying, SHENG Jing, YANG Jia, et al. Double-objective detection based on neural network for driver's alert level[J]. Journal of Northeastern University(Natural science), 2007, 28(3): 418-421. (0) |
[7] |
BARRON A R. Universal approximation bounds for superpositions of a sigmoidal function[J]. IEEE transactions on information theory, 1993, 39(3): 930-945. DOI:10.1109/18.256500 (0)
|
[8] |
BENGIO Y. Learning deep architectures for AI[J]. Foundations and trends in machine learning, 2009, 2(1): 1-127. (0)
|
[9] |
LENNIE P. The cost of cortical computation[J]. Current biology, 2003, 13(6): 493-497. DOI:10.1016/S0960-9822(03)00135-0 (0)
|
[10] |
LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324. DOI:10.1109/5.726791 (0)
|
[11] |
GOODFELLOW I, BENGIO Y, COURVILLE A. Deep learning[EB/OL]. http://www.iro.umontreal.ca/~bengioy/dlbook,2015.
(0)
|
[12] |
SRIVASTAVA N, HINTON G, KRIZHEVSKY A, et al. Dropout:a simple way to prevent neural networks from overfitting[J]. Journal of machine learning research, 2014, 15(1): 1929-1958. (0)
|
[13] |
DAUPHIN Y N, PASCANU R, GULCEHRE C, et al. Identifying and attacking the saddle point problem in high-dimensional non-convex optimization[C]//Proceedings of the 28th Annual Conference on Neural Information Processing Systems 2014. Montreal, Canada, 2004.
(0)
|
[14] |
QIAN Ning. On the momentum term in gradient descent learning algorithms[J]. Neural networks, 1999, 12(1): 145-151. DOI:10.1016/S0893-6080(98)00116-6 (0)
|
[15] |
KRIZHEVSKY A, SUTSKEVER I, HINTON G E. Imagenet classification with deep convolutional neural networks[J]. Communications of the ACM, 2017, 60(6): 84-90. DOI:10.1145/3098997 (0)
|
[16] |
张一鸣, 欧宗瑛, 王虹. 基于C均值K近邻算法的面部表情识别[J]. 智能系统学报, 2008, 3(1): 57-61. ZHANG Yiming, OU Zongying, WANG Hong. Facial expression recognition based on C-means and K-nearest neighbor algorithms[J]. CAAI transactions on intelligent systems, 2008, 3(1): 57-61. (0) |
[17] |
孙晓, 潘汀, 任福继. 基于ROI-KNN卷积神经网络的面部表情识别[J]. 自动化学报, 2016, 42(6): 883-891. SUN Xiao, PAN Ting, REN Fuji. Facial expression recognition using ROI-KNN deep convolutional neural networks[J]. Acta automatica sinica, 2016, 42(6): 883-891. (0) |