随着科技的发展,机动车辆与日俱增,随之而来的人身安全越来越受到人们的关注。根据交通事故统计年鉴:城市道路15-20%(高速公路60%以上)的汽车碰撞事故和驾驶疲劳有关,疲劳驾驶严重影响着驾驶员的警觉性﹑应变性及安全驾驶能力。特别是铁路机车﹑长途客货运输﹑城市出租﹑公交车辆﹑工程特种车辆等各种汽车安全隐患,均与疲劳驾驶密切相关。因此,许多国家都积极开展有关驾驶疲劳的研究工作,尤其在西方发达国家。
表1中列出了几种疲劳状态检测的方法,并对性能进行了比较。通过比较可以发现,这几种方法中基于身体反应的检测方法性能较好。PERCLOS(Percentage of Eyelid Closure Time)是在单位时间内眼睛闭合时间所占的百分率。弗吉尼亚大学的Walt Wierwille从20世纪70年代开始研究眼睛光学变量与疲劳的关系,研究表明与疲劳有关的主要因素有缺乏睡眠、瞳孔直径、注目凝视、眼球快速转动、眉眼扫视、眨眼睛等,并且发现PERCLOS是潜力的疲劳测定方法之一,由PERCLOS得出的数据可以真正反映驾驶疲劳,是对疲劳进行估价测定的方法。
通过摄像头获取司机的实时视频,获得驾驶员的视频图像后,利用图像处理与模式识别技术分析人脸特征图像信息,从图像中找到驾驶员面部所在位置,检测出人眼并分析人眼状态(睁开或闭合),然后统计一定时间内眼睛闭合持续总时间,将其与某固定阈值比较,以确定司机瞌睡与否。
1 人脸和人眼特征的检测
疲劳状态检测要准确地检测和跟踪眼睛的状态。采用先确定人脸区域,然后再在人脸区域内进一步检测、定位人眼的方法,这样可以使得眼睛的检测与定位更加准确和快捷。眼睛的识别检测方法可分为基于统计和基于知识两种类型。基于统计的方法将人脸和人眼图像视为一个多维向量,从而将人脸和人眼检测问题转化为多维空间中分布信号的检测问题;而基于知识的方法则利用人脸和人眼特征知识建立若干规则,从而将人脸检测问题转化为假设和验证问题,例如人脸肤色和几何结构等。基于知识建模的方法一般对建模的假设条件依赖性强,而基于统计的方法较高、鲁棒性强,但运算量大。驾驶室光照复杂多变,振动环境也较复杂,选择基于统计的方法能更有效地进行检测。
Adaboost是一种迭代算法,其思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,将每次训练得到的分类器融合起来,作为的决策分类器。使用adaboost分类器可以排除一些不必要的训练数据特徵,并将关键放在关键的训练数据上面。
Paul Viola和Michael Jones于2001年提出机器学习领域分类较高并且识别速度快的Adaboost算法[5-6],Adaboost算法是一种高效的迭代算法,在人眼的快速检测方面有着非常重要的应用。它针对同一个训练集训练出不同的弱分类器,然后把这些弱分类器组成强分类器,进而形成级联分类器。训练方法描述如下:
设计的系统采用麻省理工的MIT CBCL人脸库作为训练库,然后利用Adaboost算法训练人脸检测分类器。MIT CBCI数据库中的训练样本集共有2 429幅人脸样本图像和4 554幅非人脸图像,包括各种光照条件和人体姿态。利用人眼检测程序进行了大量图片检测,发现人眼检测正确率高,只要能够正确定位人脸,人眼检测都能准确识别。经过分析发现,人眼特征简单、模板小,不像人脸特征多、变化大。人眼的搜索区域为先前定位的人脸区域,搜索区域小;而人脸搜索区域为整幅图像。特征简单、搜索区域小,致使人眼检测正确率高,不会出现误检。
2 检测算法移植
疲劳状态检测算法运行在PC机上的检测帧速率约为3~4帧,不能满足检测算法的实时性要求。为了提高实时检测速度,将检测算法移植到DSP芯片上运行可以有效地提高系统的实时性。DSP系统具有强大的数据并行处理能力,能提高检测算法的运算速度,从而获得实时检测的效果。DSP具备普通微处理器所强调的高速运算和控制功能,移植过程中还要针对实时数字信号处理,在处理器结构、指令系统、指令流程上做相应的改动。系统采用TI公司的TMS320DM642芯片作为嵌入式芯片平台,检测算法的移植在合众达公司的SEED-VPM开发板上进行。
TMS320DM642是建立在C64x DSP核基础上、采用了德州仪器公司开发的第二代高性能超长指令字结构VelociT l .2TM,在每个时钟周期内可执行2个16×16 bit的乘法或4个8×8 bit的乘法。TMS320DM642内包含了6个算术逻辑单元,在每个时钟周期内都可执行2个16 bit或4个8 bit的加减、比较、移动等运算。在600 MHz的时钟频率下,DM642每秒可以进行24亿次16 bit的乘累加或48亿次8 bit的乘累加。这样的运算能力,使得DM642可以进行实时的多视频处理和图像处理。TMS320DM642通过64 bit的EMIF和3个8/16 bit宽度的视频口来连接板上的外设(如SDRAM、Flash、FPGA和DART)。TMS320DM642还在C64x的基础上增加了很多外围设备和接口。
疲劳状态检测识别系统是运行在DSP芯片上的数字信号处理系统,视频数据的处理流向如下:视频数据从摄像机输入进来,输入的格式为PAL/NTSC模拟电视广播信号格式,经过模拟数据经视频解码芯片SAA7115解码,可以得到标准BT.656并行数据,BT.656并行数据从DM642视频口1输入,视频口1提取YCbCr数据之后,分别存放在内部的缓冲器中,独立于CPU的EDMA将视频口buffer中YCbCr数据搬移到大容量外部SDRAM存储器中,SDRAM中存放着连续的3帧图像数据,同时EDMA将其中一帧图像数据,不停地搬移到DM642内部RAM,在内部RAM存放着两行连续视频数据供CPU使用,CPU处理过的数据输回到内部RAM中暂时保存,后续数据输出步骤与前面介绍的数据输入步骤正好相反。
DSP采用多总线的哈佛结构,相同的系统复杂程度,DSP比一般的微处理数据处理速度快2个数量级。多总线结构使得DSP结构复杂,工作频率较低,对外部存储器的访问速度只有133 MHz,从而造成数据瓶颈,严重地制约了处理速度,移植过程中,要减少片内外的数据传输、提高片内数据的利用率。Adaboost检测算法要求较大的数据计算量,将其移植到DSP中,可以通过提高二级高速缓存Cache命中率、优化算法等措施来减少片内外的数据传输,减少程序运算量。
移植完成后,对算法进行一系列优化,终达到18 S/s的帧速率,满足了实时性要求,如表2所示。
3 检测结果与分析
检测时,TMS320DM642工作频率为600 MHz,视频输入图像大小为724×576,DSP将其缩放为CIF图像(356×298像素),然后进行疲劳驾驶检测,系统检测速率基本达到18帧/s.通过采集多人图像视频进行检测,分析得到人脸检测率为90.5%,人眼检测率90.3%,人眼状态分析正确率为86.7%.算法达到18帧/s的帧速率,基本满足了系统实时检测的性能要求。但是由于实验设备环境与时间限制,检测系统还存在缺陷和有待完善的地方。例如由于样本库的原因,人脸检测算法对倾斜人脸的检测存在先天不足,可以加入倾斜人脸样本或在检测阶段采用旋转视频图像方法解决该问题。
[1]. TMS320DM642 datasheet https://www.dzsc.com/datasheet/TMS320DM642_14462.html.
[2]. SAA7115 datasheet https://www.dzsc.com/datasheet/SAA7115_596028.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。