一种在线学习专注度识别方法

allin2022-09-03  186



1.本发明涉及计算机视觉分析领域,特别涉及一种基于yolov5和dlib模型的学生在线学习专注度识别分析系统。


背景技术:

2.目前,随着智能电子设备的普及以及教育形式的多元化,网络授课这种学习方式逐渐被引入高校的教育模式中,其中,学生的疲劳与注意力分散成为影响网络教育效果的主要因素。传统的课堂在获取教学反馈方式上耗时耗力,教师既要兼顾课堂所授内容的质量,同时又要监管学生的听课认真情况,就会造成教学质量的下降,并且教师无法时刻关注每名学生的上课状态。网课方便师生的同时,也存在着因为条件限制,对上网课的学生无法监管的问题。网课的教学方式仅仅是观看视频,而老师无法像传统课堂教学那么实时了解每个学生的听课效果和专注程度,老师无法监控或得到学生的听课反馈,导致学生上网课的听课质量大打折扣。因此,如何通过计算机视觉技术的方式自动的识别学生的网课过程中的专注度,对于网络教学来说至关重要,现有技术中尚没有相关文献公开。


技术实现要素:

3.本发明的目的在于克服现有技术的不足,提供一种基于yolov5和dlib模型的学生在线学习专注度识别分析方法,用于对学生在线学习的专注度进行自动识别。
4.为了实现上述目的,本发明采用的技术方案为:
5.一种在线学习专注度识别方法,包括如下步骤:
6.构建人体疲劳状态检测模块和人体行为识别模块;
7.通过人体疲劳状态检测模块对采集的人脸数据进行识别并检测出人体的疲劳程度;
8.通过人体行为识别模块对采集的用户在线学习的图像数据进行识别并检测出用户的学习分心与否。
9.所述人体疲劳状态检测模块首先分别获取左右眼和嘴部面部标志的索引,再通过opencv软件库中的函数类对视频流进行灰度化处理,检测出人眼和嘴巴的位置信息,然后计算出包括眼睛开合度、眨眼次数,嘴巴开合度,打哈欠频率等数据,构造用于评价疲劳程度的函数并将其与设定阈值比较从而检测出人体的疲劳程度。
10.人体疲劳状态检测模块包括眼睛检测步骤、嘴巴检测步骤和疲劳判断步骤,其中眼睛检测步骤包括:
11.计算左右眼的ear值,ear值即为眼睛长宽比的值,并使用左右两眼的平均值作为最终的ear值;如果连续两帧的ear值都小于设定的阈值,则表示进行了一次眨眼活动;统计在设定视频流总帧数roll中符合闭眼特征的帧数rolleye;
12.其中嘴巴检测步骤包括:计算嘴巴的mar值,mar值即为嘴巴长宽比的值;连续两帧图像中嘴巴的mar值大于设定的阈值则认为在进行张嘴打哈欠,统计在设定视频流总帧数
roll中符合打哈欠的帧数rollmouth;
13.疲劳判断步骤包括:基于眼睛检测步骤检测的rolleye值和嘴巴检测步骤中rollmouth值判断疲劳程度。
14.疲劳判断步骤包括中疲劳程度的判断采用构造函数perclos来判断,其中构造函数设定疲劳阈值p1,当perclos值大于p1则判断为疲劳状态,否则判断为清醒状态。
15.计算左右眼的ear值包括:步骤1:打开摄像头,获取学生的面部图像,再从视频流进行循环,读取图片,并对图片做维度扩大,并进灰度化处理;
16.步骤2:预先训练dlib库中用于检测人脸区域的界限bounds的关键函数dlib.get_frontal_face_detector();和dlib库中用于获得脸部特征位置检测器并输出特征点坐标的关键函数dlib.shape_predictor(predictor path);
17.使用d1ib.get_frontal_face_detector(gray,0)进行脸部位置检测,循环脸部位置信息,并使用dlib.shape_predictor(gray,rect)获得脸部特征位置的信息。
18.步骤3:提取帧图像检测人脸,根据脸部特征位置信息对眼部进行粗定位后进行肤色分割。通过肤色分割更好地定位人眼位置,利用眼睛与皮肤的颜色不同,图像处理的过程中会产生数据的跳跃,从而进行分割;
19.步骤4:将脸部特征信息转换为数组array的格式(用于以数组格式来存储眼睛坐标嘴巴坐标,方便后续的处理的提取),并提取左眼和右眼坐标,眼部精确定位(粗定位确定一下各个部位的轮廓,精准定位直接确定坐标位置,线粗定位获取位置找到眼睛然后在精确定位获取对应的坐标位置);
20.步骤5:构造函数计算左右眼的ear值,其中ear值为左右两眼的平均值作为最终的ear值,其中一个眼睛的ear值计算公式为:
[0021][0022]
其中p
38
.y、p
39
.y、p
42
.y、p
41
.y分别为68点人脸特征点中的点38、39、42、41的纵坐标,p
37
.x、p
40
.x为68点人脸特征点中的37、40的横坐标;
[0023]
分别计算两个眼睛的ear值取平均后为最终的ear值。
[0024]
计算嘴巴的mar值包括如下步骤:
[0025]
步骤(1):提取帧图像检测人脸,嘴部粗定位进行肤色分割,根据嘴巴颜色与皮肤颜色的差别大致画出嘴部轮廓,通过图像灰度化之后,由于颜色不同灰度的深浅也不同,可以直接判断深浅从而画出轮廓从而实现了快速的粗定位嘴巴的位置,更好地定位人嘴部位置,肤色分割是指嘴巴与皮肤的颜色会不同,图像处理的过程中就会看到数据的跳跃,从而进行分割);
[0026]
步骤(2):将脸部特征信息转换为数组array的格式(该数组中按照68个人脸特征点的位置进行位置坐标信息的赋值和保存,可以精准定位各个位置),并提取嘴部位置坐标,嘴部精确定位(根据数组中储存的坐标信息来精准定位,粗定位画出轮廓,精准定位给出坐标);
[0027]
步骤(4)、构造函数计算mar值,mar值计算函数如下:
[0028][0029]
其中p
51
.y、p
53
.y、p
57
.y、p
59
.y为68点人脸特征点中的点51、59、53、57的纵坐标,p
49
.x、p
55
.x为68点人脸特征点中的点49、55的横坐标。
[0030]
所述人体行为识别模块采用yolov5神经网络模型对采集的图像中的每帧图片中出现的物体进行识别并根据识别的物体来判断学生的学习的专注状态。
[0031]
采用预先训练的、修改权重后的yolov5神经网络模型来识别采集的图像中的物体,预先标定出手机、香烟、水杯三种物体,并在识别到任一物体后判断为学习分心状态。
[0032]
按照一定周期将疲劳程度结果和分心状态结果结合来评价专注度并给出专注度评价。
[0033]
本发明的优点在于:本发明能够有效地实时检测线上教育学生的注意力状态,分析学生的听课专注度情况,是更好衡量网络教学质量的重要指标,有助于提高网课教学质量,更好地拓展素质教育线上教学。通过计算机视觉技术,在网课中实时对学生的行为动作进行识别分析记录,并与人体面部表情中的表现相结合,可以实现对线上课堂学生的学习专注度分析,让教师和家长更直观且省时省力地了解到学生该堂课的整体听课情况,对辅助教师进行教育教学方式的改进有其重要参考价值及意义。
附图说明
[0034]
下面对本发明说明书各幅附图表达的内容及图中的标记作简要说明:
[0035]
图1为本发明识别方法流程图;
[0036]
图2为本发明dlib库中的人脸的68个特征点模型示意图;
[0037]
图3为本发明yolov5模型的网络结构可视图;
[0038]
图4为本发明图4focus结构的具体内容可视化;
[0039]
图5cbl结构的具体内容可视化示意图;
[0040]
图6csp1_x结构的具体内容可视化示意图;
[0041]
图7spp结构的具体内容可视化示意图;
[0042]
图8csp2_x结构的具体内容可视化示意图;
[0043]
图9res unit结构的具体内容可视化示意图;
具体实施方式
[0044]
下面对照附图,通过对最优实施例的描述,对本发明的具体实施方式作进一步详细的说明。
[0045]
本技术主要针对现有网课中学生注意力的识别监控,通过图像识别、计算机视觉的方式获取学生的特征状态以此来判断学生的专注度,从而实现了为网课、网络教学提供老师了解学生状态的依据。其具体方案如下:
[0046]
本发明提供了一种基于yolov5和dlib模型的学生在线学习专注度分析系统,其目的是为了解决背景中提到的人们容易忽略的学生行为动作识别问题,以及学生的在线学习专注度无法有效分析的问题,从而有效地实时检测线上教育学生的注意力状态。一种在线
学习专注度识别方法,包括如下步骤:
[0047]
构建人体疲劳状态检测模块和人体行为识别模块;
[0048]
通过人体疲劳状态检测模块对采集的人脸数据进行识别并检测出人体的疲劳程度;
[0049]
通过人体行为识别模块对采集的用户在线学习的图像数据进行识别并检测出用户的学习分心与否;
[0050]
基于疲劳程度以及用户分析程度来判断学生的专注度。
[0051]
其中人体疲劳状态检测模块包括:
[0052]
首先分别获取左右眼和嘴部面部标志的索引,再通过opencv软件库中的函数类对视频流进行灰度化处理,检测出人眼和嘴巴的位置信息,然后计算出包括眼睛开合度、眨眼次数,嘴巴开合度,打哈欠频率等数据,构造用于评价疲劳程度的函数并将其与设定阈值比较从而检测出人体的疲劳程度。
[0053]
其中人体行为识别模块采用yolov5神经网络模型对采集的图像中的每帧图片中出现的物体进行识别并根据识别的物体来判断学生的学习的专注状态。针对yolov5神经网络,其采用预先训练的、修改权重后的yolov5神经网络模型来识别采集的图像中的物体,预先标定出手机、香烟、水杯三种物体,并在识别到任一物体后判断为学习分心状态。
[0054]
按照一定周期将疲劳程度结果和分心状态结果结合来评价专注度并给出专注度评价。以150帧图像为例,在150帧图像中获取得到的疲劳状态和分心状态来判断用户的专注度,当两者可以采用或的关系,当任一满足即处于疲劳状态或分心状态都可以判断此时用户不专注,而给出不专注或专注度不足的提醒。
[0055]
如图1所示,首先调用opencv的vudeicapture()函数逐帧读取视频获得每一帧的图像;然后分别通过人体疲劳检测模块和人体行为识别模块分别检测疲劳和人体分心;
[0056]
人体疲劳状态检测模块使用dlib提供shape_predictor_68_face_ladmarks模型分别获取眼睛和嘴巴面部标志的索引,再通过opencv软件库中的函数类对视频流进行灰度化处理,检测出人眼和嘴巴的位置信息,然后计算出包括眼睛开合度、眨眼次数,嘴巴开合度,打哈欠频率等数据,构造用于评价疲劳程度的函数并将其与设定阈值比较从而检测出人体的疲劳程度。
[0057]
人体行为识别模块通过yolov5修改权重之后的模型来识别出物体从而判断学生的行为状态,包括玩手机、抽烟和喝水等状态,若包括上述任一或多个时判断为分心,此时还可以通过弹窗给出提醒不要分心。
[0058]
基于上述疲劳状态和分心状态两者结合对学生上课专注度进行分析,每150帧给出一个判定结果,判断出学生的学习专注度。
[0059]
本发明的实施例提供的基于yolov5和dlib模型的学生在线学习专注度分析系统。其中该系统主要分为两个模块:一块是基于dlib库中的人脸识别68特征点检测模块,首先分别获取左右眼和嘴部面部标志的索引,再通过opencv中的videocapture类函数(opencv是基于bsd许可(开源)发行的跨平台计算机视觉和机器学习软件库)对视频流进行灰度化处理,检测出人眼和嘴巴的位置信息,接着计算出包括眼睛开合度、眨眼次数,嘴巴开合度,打哈欠频率等数据,构造函数并设定阈值检测出人体的疲劳程度,即人体疲劳状态检测模块。另一个模块是基于修改权重之后的yolov5训练出的四种模型选取一种来识别每帧图像
中出现的物体,并记录物体出现的帧数,从而判断学生是否有分心动作以及分心动作的时长的人体行为识别模块。最后两个模块结合给出学生的疲劳状态数据以及分心状态数据,即可判断出学生上课专注度情况。人体疲劳状态检测模块包括眼睛检测步骤、嘴巴检测步骤和疲劳判断步骤,其中眼睛检测步骤包括:
[0060]
计算左右眼的ear值,ear值即为眼睛长宽比的值,并使用左右两眼的平均值作为最终的ear值;如果连续两帧的ear值都小于设定的阈值,则表示进行了一次眨眼活动;统计在设定视频流总帧数roll中符合闭眼特征的帧数rolleye;
[0061]
其中嘴巴检测步骤包括:
[0062]
计算嘴巴的mar值,mar值即为嘴巴长宽比的值;连续两帧图像中嘴巴的mar值大于设定的阈值则认为在进行张嘴打哈欠,统计在设定视频流总帧数roll中符合打哈欠的帧数rollmouth;
[0063]
疲劳判断步骤包括:基于眼睛检测步骤检测的rolleye值和嘴巴检测步骤中rollmouth值判断疲劳程度。
[0064]
人体疲劳状态检测模块和人体行为识别模块通过深度学习神经网络识别学生学习状态,每150帧画面会输出一次学生学习状态的检测效果。
[0065]
人体疲劳检测模块(检测眼睛相关的数据)包括如下步骤:
[0066]
步骤s1:使用dlib库中的关键函数dlib.get_frontal_face_detector()获得脸部位置检测器,这是dlib内置的人脸检测算法,使用hog pyramid,检测人脸区域的界限(bounds)。
[0067]
步骤s2:使用dlib库中的关键函数dlib.shape_predictor(predictor path)获得脸部特征位置检测器,这是dlib用来检测一个区域内的特征点的算法,并输出这些特征点的坐标,它需要一个预先训练好的模型(通过文件路径的方法传入,可以预先根据需求训练),才能正常工作。
[0068]
步骤s3:打开摄像头,获取学生的面部图像,再从视频流进行循环,读取图片,并对图片做维度扩大,并进灰度化。
[0069]
步骤s4:使用dlib.get_frontal_face_detector(gray,0)进行脸部位置检测,循环脸部位置信息,并使用dlib.shape_predictor(gray,rect)获得脸部特征位置的信息。
[0070]
步骤s5:提取帧图像检测人脸,眼部粗定位进行肤色分割。通过分割可以更好的定位人眼的位置,其采用眼睛和皮肤的颜色会在图像灰度后灰度程度不一致来进行确认,其表现为图像处理的过程中会看到数据的跳跃,从而根据数据条约的点进行分割。
[0071]
步骤s6:将脸部特征信息转换为数组array的格式,并提取左眼和右眼坐标,眼部精确定位;其中数组array用于按照数据的格式来存储保存眼睛坐标嘴巴坐标,并提取左眼和右眼坐标,眼部精确定位,粗定位确定一下各个部位的轮廓,然后可以更加方便的实现精准定位直接确定坐标位置;粗定位:根据嘴巴颜色与皮肤颜色的差别大致画出嘴部轮廓,原理是图像灰度化化之后,由于颜色不同灰度的深浅也不同,可以直接判断深浅从而画出轮廓。目的:更好地定位人嘴部位置,肤色分割:嘴巴与皮肤的颜色会不同,图像处理的过程中就会看到数据的跳跃,从而进行分割;array数组中包含了68个人脸特征点的位置坐标信息,可以精准定位各个位置。
[0072]
步骤s7:构造函数计算左右眼的ear(eye aspect ratio)值,也就是眼睛长宽比的
值,并使用两眼的平均值作为最终的ear值。如果连续两帧的ear值都小于设定的阈值,则表示进行了一次眨眼活动。统计闭眼特征count=count+1,当count超过阈值且下一帧的闭眼特征消失,保存count到rolleye,rolleye为符合闭眼的帧数,然后count清0回到步骤s5,否则的话也直接转回步骤s5,检查下一帧。
[0073]
眨眼作为一种无意识的生物特征,一般健康人眨眼间隔2s至10s,眼睛闭合持续时间100ms至400ms。利用健康人的眨眼频率为基准,通过计算单个学生的眨眼频率,判断其注意力状态,从而判断学生的疲劳状态。注意力不集中的明确表现是频繁眨眼(眨眼间隔变短)和长时间闭眼(眼睑闭合时间变长),当学生出现频繁眨眼和/或长时间闭眼时,可以判断学生注意力不集中,处于疲劳状态。
[0074]
计算眼睛长宽比eye aspect ratio,ear。当人眼睁开时,ear在某个值上下波动,当人眼闭合时,ear迅速下降,理论上会接近于零,所以我们认为当ear低于某个阈值时,眼睛处于闭合状态。为检测眨眼次数,需要设置同一次眨眼的连续帧数阈值。眨眼速度比较快,一般1~2帧就完成了眨眼动作。两个阈值都要根据实际情况设置。
[0075]
当前帧两双眼睛宽高比与前一帧的差值的绝对值(ear)大于0.2,则认为是闭眼状态,(图2为68点人脸特征点图,可以看到37-42为左眼,43-48为右眼)通过模型可以算出点37-42以及点43-48的位置坐标,基于坐标即可实现开合度的计算。
[0076]
左眼开合度可以通过以下公式得到(右眼同理):
[0077][0078]
通过计算点38、39、42、41的纵坐标(p
38
.y、p
39
.y、p
42
.y、p
41
.y)以及点37、40的横坐标(p
37
.x、p
40
.x)来计算眼睛的睁开度。通过一个阈值确定眼睛是睁开还是闭上。也可以将这个值与初始的值的比值作为睁开度,根据不同程度来进行比较。睁开度从大到小为进入闭眼期,从小到大为进入睁眼期,计算最长闭眼时间(可用帧数来代替),闭眼次数为进入闭眼、进入睁眼的次数。
[0079]
人体疲劳检测模块(检测嘴巴相关的数据)包括如下步骤:
[0080]
步骤s8:提取帧图像检测人脸,嘴部粗定位进行肤色分割;
[0081]
步骤s9:将脸部特征信息转换为数组array的格式,并提取嘴部位置坐标,嘴部精确定位;
[0082]
步骤s10:类似眨眼检测,构造函数计算mar(mouth aspect ratio)值,连续两帧的mar值大于设定的阈值则认为在进行张嘴打哈欠。统计哈欠特征count=count+1,当count超过阈值且下一帧的哈欠特征消失,保存count到rollmouth,rollmouth为符合打哈欠的帧数,然后count清0回到步骤s8,否则的话也直接转回步骤s8,检查下一帧。
[0083]
打哈欠也是人体的一种本能反应,它像心跳、呼吸一样,不受人的意志所控制。当人们产生困倦的时候,就会有打哈欠的动作,而正常人一次打哈欠的时间大约为6秒钟,当学生出现频繁打哈欠时,可以判断学生注意力不集中,处于疲劳状态。
[0084]
计算嘴巴长宽比mouth aspect ratio,mar。当人嘴巴张开时,mar在某个值上下波动,当人嘴巴闭合时,mar值理论上会接近于零。所以我们认为当mar高于某个阈值时,眼睛处于张开状态。为检测打哈欠次数,需要设置同一次打哈欠的连续帧数阈值。打哈欠速度比较慢,所以两个阈值都要根据实际情况设置。
[0085]
以下公式同眼睛相类似的方法求嘴巴开合度:
[0086][0087]
通过图2的68点人脸特征点图得知,打哈欠可利用嘴巴处通过计算点51、59、53、57的纵坐标(p
51
.y、p
53
.y、p
57
.y、p
59
.y)以及点49、55的横坐标(p
49
.x、p
55
.x)来计算嘴巴的张开度。通过嘴巴开合度来判断是否张嘴及计算嘴巴张开时间(可用帧数来代替),从而确定人是否是在打哈欠,同时这个阈值应当合理,应经过大量实验,能够与正常说话或哼歌区分开来。
[0088]
步骤s12:通过上述步骤检测所得的rollmouth值和rolleye值来计算在过去的150帧中的学生的perclos的值,构造计算perclos值的函数如下,roll值为判断的视频流总帧数,设为150。将得到的perclos值与设定的阈值相比较,若大于阈值,则判断为疲劳状态,系统会作出提醒,若小于阈值则判断为清醒状态。
[0089][0090]
人体行为识别模块采用yolov5神经网络模型进行识别,如图3-9,yolov5的模型主要可以分为四大模块:第一个模块是图片输入端,第二个模块backbone也就是模型的主干部分,第三个模块neck也就是模型的加强特征提取网络,第四个部分也就是prediction也就是模型的预测输出端。
[0091]
yolov5的主要思想是将得到的图片划分出大中小三种大小的方格,每个方格的左上角顶点负责检测该方格中存不存在物体的中心点,从而检测大中小三种不同尺寸的物体。
[0092]
yolov5通过检测摄像头扑捉到的每帧图片中出现的物体,从而来判断学生的行为动作,例如检测出图片中存在手机就会判断出学生正在使用手机,出现水杯就会判断出学生正在进行喝水的动作,因为电脑摄像头中一般只会拍摄到学生的胸部以上部位,不会拍摄到桌面,也就减少了桌面存在的东西对系统模型判断的影响。
[0093]
主干(backbone)部分的步骤为:(详见图3)
[0094]
步骤s13:从视频流中读取图片,输入yolov5网络模型,yolov5的输入端采用了对图片进行mosaic数据增强的方式。也就是随机使用4张图片,随机缩放,再随机分布进行拼接,大大丰富了检测数据集,特别是随机缩放增加了很多小目标,让网络的鲁棒性更好。
[0095]
步骤s14:yolov5对输入的图片进行自适应缩放,先计算缩放比例,再计算缩放后的尺寸,接着计算需要填充进图片的黑边数值对图片进行填充,将图片尺寸转为608*608*3。
[0096]
步骤s15:图片进入yolov5网络结构的主干部分,原始608
×
608
×
3的图像输入focus结构,采用切片操作,先变成304
×
304
×
12的特征图,再经过一次64个卷积核的卷积操作,最终变成304
×
304
×
64的特征图。(详见图4)
[0097]
步骤s16:将得到的图片信息输入卷积层,通过一次128个卷积核的卷积层进行特征提取,变成152
×
152
×
128的特征图。
[0098]
yolov5中csp1_x结构(详见图6、图9)应用于backbone主干网络,另一种csp2_x(详
见图8)结构则应用于neck加强特征提取结构中。
[0099]
步骤s17:将得到的特征图经过csp1_1网络结构,也就是跨阶段局部网络,将feature map拆成两个部分,一部分进行卷积操作,另一部分和上一部分卷积操作的结果进行张量拼接。该网络结果缓解了以前需要大量推理计算的问题,通过将梯度的变化从头到尾地集成到特征图中,增强了cnn的学习能力,能够在轻量化的同时保持准确性,并降低计算瓶颈和内存成本。
[0100]
步骤s18:将得到的特征图通过一次卷积层(详见图5),此时得到76
×
76
×
256的特征图。
[0101]
步骤s19:将得到的特征图经过csp1_3网络结构。将此时得到的特征图记为t1。
[0102]
步骤s20:将得到的特征图通过一次卷积层,此时得到38
×
38
×
512的特征图。
[0103]
步骤s21:将得到的特征图经过csp1_3网络结构。将此时得到的特征图记为t2。
[0104]
步骤s22:将得到的特征图通过一次卷积层,此时得到19
×
19
×
1024的特征图。
[0105]
步骤s23:将得到的特征图通过一次spp结构,分别利用四个不同尺度的最大池化进行处理,最大池化的池化核大小分别为13x13、9x9、5x5、1x1(1x1即无处理),再将得到的不同尺度的特征图进行张量拼接操作。(详见图7)
[0106]
这里最大池化采用padding操作,移动的步长为1,比如13
×
13的输入特征图,使用5
×
5大小的池化核池化,padding=2,因此池化后的特征图仍然是13
×
13大小。
[0107]
采用spp模块的方式,比单纯的使用k
×
k最大池化的方式,更有效的增加主干特征的接收范围,显著的分离了最重要的上下文特征。
[0108]
加强特征提取网络(neck)部分的步骤为:(详见图3)
[0109]
步骤s24:将得到的特征图经过csp2_1网络结构,再通过一次卷积层进行卷积操作,此时得到19
×
19
×
512的特征图,记为t3。
[0110]
步骤s25:将得到的特征图进行上采样,即放大原图像,此时得到38
×
38
×
512的特征图。
[0111]
步骤s26:将得到的特征图与t2特征图进行张量拼接操作。此时得到38
×
38
×
1024的特征图。
[0112]
步骤s27:将得到的特征图经过csp2_1网络结构,再通过一次卷积层进行卷积操作,此时得到38
×
38
×
256的特征图,记为t4。
[0113]
步骤s28:将得到的特征图进行上采样,即放大原图像,此时得到76
×
76
×
256的特征图。
[0114]
步骤s29:将得到的特征图与t1特征图进行张量拼接操作。此时得到76
×
76
×
512的特征图。
[0115]
步骤s30:将得到的特征图经过csp2_1网络结构,此时得到76
×
76
×
256的特征图,记为t5。
[0116]
步骤s31:将t5特征图通过一次卷积层,与t4特征图进行张量拼接操作。
[0117]
步骤s32:将得到的特征图经过csp2_1网络结构,此时得到38
×
38
×
512的特征图,记为t6。
[0118]
步骤s33:将t6特征图通过一次卷积层,与t3特征图进行张量拼接操作。
[0119]
步骤s34:将得到的特征图经过csp2_1网络结构,此时得到19
×
19
×
1024的特征
图,记为t7。
[0120]
此时,在特征利用部分,yolov5提取多特征层进行目标检测,一共提取三个特征层,分别位于中间层,中下层,底层,三个特征层的shape分别为(76,76,256)、(38,38,512)、(19,19,1024)。
[0121]
预测输出端(prediction)部分的步骤为:(详见图3)
[0122]
步骤s35:将得到的t5、t6、t7特征图输入卷积层,可以获得三个特征层的预测结果,shape分别为(n,19,19,255),(n,38,38,255),(n,76,76,255)的数据,对应每个图分为19x19、38x38、76x76的网格上3个预测框的位置。
[0123]
步骤s36:yolov5的3个特征层分别将整幅图分为19x19、38x38、76x76的网格,每个网络点负责一个区域的检测。我们知道特征层的预测结果对应着三个预测框的位置,我们先将其reshape一下,其结果为(n,19,19,3,85),(n,38,38,3,85),(n,76,76,3,85)。最后一个维度中的85包含了4+1+80,分别代表x_offset、y_offset、h和w、置信度、分类结果。
[0124]
yolov5的解码过程就是将每个网格点加上它对应的x_offset和y_offset,加完后的结果就是预测框的中心,然后再利用先验框和h、w结合计算出预测框的长和宽。这样就能得到整个预测框的位置了。
[0125]
步骤s37:当然得到最终的预测结构后还要进行得分排序与非极大抑制筛选。先取出每一类得分大于阈值的框和得分,再利用框的位置和得分进行非极大抑制。即在同一个人脸的一堆候选框中,选出最可信的一个。
[0126]
非极大值抑制(non-maximum suppression,nms):先将候选框按置信度降序排序,再将第一个候选框依次与之后的框做iou(两个候选框的交集除以两个候选框的并集),大于设定阈值的框(认为同一个人脸)舍弃。保留第一个候选框,剩余的候选框重复上述步骤,直至剩下一个框,保留。最后保留下来的候选框就是非极大值抑制处理后的结果。
[0127]
步骤s38:检测出物体后,会给出物体相对应的行为动作提示,提醒学生注意力集中,不要分心。并且记录学生分心行为的次数。每过150帧输出一次学生的分心情况。
[0128]
最后,将人体疲劳检测模块和人体行为识别模块结合起来,利用学生的脸部情况以及上课常见行为特征组合,最终识别出学生在一段时间内上课专注状态,也就是学生在此期间是否产生疲劳了以及学生这段时间内分心的次数。
[0129]
采用本发明所提供的基于yolov5和dlib模型的学生在线学习专注度分析系统,其技术优点体现如下:
[0130]
提供了一种进行的网课学习时,对网课学习中的学生面部情况和行为(打瞌睡和玩手机等)进行识别。首先通过上网课的笔记本电脑摄像头实时拍摄上课学生的视频图像,然后设计软件模块,分为人体疲劳检测模块,用来识别学生眨眼、打哈欠;同时设计学生玩手机、喝水等导致看课件不专注的行为动作识别模块。最后,设计深度学习网络,将学生表情、上课常见行为特征组合,最终识别出学生上课的专注度状态分析情况。
[0131]
采用本发明所提供的基于yolov5和dlib模型的学生在线学习专注度分析系统,其关键点和欲保护点在于以下几个方面:
[0132]
1、将系统的人体疲劳检测模块与人体行为识别模块结合起来,形成学生学习专注度分析的结果,方便老师进行网课平时成绩评测。
[0133]
2、将检测到的人的眼睛数据与嘴巴的数据结合起来计算学生的疲劳程度。
[0134]
3、使用yolov5作为人体行为识别模块的网络模型,该模型速度快,体积小,识别准确率高。
[0135]
在本技术中附图中的字母解释如下:
[0136]
上采样:放大原图像,即任何可以让图像变成更高分辨率的技术。一般采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素。
[0137]
slice:对原始输入进来的图像进行切片操作。
[0138]
concat:张量拼接,维度会扩充。描述图像本身的特征数(通道数)增加了,而每一特征下的信息是没有增加;横向或纵向空间上的叠加.
[0139]
conv:一次卷积操作。
[0140]
bn(batchnormalization):批标准化,和普通的数据标准化类似,是将分散的数据统一的一种做法,也是优化神经网络的一种方法。
[0141]
leaky relu:激活函数。计算形式如下:
[0142][0143]
res unit:残差结构。首先进行一次卷积操作,该卷积会压缩输入进来的特征层的宽和高,此时我们可以获得一个特征层,我们将该特征层命名为layer。之后我们再对该特征层进行一次1x1的卷积和一次3x3的卷积,并把这个结果加上layer,此时我们便构成了残差结构。
[0144]
add:张量相加,不会扩充维度。描述图像的特征下的信息量增多了,但是描述图像的维度本身并没有增加,只是每一维下的信息量在增加。
[0145]
maxpool:一次最大池化操作。
[0146]
显然本发明具体实现并不受上述方式的限制,只要采用了本发明的方法构思和技术方案进行的各种非实质性的改进,均在本发明的保护范围之内。

技术特征:
1.一种在线学习专注度识别方法,其特征在于:包括如下步骤:构建人体疲劳状态检测模块和人体行为识别模块;通过人体疲劳状态检测模块对采集的人脸数据进行识别并检测出人体的疲劳程度;通过人体行为识别模块对采集的用户在线学习的图像数据进行识别并检测出用户的学习分心与否。2.如权利要求1所述的一种在线学习专注度识别方法,其特征在于:所述人体疲劳状态检测模块首先分别获取左右眼和嘴部面部标志的索引,再通过opencv软件库中的函数类对视频流进行灰度化处理,检测出人眼和嘴巴的位置信息,然后计算出包括眼睛开合度、眨眼次数,嘴巴开合度,打哈欠频率等数据,构造用于评价疲劳程度的函数并将其与设定阈值比较从而检测出人体的疲劳程度。3.如权利要求2所述的一种在线学习专注度识别方法,其特征在于:人体疲劳状态检测模块包括眼睛检测步骤、嘴巴检测步骤和疲劳判断步骤,其中眼睛检测步骤包括:计算左右眼的ear值,ear值即为眼睛长宽比的值,并使用左右两眼的平均值作为最终的ear值;如果连续两帧的ear值都小于设定的阈值,则表示进行了一次眨眼活动;统计在设定视频流总帧数roll中符合闭眼特征的帧数rolleye;其中嘴巴检测步骤包括:计算嘴巴的mar值,mar值即为嘴巴长宽比的值;连续两帧图像中嘴巴的mar值大于设定的阈值则认为在进行张嘴打哈欠,统计在设定视频流总帧数roll中符合打哈欠的帧数rollmouth;疲劳判断步骤包括:基于眼睛检测步骤检测的rolleye值和嘴巴检测步骤中rollmouth值判断疲劳程度。4.如权利要求3所述的一种在线学习专注度识别方法,其特征在于:疲劳判断步骤包括中疲劳程度的判断采用构造函数perclos来判断,其中构造函数设定疲劳阈值p1,当erclos值大于p1则判断为疲劳状态,否则判断为清醒状态。5.如权利要求3所述的一种在线学习专注度识别方法,其特征在于:计算左右眼的ear值包括:步骤1:打开摄像头,获取学生的面部图像,再从视频流进行循环,读取图片,并对图片做维度扩大,并进灰度化处理;步骤2:预先训练dlib库中用于检测人脸区域的界限bounds的关键函数dlib.get_frontal_face_detector();和dlib库中用于获得脸部特征位置检测器并输出特征点坐标的关键函数dlib.shape_predictor(predictor path);使用dlib.get_frontal_face_detector(gray,0)进行脸部位置检测,循环脸部位置信息,并使用dlib.shape_predictor(gray,rect)获得脸部特征位置的信息。步骤3:提取帧图像检测人脸,根据脸部特征位置信息对眼部进行粗定位后进行肤色分割;步骤4:将脸部特征信息转换为数组array的格式,并提取左眼和右眼坐标,眼部精确定
位;步骤5:构造函数计算左右眼的ear值,其中ear值为左右两眼的平均值作为最终的ear值,其中一个眼睛的ear值计算公式为:其中p
38
.y、p
39
.y、p
42
.y、p
41
.y分别为68点人脸特征点中的点38、39、42、41的纵坐标,p
37
.x、p
40
.x为68点人脸特征点中的37、40的横坐标;分别计算两个眼睛的ear值取平均后为最终的ear值。6.如权利要求3所述的一种在线学习专注度识别方法,其特征在于:计算嘴巴的mar值包括如下步骤:步骤(1):提取帧图像检测人脸,嘴部粗定位进行肤色分割;步骤(2):将脸部特征信息转换为数组array的格式,并提取嘴部位置坐标,嘴部精确定位,步骤(3)、构造函数计算mar值,mar值计算函数如下:其中p
51
.y、p
53
.y、p
57
.y、p
59
.y为68点人脸特征点中的点51、59、53、57的纵坐标,p
49
.x、p
55
.x为68点人脸特征点中的点49、55的横坐标。7.如权利要求1所述的一种在线学习专注度识别方法,其特征在于:所述人体行为识别模块采用yolov5神经网络模型对采集的图像中的每帧图片中出现的物体进行识别并根据识别的物体来判断学生的学习的分心状态。8.如权利要求8所述的一种在线学习专注度识别方法,其特征在于:采用预先训练的、修改权重后的yolov5神经网络模型来识别采集的图像中的物体,预先标定出手机、香烟、水杯三种物体,并在识别到任一物体后判断为学习分心状态。9.如权利要求1-8任一所述的一种在线学习专注度识别方法,其特征在于:按照一定周期将疲劳程度结果和分心状态结果结合来评价专注度并给出专注度评价。

技术总结
本发明公开了一种在线学习专注度识别方法,包括如下步骤:构建人体疲劳状态检测模块和人体行为识别模块;通过人体疲劳状态检测模块对采集的人脸数据进行识别并检测出人体的疲劳程度;通过人体行为识别模块对采集的用户在线学习的图像数据进行识别并检测出用户的学习分心与否。本发明的优点在于:本发明能够有效地实时检测线上教育学生的注意力状态,分析学生的听课专注度情况,是更好衡量网络教学质量的重要指标,有助于提高网课教学质量,更好地拓展素质教育线上教学。好地拓展素质教育线上教学。好地拓展素质教育线上教学。


技术研发人员:祝玉军 陈锡敏 郭梦丽 武伟 杨丹丹 章智强 陈能
受保护的技术使用者:安徽师范大学
技术研发日:2022.03.30
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-2970.html

最新回复(0)