一种基于人脸识别的课堂智能实时分析方法及系统
技术领域
本发明涉及图像处理技术领域,尤其涉及一种基于人脸识别的课堂智能实时分析方法及系统。
背景技术
在课堂教学过程中,学生的出勤率和学生在课堂上的专注度直接影响学生学习效率和教师的教学质量,传统的考勤分析基本上都需要老师与各位学生的配合,往往耽误正常上课时间,学生课堂上的专注度也无法全面统计,老师无法实时了解学生状态和评估授课质量。因此需要一种智能课堂管理与分析系统来弥补教育行业传统记录考勤、巡课、分析等需要大量人力的缺陷。
近些年来,人工智能技术发展迅速,各类人工智能的应用给人类的生产、交通、生活、教育等多方面带来了极大的便利,特别是模式识别、人脸识别等方向得到了广泛的应用且效果理想。一些智能课堂管理与分析系统在部分校园已有应用,但这些方式往往识别效率低下、滞后严重,不能实时反映学生状态,影响教学质量评估。
发明内容
有鉴于此,本发明提出了一种基于人脸识别的课堂智能实时分析方法,用于解决现有课堂管理系统中识别、分析速率低下,滞后严重的问题。
本发明第一方面,提出一种基于人脸识别的课堂智能实时分析方法,所述方法包括:
通过摄像头采集课堂实时数据作为输入视频流,对所述输入视频流进行预处理,得到实时帧画面;
通过多个固定大小的滑动窗口在每一个帧画面上滑动,检测人脸区域并标记人脸区域;
构建ResNet网络结构与Inception网络结构相结合的卷积神经网络模型,所述卷积神经网络模型中同时包括人脸识别模型和专注度识别模型;
准备人脸图像数据集并制作标签作为训练集,对所述卷积神经网络模型进行训练,直至模型收敛;
对所述人脸区域做预处理,输入训练好的卷积神经网络模型,输出人脸识别结果和对应的专注度分类结果;
将人脸区域标记、人脸识别结果、专注度分析结果直接标注在实时帧画面内,通过帧迭代器生成输出视频流并推送至浏览器。
优选的,所述人脸图像数据集由学生人脸数据库和开源数据集faces_webface组成。
优选的,所述卷积神经网络模型的结构包括输入层、隐藏层和输出层;
所述输入层包括批量归一层batch_norm_1;
所述隐藏层将所述将批量归一层batch_norm_1的输出分为四个分支,其中一个分支用于ResNet网络做残差连接,通过其余三个分支构建第一Inception模块,所述第一Inception模块包括3×3的卷积层branch_11、3×3的最大池化层branch_12以及branch_13使用1×1的卷积层连接3×3的卷积层连接3×3的卷积层组合,将所述三个分支的结果合并concatenated_1作为第一Inception模块的输出;
在所述第一Inception模块输出上再搭建一个批量归一化层batch_norm_2,在批量归一层batch_norm_2的输出上搭建一个PReLU激活层,将PReLU激活层activation_1的输出分为三个分支构建第二Inception模块,所述第二Inception模块包括3×3最大池化层branch_21、1×1卷积层连接3×3的卷积层branch_22、1×1卷积层连接1×7的卷积层连接7×1的卷积层连接3×3的卷积层branch_23,将这三个分支合并concatenated_2作为第二Inception模块的输出;
将所述第二Inception模块的输出作为另一批量归一层batch_norm_2的输入,经过PReLU激活层输出activation_2,将batch_norm_1层经过2×2卷积层处理后与activation_2激活层的结果相加add,把相加的结果做压平处理,将压平后的结果作为隐藏层的输出;
所述输出层有两个分支,第一个分支为人脸识别单元,将隐藏层的输出作为输入,搭建一个使用softmax激活函数的全连接层dense_1,用于预测帧画面中的人脸归属于谁;另一个分支为专注度识别单元,将隐藏层的输出作为输入,搭建一个包含sigmoid激活函数的全连接层dense_2,用于区分对应人脸专注与不专注两个类别。
优选的,所述卷积神经网络模型中所述人脸识别单元使用arcface损失函数,对于专注度识别单元使用交叉熵损失函数,所述卷积神经网络模型的最终损失为所述arcface损失函数与所述交叉熵损失函数的加权之和,所述卷积神经网络模型收敛条件为所述最终损失最小。
优选的,所述将人脸区域标记、人脸识别结果、专注度分析结果直接标注在实时帧画面内,通过帧迭代器生成输出视频流并推送至浏览器具体为:
将人脸区域框图标记在实时帧画面中,OpenCV格式的帧画面转换为PIL格式的帧画面,使用PIL中的ImageDraw方法完成人脸识别结果、专注度分析结果中文标注,再将PIL格式的帧画面转换为OpenCV格式的帧画面;
将标注后的帧画面经过视频编码转换为字节数组,将所述字节数组与对应的当前帧信息合并,以帧迭代器生成输出视频流展示到浏览器网页上。
优选的,所述方法还包括:根据数据采集时间和对应的人脸识别结果和专注度结果进行考勤分析。
本发明第二方面,提出一种基于人脸识别的课堂智能实时分析系统,所述系统包括:
数据采集模块:过摄像头采集课堂实时数据作为输入视频流,对所述输入视频流进行预处理,得到实时帧画面;
人脸检测模块:通过多个固定大小的滑动窗口在每一个帧画面上滑动,检测人脸区域并标记人脸区域;
模型构建模块:构建ResNet网络结构与Inception网络结构相结合的卷积神经网络模型,所述卷积神经网络模型中同时包括人脸识别模型和专注度识别模型;
模型训练模块:准备人脸图像数据集并制作标签作为训练集,对所述卷积神经网络模型进行训练,直至模型收敛;
分类识别模块:对所述人脸区域做预处理,输入训练好的卷积神经网络模型,输出人脸对比结果和对应的专注度分类结果;
标记显示模块:将人脸区域标记、人脸识别结果、专注度分析结果直接标注在实时帧画面内,通过帧迭代器生成输出视频流并推送至浏览器。
本发明的相对于现有技术具有以下有益效果:
1)实现了无感考勤分析与专注度分析的同时,还能在各种符合HTML页面协议的设备上将结果进行实时展示;
2)采用了同时包括人脸识别模型和专注度识别模型的卷积神经网络模型,优化了卷积神经网络结构,加快识别速率,减少延迟。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于人脸识别的课堂智能实时分析方法整体流程示意图;
图2为本发明实施例提供的人脸区域探测的流程示意图;
图3为本发明实施例提供的卷积神经网络结构示意图。
具体实施方式
下面将结合本发明实施方式,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
请参阅图1,本发明实施例提供的一种基于人脸识别的课堂智能实时分析方法整体流程示意图;
本发明所有的现场实时数据都是以视频流的形式进行传输与展示的。本发明处理视频流主要分为两种情况:输入视频流和输出视频流。
对于输入视频流,即从使用常见的视频采集设备采集得到的视频数据,诸如USB摄像头、网络摄像头等视频设备均能完成现场实时数据的采集工作。
S1、通过摄像头采集课堂实时数据作为输入视频流,对所述输入视频流进行预处理,得到实时帧画面;对于采集到的数据使用OpenCV分帧处理,即将原有的流式数据切分成大小一致的帧图像。为了提高处理的速度、增强展示实时性,对所有帧图像先做灰度化处理,将原有的三颜色通道转换为单一颜色通道处理。
S2、通过多个固定大小的滑动窗口在每一个帧画面上滑动,检测人脸区域并标记人脸区域;
选取当前开源技术中人脸探测准确率最高的insightface框架完成人脸区域探测,选取此框架中包含的两种常用人脸探测模型:mobilenet和R50。前者的准确率在LFW数据集上测试大约为95%,后者在LFW上大约为99%。两个模型均返回一个0~1之间的阈值用于确定这个区域内是否是真的人脸,可设置此值大于85%的区域是人脸。
人脸区域探测的识别原理是,通过固定大小的滑动窗口检测人脸区域。请参阅图2,本发明指定使用8×8、16×16、32×32这三个大小的窗口,对于每个窗口在同一帧图像中由左至右由上至下的进行滑动,对每次滑动后的结果进行检测。以一个800×600的帧图像为例,使用大小为8×8的窗口,由左至右一共需要滑动800-8=792次,得到的大小为8×8的子区域共有793次,由上至下一共需要滑动592次,得到的大小为8×8的子区域也有593次,故此,使用8×8的窗口检测人脸时需要检测793*593=470249次,同理,对于16×16的窗口需要检测459225次,32×32的窗口需要检测437561次,因此,对于每一帧图像共需要检测470249+459225+437561=1367035次,然而这个次数对于一张800×600的图像来说实在是太大了,借助MTCNN的相关技术,首先对800×600图像进行预处理,筛选出可能存在人脸的区域,然后再通过滑动窗口的方法进一步进行检测,从而确定该区域中的内容为人脸。
通过以上方式可以对帧画面中的人脸区域进行探测,便于实时标记脸部区域,还可以完成人脸五个关键点的定位:左眼中心、右眼中心、鼻子中心、左嘴角以及右嘴角。
S3、构建ResNet网络结构与Inception网络结构相结合的卷积神经网络模型,所述卷积神经网络模型中同时包括人脸识别模型和专注度识别模型;
请参阅图3,本发明卷积神经网络结构示意图,本发明卷积神经网络主要使用的ResNet网络结构与Inception网络结构相结合,包括输入层、隐藏层和输出层;
所述输入层包括批量归一层batch_norm_1;
所述隐藏层将所述将批量归一层batch_norm_1的输出分为四个分支,其中一个分支用于ResNet网络做残差连接,通过其余三个分支构建第一Inception模块,所述第一Inception模块包括3×3的卷积层branch_11、3×3的最大池化层branch_12以及branch_13使用1×1的卷积层连接3×3的卷积层连接3×3的卷积层组合,将所述三个分支的结果合并concatenated_1作为第一Inception模块的输出;
在所述第一Inception模块输出上再搭建一个批量归一化层batch_norm_2,在批量归一层batch_norm_2的输出上搭建一个PReLU激活层,将PReLU激活层activation_1的输出分为三个分支构建第二Inception模块,所述第二Inception模块包括3×3最大池化层branch_21、1×1卷积层连接3×3的卷积层branch_22、1×1卷积层连接1×7的卷积层连接7×1的卷积层连接3×3的卷积层branch_23,将这三个分支合并concatenated_2作为第二Inception模块的输出;
将所述第二Inception模块的输出作为另一批量归一层batch_norm_2的输入,经过PReLU激活层输出activation_2,将batch_norm_1层经过2×2卷积层处理后与activation_2激活层的结果相加add,把相加的结果做压平处理,将压平后的结果作为隐藏层的输出;
所述输出层有两个分支,第一个分支为人脸识别单元,将隐藏层的输出作为输入,搭建一个使用softmax激活函数的全连接层dense_1,用于预测帧画面中的人脸归属于谁;另一个分支为专注度识别单元,将隐藏层的输出作为输入,搭建一个包含sigmoid激活函数的全连接层dense_2,用于区分对应人脸专注与不专注两个类别。
本发明针对课堂实时分析的需要搭建了一种改进的卷积神经网络,使用并行与串行相结合的网络结构,这种不对称卷积核结构,可增加特征多样性,且可以在保证信息损失足够小的情况下,降低计算量,提高计算速度,引入的残差模块也可以极大地加速训练过程,这种改进的卷积神经网络在实时视频流数据分析中可以减少识别与标注的延迟。
S4、准备人脸图像数据集并制作标签作为训练集,对所述卷积神经网络模型进行训练,直至模型收敛;
所述人脸图像数据集由学生人脸数据库和开源数据集faces_webface组成。
事先采集每个学生多个角度的人脸图像组成学生人脸数据库,与开源数据集faces_webface共同组成本发明的训练集,制作好标签。训练前首先设置训练所需的基本相关参数,如GPU、轮次、批次、初始化学习率以及学习率调整周期等超参数,本发明中使用到的是mxnet中的CompositeEvalMetric作为验证函数。所述卷积神经网络模型中所述人脸识别单元使用arcface损失函数,对于专注度识别单元使用交叉熵损失函数,所述卷积神经网络模型的最终损失为所述arcface损失函数与所述交叉熵损失函数的加权之和,所述卷积神经网络模型收敛条件为所述最终损失最小。
S5、对所述人脸区域做预处理,输入训练好的卷积神经网络模型,输出人脸识别结果和对应的专注度分类结果;
首先对输入数据做预处理,即将数据分布于-1到1之间,便于后面的层进行处理,使用到的参数是将所有的像素点减127.5,然后将结果统一除以128得到。
预测的原理是,通过卷积神经网络提取人脸特征,依据实时图像数据比对本发明实时分析系统内人脸的相关性,将相关性得分最高的标签作为预测标签,从而完成人脸识别。对于人脸识别来说,可以将视频采集设备中的帧画面输入给人脸探测模型,探测模型则会得到帧画面中所有出现的人脸区域范围,将此范围内的图像拷贝出来,经过resize操作后统一变成大小为112×112的图像,然后将这些图像经过人脸识别模型,从而得到预测结果。对于专注度分析来说,主要依据眼睛和面部角度来判断是否专注。
S6、将人脸区域标记、人脸识别结果、专注度分析结果直接标注在实时帧画面内,通过帧迭代器生成输出视频流并推送至浏览器。具体为:
将人脸区域框图标记在实时帧画面中,OpenCV格式的帧画面转换为PIL格式的帧画面,使用PIL中的ImageDraw方法完成人脸识别结果、专注度分析结果中文标注,再将PIL格式的帧画面转换为OpenCV格式的帧画面;
将标注后的帧画面经过视频编码转换为字节数组,将所述字节数组与对应的当前帧信息合并,以帧迭代器生成输出视频流展示到浏览器网页上。在后期需要使用的时候由于该数据已经符合HTML标准,直接嵌套在浏览器内即可实现输出与展示功能。
对于高帧率输入视频流来说,由于这类视频流帧率通常在60帧以上,在计算资源有限的情况下,输出这类视频流会首先会出现延迟情况,然后出现阻塞,即视频流不再输出。本发明解决这种情况的方法分为两个步骤,第一个步骤是必须的,第二个步骤是可选的:
1)在视频流输入时,设置一个可更改的阈值,默认大小为30,该阈值的作用是限制采集到的视频流帧率,即将输入视频流的帧率限制在阈值内,高于该阈值的帧会被直接丢弃。经过此处理后,输入视频流的帧被固定为某个值,用户可以根据自身的实际情况调节此阈值的大小,从而依据计算能力适应不同的场景,经验证,帧率大于20时,效果良好,肉眼无法察觉。
2)设置帧率更新机制。通过获取当前视频帧画面处理的开始时间以及处理完成视频帧画面的结束时间得到处理帧画面的时长,1除以将该时长得到输出视频帧率,最后将此输出视频帧率与帧画面绑定在一起输出,对于介于处理时长之间的帧画面直接丢弃以保证视频流不阻塞。
与上述方法实施例相对应,本发明还公开一种基于人脸识别的课堂智能实时分析系统,所述系统包括:
数据采集模块:过摄像头采集课堂实时数据作为输入视频流,对所述输入视频流进行预处理,得到实时帧画面;
人脸检测模块:通过多个固定大小的滑动窗口在每一个帧画面上滑动,检测人脸区域并标记人脸区域;
模型构建模块:构建ResNet网络结构与Inception网络结构相结合的卷积神经网络模型,所述卷积神经网络模型中同时包括人脸识别模型和专注度识别模型;
模型训练模块:准备人脸图像数据集并制作标签作为训练集,对所述卷积神经网络模型进行训练,直至模型收敛;
分类识别模块:对所述人脸区域做预处理,输入训练好的卷积神经网络模型,输出人脸对比结果和对应的专注度分类结果;
标记显示模块:将人脸区域标记、人脸识别结果、专注度分析结果直接标注在实时帧画面内,通过帧迭代器生成输出视频流并推送至浏览器;
考勤分析模块:根据数据采集时间和对应的人脸识别结果和专注度结果进行考勤分析,统计各学生、各班级、各年级在一定时间段的内的出勤率和专注率,生成报表并展示。
本发明的智能实时分析系统实现了无感考勤与专注度分析的同时,还能在各种符合HTML页面协议的设备上将结果进行实时展示;通过改进的卷积神经网络结构加快识别速率,减少延迟,实时性高,方便教师在课堂上了实时解学生状态并及时调整课堂授课计划或方式;本发明的实时智能分析系统可在各种教学活动结束之后对整体教学活动进行智能分析,得到较为全面的数据报表,为教学质量评估提供支撑。
以上系统实施例与方法实施例是一一对应的,系统实施例简略之处,参见方法实施例即可。
以上所述仅为本发明的较佳实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。