陈泽鑫
吉林化工学院
在当今的我国,汽车制造行业的发展迅速,中国马路的数量也正日益增加,同时当今中国马路建设规模正不断扩大,汽车已经逐渐的成为我们整个人类日常生活的一种必需交通工具,但是每一起交通事故的频繁发生率也都是在不断地增加。有关资料统计,在不同情况下的交通事故中,因为司机疲劳或者驾驶而导致事件发生的比例甚至竟高达25%~30%。疲劳驾驶检测的研究对未来减少因疲劳驾驶而引起的交通事故有着非常重要的作用。
为了研究更为精确的疲劳驾驶检测系统,我在已有的系统程序上进行改进。我采用了DMS系统。DMS在数据库管理领域,它是一种集合了操纵与管理数据库的大型软件,在这个系统上对采集到的数据进行分析处理,可以保证数据库的安全性与完整性。通过这个系统我们可以同时进行多个检测程序,就可以实现在人脸检测的同时,对人脸检测的结果上再次进行人眼检测,这样可以使检测的效率得到大幅度提升,并且实现实时监测。
改进后采用的方法是:首先通过挖掘一个人在疲劳状态下的各种表情特征,然后将这些具有确定性的表情特征数据进行计算和量化,提取得到的面部特征节点及其他特征指标,并作为判断的依据,再结合实验数据总结出基于这些参数的识别方法,最后输入获取到的状态数据进行识别和判断。
通过一个专门针对汽车驾驶员的近红外摄像头传感器来实时地监测驾驶员的头部、眼部、面部、等多个细节,可以从驾驶员的眼睛闭合、眨巴、凝视方向、打哈欠和观察汽车的运动等角度等检测驾驶员的状态。通过检查人脸、眼睛和其他各种脸部的特征以及行为,提取出驾驶员的状态,来判断驾驶员是否疲劳、分神或者不规范驾驶。
我选取的是900nm近距离的红外LED灯珠,是因为该系统需要它能够适应在全部的工况条件和情况下(其中一些情况包括白天、夜晚、顺光、逆光等)工作,能适应各种光源环境,即使在条件苛刻的在夜间、逆光等情况下,也能提供高品质的拍摄效果,为之后的检测提供保障。同时在汽车中驾驶员随身携带的帽子、眼镜、墨镜、口罩等特殊情况下,由于其红外线特性使得它们可以直接穿透到墨镜的影像器和镜片上,被遮蔽的眼睛和信息也有可能正常进行成像,很好地缓解了汽车中驾驶员的眼镜会出现反光或者是携带墨镜的问题。
在采集影响图片的仪器选择上,我选用了0V7725摄像头模组,这种摄像头相比较于传统的摄像头,它是一款直接利用电脑USB摄像头监控录像的软件,有着许多优点,例如操作简单,功能强大,录制文件体积小,支持开机自动录像,隐藏录像,分段分时录像,多路摄像头同时录像等。
相比于之前的疲劳驾驶检测系统,在检测后的提醒时也做了一些改进。传统的提醒方式是通过蜂鸣报警器与指示灯的方式取提醒驾驶员,我们在这种方式上加以改进,将疲劳驾驶的程度通过显示器直接的变现出来,有时驾驶员因为个人原因感受不到自己已处在疲劳驾驶的状态,但是通过实时的监测可以及时的注意到自身的疲劳程度,以便于提前做好要停车休息的准备。在显示器方面我选择的是LCM1602K-NSW-BBW,这种显示器的显示色域更为宽广,可以在低亮度的情况下工作,防止光量过于刺眼影响到驾驶员视线。
在检测系统发现驾驶员处在疲劳驾驶的状态时,我采用蜂鸣报警器与指示灯相结合的方式去提醒驾驶员,通过这样视听结合的方式,可以避免外界环境嘈杂或者灯光过于刺眼等条件下,驾驶员感受不到系统提醒的影响。
为了使整个检测结果的处理上更为精确,在单片机的选择上也进行了改进。传统的疲劳驾驶检测系统使用的是AT89C2051单片机,但是这种单片机在处理速度上已经不能满足现在所需要的算法要求,在运算速度上非常缓慢,不能及时的作出反应,那样子安全隐患就大大增加。为了改变这种状况,我选择了新型的STM32F103ZE单片机,这种单片机可以计算复杂的程式,而且在多种算法同时进行时,也不会影响计算的速度,这样就可以保证能第一时间处理拍摄到的图片,并将其进行分析处理,如果处在疲劳驾驶能够在第一时间去提醒驾驶员,避免这类交通事故的发生。
脸部与人眼的检测:(1)脸部检测:这个过程可以分为三个阶段,即人脸定位、人脸识别和人脸追踪。人脸定位的功能就是在图像中我们通过识别一个面部的特征节点来准确地检测到人脸并标志着它们所表示的位置;人脸识别的功能主要是将新一代图像中可以检测得到的表情图像与已经储存下来的表情图像数据相匹配;人脸追踪的功能就是对于在每一帧图像上都被追踪之前的图像帧内所发现人脸。(2)人眼检测:运用视线的方向图来检测驾驶员的眼神是否有疏忽性和注意力的分散。根据先前得到的人脸姿态,我们可以推测出大致的视野和方向。在对于瞳孔、角膜都能够良好地识别的条件下,可以进一步依靠普尔钦的斑点来计算出准确的眼睛视线方位。再根据系统内所搭建的各个相关零配件布设的数据,就已经可以了解当前车辆驾驶员所要做的观测目标。并且结合现有的驾车行为,从而判定汽车司机是否存在注意力过于分散。根据被识别者所看到的人脸和头部的姿态进一步辨认得出眼睛的定位以及其状态,主要目的是对眼睛在疲劳的状态下和注意力之间是否分散进行计算。其中,利用视觉开度等信息基于PERCLOS可以准确地判断疲劳的状态。它们包含了眨眼的信息(时间速率和频次之间的时差)以及眼部(开与合)。眼部的信息是以二分类的问题,所以需要的神经网络比较小;眨眼的信息要分析以前数帧。
在驾驶过程中,一切注意力不在驾驶上的行为都被称为危险驾驶行为。例如,低头去找东西,看窗外的景色,接打电话、吸烟、饮酒,没有系上安全带,故意掩盖等等。对于这些异常情况,可以将其分为两种。例如低头或者是看窗外都可能跟人的姿态有关,如果我们能够直接得到一个人头的姿态角度,那么这个问题就可以得到解决;喝水,打电话等行为,都属于动作识别,设计一个动作识别的算法也可以解决。
在进行头部姿态检测时,得到人头姿态角度,一般有两种方法。第一种是传统的Landmark,人脸上关键点的坐标全部已知,使用PNP算法可以直接拟合出人头三维角度;第二种是使用标记好的Yaw,Pitch,Roll三个角度的人脸图片直接训练一个小型网络,网络输出层直接回归三个Float量,简单明了,精度较高,训练数据集直接使用开源人脸数据集,无需标注。对于异常动作识别,识别打电话动作,喝水动作,抽烟等动作,如果单纯地将其是作为动作行为识别,使用3D-Conv算法,其计算消耗资源很严重。所以,我才用了两种更为简单而且清晰明了的方法。第一种是将此类的动作识别视为目标检测问题,例如打电话识别,就将手机视为待检目标,喝水检测就将水杯视为待检目标。这种方法思路很简单,但是有一个缺点就是,例如才用的摄像头模组装在汽车A柱,司机右手打电话,这时候成像画面中是看不到手机的,所以这种场景下检出率不高。另一种方法是将动作识别视为单帧图像分类任务,采集多种动作行为下的图片,人工标注监督信号进行训练,使用单片机里的分类器判断最后的动作分类。
在整个检测系统中我采用了七个模块,为了便于实现在汽车内可以同用,在电源方面我选择了车载供电的12V电源,这样这一套系统几乎可以适配所有的汽车。结合之前所有的模块选择,并将其与单片机进行连接,我用网络标号代替线路进行连接。