一种卷积和池化合并的优化方法技术

技术编号:37155565 阅读:18 留言:0更新日期:2023-04-06 22:16
本发明专利技术提供一种卷积和池化合并的优化方法,包括:S1,量化与池化函数分析:S1.1,设卷积计算初步结果为a,量化相乘系数为b,第一次移位系数为shift_left,第二次移位系数为shift_right,最终结果为res,公式如下:a

【技术实现步骤摘要】
一种卷积和池化合并的优化方法


[0001]本专利技术涉及图像处理
,特别涉及一种卷积和池化合并的优化方法。

技术介绍

[0002]集成电路技术日益成为技术发展的焦点,芯片厂商纷纷开发自己的芯片。而在芯片应用中,根据不同的应用场景,在各自的芯片设计中也会产生各自的需求问题。例如,北京君正集成电路股份有限公司(以下简称:北京君正)生产的芯片,其中的北京君正T30、T31型号的芯片,其寄存器是128位寄存器,并且寄存器个数是有限的,一共32个寄存器,使用现有技术时如果超过32个,将会导致前面加载的寄存器数据存储到内存中,后面处理再使用时,将存储的数据再重新加载,导致效率很低。因而在优化设计中势必要考虑寄存器个数问题。
[0003]因此,现有技术存在的缺陷在于:
[0004]在寄存器个数有限的情况下,一张特征图卷积计算后,将结果保存,并生成新的特征图,将新的特征图作为输入进行池化处理,处理后结果再保存一整新的特征图。这种处理,进行了两次加载数据,两次保存数据,造成了时间上的浪费。
[0005]另外,现有技术中的常用术语如下:
[0006]1、simd指令:单指令流多数据流,即一次运算指令可以执行多个数据流,这样可以提高程序的运算速度。更通俗理解,就是一种矢量(向量)的计算。不同芯片,具体指令集不同。
[0007]2、特征图:输入数据通过卷积计算后得到的结果称之为特征图(或输出数据),数据通过全连接后生成的结果也称为特征图(或输出数据)。特征图大小一般表示为长
×

×
深度,或1
×
深度。深度又被称为通道。
[0008]3、卷积:将卷积核的中心放置在要计算的像素上,一次计算核中每个元素和其覆盖的图像像素值的乘积并求和,得到的结构就是该位置的新像素值,这个过程称为卷积。
[0009]4、池化:在通过卷积层获得特征(feature map)之后,下一步要做的就是利用这些特征进行整合、分类。常见的池化有最大池化(Max Pooling),平均池化(Average Pooling)。

技术实现思路

[0010]为了解决上述现有技术中的问题,本申请的目的在于:通过本方法将两次加载数据,两次保存数据优化到一次加载数据、一次处理数据,并对中间一些算法进行优化,以降低整体的运行时间。
[0011]具体地,本专利技术提供一种卷积和池化合并的优化方法,所述方法包括:
[0012]S1,量化与池化函数分析:
[0013]S1.1,设卷积计算初步结果为a,量化相乘系数为b,第一次移位系数为shift_left,第二次移位系数为shift_right,最终结果为res,公式如下:
[0014]a
max
=max(a,0)
ꢀꢀꢀ
(1)
[0015]ab=a
max
*b>>(15

shift_left)
ꢀꢀꢀ
(2)
[0016]res0=round(ab>>shift_right)
ꢀꢀꢀ
(3)
[0017]res=min(res0,15)
‑8ꢀꢀꢀ
(4)
[0018]S1.2,对上面的公式进行分析,自变量为a,其他参数shift_left、shift_right为给定的常量,则有公式(1)(2)(3)都是递增函数,而min(res0,15)也是增函数,所以公式(4)是递增函数,那么由公式(1)至(4)得到的res是关于a的一个递增函数,即量化处理是一个处理递增函数的过程;
[0019]S2,优化处理方法:
[0020]先对卷积计算初步结果进行池化处理,再使用量化处理对池化结果进行量化处理。
[0021]所述方法中的池化处理,是比较同一个通道的几个数据,选择最大的一个数据。
[0022]所述方法使用池化处理是采用最大池化,并且池化核是2X2,步长是2。
[0023]所述步骤S2进一步包括:
[0024]S2.1,优化处理中池化处理采用2X2的核,步长为2的池化;
[0025]设量化处理模块为vrd=quantization(vrs,vrt),其中vrs、vrt为卷积计算初步结果寄存器,vrs、vrt中的数据是量化前且只是卷积计算累加和的结果,vrs、vrt每个存储的是8个16比特的数据;vrd是生成的结果,存储的是16个8比特的数据;
[0026]S2.2,根据特征图的宽度和高度,进行池化和量化处理,实现卷积运算和池化运算的整合:
[0027]其中,设卷积计算初步结果为sum_0、sum_1、sum_2、sum_3、sum_4、sum_5、sum_6、sum_7,这些参数均为存储8个16bit的寄存器;
[0028]特征图深度是16的倍数,每次处理都是16的倍数方式处理,sum_0和sum_1、sum_2和sum_3、sum_4和sum_5、sum_6和sum_7,分别代表处理的16个数据;
[0029]卷积计算初步结果看作一个特征图,在宽度和高度上,两个步长才会生成一个池化后的一个宽度和一个高度的结果。
[0030]所述步骤S2.2进一步包括:
[0031]a)特征图的宽度和高度能被2整除的部分:
[0032]设卷积计算初步结果的特征图
[0033]宽度wi高度hi上取值,则有sum_0和sum_1;
[0034]宽度wi+1高度hi上取值,则有sum_2和sum_3;
[0035]宽度wi高度hi+1上取值,则有sum_4和sum_5;
[0036]宽度wi+1高度hi+1上取值,则有sum_6和sum_7;
[0037]池化处理:
[0038]比较sum_0、sum_2,选择出其中一个大的数据,存放到sum_0中;
[0039]比较sum_0、sum_4,选择出其中一个大的数据,存放到sum_0中;
[0040]比较sum_0、sum_6,选择出其中一个大的数据,存放到sum_0中;
[0041]比较sum_1、sum_3,选择出其中一个大的数据,存放到sum_0中;
[0042]比较sum_1、sum_5,选择出其中一个大的数据,存放到sum_0中;
[0043]比较sum_1、sum_7,选择出其中一个大的数据,存放到sum_0中;量化处理:
[0044]使用量化函数模块,对sum_0、sum_1进行量化处理,并将处理的结果存放到sum_0,表示为:
[0045]sum_0=quantization(sum_0,sum_1),
[0046]其中,输入sum_0、sum_1为卷积计算初步结果寄存器,sum_0、sum_1中的数据是量化前且只是卷积计算累加和的结果,sum_0、sum_1每个存储的是8个16比特的数据;输出sum_0是生成的结果,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种卷积和池化合并的优化方法,其特征在于,所述方法包括:S1,量化与池化函数分析:S1.1,设卷积计算初步结果为a,量化相乘系数为b,第一次移位系数为shift_left,第二次移位系数为shift_right,最终结果为res,公式如下:a
max
=max(a,0)
ꢀꢀꢀꢀ
(1)ab=a
max
*b>>(15

shift_left)
ꢀꢀꢀꢀ
(2)res0=round(ab>>shift_hight)
ꢀꢀꢀꢀ
(3)res=min(res0,15)
‑8ꢀꢀꢀꢀ
(4)S1.2,对上面的公式进行分析,自变量为a,其他参数shift

left、shift_right为给定的常量,则有公式(1)(2)(3)都是递增函数,而min(res0,15)也是增函数,所以公式(4)是递增函数,那么由公式(1)至(4)得到的res是关于a的一个递增函数,即量化处理是一个处理递增函数的过程;S2,优化处理方法:先对卷积计算初步结果进行池化处理,再使用量化处理对池化结果进行量化处理。2.根据权利要求1所述的一种卷积和池化合并的优化方法,其特征在于,所述方法中的池化处理,是比较同一个通道的几个数据,选择最大的一个数据。3.根据权利要求2所述的一种卷积和池化合并的优化方法,其特征在于,所述方法使用池化处理是采用最大池化,并且池化核是2X2,步长是2。4.根据权利要求3所述的一种卷积和池化合并的优化方法,其特征在于,所述步骤S2进一步包括:S2.1,优化处理中池化处理采用2X2的核,步长为2的池化;设量化处理模块为vrd=quantization(vrs,vrt),其中vrs、vrt为卷积计算初步结果寄存器,vrs、vrt中的数据是量化前且只是卷积计算累加和的结果,vrs、vrt每个存储的是8个16比特的数据;vrd是生成的结果,存储的是16个8比特的数据;S2.2,根据特征图的宽度和高度,进行池化和量化处理,实现卷积运算和池化运算的整合:其中,设卷积计算初步结果为sum_0、sum_1、sum_2、sum_3、sum_4、sum_5、sum_6、sum_7,这些参数均为存储8个16bit的寄存器;特征图深度是16的倍数,每次处理都是16的倍数方式处理,sum_0和sum_1、sum_2和sum_3、sum_4和sum_5、sum_6和sum_7,分别代表处理的16个数据;卷积计算初步结果看作一个特征图,在宽度和高度上,两个步长才会生成一个池化后的一个宽度和一个高度的结果。5.根据权利要求4所述的一种卷积和池化合并的优化方法,其特征在于,所述步骤S2.2进一步包括:a)特征图的宽度和高度能被2整除的部分:设卷积计算初步结果的特征图宽度wi高度hi上取值,则有sum_0和sum_1;宽度wi+1高度hi上取值,则有sum_2和sum_3;宽度wi高度hi+1上取值,则有sum_4和sum_5;
宽度wi+1高度hi+1上取值,则有sum_6和sum_7;池化处理:比较sum_0、sum_2,选择出其中一个大的数据,存放到sum_0中;比较sum_0、sum_4,选择出其中一个大的数据,存放到sum_0中;比较sum_0、sum_6,选择出其中一个大的数据,存放到sum_0中;比较sum_1、sum_3,选择出其中一个大的数据,存放到sum_0中;比较sum_1、sum_5,选择出其中一个大的数据,存放到sum_0中;比较sum_1、sum_7,选择出其中一个大的数据,存放到sum_0中;量化处理:使用量化函数模块,对sum_0、sum_1进行量化处理,并将处理的结果存放到sum_0,表示为:sum_0=quantization(sum_0,sum_1),其中,输入sum_0、sum_1为卷积计算初步结果寄存器,sum_0、sum_1中的数据是量化前且只是卷积计算累加和的结果,sum_0、sum_1每个存储的是8个16比特的数据;输出sum_0是生成的结果,存储的是16个8比特的数据;b)特征图的宽度被2整除后的余数部分,高度是被2整除的部分:此时在卷积计算初步结果的特征图宽度wi高度hi上取值,则有sum_0和sum_1;宽度wi高度hi+1上取值,则有sum_4和sum_5;比较sum_0、sum_4,选择出其中一个大的数据,存放到sum_0中;比较sum_1、sum_5,选择出其中一个大的数据,存放到sum_0中;量化处理:使用量化函数模块,对sum_0、sum_1进行量化处理,并将处理的结果存放到sum_0,表示为:sum_0=quantization(sum_0,sum_1);c)特征图的宽度被2整除的部分,高度是被2整除的余数部分:卷积计算初步结果的特征图宽度wi高度hi上取值,则有sum_0和sum_1;宽度wi+1高度hi上取值,则有sum_2和sum_3;池化处理:比较sum_0、sum_2,选择出其中一个大的数据,存放到sum_0中;比较sum_1、sum_3,选择出其中一个大的数据,存放到sum_0中;量化处理:使用量化函数模块,对sum_0、sum...

【专利技术属性】
技术研发人员:田凤彬于晓静
申请(专利权)人:北京君正集成电路股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1