人脸检测(face detection)是一种在任意数字图像中找到人脸的位置和大小的计算机技术。它可以检测出面部特征,并忽略诸如建筑物、树木和身体等其他任何东西。[1]有时候,人脸检测也负责找到面部的细微特征,如眼睛、鼻子、嘴巴等的精细位置。
- 人脸检测可以被认为是一种特定的物体检测(object-class detection)。物体检测的任务是在图像中找到所有输入与指定物体位置和尺寸,例如上身、行人和汽车。
- 人脸检测也可以理解为通用模式下的人脸定位。人脸定位的目的是找到已知数目(通常为1)的人脸的位置和尺寸。而在人脸检测中,并没有这个额外的信息。
- 早期的人脸检测算法专注于正面人脸,现在的算法则尝试更为通用也更困难的多角度的人脸检测。也就是说,要检测的人脸可能沿着人脸与观察者的轴线存在旋转(平面内旋转),也可能在垂直方向或左右方向(out-of-plane rotation)存在旋转。更新的算法则考虑人脸外观、光照和姿态等影响因素。
- 许多算法将人脸检测实现为一个两类模式分类任务。也就是说,图像的指定位置会被转换为特征,然后一个预先训练好的分类器将决定该部分是或不是人脸。
- 通常情况下,要用到滑动窗口技术。也就是说,分类器对图像的任意位置和任意尺寸的部分(通常是正方形或长方形)进行分类,判定是或不是人脸。
- 具有空白和静态背景的图像比较容易处理,如果图像只包含一个正面人脸的话,只要去除背景后就只剩下人脸了。
- 使用肤色来检测人脸是比较脆弱的。数据库可能没有包含所有皮肤的颜色,同时光照也会影响检测结果。由于使用色彩分割,具有类似于肤色颜色的非动物物体也会被检测到。这种方式的优点是对于人脸的朝向和尺寸没有要求,并且一个好的实现可以处理复杂的背景。
- 现在的一个比较优秀的人脸检测算法是Viola–Jones的级联分类器算法[2]。这种算法使用基于Haar特征的级联分类器策略,可有快速且有效的找到多种姿态和尺寸的人脸图像。在OpenCV上有一个该算法的实现[1] (页面存档备份,存于互联网档案馆)。
- 人脸检测可用于生物特征识别,通常做为人脸识别系统的一部分。人脸检测也可以用于视频监听、人机交互和图像数据库管理。一些最新的数码相机使用人脸检测来自动对焦。人脸检测也可以在使用了pan-and-scale ken burns effect的photo slideshows中帮助选择感兴趣的区域。
- 人脸检测也获得了市场的兴趣。电视机上可以集成摄像头来检测任何走过的人脸,然后计算该用户的种族、性别和年龄范围。一旦获得这些信息,可以针对性的播放广告。
- 人脸检测也可以用于节约能源。人们看电视或电脑的时候往往会做其他工作,这时候普通的显示器不能自动降低亮度来节省能源。智能系统可以识别用户的面部朝向,当用户不看屏幕时,可以自动降低亮度;在用户重新看屏幕时,再增加亮度。
- Viola–Jones_object_detection_framework
存档副本 (PDF). [2012-12-26]. (原始内容存档 (PDF)于2012-10-03).