九年级信息技术科教案
备课序号:第 节
主备教师 | 备课组长 | ||||||
执行教学 | 上课时间 | 年 月 日 | |||||
教学内容 | 训练智能模型 | 课型 | 新授课 | ||||
教 学 目 标 | 知识与技能 | 了解人脸识别应用,熟悉人脸识别的过程。霹雳神州第一部百度云 了解准备训练数据的方法。 | |||||
过程与方法 | 通过任务驱动教学法,使学生能利用已有的人脸数据训练新的识别模型。 | ||||||
情感态度价值观 | 能够自行训练模型识别手写的数字图像以激发学生解决问题的兴趣。 | ||||||
德育渗透 | 提高学生信息手段的动手能力,学会利用信息技术解决实际问题 | ||||||
教法与学法 | 教法:任务驱动法、演示教学,学法:自主探究、小组合作 | ||||||
教学重点 | 编写程序,利用已有的人脸数据训练新的识别模型 | ||||||
教学难点 | 掌握用程序自行训练模型识别手写的数字图像的实现方法。 | ||||||
运行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小时内删除。
发表评论