图像分析领域最有前途的应用-Jones-一张脸

本文适用于希望通过了解什么是人脸检测、它的类型以及它的工作原理来开始他们在计算机视觉或 AI 领域的向量的初学者。

人脸识别在过去几年受到了很多关注,被认为是图像分析领域最有前途的应用之一。人脸检测可以考虑很大一部分人脸识别操作。计算资源集中在图像中根据其强度持有人脸的部分。图片中的人脸检测方法很复杂,因为人脸的可变性,例如姿势、表情、位置和方向、肤色、眼镜或面部毛发的存在、相机增益、照明条件和图像分辨率的差异。

对象检测是一种与图像处理和计算机视觉相关的计算机技术,它与检测到的对象实例进行交互,例如人脸、建筑物、树木、汽车等。人脸检测算法的主要目的是确定是否图像中有任何面孔。

近年来,在人脸识别和人脸检测领域提出了很多研究工作,以使其更加先进和准确,但是当 Viola-Jones 推出实时人脸检测器时,它在该领域掀起了一场革命,它能够实时、高精度地检测人脸。

人脸检测是人脸识别的第一步,也是必不可少的步骤,用于检测图像中的人脸。它是物体检测的一部分,可用于安全、生物识别、执法、娱乐、人身安全等许多领域。

它用于实时人脸检测,用于监视和跟踪人或物体。它广泛用于相机中,以识别帧中多个外观的 Ex-Mobile 相机和 DSLR。Facebook 也在使用人脸检测算法来检测和识别图像中的人脸。

人脸检测方法:

Yan、Kriegman 和 Ahuja 提出了人脸检测方法的分类。这些方法分为四类,人脸检测算法可以属于两个或多个组。这些类别如下:

1.基于知识:

基于知识的方法依赖于规则集,这些规则集根据人类知识检测人脸。Ex- 一张脸必须有鼻子、眼睛和嘴巴opencv中识别行人的脚,彼此之间有一定的距离和位置。这些方法的一个大问题是难以建立一套合适的规则。如果规则太笼统或太详细,可能会出现很多误报。仅此方法不足以在多张图像中找到许多人脸。

2.基于特征:

基于特征的方法通过提取人脸的结构特征来定位人脸。它首先被训练为分类器,然后用于区分面部和非面部区域。这个想法是为了克服我们对面孔的本能知识的限制。这种方法分为几个步骤,即使有很多人脸照片,他们报告的成功率也达到了 94%。

3.模板匹配:

模板匹配方法使用预定义或参数化的人脸模板,通过模板与输入图像之间的相关性来定位或检测人脸。例如,人脸可以分为眼睛、面部轮廓、鼻子和嘴巴。此外,只能通过使用边缘检测方法从边缘构建人脸模型。该方法实现简单,但不足以进行人脸检测。然而,已经提出了可变形模板来处理这些问题。

4.基于外观:

基于外观的方法依靠一组委托的训练人脸图像来寻找人脸模型。基于外观的方法优于其他性能方法。一般来说,基于外观的方法依赖于统计分析和机器学习技术来寻找人脸图像的相关特征。该方法也用于人脸识别的特征提取。

基于外观的模型进一步分为人脸检测的子方法,如下

4.1. 基于特征脸:

基于特征脸的人脸识别算法,这是一种使用主成分分析有效地表示人脸的方法。

4.2.基于分布:

诸如 PCA 和 Fisher 判别式等算法可用于定义表示面部模式的子空间。有一个经过训练的分类器可以从背景图像模式中正确识别目标模式类的实例。

4.3. 神经网络:

神经网络已经成功解决了许多检测问题,例如物体检测、人脸检测、情绪检测和人脸识别。

图片[1]-图像分析领域最有前途的应用-Jones-一张脸-老王博客

4.4.支持向量机:

SVM 是线性分类器,可最大化决策超平面和训练集中示例之间的边距。奥苏纳等人。首先将此分类器应用于人脸检测。

4.5.Winnows 的稀疏网络:

他们定义了一个由两个线性单元或目标节点组成的稀疏网络;一个代表面部模式,另一个代表非面部模式。它耗时更少,效率更高。

4.6. 朴素贝叶斯分类器:

他们通过计算训练图像上一系列模式的频率来计算人脸出现在图片中的概率。分类器捕获面部局部外观和位置的联合统计信息。

4.7. 隐马尔可夫模型:

模型的状态是面部特征,通常描述为像素条。HMM 通常与其他方法结合使用来构建检测算法。

4.8. 信息论方法:

马尔可夫随机场 (MRF) 可用于面部模式和相关特征。马尔可夫过程使用 Kullback-Leibler 散度最大化类之间的区别。所以这种方法可以用于人脸检测。

4.9. 归纳学习:

该方法已用于检测人脸。诸如 Quinlan 的 C4.5 或 Mitchell 的 FIND-S 等算法用于此目的。

人脸检测的工作原理:

检测人脸的技术有很多,通过这些技术,我们可以更准确地识别人脸。这些技术具有几乎相同的人脸检测程序,例如 OpenCV、神经网络、Matlab 等。人脸检测通过检测图像中的多个人脸来工作。这里我们使用 OpenCV 进行人脸检测,人脸检测操作有一些步骤,如下所示。

首先,通过提供图像的位置来导入图像。然后将图片从RGB转换为灰度,因为灰度很容易检测到人脸。

之后,使用图像处理,根据需要调整图像大小、裁剪、模糊和锐化。下一步是图像分割,用于轮廓检测或分割单个图像中的多个对象,以便分类器可以快速检测图片中的对象和人脸。

下一步是使用 Voila 和 Jones 提出的 Haar-Like 特征算法进行人脸检测。该算法用于查找人脸在帧或图像中的位置。所有人脸都具有人脸的一些共同属性,例如眼睛区域比其邻居更暗,鼻子区域比眼睛区域更亮。

haar-like算法还用于对图像中的物体进行特征选择或特征提取,通过边缘检测、直线检测、中心检测等手段检测图片中的眼睛、鼻子、嘴巴等。它用于选择图像中的基本特征并提取这些特征以进行人脸检测。

下一步就是给出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 ()

最近几个月opencv中识别行人的脚,我们更新了很多行人分析的相关研发流程。对于青视清溪视频各大平台,我们将在近期逐步将智能分析的功能整合到一个新的智能分析平台中。欢迎大家关注我们获取更新。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论