察颜观色——基于 Jetson Nano B01 开发板的表情识别监测系统
1. 所属学校:上海电力大学
2. 比赛方向:OS应用程序开发
3. 队伍编号:T202410256994654 队伍名:观察者
4. 队伍成员:许福权、李杨 指导教师:徐曼
5. 项目介绍:
(1)硬件配置与系统安装:
-
Jetson Nano B01开发板组装:完成了Jetson Nano B01开发板的硬件组装工作,包括设备线路连接、机箱组装和USB摄像头的安装,确保了硬件的完好运行。
-
操作系统与镜像烧录:使用Ubuntu 18.04 LTS操作系统进行系统安装。通过格式化SD卡并将系统镜像烧录到SD卡,成功启动并确保Jetson Nano的基本功能正常运行。
-
硬件检测与驱动安装:完成了对Jetson Nano B01上各硬件设备(包括USB摄像头、Wi-Fi模块等)的检测,确保摄像头、图像处理库等组件能够正常工作。
(2)开发环境配置与优化:
-
PyCharm环境部署:安装并配置了PyCharm 2020版本作为集成开发环境(IDE),并通过安装JDK 11解决了PyCharm的运行问题,确保开发环境能够高效运行。
-
所需库与依赖安装:安装了项目所需的各类库文件,包括PyQt5(前端设计)、OpenCV(摄像头实时捕捉)、facenet_pytorch(人脸识别)等,确保开发工作能够顺利开展。
(3)人脸识别功能开发与优化:
-
facenet_pytorch库初步测试:在开发初期,我们尝试使用facenet_pytorch库进行人脸识别。通过调用其预训练模型,我们验证了人脸区域的检测能力。但在测试过程中,遇到了启动过慢和界面卡顿的问题,尤其是在摄像头实时采集过程中,帧率下降严重,影响了系统的流畅度。
-
更换算法为Haar级联人脸检测:为了解决性能瓶颈,我们决定更换为Haar特征级联算法,这种方法计算量小且高效,适合实时视频流的处理。经过优化,系统在实时视频处理时流畅度明显提高。
-
摄像头配置与参数调整:进一步分析发现问题部分来自于摄像头的配置参数。我们对摄像头的分辨率、帧率等参数进行调整,使其适应Jetson Nano的硬件环境,并通过OpenCV优化了图像捕捉,最终提升了视频流的处理能力和帧率,用户体验显著改善。
(4)表情识别功能开发:
-
CNN模型设计与训练:在表情识别部分,我们采用了卷积神经网络(CNN)模型来进行情绪分类。CNN通过三次卷积池化操作提取图像的特征,并通过全连接层输出8种情绪(开心、悲伤、愤怒、厌恶等)的预测结果。
-
数据集与训练:我们使用了包含55338张图片的数据集进行模型训练,训练过程中使用了数据增强技术(如旋转、缩放、翻转等),并通过交叉验证调优模型超参数,最终达到了90%的准确率,能够高效地识别各种情绪表情。
-
实时表情识别集成:将训练好的CNN模型集成到系统中,通过摄像头捕捉的实时视频流,系统能够准确地识别并分类8种情绪,并在界面上实时显示。
(5)疲惫提醒与休息提醒功能开发:
-
疲惫检测算法:为了有效识别用户的疲惫状态,我们设计了一种基于滑动窗口的算法。通过统计一定时间窗口内的疲惫状态比例,当超过设定阈值时,系统会发出疲惫提醒,提示用户休息。
-
休息提醒功能:用户可以自定义工作时间和休息间隔,当设置的时间达到时,系统会自动提醒用户休息,帮助用户更好地管理工作与休息时间,防止长时间工作带来的身体疲劳。
(6)前端界面设计与优化:
-
PyQt5界面开发:使用PyQt5开发了系统的图形用户界面(GUI)。界面设计简洁直观,包括摄像头画面显示、情绪识别结果、疲惫提醒、情绪报告等模块。用户可以实时查看自己的情绪变化,并根据提示进行调整。
-
实时显示与交互:界面支持摄像头实时视频流的显示,用户可以通过按钮进行设置、调整提醒功能,并查看历史情绪报告,提升了用户的操作便捷性和体验感。
(7)系统优化与性能测试:
-
系统性能优化:通过对Jetson Nano B01硬件的优化,成功提升了系统的响应速度,特别是在摄像头实时视频流处理时,系统运行更加流畅,减少了卡顿现象。
-
功能测试:经过多次测试,系统能够稳定运行,所有功能(表情识别、疲惫提醒、休息提醒等)均能按预期正常工作。
(8)部署与应用:
-
Jetson Nano B01部署:整个系统已成功部署在Jetson Nano B01开发板上,系统通过摄像头实时采集用户面部数据,并通过GPU加速进行深度学习模型推理,快速、精准地识别用户的情绪状态。
-
系统稳定性与性能:系统在Jetson Nano平台上运行稳定,能够高效处理人脸和表情识别任务,确保用户体验良好。