一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种用于树莓派处理器的模型剪枝方法及系统与流程

2021-12-07 21:10:00 来源:中国专利 TAG:


1.本发明涉及图像识别技术领域,更具体地,涉及一种用于树莓派处理器的模型剪枝方法及系统。


背景技术:

2.近年来,深度学习技术以其良好的性能,在计算机视觉、自然语言处理等领域都取得了巨大的成功。尤其是在计算机视觉领域,深度学习在图像识别、目标检测、人脸识别等具体任务中发挥了重要作用。但其使用的深度神经网络具有极深的网络结构,即含有大量的级联卷积层,这导致深度神经网络模型中的参数量巨大,需要较多的计算资源和存储资源的支持。但是,树莓派处理器的计算资源和存储资源有限,使得深度神经网络难以在树莓派处理器上进行部署。
3.在本发明之前,现有技术主要是通过如下方式对树莓派处理器中的模型进行压缩。通常采用量化、非结构化剪枝和结构化剪枝的方法。其中,量化方法涉及用较低精度的表示来替换cnn权重矩阵中的高精度浮点。但是,量化方法需要先天的硬件支持;非结构化剪枝方法一样需要在专用的软件或者硬件上才能获得加速效果;而结构化剪枝不需要特定的硬件或者软件进行加速,但是在进行过度参数剪枝时会破坏模型的精度。因此,现有模型剪枝方法有着精度和效率相矛盾的问题,因此,能保证精度的方法过于复杂,难以实际使用;而简单易用的剪枝方法却又不能很好的避免精度损失。


技术实现要素:

4.鉴于上述问题,本发明提出了一种用于树莓派处理器的模型剪枝方法及系统,提出针对于树莓派的模型压缩方法,并通过模型剪枝优化网络结构,使卷积神经网络在树莓派上的运行速率达到每秒24帧,实现基于树莓派的实时图像识别。
5.根据本发明实施例第一方面,提供一种用于树莓派处理器的模型剪枝方法。
6.在一个或多个实施例中,优选地,所述一种用于树莓派处理器的模型剪枝方法包括:
7.获取分类数据集和树莓派处理器中的轻量化模型;
8.获取训练集数据,对所述训练集中的数据进行高斯模糊和随机裁剪,生成数据增强数据;
9.设置训练周期,并进行卷积核重要度系数的排序;
10.设置裁剪数,进行对排序后的卷积核进行重要度偏差计算;
11.根据所述重要度偏差和所述排序后的卷积核进行知识蒸馏,确定损失函数;
12.根据所述损失函数和所述卷积核设置确定目标模型,并在树莓派中进行模型设置。
13.在一个或多个实施例中,优选地,所述获取分类数据集和树莓派处理器中的轻量化模型,具体包括:
14.获取分类数据集,其中,所述分类数据集包括训练集、验证集和测试集;
15.获取树莓派处理器配置的轻量化模型;
16.向树莓派处理器中的所述轻量化模型输入所述训练集。
17.在一个或多个实施例中,优选地,所述获取训练集数据,对所述训练集中的数据进行高斯模糊和随机裁剪,生成数据增强数据,具体包括:
18.对所述训练集数据进行高斯模糊化,生成模糊化数据;
19.对所述训练集数据进行随机裁剪,生成随机裁剪数据;
20.将所述随机裁剪数据、所述模糊化数据和所述训练集数据按预设的先后顺序存储为所述数据增强数据。
21.在一个或多个实施例中,优选地,所述设置训练周期,并进行卷积核重要度系数的排序,具体包括:
22.设置所述训练周期为180;
23.设置输入图像为64*64的格式;
24.迭代获取所述轻量化模型的卷积核重要度系数;
25.对所述卷积核重要度系数进行排序。
26.在一个或多个实施例中,优选地,所述设置裁剪数,进行对排序后的卷积核进行重要度偏差计算,具体包括:
27.设置卷积数和裁剪数;
28.对所述排序后的卷积核进行全局裁剪;
29.设置所述卷积数,对所有的卷积核重要度求平均值,存储为评价值;
30.对比所述评价值与预设的平均值之间的重要度偏差。
31.在一个或多个实施例中,优选地,所述根据所述重要度偏差和所述排序后的卷积核进行知识蒸馏,确定损失函数,具体包括:
32.获取所述重要度偏差最小的卷积核设置,并进行存储;
33.根据所述卷积核设置获取剪枝后的网络,利用周期函数设置训练周期;
34.利用知识蒸馏函数获得裁剪后的模型;
35.所述知识蒸馏函数为:
36.loss=l(p,softmax(z)) t2l(softmax(r/t),softmax(z/t))
37.其中,loss为损失值,l(*)是交叉熵损失函数,p是真实概率的分布,z和r分别是学生模型和教师模型的输出,t是预设的常数,softmax()为逻辑回归模型函数,所述教师模型内保存的训练好的网络,所述学生模型为所述剪枝后的网络;
38.所述周期函数为:
[0039][0040]
其中,epoch为所述训练周期,flops(*)为计算模型的浮点型数量的函数,a为基准模型,b为裁剪后的模型。
[0041]
在一个或多个实施例中,优选地,所述根据所述损失函数和所述卷积核设置确定目标模型,并在树莓派中进行模型设置,具体包括:
[0042]
将所述剪枝后的网络和所述训练周期一并存储到目标模型;
[0043]
将所述目标模型转化为onnx模型;
[0044]
根据opencv库在树莓派中调用所述onnx模型。
[0045]
根据本发明实施例第二方面,提供一种用于树莓派处理器的模型剪枝系统。
[0046]
在一个或多个实施例中,优选地,所述一种用于树莓派处理器的模型剪枝系统包括:
[0047]
第一获取单元,用于获取分类数据集和树莓派处理器中的轻量化模型;
[0048]
数据增强单元,用于获取训练集数据,对所述训练集中的数据进行高斯模糊和随机裁剪,生成数据增强数据;
[0049]
周期排序单元,用于设置训练周期,并进行卷积核重要度系数的排序;
[0050]
重要度分析单元,用于设置裁剪数,进行对排序后的卷积核进行重要度偏差计算;
[0051]
损失确定单元,用于根据所述重要度偏差和所述排序后的卷积核进行知识蒸馏,确定损失函数;
[0052]
模型生成单元,用于根据所述损失函数和所述卷积核设置确定目标模型,并在树莓派中进行模型设置。
[0053]
在一个或多个实施例中,优选地,所述一种用于树莓派处理器的模型剪枝系统还包括:模型状态显示模块,用于自动获取树莓派处理器的运行时间,其中,所述运行时间包括剪枝前的运行时间和剪枝后的运行时间。
[0054]
根据本发明实施例第三方面,提供一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现本发明实施例第一方面中任一项所述的步骤。
[0055]
本发明的实施例提供的技术方案可以包括以下有益效果:
[0056]
1)本发明实施例中,通过针对树莓派处理器的模型剪枝方法,减少了神经网络的参数量,降低了对处理器性能的要求,节省了成本。
[0057]
2)本发明实施例中,使树莓派处理器可以进行神经网络的部署,降低了神经网络落地应用的成本,可提升小型化的工业设备自动化生产。
[0058]
3)本发明实施例中,在简化模型复杂度的情况下,保持了原生模型的准确度。
[0059]
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
[0060]
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
[0061]
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0062]
图1是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法的流程图。
[0063]
图2是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法中的获取分类
数据集和树莓派处理器中的轻量化模型的流程图。
[0064]
图3是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法中的获取训练集数据,对所述训练集中的数据进行高斯模糊和随机裁剪,生成数据增强数据的流程图。
[0065]
图4是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法中的设置训练周期,并进行卷积核重要度系数的排序的流程图。
[0066]
图5是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法中的设置裁剪数,进行对排序后的卷积核进行重要度偏差计算的流程图。
[0067]
图6是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法中的根据所述重要度偏差和所述排序后的卷积核进行知识蒸馏,确定损失函数的流程图。
[0068]
图7是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法中的根据所述损失函数和所述卷积核设置确定目标模型,并在树莓派中进行模型设置的流程图。
[0069]
图8是本发明一个实施例的一种用于树莓派处理器的模型剪枝系统的结构图。
[0070]
图9是本发明一个实施例中一种电子设备的结构图。
具体实施方式
[0071]
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
[0072]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0073]
近年来,深度学习技术以其良好的性能,在计算机视觉、自然语言处理等领域都取得了巨大的成功。尤其是在计算机视觉领域,深度学习在图像识别、目标检测、人脸识别等具体任务中发挥了重要作用。但其使用的深度神经网络具有极深的网络结构,即含有大量的级联卷积层,这导致深度神经网络模型中的参数量巨大,需要较多的计算资源和存储资源的支持。但是,树莓派处理器的计算资源和存储资源有限,使得深度神经网络难以在树莓派处理器上进行部署。
[0074]
在本发明之前,现有技术主要是通过如下方式对树莓派处理器中的模型进行压缩。通常采用量化、非结构化剪枝和结构化剪枝的方法。其中,量化方法涉及用较低精度的表示来替换cnn权重矩阵中的高精度浮点。但是,量化方法需要先天的硬件支持;非结构化剪枝方法一样需要在专用的软件或者硬件上才能获得加速效果;而结构化剪枝不需要特定的硬件或者软件进行加速,但是在进行过度参数剪枝时会破坏模型的精度。因此,现有模型剪枝方法有着精度和效率相矛盾的问题,因此,能保证精度的方法过于复杂,难以实际使用;而简单易用的剪枝方法却又不能很好的避免精度损失。
[0075]
本发明实施例中,提供了一种用于树莓派处理器的模型剪枝方法及系统。该方案
提出针对于树莓派的模型压缩方法,并通过模型剪枝优化网络结构,使卷积神经网络在树莓派上的运行速率达到每秒24帧,实现基于树莓派的实时图像识别。
[0076]
根据本发明实施例第一方面,提供一种用于树莓派处理器的模型剪枝方法。
[0077]
图1是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法的流程图。
[0078]
如图1所示,在一个或多个实施例中,优选地,所述一种用于树莓派处理器的模型剪枝方法包括:
[0079]
s101、获取分类数据集和树莓派处理器中的轻量化模型;
[0080]
s102、获取训练集数据,对所述训练集中的数据进行高斯模糊和随机裁剪,生成数据增强数据;
[0081]
s103、设置训练周期,并进行卷积核重要度系数的排序;
[0082]
s104、设置裁剪数,进行对排序后的卷积核进行重要度偏差计算;
[0083]
s105、根据所述重要度偏差和所述排序后的卷积核进行知识蒸馏,确定损失函数;
[0084]
s106、根据所述损失函数和所述卷积核设置确定目标模型,并在树莓派中进行模型设置。
[0085]
在本发明实施例中,根据实际的树莓派处理器的模型运行情况,进行了神经网络参数的优化,具体的通过对于卷积核的排序进行获得关键的时间参数。此外,结合了树莓派的实际运行数据进行了模型的剪枝,获得一方面保证了模型的精度,另一方面,使模型运行速度得到提升。
[0086]
图2是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法中的获取分类数据集和树莓派处理器中的轻量化模型的流程图。
[0087]
如图2所示,在一个或多个实施例中,优选地,所述获取分类数据集和树莓派处理器中的轻量化模型,具体包括:
[0088]
s201、获取分类数据集,其中,所述分类数据集包括训练集、验证集和测试集;
[0089]
s202、获取树莓派处理器配置的轻量化模型;
[0090]
s203、向树莓派处理器中的所述轻量化模型输入所述训练集。
[0091]
在本发明实施例中,针对树莓派处理器没办法对模型进行硬件加速的问题,首先提取了树莓派中的轻量化模型,在此基础上结合轻量化模型的数据进行数据的划分,获得训练集、验证集和测试集。
[0092]
图3是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法中的获取训练集数据,对所述训练集中的数据进行高斯模糊和随机裁剪,生成数据增强数据的流程图。
[0093]
如图3所示,在一个或多个实施例中,优选地,所述获取训练集数据,对所述训练集中的数据进行高斯模糊和随机裁剪,生成数据增强数据,具体包括:
[0094]
s301、对所述训练集数据进行高斯模糊化,生成模糊化数据;
[0095]
s302、对所述训练集数据进行随机裁剪,生成随机裁剪数据;
[0096]
s303、将所述随机裁剪数据、所述模糊化数据和所述训练集数据按预设的先后顺序存储为所述数据增强数据。
[0097]
在本发明实施例中,]针对树莓派处理器性能较差只能处理特别小型网络的问题,模型进行大幅度参数裁剪,根据实验经验,将裁剪比率可设定在0.7

0.9的范围。
[0098]
图4是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法中的设置训练
周期,并进行卷积核重要度系数的排序的流程图。
[0099]
如图4所示,在一个或多个实施例中,优选地,所述设置训练周期,并进行卷积核重要度系数的排序,具体包括:
[0100]
s401、设置所述训练周期为180;
[0101]
s402、设置输入图像为64*64的格式;
[0102]
s403、迭代获取所述轻量化模型的卷积核重要度系数;
[0103]
s404、对所述卷积核重要度系数进行排序。
[0104]
在本发明实施例中,针对树莓派存储资源有限和运算速率低的问题,输入图像采用64*64的格式来减少数据输入和保证模型准确度,并设置了训练周期为180,通过重要度系数进行训练和排序。
[0105]
图5是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法中的设置裁剪数,进行对排序后的卷积核进行重要度偏差计算的流程图。
[0106]
如图5所示,在一个或多个实施例中,优选地,所述设置裁剪数,进行对排序后的卷积核进行重要度偏差计算,具体包括:
[0107]
s501、设置卷积数和裁剪数;
[0108]
s502、对所述排序后的卷积核进行全局裁剪;
[0109]
s503、设置所述卷积数,对所有的卷积核重要度求平均值,存储为评价值;
[0110]
s504、对比所述评价值与预设的平均值之间的重要度偏差。
[0111]
在本发明实施例中,相比于进行分层裁剪的方式,采用全局裁剪的方式能够有效的减低整体的模型冗余度。针对树莓派处理器没办法对模型进行硬件加速的问题,采用的是基于结构化剪枝改进的模型剪枝方法,不同于普通的结构化剪枝方法,该技术在对每个卷积核加入重要性系数后,没有采用通过损失函数将其向0逼近的方法,而是采用设置重要性平均值,让重要性系数的平均值向设定的平均值靠近。避免了普通模型剪枝方法将重要的卷积核设置错误的情况。
[0112]
图6是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法中的根据所述重要度偏差和所述排序后的卷积核进行知识蒸馏,确定损失函数的流程图。
[0113]
如图6所示,在一个或多个实施例中,优选地,所述根据所述重要度偏差和所述排序后的卷积核进行知识蒸馏,确定损失函数,具体包括:
[0114]
s601、获取所述重要度偏差最小的卷积核设置,并进行存储;
[0115]
s602、根据所述卷积核设置获取剪枝后的网络,利用周期函数设置训练周期;
[0116]
s603、利用知识蒸馏函数获得裁剪后的模型;
[0117]
所述知识蒸馏函数为:
[0118]
loss=l(p,softmax(z)) t2l(softmax(r/t),softmax(z/t))
[0119]
其中,loss为损失值,l(*)是交叉熵损失函数,p是真实概率的分布,z和r分别是学生模型和教师模型的输出,t是预设的常数,softmax()为逻辑回归模型函数,所述教师模型内保存的训练好的网络,所述学生模型为所述剪枝后的网络;
[0120]
所述周期函数为:
[0121]
[0122]
其中,epoch为所述训练周期,flops(*)为计算模型的浮点型数量的函数,a为基准模型,b为裁剪后的模型。
[0123]
在本发明实施例中,针对剪枝后,因为模型小可能导致准确度较低的问题,模型在剪枝之后采用知识蒸馏的方法确保模型在减去大量参数后的准确度。
[0124]
图7是本发明一个实施例的一种用于树莓派处理器的模型剪枝方法中的根据所述损失函数和所述卷积核设置确定目标模型,并在树莓派中进行模型设置的流程图。
[0125]
如图7所示,在一个或多个实施例中,优选地,所述根据所述损失函数和所述卷积核设置确定目标模型,并在树莓派中进行模型设置,具体包括:
[0126]
s701、将所述剪枝后的网络和所述训练周期一并存储到目标模型;
[0127]
s702、将所述目标模型转化为onnx模型;
[0128]
s703、根据opencv库在树莓派中调用所述onnx模型。
[0129]
在本发明实施例中,针对神经网络的部署问题,采用onnx模型来完成进一步压缩和部署。具体的,采用了opencv库进行onnx的调用和推理。
[0130]
根据本发明实施例第二方面,提供一种用于树莓派处理器的模型剪枝系统。
[0131]
图8是本发明一个实施例的一种用于树莓派处理器的模型剪枝系统的结构图。
[0132]
如图8所示,在一个或多个实施例中,优选地,所述一种用于树莓派处理器的模型剪枝系统包括:
[0133]
第一获取单元801,用于获取分类数据集和树莓派处理器中的轻量化模型;
[0134]
数据增强单元802,用于获取训练集数据,对所述训练集中的数据进行高斯模糊和随机裁剪,生成数据增强数据;
[0135]
周期排序单元803,用于设置训练周期,并进行卷积核重要度系数的排序;
[0136]
重要度分析单元804,用于设置裁剪数,进行对排序后的卷积核进行重要度偏差计算;
[0137]
损失确定单元805,用于根据所述重要度偏差和所述排序后的卷积核进行知识蒸馏,确定损失函数;
[0138]
模型生成单元806,用于根据所述损失函数和所述卷积核设置确定目标模型,并在树莓派中进行模型设置。
[0139]
在一个或多个实施例中,优选地,所述一种用于树莓派处理器的模型剪枝系统还包括:模型状态显示模块807,用于自动获取树莓派处理器的运行时间,其中,所述运行时间包括剪枝前的运行时间和剪枝后的运行时间。
[0140]
本发明实施例形成的部署模型在树莓派处理器上的测试结果为:1)在裁剪比率为0.7时,输入图片尺寸为64*64像素时,视频每秒平均帧率为35;2)在裁剪比率为0.8时,输入图片尺寸为112*112像素时,视频每秒平均帧率为31;3)在裁剪比率为0.9时,输入图片尺寸为64*64像素时,视频每秒平均帧率为48。由此可知,通过上述方式,可以使卷积神经网络可以在树莓派上达到每秒24帧左右的运行速率,达到实时进行图像识别的目的。
[0141]
根据本发明实施例第三方面,提供一种电子设备。图9是本发明一个实施例中一种电子设备的结构图。图9所示的电子设备为通用模型剪枝装置,其包括通用的计算机硬件结构,其至少包括处理器901和存储器902。处理器901和存储器902通过总线903连接。存储器902适于存储处理器901可执行的指令或程序。处理器901可以是独立的微处理器,也可以是
一个或者多个微处理器集合。由此,处理器901通过执行存储器902所存储的指令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其它装置的控制。总线903将上述多个组件连接在一起,同时将上述组件连接到显示控制器904和显示装置以及输入/输出(i/o)装置905。输入/输出(i/o)装置905可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出装置905通过输入/输出(i/o)控制器906与系统相连。
[0142]
本发明的实施例提供的技术方案可以包括以下有益效果:
[0143]
1)本发明实施例中,通过针对树莓派处理器的模型剪枝方法,减少了神经网络的参数量,降低了对处理器性能的要求,节省了成本。
[0144]
2)本发明实施例中,使树莓派处理器可以进行神经网络的部署,降低了神经网络落地应用的成本,可提升小型化的工业设备自动化生产。
[0145]
3)本发明实施例中,在简化模型复杂度的情况下,保持了原生模型的准确度。
[0146]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0147]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0148]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0149]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0150]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献