第28课 人脸识别 课件(20张PPT)

资源下载
  1. 二一教育资源

第28课 人脸识别 课件(20张PPT)

资源简介

(共20张PPT)
第28课 
人脸识别
第六单元 AI项目工坊
问题情境
同学们每天上学进校门时,要刷卡或者登记才能进入。现在,学校打算升级门禁系统,使用更方便快捷的人脸识别技术。只要在摄像头前一站,系统就能自动识别出身份,判断是否可以通行。
AI
第28课 课堂导入
刷脸门禁
手机解锁
无接触支付
......
在生活中,你知道的人脸识别技术的应用场景有哪些?
你知道这些应用是如何实现的吗?
问题情境
第28课 课堂导入
第28课 学习内容
一 人脸识别过程
三 训练模型
二 准备数据
四 调用模型识别人脸
学习活动
一、人脸识别过程
第28课 学习内容
你是如何通过人脸识别其他人呢?
你在什么情况下会记住一个人的脸?
哪些特征让你印象深刻?
一、人脸识别过程
第28课 学习内容
遇见一个不认识的人或者看到一张陌生人的照片时,会不自觉地观察对方的脸、眼睛、鼻子、嘴巴……这是在收集那个人的面部特征。再次遇到或看到照片时,尽管场景、服饰等可能发生了变化,但人的大脑还是会立刻认出这个人来。
一、人脸识别过程
第28课 学习内容
这就是人通过人脸识别他人的过程,具体可以分为三步:
1.观察某人的面部,获取相关的特征信息;
2.根据这些信息在头脑中建立相应的模型;
3.根据建立的模型,识别出特定的人。
机器进行人脸识别时,过程也与此相同。
第28课 学习内容
若要提取某人的面部特征,需要先把这个人的面部找出来。这个任务对人类来说很简单,但对计算机来说较为困难。当然,可以人工从照片中选取人脸区域,不过如果照片数量较多,那么采用人工方式来完成显然就不合适了。
实际上可以使用一些编程工具来辅助完成,如专门用于处理计算机视觉问题的OpenCV库。这个库提供了一个现成的模型,可以把照片中的人脸单独选取出来。
二、准备数据
二、准备数据
第28课 学习内容
1.要像拍证件照那样让人脸清晰居中,避免美颜滤镜。
2.背景尽量干净、单调,避免复杂花纹和装饰物,减少干扰。
3.如果程序无法从某些照片中自动选取人脸,可考虑删除这些照片。
采集照片时应遵守的原则
二、准备数据
第28课 学习内容
1.把模型文件 haarcascade_frontalface_default.xml保存到程序所在的文件夹中。这个文件通常在 OpenCV 的安装文件夹里。
2.建立名为“pics”的文件夹,将每个人的单人照片分别存入不同子文件夹中,如 p01、p02、p03、p04。每人最好准备多张照片,人的面部要正对镜头,背景越淡越好。通常符合要求的照片数量越多,收集到的数据越丰富,训练出来的模型质量就会越高。
第27课 学习内容
大家可以根据实际情况修改图像文件夹的路径和人物标签。
# 引入编程模块,OpenCV 对应cv2 模块
import os,cv2
# 选取面部的函数,参数imgfile为图像文件
def detect_face(classifier,imgfile):
img = cv2.imread(imgfile,cv2.IMREAD_GRAYSCALE)
faces = classifier.detectMultiScale(img)
x,y,w,h=faces[0]
return img[y:y+h, x:x+w]
data_dir = '../data/faces'
# faces 用来存放面部数据,labels用来做标记,区分是哪个人
faces,labels=[],[]
# 加载选取图像中人脸的模型
classifier = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 把人脸和标签对应起来,p01表示第一个子文件夹
for p,m in zip (['p01','p02','p03','p04'],[0,1,2,3]) :
for img_file in os.listdir(f'{data_dir}/{p}'):
face=detect_face(classifier ,f'{data_dir}/{p}/{img_file}’)
faces.append(face); labels.append(m)
# 展示选取的人脸
for face in faces:
cv2.imshow("image",face)
# 显示1000毫秒,即1秒后自动关闭
cv2.waitKey(1000)
cv2.destroyAllWindows()
二、准备数据
3.根据前面所学,理解配套资源中的step1.py程序。
二、准备数据
第28课 学习内容
4.运行程序选取照片中的人脸,相关的数据会保存到列表变量faces中。
二、准备数据
第28课 学习内容
在检测、识别的过程中,通常需要将图像转换成灰度图的形式。这样做可以避免颜色干扰,同时抓住重点,脸上的皱纹、五官位置等关键特征在黑白对比下更明显。虽然彩色照片色彩丰富,但机器进行人脸识别时,使用黑白照反而更高效。
原始图像可能大小不一,为了提高训练质量,可以考虑通过以下代码将图像中的人脸区域转换成相同大小:
cv2.resize(img[y:y+h, x:x+w], (128,128))
第28课 学习内容
三、训练模型
1.参考配套资源中的step2.py程序,编写训练人脸识别模型的函数。
2.在主程序适当位置插入调用函数的代码,完成训练程序的编写工作。
3.运行程序,待图像展示完毕,文件夹中会出现名为face_mod.xml的文件,这个文件就是训练得到的模型。
# 训练人脸识别模型
def gen_recognizer(faces,labels):
# 调用OpenCV提供的人脸识别训练器
recognizer = cv2.face.LBPHFaceRecognizer_create()
# 利用面部数据和标记,训练模型
recognizer.train(faces, np.array(labels))
recognizer.save('face_mod.xml')
# 放到主程序的合适位置
gen_recognizer(faces,labels)
第28课 学习内容
三、训练模型
计算机通过学习多张人脸图像及其对应的身份标签,建立起人脸特征与身份之间的对应关系,并将这些信息保存在模型文件中。这个模型就像是一个“数字大脑”,在后续的人脸识别任务中可以用来判断新输入的人脸属于哪一个人。
训练模型就是让计算机记住这些人的脸。
第28课 学习内容
四、调用模型识别人脸     
对照片进行人脸识别,其实包括两个步骤:
1.找出照片中的人脸区域;
2.利用模型对人脸进行识别。
整体流程:读取图像→选取人脸区域→调用模型进行识别→显示结果
第28课 学习内容
四、调用模型识别人脸     
# import os,cv2
names=['ying zi','xiao xue ','hehe',meng meng'] # 不同标记对应的不同人员
# 加载已有模型,用于找出人脸区域
classifier = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
recognizer = cv2.face.LBPHFaceRecognizer_create()
# 加载生成的模型,用于识别人脸
recognizer.read('face_mod.xml')
font=cv2.FONT_HERSHEY_PLAIN
for file in os.listdir('pics/test'): # 读取图像文件
img = cv2.imread(f'pics/test/{file}')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转化为灰度图
faces = classifier.detectMultiScale(gray_img)
x,y,w,h=faces[0]
# 选取人脸数据
face_data=gray_img[y:y + h, x:x + w]
# 获取标记和相关数据
mark, confidence = recognizer.predict(face_data)
# 根据获取的标记,得到照片对应的人员名字
name=names[mark]
cv2.putText(img,name, (50, 50),font , 2, (255, 0, 255), 2)
cv2.imshow("image",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
1.准备一些用来进行识别的照片,并把这些照片杂乱地放在一个文件夹中,如pics的test子文件夹。
2.参考配套资源中的step3.py程序,编程调用模型进行人脸识别。
第28课 学习内容
四、调用模型识别人脸     
3.运行程序观察识别效果。可以看到,训练得到的模型将待测照片中的人都识别出来了。
如果遇到不认识的人,模型是如何怎么处理的?该如何进行改进?
第28课 课堂总结
1. 人脸识别过程主要有三个步骤:收集特征、建立模型、识别身份。
2. 开发人脸识别系统过程中,主要使用了自动选取人脸、模型和调用模型进行人脸识别的程序。
第28课 拓展与提升
近年来,儿童和老年人走失的事件时有发生,不仅给家庭带来巨大痛苦,也给社会公共安全提出了新的挑战。随着人工智能技术的发展,人脸识别技术因其高效、非接触、易部署等优势,在公共安全和身份识别领域展现出广阔的应用前景。许多城市已经开始将人脸识别系统应用于重点区域监控、身份核验、异常行为预警等方面。
结合所学知识,尝试设计一个基于人脸识别的“防走失及快速寻人”系统。
如果能根据走失前的照片,计算出若干年后的照片,再进行人脸识别,那识别的准确度应该会提升很多。

展开更多......

收起↑

资源预览

error当前文档不提供在线查看服务,请下载使用!