APP下载

基于嵌入式平台的卷积神经网络压缩加速方法*

2022-03-01贺彦钧张旭博

通信技术 2022年12期
关键词:卷积神经网络深度

贺彦钧,张旭博

(中国电子科技集团公司第三十研究所,四川 成都 610041)

0 引言

近年来,深度学习模型发展快速,在机器视觉任务上取得了长足的进步,在某些任务上,其辨识能力甚至超过了人类,例如,卷积神经网络(Convolutional Neural Network,CNN)目标检测技术在智能监控、工业检测、智慧城市等领域起到了支撑作用。虽然深度学习模型的网络架构被设计得越来越深,性能变得越来越优,但参数量资源消耗大成了一个普遍的问题。例如,主流的ResNet50的参数量达到25.5 MB,运行时内存占用约1.4 GB,同样的还有DensNet、Unet等[1]。此外,目前的无人机、无人车及智能家居、物联网等低算力平台同样希望能够AI赋能,即能够在平台硬件资源有限的情况下去完成一些较为智能的任务,例如目标检测、人脸识别、图像分割等任务,而如何在嵌入式设备和移动平台上运行深度学习智能模型成为目前业界共同关注的问题,也是学术界和工业界的研究热点。

目前学术界已基本证实,大部分的深度神经网络模型存在参数过度冗余,且巨量模型参数中存在较多的无效参数,然而可以通过一些方法来减少模型的参数去除冗余,同时保持较少的精度损失或者不损失精度。目前学术界已提出许多方法来压缩和加速深度神经网络,如模型剪枝、模型量化、模型蒸馏、低秩分解、紧凑架构设计等方法。例如,Zhang等人[2]提出的Shufflenet引入了一种高效的框架,采用点组卷积和通道洗牌两种操作,在保持相当的分类精度的同时显著降低了计算复杂度。同时,Dai等人[3]提出的PolyNet证明在网络设计中多样化的结构作为一种超越深度和宽度的替代维度,可以提高图像识别的性能。

本文针对无人车嵌入式设备上深度神经网络模型的压缩加速问题,提出了一套结合模型蒸馏、网络结构搜索、模型量化的通用模型压缩方法,并提出了一种新的基于无锚点(anchor-free)的轻量级自分组卷积神经网络目标检测模型。该方法首先通过对网络通道的压缩、小卷积核替换和自分组卷积来搭建轻量级主干(backbone)[4]网络;其次结合Anchor-Free的目标检测方法来搭建小网络,同时通过知识蒸馏来进行网络训练,让小网络学习当前最优效果(State of The Art,SOTA)的目标检测模型的检测能力;最后通过深度模型的非对称统计后量化的方法进一步压缩模型大小,以达到提速的目标。通过综合实验表明,该方法显著地减少了网络模型的规模,并且在多种流行的视觉数据库PascalVoc和ImageNet的测试上,显示出优越的性能,并在无人车平台上达到了实时目标检测的效果,这为嵌入式平台或移动平台的深度学习模型的部署和应用提供了重要的指导。

1 基于无人车的模型压缩加速方法

1.1 方案设计

无人车选用基于树莓派和Nano板的机器人操作系统(Robot Operating System,ROS)平台,该平台在当前的无人机和无人车上的应用比较普遍且具有代表性。在此基础上,设计基于分组卷积的轻量级实时网络结构(LightWeight CNN,LT-CNN),用于无人车目标检测的模型基础架构。然后选用当前检测效果非常好的大模型,即Anchor-free的全卷积单阶段的目标检测模型(Fully Convolutional One-Stage Object Detection,FCOS)网络,来进行知识蒸馏,通过teacher-net与student-net进行联合蒸馏训练的方式,让LT-CNN网络学习到当前SOTA网络的特征提取能力,从而获得相当的目标检测能力。最后,将训练完成得到的模型进行进一步的模型参数压缩,即使用后统计非对称量化方法,压缩模型参数的大小,以提高模型的加载与推理速度,同时起到降低模型推理时硬件功耗的目的。

1.2 轻量级模型LT-CNN结构设计

FCOS目标检测算法是一种基于全卷积网络(Fully Convolutional Networks,FCN)的逐像素目标检测算法,实现了无锚点(anchor-free)、无提议(proposal free)的解决方案,并且引入了中心度center-ness的思想。该算法在召回率等方面的表现接近甚至超过目前很多先进主流的基于锚框目标的检测算法。因此,本文选择FCOS网络作为轻量级模型的设计对标基础和模型蒸馏的teacher网络。Iandola等人[5]提出的SqueezeNet实现了与AlexNet相同的精度,但只用了1/50的参数量,其采用的squeeze模块先利用1×1卷积进行降维,然后利用1×1和3×3卷积组合升维,并将Pooling采样延后,给卷积层提供更大的激活图,以提供更高的准确率。在MobileNets中,采用深度可分离卷积(Depth-Wise Separable Convolution)结构来实现在不降低网络性能的前提下减少网络参数和计算量的目的。在SENet中,通过学习的方式来自动获取每个特征通道的重要程度,利用特征通道之间的关系来提升网络性能。

本文设计的轻量级模型LT-CNN将SqueezeNet、SE-Net和MobileNets的思想融入到hourglass架构中。LT-CNN将residual block替换为SqueezeNet中的Fire module,将3×3标准卷积替换为MobileNets的3×3深度可分离卷积,同时顺着空间维度来进行特征压缩,利用SE-Net的Squeeze操作和Excitation操作来提升模型的性能[4]。具体的网络结构如图1所示。

图1 LT-CNN网络结构

LT-CNN网络的基础架构是带skip的Hourglass结构,并采用anchor-free的目标检测网络架构,在backbone后接一个分类分支和一个框回归分支。同时大量地使用了3×3深度可分离卷积和1×1的卷积结构,并创新地结合卷积通道的attention结构,让网络推理快速且准确[6-7]。

1.3 模型的知识蒸馏

搭建了基本的轻量网络结构LT-CNN以后,本文采用模型蒸馏训练的方式来实现知识迁移,通过构建FCOS与LT-CNN的知识蒸馏网络来实现FCOS模型检测能力到LT-CNN的迁移。

1.3.1 知识蒸馏

Hinton的文章Distilling the Knowledge in a Neural Network首次提出了知识蒸馏(暗知识提取)的概念,如图2所示,通过引入与复杂但预测精度优越的教师网络(Teacher network)相关的软目标(Soft-target)作为Total loss的一部分,以诱导精简、低复杂度、更适合推理部署的学生网络(Student network)的训练,实现知识迁移(Knowledge transfer)[8]。

如图2所示,教师网络(左侧)的预测输出除以温度参数(Temperature)之后,再做Softmax计算,可以获得软化的概率分布(软目标或软标签),数值介于0~1之间,且取值分布较为缓和。其中,Temperature数值越大,分布越缓和;而Temperature数值减小,容易放大错误分类的概率,引入不必要的噪声。针对较困难的分类或检测任务,Temperature通常取1,确保教师网络中正确预测的贡献。Total loss设计为软目标与硬目标所对应的交叉熵的加权平均(表示为KD loss与CE loss)。另外,教师网络的预测精度通常要优于学生网络,而模型容量则无具体限制,且教师网络推理精度越高,越有利于学生网络的学习。

图2 知识蒸馏

设标签为y,网络预测结果为则CE损失函数为:

Hinton的KD方法是在softmax之后做KL散度,同时加入了一个RL领域常用的超参温度参数T,也有一个半监督的工作在softmax之后接L2 loss,其表达式为:

Hinton等人做了3组实验,其中两组都验证了知识蒸馏方法的有效性。在美国国家标准与技术研究院收集的MNIST数据集上的实验表明,即便有部分类别的样本缺失,新模型也表现得很不错,且只需要修改相应的偏置项,就可以与原模型表现相当。语音任务实验也表明,蒸馏得到的模型比从头训练的模型捕捉了更多数据集中的有效信息,表现仅比集成模型低了0.3个百分点。总体来说,知识蒸馏是一个简单而有效的模型压缩和训练的方法。

1.3.2 蒸馏训练设计

蒸馏训练就是先训练好一个大网络,在最后的softmax层使用合适的温度参数T,最后训练得到的概率称为“软目标”。以这个软目标和真实标签作为目标,去训练一个比较小的网络,训练的时候也使用在大模型中确定的温度参数T。在蒸馏结构搭建时有比较常用的结构,例如共享学习低水平特征,teacher-student网络模型使用通用模型的权重进行初始化,或者使用逐级蒸馏的方式,逐步进行知识迁移。

本文根据目标检测网络FCOS的网络对称结构的特点对蒸馏结构进行改进,让teacher网络不但能在最终的软目标对student小网络进行指导,而且能在中间层对student小网络进行指导。这种特殊的改进不但能让网络训练速度更快,也能让student网络习得更多的知识,过拟合风险更小,从而得到一个不错的表现。具体的模型蒸馏结构如图3所示。

图3 模型蒸馏结构

1.4 模型的量化压缩

深度神经网络模型由于其网络大且深,模型的参数量巨大,导致最终训练得到的模型文件都比较大,例如ALexNet的单个模型文件可以达到200 MB。深度卷积神经网络模型的参数一般都是浮点数形式,普通的压缩算法很难压缩它们。同时,模型推理也使用浮点数,计算时消耗的计算资源量(内存、显存空间和CPU、GPU时间)也比较大。

量化压缩技术可以在不影响模型准确率的情况下,在模型内部采用比较简单的数值类型进行计算,计算速度会提高很多,从而消耗的计算资源会大大减小。特别是对无人车或无人机等低算力设备来说,这一点尤其重要。模型量化后依然可以较好地保持模型的准确率,其原因主要有以下3点:

(1)训练好的神经网络模型里,权重、活化张量的数值通常分布在一个相对较小的范围中,如权重的数值范围为-15~15,活化张量的数值范围为-500~1 000;

(2)神经网络对噪声的适应性强,将数量化到一个更小的数集中并不会对整体的结果带来很大的影响;

(3)通过量化操作,可以有效提高点乘的计算效率。

量化一般分为直接统计量化和量化感知训练,本文使用的是后统计量化的方法,直接对模型进行量化,不需要对模型进行再训练。因为小模型是蒸馏训练完成的,再进行Finetune可能会引起准确率较大的波动,所以直接进行后统计量化更为有效和便捷。

2 验证实验设计与分析

2.1 实验条件

模型蒸馏实验在Win10系统下进行,CPU为Intel Core i7-8086K,GPU为NVIDIAGTX1080TI,软件平台为CUDA8.0、CUDNN5.1以及Python3.7等。

无人车端实验在Ubuntu 16.04系统下进行。硬件使用Pixahwk 2.4.8控制器,并采用新标准的32位处理器STM32f427,搭配5611气压计。无人车控制固件搭建Ardupilot系统,提供先进的、功能齐全的、可靠的自动驾驶软件系统。

2.2 数据及评价指标

2.2.1 目标检测实验数据集

本文利用ImageNet数据集进行图像分类的预训练,以提高特征提取网络的图像分类性能。预训练之前,需在ImageNet数据集中提取出与PASCAL VOC数据集相同的20种类别的图像组成的预训练图像集,并结合PASCAL VOC 2007和2012的trainval训练验证集(共16 551张图像)作为本算法的训练集。通过随意翻转、随机缩放、任意裁剪和色彩抖动等方法,对训练集进行数据增强。测试集采用PASCAL VOC 2007的测试集。

2.2.2 评价指标

参数量(params):表示模型中的参数数量,用于反映模型规格。

浮点运算次数(Floating Point Operations,FLOPs):表示网络计算量,用于衡量模型的时间复杂度。

精准度(accuracy):表示模型对图像分类的精准程度。

平均精度(Average Precision,AP):用于评价模型对单个类别的检测结果,综合地反映目标检测模型的性能。

平均精度均值(mean Average Precision,mAP):用于评价模型对存在多个类别的目标的检测效果。

每秒帧数(Frame Per Second,FPS):用于评价目标网络每秒可以处理(检测)多少帧(多少张图片)。

2.3 LT-CNN模型实验结果及分析

LT-CNN与CenterNet-ResNet101的对比实验结果见表1。

表1 对比实验结果

利用LT-CNN模型对无锚框目标检测算法CenterNet的主干网络进行通道剪枝,对剪枝后的算法在PASCAL VOC数据集上进行实验验证,结果发现,剪枝后的CenterNet-ResNet101在mAP仅损失0.7%的情况下,FPS提升了45.0%,参数量减少了40.0%,计算量降低了40.0%,表明LT-CNN模型算法可以有效提高无锚框目标检测算法的检测速度,减少计算量和资源消耗。

3 结语

本文所设计的LT-CNN模型,通过在结构中引入attention机制,采用分组卷积与快速卷积结构使模型推理速度加快,并通过知识蒸馏学习当前SOTA目标检测模型Fast的目标检测能力,最后通过后统计量化方法将推理模型进一步压缩提速,实现了面向Nano无人车嵌入式平台的轻量级卷积神经网络压缩加速方法。模型不仅在无人车上具备保持大型目标检测网络检测精度的能力,而且也达到了高精度实时运行的能力。

猜你喜欢

卷积神经网络深度
基于3D-Winograd的快速卷积算法设计及FPGA实现
深度理解一元一次方程
卷积神经网络的分析与设计
神经网络抑制无线通信干扰探究
从滤波器理解卷积
基于神经网络的中小学生情感分析
深度观察
深度观察
深度观察
基于傅里叶域卷积表示的目标跟踪算法