人脸识别签到

2023-07-05 15:08薛晖
江苏科技报·E教中国 2023年9期
关键词:命令人脸识别人脸

薛晖 北京市育英学校信息科技教师,北京市青少年机器人竞赛技术委员会成员,北京市机器人骨干教师,海淀区信息技术学科带头人、骨干教师,海淀区优秀科技辅导教师。曾任全国智能控制大赛裁判长,北京人工智能竞赛裁判长,北京青少年机器人竞赛裁判,北京市海淀创客编程秀项目负责人。指导学生获得全国机器人创意项目一等奖,北京市创新大赛一等奖,北京市青少年科技后备人才早期培养计划最佳学生奖等。

项目概述

人脸识别在生活中已经得到广泛应用,使用Python进行人脸识别签到项目的研究,能够让学生很好地体验使用编程解决实际问题的乐趣。学生以项目式学习方式探究人脸识别的相关知识,了解人脸识别的发展历程、概念和相关技术,描述算法的实现过程,编写相关程序,亲历设计与实现人脸识别签到项目的实践应用。

教師引导学生以人脸识别签到项目为主线,先进行项目分析,找到技术的关键点,再结合相关的Python语句进行程序设计与编写,在学生逐步解决关键问题的过程中培养他们的程序思维和项目研究意识。

学生通过人脸识别签到项目可以了解人脸检测的方法,学会使用Haar级联分类器对人脸进行框选标注,使用摄像头对人脸进行实时检测,然后提取出人脸的坐标、宽度、高度,建立人脸图像数据集,通过cv2.face_FaceRecognizer.train函数完成训练、生成训练模型。最后通过cv2.face_FaceRecognizer.predict调试人脸的识别,显示相应的签到结果。

项目特色

学生学习在Python中应用OpenCV实现人脸的识别,在项目式学习中利用程序资源理解函数命令的功能,形成自主学习及自主解决问题的能力,体验解决问题的过程,增强信息意识。

教学目标

1.了解人脸识别签到所需的程序流程,学会创建工作簿xlwt函数,写入数据sheet1.write(row,col,data)函数。

2.通过自主探究设计与编写程序,结合实际效果,分析程序的含义,完成人脸识别签到程序的项目研究。

3.在自主探究和反复尝试、修正的过程中,引发深入的思考,初步发展计算思维,培养分析、解决问题的能力与信心。

教学重点与难点

教学重点:理解人脸识别签到的程序流程。

教学难点:使用正确函数编写程序,实现人脸识别相关功能。

教学准备

计算机教室、PPT课件、摄像头、Python软件、OpenCV。

教学过程

一、项目分析

上课签到是我们常见的课堂流程,学科任课教师由于执教班级数量多,经常不能够认识每一个学生,给签到工作带来了一些问题。教师以此引导学生尝试通过以往学习的人脸识别功能,编写一个能够自动识别学生,并在Excel表中进行姓名记录的程序。接下来我们就来分析怎样实现这个功能吧。

二、人脸识别的问题分析

师:要想签到成功,我们需要识别目标的脸部特征。在之前的课程中,我们学习了如何建立人脸图像集并生成训练模型。如果使用训练好的模型识别效果不好,我们应该如何调整呢?那最好的方式是调整人脸图像集,重新训练模型来解决这个问题。当人脸识别达到理想的效果后,就可以开始研究签到功能了(流程如图1所示)。

分析1:实现签到的算法流程

分析预设功能:程序中要加载分类器;训练人脸数据模型;加载写入Excel数据的函数;创建工作簿和表格。

操作步骤:1.载入摄像头拍摄到的图像并转换为灰度图。2.使用Haar级联分类器进行人脸检测,并框选标注。3.调用训练模型,对框选的人脸进行识别,返回识别出来的ID和相似度数据。4.判断识别后写入Excel文件,并显示“写入签到成功”;不能识别则显示“Unknown”。5.判断是否结束。

学生将操作步骤制作成流程图(如图2)。

分析2:如何在Python程序中写入Excel

在Python程序中想要便捷地实现想要的功能,最好的方式就是调用功能函数。应在人脸识别签到功能代码中写入Excel数据的“xlwt.Workbook()”函数。这是一个外部函数,需要事先通过PIP的方式安装后才可以使用,相关命令解释如下。

1.学习创建写入Excel数据的函数

引入xlwt函数语句:import xlwt

创建工作簿命令:f=xlwt.Workbook()

新建一个表格:

sheet1=f.add_sheet("test",cell_overwrite_ok=True)

其中括弧中第一个参数是表格的名称,第二个参数是数据是否被重写。

2.写入数据命令

sheet1.write(row,col,data)

括弧中第一个参数是对应的行,第二个参数是对应的列,第三个参数则是要写入的值。

3.保存Excel文件

f.save("test.xls")

f是创建工作表时的变量名称,如果修改了变量名称,则相应的工作表也要进行修改。例如创建工作簿命令ex=xlwt.Workbook(),则保存文件命令为ex.save("test.xls")

三、探究实践

1.学生打开前一课编写的人脸识别程序,教师指导学生为前一课程序中的Label标签编写程序,使用confidence=cv2.face_FaceRecognizer.predict(src) 语句后,Label返回识别结果。有了识别的结果,计算机就可以清楚地标注当前人脸的标签,学生将标签对应人脸就可以判断出,计算机识别到了哪一个人。

2.教师引导学生学习使用xlwt函数,和初中阶段学习使用的Excel软件一样。首先需要建立一个sheet,然后在这个sheet中写入数据,也就是先要有f=xlwt.Workbook()命令,f就代表了创建工作簿的函数。接下来使用sheet1=f.add_sheet("test", cell_overwrite_ok=True)命令创建一个sheet,当然这里的sheet1也可以是sheet2、sheet3……要注意第二个参数要等于True,否则数据不能够被重写。

3.接下来就是本节课的重点,把返回的Label识别结束写入相应的Excel表格中,在xlwt函数中所有的数据都是从0行、0列开始,如图3所示。我们只要知道在Excel中哪一个表格位置是谁,并使用sheet1.write(row,col,data)命令就可以完成填写签到的功能,例如识别到李××就会返回Label为1,判断返回值是1时,使用命令sheet1.write(1,1,“签到成功”)在Excel的B2位置写入“签到成功”。

4.当前写入的数据在内存中,并没有存储到硬盘上,当判断结束后我们要把内存中的数据写入硬盘文件中,这就需要用到保存文件函数f.save("test.xls")。这里使用f是因为在程序开头写了f=xlwt.Workbook()。“text.xls”其实也可以是自定义的文件名(注意:不要丢掉了扩展名.xls)。需要注意的是,当文件保存成功后并不会有任何的提示,我们可以从本地打开test.xls查看保存结果,但不要在程序运行时打开文件,这样会造成文件存储失败而报错。

四、程序参考代码

实践反思

本节课是学习人脸识别的技术应用,通过分析生活、学习中遇到的问题,找出解决问题的方法,培养学生的逻辑分析能力和学习意愿,在程序模仿、修改、分析、试错的过程中培养学生信息科技的核心素养。

学生善于在学习中进行模仿,能够理解生活中的一些现象,能够正确分辨出生活中的一些常见问题,但创新能力略显不足。教师可以引导学生通过小组合作的方式,形成团队互补,激发创新意识,更好地进行项目探究,提升解决问题的能力。

猜你喜欢
命令人脸识别人脸
满语动词命令
只听主人的命令
人脸识别 等
有特点的人脸
揭开人脸识别的神秘面纱
三国漫——人脸解锁
移防命令下达后
这是人民的命令
基于类独立核稀疏表示的鲁棒人脸识别
马面部与人脸相似度惊人