《计算机视觉应用与实践》课件-项目9 人脸检测_第1页
《计算机视觉应用与实践》课件-项目9 人脸检测_第2页
《计算机视觉应用与实践》课件-项目9 人脸检测_第3页
《计算机视觉应用与实践》课件-项目9 人脸检测_第4页
《计算机视觉应用与实践》课件-项目9 人脸检测_第5页
已阅读5页,还剩30页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机视觉技术及应用人脸检测与识别项目九

01 人脸检测02 人脸识别03 项目实施——实验室成员人脸检测与识别04 项目实训目录项目目标知识目标了解人脸检测的基本原理。掌握人脸检测的步骤。掌握常用的人脸识别方法。技能目标能够使用OpenCV进行人脸检测。能够使用OpenCV进行人脸识别。能够使用OpenCV进行人眼、猫脸等其他对象的检测。素养目标锻炼分析问题的思维方式,提升逻辑思维能力。培养锲而不舍的专研精神。小旌了解到,人脸检测与识别依托于计算机视觉技术,旨在识别图像或视频流中的人脸,并能准确辨识其身份。为此,小旌计划为计算机视觉实验室训练一个人脸检测与识别的模型,以对入场人员进行高效的人脸检测与识别。小旌首先对实验室成员进行人脸数据采集,随后将这些采集的人脸图像作为训练数据集,用于对人脸识别模型进行训练,完成训练后,小旌将运用这一模型进行人脸识别测试,以评估人脸检测与识别模型的性能。项目描述项目准备全班学生以

3~5

人为一组进行分组,各组选出组长。组长组织组员扫码观看“人脸检测与识别的应用”视频,讨论并回答下列问题。问题1:人脸检测与识别基于哪些技术进行身份认证?问题2:说一说人脸检测与识别的应用场景(不少于3种)。01人脸检测人脸检测>人脸检测的原理直方图基于统计模型的方法将人脸看作一个整体的像素矩阵,从统计的观点通过大量人脸图像样本构造人脸模式空间,根据相似度来判断人脸是否存在。基于知识规则的方法将人脸看作器官特征的组合,根据组合成分(如眼睛、眉毛、嘴巴、鼻子等)的特征及相互之间的几何位置关系来检测人脸。基于深度学习的方法利用深度神经网络(如卷积神经网络)来自动学习人脸的特征表示,并通过大量的训练数据来提高检测的准确性和鲁棒性。

人脸检测是指对于任意一幅给定的图像,采用一定的策略对其进行搜索,以确定其中是否含有人脸,如果有,则返回人脸的位置、大小和姿态等信息。人脸检测>人脸检测的原理>1.级联分类器级联分类器的基本原理为排除法,它将多个分类器按照一定的顺序串联起来,逐级筛选数据。在实际应用中,级联分类器往往从简单特征开始,逐步排除不符合条件的检测对象,经过多次条件检测,最后筛选出符合所有条件的检测对象,这些检测对象又称正样本。级联分类器流程人脸检测>人脸检测的原理>1.级联分类器直方图正样本、负样本指的是什么呢?在二分类任务中,样本分为正样本和负样本两种类型。正样本:符合目标类别特征的数据或实例;负样本:不符合目标类别特征的数据或实例。人脸检测>人脸检测的原理>2.Haar级联分类器Haar级联分类器使用的特征是Haar特征。Haar特征是一类能够反映图像灰度变化的特征,它用黑白两种矩形框组合形成特征模板。在特征模板中,用白色矩形区域像素之和减去黑色矩形区域像素之和来表示该模板的特征。Haar特征模板人脸检测>人脸检测的原理>2.Haar级联分类器Haar特征能够简单地描述人脸图像的灰度对比特征,如眼睛区域颜色比脸颊区域暗,鼻梁两侧比鼻梁颜色深,嘴巴比周围颜色深等。当将Haar特征模板覆盖到人脸区域上时,计算出模板区域的特征值,再与非人脸区域的特征值做对比,二者的差距一般非常明显,这也是Haar特征能够用于区分人脸和非人脸的原因。人脸检测>人脸检测的原理>2.Haar级联分类器OpenCV提供的级联分类器支持人脸检测、眼睛检测、鼻子检测等功能,这些分类器以XML文件的形式存放。OpenCV安装成功后,可以在所安装的文件夹中看到这些XML文件,不同操作系统的存放位置有所区别,如在Windows操作系统中通常存放在OpenCV安装文件夹的data文件夹中。此外,还可以通过OpenCV的GitHub资源托管平台(网址为/opencv/opencv/tree/master/data)下载。人脸检测>人脸检测的原理>2.Haar级联分类器OpenCV提供的Haar级联分类器、HOG级联分类器和LBP级联分类器,分别存放在haarcascades、hogcascades和lbpcascades文件夹中。其中,常用的Haar级联分类器如下表所示。级联分类器XML文件名功

能haarcascade_eye.xml眼睛检测haarcascade_eye_tree_eyeglasses.xml眼镜检测haarcascade_frontalcatface.xml正面猫脸检测haarcascade_frontalcatface_default.xml正面人脸检测haarcascade_fullbody.xml身形检测haarcascade_lefteye_2splitts.xml左眼检测haarcascade_lowerbody.xml下半身检测haarcascade_profileface.xml侧面人脸检测haarcascade_righteye_2splits.xml右眼检测haarcascade_russian_plate_number.xml车牌检测haarcascade_smile.xml笑容检测haarcascade_upperbody.xml上半身检测格式:

classifier=cv2.CascadeClassifier(filename)cv2.CascadeClassifier()函数:用于加载Haar级联分类器或LBP级联分类器人脸检测>人脸检测的编程实现>1.加载级联分类器classifier为cv2.CascadeClassifier类的对象;filename表示级联分类器的XML文件路径。cv2.CascadeClassifier是OpenCV的一个类,用于检测图像中的物体。使用cv2.CascadeClassifier类进行人脸检测分为加载级联分类器和使用级联分类器检测图像两个步骤。格式:objects=classifier.detectMultiScale(image[,scaleFactor=1.1[,minNeighbors=3[,minSize[,maxSize]]]])detectMultiScale()方法:用于人脸检测人脸检测>人脸检测的编程实现>2.使用级联分类器检测图像objects表示检测到的目标对象的矩形框列表,列表的元素是元组,每个元组由4个整数(x,y,width,height)组成,(x,y)为矩形左上角的坐标,width和height分别为矩形的宽度和高度;image表示待检测的图像;scaleFactor表示扫描图像时的缩放比例,为可选参数,默认为1.1;minNeighbors表示每个目标至少要被检测到多少次才算匹配成功,即每个候选框周围至少有minNeighbors个矩形框与其重叠,该候选框才被认为是一个检测到的对象,为可选参数,默认为3;minSize表示检测目标的最小尺寸,为可选参数;maxSize表示检测目标的最大尺寸,为可选参数。【例

9-1】编写程序,使用OpenCV的Haar级联分类器对图像“people.png”(见本书配套素材“例题图像/people.png”)进行人脸检测,并在人脸位置绘制矩形框。【参考代码】importcv2 #导入OpenCV库image=cv2.imread('people.png') #读取原图像gray=cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) #转换为灰度图像face=cv2.CascadeClassifier(r'E:\opencv-4.8.0\data\haarcascades\haarcascade_frontalface_default.xml') #加载级联分类器faces=face.detectMultiScale(gray,1.1,3) #检测人脸cv2.rectangle(image,(image.shape[1]-150,image.shape[0]-20),(image.shape[1],image.shape[0]),(0,255,255),-1)cv2.putText(image,“Find”+str(len(faces))+“faces”,(image.shape[1]-140,image.shape[0]5),cv2.FONT_HERSHEY_COMPLEX,0.6,(255,0,0),1)for(x,y,w,h)infaces: #标记人脸

cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2) #绘制矩形cv2.imshow('People',image) #显示图像cv2.waitKey() #窗口等待,按任意键继续cv2.destroyAllWindows() #释放所有窗口人脸检测>人脸检测的编程实现>2.使用级联分类器检测图像【运行结果】程序运行结果如下图所示。人脸检测>人脸检测的编程实现>

2.使用级联分类器检测图像例9-1程序运行结果人脸检测>人脸检测的编程实现>

2.使用级联分类器检测图像直方图在人脸检测过程中,有可能出现检测不到人脸,或者非人脸被检测为人脸的情况,该怎么办呢?可以通过调整detectMultiScale()方法中的scaleFactor和minNeighbors参数,以达到检测的最优效果。【例

9-2】编写程序,使用OpenCV的Haar级联分类器对图像“cat.jpg”(见本书配套素材“例题图像/cat.jpg”)进行猫脸检测,并在猫脸位置绘制矩形框。【参考代码】importcv2 #导入OpenCV库#加载级联分类器faceCascade=cv2.CascadeClassifier(r'E:\opencv-4.8.0\data\haarcascades\haarcascade_frontalcatface.xml') image=cv2.imread("cat.jpg") #读取原图像gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) #转换为灰度图像faces=faceCascade.detectMultiScale(gray) #检测猫脸for(x,y,w,h)infaces: #标记猫脸 cv2.rectangle(image,(x,y),(x+w,y+h),(0,0,255),2) cv2.putText(image,'Cat',(x,y-7),3,1.2,(0,0,255),2,cv2.LINE_AA)cv2.imshow('Cat',image) #显示图像cv2.waitKey() #窗口等待,按任意键继续cv2.destroyAllWindows() #释放所有窗口人脸检测>人脸检测的编程实现>2.使用级联分类器检测图像【运行结果】程序运行结果如下图所示。使用OpenCV的Haar级联分类器,不仅可以进行人脸检测,还可以进行眼睛、眼镜、猫脸等对象的检测。人脸检测>人脸检测的编程实现>

2.使用级联分类器检测图像例9-2程序运行结果人脸检测>人脸检测的编程实现>

2.使用级联分类器检测图像旷视科技凭借其在计算机视觉与深度学习领域中的卓越贡献,尤其是在人脸识别技术上的重大进展而备受关注。它的人脸识别算法,利用深度学习技术,经过海量数据训练,达到了99.8%的识别准确率。该技术能在极短时间内完成人脸特征的提取和匹配,适应高频率、大规模的实时监控场景,广泛应用于多个行业,大幅提升了系统的安全性和管理效率。素养之窗旷视科技的人脸识别技术展现出了非凡的环境适应性,无论是面对复杂多变的室内外环境,还是昼夜更替、光线迥异的挑战,均能保持稳定且高精度的识别性能,确保了识别结果的一致性与可靠性,为行业树立了新的标杆。02人脸识别人脸识别>人脸识别的方法人脸识别是基于人的脸部特征进行身份识别的一种技术,该技术能够从摄像机或摄像头采集到的含有人脸的图像或视频流中检测到人脸的位置,进而达到识别人脸身份的目的。基于LBPH的人脸识别基于Eigenfaces的人脸识别基于Fisherfaces的人脸识别人脸识别的方法人脸识别>人脸识别的方法>1.基于LBPH的人脸识别局部二值模式直方图(localbinarypatternshistogram,LBPH)主要使用局部的纹理特征完成人脸识别。该方法将每个像素与周围的像素进行比较,计算出每个像素的二进制编码,再将编码串联起来形成一个局部特征。优点:对于图像的旋转、缩放和灰度变化等不敏感缺点:对于遮挡和表情变化等因素的鲁棒性有待提高人脸识别>人脸识别的方法>2.基于Eigenfaces的人脸识别特征脸(Eigenfaces)方法是一种基于主成分分析(principalcomponentanalysis,PCA)的人脸识别方法。该方法将人脸图像转换为低维的特征向量,使用PCA降维的方式提取出训练集中的主成分特征,进而提取出人脸图像的特征向量。在进行识别时,通过比较输入图像与训练集中每个图像的特征向量的相似度来判断其所属的人脸类别。人脸识别>人脸识别的方法>3.基于Fisherfaces的人脸识别基于Fisherfaces的人脸识别是一种基于线性判别分析(lineardiscriminantanalysis,LDA)的人脸识别方法。其核心思想是利用LDA算法对人脸特征进行降维,并通过计算投影系数,将原图像投影到低维空间中。这样,可以大大减少计算量和提高识别速度。优点:对于光照、表情变化等因素的鲁棒性很强缺点:对于遮挡的鲁棒性有待提高人脸识别>人脸识别的编程实现第1步第2步第3步创建人脸识别器训练人脸识别器应用人脸识别器人脸识别>人脸识别的编程实现>1.创建人脸识别器方法说明创建LBPH人脸识别器对象recognizer=cv2.face.LBPHFaceRecognizer_create([radius=1[,neighbors=8[,grid_x=8[,grid_y=8[,threshold]]]]])recognizer表示创建的LBPH人脸识别器对象;radius表示圆形局部二进制模式的半径,为可选参数,默认为1;neighbors表示邻域像素的数量,为可选参数,默认为8;grid_x和grid_y分别表示将LBP特征图像划分为单元格时,每个单元格在水平方向和垂直方向上的像素数量,为可选参数,默认为8;threshold表示人脸识别时使用的阈值,为可选参数。创建Eigenfaces人脸识别器对象recognizer=cv2.face.EigenFaceRecognizer_create([num_components=0[,threshold=0]])recognizer表示创建的Eigenfaces人脸识别器对象;num_components表示需要保留的特征数量,为可选参数,默认为0;threshold表示人脸识别时使用的阈值,为可选参数,默认为0。创建Fisherfaces人脸识别器对象recognizer=cv2.face.FisherFaceRecognizer_create(

[num_components=0[,threshold=0]])参数与cv2.face.EigenFaceRecognizer_create()方法参数相同。人脸识别>人脸识别的编程实现>2.训练人脸识别器src

表示用于训练的人脸图像列表,人脸图像须为灰度图像,且大小相同;labels表示人脸图像对应的标签数组,元素类型为整型,数组长度须与人脸图像列表的长度相等。格式:recognizer.train(src,labels)train()函数创建好人脸识别器对象recognizer后,人脸识别的3种方法均须调用train()方法训练人脸识别器。人脸识别>人脸识别的编程实现>3.应用人脸识别器label表示与人脸图像匹配程度最高的标签值;confidence表示匹配程度最高的可信度,其值为未知人脸图像与模型中已知人脸图像之间的距离;src表示未知人脸图像,须为灰度图像,且与训练图像大小相同。格式:label,confidence=recognizer.predict(src)predict()函数训练好人脸识别器后,就可以调用predict()方法进行人脸识别了。该方法对比人脸图像的特征,给出最相近的结果和评分。人脸识别>人脸识别的编程实现>3.应用人脸识别器直方图confidence表示匹配程度最高的可信度,其值为未知人脸图像与模型中已知人脸图像之间的距离,在不同函数中代表什么含义?在基于LBPH的人脸识别中,predict()方法的返回值confidence的值为0,表示两幅图像完全匹配,低于50表示匹配程度较高,大于80表示匹配程度较差。而在基于Eigenfaces的人脸识别和基于Fisherfaces的人脸识别中,返回值confidence的值为0,表示两幅图像完全匹配,低于5000表示匹配程度较高。【例

9-3】编写程序,使用3幅图像(见本书配套素材“例题图像/identify1.png”“例题图像/identify2.png”和“例题图像/identify3.png”)作为训练图像,训练LBPH人脸识别器,然后对测试图像(见本书配套素材“例题图像/unk

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论