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

一种yolo目标检测模型压缩方法、系统及存储介质与流程

2021-10-24 06:50:00 来源:中国专利 TAG:例数 模型 压缩 检测 目标


1.本发明实施例涉及数据处理技术领域,具体涉及一种yolo目标检测模型压缩方法、系统及存储介质。


背景技术:

2.在yolo目标检测模型的边缘计算中,边缘设备的计算能力通常较低,并且计算会受限于边缘设备的内存和电量消耗。此外,为了降低将yolo目标检测模型传输给边缘设备的通信量以及网络连接需求,需要将yolo目标检测模型量化使其尺寸更小、推断更快、耗电量更低。由于yolo目标检测模型的计算量以及计算复杂度较大,现有的yolo目标检测模型通常在云端进行计算,并且以浮点型运算为主。然而该方法对将yolo目标检测模型传输给边缘设备的通信量以及网络连接需求较高,使得在很多工程应用场景中有较大的局限性。


技术实现要素:

3.为此,本发明实施例提供一种yolo目标检测模型压缩方法、系统及存储介质,以解决上述背景技术中出现的至少一个问题。
4.为了实现上述目的,第一方面,本发明实施例提供了一种yolo目标检测模型压缩方法,包括如下步骤:
5.利用深度学习框架搭建yolo目标检测模型;
6.对yolo目标检测模型进行训练,并保存训练后的yolo目标检测模型的模型参数;
7.利用模型参数,量化yolo目标检测模型每层的输出值,得到yolo目标检测模型每层的输出值的缩放尺度因子和偏置因子;
8.导出模型参数,并将yolo目标检测模型的bn层和卷积层进行融合,得到融合后的yolo目标检测模型;
9.对融合后的yolo目标检测模型的模型参数进行量化,得到权重和偏置的缩放尺度因子和偏置因子;
10.根据yolo目标检测模型每层的输出值的缩放尺度因子和偏置因子,以及权重和偏置的缩放尺度因子和偏置因子,对融合后的yolo目标检测模型的模型参数进行量化,得到融合后的yolo目标检测模型的整体量化因子;
11.根据整体量化因子,搭建yolo的int8型目标检测模型,得到通过int8参数进行前向推理的yolo目标检测模型。
12.进一步地,利用深度学习框架搭建yolo目标检测模型包括:
13.计算数据集的均值和标准差,并对数据集进行归一化处理,得到预处理后的数据集;
14.写出文件读取函数,并利用文件读取函数读取yolo目标检测模型各层的数据参数;
15.利用深度学习框架搭建yolo目标检测模型的yolo层;
16.定义yolo层的模块函数;
17.利用数据参数和模块函数,搭建yolo目标检测模型。
18.进一步地,对yolo目标检测模型进行训练包括:
19.利用数据集对yolo目标检测模型进行n次训练,其中n为整数,且n≥100;
20.对第n次训练后的yolo目标检测模型的平均精度进行测试;
21.若第n次训练后的yolo目标检测模型的平均精度大于或等于标准精度,则停止训练。
22.进一步地,在停止训练之后还包括:
23.根据yolo目标检测模型的类型,选择对应的保存格式保存第n次训练后的yolo目标检测模型的模型参数。
24.进一步地,对yolo目标检测模型进行训练后得到的模型参数为浮点型,yolo的int8型目标检测模型的模型参数为int型。
25.进一步地,根据整体量化因子,搭建yolo的int8型目标检测模型,得到通过int8参数进行前向推理的yolo目标检测模型包括:
26.将yolo目标检测模型的浮点型卷积运算转换成int型卷积运算,使浮点型矩阵转换成int型矩阵;
27.将yolo目标检测模型中的卷积操作通过int型矩阵进行卷积运算;
28.通过将整体量化因子和int型矩阵卷积运算后的输出进行相乘,并做截断,使yolo目标检测模型中的运算均为int型运算,得到int型输出值;
29.利用整体量化因子将浮点运算转换为整数运算。
30.第二方面,本发明实施例提供了一种yolo目标检测模型压缩系统,系统包括:处理器和存储器;
31.存储器用于存储一个或多个程序指令;
32.处理器,用于运行一个或多个程序指令,用以执行如上一种yolo目标检测模型压缩方法中任一方法步骤。
33.第三方面,本发明实施例提供了一种计算机存储介质,计算机存储介质中包含一个或多个程序指令,一个或多个程序指令用于被一种yolo目标检测模型压缩系统执行如上一种yolo目标检测模型压缩方法中任一方法步骤。
34.本发明实施例具有如下优点:
35.本发明实施例提供的yolo目标检测模型压缩方法首先对搭建并训练好的yolo目标检测模型每层的输出值进行量化得到yolo目标检测模型每层的输出值的缩放尺度因子和偏置因子,再将yolo目标检测模型的bn层和卷积层进行融合,然后对融合后的yolo目标检测模型的模型参数进行量化得到权重和偏置的缩放尺度因子和偏置因子,根据yolo目标检测模型每层的输出值的缩放尺度因子和偏置因子,以及权重和偏置的缩放尺度因子和偏置因子,对融合后的yolo目标检测模型的模型参数进行量化,得到融合后的yolo目标检测模型的整体量化因子,最后根据整体量化因子,搭建yolo的int8型目标检测模型,得到通过int8参数进行前向推理的yolo目标检测模型,从而不需要对yolo目标检测模型进行重新训练,并且不会导致yolo目标检测模型的精度损失,同时还有效地简化了yolo目标检测模型的的结构,节约了运算资源和对计算设备的内存占用,提高了计算设备的计算速度。
附图说明
36.为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
37.本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。
38.图1为本发明实施例提供的一种yolo目标检测模型压缩方法流程示意图;
39.图2为本发明实施例提供的yolov3

tiny目标检测模型的bn层和卷积层的融合过程示意图;
40.图3为本发明实施例提供的利用深度学习框架搭建yolo目标检测模型的流程示意图;
41.图4为本发明实施例提供的对yolo目标检测模型进行训练的流程示意图;
42.图5为本发明实施例提供的再一种yolo目标检测模型压缩方法流程示意图;
43.图6为本发明实施例提供的yolov3

tiny目标检测模型的量化推理图;
44.图7为本发明实施例提供的yolo目标检测模型压缩系统结构框图。
具体实施方式
45.以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
46.第一方面,如图1所示,本发明实施例提供了一种yolo目标检测模型压缩方法,包括如下步骤:
47.s101、利用深度学习框架搭建yolo目标检测模型;
48.在本步骤中,可采用pytorch深度学习框架搭建yolov3

tiny目标检测模型,以下将以yolov3

tiny目标检测模型作为示例对本实施例的技术方案进行说明,但本领域技术人员应当理解的是,也可采用其它深度学习框架搭建不同类别的yolo目标检测模型,本实施例不做具体限制。
49.s102、对yolo目标检测模型进行训练,并保存训练后的yolo目标检测模型的模型参数;
50.在本步骤中,模型参数为yolov3

tiny目标检测模型的权重和偏置。
51.s103、利用模型参数,量化yolo目标检测模型每层的输出值,得到yolo目标检测模型每层的输出值的缩放尺度因子和偏置因子;
52.在本步骤中,根据步骤s102中保存的模型参数,即yolov3

tiny目标检测模型的权重和偏置,对yolov3

tiny目标检测模型的输出值进行量化,得到yolov3

tiny目标检测模型每层的输出值的缩放尺度因子和偏置因子,所采用的量化计算公式如下:
53.r=s(q

z)
ꢀꢀ
(1)
[0054][0055][0056]
其中,q为yolo目标检测模型量化后的输出值,为8bit整数。r为yolov3

tiny目标检测模型量化前的输出值,为浮点型。s为缩放尺度因子,z为偏置因子。round(x)为截断函数,x<0,置为0;x>2n

1,置为2n

1。array
min
为输出范围中的最小值,array
max
为输出范围中的最大值,bitwidth为位宽。
[0057]
s104、导出模型参数,并将yolo目标检测模型的bn层和卷积层进行融合,得到融合后的yolo目标检测模型;
[0058]
在本步骤中,将yolov3

tiny目标检测模型的bn层和卷积层进行融合可以节约运算资源,简化yolov3

tiny目标检测模型的结构,所采用的融合公式如下:
[0059]
z=w*x b
ꢀꢀ
(4)
[0060][0061][0062][0063]
z
new
=w
new
*x b
new
ꢀꢀ
(8)
[0064]
其中,z、w、x和b分别为bn层和卷积层融合前的输出、权重、输入和偏置,γ为尺度参数,β为偏移参数,e[x]为滑动均值,var[x]为滑动方差,z
new
、w
new
和b
new
分别为bn层和卷积层融合后的输出、权重和偏置,mean为均值。公式(4)为卷积层运算公式,公式(5)为bn层运算公式,公式(6)和(7)为bn层和卷积层融合后的计算公式,bn层和卷积层的融合过程如图2所示。
[0065]
s105、对融合后的yolo目标检测模型的模型参数进行量化,得到权重和偏置的缩放尺度因子和偏置因子;
[0066]
在本步骤中,模型参数即融合后的yolov3

tiny目标检测模型的权重和偏置,对模型参数进行量化,即可得到融合后的yolov3

tiny目标检测模型的权重和偏置的缩放尺度因子和偏置因子,而对融合后yolov3

tiny目标检测模型的模型的权重以及偏置进行量化所涉及的公式与上述公式(1)到(3)一致,此时的0<x<2n

1,置为0,根据以上公式,对浮点型输出值进行量化,本实施例不再赘述。然后再结合以下公式,即可得到融合后的yolov3

tiny目标检测模型权重和偏置的缩放尺度因子和偏置因子:
[0067][0068]
其中,q、z、r和s分别为模型参数量化后的输出值、偏置因子、模型参数量化前的输出值和缩放尺度因子。
[0069]
s106、根据yolo目标检测模型每层的输出值的缩放尺度因子和偏置因子,以及权重和偏置的缩放尺度因子和偏置因子,对融合后的yolo目标检测模型的模型参数进行量化,得到融合后的yolo目标检测模型的整体量化因子;
[0070]
s107、根据整体量化因子,搭建yolo的int8型目标检测模型,得到通过int8参数进行前向推理的yolo目标检测模型。
[0071]
在本步骤中,根据整体量化因子,搭建yolov3

tiny的int8型目标检测模型,得到通过int8参数进行前向推理的yolov3

tiny目标检测模型,即可实现对yolov3

tiny目标检测模型的压缩。
[0072]
本发明实施例提供的yolo目标检测模型压缩方法首先对搭建并训练好的yolo目标检测模型每层的输出值进行量化得到yolo目标检测模型每层的输出值的缩放尺度因子和偏置因子,再将yolo目标检测模型的bn层和卷积层进行融合,然后对融合后的yolo目标检测模型的模型参数进行量化得到权重和偏置的缩放尺度因子和偏置因子,根据yolo目标检测模型每层的输出值的缩放尺度因子和偏置因子,以及权重和偏置的缩放尺度因子和偏置因子,对融合后的yolo目标检测模型的模型参数进行量化,得到融合后的yolo目标检测模型的整体量化因子,最后根据整体量化因子,搭建yolo的int8型目标检测模型,得到通过int8参数进行前向推理的yolo目标检测模型,从而不需要对yolo目标检测模型进行重新训练,并且不会导致yolo目标检测模型的精度损失,同时还有效地简化了yolo目标检测模型的的结构,节约了运算资源和对计算设备的内存占用,提高了计算设备的计算速度。
[0073]
进一步地,如图3所示,利用深度学习框架搭建yolo目标检测模型包括:
[0074]
s301、计算数据集的均值和标准差,并对数据集进行归一化处理,得到预处理后的数据集;
[0075]
在本步骤中,在训练yolov3

tiny目标检测模型之前,需要对训练用的数据集进行预处理,计算数据集的均值和标准差,数据集可采用coco数据集,本实施例不做具体限制。
[0076]
s302、写出文件读取函数,并利用文件读取函数读取yolo目标检测模型各层的数据参数;
[0077]
在本步骤中,以yolov3

tiny目标检测模型为例,则可以采用cfg文件读取函数读取yolov3

tiny目标检测模型各层的数据参数,若采用其它类型的yolo目标检测模型,则可以采用相应的文件读取函数读取yolo目标检测模型各层的数据参数,本实施例不做具体限制。
[0078]
s303、利用深度学习框架搭建yolo目标检测模型的yolo层;
[0079]
在本步骤中,可以采用pytorch深度学习框架,搭建yolov3

tiny目标检测模型的yolo层。
[0080]
s304、定义yolo层的模块函数;
[0081]
在本步骤中,根据pytorch深度学习框架对yolo层的模块函数进行定义。
[0082]
s305、利用数据参数和模块函数,搭建yolo目标检测模型。
[0083]
在本步骤中,利用数据参数和模块函数,从而完成yolov3

tiny目标检测模型的搭建。
[0084]
进一步地,如图4所示,对yolo目标检测模型进行训练包括:
[0085]
s401、利用数据集对yolo目标检测模型进行n次训练,其中n为整数,且n≥100;
[0086]
s402、对第n次训练后的yolo目标检测模型的平均精度进行测试;
[0087]
s403、若第n次训练后的yolo目标检测模型的平均精度大于或等于标准精度,则停止训练。
[0088]
在本实施例中,由于数据集采用coco数据集,则标准精度可设定为33.1%,若数据集采用其它数据集,则标准精度可设定为相应值,本实施例不做具体限制。
[0089]
进一步地,在停止训练之后还包括:
[0090]
根据yolo目标检测模型的类型,选择对应的保存格式保存第n次训练后的yolo目标检测模型的模型参数。
[0091]
具体的,由于本实施例采用的是pytorch深度学习框架搭建的yolov3

tiny目标检测模型,因此可以采用.pth格式保存yolov3

tiny目标检测模型的模型参数。
[0092]
进一步地,对yolo目标检测模型进行训练后得到的模型参数为浮点型,yolo的int8型目标检测模型的模型参数为int型。
[0093]
进一步地,如图5所示,根据整体量化因子,搭建yolo的int8型目标检测模型,得到通过int8参数进行前向推理的yolo目标检测模型包括:
[0094]
s501、将yolo目标检测模型的浮点型卷积运算转换成int型卷积运算,使浮点型矩阵转换成int型矩阵;
[0095]
在本步骤中,所采用的计算公式如下:
[0096]
r3=r1*r2ꢀꢀ
(10)
[0097][0098]
其中,r1为卷积,r2为卷积核,r3为卷积运算结果,i和j为卷积大小,α为第几个卷积,s、q和z分别为缩放尺度因子、量化后的值和偏置因子。公式(10)为浮点矩阵卷积运算,公式(11)可将浮点矩阵转换为int型矩阵。
[0099]
s502、将yolo目标检测模型中的卷积操作通过int型矩阵进行卷积运算;
[0100]
在本步骤中,所采用的计算公式如下:
[0101][0102]
其中,i、j和k为卷积大小,根据公式(12),将转换后的int型矩阵进行卷积运算,此时,yolov3

tiny目标检测模型中的卷积操作均通过int型矩阵做卷积运算。
[0103]
s503、通过将整体量化因子和int型矩阵卷积运算后的输出进行相乘,并做截断,使yolo目标检测模型中的运算均为int型运算,得到int型输出值;
[0104]
在本步骤中,所采用的计算公式如下:
[0105][0106][0107]
其中,m为整体量化因子,通过将公式(12)展开得到公式(13),m的值由公式(14)计算得到,再通过公式(13)将m与int型矩阵卷积运算后的输出进行相乘,并做截断,使得yolov3

tiny目标检测模型中的运算均为int型运算,并得到int型输出值。
[0108]
s504、利用整体量化因子将浮点运算转换为整数运算。
[0109]
在本步骤中,所采用的计算公式如下:
[0110]
m=2

n
·
m0ꢀꢀ
(15)
[0111]
其中,m0是由m计算得到的整数值,n为非负整数,由于yolov3

tiny目标检测模型的整体量化因子m是唯一非整型值,根据公式(15)进行转换,转换后浮点运算即转换成整数运算。
[0112]
如图6所示,为本实施例提供的示例性的yolov3

tiny目标检测模型的量化推理图,相较于移动32bit浮点型数据,移动8bit定点型数据在效率上比前者高4倍。
[0113]
第二方面,如图7所示,本发明实施例提供了一种yolo目标检测模型压缩系统,系统包括:处理器701和存储器702;
[0114]
存储器702用于存储一个或多个程序指令;
[0115]
处理器701,用于运行一个或多个程序指令,用以执行如上一种yolo目标检测模型压缩方法中任一方法步骤。
[0116]
第三方面,本发明实施例提供了一种计算机存储介质,计算机存储介质中包含一个或多个程序指令,一个或多个程序指令用于被一种yolo目标检测模型压缩系统执行如上一种yolo目标检测模型压缩方法中任一方法步骤。
[0117]
在本发明实施例中,处理器可以是一种集成电路芯片,具有信号的处理能力。处理器可以是通用处理器、数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specificintegrated circuit,简称asic)、现场可编程门阵列(fieldprogrammable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0118]
可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。处理器读取存储介质中的信息,结合其硬件完成上述方法的步骤。
[0119]
存储介质可以是存储器,例如可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。
[0120]
其中,非易失性存储器可以是只读存储器(read

only memory,简称rom)、可编程只读存储器(programmable rom,简称prom)、可擦除可编程只读存储器(erasable prom,简称eprom)、电可擦除可编程只读存储器(electrically eprom,简称eeprom)或闪存。
[0121]
易失性存储器可以是随机存取存储器(random access memory,简称ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,简称sram)、动态随机存取存储器(dynamic ram,简称dram)、同步动态随机存取存储器(synchronous dram,简称sdram)、双倍数据速率同步动态随机存取存储器(double data ratesdram,简称ddrsdram)、增强型同步动态随机存取存储器(enhanced sdram,简称esdram)、同步连接动态随机存取存储器(synchlink dram,简称sldram)和直接内存总线随机存取存储器(directrambus ram,简称drram)。
[0122]
本发明实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。
[0123]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件与软件组合来实现。当应用软件时,可以将相应功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0124]
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜