龚强,谢凯
(长江大学电子信息学院,湖北 荆州 434023)
贺建彪
(中南大学信息科学与工程学院,湖南 长沙 410083)
阮宁君
(长江大学电子信息学院,湖北 荆州 434023)
基于GPU的并行人脸检测方法研究
龚强,谢凯
(长江大学电子信息学院,湖北 荆州 434023)
贺建彪
(中南大学信息科学与工程学院,湖南 长沙 410083)
阮宁君
(长江大学电子信息学院,湖北 荆州 434023)
为了进一步提高人脸检测的精度和速度,提出了一种改进的Viola-Jones人脸检测算法,并在GPU平台上对改进后的算法加以优化。采用新型稀疏特征来进行人脸检测,利用计算机的图形处理单元GPU进行并行加速,并对优化前后的结果进行对比。结果表明,该算法把检测率提高到93.6%,与传统Viola-Jones人脸检测算法相比检测精度有了较大的提升;GPU并行加速实现了对OpenCV 1.6~3.2倍左右的加速比,有效提高了人脸检测性能。
人脸检测;Viola-Jones算法;GPU并行;OpenCV
人脸检测一直是图像处理、计算机视觉和模式识别领域的热门研究方向之一,人脸检测作为人脸处理系统中的第一步,如何快速准确找到图片或视频中的人脸,对人脸识别、安防监控和智能人机交互等人脸应用领域有重要的研究价值。Viola-Jones人脸检测算法[1]由剑桥大学Paul Viola和Michael Jones于2001年提出,是一种能满足实时要求的人脸检测算法,算法中应用积分图、Adaboost算法和分类器级联的方法和概念,包括后来的Real Adaboost[2],LogitBoost等改进。传统Viola-Jones人脸检测算法中应用的Haar矩形特征对偏转等姿态人脸检测的应用有较大的局限,而且随着人脸检测应用领域需要同时处理海量数据以及图片分辨率的不断提高,CPU平台上Viola-Jones人脸检测很难满足交互性和实时性要求。随着GPU计算能力与可编程能力的不断增强,基于GPU的并行计算[3]也越来越多的应用于对应用程序的加速,这已成为提高程序性能的主要模式。为此,笔者从Viola-Jones人脸检测算法的缺点和内在并行性特点出发,用新型稀疏特征[4]来代替Haar特征对该算法进行优化,根据GPU硬件架构特点对改进后的算法进行加速,提高了人脸检测的精度和速度。
图1 Haar特征模板
Viola-Jones人脸检测算法引入Haar特征,采用Adaboost算法进行训练得到基于Haar特征的级联分类器[5,6],直接对图像上一小块区域进行特征匹配,从而判定该区域内有没有人脸。如图1所示,Haar特征值使用了3种类型4种形式的特征模板,每种特征模板的特征值等于白色矩形像素和与黑色矩形像素和之差。
每次计算Haar特征值都会有庞大的计算量,会降低检测速度。因此,引入了积分图作为待检测人脸图像的一种中间表达形式,通过图像积分图来计算Haar特征值。积分图图像坐标(x,y)处的值In(x,y)等于原图像坐标(x,y)左上角矩形内的像素I(x′,y′)的和,即:
(1)
采用式(1)对给定的图像计算积分图,同时采用式(2)和式(3)计算Haar特征值:
s(x,y)=s(x,y-1)+I(x,y)
(2)
In(x,y)=In(x-1,y)+s(x,y)
(3)
式中,s(x,y)表示原图像x行前y个像素的累加和。
然后利用Adaboost算法训练强分类器构建级联分类器,最后用级联分类器来检测人脸。
由图1可知,Haar特征只能对水平、垂直和对角的简单灰度结构进行描述,对倾斜、大角度偏转等人脸会漏检,影响了人脸检测的准确率。鉴于此,在人脸检测算法的优化阶段,笔者用一种稀疏特征代替Haar特征,即改进的Viola-Jones人脸检测算法。
定义稀疏特征为若干粒子的线性组合,即:
(4)
式中, F(π)表示待检测图像的灰度值;pi是稀疏特征中第i个粒子;ai是组合的系数,为了避免浮点运算,ai的取值为±1。
粒子由粒子左上角x、y坐标和尺度s共同定义的。该粒子的尺寸用s可以表示为2s×2s。在提取稀疏特征值时,引入了金字塔结构的4个位图I0、I1、I2、I3。位图Is对应着尺度为2s×2s的粒子。
要想检测出人脸,需要先选取特征,训练生成检测的级联分类器。图2是试验生成级联分类器的流程图,在获取待测样本后,计算样本的积分图,得到样本的稀疏特征集并计算特征值,然后确定阈值,接着按照Viola-Jones人脸检测算法相关方法,使用Adaboost算法训练强分类器,最后级联这些强分类器生成级联分类器。
在生成级联分类器完成后,就可以进行人脸检测。检测过程如图3所示:首先需要读取图片,获取图片里面的像素信息,并加载训练好的级联分类器;然后调整原始图像为不同尺度上的图像金字塔[7,8],即图像变换;在完成上面步骤的试验后,计算变换后的图像的积分图来确定待测图像的特征值,根据这些特征值,利用已经训练好的级联分类器进行人脸检测并得出结果。
图2 生成级联分类器流程图
图3 人脸检测流程图
3.1 GPU生成图像金字塔
图4为GPU优化算法流程图。原始算法对图像变换采用先对原始图像一定比例的放缩,然后用原始扫描窗口进行检测。改进后,对原始图像生成图像金字塔,当进行人脸检测时,利用固定大小的扫描窗口对金字塔图像进行扫描,这个过程具有很高的并行性,所以笔者将生成图像金字塔放在GPU上处理[9,10],首先采用GPU对原始图像进行颜色空间转换[11],得到灰度图像,并保存在Device内,然后利用双线性差值对灰度图以放缩因子Us(Us>1.0)进行放缩,得到大小为(Wp,Hp)的金字塔图像,其中:
(5)
(6)
式中,(w0,h0)为原始图片大小;(wk,hk)为缩小第k级灰度图的大小;(xk,yk)为灰度图缩小到第k级时生成金字塔图像的坐标;a、b、k分别为缩小的级数。
图4 GPU优化算法流程图
3.2 GPU计算积分图
在GPU平台上计算积分图,为了避免数据的相关性[12],引入了先行后列的积分图算法。利用2个Kernel分别实现行积分和列积分,每一行或一列的积分分别由单独的一个线程负责。由于CUDA中threads是以warp(32个threads)的形式调度的,计算中某一行积分需要访问不同列的源图像数据,由于数据不连续,这将带来额外的计算,计算积分图的效率会受到较大的影响。所以引入CUDA中共享存储器来对积分器进行优化存储访问[13],原图像宽度设为M,一个block内有N个threads。
3.3 GPU级联分类器人脸检测
生成积分图像后,就需要利用训练好的级联分类器进行人脸检测,为了减少不必要的计算,GPU上利用线程的并行特性[14],一个线程对应着一个特征的分类器判断是否为人脸,极大地减少了级联分类器检测人脸的时间,提高了人脸检测的效率。
评判一个人脸检测算法的性能,主要是通过检测率、误检率、漏检率和检测速度等进行判定的。
检测率(Rd)是在待测图像中正确检测出的人脸数(Nt)与图像中真实人脸数(N)的比值,即:
(7)
误检率(Rfd)是指被错误检测为人脸的数量(Nf)与图像中真实人脸数(N)的比值, 即:
(8)
漏检率(Red)是指被错误检测为非人脸数(Ne)与图像中真实人脸数(N)的比值,即:
(9)
检测加速比(S)是没加入GPU并行顺序执行的时间TCV与GPU并行执行的时间TGPU的比值,即:
(10)
5.1 人脸检测算法改进前后结果对比
人脸样本库来自于网络图片和本实验室成员人脸图像,人脸库是由大小为24×24的500张图片组成,其中包括正位人脸、侧位人脸、倾斜的人脸以及非人脸图片,用大小为960×1280测试图片在OpenCV4.8.6和VS2010平台上分别用传统Viola-Jones算法和改进的Viola-Jones算法进行测试试验,如图5和图6所示。传统算法只是对正位人脸和旋转角度较小的侧位人脸检测效果较好,对旋转角度相对大的以及倾斜人脸无法检测;改进算法对正位人脸和侧位人脸都有较好的检测效率,同时对倾斜人脸也能很好地检测。2种算法人脸检测测试结果对比如表1所示,传统Viola-Jones算法的检测率Rd只有91.8%,误检率Rfd达到了9.6%;改进算法不但把检测率Rd提高到了93.6%,同时把误检率Rfd降低至6.2%,大大提高了检测的效率。
图5 Viola-Jones算法测试结果人脸检
图6 改进算法测试结果
表1 2种算法人脸检测试验结果对比
图7是改进算法后的人脸检测与识别系统操作界面。
图7 人脸检测与识别系统操作界面
5.2 GPU优化前后对比
试验硬件平台为Intel(R) Core(TM) i5-6300HQ CPU,2.30GHz,4.00GB内存,NVIDIA GeForce GTX950M GPU,软件平台为Windows7 64bit。对于同一分辨率,采用测试50张图片后求时间的平均值,测试结果如表2所示。由表2数据可以看出,利用GPU平台并行加速,检测速度得到了提高,随着图像分辨率的增大,由表2可知,GPU对OpenCV的加速比可以达到1.6~3.2倍左右。
表2 优化前后人脸检测用时对比表
详细介绍了Viola-Jones人脸检测技术,就该传统算法的一些不足之处进行了研究,并提出了合理化的改进方法。同时,利用GPU并行模块和检测算法中并行特性进行GPU并行人脸检测方法的研究,对人脸检测进行优化。结果表明,该方法有效地提高了人脸检测的精度和速度,对后续的人脸识别系统识别率的提高起到了较大的作用。
[1]Viola P, Jones M J.Rapid object detection using a boosted cascade of simple features[A].Proceedings of the Conference on Computer Vision and Pattern Recognition[C].2001:511~518.
[2] 余益民,黄廷辉,桑涛.基于Real AdaBoost算法的肤色分割方法[J].计算机应用,2011,31(12):3370~3373.
[3] Sun Lichao, Zhang Shengbing, Cheng Xuntao,et al.Acceleration algorithm for CUDA-based face detection[A].Signal Processing, Communication and Computing (ICSPCC), 2013 IEEE International Conference[C].2013:1~5.
[4] 李瑞淇.基于肤色和改进的AdaBoost人脸检测算法研究[D].西安:西安电子科技大学,2014.
[5] 刘嘉敏,梁莹,孙洪兴,等.融合检测和跟踪的实时人脸跟踪[J].中国图象图形学报,2015,20(11):1473~1481.
[6] 刘王胜,冯瑞.一种基于AdaBoost的人脸检测算法[J].计算机工程与应用,2016,52(11):209~214.
[7] 薛翠红,于明,于洋,等.基于MAP框架的金字塔人脸超分辨率算法[J].2012,38(10):206~211.
[8]Atta R,Ghanbari M.An efficient face recognition system based on embedded DCT pyramid[J].IEEE Transactions on Consumer Electronics,2012,58(4):1285~1293.
[9] 杨赛勇.基于CUDA加速的并行人脸检测[D].武汉:华中科技大学,2013.
[10] Bhutekar J S, Manjaramkar K A.Parallel face Detection and Recognition on GPU[J] .International Journal of Computer Science and Information Technologies, 2014,5: 2013~2018.
[11] Dong Chen, Wang Xiaoli, Lin Tao,et al.Face Detection under Particular Environment Based on Skin Color Model and Radial Basis Function Network[A].Big Data and Cloud Computing (BDCloud), 2015 IEEE Fifth International Conference[C].2015:256~259.
[12] Papenhausen E, Bing W,Sungsoo H,et al.GPU-accelerated incremental correlation clustering of large data with visual feedback [A].Big Data, 2013 IEEE International Conference[C].2013:63~70.
[13]Nakano K,Matsumae S, Ito Y.Random Address Permute-Shift Technique for the Shared Memory on GPUs[A].2014 43rd International Conference on Parallel Processing Workshops[C].2014:429~438.
[14]Wai A W Y, Chang Y C.GPU acceleration of real time Viola-Jones face detection[A].2015 IEEE International Conference on Control System, Computing and Engineering (ICCSCE)[C].2015:183~188.
[编辑] 洪云飞
2016-04-26
国家自然科学基金项目(61272147);湖北省教育厅指导性项目(B2015446)。
龚强(1989-),男,硕士生,现主要从事信号处理、图像与视频处理方面的研究工作。
谢凯(1974-),男,博士,教授,博士生导师,现主要从事油气信息处理和三维地质建模方面的教学与研究工作;E-mail:pami2010@163.com。
TP391.4
A
1673-1409(2016)25-0031-05
[引著格式]龚强,谢凯,贺建彪,等.基于GPU的并行人脸检测方法研究[J].长江大学学报(自科版),2016,13(25):31~35.