一文带你了解人脸检测算法的类型及其工作原理(代码片段)

TSINGSEE TSINGSEE     2023-02-01     346

关键词:

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

物体检测是计算机技术中的一种,它与图像处理和计算机视觉相联系,它与人脸、建筑物、树木、汽车等物体的检测实例相互作用。人脸检测算法的主要目的是确定图像中是否有任何人脸。

近年来,在人脸识别和人脸检测领域提出了很多研究工作,以使其更加先进和准确,但是当 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人脸检测、人脸识别、车牌识别、语音对讲、云台控制、声光告警、监控视频分析与数据汇总的能力,已经落地多个项目,如景区的行人检测、客流分析等场景中。

『python开发实战菜鸟教程』实战篇:一文带你了解人脸识别应用原理及手把手教学实现自己的人脸识别项目(代码片段)

文章目录0x01:引子0x02:环境搭建0x03:开发实战 1.实现人脸检测标记2.人脸特征点提取3.人脸识别验证0x04:后记开源GitHub地址--> https://github.com/xiaosongshine/dlib_face_recognition推荐补充阅读:『Python开发实战菜鸟... 查看详情

一文带你了解spark架构设计与原理思想(代码片段)

        卷友们,大家好~我是Alex。之前已经陆续输出了Hadoop三大核心组件的架构思想和原理和Hive架构设计和原理,每篇都受到了读者小伙伴们的一致好评~感谢大家的支持。大家可能已经猜到了,按照发展趋势... 查看详情

一文带你了解spark架构设计与原理思想(代码片段)

        卷友们,大家好~我是Alex。之前已经陆续输出了Hadoop三大核心组件的架构思想和原理和Hive架构设计和原理,每篇都受到了读者小伙伴们的一致好评~感谢大家的支持。大家可能已经猜到了,按照发展趋势... 查看详情

一文带你了解spark架构设计与原理思想(代码片段)

        卷友们,大家好~我是Alex。之前已经陆续输出了Hadoop三大核心组件的架构思想和原理和Hive架构设计和原理,每篇都受到了读者小伙伴们的一致好评~感谢大家的支持。大家可能已经猜到了,按照发展趋势... 查看详情

一文带你了解spark架构设计与原理思想(代码片段)

        卷友们,大家好~我是Alex。之前已经陆续输出了Hadoop三大核心组件的架构思想和原理和Hive架构设计和原理,每篇都受到了读者小伙伴们的一致好评~感谢大家的支持。大家可能已经猜到了,按照发展趋势... 查看详情

安全算法一文带你简要了解常见常用的安全算法(代码片段)

本文由RT-Thread论坛用户recan原创发布:https://club.rt-thread.org/ask/article/3108.html0前言笔者有多年从事金融POS机系统开发的经验,对数据的安全理解较深,期间对各式各样的安全算法也是经常打交道,现整理一些基本概... 查看详情

androidjetpack架构组件一文带你了解viewmodel的使用和原理(代码片段)

本文首发于微信公众号「后厂技术官」前言在本系列的第4和第5篇文章中,介绍了LiveData的使用和原理,LiveData和ViewModel是一对好搭档,这篇文章我们一起来学习什么是ViewModel、ViewModel基本使用、ViewModel的原理。1.什么... 查看详情

一文带你学会使用yolo及opencv完成图像及视频流目标检测(上)|附源码(代码片段)

计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别、行人检测等,国内的旷视科技、商汤科技等公司在该领域占据行业领先地位。相对于图像分类任务而言,目标检测会更加复杂一些,不... 查看详情

一文看懂什么是https,及其安全传输机制和原理

一文看懂什么是HTTPS,及其安全传输机制和原理一、前言二、什么是HTTP和HTTPS?1.什么是HTTP?1.1HTTP的工作原理1.2HTTP的缺点1.3HTTP的实际案例2.HTTPS:(HyperTextTransferProtocoloverSecureSocketLayer)3.加密算法3.1对称加密算法3.2非对称加密4.基... 查看详情

一文带你了解webrtc基本原理(动手实现1v1视频通话)(代码片段)

webrtc(WebReal-TimeCommunications)是一个实时通讯技术,也是实时音视频技术的标准和框架。大白话讲,webrtc是一个集大成的实时音视频技术集,包含了各种客户端api、音视频编/解码lib、流媒体传输协议、回声消除、安全传输等。对于... 查看详情

一文带你快速了解spark架构设计与原理思想

    卷友们,大家好~我是Alex。之前已经陆续输出了​​Hadoop三大核心组件的架构思想和原理​​​和​​Hive架构设计和原理​​,每篇都受到了读者小伙伴们的一致好评~感谢大家的支持。按照发展趋势,本篇将... 查看详情

一文带你弄懂cdn技术的原理

对于CDN这个东西,相信大家都有耳闻,感觉既陌生但又熟悉。最近深入了解了一下CDN,这才发现原来CDN如此重要!今天就跟大家科普一下CDN是什么,以及为啥要有CDN,最后再讲一下CDN的工作过程!浏览器的网络请求要理解CDN这件... 查看详情

一文看懂什么是https,及其安全传输机制和原理

一文看懂什么是HTTPS,及其安全传输机制和原理一、前言二、什么是HTTP和HTTPS?1.什么是HTTP?1.1HTTP的工作原理1.2HTTP的缺点1.3HTTP的实际案例2.HTTPS:(HyperTextTransferProtocoloverSecureSocketLayer)3.加密算法3.1对称加密算法3.2非对称加密4.基... 查看详情

一文看懂什么是https,及其安全传输机制和原理

一文看懂什么是HTTPS,及其安全传输机制和原理一、前言二、什么是HTTP和HTTPS?1.什么是HTTP?1.1HTTP的工作原理1.2HTTP的缺点1.3HTTP的实际案例2.HTTPS:(HyperTextTransferProtocoloverSecureSocketLayer)3.加密算法3.1对称加密算法3.2非对称加密4.基... 查看详情

一文带你了解大数据技术之hadoop(yarn)(代码片段)

Yarn资源调度器1.Yarn基础架构2.Yarn工作机制3.作业提交全过程4.Yarn调度器和调度算法4.1先进先出调度器(FIFO)4.2容量调度器(CapacityScheduler)4.3公平调度器(FairScheduler)5.Yarn常用命令5.1yarnapplication查看任务5.... 查看详情

一文带你了解如何编辑工作流流程图(代码片段)

1.通用审批流程组件1.编辑表单申请人和审批人都会有各自表单(在需要的情况下)。在编辑流程时,第一步就是编辑表单。1.编辑申请人表单这里需要要记住表单key,在与流程图挂接时需要。如果需要在后续审批... 查看详情

一篇文章带你了解网络爬虫的概念及其工作原理

众所周知,随着计算机、互联网、物联网、云计算等网络技术的风起云涌,网络上的信息呈爆炸式增长。毋庸置疑,互联网上的信息几乎囊括了社会、文化、政治、经济、娱乐等所有话题。使用传统数据收集机制(如问卷调查法... 查看详情

一文带你了解.net自旋锁(代码片段)

本文主要讲解.Net基于Thread实现自旋锁的三种方式基于Thread.SpinWait实现自旋锁实现原理:基于Test--And--Set原子操作实现使用一个数据表示当前锁是否已经被获取0表示未被索取,1表示已经获取获取锁时会将_lock的值设置为1然后检查修... 查看详情