嵌入式人脸识别实验系统的模型压缩及其分析

2022-01-27 03:33陈利民严伟豪李春泉
南昌大学学报(理科版) 2021年6期
关键词:剪枝网络结构嵌入式

陈利民,严伟豪,梁 音,李春泉

(南昌大学信息工程学院,江西 南昌 330031)

人体的生物特征因基因的不同从而具有唯一性,且在已知的生物特征中,人脸的数据具有易采集的优点。因此,人脸识别成为了身份识别和人机交互的关键技术之一。深度卷积神经网络模型应用于人脸识别系统,识别率和抗干扰性能较传统模式识别方法有更优表现[1]。在嵌入式人工智能(AI,Artificial Intelligence)实验平台上设计基于卷积神经网络模型的人脸识别系统,将最新的人工智能科研成果融入实验教学,以增强学生对嵌入式人工智能理论知识的理解。深度网络的计算复杂度高,然而现有国产化嵌入式人工智能芯片仍在起步阶段,运算能力较低,大部分只能在定点模式下实现一万亿次级别(TOPS,Tera Operations Per Second)的计算性能峰值[2]。研究深度卷积模型压缩及其在国产化实验平台的性能,有助于打通人工智能算法在嵌入式计算和边缘计算应用场景中落地的屏障。

为了实现人脸识别模型在嵌入式人工智能实验平台的部署,提出了一种基于跳连接(Skip-connection)的DarkNet19人脸识别模型。模型部署在国产嵌入式人工智能K210实验系统上,对比分析了量化、剪枝这两种压缩方式前后的性能差异。将基于跳连接的DarkNet19压缩模型与DarkNet53[3]、MobileNet-v1[4]压缩模型对比,深入对比分析了上述压缩模型在识别帧率、准确率、模型的复杂度等方面的性能差异。

1 现有嵌入式AI实验系统的不足

由于核心芯片性能的限制,现有嵌入式人工智能实验多数使用高性能计算工作站或云计算服务器模拟嵌入式人工智能模型推理,仅停留在基础理论阶段。缺少嵌入式计算场景或边缘计算场景下工程案例的引导,学习者难以建立完整的嵌入式AI知识框架。国内已有研究团队使用嵌入式实验平台实现手写体数字识别等嵌入式AI工程案例[5-6],将理论知识实例化,这将大大提高学习者的学习效率[7-8]。将人脸识别、多目标物体识别等高复杂度模型部署到嵌入式人工智能实验平台,可以将数据集处理、网络结构搭建、模型训练、模型压缩、量化、模型部署等过程实例化,培养学生在嵌入式人工智能方向的创新能力。

虽然国产化嵌入式人工智能实验平台计算能力已经有了快速的提升,但其计算资源仍不能直接支撑深度神经网络的部署。以嘉楠科技自主研发的机器听觉多模态识别的系统级芯片(SoC)勘智K210及其嵌入式开发实验平台为例。K210包含RISC-V 64位双核高性能低功耗CPU和卷积神经网络加速处理器KPU等加速计算单元。KPU是通用神经网络处理器,内置卷积、批归一化、激活、池化运算单元。KPU实时工作时最大支持神经网络参数大小为5.5MiB到5.9MiB;其计算峰值可达1TOPS;支持主流训练框架,比如YOLO、Keras和Pytorch等,按照特定限制规则训练出来的定点化模型[9]。VGG-16、ResNet50等主流深度网络参数量超过100M。嵌入式人工智能实验平台资源受限,迫切需要研究网络模型压缩及其对性能的影响。

2 嵌入式人脸识别实验案例的网络结构设计与优化

针对国产化嵌入式人工智能实验平台资源有限的现状,同时为了增加识别的准确率,精简网络结构,以DarkNet19网络为主体基础,提出了一种基于跳连接的DarkNet19网络优化结构。DarkNet19实际上是Yolo-v2网络中提取特征的主干网络,网络结构如表1所示,其包含19层卷积层,5个最大池化Maxpooling层,为了减少网络参数,DarkNet19去掉了全连接(FC,Full Connect)层,并在每个卷积层后面都加入了一个批量归一化(BN,Batch Normalization)层用以提升模型收敛速度,防止过拟合情况的出现。

表1 DarkNet19网络结构

以跳连接的DarkNet19网络作为主体结构,首先截取Convolutional Filters 1000之前的网络,在第18层卷积后增加了4层网络,第19~22层网络参数如表2所示。增加了3个3×3的卷积层,同时在第21层增加了转移层(Passthrough Layer),把浅层特征图连接到深层特征图。在该层引入了4个跳连接,通过跳连接来对数据进行特征重排,将特征图像分别按行和列取样,并使用TensorFlow算子space_to_depth对数据进行处理,将处理后的子特征图按通道连接得到特征图。

表2 第19~22层网络结构参数

为增加最终预测的可靠性,将最后一层Convolutional Filters1000的卷积移除,并增加了一个1×1卷积层生成预测输出。其卷积核数量Filters根据式(1)确定:

Filters=NUM_ANCHORS×(4+1+NUM_CLASS)

(1)

其中ANCHORS值由式(2)确定,CLASSES则由检测框内的种类确定。Anchor主要解决设置的参考框内是否有目标,若有目标,则目标框与参考框之间的偏差大小的问题,其定义如式(2)所示:

anchors=generate_anchor(feature_map_sizes,anchor_sizes,anchor_rations)

(2)

式(2)中的feature_map_sizes指的是该层卷积核的个数,由卷积核的数量决定,其大小计算公式如式(3)所示:

(3)

其中,heightin与widthin指输入尺寸,heightout与widthout指输出尺寸,padding指边界填充,stride指步长。

3 深度神经网络模型压缩

模型压缩是指对已经训练好的深度模型进行精简,进而得到一个小而精的网络。压缩之后的模型网络结构更加简单,参数也相应减少,并且有效降低了模型运行资源的消耗。目前,模型压缩的方式一般有模型剪枝,更精细化模型设计,权重量化等。

3.1 模型剪枝

使用全局贪婪剪枝Pruning Filters for Efficient Convnets的方法进行模型剪枝[10],该方法使用加权系数的绝对值和大小来评判其重要性,其原理如图1所示,将中值较低的卷积核裁掉,并验证裁剪后的准确率,若某一层的裁剪对准确率影响较大,则表明该层较敏感,则减小对该层的裁剪力度或是不做处理。相对于剪枝前的模型,剪枝后的模型大小和参数小了很多,其业务逻辑层的运算量也大幅降低,而最终性能却没有受到影响。

图1 中间层神经元裁剪

基于跳连接的DarkNet19网络模型剪枝过程如下:

1.将基于跳连接的DarkNet19网络训练出的权重文件使用工具Darkflow,将其转换成为Yolo-v2模型。该模型不仅保留了模型权重,还包含整个模型的信息。

2.对Yolo-v2模型进行稀疏训练[11]。其原理是引入一个比例因子γ,并将其与训练网络的权值结合,在稀疏的正则化处理后直接去除比例因子通道,最终得到微调剪枝网络。其过程如式(4)所示:

(4)

其中,x表示训练的数据;y为数据标签;W为训练参量,λ为稀疏系数。选择g(γ)=|s|,也就是L1正则化,通过稀疏训练后的模型相对原来模型有效地降低了模型存储空间。

3.稀疏训练后开始对模型进行剪枝。首先获得BN层权重,并根据大小进行排序,其最大与最小值则为阈值上下限,选择需要剪枝的ID,将其剔除,同时设定裁剪参数的占总参量的百分比,将BN层权重乘以不需要剪枝的通道下标,最后输出每层保留的通道数列表,获得剪枝后的模型,并对剪枝后的模型进行评价。

3.2 精细化模型设计

针对轻量化网络结构,除了基于跳连接的DarkNet19网络,还对比使用了MobileNet-v1作为主干网络。MobileNet-v1是一个专门部署于嵌入式或者基于移动网络终端智能设备上的一种轻量级CNN网络,在准确率和大幅下降的条件下,大大地减小了模型的参数,其规模仅为VGG16的1/32。MobileNet的最大特点为深度可分离卷积(Depthwise Separable Convolution),深度可分离卷积块由两部分组成,分别是普通卷积和深度可分离卷积。使用此种结构的目的是减少计算的参数。1x1卷积则完成了通道数的调整等相关工作。

深度可分离卷积结构在计算量上与标准卷积有较大的差别。假定输入特征图的大小为DF·DF·M,而输出的特征图为DF·DF·N,其中DF是特征图的width和height,假定两者相同。对于标准卷积来说DK·DK,其计算量为:

DK·DK·M·N·DF·DF

(5)

而深度卷积网络的计算量为:

(6)

由式(6)可知,当N较大的情况下,深度可分离卷积相较标准卷积可以降低大约9倍的计算量。

先对图像进行图像人脸位置的标定,仿射变换等预处理,然后输入MTCNN网络[12],其中共包含Proposal Network、Refine Network和Output Network三个子网络,分别记为P-Net、R-Net和O-Net。P-Net将滤除大部分候选图像并且使用边框回归和关键点定位器来筛选人脸区域,并将可能的人脸区域输出,传入R-Net进行更精细的筛选,然后输出一个可靠人脸区域到O-Net,O-Net最后进行一次筛选,在输出图像的基础上,它也会输出5个面部关键点的位置以及准确的目标框大小和坐标,将输出结果传入MobileNet-v1网络进行训练,得到人脸识别轻量化模型。

3.3 模型量化

模型量化有两种基本方式,即后训练量化和训练时量化,我们选择后训练量化。相较于后者,这种方式无需重新训练模型,其原理是使用已有的浮点模型,将其量化为定点型模型,通过降低权重和激活输出的方式来降低模型复杂度,这种方式具有很多优点:

(1)更小的模型尺寸:当使用8bit量化时,模型的尺寸将降低四倍,更小的尺寸意味着在模型下载时间缩短,模型占用内存减少,并且模型精度损失较少。

(2)低功耗:移动8bit定点型数据与移动32bit浮点型数据相比,在效率上前者比后者高4倍。因此减少数据移动量将在很大程度上降低功耗。

(3)激活输出所需的内存少:降低精度,数据就会占用更少的内存,也就有利于缓存更好地重用。

(4)更短的推理耗时:大多数处理器8bits数据的处理速度高于32bits数据。

为了与使用基于跳连接的DarkNet19网络结构训练出的模型做对比,量化时选择将经过Darkflow转换后的Yolo-v2模型的权重与激活输出一起量化为8bit。量化卷积网络如图2所示。qx、qa1、qa2、qy表示量化后的定点数。先将输入量化成定点整数qx,然后根据量化公式(7)计算qa1、qa2与qy,其中w表示卷积的权重,q表示定点整数,a表示输出的激活值,S和Z表示scale和zero point。

图2 量化卷积网络

(7)

为了确定尺度scale和zero point,也就是激活输出的动态范围,准备了1200张带标定的人脸数据集,利用这些数据集来估计全精度模型的x、a1、a2、y的取值范围,也就是min、max参数,由线性量化公式(8)和(9)确定每一层卷积输出特征图的量化因子尺度scale和zero point。

(8)

(9)

其中,r表示浮点实数,minq与maxq由式(10)和式(11)决定,num_bit表示量化位数,选择量化为8比特无符号整数。

minq=-2∧(num_bit-1)

(10)

maxq=2∧(num_bit-1)-1

(11)

最后利用全连接层计算出来的scale与zero point,推算回浮点实数,得到最后的输出。

4 压缩模型的部署

K210嵌入式AI平台的实物及各模块展示如图3所示,该平台与RT-Thread深度合作,构成了集数据获取、开发编译、应用部署、实时结果显示的完整系统框架。当系统运行时,会将摄像头捕捉到的画面和人脸识别结果实时显示在LCD屏幕上。

图3 嵌入式人工智能实验系统

使用了Darkflow将基于跳连接的DarkNet19网络下训练出来的模型权重转换成为Yolo-v2模型,也就是Tensorflow模型文件,从而还原了模型的所有信息。但由于Tensorflow模型文件在K210上的支持并不友好,因此,还需要将其转换为Tflite模型文件,Tflite模型支持算子更多,且模型更小,对嵌入式平台具有更好的支持环境。通过调用Tensorflow官方库里的tf.lite.TFLiteConverter函数,可以实现Tensorflow模型到Tflite模型的转换。但并不是所有模型文件都可以使用这个转换器,对于Keras或Pytorch模型,则需要先使用ONNX接口将其转换为Tensorflow模型,然后才能使用Tensorflow转换器转换为Tflite模型。

为了将转换后Tflite模型部署于K210嵌入式开发平台,使用基于RT-AK的部署套件,它是RT-Thread团队对RT-Thread系统开发的一套集成部署与编译开发套件,其工作方式主要基于RT-AK Tools与RT-AK Lib两大组件,前者主要是在上位机实现AI模型转换,并且部署到BSP,获得集成AI的BSP,后者则是在嵌入式端完成模型推理,包括模型注册、初始化、获取输出等,其工作流程如图4所示,通过拉取第三方目标平台插件代码并执行插件相关工作来实现模型在不同平台的适配。

图4 压缩模型部署流程

5 实验结果与分析

为了研究不同网络模型压缩对识别性能的影响,将基于跳连接的DarkNet19网络、MobileNet-v1网络训练出的人脸识别模型都部署在K210实验平台进行本地端对比。同时探讨模型在经过模型剪枝,模型量化后其精细度和准确率是否会有明显的降低。

将模型部署在K210开发平台,图5显示了四种不同网络人脸识别结果。实验平台能很好地检测人脸,基于跳连接的Darknet19网络模型在人脸识别准确率上相对优化前提高了5%;DarkNet53网络模型在人脸识别准确率上效果最好,同时,模型参数也最多。图5-c显示在MTCNN+MobileNetV1网络下多人环境人脸识别检测的结果,人脸识别准确率最高达到了89%,与DarkNet53网络模型识别结果相比,其在准确率相当的情况下模型要小很多。

(a)Darknet19 (b)基于跳连接的Darknet19 (c)MTCNN+MobileNetV1 (d)Darknet53

四种模型压缩前后的差异主要表现在推理耗时、检测准确率、模型参数规模等方面。图6描述在四种不同网络训练出的模型在同一场景下经过压缩前后准确率的不同。可以看出使用更精细化的MTCNN+MobileNetV1网络或是DarkNet53训练,模型准确率更高。基于跳连接的DarkNet19网络相对优化前在准确率上的提升明显,已经基本和使用基于MTCNN+MobileNet-v1二重网络模型准确率相同。模型在压缩后,其精度都会有一定的损失,但模型准确率都能保持在80%以上。

网络模型类型

图7描述四种网络模型压缩前后的模型推理时间变化,使用基于跳连接的Darknet19网络模型推理时间最短,随着网络结构的复杂,模型推理时间也在不断增加;而在模型经过量化和剪枝后,推理时间相对压缩前减少了20%;使用Darknet53网络训练的模型由于参数规模大,因此其模型推理时间最长,不适合部署在移动端。

网络模型类型

图8显示了模型在经过剪枝和量化后模型大小变化。可以看出,模型压缩使得模型大小缩小约20%,模型参数也相应减少。而量化与剪枝相比,前者所带来的收益要大于后者,模型参数减少的比例要大。

网络模型类型

6 结论

本文提出了一种基于跳连接DarkNet19网络及其压缩的人脸识别模型,部署在国产嵌入式人工智能实验平台K210上实现基于深度神经网络模型压缩的嵌入式人脸识别系统。该实验系统将人工智能碎片化的理论知识实例化,让学生摆脱传统教学模式下的被动学习,转变为主动面向嵌入式系统国产化进程培养学生人工智能方向的创新能力。可以对系统使用的人脸识别模型进行了模型剪枝、量化、精细化模型设计等模型压缩方式,还使用了MTCNN与MobileNet-v1网络、DarkNet53网络训练人脸识别模型以对比网络性能,探讨了不同的模型压缩方式,不同的网络结构对人脸识别系统的影响。

猜你喜欢
剪枝网络结构嵌入式
基于IMX6ULL的嵌入式根文件系统构建
人到晚年宜“剪枝”
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
基于YOLOv4-Tiny模型剪枝算法
快递网络结构研究进展
基于激活-熵的分层迭代剪枝策略的CNN模型压缩
基于AutoML的保护区物种识别①
基于ARM嵌入式的关于图像处理的交通信号灯识别
TS系列红外传感器在嵌入式控制系统中的应用
剪枝