一种卷积神经网络轻量化的改进方法与流程

文档序号:33509672发布日期:2023-03-21 21:50阅读:92来源:国知局
一种卷积神经网络轻量化的改进方法与流程

1.本发明涉及卷积神经网络技术领域,特别涉及一种卷积神经网络轻量化的改进方法。


背景技术:

2.随着计算机技术的发展,在卷积神经网络技术中,由于嵌入式设备内存和功耗的限制,神经网络模型在嵌入式设备运算仍是一个巨大的挑战。手工设计轻量化模型主要思想在于针对卷积,设计更高效的计算方式,减少参数,并不损失网络性能,基于标准卷积的变体,有group convolution,depthwise convolution,pointwise convolution等。轻量化的卷积神经网络有mobilenet,shufflenet,squeezenet等。
3.然而,现有的方法存在缺陷,如下:
4.现有的轻量化工作是算法的优化,并未考虑指令级优化,例如shufflenet中的channel shuffle,就会占用大量内存和指针跳转,实际在嵌入式设备运行神经网络,指令级优化工作,影响甚大。
5.另外,现有技术中的常用术语如下:
6.1、卷积神经网络:包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。
7.2、convolution:普通卷积。
8.3、group convolution:组卷积,将channel分成若干个组,每个组分别作普通卷积。
9.4、pointwise convolution:逐点卷积,卷积核为1x1的普通卷积。


技术实现要素:

10.为了解决上述现有技术中的问题,本技术的目的在于:通过设置一个确定的group channel值,将模型中卷积核不为1的普通卷积转化为channel确定的group convolution和pointwise convolution,从而对卷积神经网络轻量化进行改进。
11.具体地,本技术提供一种卷积神经网络轻量化的改进方法,所述方法中组卷积group convolution是由一组普通卷积normal convolution组成,其中每个普通卷积的输入通道input channel和输出通道output channel的通道数值相等,定义为组通道,即设置一个确定的组通道数值,将模型中卷积核不为1的普通卷积替换为通道数值确定的组卷积group convolution和逐点卷积pointwise convolution,其中,所述组卷积group convolution为一组通道数值相等也即输入通道和输出通道相等的普通卷积的集合,用group channel来表示输入/输出通道的数值,所述组卷积中含有普通卷积的个数为group num,group channel和group num的乘积等于被替换普通卷积的输入通道input channel的值,这样普通卷积的输入特征图input feature map也能够作为组卷积的输入,组卷积的输入通道input channel数值和输出通道output channel数值相等,都等于被替换普通卷积
的输入通道input channel数值;所述逐点卷积pointwise convolution是卷积核为1x1的普通卷积。
12.所述方法包括以下步骤:
13.s1,调整:卷积神经网络中除去输入层和输出层之外,中间层根据需求选择合适的group channel值,为使其符合替换的条件,将卷积核不为1*1的普通卷积层的input channel调整为group channel的整数倍;
14.即根据需求选择和运行平台的计算能力以及内存空间相关的合适group channel,设定每一层卷积的channel数,使每一层的channel数都为group channel的整数倍;
15.s2,替换:除去神经网络的输入层和输出层,对于卷积核大小不为1的普通卷积,使用组卷积group convolution和逐点卷积pointwise convolution进行替换,所述方法中,组成组卷积的普通卷积的输入通道和输出通道数相等,本技术中group convolution是由一组channel数完全相同的普通卷积组成,单个普通卷积是指这些相同的普通的卷积的其中一个,具有普遍的代表性;
16.s3,结果:最终的结果就是网络中除输入层和输出层外的部分计算被简化为输入通道input channel和输出通道output channel为确定值的普通卷积组成的组卷积和卷积核为1x1的普通卷积,该确定值就是步骤s1中选择的合适的group channel值。
17.所述s2中所述替换步骤,包括如下:
18.s2.1,假设普通卷积normal convolution的输入通道input channel的通道数为in_num,输出通道output channel的通道数为out_num,固定的组通道group channel的通道数为g_channel,组的个数group num为g_nums,满足in_num=g_channel*g_nums;
19.s2.2,此时组卷积group convolution的输出通道数仍为in_num,因为替换后,组卷积先计算,逐点卷积后计算,因此逐点卷积的输出通道是out_num,设置逐点卷积pointwise convolution的输入通道input channel的通道数为in_num,输出通道output channel的通道数为out_num,这样组卷积和逐点卷积的组合保持了和原普通卷积相同的input channel和output channel,完成替换;
20.其中,组卷积的卷积核大小等于被替换普通卷积的卷积核大小;group num为输入input feature map划分的group个数,input feature map的channel数,即为被替换普通卷积的input channel数,也为组卷积的input channel数,这个数除以group channel数,即为分组的个数group num。
21.所述方法不需要固定组通道数,而是用户根据网络选择合适的数值作为本次替换过程中的确定值,可以是8、或者16、或者32,这里的确定值是指用户的替换的过程中这个值确定,不会出现例如替换第一个普通卷积使用32,替换第二个普通卷积使用16的情形,所述定义为组通道group channel的值,能够被普通卷积的输入通道数值整除,如若不能,则需要修改原网络模型,使其满足被替换掉的组卷积的input channel的值能够被组通道数值整除;在替换过程中,不会改变卷积核大小,即组卷积和被替换卷积的卷积核大小相等,替换过程中pointwise convolution的卷积核大小为1是固定的,group convolution的卷积核大小等于被替换普通卷积的卷积核大小,这样不会改变网络的感受野,在卷积神经网络中,感受野(receptive field)的定义是卷积神经网络每一层输出的特征图(feature map)
上的像素点在输入图片上映射的区域大小。再进一步地解释是,特征图上的一个点对应输入图上的区域,感受野的定义是为了说明组卷积的卷积核大小和被替换卷积大小一致的原因,即不会改变网络的一些固有特性;替换过程中pointwise convolution的卷积核大小为1,是固定的,group convolution的卷积核大小等于被替换普通卷积的卷积核大小,根据需求设置每一层的channel数以便能够被group channel整除,这样使得输入层和输出层外的中间层卷积能够替换为group convolution和pointwise convolution,且group convolution的group channel数为一确定值。
22.根据需求设置每一层的channel数以便能够被group channel整除,这样使得输入层和输出层外的中间层卷积能够替换为group convolution和pointwise convolution,且group convolution的channel数为一确定值,这个值是用户根据自己实际情况设置,作为本次替换过程中的固定值,换一个网络,或者网络的运行平台变化了,则使用另一个合适的确定值会有更好的效果。
23.所述方法中,设卷积核k等于3,input channel等于256,output channel等于512,则普通卷积的参数为3*3*256*512=1179648;替换后,设置组通道group channel为32,那么group num为256/32=8,即8个组通道为32的3x3的组卷积,总的通道数仍为512;所用参数总数为group convolution的参数加上pointwise convolution的参数,3*3*32*32*8+1*1*256*512=73728+131072=204800,总参数为普通卷积的204800
÷
1179648≈0.174;因此,在步骤s2完成后,网络除输入层输出层外计算简化为卷积核为3*3,group channel为32的组卷积和逐点卷积。
24.还可以设置组通道group channel为16,这样就是256/16=16个组通道为16的3x3的组卷积。
25.所述步骤s1中,假设有一层channel数不能为设置的group channel数整除,则将结果向上取整,再乘以channel数,所得结果设置为该层的input channel数,即能够被group channel整除;假设设置group channel数为32,但是有一层channel数为80,这时使用80/32的值为2.5,向上取整为3,再乘以32为96,设置该层的input channel数为96。
26.所述步骤s1中,当group channel大小等于原卷积网络的input channel大小时,此时模型就成为普通卷积normal convolution和点卷积point convolution的组合,参数最多,需求的计算量和内存空间也最大,模型能力也最强;当group channel的值为1时,模型就成为depthwise separable convolution,参数最少,需求的计算量和内存空间也最少,模型能力也最弱;因此,需要根据平台计算能力和内存空间,选择合适的group channel。
27.由此,本技术的优势在于:本技术从指令级优化的角度出发,在算法上减少参数和计算量,保证模型的精度,且对嵌入式设备的指令级优化很友好。
附图说明
28.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,并不构成对本发明的限定。
29.图1是本发明的方法中卷积核大小不为1的普通卷积,使用group convolution和pointwise convolution替换的示意图。
30.图2是本发明的方法中将首尾外的中间层卷积,替换为group convolution和pointwise convolution,且group convolution的channel数为一确定值的示意图。
31.图3是本发明方法的流程图。
具体实施方式
32.为了能够更清楚地理解本发明的技术内容及优点,现结合附图对本发明进行进一步的详细说明。
33.本技术方法涉及一种卷积神经网络轻量化的改进方法,所述方法中组卷积group convolution是由一组channel数完全相同的普通卷积组成,单个普通卷积是指这些相同的普通的卷积的其中一个,具有普遍的代表性,单个普通卷积normal convolution的输入通道input channel和输出通道output channel数相同,这个值定义为组通道group channel该值与前述输入通道数和输出通道数值相等,即设置一个组通道group channel值,将模型中卷积核不为1的普通卷积替换为通道channel数值确定的组卷积group convolution和逐点卷积pointwise convolution,其中,所述组卷积group convolution为一组通道channel数相等(与输入通道和输出通道相等)的普通卷积的集合,用group channel来表示输入/输出通道的数值,所述组卷积中含有普通卷积的个数为group num,group channel和group num的乘积,等于被替换普通卷积的输入通道input channel的值,这样普通卷积的输入特征图input feature map也能够作为组卷积的输入,组卷积的output channel的值等于被替换普通卷积的input channel的值,本技术中组卷积的输入和输出的通道数相等,都等于被替换普通卷积的输入通道数;所述逐点卷积pointwise convolution是卷积核为1x1的普通卷积。
34.本方法中,逐点卷积的input channel和output channel的值,与被替换的普通卷积的input channel和output channel值相同,使用组卷积的输出特征图output feature map作为输入;组卷积输出的是output feature map是张量,它的通道数即为组卷积的输出通道数output channel,作为逐点卷积输入的是组卷积输出output feature map,它的通道数需要和卷积的input channel相等,才能完成卷积计算。
35.所述方法中不会去固定组通道数,但这个值可以根据情况确定,这个值一般能够被普通卷积的输入通道数整除,如若不能,则需要修改原网络模型,使其需要被替换掉的组卷的input channel值可以被组通道数整除,例如普通3x3的卷积,输入通道数为256,可以设置组通道数为32,这样256/32=8个组通道为32的3x3的组卷积,总的通道数仍为512,当然也可以设置组通道为16,这样就是256/16=16个组通道为16的3x3的组卷积,将模型中卷积核不为1的普通卷积替换为通道channel确定的组卷积group convolution和逐点卷积pointwise convolution;其中所述组卷积将channel分成n个组,如前例,输入通道数为256的普通卷积,分成16个组,每组卷积的输入输出通道数都为16,每个组分别作普通卷积,所述逐点卷积是卷积核为1x1的普通卷积。替换过程中pointwise convolution的卷积核大小为1是固定的,group convolution的卷积核大小等于被替换普通卷积的卷积核大小,在替换过程中,不会改变卷积核大小,即组卷积和被替换卷积的卷积核大小相等,这样不会改变网络的感受野,感受野(receptive field)的定义是卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。是特征图上的一个点对应输入
图上的区域,通通俗一点讲,就是输出一个像素点,由多少个输入像素点计算得到,这里的解释替换方式组卷积和被替换普通卷积的卷积核大小相等,是为了感受野和原网络具有一致性。
36.所述方法可以分为以下步骤:
37.s1、根据实际需要,调整group channel的大小,兼顾效率与模型能力,举特例说明,当group channel大小等于原input channel大小时,此时模型就成为normal convolution和point convolution的组合,参数最多,需求的计算量和内存空间也最大,模型能力也最强。当group channel的值为1时,模型就成为depthwise separable convolution,参数最少,需求的计算量和内存空间也最少,模型能力也最弱。因此,根据平台计算能力和内存空间,选择合适的group channel,可以兼顾效率和模型能力;根据需求选择合适group channel,这里的合适和运行平台的计算能力、内存空间相关,充裕可以设置较大的值,反之,可以设置较小的值,设定每一层卷积的channel数,使每一层的channel数都为group channel的整数倍;除去神经网络的输入层和输出层外,根据需求灵活在卷积神经网络中,设置每一层的channel数例如设置group channel数为32,但是有一层channel数为80,这时可以使用80/32的值2.5,向上取整为3,再乘以32为96,设置该层的input channel数为96,可以被group channel整除,这样满足将首尾外的中间层卷积替换为group convolution和pointwise convolution的条件;
38.s2、对于卷积核大小不为1的普通卷积,使用group convolution和pointwise convolution替换,所述替换步骤,如图1所示:假设normal convolution的输入通道input channel的通道数数为in_num,输出通道output channel的通道数为out_num,固定的组通道数为g_channel,组的个数group num为g_nums,满足in_num=g_channel*g_nums。此时组卷积的输出通道仍为in_num,设置pointwise convolution的input channel为in_num,output channel为out_num,这样组卷积和逐点卷积的组合保持了和原普通卷积相同的input channel和output channel。完成替换;input channel和output channel分别是普通卷积的input channel(输入通道数)和output channel(输出通道数),卷积核大小为k;group num为输入input feature map划分的group个数;
39.s3、在步骤s2完成后,网络大部分计算被简化,且input channel和output channel为一固定值的普通卷积,和卷积核为1*1的普通卷积。
40.为了便于理解,本技术方法还可以进一步描述如下:
41.1、对于卷积核大小不为1的普通卷积,使用group convolution和pointwise convolution替换,如图1所示。
42.这一模型还可以将depthwise separable convolution看作本发明特例,因为depthwise convolution可以看做group channel值为1的group convolution,所以depthwise separable convolution可以看做本技术替换方法的特例。input channel和output channel分别是普通卷积的input channel和output channel,卷积核大小为k。group num为输入input feature map划分的group的个数。以卷积核等于3,input channel等于256,output channel等于512为例。普通卷积的参数为3*3*256*512=1179648。替换后,设置group channel为32,那么group num为256/32=8,所用参数总数为group convolution的参数加上pointwise convolution的参数,3*3*32*32*8+1*1*256*512=
73728+131072=204800,总参数约为普通卷积的0.174,可以看出参数减小,一方面可以减小内存空间的占用,另一方面,降低了计算量。这个数据说明了此方法在计算量和内存占用对比原方法的优势)(204800
÷
1179648),根据实际需要,可以调整group channel的大小,兼顾效率与模型能力。
43.2、根据需求,选择合适group channel,设定每一层卷积的channel数,使每一层的channel数都为group channel的整数倍。除去神经网络的输入层和输出层外,可以灵活设置每一层的channel数,这样可以将首尾外的中间层卷积,替换为group convolution和pointwise convolution,如图2所示。
44.3、针对group channel的convolution和pointwise convolution进行优化。当前网络最常见的普通卷积核为3*3,因此,在第2步完成后,网络大部分计算可以简化为卷积核为3*3,且input channel和output channel为一固定值的普通卷积,和卷积核为1*1的普通卷积,group convolution本身作为一组普通卷积的组合,本技术中group convolution具有的另外的特性是,组中单个的普通卷积,input channel和output channel均相同;pointwise convolution本身就是卷积核1*1的普通卷积,有利于嵌入式设备进行指令级优化,甚至硬件实现。
45.综上所述,所述方法可以总结简化为如图3所示,所述方法包括以下步骤:
46.s1,调整:卷积神经网络中除去输入层和输出层之外,中间层根据需求选择合适的group channel值,为使其符合替换的条件,将卷积核不为1*1的普通卷积层的input channel调整为group channel的整数倍;
47.即根据需求选择和运行平台的计算能力以及内存空间相关的合适group channel,设定每一层卷积的channel数,使每一层的channel数都为group channel的整数倍;
48.s2,替换:除去神经网络的输入层和输出层,对于卷积核大小不为1的普通卷积,使用组卷积group convolution和逐点卷积pointwise convolution进行替换,所述方法中,组成组卷积的普通卷积的输入通道和输出通道数相等,本技术中group convolution是由一组channel数完全相同的普通卷积组成,单个普通卷积是指这些相同的普通的卷积的其中一个,具有普遍的代表性;
49.s3,结果:最终的结果就是网络中除输入层和输出层外的部分计算被简化为输入通道input channel和输出通道output channel为确定值的普通卷积组成的组卷积和卷积核为1x1的普通卷积,该确定值就是步骤s1中选择的合适的group channel值。
50.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1