准确而快速地发现学习者的情绪变化,对提高慕课的教学质量具有极为重要的价值。然而面向慕课的情绪识别工具必须解决鲁棒性和实时性这两个关键问题。在这项研究中,我们提出了使用Computer Unified Device Architecture (CUDA)技术来对深度时空推理网络进行加速,从而快速而准确的识别学习者的面部情绪状态。我们利用添加不同噪声的AR数据来测试了我们的方法,并将结果同其他深度学习方法进行了对比。实验结果证明了我们的方法的有效性。 Accurate and rapid detect changes of learner’s emotional state is of great importance to improve the teaching quality of Massive Open Online Courses (MOOC). However, the emotion recognition tools for MOOC must solve the two key issues: robustness and real-time. In this study, we proposed a deep learning approach which is based on the Computer Unified Device Architecture (CUDA) technology, called CUDA-DeSTIN, to quickly and accurately identify the learner’s facial emotional state. We tested our method using AR data with different noise, and compared the results with other deep learning methods. The experimental results prove the effectiveness of our method.
徐姜琴1,张永锋2
1厦门大学外国语学院,福建 厦门
2厦门亚伯锋天科技有限公司,福建 厦门
收稿日期:2018年7月24日;录用日期:2018年8月6日;发布日期:2018年8月13日
准确而快速地发现学习者的情绪变化,对提高慕课的教学质量具有极为重要的价值。然而面向慕课的情绪识别工具必须解决鲁棒性和实时性这两个关键问题。在这项研究中,我们提出了使用Computer Unified Device Architecture (CUDA)技术来对深度时空推理网络进行加速,从而快速而准确的识别学习者的面部情绪状态。我们利用添加不同噪声的AR数据来测试了我们的方法,并将结果同其他深度学习方法进行了对比。实验结果证明了我们的方法的有效性。
关键词 :慕课,情绪识别,人工智能
Copyright © 2018 by authors and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
近年来,随着大规模开放网络课程(Massive Open Online Courses, MOOC,以下简称慕课) [
众多已有的研究已经表明,情绪对学习的效果 [
利用人工智能技术来提高教学质量的需求吸引了相当多的研究者的兴趣 [
深度学习 [
依据我们已有的研究成果,EM-DeSTIN [
因此,在本文中,我们利用了一种基于CUDA架构的深度时空推理网络 [
本文的其余部分整理如下。在第二节中,我们将简要介绍深空推理网络(DeSTIN)和CUDA技术,第三节我们介绍基于CUDA架构的深度时空推理网络CUDA-DeSTIN。在第四节中,我们将介绍实验内容以及实验结果。最后,在第五节中,我们将给出了一个简短的结论和未来的研究方向。
深度时空推理网络(Deep Spatio-Temporal Inference Network, DeSTIN) [
如图1所示,在宏观层面上,DeSTIN是一种分层结构的模型。其每一层(Layer)都被分为若干个2 × 2的区域。第N − 1层的某个2 × 2的区域会作为第 N层的一个节点(Node)的输入,而第 N层的四个节点又会与第N + 1层的一个特定节点相连。在DeSTIN网络的最底层,原始的图像数据会直接输入。可以将 DeSTIN网络中的每一层都理解为原始输入数据在特定层次上的抽象。在中间层每一节点都包着数量聚类中心(Centrino),而节点可以通过无监督学习产生与到本层的观察值特征。
在这样的结构中,每个节点输出在其所在层的信念状态,这些信念状态会包含输入数据中存在的空间和时间规律。该系统顶层的输出可以作为有监督学习算法(如神经网络,支持向量机(Support Vector Machine))的输入,从而进行有效的模式分类。
在图1所示的例子中,数字“9”被直接输入第四层(Layer 4),第四层是该系统的底层,包含64 = 8 × 8个节点,该层接受原始图像的像素作为输入,每个节点对应一个的4 × 4像素区域,每个节点对应的
图1. DeSTIN结构示意图
像素区域不重叠,每个4 × 4的像素区域按照行优先的方式存储成一个16维的列向量,这个16维的列向量会作为该层输入数据。第四层的上一层是第三层(Layer 3),第三层包含16 = 4 × 4个节点,每一个节点接受第四层相对应的4 = 2 × 2个节点的输出作为输入,每个节点的对应的区域也是不重叠的。第三层的上一层是第二层(Layer 2),第二层包含4 = 2 × 2个节点,每一个节点接受第三层相对应的4 = 2 × 2个节点的输出作为输入,同样每个节点的对应的区域也是不重叠的。第一层(Layer 1)是该系统的顶层,它包含1 = 1 × 1个节点,该节点接受第二层4 = 2 × 2个节点的输出作为输入。该节点输出也就是DESTIN的输出是一个10维的向量,该向量可以作为有监督学习算法(如神经网络,支持向量机)的输入,从而进行有效的模式分类。
CUDA (Computer Unified Device Architecture) [
基于此,英伟达(NVIDIA)发明了CUDA并行计算架构。该架构通过利用GPU超强的处理能力,可以大幅度提升计算性能。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
在CUDA的架构下,一个程序分为两个部份:宿主(host)端和设备(device)端 [
在这一节的前半部分,我们简要的介绍我们所提出的CUDA-DeSTIN [
简要地将,CUDA-DeSTIN就是利用CUDA的架构下,重新实现了DeSTIN,从而使得训练速度得到了极大的提升。
有几点需要说明的是,在CUDA-DeSTIN中,聚类中心的数据存储到全局内存(global memory)中,每一个线程在计算相似度时会用到该数据。DeSTIN中的一个节点(node)对应一个区块(block),每一个区块有一个共享(shared memory),其大小为16 kilobytes。第四层(Layer 4)中的每个节点的输入大小为16 × 4 = 64 bytes,第三层(Layer 3)中的每个节点的输入大小为100 × 4 = 400 bytes,第二层(Layer 2)中的每个节点的输入大小为64 × 4 = 256 bytes,第一层(Layer 1)中的每个node的输入大小为48 × 4 = 192 bytes。
每个区块(block)中的每一线程(thread)等同于CUDA-DeSIN中的一个聚类中心(centroid)。线程的数据,也就是聚类中心的每一维数据存储在全局变量(global memory)中,输入数据存储在区块(block)的共享内存(shared memory)中。然后计算相似度,并将结果存储到共享内存(shared memory)中。所有的线程计算完成之后,进入排序阶段。
在CUDA-DeSTIN中,采用的是快速排序(Quicksort),这种方法是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。最后优胜的聚类中心(winning centroid)会存储在全局内存(global memory)中,在更新优胜的聚类中心(winning centroid)时,该数据会被再次使用。有关CUDA-DeSTIN的更多细节可以参考文献 [
利用CUDA-DeSTIN来进行基于面部图像的情绪识别,大体可以分为训练阶段和识别阶段。训练 CUDA-DeSTIN的过程可以分为如下步骤:
1) CUDA-DeSTIN 中的每一层(除最底层外),从下一层获得其输出的belief作为观测值。
2) 通过聚类中心更新算法得到新的聚类中心,然后依据更新后的聚类中心,计算概率分布向量Belief,并将此概率分布向量作为输出,向上传输到父层作为父层的观察值。
3) 在进行在线类聚的同时,CUDA-DeSTIN也会将父层类聚的赢者信息反馈到本层,更新本层的PSSA表,从而起到父层对子层的指导作用。
4) CUDA-DeSTIN中的每一层都按照此流程进行,在金字塔顶端的belief就是输入图像的关键特征。
5) 利用最上层的 belief作为一种有标签的训练数据,训练支持向量机(Support Vector Machine, SVM),从而实现对相应的分类器的训练过程。
当完成了训练过程之后,我们就得到了一个能够识别不同面部情绪的分类器(一个训练好的SVM和一个训练好的CUDA-DeSTIN模型)。可以利用以下的步骤来实现识别过程:
1) 将要识别的面部图片输入到CUDA-DeSTIN中,由此获得一组Belief作为观测值。
2) 根据训练得到的类聚中心与PSSA (不需要进行类聚中心的更新),计算概率分布向量Belief,并将Belief传输到父层作为父层的观察值。
3) 按照上述的过程,在训练好的CUDA-DeSTIN的顶部,输出的Belief就是待识别图片的特征。
4) 将第三步得到的特征,送入已训练好的分类器SVM,实现情绪识别。
我们利用了AR人脸数据集1的一个子集来进行实验。该子集由100个人组成,每个人有26个灰度图像,分别是165 × 120像素和24位深度。这些图像可根据拍摄日期分成两组。我们以一组作为训练样本,另一组作为测试组。数据集的样本显示在图2中。
图2(a)中的图AR样本没有特定的情绪倾向;图2(b)表示微笑;图2(c)是生气,而是愤怒。为了模拟在慕课环境中,视频图像质量往往不高的情况,高斯噪声和盐和椒盐噪声被添加到训练样本中。对于高斯噪声,均值为0,方差分别设为0.01,0.06和0.1。对于椒盐噪音,噪音密度分别设定为0.01,0.1和0.5。
在我们的实验中,我们将CUDA-DeSTIN和DeSTIN的顶层两层输出作为输入特征来训练SVM,并使用训练的SVM对相同的测试样本进行分类分类。为了测试其他深层网络,我们选择了三种不同的方法:深信念网(DBN),卷积神经网络(CNN)和堆栈自动编码器(SAE)等于。这三种其他方法的源代码是从DeepLearnToolbox2获得的。
表1记录不同噪音环境下的实验结果。实验表明,该算法在处理低到中等噪声水平时具有较强的竞争力,即使在噪声较大的情况下,EM-DeSTIN也具有良好的性能。
图2. AR数据库中的样本
高斯噪声 | 椒盐噪声 | |||||
---|---|---|---|---|---|---|
0.01 | 0.06 | 0.1 | 0.01 | 0.1 | 0.5 | |
DBN | 0.35 | 0.33 | 0.30 | 0.41 | 0.38 | 0.32 |
CNN | 0.43 | 0.41 | 0.40 | 0.45 | 0.42 | 0.33 |
SAE | 0.41 | 0.40 | 0.38 | 0.41 | 0.39 | 0.72 |
DeSTIN | 0.40 | 0.38 | 0.32 | 0.40 | 0.40 | 0.27 |
CUDA-DeSTIN | 0.41 | 0.42 | 0.35 | 0.40 | 0.43 | 0.27 |
表1. 五种不同深度系统的识别正确率
另外尤其需要说明的是,在Tesla上实现了基于CUDA-DeSTIN的面部情绪识别,训练时间只有1200秒(约0.3小时),而DeSTIN算法在2.4 GHz的CPU上训练需要50小时,速度提高了约166倍。在识别率在优的情况下,训练速度得到了极大的提升,这一特点,对于在线学习工具而言,具有至关重要的优势。
在本文中,我们提出利用一种CUDA加速的深度学习方法,来实现慕课教学中的情感识别。通常情况下,面向慕课的教学工具,必须考虑两个问题。首先,慕课环境下的视频图像往往具有较多的噪声,图像质量不高。其次,情绪识别必须具有较快的响应速度,也就是实时性必须较好。我们的方法的优点是在处理嘈杂的面部表情图片时,它具有较高的识别率。同时,该方法较原有的深度时空推理网络而言,训练速度得到了极大的提高。在未来,我们将进一步研究如何利用其它先进的智能方法 [
感谢厦门大学信息科学与技术学院仿脑智能实验室为本研究提供了相关的代码,并协助进行了实验。
此研究受到国家自然科学基金(No. 61673328)资助。
徐姜琴,张永锋. 面向慕课的情绪识别系统 A MOOC-Oriented Emotion Recognition System[J]. 创新教育研究, 2018, 06(04): 299-305. https://doi.org/10.12677/CES.2018.64047
https://doi.org/10.1016/S1389-0417(99)00005-4
https://doi.org/10.1109/79.911197
https://doi.org/10.1109/TIP.2015.2416634
https://doi.org/10.1038/nature14539
https://doi.org/10.1109/TEVC.2017.2771451
https://doi.org/10.1109/TCYB.2015.2502483
https://doi.org/10.1016/j.ins.2017.12.058