物体检测是计算机技术中的一种,它与图像处理和计算机视觉相联系,它与人脸、建筑物、树木、汽车等物体的检测实例相互作用。人脸检测算法的主要目的是确定图像中是否有任何人脸。
近年来,在人脸识别和人脸检测领域提出了很多研究工作,以使其更加先进和准确,但是当 Viola-Jones 推出实时人脸检测器时,它在该领域掀起了一场革命,即能够实时、高精度地检测人脸。
人脸检测是人脸识别的第一步,也是必不可少的一步,用于检测图像中的人脸。它是物体检测的一部分,可用于许多领域,如安防、生物识别、执法、娱乐、人身安全等。
它用于实时检测人脸,以对人或物体进行监视和跟踪。它广泛用于相机中,以识别 Ex-Mobile 相机和 DSLR 框架中的多个外观。 Facebook 也在使用人脸检测算法来检测图像中的人脸并进行识别。
本文适用于在计算机视觉或 AI 领域的初学者,希望了解什么是人脸检测、其类型及其工作原理来。
人脸检测方法
Yan、Kriegman 和 Ahuja 提出了人脸检测方法的分类。 这些方法分为四类,人脸检测算法可以属于两组或更多组。 这些类别如下:
1.基于知识
基于知识的方法依赖于规则集,它基于人类知识来检测人脸。一张脸必须有一个鼻子、眼睛和嘴巴,它们彼此之间一定的距离和位置。这些方法的一个大问题是难以建立一套合适的规则。如果规则太笼统或太详细,可能会有很多误报。仅此方法是不够的,无法在多张图像中找到许多人脸。
2.基于特征
基于特征的方法是通过提取人脸的结构特征来定位人脸。它首先作为分类器进行训练,然后用于区分面部和非面部区域。这个想法是为了克服我们对面孔的本能知识的限制。这种方法分为几个步骤,甚至有很多人脸的照片,他们报告的成功率为 94%。
3.模板匹配
模板匹配方法使用预定义或参数化的人脸模板,通过模板和输入图像之间的相关性来定位或检测人脸。例如,人脸可以分为眼睛、面部轮廓、鼻子和嘴巴。此外,可以仅通过使用边缘检测方法通过边缘构建人脸模型。这种方法实现起来很简单,但是对于人脸检测来说是不够的。然而,已经提出了可变形模板来处理这些问题。
4.基于外观
基于外观的方法依赖于一组委托训练人脸图像来找出人脸模型。 基于外观的方法优于其他性能方法。 一般来说,基于外观的方法依赖于统计分析和机器学习的技术来寻找人脸图像的相关特征。 这种方法也用于人脸识别的特征提取。
基于外观的模型进一步分为用于人脸检测的子方法,如下所示:
- 基于特征脸
用于人脸识别的基于特征脸的算法,它是一种使用主成分分析有效地表示人脸的方法。
- 基于分布
PCA 和 Fisher 判别式等算法可用于定义表示面部模式的子空间。有一个经过训练的分类器,它可以从背景图像模式中正确识别目标模式类的实例。
- 神经网络
神经网络已经成功解决了许多检测问题,如物体检测、人脸检测、情感检测和人脸识别等。
- 支持向量机
支持向量机是线性分类器,可最大化决策超平面和训练集中示例之间的余量。首先将此分类器应用于人脸检测。
- Winnows 的稀疏网络
他们定义了一个由两个线性单元或目标节点组成的稀疏网络;一个代表面部图案,另一个代表非面部图案。它耗时少,效率高。
- 朴素贝叶斯分类器(Naive Bayes Classifiers)
通过计算训练图像上一系列模式的出现频率来计算一张脸出现在图片中的概率。分类器捕获面部局部外观和位置的联合统计数据。
- 隐马尔可夫模型(Hidden Markov Model,HMM)
模型的状态是面部特征,通常被描述为像素条。 HMM 通常与其他方法一起使用来构建检测算法。
- 信息理论方法(Information Theoretical Approach)
马尔可夫随机场 (MRF) 可用于面部图案和相关特征。 马尔可夫过程使用 Kullback-Leibler 散度最大化类之间的区分。 因此该方法可用于人脸检测。
- 归纳学习(Inductive Learning)
这种方法已被用于检测人脸。 Quinlan 的 C4.5 或 Mitchell 的 FIND-S 等算法用于此目的。
人脸检测的工作原理
检测人脸的技术有很多,借助这些技术,我们可以更准确地识别人脸。 这些技术具有几乎相同的人脸检测程序,例如 OpenCV、神经网络、Matlab 等。人脸检测的工作原理是检测图像中的多个人脸。 这里我们使用 OpenCV 进行人脸检测,并且有一些人脸检测操作的步骤,如下所示:
1)首先,通过提供图像的位置来导入图像。 然后将图片从RGB转换为灰度,因为在灰度中很容易检测人脸。
2)之后,使用图像处理,其中根据需要对图像进行调整大小、裁剪、模糊和锐化。
3)下一步是图像分割,用于轮廓检测或分割单个图像中的多个对象,以便分类器可以快速检测到图片中的对象和人脸。
4)下一步是使用 Haar-Like 特征算法,该算法由 Voila 和 Jones 提出用于人脸检测。该算法用于查找帧或图像中人脸的位置。所有的人脸都具有人脸的一些普遍特性,例如眼睛区域比其相邻像素更暗,鼻子区域比眼睛区域更亮。
haar-like算法也用于对图像中的物体进行特征选择或特征提取,借助边缘检测、线检测、中心检测来检测图片中的眼睛、鼻子、嘴巴等。 它用于选择图像中的基本特征并提取这些特征进行人脸检测。
5)下一步是给出x、y、w、h的坐标,这在图片中形成一个矩形框来显示人脸的位置,或者我们可以说是显示图像中的感兴趣区域。之后,它可以在检测到人脸的感兴趣区域中制作一个矩形框。 还有许多其他检测技术一起用于检测,例如微笑检测、眼睛检测、眨眼检测等。
如何实时运行人脸检测器(基于网络摄像头)
运行代码的要求 - Python、OpenCV、网络摄像头、Numpy。
- #import libraries
- import cv2
- import numpy as np
- #import classifier for face and eye detection
- face_classifier = cv2.CascadeClassifier(‘Haarcascades/haarcascade_frontalface_default.xml’)
- # Import Classifier for Face and Eye Detection
- face_classifier = cv2.CascadeClassifier(‘Haarcascades/haarcascade_frontalface_default.xml’)
- eye_classifier = cv2.CascadeClassifier (‘Haarcascades/haarcascade_eye.xml’)
- def face_detector (img, size=0.5):
- # Convert Image to Grayscale
- gray = cv2.cvtColor (img, cv2.COLOR_BGR2GRAY)
- faces = face_classifier.detectMultiScale (gray, 1.3, 5)
- If faces is ():
- return img
- # Given coordinates to detect face and eyes location from ROI
- for (x, y, w, h) in faces
- x = x — 100
- w = w + 100
- y = y — 100
- h = h + 100
- cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2)
- roi_gray = gray[y: y+h, x: x+w]
- roi_color = img[y: y+h, x: x+w]
- eyes = eye_classifier.detectMultiScale (roi_gray)
- for (ex, ey, ew, eh) in eyes:
- cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,0,255),2)
- roi_color = cv2.flip (roi_color, 1)
- return roi_color
- # Webcam setup for Face Detection
- cap = cv2.VideoCapture (0)
- while True:
- ret, frame = cap.read ()
- cv2.imshow (‘Our Face Extractor’, face_detector (frame))
- if cv2.waitKey (1) == 13: #13 is the Enter Key
- break
- # When everything done, release the capture
- cap.release ()
- cv2.destroyAllWindows ()
人脸检测可用于生物特征识别,通常做为人脸识别系统的一部分。人脸检测也可以用于视频监控、人机交互和图像数据库管理。一些最新的数码相机使用人脸检测来自动对焦。
人脸识别技术是人工智能领域的关键技术,在智能视频监控场景具有十分广泛的应用前景。
在安防监控中,人脸识别也意义重大,比如公众场所(地铁站、车站、街道、酒店等)的安防布控、公安部追捕嫌疑犯等。基于公众场所的安防监控摄像头,通过抓拍人脸并将结果上传公安部网络,与嫌疑犯人脸进行比对,协助公安人员的执法工作。TSINGSEE青犀视频也将以AI智能检测与识别技术为核心,持续研发多场景下的智能业务系统及平台,向AI领域深耕,比如EasyCVR,具有AI人脸检测、人脸识别、车牌识别、语音对讲、云台控制、声光告警、监控视频分析与数据汇总的能力,已经落地多个项目,如景区的行人检测、客流分析等场景中。