掌桥专利:专业的专利平台
掌桥专利
首页

一种压缩目标检测神经网络的方法

文献发布时间:2023-06-19 11:39:06


一种压缩目标检测神经网络的方法

技术领域

本发明涉及网络技术领域,尤其涉及一种压缩目标检测神经网络的方法。

背景技术

自2012年CNN在图像分类领域取得耀眼成绩后,开始有人试图将CNN运用到目标检测问题中。传统的目标检测算法由于基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余以及手工设计的特征对于多样性的变化并没有很好的鲁棒性等问题,使得其改善空间很大。基于CNN的目标检测算法开始发展,从两步走的R-CNN,Fast R-CNN,Faster R-CNN到一步走的YOLO系列,基于深度学习的目标检测算法在精度上逐步提升,但是其模型的复杂度也越来越高。由于目标检测神经网络的模型复杂度高,参数量大,因此也就存在如下缺陷:

(1)内存占用大,低内存设备无法运行。

(2)使得模型运行的推理时间长,处理速度慢。

发明内容

本发明的目的是要提供一种压缩目标检测神经网络的方法。

为达到上述目的,本发明是按照以下技术方案实施的:

本发明压缩目标检测神经网络的方法包括以下步骤:

S1:将原来复杂、参数量大的骨干神经网络替换成参数较少的骨干网络;选择目标检测准确度与原骨干网络最为接近的现有成熟简单网络将原来网络层较深的骨干网络替换为网络层较浅,网络结构相似的网络。

S2:使用基于特征内积FSP的蒸馏方法对替换后的网络进行训练,所述基于特征内积FSP的蒸馏方法用小模型去拟合大模型不同层特征之间的转换关系,从而直接用小模型去拟合大模型的输出;基于特征内积FSP的蒸馏方法具体为:使用一个FSP矩阵来表示不同层特征之间的关系,大模型和小模型不同层之间分别获得多个FSP矩阵,然后使用L2 loss让小模型的对应层FSP矩阵和大模型对应层的FSP矩阵尽量一致。

S3:使用通道剪枝的方式稀疏网络;具体地,通过减少卷积层中卷积核的数量来减小模型大小和降低模型计算复杂度,微调训练至收敛;通道剪枝的方式中通道的重要采用熵进行判断:

首先,从训练集取n张图片作为一个集合,使用原网络进行推断,设网络的输出为p个通道,则会得到一个n×p的张量,对于每一个通道,得到了该通道的向量pi,对pi的n个值,将之分到M个区间,然后计算这个通道的熵:

根据熵的大小进行排序,然后按照稀疏率进行裁剪;对于目标检测网络,仅仅对卷积层进行剪枝,全连接层则进行平均池化的操作;每次剪枝一个通道后进行一次微调,剪枝完所有通道后在多个epoch上进行微调。

S4:使用量化、权值共享及编码的方法压缩网络权重,进一步降低权重所占空间。量化、权值共享及编码的方法为:将浮点数量化为8位定点数,利用kmeans聚类算法计算权重的多个聚类中心,将权重量化为距离最近的聚类中心,然后对量化后的权重使用Huffman编码,进一步降低压缩率。

本发明的有益效果是:

本发明是一种压缩目标检测神经网络的方法,与现有技术相比,本发明将多种现有公知技术进行组合从而解决了目标检测网络压缩技术难题,能够使得目标检测神经网络模型复杂度降低,减少所占内存空间,(2)充分利用现有的神经网络压缩技术使得目标检测网络推理速度提升,提高运行效率,具有推广应用的价值。

附图说明

图1是本发明的方法流程图;

图2是本发明的通道剪枝裁剪方式示意图。

具体实施方式

下面结合附图以及具体实施例对本发明作进一步描述,在此发明的示意性实施例以及说明用来解释本发明,但并不作为对本发明的限定。

如图1所示:本发明压缩目标检测神经网络的方法包括骨干神经网络替换,稀疏剪枝,参数量化。第一步将原来复杂、参数量大的骨干神经网络替换成参数较少的骨干网络,然后迭代使用通道剪枝的方式稀疏神经网络中的连接数,最后使用量化技术将原本占32位的或者64位的参数降低至较少的8位或16位,再使用权值共享的方法进一步降低权重所占空间。

具体的实施流程包括以下步骤

S1:使用现有成熟的简单网络替换原来的骨干网络。网络替换的原则是将原来网络层较深的骨干网络替换为网络层较浅,网络结构相似的网络,具体选择的简单网络其目标检测准确度应与原骨干网络最为接近。

例如,ResNet替换为MobileNet较为适合。两个网络均采用了1×1→3×3→1×1的网络模式,并且二者都采用了ShortCut将输出与输入相加。

S2:使用基于特征内积(FSP)的蒸馏方法对替换后的网络进行训练,相比传统的蒸馏方法直接用小模型去拟合大模型的输出,该方法用小模型去拟合大模型不同层特征之间的转换关系。具体地,使用一个FSP矩阵来表示不同层特征之间的关系,大模型和小模型不同层之间分别获得多个FSP矩阵,然后使用L2 loss让小模型的对应层FSP矩阵和大模型对应层的FSP矩阵尽量一致。由于小模型和大模型之间通过L2 loss进行监督,必须保证两个FSP矩阵的维度必须相同,而FSP矩阵的维度为M×N,其中M、N分别为输入和输出特征的channel数,因此大模型和小模型的FSP矩阵需要一一对应。

S3:使用通道剪枝的方式稀疏网络。具体地,通过减少卷积层中卷积核的数量,来减小模型大小和降低模型计算复杂度。微调训练至收敛。

具体而言对于一个通道是否重要,我们采用熵来判断。

首先,从训练集取n张图片作为一个集合,使用原网络进行推断,假设网络的输出为p个通道,则会得到一个n×p的张量,对于每一个通道,我们就得到了该通道的向量pi,如何确定这个通道是否需要剪枝?我们对pi的n个值,将之分到M个区间,m表示将一个通道划分成m块、j代表一个通道,然后计算这个通道的熵:

然后根据熵的大小进行排序,然后按照稀疏率进行裁剪。比如,想要保留30%的通道,就删除后面70%的通道。

对于目标检测网络,我们仅仅对卷积层进行剪枝,全连接层则进行平均池化的操作。

每次剪枝一个通道后进行一次微调,剪枝完所有通道后在多个epoch上进行微调。

S4:使用量化、权值共享及编码的方法压缩网络权重。具体地,将浮点数量化为8位定点数,利用kmeans聚类算法计算权重的多个聚类中心,将权重量化为距离最近的聚类中心(使用线性初始化的方式对聚类中心进行初始化)。然后对量化后的权重使用Huffman编码,进一步降低压缩率。

本发明中的裁剪方式为通道剪枝,如图2所示,是针对通道(或者卷积核)进行的裁剪。前面连接的裁剪会导致后面连接的失效。

本发明对比实验为yolov3的压缩,实验环境为Ubuntu 18,Nvidia 1060 6G,实验数据集wilder face,使用的输入图像320*240,本发明使用不同神经网络压缩方案测试100张图的平均推理时间结果如下,

本发明在数据集ImageNet上进行不同模型压缩技术的组合实验,以Top1、Top5准确率为衡量指标,实验结果如下,

传统蒸馏后量化,使用ResNet50模型对MobileNet进行传统蒸馏方法训练150个轮次,然后再对MobileNet进行int8量化训练,实验结果如下表所示,

基于FSP蒸馏后量化,使用ResNet50模型对MobileNet进行基于FSP的蒸馏方法训练150个轮次,然后再对MobileNet进行int8量化训练,实验结果如下表所示,

通过上述两个对比实验可以看出基于FSP蒸馏的实验结果准确率相较于传统知识蒸馏不论是在Top1准确率还是Top5准确率都略微高出一些。

单权重剪枝后量化,对MobileNet模型采用单权重剪枝策略分别剪掉40%、50%、60%FLOPS,让后再对其进行动态int8量化训练,实验结果如下表所示,

通道剪枝后量化,对MobileNet模型采用通道剪枝策略分别剪掉40%、50%、60%FLOPS,让后再对其进行动态int8量化训练,实验结果如下表所示,

由上述两个实验结果可以总结出,本发明所设计的通道剪枝策略在量化后结果较单权重剪枝策略+量化结果好。

蒸馏+剪枝实验,首先使用ResNet50模型对MobileNet进行基于FSP的蒸馏方法训练150个轮次,然后再对MobileNet进行通道剪枝减掉50%FLOPS,实验结果如下表所示,

剪枝+蒸馏,首先对ResNet50模型进行通道剪枝减掉50%FLOPS,然后再进行基于FSP的蒸馏方法训练150个轮次,实验结果如下表所示,

通过对比上述两个实验可以总结出蒸馏、剪枝算法的组合顺序,先蒸馏再剪枝的策略结果准确率明显高于先剪枝再蒸馏的策略。

蒸馏+剪枝+量化,首先使用ResNet50模型对MobileNet进行基于FSP的蒸馏方法训练150个轮次,然后再对MobileNet进行通道剪子训练,最后进行int8动态量化训练,实验结果如下表所示,

剪枝+蒸馏+量化,首先将ResNet50模型进行通道剪枝训练,然后对剪枝后的模型进行基于FSP的蒸馏方法训练150个轮次,然后再对蒸馏后的模型进行int8动态量化训练,实验结果如下表所示,

这两个实验进一步验证了上面两个实验的结论,无论是否有量化操作,先蒸馏再剪枝的结果总是优于先剪枝再蒸馏的。

通过以上所有实验结果,我们可以分析出以下三条结论,

(1)基于FSP的蒸馏+量化实验结果优于基于传统蒸馏方法+量化实验结果;

(2)基于通道剪枝+量化实验结果优于基于单权重剪枝+量化实验结果;

(3)先蒸馏再剪枝的实验结果优于先剪枝后蒸馏的实验结果。

本发明的技术方案不限于上述具体实施例的限制,凡是根据本发明的技术方案做出的技术变形,均落入本发明的保护范围之内。

相关技术
  • 一种基于卷积神经网络的红外图像目标检测网络压缩方法
  • 一种面向遥感图像目标检测的神经网络压缩方法
技术分类

06120113007192