基于DM642的人眼检测系统设计与实现
摘要:提出一种基于TMS320DM642 DSP平台的实时人眼检测系统设计。所用算法结合了人眼在主动照明下的亮瞳效应,使用包括Adaboost,SVM的“人脸人眼”二级检测算法搜索并确定人眼位置,同时针对DSP平台特点进行相应优化。经实验表明,该DSP人眼检测系统对于640×480分辨率的连续视频能达到实时性要求,并有着良好的准确性。
关键词:DM642; 人眼检测; 亮瞳效应; 连续AdaBoost; 优化; DSP/BIOS
中图分类号:TN91934文献标识码:A文章编号:1004373X(2012)04010504
Implementation of human eye detection system Based on DM642
ZHENG Wei, WANG Yuanqing
(Stereo Image Technology Laborary, Nanjing University, Nanjing 210093, China)
Abstract: A design of realtime eye detection system based on TI DM642 DSP is proposed. The detecting algorithm combines eye′s bright pupil effect under active illumination. "FaceEye" two level structure algorithm with Adaboost and SVM is adopted to search and locate user′s eyes. Meanwhile, the algorithm is optimized according to DSP′s characters. The experiment results indicate that this DSP eye detection system can reach the requirement of realtime processing for 640*480 pixels continuous video, and the accuracy and stability are satisfactory.
Keywords: DM642; human eye detection; bright pupil effect; continuous AdaBoost; optimization; DSP/BIOS
收稿日期:20110911
基金项目:国家质检公益性行业科研专项经费资助项目(201110233)0引言
近些年来,人眼检测已成为模式识别和计算机视觉领域中研究十分活跃的课题。针对人眼检测,国内外学者提出了很多方法,如基于神经网络的方法,基于Adaboost分类的方法等[1]。本文采用的方法是使用主动照明获取人脸候选区域,利用连续Adaboost分类器搜索人脸位置,在此基础上利用Adaboost+支持向量机(SVM)算法获得人眼位置坐标。
基于DSP平台的人眼跟踪系统作为PC机外部设备,具有不占用大量PC资源,与运行的其他应用软件不会互相影响,且实时性能够得到保证的优点。本文在基于TI TMS320DM642 DSP的视频采集处理系统上进行算法的移植实现,为达到实时性要求,根据DSP平台自身的特点对算法进行了一定的修改和优化。
1系统总体结构
1.1系统的硬件结构
本文使用的移植平台是TI TMS320DM642 DSP开发平台。系统架构如图1所示,摄像头的模拟视频信号经TVP5150转换为数字信号,通过VPORT0口读入RAM中;为方便调试,标出人脸和人眼位置的视频数据由VPORT2输出到监视器上;系统同时还能将人眼位置坐标通过RS 232串口输出到其他设备。
TMS320DM642片上集成了3个Video Port(VP)接口[2],可以配置为多种格式数字视频流的输入输出和流捕捉模式。本系统中将VP0配置为BT.656视频输入,VP2配置为PAL视频输出。采集配置为有效数据区640×480,以奇偶场方式输入,数据为YCrCb 4∶2∶2格式,按CbYCrY的顺序排列。视频数据从FIFO到SDRAM的搬移通过分别触发DMA传输通道完成[3]。在SDRAM中开辟了4个可存放1帧图像的缓存区,轮流进行图像采集、人眼跟踪和图像输出操作。
图1DM642人眼跟踪系统硬件框图1.2系统的软件结构
DSP视频采集与处理程序在CCS3.3环境下开发,程序基于DSP/BIOS,架构参考了TMS320 DSP参考框架(RF5)的设计[4]。
DSP/BIOS是TI提供的一个尺寸可伸缩的实时内核,是为那些需要实时线程调度与同步或主机与目标DSP间通信的应用而设计的,提供了抢占式多线程、硬件抽象、实时分析和配置工具等功能,能以进程(Tsk)的方式方便地添加和修改外部模块和功能,利用TI提供的大量标准驱动和算法资源,方便开发更为复杂的多线程程序[5]。
程序包括3个进程(Task):视频采集(TskCapture1)、视频输出(TskDisplay)、人眼跟踪(TskLocateeye),进程间使用SCOM消息队列进行通信和同步[6],如图2所示。
图2程序进程图2算法简述
本文使用的人眼检测算法主要包括3个部分:预处理获得人眼候选点,连续Adaboost算法检测人脸,连续Adaboost+SVM算法确定人眼位置,其算法流程如图3所示。
图3人眼跟踪算法流程框图2.1人眼候选点的获取
本系统中使用自行设计的红外主动照明装置配合图像采集装置获取人眼候选点[6]。
人眼视网膜的反射光在满足一定条件时就会被外部摄像机接收到,形成亮瞳效应。将红外光源按摄像机的距离分为近轴光和远轴光,通过控制近轴光和远轴光交替亮暗,可以分别得到关于人脸区域的亮/暗瞳图像。对相邻的亮/暗瞳图像相减后进行阈值比较等操作,便得到了图像中的人眼候选点集合S。
如果S中的2个候选点距离过近,据此做出的人脸候选窗口会十分近似,甚至大部分重合,从而导致重复检测。这里采用尺度滤波的方法进行处理:p1,p2∈S{candidate points},
if(‖p1-p2‖≤filtersize),del p2 from S(1)经处理后集合S中的候选点既有足够的间距,又不至于遗漏可能的候选点位置。
2.2Adaboost人脸和人眼检测算法
获得候选点集合S后,首先检测人脸位置,而后在得到的人脸窗口中进行人眼检测。由于人眼和人脸在位置上具有很强的关联性,因此将人脸检测作为人眼检测的前级,可以有效地降低人眼待检区域的输入数量,大大提高人眼的检测速度。同时由于进行人眼检测的区域必定在人脸区域内部,可以减小人眼的误检概率。
检测人脸位置时,不必对图像进行全帧遍历来搜索人脸位置,只需在候选点位置周围依据一定搜索规则作出不同尺度的人脸检测窗口,并对窗口进行检测。
确定人脸窗口的位置后,基于人眼与人脸关系的先验信息,搜索区域可以缩小。将人眼搜索范围限制在人脸窗口上半部,即对于新检测到的人脸窗有:PL=(x+facerectsize/4,y+facerectsize/4)
PR=(x+facerectsize×3/4,y+facerectsize/4)(2)式中:PL,PR分别为左右眼搜索起始点坐标;(x,y)为人脸窗口左上角坐标;facerectsize为当前人脸窗尺度。对于上一帧已存在的人眼位置,将其优先作为本帧人眼的搜索点。
2.3级联的连续Adaboost算法
本算法使用基于Haar特征的连续Adaboost算法完成人脸窗口的检测工作,主要使用了5种Haar特征(如图4所示)。相对于离散Adaboost算法,连续Adaboost算法将弱分类器的输出由简单的逻辑值推广到一定的实数域,可以表示置信度的大小,近似地模拟几乎任何概率分布,从而具有更好的分类效果[7]。
图4Adaboost检测算法使用的Haar型特征在具体实现上,使用查找表型的弱分类器。对Haar型特征值归一化至[0,1],将该区域N等分为bini=[(i-1)/N,i/N],i=1,2,…,N。通过学习,对样本在每个等分区间分布概率的逼近,从而得到弱分类器在bini区间的输出值hi(x)。
为了加速实际检测时对Haar特征的计算,在Adaboost检测算法开始前,首先对图像生成积分图。生成积分图只需对图像进行一次遍历,迭代m×n×2次即可得到整张图像的积分图矩阵,而在计算Haar特征时,无论特征尺度如何,每种特征值计算的时间消耗都是常量[8]。
通常情况下,待检图像中人眼和人脸图像只占有很小的比例,绝大多数图像为背景等非人眼/人脸区域,一般而言只需少量弱分类器就可以剔除大多数非人脸/人眼区域。为了提高速度,采用瀑布级联的分类器结构。前级的强分类器被调用的次数较多,但具有较少的弱分类器级数,因此可以兼顾运行速度与精度的要求。
2.4支持向量机(SVM)作为人眼检测最后级
单纯使用Adaboost人眼检测算法给出的图像中,人眼位置往往与实际位置有一定误差,为此引入了基于Haar型特征的SVM算法作为人眼检测算法的最后一级分类器[9]。SVM算法准确度高,但速度较慢,作为最后级可以与Adaboost算法优势互补,同时满足分类的时间与准确性要求。
3人眼跟踪算法在DSP上的优化
使用的DM642 DSP处理器频率为600 MHz,具有2个数据通路,每个通路包含4个功能单元。相比PC机而言,性能差异主要体现在以下方面:主频较低,但可以并行处理多组32位指令;内存性能较差;作为定点处理器,算法中的浮点运算需要转换后计算,降低了执行效率。
为此,根据DM642 DSP的特点,对程序主要进行了以下方面的优化工作:
3.1将浮点数据尽可能转换为定点数据进行计算。
在此选取的连续型弱分类器输出值在同一个闭区间内,因此可以将查找表中每个划分上的浮点型分类器输出值转换为整型进行处理,而不至于对精度产生明显影响。以人脸检测的弱分类器为例,经过实验,将查找表输出值定标为Q15,即设定转换关系为:xq=(int)x215(3)式中:xq为转换后的整型值;x为float型小数。对于32 b长度的输出值,这足以满足算法的精度要求。
3.2合理控制数据存储空间的分配,降低内存操作延时对本算法而言,最耗时是反复计算Haar特征值和对应弱分类器输出值,其中涉及大量积分图、分类器描述表和输出值查找表的内存访问操作。程序中所有分类器描述和查找表数据合计有500 KB以上,显然不可能全部保存在32 KB L1+256 KB L2 CACHE中[10]。因此提高CACHE对这部分数据的访问命中率对于执行速度有很大影响。采用以下方法进行优化:
(1) 设置部分片内CACHE为DSP/BIOS管理的CACHE,通过自动CACHE操作降低内存访问延时。经实验,L1 CAHCE配置为数据和程序CACHE各16 KB;L2 CACHE配置为128 KB通用CACHE和128 KB SRAM。
(2) 通过PC上对算法执行过程的统计发现,对由790级弱分类器构成的11级人脸强分类器而言,由于多数人脸候选窗口都在前5级被筛除,前5级强分类器耗时占整个人脸检测96%以上,如表1所示。由于这5级强分类器仅包含75级弱分类器共约16 KB数据,因此可以在进入人脸Adaboost检测时将其复制到片内SRAM中,大大减少Adaboost算法内存访问时间。对人眼Adaboost算法,也可以采用类似的方法提高运行速度。
表1级联分类器各级时间消耗比例
强分类器级123456Haar特征数51015202530占用时间比例 /%1527.224.317.711.22.9强分类器级7891011Haar特征数3550100200300占用时间比例 /%0.30.20.120.0120.013
(3) 当对一个候选窗进行Adaboost/SVM检测时,由于采用了将检测的人脸/人眼n×nHaar特征模板进行放大的方法,因此对任意不同大小的输入候选窗,实际可能访问的积分图均为n×n点,因此可以将该部分数据载入片内SRAM中,以提高访问效率。
3.3加入了Kalman预测算法
为提高对已检测到的人眼的跟踪效率,对已检测到人眼在水平和垂直方向上分别进行Kalman预测[11],预测位置作为下一帧跟踪的起始参考点。
同时还运用了调节编译器优化选项,减小存储器相关性,循环展开,使用内联函数(Intrinsics),提高流水线并行度等常规方法[12]。
4实验结果
4.1系统参数的设定
为了训练Adaboost算法所使用的分类器,采集了5 009张人脸样本和41 700张非人脸样本,4 795个人眼样本和12 700个非人眼样本。最终训练生成的人脸和人眼Adaboost级联强分类器分别有11级和4级。
4.2测试流程及结果
在实验室环境下对系统进行测试,将图像采集装置固定于实验台上,将DM642开发板通过RS 232串口连接到PC上输出检测结果,并将视频输出端连接到小型显示器或视频采集卡上,如图5所示。实验所用图像采集装置分辨率为640×480,帧率30 f/s,输出图像为模拟信号。人眼检测程序由仿真器加载到DSP中,或固化到FLASH后上电自启。实验室同学作为测试人员参加测试,测试内容包括用户静止不动、用户位置快速运动、不同光照环境、不同用户数量等条件下的测试。
图5测试用硬件经测试,该系统基本满足人眼跟踪的实时性要求,单用户条件下对人眼跟踪的准确率达到97%以上,对于用户运动、不同光照条件下的人眼图像都有较好的适应性。多用户方面,可以对距离图像采集装置0.5~1.5 m内1~3人同时进行跟踪,效果示例如图6所示。
图6人眼跟踪效果示例5结语
讨论了基于DM642的人眼跟踪系统总体结构,提出了采用主动可控照明、亮瞳效应和Adaboost+SVM级联算法的人眼跟踪算法设计方案,讨论了该算法在TI C6000系列DSP上移植的主要难点和优化措施,最终实现人眼跟踪系统的实时工作。该系统具有稳定性高,受环境光照影响小,非接触无侵扰等优点。但也存在一些待改进的缺点,如对倾斜角度超过40°的人脸检测效果较差,用户佩戴眼镜时在特定角度下的反光有可能影响人眼定位准确性等,这些都是后期研究中需要改进的地方。
参考文献
[1]唐琎,许海柱,王力.图像中人眼检测技术综述[J].计算机应用研究,2008,25(4):961965.
[2]Texas Instruments. TMS320DM642 video/imaging fixed-point digital signal processor (SPRS200N) \[EB/OL\]. \[20020720\]. http://www.ti.com/lit/ds/symlink/tms320dm642.
[3]郭蔚萱,郭宝龙.基于DM642的视频处理系统设计与实现[J].电子设计工程,2009,17(1):7981.
[4]曹磊,范彩霞.基于RF5框架的视频处理系统研究[J].单片机与嵌入式系统应用,2008(6):1719.
[5]Texas Instruments. TMS320C6000 DSP BIOS user's guide (SPRU303B) \[EB/OL\]. \[20000521\]. http://www.ti.com/lit/ug/spru303b.
[6]陈春波,王元庆.基于红眼效应的人眼检测[J].计算机工程与应用,2007,43(9):198222.
[7]武勃,黄畅,艾海舟,等.基于连续AdaBoost算法的多视角人脸检测[J].计算机研究与发展,2005,42(9):16121621.
[8]赵楠.基于Adaboost算法的人脸检测[D].北京:北京大学,2005.
[9]JEE H,LEE K,PAN S. Eye and face detection using SVM \[C\]// Proceedings of Intelligent Sensors, Sensor Networks and Information Processing Conference. \[S.l.\]: ISSNIPC, 2004: 577580.
[10]Texas Instruments. TMS320C6000 DSP cache user's guide (SPRU656A) \[EB/OL\]. \[20030512\]. http://www.focus.ti.com.cn.
[11]沈晓晶,潘俊民.基于自适应Kalman预测器的运动估计算法[J].计算机仿真,2004,21(10):7378.
[12]韩非,胡春海,李伟.TMS320C6000系列DSP开发应用技巧:重点与难点剖析[M].北京:中国电力出版社,2008.