年级信息技术科教案
备课序号:第    节     
ios版matlab怎么用
主备教师
备课组长
执行教学
上课时间
年  月  日
教学内容
训练智能模型
课型
新授课
知识与技能
了解人脸识别应用,熟悉人脸识别的过程。霹雳神州第一部百度云
了解准备训练数据的方法。
过程与方法
通过任务驱动教学法,使学生能利用已有的人脸数据训练新的识别模型。
情感态度价值观
能够自行训练模型识别手写的数字图像以激发学生解决问题的兴趣。
德育渗透
提高学生信息手段的动手能力,学会利用信息技术解决实际问题
教法与学法
教法:任务驱动法、演示教学,学法:自主探究、小组合作
教学重点
编写程序,利用已有的人脸数据训练新的识别模型
教学难点
掌握用程序自行训练模型识别手写的数字图像的实现方法。
运行linux虚拟机属于
教学准备
不同的人脸图片
教学过程
个性思考
导入
在前面的学习过程中,都是利用他人训练好的模型开发智能程序。那么, 这些模型到底是如何产生的呢?如何根据问题自行生成需要的模型?训练模型 的过程比较复杂,需要大量的数据和运算资源,普通人一般难以完成这种任 务。不过,对于人脸识别、手写数字识别等较简单的问题,可以根据需要自行 训练。
一、人脸识别
plsql developer登录不上师:人脸识别技术目前已经在社会中得到了广泛应用。比如,可以利用人脸识 别实现门禁管理,可以用人脸识别技术建立平台寻失散的儿童,还可以用人 脸识别来支付货款等。
人脸识别过程如何进行人脸识别呢?我们先来看看人是怎么识别其他人的。 遇见了一个不认识的人或者看一个陌生人的照片时,会不自觉地观察那人的脸、眼睛、鼻子、嘴巴……这是在收集那个人面部的特征。再次遇到或看到 照片时,尽管场景、服饰等可能都发生了很大的变化,但人的大脑还是会立刻 认出来。
这就是人识别他人的过程,具体可以分为三步:一、观察某人的面部,获 取相关的特征信息;二、根据这些信息在头脑中建立相应的模型;三、根据建 立的模型,识别出特定的人。
儿童python入门教程计算机进行人脸识别时,过程也与此相同。
准备数据
要想获取某个人的面部特征,首先需要把这个人的面部“”出来,人很 容易做到,但计算机就有点困难。当然,可以用人工的方式把照片中的人脸部 分截取出来,但照片数量多了以后,这样做显然就不合适了。
实际上可以使用一些编程工具来辅助完成,如专门用于处理计算机视觉问 题的OpenCV库。这个库提供了一个现成的模型,可以把照片中的人脸单独截 取出来。进行编程时,建议把程序所需要的模型文件保存到程序文件所在的文 件夹里。学生任务【一】了解检测面部的函数和测试程序。
准备一两张用来测试的图像文件,图像中要包括一张人脸。 编写寻人脸的函数和测试程序。
# 引入编程模块,opencv 对应 cv2 模块
import cv2
# 检测面部的函数,参数 img 为图像数据
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]
# 加载已有模型
classifier = cv2.CascadeClassifier('haarcascade_l') face=detect_face(classifier , '001.jpg')
cv2.imshow("image",face)  # 显示图像
cv2.waitKey(0) cv2.destroyAllWindows()
把模型文件haarcascade_l保存到程序所在的文件夹中。这 个文件通常在OpenCV的安装文件夹里。
利用这个方法,可以自动截取图像中的人脸部分。接下来就可以用它准备 人脸识别的训练数据了。
学生任务【二】利用程序自动截取素材中的人脸数据。
建立名为“pics”的文件夹,把几个人的独照分别存入不同 的子文件夹,如p01、p02、p03、p04。照片最好准备多张,人的面部要正对镜头,背 景越淡越好。一般来说,符合标准的照片越多,收集到的数据越丰富,训练出来的模 型质量就会越高。
根据前面所学,理解下面的程序。其中,程序使用了os模块的相关函数,来 列出某个文件夹中的所有文件。
import os , cv2
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]
faces,labels=[],[]    # faces 用来存放面部数据,label 用来做标记,区分是哪个人
classifier = cv2.CascadeClassifier('haarcascade_l')
for p,m in zip (['p01','p02','p03','p04'],[0,1,2,3]) :    #p01 标记为 1,以此类推
for img_file in os.listdir(f'pics/{p}'): face=detect_face(classifier ,f'pics/{p}/{img_file}') faces.append(face); labels.append(m)
for face in faces: cv2.imshow("image",face)  # 显示图像
cv2.waitKey(1000)    # 显示 1000 毫秒,即 1 秒后自动关闭
cv2.destroyAllWindows()
运行程序,可以发现,程序可以把每张照片中的人脸都识别出来,并会把相 关的数据保存到faces列表中。
金华企业建站系统模板学生任务【三】训练识别模型。
参照下面的代码,编写生成识别模型的函数。
# 生成识别模型
def gen_recognizer(faces,labels):
# 调用 OpenCV 提供的特定的识别训练器
recognizer = cv2.face.LBPHFaceRecognizer_create()
# 利用面部数据和标记,训练模型
ain(faces, np.array(labels))
# 保存模型
recognizer.save('l')
在主程序的最后插入下面的代码,完成训练程序的编写工作。
gen_recognizer(faces,labels)
运行程序,等图像都展示完毕后,文件夹中就会出现名为l的文 件,这个文件就是训练得到的模型。
接下来就可以利用这个模型进行人脸识别了。
学生任务【四】编程进行人脸识别。
再准备一些用来进行识别的照片,并把这些照片杂乱地放在一个文件夹中, 如pics的test子文件夹。
参照下面的代码进行编程,调用已有的模型进行人脸识别操作。
import os,cv2
names=['yingzi','xiao xue ','hehe','nuan nuan']    # 不同标记对应的不同人员
# 加载已有模型,用于检测人脸区域
classifier = cv2.CascadeClassifier('haarcascade_l')
recognizer = cv2.face.LBPHFaceRecognizer_create()
# 加载生成的模型,用于识别人脸
ad('l')
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()
3 运行程序观察识别效果。可以看到,利用生成的模型把待测照片中的人都识 别出来了。
小结:
前面训练的模型,是一个非常简易的模型。受算法、原 始图像数据集等因素的影响,它的识别率很有限。比如,它 在识别某些特征相近的人时,会出错,也不适合用来识别测 试者之外的人员。真正实用的人脸识别系统要进行大量的数 据训练,数据处理过程也更加复杂。不过,整体流程是基本 相同的。
对照片进行人脸识别,其实包括两个步骤:一、出照片中的人脸区域; 二、利用模型对人脸区域进行识别。识别过程其实就是预测过程。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。