课堂学习状态判别是了解学生课堂学习情况及教师授课情况的关键步骤,轻量化网络能够提高学习状态的判别精度,轻量化网络是在神经网络算法的基础上进行优化的网络,在本文中,我们采用改进的轻量化网络Mobilnetv2对教室课堂学生学习状态进行判别,实验结果表明,通过提出的方法得到的课堂学生学习状态判别最高达到了99.00%的精度。 Classroom learning status discrimination is a key step to understand students’ classroom learning status and teachers’ teaching status. Lightweight networks can improve the accuracy of learning status. Lightweight networks are optimized networks based on neural network algorithms. In this article, the improved lightweight network Mobilnetv2 is used to discriminate the learning status of classroom students. The experimental results show that the accuracy of class student learning status discrimination obtained by the proposed method is up to 99.00%.
课堂学习状态判别是了解学生课堂学习情况及教师授课情况的关键步骤,轻量化网络能够提高学习状态的判别精度,轻量化网络是在神经网络算法的基础上进行优化的网络,在本文中,我们采用改进的轻量化网络Mobilnetv2对教室课堂学生学习状态进行判别,实验结果表明,通过提出的方法得到的课堂学生学习状态判别最高达到了99.00%的精度。
深度学习,课堂学生学习状态判别,Mobilenetv2,Swish
Qiuhui Liu, Lin Wang, Mingxiu Liang
School of Data Science and Information Engineering, Guizhou Minzu University, Guiyang Guizhou
Received: Mar. 29th, 2021; accepted: Apr. 22nd, 2021; published: Apr. 29th, 2021
Classroom learning status discrimination is a key step to understand students’ classroom learning status and teachers’ teaching status. Lightweight networks can improve the accuracy of learning status. Lightweight networks are optimized networks based on neural network algorithms. In this article, the improved lightweight network Mobilnetv2 is used to discriminate the learning status of classroom students. The experimental results show that the accuracy of class student learning status discrimination obtained by the proposed method is up to 99.00%.
Keywords:Deep Learning, Classroom Student Learning State Detection, Mobilenetv2, Swish
Copyright © 2021 by author(s) and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
学生课堂学习状态的研究与学生课堂学习效率及教师授课情况反馈息息相关,可作为学生课堂学习效率及教师授课情况的评价指标之一。目前课堂场景中对于学生课堂学习状态的研究主要从课堂学习行为 [
在计算机视觉和模式识别中,图像分类常用基于卷积神经网络的分类模型进行研究,1998年,LeNet模型 [
图像分类虽然层出不穷,但是对于不同的研究目标有不同的适用网络,本文针对教室场景,以学生头部为目标,改进Mobilenetv2模型对学生头部图像进行分类,最后进行学习状态的判别。
MobileNetv2 [
图1. 残差块与倒残差块
表1是MobileNetv2网络的结构表,其中t代表的是扩展因子(倒残差结构中第一个1 × 1卷积的扩展因子),c代表输出特征矩阵的通道,n代表倒残差结构重复的次数,s代表步距(注意:这里的步距只是针对重复n次的第一层倒残差结构,后面的都默认为1)。步距不同的网络结构如图2所示。
Input | Operator | t | c | n | s |
---|---|---|---|---|---|
224 2 × 3 | Conv2d | - | 32 | 1 | 2 |
112 2 × 3 2 | bottleneck | 1 | 16 | 1 | 1 |
112 2 × 16 | bottleneck | 6 | 24 | 2 | 2 |
56 2 × 24 | bottleneck | 6 | 32 | 3 | 2 |
2 8 2 × 3 2 | bottleneck | 6 | 64 | 4 | 2 |
1 4 2 × 64 | bottleneck | 6 | 96 | 3 | 1 |
1 4 2 × 96 | bottleneck | 6 | 160 | 3 | 2 |
7 2 × 160 | bottleneck | 6 | 320 | 1 | 1 |
7 2 × 320 | Con2d 1 × 1 | - | 1280 | 1 | 1 |
7 2 × 1280 | Avgpool 7 × 7 | - | - | 1 | - |
1 × 1 × 1280 | Con2d 1 × 1 | - | k | - |
表1. MobileNet v2网络结构
图2. Stride不同的网络结构
ReLU函数是目前深度学习中用得较多且广受欢迎的非线性激活函数。在 x ≥ 0 时才有非零输出,在 x < 0 时输出为0,将ReLU函数定义为:
f ( x ) = max ( 0 , x ) (1)
且函数曲线如图3所示。
图3. ReLU函数曲线
经过求导计算,可得(1)的导函数为:
f ′ ( x ) = max ( 0 , 1 ) (2)
由(2)可知,ReLU函数其实上是最大值函数,与Sigmoid及Tanh函数相比,当输入值为正数时,ReLU函数运算非常简单且快速,同时也避免了梯度消失。拥有更加好的网络性能。当输入为负数时,ReLU是完全不被激活的,ReLU函数就会和Sigmoid及Tanh函数存在一样的问题。
Swish函数是x与sigmoid函数的结合,公式为
且函数曲线如图4。
图4. Swish函数曲线(β = 1)
对(3)求导可得:
由(4)可以看出,β是个常数且Swish激活函数具备有下界、平滑、非单调的特性。其也被看成是介于线性函数与ReLU函数之间的平滑函数。Swish激活函数在正值区域可以达到任何高度,避免了由于封顶而导致的梯度饱和。对负值区域,与ReLU相比,有轻微的梯度流。平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。
在深度学习中,样本数量越多,训练出来的模型效果越好,模型的泛化能力越强。由于自建数据集的样本数量不是很多,为了提高模型的泛化能力,本文采用了三种方法对原有的数据进行增强,包括颜色扰动、高斯噪声滤波以及水平翻转。颜色扰动,指在某一个颜色空间通过增加或减少某些颜色分量,或者更改颜色通道的顺序。高斯噪声就是符合高斯正态分布的误差。有时我们需向标准数据中加入合适的高斯噪声来让数据变得有一定误差,从而让数据变得更具有实验价值。水平翻转是翻转中的一种,它是以坐标y轴为对称轴进行操作的过程,我们在这里使用水平翻转而没有使用全方位翻转的原因在于我们的数据具有一定程度的相似性,而且我们识别抬头低头的状态多数都是从正常的视觉出发,为了让数据增强具有合理性,我们使用了水平翻转。操作效果图如图5。
其中(a)表示原图,(b)表示经过颜色扰动后的图,(c)表示添加高斯噪声后的图,(d)表示水平翻转后的图。
激活函数是在激活层起主要作用的非线性函数,Mobilenetv2模型用到的激活函数为ReLU6,ReLU6其实是ReLU函数的变形,它的定义如下式:
且函数曲线如图6。
ReLU6函数实际上是把ReLU函数取了上界,但当在负值区域,容易出现函数失活的问题,所以考虑一种更好的激活函数Swish来替代ReLU6。
图5. 数据增强效果图
图6. ReLU函数曲线图
本节实验软件为Python3.6计算机编程语言,框架Tensorflow2.2.0及Keras2.2.4环境,硬件为64位Windows操作系统,Intel(R)Core(TM)i7-9700 CPU和16GB RAM,独立显卡AMD Radeon Pro WX3100。
本文实验用到的数据集由模型Yolov4与DropBlock结合算法检测到的学生头部结果图片制成,抬头低头图片数量各为1065张,总计2130张,命名为ClassUD。数据增强以后的数据集命名为ClassUD-A,每一种增强方法对每一种状态的数据都进行一次操作,抬头与低头状态的数据集扩增到了4260张,总计8520张图片。数据分布如表2。本文分类所需的数据皆是模仿监控视角的位置与高度拍摄所得,范围为一个教室的3至4排左右,且240张图片由40分钟视频以10秒一张图片的截取方式获得,对每张图片出现的学生头部进行裁剪且对不同的学生头部进行编号,此编号就代表这位学生,制成的数据集命名为ClassTest,依此类推,每一个编号的图片数应为240张,有些编号少于240张是由于在某些帧中头部存在被遮挡的情况,数据分布如表3所示。
数据集 | 抬头训练集 | 低头训练集 |
---|---|---|
ClassUD | 1065 | 1065 |
ClassUD-A | 4260 | 4260 |
表2. 训练实验数据分布
编号 数据集 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ClassTest | 240 | 240 | 219 | 240 | 215 | 240 | 240 | 240 | 226 | 240 | 52 | 240 | 240 | 234 |
表3. 测试实验数据分布
本节中的实验分别在五个深度学习分类模型上进行,迭代次数为80次,批量输入尺寸为32。第一个实验用Vgg16模型进行训练及测试,第二个实验用Googlenet模型进行训练及测试,第三个实验是在Resnet50模型下进行训练及测试,第四个实验在Mobilenev2模型下进行训练及测试。第五个实验用Alexnet模型进行训练及测试,所有实验均在数据集ClassUD及ClassUD-A上进行。学习率是深度学习中的一个重要的超参,如何设置学习率是训练出好模型的关键要素之一。为了在五个模型上对同一数据集做实验对比分析,需要在同一实验条件下进行实验,所以对于模型的学习率,根据经验分别设置了0.001及0.0001两个不同的值。
当学习率为0.001时,在数据集ClassUD及ClassUD-A上的实验结果如表4及图7所示。
方法 数据集 | Vgg16 | Googlenet | Resnet50 | Mobilenetv2 | Alexnet | |
---|---|---|---|---|---|---|
ClassUD | 训练时间(/小时) | 11.50 | 2.4 | 1.23 | 4.33 | 0.42 |
平均训练精度(%) | 49.32 | 91.88 | 81.92 | 98.33 | 77.65 | |
平均验证精度(%) | 50.03 | 81.28 | 77.96 | 91.33 | 70.83 | |
ClassUD-A | 训练时间(/小时) | 49.22 | 10.06 | 5.29 | 18.57 | 1.41 |
平均训练精度(%) | 49.54 | 96.38 | 79.05 | 99.03 | 96.38 | |
平均验证精度(%) | 50.02 | 95.85 | 81.82 | 98.77 | 95.72 |
表4. 学习率为0.001时实验结果
由表4及图7可知,当学习率为0.001时,在数据集ClassUD上,训练耗时最少的模型为Alexnet,约为0.42小时,耗时最多的模型为Vgg16,约为11.50小时,训练与验证精度最高的模型为Mobilenetv2,分别为98.33%与91.33%,训练与验证精度最低的模型为Vgg16,约为49.32%与50.03%。在数据集ClassUD-A上,训练耗时最少的依然是Alexnet模型,约为1.41个小时,耗时最多的依然是模型Vgg16,约为49.22个小时,训练与验证精度最高的模型为Mobilnetv2,分别为99.03%及98.77%,训练及验证精度最低的模型为Vgg16,约为49.54%及50.02%。
图7. 五个模型的训练及验证图
数据增强后,对于Alexnet、Mobilenetv2及Googlenet模型来说,训练及验证精度都得到了不同程度上的提升;而对于Vgg16模型来说,数据增强几乎没有什么效果;对于Resnet50模型,训练精度反而还下降了;但是训练时间也同时在成倍的增长。Vgg16及Resnet50首先不是我们考虑的模型,其实按照训练时间来说,选择Alexnet模型最为合适,但是它较依赖于数据集的大小,而对于Googlenet及Mobilenetv2模型在ClassUD上表现得比较好,在ClassUD-A上更好,网络相对稳定且在不断的学习。
当学习率为0.0001时,在数据集ClassUD及ClassUD-A上的实验结果如表5及图8。
由表5及图8可知,当学习率为0.0001时,在数据集ClassUD上,训练耗时最少的模型为Alexnet,约为0.42小时,耗时最多的模型为Vgg16,约为11.49小时,训练与验证精度最高的模型为Mobilenetv2,分别为98.92%与87.76%,训练与验证精度最低的模型为Resnet50,约为82.41%与79.13%。在数据集ClassUD-A上,训练耗时最少的依然是Alexnet模型,约为1.47个小时,耗时最多的是模型Vgg16,约为49.22个小时,训练与验证精度最高的模型为Mobilnetv2,分别为99.37%及98.82%,训练及验证精度最低的模型为Resnet50,约为81.94%及85.61%。
方法 数据集 | Vgg16 | Googlenet | Resnet50 | Mobilenetv2 | Alexnet | |
---|---|---|---|---|---|---|
ClassUD | 训练时间(/小时) | 11.49 | 2.6 | 1.29 | 4.45 | 0.42 |
平均训练精度(%) | 94.23 | 93.95 | 82.41 | 98.92 | 95.13 | |
平均验证精度(%) | 83.28 | 85.91 | 79.13 | 87.76 | 85.76 | |
ClassUD-A | 训练时间(/小时) | 49.22 | 10.4 | 5.30 | 18.72 | 1.47 |
平均训练精度(%) | 98.16 | 97.68 | 81.94 | 99.37 | 98.30 | |
平均验证精度(%) | 98.17 | 97.07 | 85.61 | 98.82 | 97.72 |
表5. 学习率为0.0001时实验结果
图8. 五个模型的训练及验证图
数据增强以后,对于Alexnet、MobilenetV2、Googlenet及Vgg16模型来说,训练及验证精度都得到了不同程度上的提升;对于Resnet50模型,训练精度反而下降了一点;训练时间也同时在成倍的增长。Resnet50首先不是我们考虑的模型,同时Vgg16的训练时间太长,也不是我们考虑的模型。而Alexnet、Googlenet及Mobilenetv2模型不管是在ClassUD上还是在ClassUD-A上都表现得比较好,网络相对稳定且在不断的学习。
通过两个不同学习率及不同数据集下的实验,得出在数据集ClassUD-A上的实验效果比数据集ClassUD效果更好,在学习率为0.0001时比学习率为0.001时效果更好,所以之后的实验将在数据集ClassUD-A及学习率为0.0001的条件下进行。
分别进行三个实验,把Alexnet、Googlenet及Mobilenetv2网络模型的激活函数替换为Swish后,称这些网络为Alexnet_S、Googlenet_S及Mobilnetv2_S,并在数据集ClassUD-A上进行了Alexnet、Alexnet_S、Googlenet、Googlenet_S、Mobilenetv2及Mobilenetv2_S实验的对比。实验结果见表6及图9。
方法 数据集 | ClassUD-A | ||
---|---|---|---|
Alexnet | 训练时间(/小时) | 平均训练精度(%) | 平均验证精度(%) |
1.47 | 98.30 | 97.72 | |
Alexnet_S | 训练时间(/小时) | 平均训练精度(%) | 平均验证精度(%) |
1.65 | 97.86 | 97.32 | |
Googlenet | 训练时间(/小时) | 平均训练精度(%) | 平均验证精度(%) |
10.4 | 97.68 | 97.07 | |
Googlenet_S | 训练时间(/小时) | 平均训练精度(%) | 平均验证精度(%) |
11.12 | 96.55 | 95.47 | |
Mobilenetv2 | 训练时间(/小时) | 平均训练精度(%) | 平均验证精度(%) |
18.72 | 99.37 | 98.82 | |
Mobilenetv2_S | 训练时间(/小时) | 平均训练精度(%) | 平均验证精度(%) |
18.83 | 99.55 | 99.00 |
表6. 不同模型的实验结果
图9. 三个模型的训练及验证图
从表6及图9可知,在数据集ClassUD-A上,我们更改模型的激活函数为Swish后,在训练时间上,Alexnet_S比Alexnet多花了0.18 h、Googlenet_S比Googlenet多花了0.72 h、Mobilenetv2_S比Mobilenetv2多花了0.11 h;在平均训练精度上,Alexnet_S比Alexnet减少了0.44%,Googlenet_S比Googlenet减少了1.13%,Mobilenetv2_S比Mobilenetv2提高了0.18%;在平均验证精度上,Alexnet_S比Alexnet增加了0.01%,Googlenet_S比Googlenet减少了1.47%,Mobilenetv2_S比Mobilenetv2提高了0.18%。综合上述分析,在Alexnet_S、Googlenet_S及Mobilenetv2_S模型中,Mobilenetv2_S是训练时间增时最少,也是平均精度增加最多,更是训练精度及验证精度最高的模型。所以对于学生头部状态的判别选用Mobilenetv2_S模型进行实验。
在进行分类判别之前,对学生头部状态数据集ClassTest进行了人工观察,观察结果见表7,进而用Mobilenetv2_S模型对学生头部状态数据集ClassTest进行分类判别,结果见表8。而人工观察与算法分类判别结果的平均值误差对比见表9。规定抬头状态比例达到60%及以上的学生为认真学习状态,低头状态比例达到60%以上的学生为非认真学习状态,若两种状态比例相近且不属于上面两类,判断学生为注意力不集中状态。
学生 | 观察结果 数据集 | ClassTest | 抬头(%) | 低头(%) |
---|---|---|---|---|
1 | 240 | 85.83 | 14.17 | |
2 | 240 | 80.83 | 19.17 | |
3 | 219 | 33.33 | 66.67 | |
4 | 240 | 62.92 | 37.08 | |
5 | 215 | 40.93 | 59.07 | |
6 | 240 | 28.75 | 71.25 | |
7 | 240 | 67.50 | 32.50 | |
8 | 240 | 72.92 | 27.08 | |
9 | 226 | 73.45 | 26.55 | |
10 | 240 | 94.58 | 5.42 | |
11 | 52 | 80.77 | 19.23 | |
12 | 240 | 68.33 | 31.67 | |
13 | 240 | 71.67 | 28.33 | |
14 | 234 | 84.19 | 15.81 |
表7. 人工观察结果
学生 | 分类精度 数据集 | ClassTest | 精度(%) | 抬头(%) | 低头(%) |
---|---|---|---|---|---|
1 | 240 | 97.50 | 86.67 | 13.33 | |
2 | 240 | 97.92 | 83.75 | 16.25 |
3 | 219 | 87.67 | 26.48 | 73.52 |
---|---|---|---|---|
4 | 240 | 96.67 | 65.42 | 34.58 |
5 | 215 | 95.81 | 45.12 | 54.89 |
6 | 240 | 89.58 | 32.08 | 67.92 |
7 | 240 | 95.83 | 70.83 | 29.17 |
8 | 240 | 96.25 | 69.58 | 30.42 |
9 | 226 | 88.94 | 60.17 | 39.82 |
10 | 240 | 88.75 | 84.17 | 15.83 |
11 | 52 | 92.31 | 73.08 | 26.92 |
12 | 240 | 95.42 | 71.67 | 28.33 |
13 | 240 | 100 | 71.67 | 28.33 |
14 | 234 | 99.14 | 83.33 | 16.67 |
表8. 测试数据实验结果
方法平均值 状态 | 人工观察 | 算法分类 | 误差 |
---|---|---|---|
抬头(%) | 67.57 | 66.00 | 1.57 |
低头(%) | 32.43 | 33.99 | 1.56 |
表9. 两种不同方法的学生头部状态结果误差对比
从表7来看,学生1、2、4、7、8、9、10、11、12、13、14在时常40分钟的课堂里为认真学习状态,而学生3、6为非认真学习状态,学生5的抬头比例及低头比例相近,我们认为此学生在课堂里为注意力不集中状态。
从表8分类精度来看,对于14个学生目标,有10个学生头部的分类精度均在92.31%至100%之间,4个学生头部的分类精度均在87.67%至89.58%之间,基本达到检测要求,其中4个低于90%分类精度的原因是学生头部存在部分遮挡,导致检测结果不佳,从检测抬头低头比例来看,学生1、2、4、7、8、9、10、11、12、13、14在课堂中为认真学习状态,而学生3、6为非认真学习状态,学生5为注意力不集中状态。
从表9可知,我们的算法检测结果平均值与人工观察结果平均值相差不大,学生学习状态也大致相同。
综合以上分析,提出的Mobilenetv2_S算法适用于自建数据集并取得了良好的分类效果。
本文研究受贵州省教育厅创新群体重大研究项目(KY2018018)的支持。
刘秋会,王 林,梁明秀. 基于轻量化网络的课堂学生学习状态判别Learning State Discrimination of Classroom Students Based on Lightweight Network[J]. 计算机科学与应用, 2021, 11(04): 1173-1185. https://doi.org/10.12677/CSA.2021.114121
://doi.org/10.1109/5.726791
://doi.org/10.13176/11.348
://doi.org/10.1109/CVPR.2015.7298594
://doi.org/10.1109/CVPR.2016.90
://doi.org/10.1109/CVPR.2017.634
://doi.org/10.1109/CVPR.2018.00745
://doi.org/10.1109/CVPR.2018.00474