论文部分内容阅读
作为计算机视觉与模式识别领域的一项重要问题,人脸检测在信息安全、视频监控、人体生物特征识别等技术领域有着广泛应用。2001年Viola等人提出的基于AdaBoost的人脸检测算法同时兼顾了人脸检测的检测率和检测速度,成为目前最为成熟和应用最为广泛的人脸检测算法。本文对基于AdaBoost的人脸检测算法进行了并行化改进,并在NIVIDA GPU上利用CUDA架构进行了加速。在本文的并行人脸检测框架中,首先将原始彩色图像转化为灰度图像,并对灰度图像逐级缩小创建金字塔图像,从而当以固定大小的扫描窗口对金字塔图像进行扫描时,可对各尺度人脸进行检测。该方式可实现子窗口扫描的高效并行。颜色空间转换和图像的逐级缩小均通过GPU并行实现,相较于利用CPU的颜色空间转换和图像逐级缩小,能取得数十至数百倍的加速比。随后,利用金字塔图像在GPU端计算积分图像与平方积分图像。为提高积分图像计算的计算效率,利用了并行前缀求和算法以及图像转置算法,通过两次逐行并行前缀求和与两次图像转置,可以高效计算金字塔图像的积分图像与平方积分图像。相较于基于CPU的积分图像计算,利用GPU计算能取得数倍的加速比。人脸检测阶段,利用扫描窗口并行的方法,通过GPU端核函数对积分图像与平方积分图像进行并行扫描检测。该过程利用常量存储器加载分类器数据,并将积分图像映射至GPU共享内存进行加速。对GPU端的检测结果,本文设计了一种基于bit位表示的高效结果后处理方法。实验结果表明,在检测效率(检测率与误检率)与传统方法相当的前提下,本文并行人脸检测方法的整体计算速度相较于基于CPU的串行人脸检测方法,能取得30倍以上的加速比,对1080P分辨率的视频能做到实时人脸检测。