# Student-behavior-system
学生行为分析系统
---
> Contributor : Memory555
>
> Reference : https://github.com/datamonday/Face-Recognition-Class-Attendance-System
>
> Github Repo :https://github.com/Memory555/Student-behavior-system
>
> Project Post : 2023.06.14
# 1. 项目简介及声明
**🐱👓本项目为大三智慧学习与教育课程设计,非完全原创代码,参考借鉴Github见上方Reference链接**。
🎠本项目使用Python3.8开发。主要包括四部分:
- 前端界面设计:使用Qt Designer(QT5)设计主界面,PyQt5编写界面控件的槽函数。
- 人脸检测算法:使用OpenCV提供的ResNet-SSD预训练模型
- 人脸识别算法:使用OpenFace开源的基于Inception的FaceNet预训练模型。
- 表情识别算法:使用OpenVINO模型库中的emotions-recognition-retail-0003人脸表情模型。
- 信息管理:使用PyMySQL实现学生信息,考勤信息的集中统一化管理。
---
# 2. 环境配置🎡
## 2.1 Anaconda 创建虚拟环境
打开官方地址并下载对应版本:
https://www.anaconda.com/products/individual#Downloads
如果追求轻量化,使用miniconda也可以,只不过没有navigator。
安装完成后,打开 Anaconda Prompt,并按以下步骤输入:
1. 创建虚拟环境 `fr` ,设置Python版本为 3.8.0
```shell
conda create -n fr python==3.8
```
2. 激活虚拟环境
```shell
conda activate fr
```
---
## 2.2 安装所需要的包
在新开的命令行,激活虚拟环境后,按如下步骤操作。
方式一:requirements.txt 安装
该文件是我在本地新建的测试通过的环境中所使用的的包,可以直接安装,避免了一个一个包安装的繁琐步骤。打开命令行并切换到该文件所在的根目录,输入如下命令:
```shell
pip install -r requirements.txt
```
注:本地环境生成requirements.txt的命令:`pip freeze > requirements.txt`
---
方式二:environment.yaml 安装
这是我在本地的conda虚拟环境,实现功能类似 requirements.txt,如果安装了anaconda的话,可以直接安装。需要注意的是该方式是直接创建一个虚拟环境,如果想在已有的环境中进行配置,则只需要按方式一即可。
```shell
conda env create -f environment.yaml
```
注:导出本地的conda环境命令:`conda env export > d:/environment.yaml`
---
## 2.3 安装 dlib
- 官网:http://dlib.net/
- github:https://github.com/davisking/dlib
注意:需要先安装Visual Studio C++的Community版本或者专业版和企业版都可以,否则报错!只安装 installer 无效,仍会报错!如果之前没有安装VS内核,只安装了 installer,打开控制面板,右击修改安装,重启之后生效。
确认已经安装了VS,打开命令行,激活虚拟环境,直接命令安装即可:
```shell
pip install dlib
```
安装比较耗时,大概几分钟.
---
# 3. 系统前端设计🤖
使用 Qt Designer 设计前端界面。
## 3.1 主界面
![在这里插入图片描述](./images/main_window.png)
---
## 3.2 信息采集界面
![在这里插入图片描述](./images/info_window.png)
---
## 3.3 行为分析详情界面
![在这里插入图片描述](./images/detail_window.png)
---
# 4. 系统功能介绍🛵
## 4.1 信息采集功能
通过信息采集界面实现,针对学生的人脸图片建库。
可以手动添加,可以自动采集人脸图像。注意:从自动转为手动方式时,画面会不显示,但不影响采集!
## 4.2 人脸识别简介
深度学习人脸识别流程可以总结如下(图自论文:I. Masi, Y. Wu, T. Hassner and P. Natarajan, "**Deep Face Recognition: A Survey**," 2018 31st SIBGRAPI Conference on Graphics, Patterns and Images (SIBGRAPI), 2018, pp. 471-478, doi: 10.1109/SIBGRAPI.2018.00067.):
![image-20210526000357643](./images/deep_face_recognition_process.png)
总的来说应用人脸识别分为四步:(1)人脸检测,对输入的图片应用人脸检测算法(本项目中使用OpenCV提供的训练好的ResNet-SSD模型)找出人脸的坐标,过程如下图所示:
![image-20210525223208589](./images/face_detection.png)
(2)应用人脸校正算法,对人脸进行校正,将图像进行保持图片相对平行的基本图像变换,例如旋转和缩放 (仿射变换, affine transformations),使得眼睛和嘴巴尽可能靠近中心,即目的是将非正视角的人脸校正到使两眼处于同一水平位置。如下图所示:
![image-20210525223023860](./images/face_alignment.png)
(3)使用人脸识别算法(本文中使用Google在2015年提出的FaceNet,论文 **FaceNet: A Unified Embedding for Face Recognition and Clustering**)对纯人脸图像进行特征提取,FaceNet是将人脸编码为128维的向量,又称为嵌入(embedding),这个属于在自然语言处理领域非常常用。下图是FaceNet的论文中描述的网络架构:
![image-20210525223540033](./images/facenet_architecture.png)
(4)如果是训练的话,上一步已经结束了,但是要应用人脸识别算法,还需要在下游任务上实现分类。故本项目中使用支持向量机(Support Vector Machine,SVM)实现对各人脸128维向量的分类任务。<font color=red> **注意:SVM本质上为二分类器,请保证人脸数据库中至少包含两个人!否则可能导致闪退!**</font>
注:SVM使用scikit-learn提供的[SVC API](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html)实现。
- 一个使用SVM进行人脸识别的官方例程:[Faces recognition example using eigenfaces and SVMs](https://scikit-learn.org/stable/auto_examples/applications/plot_face_recognition.html#sphx-glr-auto-examples-applications-plot-face-recognition-py)
---
## 4.3 表情识别简介
表情识别使用OpenVINO模型库中的emotions-recognition-retail-0003人脸表情模型实现。该模型基于深度学习技术,使用卷积神经网络(CNN)架构进行训练,可以识别出七种不同的表情,包括生气、厌恶、恐惧、开心、平静、伤心和惊讶。
该模型使用的数据集是FER2013(Faces Emotion Recognition),包含35,887张48x48像素的灰度图像,其中28,709张用于训练,3,589张用于验证,3,589张用于测试。该数据集中的每个图像都被标记为七种不同的情感之一。
emotions-recognition-retail-0003模型的输入是一张人脸图像,输出是一个大小为7的向量,每个元素代表一个表情。模型的精度在FER2013测试集上达到了66.49%的准确率,可以在不同的嵌入式设备上进行加速和部署。
该模型适用于多个领域的应用,如虚拟现实、智能医疗、安防监控、智能客服等,可以帮助人们更好地理解和识别人类情感。
此外,OpenVINO是Inter开发的一套深度学习工具库,用于快速部署应用和解决方案。
当我们应用Pytorch、Tensorflow和PaddlePaddle训练好模型之后,就面临了模型部署上线问题。OpenVINO是解决这一问题的优秀工具。
更多内容可查看官方文档介绍:[OpenVINO](https://docs.openvino.ai/cn/2022.1/documentation.html)
## 4.4 查询考勤信息
通过主界面的未到按键,可以查看当前未到学生情况,会在主界面左侧文本框中显示包含迟到和旷课的学生,点击导出按键可见结果导出。
## 4.5 查询未采集学生信息
通过主界面的未采集人员按键,实现获知尚未录入人脸信息的学生。
## 4.6 补签及请假登记
通过主界面的补签和请假按键,输入学号,实现补签和请假登记,并写入数据库。
---
# 5. 数据库存取信息🥗
## 5.1 数据库可视化工具 Navicat
使用该软件是为了方便管理维护信息,也可使用其他数据管理软件。
---
## 5.3 MySQL表格及字段说明
其主界面如下:
学生
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
毕业设计基于Python的学生行为系统--实现人脸检测、人脸识别以及情绪识别与分析功能。本项目是一套个人98分毕业设计系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业,包含:项目源码、项目说明等。该项目可以直接作为毕设使用,项目都经过严格调试,确保可以运行! 本项目使用Python3.8开发。主要包括四部分: 前端界面设计:使用Qt Designer(QT5)设计主界面,PyQt5编写界面控件的槽函数。 人脸检测算法:使用OpenCV提供的ResNet-SSD预训练模型 人脸识别算法:使用OpenFace开源的基于Inception的FaceNet预训练模型。 表情识别算法:使用OpenVINO模型库中的emotions-recognition-retail-0003人脸表情模型。 信息管理:使用PyMySQL实现学生信息,考勤信息的集中统一化管理。
资源推荐
资源详情
资源评论
收起资源包目录
Student-behavior-system-master.zip (80个子文件)
Student-behavior-system-master
emo
weights
opencv_face_detector_uint8.pb 2.6MB
opencv_face_detector.pbtxt 34KB
intel
emotions-recognition-retail-0003
FP32
emotions-recognition-retail-0003.bin 9.47MB
emotions-recognition-retail-0003.xml 38KB
FP16-INT8
emotions-recognition-retail-0003.bin 2.38MB
emotions-recognition-retail-0003.xml 108KB
FP16
emotions-recognition-retail-0003.bin 4.74MB
emotions-recognition-retail-0003.xml 54KB
face_test.py 3KB
execute.py 42KB
model_face_detection
deploy.prototxt 27KB
model_architecture_visualization.py 255B
resnet-ssd-deploy.png 2.44MB
resnet-ssd-deploy2.png 3.16MB
haarcascade_frontalface_default.xml 1.2MB
res10_300x300_ssd_iter_140000.caffemodel 10.17MB
新建 文本文档.txt 4B
model_facenet
openface_nn4.small2.v1.png 227KB
openface_nn4.small2.v1.t7 30.05MB
.idea
vcs.xml 180B
misc.xml 190B
inspectionProfiles
Project_Default.xml 659B
profiles_settings.xml 174B
modules.xml 332B
.gitignore 47B
Face-Recognition-Class-Attendance-System.iml 433B
aws.xml 294B
saved_weights
embeddings.pickle 412KB
le.pickle 291B
recognizer.pickle 698KB
requirements.txt 2KB
environment.yaml 5KB
mysql_table
facerecognition.sql 5KB
images
face_detection.png 100KB
deep_face_recognition_process.png 213KB
main_window.png 33KB
info_window.png 22KB
mysql_table1.png 159KB
mysql_table4.png 97KB
mysql_table3.png 107KB
facenet_architecture.png 35KB
face_alignment.png 285KB
mysql_table2.png 103KB
detail_window.png 17KB
utils2
RandomCheck.py 4KB
Detaillog.py 4KB
microsoft.ttf 20.66MB
InfoDialog.py 9KB
__pycache__
GlobalVar.cpython-38.pyc 1KB
MainUI.cpython-38.pyc 4KB
InfoUI.cpython-38.pyc 3KB
Detaillog.cpython-38.pyc 3KB
GeneratorModel.cpython-38.pyc 3KB
RandomCheck.cpython-38.pyc 4KB
InfoDialog.cpython-38.pyc 6KB
GlobalVar.py 1KB
GeneratorModel.py 5KB
__pycache__
execute.cpython-38.pyc 17KB
ui
infoUI.py 5KB
RandomCheckUI.ui 3KB
RandomCheckUI.py 3KB
detail.py 1KB
mainwindow.ui 14KB
infoUI.ui 8KB
__pycache__
main.cpython-38.pyc 4KB
infoUI.cpython-38.pyc 3KB
mainwindow.cpython-38.pyc 6KB
RandomCheckUI.cpython-38.pyc 2KB
main.cpython-36.pyc 4KB
detail.cpython-38.pyc 1KB
mainwindow.py 12KB
README.md 10KB
logo_imgs
fcb_logo.png 4KB
fcb_logo.jpg 4KB
bkg2.png 10KB
bkg1.png 10KB
info.png 2KB
warn_icon.png 6KB
brain.png 663KB
info_icon.jpg 62KB
共 80 条
- 1
资源评论
m明月Java3
- 粉丝: 2w+
- 资源: 153
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 学校课程软件工程常见10道题目以及答案demo
- javaweb新手开发中常见的目录结构讲解
- 新手小白的git使用的手册入门学习demo
- 基于Java观察者模式的info-express多对多广播通信框架设计源码
- 利用python爬取豆瓣电影评分简单案例demo
- 机器人开发中常见的几道问题以及答案demo
- 基于SpringBoot和layuimini的简洁美观后台权限管理系统设计源码
- 实验报告五六代码.zip
- hdw-dubbo-ui基于vue、element-ui构建开发,实现后台管理前端功能.zip
- (Grafana + Zabbix + ASP.NET Core 2.1 + ECharts + Dapper + Swagger + layuiAdmin)基于角色授权的权限体系.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功