一种卷积和池化合并的优化方法与流程

文档序号:33727847发布日期:2023-04-06 01:29阅读:59来源:国知局
一种卷积和池化合并的优化方法与流程

本发明涉及图像处理,特别涉及一种卷积和池化合并的优化方法。


背景技术:

1、集成电路技术日益成为技术发展的焦点,芯片厂商纷纷开发自己的芯片。而在芯片应用中,根据不同的应用场景,在各自的芯片设计中也会产生各自的需求问题。例如,北京君正集成电路股份有限公司(以下简称:北京君正)生产的芯片,其中的北京君正t30、t31型号的芯片,其寄存器是128位寄存器,并且寄存器个数是有限的,一共32个寄存器,使用现有技术时如果超过32个,将会导致前面加载的寄存器数据存储到内存中,后面处理再使用时,将存储的数据再重新加载,导致效率很低。因而在优化设计中势必要考虑寄存器个数问题。

2、因此,现有技术存在的缺陷在于:

3、在寄存器个数有限的情况下,一张特征图卷积计算后,将结果保存,并生成新的特征图,将新的特征图作为输入进行池化处理,处理后结果再保存一整新的特征图。这种处理,进行了两次加载数据,两次保存数据,造成了时间上的浪费。

4、另外,现有技术中的常用术语如下:

5、1、simd指令:单指令流多数据流,即一次运算指令可以执行多个数据流,这样可以提高程序的运算速度。更通俗理解,就是一种矢量(向量)的计算。不同芯片,具体指令集不同。

6、2、特征图:输入数据通过卷积计算后得到的结果称之为特征图(或输出数据),数据通过全连接后生成的结果也称为特征图(或输出数据)。特征图大小一般表示为长×宽×深度,或1×深度。深度又被称为通道。

7、3、卷积:将卷积核的中心放置在要计算的像素上,一次计算核中每个元素和其覆盖的图像像素值的乘积并求和,得到的结构就是该位置的新像素值,这个过程称为卷积。

8、4、池化:在通过卷积层获得特征(feature map)之后,下一步要做的就是利用这些特征进行整合、分类。常见的池化有最大池化(max pooling),平均池化(averagepooling)。


技术实现思路

1、为了解决上述现有技术中的问题,本技术的目的在于:通过本方法将两次加载数据,两次保存数据优化到一次加载数据、一次处理数据,并对中间一些算法进行优化,以降低整体的运行时间。

2、具体地,本发明提供一种卷积和池化合并的优化方法,所述方法包括:

3、s1,量化与池化函数分析:

4、s1.1,设卷积计算初步结果为a,量化相乘系数为b,第一次移位系数为shift_left,第二次移位系数为shift_right,最终结果为res,公式如下:

5、amax=max(a,0)   (1)

6、ab=amax*b>>(15-shift_left)   (2)

7、res0=round(ab>>shift_right)   (3)

8、res=min(res0,15)-8   (4)

9、s1.2,对上面的公式进行分析,自变量为a,其他参数shift_left、shift_right为给定的常量,则有公式(1)(2)(3)都是递增函数,而min(res0,15)也是增函数,所以公式(4)是递增函数,那么由公式(1)至(4)得到的res是关于a的一个递增函数,即量化处理是一个处理递增函数的过程;

10、s2,优化处理方法:

11、先对卷积计算初步结果进行池化处理,再使用量化处理对池化结果进行量化处理。

12、所述方法中的池化处理,是比较同一个通道的几个数据,选择最大的一个数据。

13、所述方法使用池化处理是采用最大池化,并且池化核是2x2,步长是2。

14、所述步骤s2进一步包括:

15、s2.1,优化处理中池化处理采用2x2的核,步长为2的池化;

16、设量化处理模块为vrd=quantization(vrs,vrt),其中vrs、vrt为卷积计算初步结果寄存器,vrs、vrt中的数据是量化前且只是卷积计算累加和的结果,vrs、vrt每个存储的是8个16比特的数据;vrd是生成的结果,存储的是16个8比特的数据;

17、s2.2,根据特征图的宽度和高度,进行池化和量化处理,实现卷积运算和池化运算的整合:

18、其中,设卷积计算初步结果为sum_0、sum_1、sum_2、sum_3、sum_4、sum_5、sum_6、sum_7,这些参数均为存储8个16bit的寄存器;

19、特征图深度是16的倍数,每次处理都是16的倍数方式处理,sum_0和sum_1、sum_2和sum_3、sum_4和sum_5、sum_6和sum_7,分别代表处理的16个数据;

20、卷积计算初步结果看作一个特征图,在宽度和高度上,两个步长才会生成一个池化后的一个宽度和一个高度的结果。

21、所述步骤s2.2进一步包括:

22、a)特征图的宽度和高度能被2整除的部分:

23、设卷积计算初步结果的特征图

24、宽度wi高度hi上取值,则有sum_0和sum_1;

25、宽度wi+1高度hi上取值,则有sum_2和sum_3;

26、宽度wi高度hi+1上取值,则有sum_4和sum_5;

27、宽度wi+1高度hi+1上取值,则有sum_6和sum_7;

28、池化处理:

29、比较sum_0、sum_2,选择出其中一个大的数据,存放到sum_0中;

30、比较sum_0、sum_4,选择出其中一个大的数据,存放到sum_0中;

31、比较sum_0、sum_6,选择出其中一个大的数据,存放到sum_0中;

32、比较sum_1、sum_3,选择出其中一个大的数据,存放到sum_0中;

33、比较sum_1、sum_5,选择出其中一个大的数据,存放到sum_0中;

34、比较sum_1、sum_7,选择出其中一个大的数据,存放到sum_0中;量化处理:

35、使用量化函数模块,对sum_0、sum_1进行量化处理,并将处理的结果存放到sum_0,表示为:

36、sum_0=quantization(sum_0,sum_1),

37、其中,输入sum_0、sum_1为卷积计算初步结果寄存器,sum_0、sum_1中的数据是量化前且只是卷积计算累加和的结果,sum_0、sum_1每个存储的是8个16比特的数据;输出sum_0是生成的结果,存储的是16个8比特的数据;

38、b)特征图的宽度被2整除后的余数部分,高度是被2整除的部分:

39、此时在卷积计算初步结果的特征图

40、宽度wi高度hi上取值,则有sum_0和sum_1;

41、宽度wi高度hi+1上取值,则有sum_4和sum_5;

42、比较sum_0、sum_4,选择出其中一个大的数据,存放到sum_0中;

43、比较sum_1、sum_5,选择出其中一个大的数据,存放到sum_0中;

44、量化处理:

45、使用量化函数模块,对sum_0、sum_1进行量化处理,并将处理的结果存放到sum_0,表示为:

46、sum_0=quantization(sum_0,sum_1);

47、c)特征图的宽度被2整除的部分,高度是被2整除的余数部分:

48、卷积计算初步结果的特征图

49、宽度wi高度hi上取值,则有sum_0和sum_1;

50、宽度wi+1高度hi上取值,则有sum_2和sum_3;

51、池化处理:

52、比较sum_0、sum_2,选择出其中一个大的数据,存放到sum_0中;

53、比较sum_1、sum_3,选择出其中一个大的数据,存放到sum_0中;

54、量化处理:

55、使用量化函数模块,对sum_0、sum_1进行量化处理,并将处理的结果存放到sum_0,表示为:

56、sum_0=quantization(sum_0,sum_1);

57、d)特征图的宽度被2整除余数的部分,高度是被2整除余数的部分;

58、卷积计算初步结果的特征图

59、宽度wi高度hi上取值,只有sum_0和sum_1;

60、宽度wi+1高度hi、宽度wi高度hi+1、宽度wi+1高度hi+1都已经溢出到特征图外面,不存在;

61、使用量化函数模块,对sum_0、sum_1进行量化处理,并将处理的结果存放到sum_0,表示为:

62、sum_0=quantization(sum_0,sum_1);

63、通过a)、b)、c)、d)实现卷积计算和池化运算的整合。

64、由此,本技术的优势在于:提供了一种优化方法,采用这种方法后,将处理多次的量化处理只处理一次,省去了很多量化处理。在卷积整个处理中,量化部分的计算也是很大的,所以这样处理可以极大的节省时间,可以很大程度上提高效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1