微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 基于DSP处理器的疲劳驾驶状态检测系统的设计

基于DSP处理器的疲劳驾驶状态检测系统的设计

时间:11-28 来源:互联网 点击:
为了减少由于司机疲劳而导致的交通事故,国内外的许多研究工作者都在研究司机疲劳状态检测系统。例如美国卡内基梅隆大学的Richard Grace领导的Copilot工程开发的疲劳检测装置,浙江大学的驾驶防磕睡装置,北京航天航空大学的眼动测量系统。目前,疲劳驾驶的检测技术主要有两大类,一类是采集脑电信号的生理参数EEG来检测,EEG生理参数能准确地反映出人的疲劳状态,但检测设备较复杂昂贵,应用推广难度较大;另一类是对采集的面部图像信息进行识别。图像信息检测中,有的利用较昂贵的红外摄像机检测信号,有的利用普通摄像机进行检测。普通摄影机安装和使用较方便,利于推广应用,但对图像处理技术要求较高。由于疲劳状态实时检测系统要求很高的实时性和可靠性,目前为止,还没有出现满足实际需要的非强迫性检测系统。

表1中列出了几种疲劳状态检测的方法,并对性能进行了比较。通过比较可以发现,这几种方法中基于身体反应的检测方法性能较好。PERCLOS(Percentage of Eyelid Closure Time)是在单位时间内眼睛闭合时间所占的百分率。弗吉尼亚大学的Walt Wierwille从20世纪70年代开始研究眼睛光学变量与疲劳的关系,研究表明与疲劳有关的主要因素有缺乏睡眠、瞳孔直径、注目凝视、眼球快速转动、眉眼扫视、眨眼睛等,并且发现PERCLOS是最具潜力的疲劳测定方法之一,由PERCLOS得出的数据可以真正反映驾驶疲劳,是对疲劳进行估价测定的最好方法。



通过摄像头获取司机的实时视频,获得驾驶员的视频图像后,利用图像处理与模式识别技术分析人脸特征图像信息,从图像中找到驾驶员面部所在位置,检测出人眼并分析人眼状态(睁开或闭合),然后统计一定时间内眼睛闭合持续总时间,将其与某固定阈值比较,以确定司机瞌睡与否。

1 人脸和人眼特征的检测

疲劳状态检测要准确地检测和跟踪眼睛的状态。采用先确定人脸区域,然后再在人脸区域内进一步检测、定位人眼的方法,这样可以使得眼睛的检测与定位更加准确和快捷。眼睛的识别检测方法可分为基于统计和基于知识两种类型。基于统计的方法将人脸和人眼图像视为一个多维向量,从而将人脸和人眼检测问题转化为多维空间中分布信号的检测问题;而基于知识的方法则利用人脸和人眼特征知识建立若干规则,从而将人脸检测问题转化为假设和验证问题,例如人脸肤色和几何结构等。基于知识建模的方法一般对建模的假设条件依赖性强,而基于统计的方法精度较高、鲁棒性强,但运算量大。驾驶室光照复杂多变,振动环境也较复杂,选择基于统计的方法能更有效地进行检测。
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所示。



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top