模块14 人脸检测与人脸识别《计算机视觉处理项目实战》教学课件_第1页
模块14 人脸检测与人脸识别《计算机视觉处理项目实战》教学课件_第2页
模块14 人脸检测与人脸识别《计算机视觉处理项目实战》教学课件_第3页
模块14 人脸检测与人脸识别《计算机视觉处理项目实战》教学课件_第4页
模块14 人脸检测与人脸识别《计算机视觉处理项目实战》教学课件_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

《计算机视觉处理项目实战》✩精品课件合集✩精品课件合集第X章XXXX模块14人脸检测与人脸识别基于Haar的人脸检测CONTENTS目录01基于Haar的人脸检测基于Haar的人脸检测使用OpenCV提供的Haar级联分类器来进行人脸检测。在OpenCV源代码中的“data\haarcascades”文件夹中包含训练好的Haar级联分类器文件。haarcascade_eye.xml:人眼检测haarcascade_eye_tree_eyeglasses.xml:眼镜检测haarcascade_frontalcatface.xml:猫脸检测haarcascade_frontalface_default.xml:人脸检测haarcascade_profileface.xml:侧脸检测基于Haar的人脸检测cv2.CascadeClassifier()函数用于加载分类器,其基本格式如下。faceClassifier=cv2.CascadeClassifier(filename)参数说明如下。faceClassifier为返回的级联分类器对象。filename为级联分类器的文件名。基于Haar的人脸检测级联分类器对象的detectMultiScale()方法用于执行检测,其基本格式如下。objects=faceClassifier.detectMultiScale(image[,scaleFactor[,minNeighbors[,flags[,minSize[,maxSize]]]]])参数说明如下。objects为返回的目标矩形,矩形中为人脸。image为输入图像,通常为灰度图像。scaleFactor为图像缩放比例。minNeighbors为构成目标矩形的最少相邻矩形个数。flags在低版本的OpenCV1.x中使用,高版本中通常省略该参数。minSize为目标矩形的最小尺寸。maxSize为目标矩形的最大尺寸。基于Haar的人脸检测示例importcv2ascvimg=cv.imread("./image/zns.jpg")gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#实例化检测器cas=cv.CascadeClassifier("E:/python/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml")faces=cas.detectMultiScale(gray,scaleFactor=1.15,minNeighbors=5,minSize=(5,5))forfaceinfaces:x,y,w,h=facecv.rectangle(img,(x,y),(x+w,y+h),(0,255,0),3)cv.imshow("img",img)cv.waitKey(0)cv.destroyAllWindows()

总结01基于Haar的人脸检测基于深度学习的人脸检测

CONTENTS目录01基于深度学习的人脸检测基于深度学习的人脸检测OpenCV的深度神经网络(DeepNeuralNetwork,DNN)模块提供了基于深度学习的人脸检测器。DNN模块中使用了广受欢迎的深度学习框架,包括Caffe、TensorFlow、Torch和Darknet等。OpenCV提供了两个预训练的人脸检测模型:Caffe和TensorFlow模型。Caffe模型需加载以下两个文件。totxt:定义模型结构的配置文件。res10_300x300_ssd_iter_140000_fp16.caffemodel:包含实际层权重的训练模型文件。TensorFlow模型需加载以下两个文件。opencv_face_detector.pbtxt:定义模型结构的配置文件。opencv_face_detector_uint8.pb:包含实际层权重的训练模型文件。在OpenCV源代码的“sources\samples\dnn\face_detector”文件夹中提供了模型配置文件,但未提供训练模型文件。可运行该文件夹中的download_weights.py下载上述的两个训练模型文件。基于深度学习的人脸检测01调用cv2.dnn.readNetFromCaffe()或cv2.dnn.readNetFromTensorflow()函数加载模型,创建检测器。02调用cv2.dnn.blobFromImage()函数将待检测图像转换为图像块数据。03调用检测器的setInput()方法将图像块数据设置为模型的输入数据。04调用检测器的forward()方法执行计算,获得预测结果05将可信度高于指定值的预测结果作为检测结果,在原图像中标注人脸,同时输出可信度作为参考基于深度学习的人脸检测示例基于深度学习的人脸检测示例importcv2importnumpyasnpfrommatplotlibimportpyplotaspltdnnnet=cv2.dnn.readNetFromCaffe("totxt","res10_300x300_ssd_iter_140000_fp16.caffemodel")img=cv2.imread("heard.jpg")h,w=img.shape[:2]blobs=cv2.dnn.blobFromImage(img,1.0,(300,300),[104.,117.,123.],False,False)dnnnet.setInput(blobs)detections=dnnnet.forward()faces=0foriinrange(0,detections.shape[2]):confidence=detections[0,0,i,2]ifconfidence>0.8:faces+=1box=detections[0,0,i,3:7]*np.array([w,h,w,h])x1,y1,x2,y2=box.astype("int")y=y1-10ify1-10>10elsey1+10text="%.3f"%(confidence*100)+'%'cv2.rectangle(img,(x1,y1),(x2,y2),(255,0,0),2)cv2.putText(img,text,(x1+20,y),cv2.FONT_HERSHEY_SIMPLEX,0.9,(0,0,255),2)cv2.imshow('faces',img)cv2.waitKey(0)总结01基于深度学习的人脸检测EigenFaces人脸识别CONTENTS目录01EigenFaces人脸识别EigenFaces人脸识别

特征脸技术是用于人脸识别以及其它涉及到人脸处理的一种方法。首先把一批人脸图像转换成一个特征向量集,称为“Eigenfaces”,即“特征脸”,它们是最初训练图像集的基本组件。识别的过程是把一副新的图像投影到特征脸子空间,并通过它的投影点在子空间的位置以及投影线的长度来进行判定和识别。cv2.face.EigenFaceRecognizer_create()函数的基本格式如下。recognizer=cv2.face.EigenFaceRecognizer_create([num_components[,threshold]])参数说明num_compnents在PCA中要保留的分量个数threshold进行人脸识别所采用的阈值。EigenFaces人脸识别EigenFaces使用主要成分分析(PrincipalComponentAnalysis,PCA)方法将人脸数据从高维处理成低维后,获得人脸数据的主要成分信息,进而完成人脸识别。调用cv2.face.EigenFaceRecognizer_create()方法创建EigenFaces识别器调用识别器的train()方法用已知图像训练模型调用识别器的predict()方法用未知图像进行识别,确认其身份。010203EigenFaces人脸识别EigenFaces识别器train()方法的基本格式如下。recognizer.train(src,labels)参数说明如下。src为用于训练的已知图像数组。所有图像必须为灰度图像,且大小要相同。labels为标签数组,与已知图像数组中的人脸一一对应,同一个人的人脸标签应设置为相同值。EigenFaces识别器predict()方法的基本格式如下。label,confidence=recognizer.predict(testimg)参数说明如下。testimg为未知人脸图像,必须为灰度图像,且与训练图像大小相同。label为返回的标签值。confidence为返回的可信度,表示未知人脸和模型中已知人脸之间的距离。0表示完全匹配,低于5000可认为是可靠的匹配结果。EigenFaces人脸识别示例importcv2ascvimportnumpyasnpimages=[]images.append(cv.imread("./images/1/c1.png",cv.IMREAD_GRAYSCALE))images.append(cv.imread("./images/1/d1.png",cv.IMREAD_GRAYSCALE))labels=[0,1]recognizer=cv.face.EigenFaceRecognizer_create()recognizer.train(images,np.array(labels))predict_image=cv.imread("./images/1/c3.png",cv.IMREAD_GRAYSCALE)label,confidence=recognizer.predict(predict_image)print("label=",label)print("confidence=",confidence)总结01EigenFaces人脸识别FisherFaces人脸识别CONTENTS目录01FisherFaces人脸识别FisherFaces人脸识别FisherFaces使用线性判别分析(LinearDiscriminantAnalysis,LDA)方法实现人脸识别。调用cv2.face.FisherFaceRecognizer_create()函数创建FisherFaces识别器调用识别器的predict()方法用未知图像进行识别,确认其身份。调用识别器的train()方法用已知图像训练模型123FisherFaces人脸识别importcv2importnumpyasnpimages=[]images.append(cv.imread("./images/1/c1.png",cv.IMREAD_GRAYSCALE))images.append(cv.imread("./images/1/c2.png",cv.IMREAD_GRAYSCALE))images.append(cv.imread("./images/1/d1.png",cv.IMREAD_GRAYSCALE))images.append(cv.imread("./images/1/d2.png",cv.IMREAD_GRAYSCALE))labels=[0,0,1,1]recognizer=cv2.face.FisherFaceRecognizer_create()recognizer.train(images,np.array(labels))predict_image=cv2.imread("./images/1/c3.png",cv2.IMREAD_GRAYSCALE)label,confidence=recognizer.predict(predict_image)print("label=",label)print("confidence=",confidence)示例总结01FisherFaces人脸识别LBPH人脸识别CONTENTS目录01LBPH人脸识别LBPH人脸识别LBPH(LocalBinaryPatternsHistogram,局部二进制编码直方图)所使用的模型基于LBP(局部二值模式)算法。LBPH算法的基本原理是,将像素点A的值与其最邻近的8个像素点的值逐一比较:如果A的像素值大于其临近点的像素值,则得到0。LBPH是唯一允许模型样本人脸和检测的人脸在形状、大小上可以不同的人脸识别算法。LBPHLBPH人脸识别在OpenCV中,它提供cv2.face.LBPHFaceRecognizer_create()函数生成LBPH识别器实例模型,语法格式如下所示。cv2.face.LBPHFaceRecognizer_create(radius,neighbors,grid_x,grid_y,threshold)参数说明radius半径值,默认值为1。neighbors邻域点的个数,默认采用8邻域,根据需要可以计算更多的邻域点。grid_x将LBP特征图像划分为一个个单元格时,每个单元格在水平方向上的像素个数该参数值默认为8。即将LBP特征图像在行方向上8个像素为单位分组。grid_y将LBP特征图像划分为一个个单元格时,每个单元格在垂直方向上的像素个数该参数值默认为8。即将LBP特征图像在列方向上8个像素为单位分组。threshold在预测时所使用旳阈值。如果大于该阈值,就认为没有识别到任何目标对象。LBPH人脸识别

LBPH识别器train()方法的基本格式如下。recognizer.train(src,labels)参数说明如下。src为用于训练的已知图像数组。所有图像必须为灰度图像,且大小要相同。labels为标签数组,与已知图像数组中的人脸一一对应,同一个人的人脸标签应设置为相同值。

LBPH识别器predict()方法的基本格式如下。label,confidence=recognizer.predict(testimg)参数说明如下。testimg为未知人脸图像,必须为灰度图像,且与训练图像大小相同。label为返回的识别标签值。confidence为返回的可信程度,表示未知人脸和模型中已知人脸之间的距离。0表示完全匹配,低于50可认为是非常可靠的匹配结果。LBPH人脸识别importcv2importnumpyasnpimages=[]images.append(cv2.imread("

温馨提示

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

评论

0/150

提交评论