APP下载

基于OpenCV的人脸识别技术课堂签到系统的设计与实现

2022-10-18陈光婷王政谢丹艳

电脑知识与技术 2022年25期
关键词:Python语言人脸识别

陈光婷 王政 谢丹艳

摘要:随着国家对本科生教育的严格要求,课堂考勤方式层出不穷。调查显示,大多学校主要通过老师点名进行课堂考勤,存在费时、费力、低效等问题。基于OpenCV的人脸识别技术课堂签到系统的设计与实现是以Python为开发语言,采用SQLite数据库,使用Django+Celery 作为主体框架,实现了摄像头实时捕捉学生人脸信息,发送给celery 做特征提取和人脸分类,利用机器视觉技术,可以有效地减少签到时间、签到成本,提高课堂效率、自动化程度,加快识别速度,使签到变得更加标准化科学化。

关键词:人脸识别;Python语言;OpenCV;SQLite

中图分类号:TP391      文献标识码:A

文章编号:1009-3044(2022)25-0041-03

开放科学(资源服务) 标识码(OSID) :

1 引言

人工智能理论的深入研究和优秀的深度学习算法的相继出现,我国开始着重于对大数据、深度学习的研究,这极大推动了计算机视觉技术的发展。人脸识别是机器视觉领域的主要研究对象之一,人脸识别验证速度快、识别准确率高、用户体验良好的特点,而且人脸识别具有唯一性、扩展性高、不用接触就可以完成验证的优点,在当今新冠肺炎疫情的大环境下被广泛应用在医疗、金融、教育等多个领域[1]。

人脸识别相对于其他的较为先进的生物识别方式如虹膜识别、指纹识别等具有方便、准确率高、实现简单的优势。用户使用摄像头捕获用户静态人脸的特征信息或者通过动态视频流来捕捉目标用户人脸信息,将捕获的人脸通过特征分析得出人脸信息[2]与系统中数据库人脸信息比对,得出对比信息后从而进行下一步操作处理。依照当前科学技术的研究趋势,人脸识别系统可能广泛运用于生产制造生活中,商业服务要求也会更高。迫切需要简单化人脸识别系统的生产流程,完成更迅速、更可靠的生产流程[3]。

很多高校也开始引进人脸识别考勤机,但是考勤機的数量需要量之大加上安装程序复杂这直接导致签到效率并未提高。本系统的设计与实现改善了人脸识别考勤机的部分缺点,让人脸识别课堂签到变得更加标准化科学化。利用机器视觉技术,可以提高人脸识别的考勤机的自动化程度、识别速度,同时也减少了课堂签到的成本。

2 软件设计

基于OpenCV[4]的人脸识别技术课堂签到系统的平台架构[5]图主要分为五层,分别是用户层、业务层、服务层、数据层、设备层。这5层的逻辑架构图如图1所示。

开发的人脸识别签到系统,可分为4个模块。可分为:人脸信息采集模块、个人中心登录模块、课堂出勤模块、后台管理模块。各个模块的功能结构如图2所示。

人脸识别签到系统的主要有3个角色,分别是:学生、教师和管理员。其中学生需要录入学生个人的人脸信息,同时可以查看自己的签到情况。教师可以查看本班某个时间段内班级的出勤率,管理员要对教师和学生的注册信息进行审核以及添加、修改学生的签到情况。其中管理员系统功能如图3所示。

3 系统实现

3.1 人脸识别课堂签到系统登录

本系统的用户,除了学生在上课之前需要签到之外,所有用户在使用系统时候需要先登录到系统。本系统没有设置学生登录、教师登录或者管理员登录的区别界面、一方面减少代码的开发量,由此可以提高代码的复用性,另一方面,在登录界面将输入的信息传入数据库[6]的时候,每一种角色id作为该角色数据库的主键,可以直接将其区分。用户必须输入正确的用户名以及密码,系统按照用户名的不同进入不同的系统。

3.2 人脸识别课堂签到系统注册

学生在人脸识别课堂签到系统中,需要学生事先注册自己基本信息,注册的要求根据角色的不同相对的注册信息也不一样,学生再注册的时候需要添加三张人脸的图片,分别是正脸人脸照片、左侧脸照片、右侧脸照片。进入127.0.0.1:8000/register中,注册时def register(request)函数中img = request.POST.get("face").replace()函数将摄像头捕捉到的三张人脸图像替换数据库中的原始空白图片,通过face_task中get_face_encoding(imgs)函数,来编码头像的信息,传入的是BytesI0对象或者是数组。在get_face_encoding(imgs)函数中定义获取编码函数,见图片转化成对应的矩阵,然后使用dlib找出人脸,将人脸图片转化成160*160的大小,通过expand_dims(face_pixels,aixs=0)来增加一个图片的数量维度,最后通过face_model.predict()人脸特征提取的神经网络提取人脸特征。注册界面如图4所示。

3.3 学生签到识别

教师在浏览器中打开http://127.0.0.1:8000/进入签到界面,此时系统使用OpenCV.js来动态实时捕捉系统摄像头的画面。当系统摄像头能够正常运行时,教师点击开始签到,系统就会捕捉人脸开始签到。签到系统使用post向后端Django发送请求,在Django[7]接收请求后就可以进行课堂,签到定义函数base_match_faces(face_encoding,known_face_encodings,  known_face_names)是为了传入人脸特征,将捕获到的人脸信息,按照行向量进行处理求出know_face_encodings-face_encoding的范数,给出人脸距离的水平方向的最小值的下标,如果在face_distance数组中该下标的值对应的数值小于6,则将在know_face_names中取出该下标所对应的姓名,load_all_users()函数还会输出其他一些学生的个人信息。在数据库中还会存储学生的签到的相关的基本信息。签到界面如图5所示。

3.4 学生签到查询

教师学生登录个人中心,在个人中心可以查询自己在某个时间段内的签到情况,教师可以查询自己的课程的签到情况,作为管理员可以通过模糊搜索,搜索整个学校的出勤率。查询界面如图6所示。

3.5 人脸识别课堂签到系统管理功能

在本系统中,管理员有且只有一位,不可注册,一方面防止管理员过多,同时对数据进行操作的时候会出现冲突,另一方面保护了数据的安全性。管理员可以对教师、学生这两种角色进行批量删除、指定修改以及对注册学生和教师信息进行审核,管理员界面如图7、图8所示。

4 人脸识别课堂签到系统运行过程

使用人脸识别课堂签到系统需要事先将人脸信息录入数据库,同时将学生基本信息录入,在数据库中创建唯一学生人脸信息库。在数据库中每一个人脸信息唯一对应一位学生信息。

启动人脸识别课堂签到系统对测试人脸进行测试,如果识别成功则显示签到成功,系统将生成签到记录,如果没有反应表示识别失败。该检测检验人脸在有无遮挡(如图9) 、是否露出嘴巴(如图10) 、不同识别姿势(如图11) 、光线较暗(如图12) 等情况下人脸检测情况。

在对人臉识别中可能出现的学生签到情况进行测试,当学生在签到过程中如果对半侧脸进行遮挡,系统不会检测到人脸的存在。如果学生佩戴口罩进行签到,系统会检测到人脸,但是无法将捕捉的人脸信息与数据库中的人脸信息比对,从而无法完成签到。学生正脸签到,则会显示签到成功,并显示学生签到信息。学生在光线较弱的条件下,使用侧脸进行人脸识别签到,发现仍然可以签到成功。

5 结束语

基于OpenCV的人脸识别课堂签到系统的设计与实现,通过对课题背景的研究发现人脸识别可运用在课堂签到中,近几年来自从卷积神经网络算法的出现,机器视觉在各个领域运用广泛并且发挥着举足轻重的作用。本文介绍了利用OpenCV开源库将Python、SQLite等技术结合起来实现了人脸识别课堂签到系统的开发。

系统开发成功之后还需完善,后期可以将人脸识别签到系统与学校的教务系统相连,老师可以在教务系统中更为方便地查看签到记录,还可以将学生的签到记录作为平时成绩的重要依据。

参考文献:

[1] 胡娟.人脸识别技术在高校智慧校园管理中的应用现状[J].电脑知识与技术,2021,17(18):6-8.

[2] 肖阳.基于OpenCV的人脸识别的算法研究与实现[D].武汉:湖北工业大学,2018.

[3] 董佳慧,陈蕾,杨凯,等.基于OpenCV的学生人脸识别签到系统[J].电脑知识与技术,2021,17(4):179-180,183.

[4] 周宇.基于OpenCV-Python的图像分割技术的设计和应用[J].电子世界,2018(3):116-117.

[5] 童乐.基于Django开发框架的在线教育系统设计与实现[D].武汉:华中师范大学,2020.

[6] 韩贝.SQLite数据库研究与应用[D].南京:南京邮电大学,2019.

[7] Eldarion Media Contact;Eldarion(R)Open Sources its DevOps Platform as a Service for Django and Python[J].Computers,Networks & Communications,2016.

【通联编辑:谢媛媛】

猜你喜欢

Python语言人脸识别
人脸识别 等
揭开人脸识别的神秘面纱
基于类独立核稀疏表示的鲁棒人脸识别
基于K-L变换和平均近邻法的人脸识别