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

模型处理方法、装置及计算机可读存储介质与流程

2022-09-03 20:11:57 来源:中国专利 TAG:


1.本公开涉及人工智能技术领域,尤其是一种模型处理方法、装置及计算机可读存储介质。


背景技术:

2.随着人工智能技术的发展,神经网络模型在计算机视觉领域表现出巨大优势,但因其较大的计算消耗和内存占用,很难在资源有限的平台(例如移动客户端)上部署。
3.相关技术中,通常在训练好的神经网络模型的基础上,移除部分冗余的参数以压缩神经网络模型,从而减少神经网络模型的计算消耗和内存占用以便部署。


技术实现要素:

4.发明人注意到,相关技术中,压缩后的神经网络模型的性能较差。
5.为了解决上述问题,本公开实施例提出了如下解决方案。
6.根据本公开实施例的一方面,提供一种模型处理方法,包括:确定神经网络模型中第一网络层的冗余结构;执行第一移除,以从所述第一网络层中移除所述冗余结构;根据所述第一网络层在所述第一移除后的结构,执行第二移除,以移除所述神经网络模型中受所述第一移除影响的至少一个网络层的部分结构。
7.在一些实施例中,所述冗余结构包括第一冗余结构和第二冗余结构中的至少一种,所述第一冗余结构为卷积滤波器的通道,所述第二冗余结构为卷积滤波器。
8.在一些实施例中,在所述冗余结构包括所述第一冗余结构的情况下,所述至少一个网络层包括在所述第一网络层之前的第二网络层,所述执行所述第二移除包括:移除所述第二网络层中的部分卷积滤波器,以使得所述第二网络层的卷积滤波器的数量与所述第一网络层在所述第一移除后的每个卷积滤波器的通道数相同。
9.在一些实施例中,在所述冗余结构包括所述第二冗余结构的情况下,所述至少一个网络层包括在所述第一网络层之后的第三网络层,所述执行所述第二移除包括:移除所述第三网络层中每个卷积滤波器的部分通道,以使得所述第三网络层的每个卷积滤波器的通道数与所述第一网络层在所述第一移除后的卷积滤波器的数量相同。
10.在一些实施例中,所述第一网络层为卷积层。
11.在一些实施例中,所述确定神经网络模型中第一网络层的冗余结构包括:根据预设的剪枝函数和所述第一网络层中每个卷积滤波器的权重,计算该卷积滤波器的剪枝函数值;根据预设的剪枝率和所述第一网络层中每个卷积滤波器的剪枝函数值,确定作为所述第二冗余结构的卷积滤波器。
12.在一些实施例中,所述根据所述第一网络层中每个卷积滤波器的剪枝函数值,确定作为所述第二冗余结构的卷积滤波器包括:根据所述剪枝率和所述第一网络层中卷积滤波器的总数量,确定所述第一网络层中卷积滤波器的剪枝数量;将剪枝函数值小于阈值的所述剪枝数量的卷积滤波器确定为所述第二冗余结构。
13.在一些实施例中,所述神经网络模型包括按照顺序先后连接的多个网络层,所述方法还包括:生成所述神经网络模型对应的有向图,所述有向图包括按照所述顺序先后连接的所述多个网络层和每个网络层的输出信息,其中,在所述有向图中,任意相邻的两个网络层中前一个网络层的输出信息连接在所述两个网络层之间,最后一个网络层的输出信息位于所述最后一个网络层之后;遍历所述有向图,确定所述至少一个网络层。
14.在一些实施例中,所述方法还包括:在执行所述第二移除后,训练所述神经网络模型。
15.根据本公开实施例的另一方面,提供一种模型处理装置,包括:确定模块,被配置为确定神经网络模型中第一网络层的冗余结构;执行模块,被配置为执行第一移除,以从所述第一网络层中移除所述冗余结构;以及根据所述第一网络层在所述第一移除后的结构,执行第二移除,以移除所述神经网络模型中受所述第一移除影响的至少一个网络层的部分结构。
16.根据本公开实施例的又一方面,提供一种模型处理装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令执行上述任意一个实施例所述的方法。
17.根据本公开实施例的再一方面,提供一种计算机可读存储介质,包括计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述任意一个实施例所述的方法。
18.根据本公开实施例的还一方面,提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序被处理器执行时实现上述任意一个实施例所述的方法。
19.本公开实施例中,在对神经网络模型中具有冗余结构的网络层执行移除操作之后,将根据该网络层在移除冗余结构之后的结构,适应性的移除受该网络层的移除影响的其他网络层的部分结构。如此,减少了直接移除网络层中的冗余结构对神经网络模型的性能所造成的影响,从而提升了压缩后的神经网络模型的性能。
20.下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
21.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1是根据本公开一些实施例的模型处理方法的流程示意图;
23.图2是步骤102的一些实现方式的流程示意图;
24.图3是根据本公开一些实施例的有向图的结构示意图;
25.图4是根据本公开一些实施例的模型处理装置的结构示意图;
26.图5是根据本公开另一些实施例的模型处理装置的结构示意图。
具体实施方式
27.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于
本公开中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
28.除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
29.同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
30.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
31.在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
32.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
33.图1是根据本公开一些实施例的模型处理方法的流程示意图。
34.在步骤102,确定神经网络模型中第一网络层的冗余结构。
35.在一些实施例中,神经网络模型可以是训练后的卷积神经网络模型。
36.在一些实施例中,第一网络层可以是神经网络模型中的任意一个网络层。例如,第一网络层可以是卷积层或全连接层。
37.后文将对步骤102的一些实现方式进行进一步说明。
38.在步骤104,执行第一移除,以从所述第一网络层中移除所述冗余结构。
39.在一些实施例中,第一网络层中的冗余结构可以包括第一冗余结构和第二冗余结构中的至少一种。
40.在第一网络层为卷积层的情况下,第一冗余结构可以是卷积滤波器的通道,第二冗余结构可以是卷积滤波器。例如,第一网络层可以是具有5个卷积滤波器的卷积层,执行第一移除可以移除第一网络层中作为第二冗余结构的2个卷积滤波器;又例如,第一网络层中的每个卷积滤波器的通道数均为4,执行第一移除可以移除第一网络层中作为第一冗余结构的每个卷积滤波器的2个通道。
41.在步骤106,根据第一网络层在第一移除后的结构,执行第二移除,以移除神经网络模型中受第一移除影响的至少一个网络层的部分结构。
42.在一些实施例中,神经网络模型中的至少一个网路层的输出通道数和/或输入通道数受第一移除的影响。
43.在一些实施例中,神经网络模型中受第一移除影响的至少一个网络层可以包括在第一网络层之前的一个网络层和/或在第一网络层之后的一个网络层。
44.上述实施例中,在对神经网络模型中具有冗余结构的网络层执行移除操作之后,将根据该网络层在移除冗余结构之后的结构,适应性的移除受该网络层的移除影响的其他网络层的部分结构。如此,减少了直接移除网络层中的冗余结构对神经网络模型的性能所造成的影响,从而提升了压缩后的神经网络模型的性能。
45.此外,也使得压缩后的神经网络模型更小,进一步减少了神经网络模型的计算消耗和内存占用,有利于应用部署。
46.在一些实施例中,在第一网络层的冗余结构包括第一冗余结构(即卷积滤波器的
通道)的情况下,受第一移除影响的至少一个网络层可以包括在第一网络层之前的第二网络层。这种情况下,可以按照如下方式执行第二移除:
47.移除第二网络层中的部分卷积滤波器,以使得第二网络层的卷积滤波器的数量与第一网络层在第一移除后的每个卷积滤波器的通道数相同。
48.在一些实施例中,受第一移除影响的第二网络层可以是在第一网络层之前的任意一个网络层。例如,第二网络层可以是第一网络层的前一层;又例如,第一网络层的前一层可以是批归一化层,这种情况下,第二网络层可以是该批归一化层的前一层。
49.例如,第一网络层中的每个卷积滤波器的通道数均为4,执行第一移除后,第一网络层中每个卷积滤波器的通道数为2。受第一网络层的移除影响的第二网络层为第一网络层的前一层,第二网络层中原有的卷积滤波器的数量为4,此时,可以执行第二移除以移除第二网络层中的2个卷积滤波器,从而使得第二网络层的卷积滤波器的数量也为2。
50.如此,考虑到在第一网络层中作为冗余结构的部分通道被移除后,将导致该第一网络层的输入通道数的减少,故,适应性地移除在该第一网络层之前的受该移除影响的第二网络层的部分卷积滤波器,以使得该第二网络层的输出通道数与移除冗余结构后的第一网络层的输入通道数一致,可以减少后续运行神经网络模型时由于输入输出通道数不一致所造成的运行错误的可能性,从而提升了压缩后的神经网络模型的性能。
51.在一些实施例中,在第一网络层的冗余结构包括第二冗余结构(即卷积滤波器)的情况下,受第一移除影响的至少一个网络层可以包括在第一网络层之后的第三网络层。这种情况下,可以按照如下方式执行第二移除:
52.移除第三网络层中每个卷积滤波器的部分通道,以使得第三网络层的每个卷积滤波器的通道数与第一网络层在第一移除后的卷积滤波器的数量相同。
53.在一些实施例中,受第一移除影响的第三网络层可以是在第一网络层之后的任意一个网络层。例如,第三网络层可以是第一网络层的后一层;又例如,第一网络层的后一层可以是批归一化层,这种情况下,第三网络层可以是该批归一化层的后一层。
54.例如,第一网络层中可以具有5个卷积滤波器,执行第一移除后,第一网络层中卷积滤波器的数量为3。受第一网络层的移除影响的第三网络层为第一网络层的后一层,第三网络层中原有的每个卷积滤波器的通道数为5,此时,可以执行第二移除以移除第三网络层中每个卷积滤波器中的2个通道,以使得第三网络层中每个卷积滤波器的通道数也为3。
55.如此,考虑到在第一网络层中作为冗余结构的部分卷积滤波器被移除后,将导致该第一网络层的输出通道数的减少,故,适应性地移除在该第一网络层之后的受该移除影响的第三网络层中每个卷积滤波器的部分通道,以使得该第三网络层的输入通道数与移除冗余结构后的第一网络层的输出通道数一致,可以减少后续运行神经网络模型时由于输入输出不一致所造成的运行错误的可能性,从而提升了压缩后的神经网络模型的性能。
56.在一些实施例中,在第一网络层的冗余结构包括第一冗余结构(即卷积滤波器的通道)和第二冗余结构(即卷积滤波器)的情况下,受第一移除影响的至少一个网络层可以包括在第一网络层之前的第二网络层和在第一网络层之后的第三网络层。这种情况下,可以按照前述方式分别对第二网络层和第三网络层执行第二移除。如此,可以使得第二网络层的输出通道数与移除冗余结构后的第一网络层的输入通道数一致,并使得第三网络层的输入通道数与移除冗余结构后的第一网络层的输出通道数一致,从而提升了压缩后的神经
网络模型的性能。
57.下面以第一网络层为卷积层为例结合图2对步骤102的一些实现方式进行说明。图2是步骤102的一些实现方式的流程示意图。
58.在步骤202,根据预设的剪枝函数和第一网络层中每个卷积滤波器的权重,计算该卷积滤波器的剪枝函数值。
59.在一些实施例中,预设的剪枝函数可以是l1范数、l2范数、随机选择算法或基于反向传播的梯度计算算法等。
60.在步骤204,根据预设的剪枝率和第一网络层中每个卷积滤波器的剪枝函数值,确定作为第二冗余结构的卷积滤波器。
61.在一些实施例中,可以根据神经网络模型运行时每个网络层的浮点运算数(floating-point operations,flops)设置每个网络层的剪枝率。
62.在一些实施例中,每个网络层的剪枝率可以不同。剪枝率可以是0至100%之间的任意一个值。
63.需要说明的是,flops可以用于表征计算量,根据模型运行时每个网络层的flops可以衡量模型的复杂度。
64.作为步骤204的一些实现方式,可以根据预设的剪枝率和第一网络层中卷积滤波器的总数量,确定第一网络层中卷积滤波器的剪枝数量,然后将剪枝函数值小于阈值的剪枝数量的卷积滤波器确定为第一网络层中的第二冗余结构。
65.例如,采用l2范数作为剪枝函数,根据第一网络层中每个卷积滤波器的权重,可以计算每个卷积滤波器的l2范数值。根据预设的剪枝率和第一网络层中卷积滤波器的总数量可以确定第一网络层中待剪枝的卷积滤波器的剪枝数量为3。之后,可以将l2范数值小于阈值的3个卷积滤波器作为第一网络层中的第二冗余结构(例如,在小于阈值的l2范数值有多个的情况下,可以将最小的3个l2范数值对应的卷积滤波器作为第一网络层中的第二冗余结构)。
66.在一些实施例中,可以从第一网络层的各个卷积滤波器中分别选取一个通道的权重矩阵组成一组权重矩阵,以得到多组权重矩阵。根据预设的剪枝函数和每组权重矩阵的权重,计算该组权重矩阵的剪枝函数值,并根据预设的剪枝率和每组权重矩阵的剪枝函数值,可以确定第一网络层中作为第一冗余结构的至少一组权重矩阵。具体实现与前述图2所示的方式类似,在此不再赘述。
67.在一些实施例中,可以为神经网络模型中每个网络层的各个参数设置索引值,并以元组的形式存储每个网络层所涉及的索引值。
68.例如,卷积层对应的元组的数据格式可以为{in_channels:index1;out_channels:index2;weight:w_index;bias:b_index},其中,in_channels、out_channels、weight和bias分别表示卷积层的输入通道、输出通道、权重以及偏置,index1、index2、w_index和b_index分别表示输入通道、输出通道、权重以及偏置对应的索引值。
69.又例如,批归一化层对应的元组的数据格式可以为{running_mean:index1;running_var:index2;weight:index3;bias:index4},其中,running_mean、running_var、weight和bias分别表示批归一化层的均值、方差、权重和偏置,index1、index2、index3和index4分别表示均值、方差、权重和偏置对应的索引值。
70.再例如,全连接层对应的元组的数据格式可以为{in_features:index1;out_features:index2;weight:index3;bias:index4},其中,in_features、out_features、weight和bias分别表示全连接层的输入节点数、输出节点数、权重和偏置,index1、index2、index3和index4分别表示输入节点数、输出节点数、权重和偏置对应的索引值。
71.在一些实施例中,在确定某个网络层的冗余结构后,可以查询该冗余结构对应的索引值,并从存储的该网络层对应的元组中移除冗余结构对应的索引值,即执行第一移除。查询受第一移除影响的至少一个网络层的待移除的部分结构对应的索引值,并从存储的该至少一个网络层对应的元组中移除待移除的部分结构对应的索引值,即执行第二移除。
72.在一些实施例中,神经网络模型可以包括按照顺序先后连接的多个网络层。这种情况下,可以按照如下方式确定受第一移除影响的至少一个网络层。
73.首先,生成神经网络模型对应的有向图。
74.这里,有向图可以包括按照顺序先后连接的多个网络层和每个网络层的输出信息,其中,在有向图中,任意相邻的两个网络层中前一个网络层的输出信息连接在这两个网络层之间,最后一个网络层的输出信息位于最后一个网络层之后。
75.然后,遍历有向图,确定神经网络模型中受第一移除影响的至少一个网络层。
76.在一些实施例中,每个网络层的输出信息可以包括该网络层输出特征图的数量与尺寸信息。每个网路层的输出信息可以以元组的形式存储,输出信息对应的元组的数据格式可以是(个数,通道数,长度,宽度)。例如,某个卷积层输出了一个256(通道数)*14(长度)*14(宽度)的特征图,该卷积层的输出信息可以存储为(1,256,14,14)。
77.图3是根据本公开一些实施例的有向图的结构示意图。
78.如图3所示,实线方框表示神经网络模型中的网络层,连接在任意相邻的两个网络层之间的实线椭圆表示前一个网络层的输出信息,其中,每个实线方框中标记了该实线方框所表示的网络层的类型,每个实线椭圆中标记了与该实线椭圆连接的前一个实线方框所表示的网络层的输出特征图的数量与尺寸信息。
79.图3示意性的示出了3个批归一化(batch normalization,bn)层、2个卷积(convolution,conv)层、任意相邻的两个网络层中前一个网络层的输出信息以及最后一个网络层的输出信息。
80.应理解,bn层的计算操作并不会对输入该层的特征图的尺寸有影响。
81.上述实施例中,神经网络模型对应的有向图可以呈现神经网络模型的网络结构以及每个网络层的输出信息,在对某个网络层执行第一移除后,基于此有向图可以快速地确定受该第一移除影响的其他网络层以便执行第二移除,从而提高了模型处理的效率。
82.在一些实施例中,在执行第二移除后,可以训练神经网络模型。
83.在一些实施例中,可以将执行第二移除后重新训练好的神经网络部署在移动客户端中进行图像处理。
84.本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于装置实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
85.图4是根据本公开一些实施例的模型处理装置的结构示意图。
86.如图4所示,模型处理装置400包括确定模块401和执行模块402。
87.确定模块401可以被配置为确定神经网络模型中第一网络层的冗余结构。
88.执行模块402可以被配置为执行第一移除,以从第一网络层中移除所述冗余结构;以及根据所述第一网络层在所述第一移除后的结构,执行第二移除,以移除所述神经网络模型中受所述第一移除影响的至少一个网络层的部分结构。
89.图5是根据本公开另一些实施例的模型处理装置的结构示意图。
90.如图5所示,模型处理装置500包括存储器501以及耦接至该存储器501的处理器502,处理器502被配置为基于存储在存储器501中的指令,执行前述任意一个实施例的方法。
91.存储器501例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如可以存储有操作系统、应用程序、引导装载程序(boot loader)以及其他程序等。
92.模型处理装置500还可以包括输入输出接口503、网络接口504、存储接口505等。这些接口503、504、505之间、以及存储器501与处理器502之间例如可以通过总线506连接。输入输出接口503为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口504为各种联网设备提供连接接口。存储接口505为sd卡、u盘等外置存储设备提供连接接口。
93.本公开实施例还提供了一种计算机可读存储介质,包括计算机程序指令,该计算机程序指令被处理器执行时实现上述任意一个实施例的方法。
94.本公开实施例还提供了一种计算机程序产品,包括计算机程序,其中,该计算机程序被处理器执行时实现上述任意一个实施例的方法。
95.至此,已经详细描述了本公开的各实施例。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
96.本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
97.本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解,可由计算机程序指令实现流程图中一个流程或多个流程和/或方框图中一个方框或多个方框中指定的功能。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
98.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
99.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
100.虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改或者对部分技术特征进行等同替换。本公开的范围由所附权利要求来限定。
再多了解一些

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

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

相关文献