申请会员ID:Hao_yiwen
1、申 请 I D:Hao_yiwen2、个人邮箱:yiwen.hao@outlook.com
3、原创技术文章:
本人是学生,希望通过加入论坛学习更多编程相关知识
在线学习疲劳检测提醒软件
一、 引言
个人计算机、平板电脑在现代教育中扮演着越来越重要的角色,新冠疫情更是将在线学习推上了风口浪尖。然而长时间使用电子设备容易造成学习疲劳、注意力减退,出现反应迟缓、走神、瞌睡等情况,如果不及时休息,会严重影响学习效率。
同时,大量使用电脑也对学生们的视力造成了不可忽视的影响。长时间、近距离观看电脑屏幕容易造成眼睛疲劳、影响视力。国家卫健委数据表明:我国儿童青少年总体近视率已经超过 53%。全国学生体质与健康调研结果也显示,我国小学生近视比例超过 45%,初中生近视比例超过 74%,高中生近视比例超过 83%,大学生近视比例已经接近 90%。
由于网上各种学习资料、培训课程非常丰富,加上疫情影响,最近几年我使用电脑越来越频繁,每次时间也越来越长。渐渐地,我经常发现自己上网课开始时精神还很集中,但时间长了后记住的内容就越来越少。此外,有时候屏幕上字体太小或颜色不显著,要凑很近才能看清。虽然爸爸、妈妈时常提醒我注意保持距离,但眼睛还是会不知不觉地向屏幕越靠越近,视力因此下降得很厉害,除了近视还有严重的散光。
我加入浦东新区少科院的机器人社团后学会了 Python 编程,于是想到是不是能设计一个智能软件时刻检测自己观看屏幕时的疲劳状态:学习累了或者连续观看屏幕的时间太长了就自动提醒我休息一会儿,而距离太近时就提醒我保持距离。
二、 研究、设计内容
根据自己平时在线学习的情况并结合遇到的种种问题,我确定了以下研究和设计内容:
1、 研究学习疲劳的类型、特征和相互之间的区别、联系;
2、 研究学习疲劳状态与头部、面部动作之间的关系;
3、 研究视觉疲劳的判断标准;
4、 研究使用计算机视觉检测判断学习疲劳和视觉疲劳的软件方法及步骤和流程;
5、 设计实现疲劳检测软件,完成代码编程
6、 研究测试方法并通过调试、测试改进软件、完善设计,使软件实用、可靠。
三、 研究方法
通过在网上搜索相关资料,我了解到 OpenCV 是一个结合了图像/视频输入输出、视觉识别和机器学习、统计分析等强大功能的开源计算机视觉库,可以在 Linux、Windows、Android、 Mac OS 等主流计算机平台上通过调用接口函数快速处理图像、完成人脸等物体的检测识别和各种复杂功能,让计算机有能力完成过去只有靠人才能实现的任务。而 Dlib 是一个深度学习工具,能很好地支持人脸特征提取,有已经训练成熟的人脸特征模型可供使用。
因此我决定以 OpenCV 为基础设计一个人脸检测软件,从电脑摄像头中获取屏幕前人脸的视频图像,实时采集到电脑里,然后调用 Dlib 模块检测眼睛、嘴巴的开合程度和头部的仰角,连续长时间自动统计记录眨眼、打哈欠和点头等动作的频率、时长占比及人脸与屏幕之间的距离,当判断学习疲劳程度达到一定阈值后通过语音接口将提示休息的文字从电脑的扬声器、耳机中播放出来,提醒学生注意休息和眼睛保健;当眼睛和屏幕间的距离小于设定阈值后则用语音提醒学生保持足够的用眼距离。
四、 结构组成
课题设计我使用了父亲给我的联想 T430 型个人电脑,它的屏幕上方有一个内嵌的摄像头,可以用来采集视频。电脑底部两侧各有一个扬声器,可以用来播放提醒语音。
考虑到自己已有的软件基础,在从网上搜罗了各种人脸检测识别的软件资源、工具和参考代码后,我选择使用相对简单易学、资源丰富的 Python 语言设计人脸检测软件,配合电脑自身的硬件资源实现视频的采集(输入)和提醒语音的播报(输出)。通过调用 opencv-python计算机视觉模块和 dlib 库,不需要从头开始编写模式识别程序和机器学习算法就可以使用常见的计算机视觉和图像分析识别功能,将软件设计的难度和代码编程的工作量减少到最低。
我使用的是 3.8 版本的 python 解释器和配套的 IDLE 学习开发环境。在下载安装 opencv- python 模块和 dlib 库后,代码的开头先分别使用 import cv2 和 import dlib 语句导入 OpenCV及 Dlib 模块,接着就可以在后续代码中直接调用相关的计算机视觉检测和分析函数。
五、 设计方法
为了找到能够用于判断学习疲劳的关键特征,我上网检索了相关文献资料,了解到人眼睁开的程度和眨眼行为与人的疲劳程度有显著的相关性且比较容易识别判断,同时打哈欠和点头也是人在瞌睡时典型的可观测动作特征。在下载和详细研究学习了《基于深度学习的学生课堂状态检测算法与应用》等几篇论文后,我最终确定了以检测眼睑、嘴巴开合度和判断眨眼、哈欠、点头时间占比为主要手段的疲劳检测方法,同时检测人脸与屏幕间的距离并累计观看时长辅助判断视觉疲劳。
为了从视频图像中提取人脸及眼部特征,我找到了已经公开且比较成熟的面部 68 标识点预测模型(shape_predictor_68_face_landmarks.dat),这样就不需要自己搜集大量人脸图片、重新进行数据集的机器学习和训练,而仅需使用 Dlib 算法库加载该预测模型,就可以从图像中识别出人脸的 68 个关键特征点。
找到关键检测方法后,就可以开始着手设计检测提醒软件了。采集人脸视频图像、判断人脸与屏幕间的距离我使用了笔记本电脑已经配备的内置摄像头。对于不带内置摄像头的台式电脑,为了能使用检测软件可以外接一个 USB 接口的摄像头。只要将摄像头固定在屏幕顶部边缘,就可以粗略认为人脸距摄像头的距离就是眼睛观看屏幕的距离。
软件先使用 VideoCapture 方法打开摄像头、开始连续捕捉视频,然后用视频流的 read 方法将视频的每一帧画面保存为一幅图像。考虑到不同摄像头的分辨率不同,为了得到统一的识别结果,首先需要将整幅图像缩放到固定的宽度。接着使用 Dlib 的预测器通过预先加载的 68标志点模型找出人脸在图像中的位置并得到双眼和嘴部的关键特征点,计算不同特征点连线长度间的比例就可以得到眼部和嘴部的长宽比即开合度,判断开合度的变化和持续时间可以确定是否有眨眼和打哈欠的动作。同时,通过使用 Dlib 计算人脸在摄像头中成像的畸变还能得到头部的俯仰角度,检测角度的变化和动作时间则可以判断是否有瞌睡时的点头动作。统计一段时间内的双眼开合度和眨眼、打哈欠动作数据就能判断出疲劳程度。此外,计算双眼间距能成反比例地得到人脸与摄像头之间的距离。当双眼间距大于一定限值时,就可以判断人眼距离屏幕过近,进而采取提示措施。
同时,将人脸在视频中持续出现的时间累计后,可以计算得到人眼连续观看屏幕的时长,与设定的限值比较后就可以判断是否需要提醒学生休息。
语音提示我找到不少方法。其中,比较简单实用的是直接调用 Windows 具备的 Win32 语音应用编程接口(SAPI):用 Dispatch 方法初始化该接口后,只需要再调用 Speak,几行代码就能实现文字转语音(TTS)的全部功能。合成后的语音信号经由音频放大后可以通过电脑内置的扬声器或外接的耳机(如果学生在用耳机听课)转为人耳能听到的声音波动,达到提醒的目的。
六、 创新点
与家长、老师在一旁监督、提醒对比,使用计算机软件判断学习和用眼疲劳简单方便、不需要花费人力、学生不容易分心,也不会对使用者造成心理影响,能有效帮助网课较多的学生合理安排休息、保护视力和提高学习效率。
七、 参考文献
史雨,辛宇,袁静.基于深度学习的学生课堂状态检测算法与应用.人工智能与机器人研究,2021.
张敬然.基于面部识别技术的在线学习行为深度感知方法研究与应用.南京师范大学,2018.
邓金城.基于人脸识别技术的驾驶员疲劳检测方法研究.重庆大学,2005.
抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。
页:
[1]