论文部分内容阅读
近年来深度学习逐渐成为信息科学领域的研究热点,而随着基于深度学习方法的研究技术的不断推进,数据特征信息的提取和处理效率获得了极大的提升,同时也推动了深度学习在计算机视觉、语音处理和自然语言处理等相关领域的迅猛发展。作为计算机视觉领域中一个比较重要的研究子方向,人脸表情识别可以广泛地应用到多个领域如人机交互、不良状态检测等。通常来说,表情不仅是一种非语言交际的方式,可以传递用于交流的辅助信息,也是人类情绪精神状态的潜在反映。通过表情辅助消息传递,可以让消息的信息量更为丰富,而消息接收者也能更为准确地把握信息的特征。所以在人机交互方面,表情识别可以用于让机器更准确地获取用户传递的消息内容;而在一些需要判断用户状态的场景,也可以利用表情识别完成不良状态的识别,比如判断驾驶员是否处于疲劳驾驶状态。通常非深度学习方法的表情识别主要是利用人工选取的表情特征,包括几何特征、统计特征和运动特征等,以及分类判别器的决策分类进行表情识别。这些方法都取得了一定的效果,但是过度依赖于特征的人工选取,鲁棒性较差,同时计算量非常大。深度学习方法则避免了特征的人工选取,同时其数据冗余度也保证了表情识别系统的鲁棒性。由于深度学习中卷积神经网络在图像识别上成绩斐然,相应地,基于卷积神经网络的表情识别方案也取得了一定成果。然而卷积神经网络处理时序信息的能力远不如其处理空间信息的能力。例如视频表情识别,是在视频数据中识别人脸表情,其本质上是在表情识别的基础上给输入数据增加时间维度,这样动态地判断表情类别有助于提高结果的准确率。而视频表情识别除了空间几何特征,时序特征也是重要的构成部分。所以完全基于卷积神经网络的视频表情识别方案通常会因为不能处理好时序信息而造成预测误差。除了针对视频表情识别任务进行网络模型设计外,其整个系统在硬件平台上的具体实现方式在应用中也是至关重要的一环。由于表情实际上是多种不同类型特征联合进行表征的复杂集合,所以通常需要结构比较复杂的神经网络来实现,而这又导致了其在神经网络的训练过程和推理过程中,都会占用大量的计算机存储、计算资源的问题。所以硬件资源丰富的云端计算往往是这类深度学习应用的首要选择。然而由于在云端计算方案中,数据获取端与数据处理端的物理距离远,需要网络介质传输,这不可避免地会面临网络传输带宽压力大,且难以达到实时性的问题,同时云端计算方案价格昂贵,这也给应用普及带来不便。因此边缘计算可作为切实可行的替代方案,它具备在获取数据的同时就对数据进行相应处理,实时性地反馈给用户的能力。但是受限于边缘设备有限的硬件资源,深度学习应用在不经优化的情况下很难在边缘设备上高效地运行,其对计算资源与存储资源的高占用亦不利于实时特性的实现,甚至会让其无法成功完成信息处理任务。为了支持例如视频表情识别的复杂神经网络在边缘设备高效地运行,目前学术界主要关注三个方向来利用有限硬件资源实现深度学习的推理任务:轻量化的模型结构设计、模型压缩技术和神经网络推理的高性能计算。轻量化的模型结构设计主要是用一些具备特定设计规则的神经网络模块,去取代复杂神经网络中较大较复杂的子网络结构。这种方案通常会以精度上较小损失的代价达到较高的模型尺寸缩减。而模型压缩技术则包括了量化、剪枝、蒸馏、低秩分解等压缩近似技术,这些技术同样会造成精度不同程度的降低。在神经网络推理的高性能计算方面,通用矩阵乘法以及一些减小计算量的算法被广泛研究和应用。上述方案在结构简单的网络模型上得到广泛应用并取得了不错的效果,不过针对在结构稍复杂的神经网络模型系统实现的相关研究仍比较稀少。而本文即是在系统的各个子模块,结合应用了不同优化方法,来达到最终对系统整体进行优化的目的。本文针对上述提到的问题,构建了深度压缩的时空模型用于在边缘设备上进行视频表情识别。比如针对卷积神经网络不能有效地处理时序信息的问题,提出了包含特征提取器和表情分类器的时空模型,其中基于卷积神经网络的特征提取器用于完成人脸表情的特征提取任务,而包含了时序信息的特征处理任务则由基于长短期记忆网络的表情分类器来承担。在此基础上,为了解决边缘设备上有限的硬件资源和神经网络复杂计算所需占用的计算资源、存储资源的矛盾,本文分别从特征提取器部分、表情分类器部分和搭载运行整个视频表情识别系统的硬件平台的角度出发进行了优化提升:在第一部分,本文首先介绍了卷积神经网络的基本架构,并讨论了如何对卷积神经网络推理过程进行优化。卷积在计算机上的直接代码实现表现为一个多重循环结构,这通常会导致在数据运算的时候发生频繁的数据存取,从而降低了计算访存比,增加了程序运行时间。而对于卷积操作,一种被广泛应用的优化技巧是将直接卷积实现转换成矩阵乘法实现。本文讨论了如何利用im2col算法,将卷积神经网络的输入以及卷积核转换成矩阵形式,将卷积通过矩阵乘法的形式进行运算,这样减小了循环结构的循环层数,也提高了计算访存比。在此基础上,又对参与运算的矩阵进行划分,以若干个小分块矩阵的形式进行计算,这使得对应的数据块能够载入容量较小的高速缓存器,有效地降低数据访问缺失率,在多级存储体系结构中可以实现不错的加速效果,同时还能利用每组数据的低延时运算操作来掩盖数据加载的高延时,实现计算和访存的并行。此外,基于硬件单元运行加法算子要快于运行乘法算子的事实,本文还利用了Winograd算法构造矩阵转换式,对输入、卷积核以及输出都进行了转换,用一定数量的加法算子代替了矩阵乘法中的乘法算子,最终实现进一步加速。在第二部分,本文接着介绍了长短期记忆网络,并应用了张量压缩技术对其进行优化。由于长短期记忆网络参数量大,冗余度高,导致其作为整个系统计算量最大的部分,占用了大量的硬件计算、存储资源,同时增加了时序信息的输入加剧了这一问题。本文将由特征提取器部分提取出的包含时序信息的特征张量化,之后送入同样将权重参数张量化后的长短期记忆网络。输入特征张量与权重张量间的运算,可以应用Tensor Train分解方法,将其近似地表征为一系列小尺寸的核心张量进行运算。因为权重张量在推理过程中保持常量,所以在运算前就完成张量化及张量分解,因此系统仅仅需要存储分解后的小尺寸核心张量,这意味着可以同时优化基于长短期记忆网络的分类器的计算量和存储占用。换言之,一方面张量压缩技术极大地缩减了长短期记忆网络模型的整体大小,具备极高的压缩比,从而缓解了存储空间占用的压力;另一方面,小尺寸核心张量的连续运算相较于原始运算实现,所需要的计算量也大大减少。在第三部分,本文提出了用于视频表情识别的时空网络模型。该模型包括两个主要部分:基于卷积神经网络的特征提取器和基于长短期记忆网络的分类器。该时空网络模型能够对输入数据的空间信息以及时序信息进行处理,最终输出视频所包含的表情类别的预测结果。在利用该时空网络模型实现视频表情识别功能的同时,本文也将第一、二部分提到的优化技术应用到视频表情识别系统上来达到加速效果。在第四部分,对于搭载运行整个视频表情识别系统的边缘硬件平台:本文针对平台上不同的硬件计算单元都做了适配和优化实现。对于CPU承担计算任务的情况,本文主要是针对特定的多级存储体系进行计算优化。而对于嵌入式神经网络处理器,本文将基于卷积神经网络的特征提取器的推理部署在其上运行,CPU负责表情分类器部分的运算,这样可以有效地利用其脉动矩阵单元的计算特点实现加速。而对于达芬奇AI核心,采用和嵌入式神经网络处理器同样的方案,利用AI加速核心实现特征提取部分的加速。最后在第五部分,本文在CK+数据集、AFEW 7.0数据集以及MMI数据集上的准确率分别达到了97.96%,55.60%和97.33%。此外,本文的张量压缩方案使得用于时空序列处理的基于长短期记忆网络的分类器的参数数量级从百万级降到了千级,占用存储空间从600多兆字节压缩至约3兆字节,压缩率达到了0.4%。同时,其在NVIDIA 1080Ti GPU上每秒传输帧数达到45.5,和未采用张量压缩的实现方案相比提速约59.6%。除此之外,本文所提出的视频表情识别方案在边缘设备上也实现了测试和验证。相比在ARM CPU上的直接实现,本文适配不同移动端硬件计算单元,包括CPU、嵌入式神经网络处理器和达芬奇AI核心的优化实现在速度方面提升分别达到1.2倍,2.7倍和7.92倍。