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

池化算法的硬件加速方法、装置、系统与可读存储介质与流程

2022-04-13 16:17:24 来源:中国专利 TAG:


1.本发明涉及硬件设计技术领域,尤其涉及池化算法的硬件加速方法、装置、系统与可读存储介质。


背景技术:

2.池化(pool)算法是神经网络计算中非常常用的算法,它以下采样的方式来降低输出特征向量的数量。现有绝大部分神经网络中的硬件加速器都是通过不断从存储器中读取填充(padding)数据来实现的,将填充数据存储在存储器中占用存储空间,将填充的数据从存储器中读取出来并送到计算模块中,增加了传输时间,并且在池化算法进行计算时填充数据需要单独计算,这也需要大量的计算时间,大大降低了硬件加速器的性能,进而降低了池化算法的计算速度。
3.因此,如何提高硬件加速器的性能以提高池化算法的计算速度,是急需解决的问题。


技术实现要素:

4.本发明的主要目的在于提出一种池化算法的硬件加速方法、装置、系统与可读存储介质,旨在解决如何提高硬件加速器的性能以提高池化算法的计算速度的问题。
5.为实现上述目的,本发明提供一种池化算法的硬件加速方法,所述池化算法的硬件加速方法包括如下步骤:
6.在检测到计算指令时,通过数据整理模块获取计算窗口中的非填充数据,并将所述非填充数据发送到第一计算模块;
7.通过控制模块向所述第一计算模块输入第一填充数据,并通过所述第一计算模块根据所述非填充数据和所述第一填充数据得到第一计算结果;
8.通过所述第一计算模块将所述第一计算结果输入第二计算模块,并通过所述控制模块向所述第二计算模块输入第二填充数据;
9.通过所述第二计算模块根据所述第一计算结果和所述第二填充数据得到第二计算结果。
10.优选地,在检测到计算指令时,通过数据整理模块获取计算窗口中的非填充数据的步骤包括:
11.在检测到计算指令时,获取计算指令中对应的目标图片,并根据预设规则通过计算窗口框选所述目标图片;
12.通过数据整理模块识别并获取所述目标图片中被所述计算窗口框选部分的非填充数据,并将在所述计算窗口中位于同一列的非填充数据分别发送到第一计算模块。
13.优选地,通过控制模块向所述第一计算模块输入第一填充数据的步骤包括:
14.根据所述目标图片上方或下方的填充数据行数、所述目标图片的高度、所述计算窗口对应的列步长累加值以及所述计算窗口对应的窗口高度,确定所述第一计算模块对应
的第一待使能串口;
15.通过所述控制模块对所述第一待使能串口进行使能操作,以向所述第一计算模块输入第一填充数据。
16.优选地,通过所述第一计算模块根据所述非填充数据和所述第一填充数据得到第一计算结果的步骤包括:
17.通过所述第一计算模块将位于所述计算窗口中每一列的所述非填充数据和所述第一填充数据输入加法器或比较器中,以得到第一计算结果。
18.优选地,通过所述控制模块向所述第二计算模块输入第二填充数据的步骤包括:
19.根据所述目标图片左边或右边的填充数据列数、所述目标图片的宽度、所述计算窗口对应的行步长累加值以及所述计算窗口对应的窗口宽度,确定所述第二计算模块对应的第二待使能串口;
20.根据第一预设时钟周期,通过所述控制模块对所述第二待使能串口进行使能操作,以向所述第二计算模块输入第二填充数据。
21.优选地,通过所述第二计算模块根据所述第一计算结果和所述第二填充数据得到第二计算结果的步骤包括:
22.通过所述第二计算模块将所述第一计算结果和所述第二填充数据存储在寄存器中,并根据第二预设时钟周期将所述第一计算结果和所述第二填充数据输入加法器和除法器,或将所述第一计算结果和所述第二填充数据输入比较器,以得到第二计算结果。
23.优选地,通过所述第二计算模块根据所述第一计算结果和所述第二填充数据得到第二计算结果的步骤之后,所述池化算法的硬件加速方法还包括:
24.根据所述计算窗口对应的行步长或列步长,控制所述计算窗口按照预设移动规则进行移动,并执行步骤:通过数据整理模块获取计算窗口中的非填充数据,以得到目标特征图。
25.此外,为实现上述目的,本发明还提供一种池化算法的硬件加速装置,所述池化算法的硬件加速装置包括:
26.获取模块,用于在检测到计算指令时,通过数据整理模块获取计算窗口中的非填充数据,并将所述非填充数据发送到第一计算模块;
27.第一输入模块,用于通过控制模块向所述第一计算模块输入第一填充数据,并通过所述第一计算模块根据所述非填充数据和所述第一填充数据得到第一计算结果;
28.第二输入模块,用于通过所述第一计算模块将所述第一计算结果输入第二计算模块,并通过所述控制模块向所述第二计算模块输入第二填充数据;
29.计算模块,用于通过所述第二计算模块根据所述第一计算结果和所述第二填充数据得到第二计算结果。
30.优选地,所述获取模块还用于:
31.在检测到计算指令时,获取计算指令中对应的目标图片,并根据预设规则通过计算窗口框选所述目标图片;
32.通过数据整理模块识别并获取所述目标图片中被所述计算窗口框选部分的非填充数据,并将在所述计算窗口中位于同一列的非填充数据分别发送到第一计算模块。
33.优选地,所述第一输入模块还用于:
34.根据所述目标图片上方或下方的填充数据行数、所述目标图片的高度、所述计算窗口对应的列步长累加值以及所述计算窗口对应的窗口高度,确定所述第一计算模块对应的第一待使能串口;
35.通过所述控制模块对所述第一待使能串口进行使能操作,以向所述第一计算模块输入第一填充数据。
36.优选地,所述第一输入模块还包括计算模块,所述计算模块用于:
37.通过所述第一计算模块将位于所述计算窗口中每一列的所述非填充数据和所述第一填充数据输入加法器或比较器中,以得到第一计算结果。
38.优选地,所述第二输入模块还用于:
39.根据所述目标图片左边或右边的填充数据列数、所述目标图片的宽度、所述计算窗口对应的行步长累加值以及所述计算窗口对应的窗口宽度,确定所述第二计算模块对应的第二待使能串口;
40.根据第一预设时钟周期,通过所述控制模块对所述第二待使能串口进行使能操作,以向所述第二计算模块输入第二填充数据。
41.优选地,所述计算模块还用于:
42.通过所述第二计算模块将所述第一计算结果和所述第二填充数据存储在寄存器中,并根据第二预设时钟周期将所述第一计算结果和所述第二填充数据输入加法器和除法器,或将所述第一计算结果和所述第二填充数据输入比较器,以得到第二计算结果。
43.优选地,所述计算模块还用于:
44.根据所述计算窗口对应的行步长或列步长,控制所述计算窗口按照预设移动规则进行移动,并执行步骤:通过数据整理模块获取计算窗口中的非填充数据,以得到目标特征图。
45.此外,为实现上述目的,本发明还提供一种池化算法的硬件加速系统,所述池化算法的硬件加速系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的池化算法的硬件加速程序,所述池化算法的硬件加速程序被所述处理器执行时实现如上所述的池化算法的硬件加速方法的步骤。
46.此外,为实现上述目的,本发明还提供一种可读存储介质,所述可读存储介质为计算机可读存储介质,所述计算机可读存储介质上存储有池化算法的硬件加速程序,所述池化算法的硬件加速程序被处理器执行时实现如上所述的池化算法的硬件加速方法的步骤。
47.本发明提出的池化算法的硬件加速方法,在检测到计算指令时,通过数据整理模块获取计算窗口中的非填充数据,并将非填充数据发送到第一计算模块;通过控制模块向第一计算模块输入第一填充数据,并通过第一计算模块根据非填充数据和第一填充数据得到第一计算结果;通过第一计算模块将第一计算结果输入第二计算模块,并通过控制模块向第二计算模块输入第二填充数据;通过第二计算模块根据第一计算结果和第二填充数据得到第二计算结果;本发明通过控制模块向第一计算模块输入第一填充数据和向第二计算模块输入第二填充数据,提高了硬件加速器的性能,进而提高了池化算法的计算速度。
附图说明
48.图1是本发明实施例方案涉及的硬件运行环境的系统结构示意图;
49.图2为本发明池化算法的硬件加速方法第一实施例的流程示意图;
50.图3为本发明目标图片示意图;
51.图4为本发明硬件加速器中各模块的连接示意图;
52.图5为本发明第一计算模块与控制模块的连接示意图;
53.图6为本发明第二计算模块与控制模块的连接示意图。
54.本发明目的的实现、功能特点及优点将集合实施例,参照附图做进一步说明。
具体实施方式
55.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
56.如图1所示,图1是本发明实施例方案涉及的硬件运行环境的系统结构示意图。
57.本发明实施例系统可以是pc机或服务器系统。
58.如图1所示,该系统可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
59.本领域技术人员可以理解,图1中示出的系统结构并不构成对系统的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
60.如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及池化算法的硬件加速程序。
61.其中,操作系统是管理和控制便携池化算法的硬件加速工具与软件资源的程序,支持网络通信模块、用户接口模块、池化算法的硬件加速程序以及其他程序或软件的运行;网络通信模块用于管理和控制网络接口1002;用户接口模块用于管理和控制用户接口1003。
62.在图1所示的池化算法的硬件加速工具中,所述池化算法的硬件加速工具通过处理器1001调用存储器1005中存储的池化算法的硬件加速程序,并执行下述池化算法的硬件加速方法各个实施例中的操作。
63.基于上述硬件结构,提出本发明池化算法的硬件加速方法实施例。
64.参照图2,图2为本发明池化算法的硬件加速方法第一实施例的流程示意图,所述方法包括:
65.步骤s10,在检测到计算指令时,通过数据整理模块获取计算窗口中的非填充数据,并将所述非填充数据发送到第一计算模块;
66.步骤s20,通过控制模块向所述第一计算模块输入第一填充数据,并通过所述第一计算模块根据所述非填充数据和所述第一填充数据得到第一计算结果;
67.步骤s30,通过所述第一计算模块将所述第一计算结果输入第二计算模块,并通过所述控制模块向所述第二计算模块输入第二填充数据;
68.步骤s40,通过所述第二计算模块根据所述第一计算结果和所述第二填充数据得
到第二计算结果。
69.本实施例池化算法的硬件加速方法运用于图像处理机构的池化算法的硬件加速器中,池化算法的硬件加速器可以应用在终端或者pc设备,以提高终端或pc设备运行池化算法的计算速度,为描述方便,以硬件加速器为例进行描述,该硬件加速器包括但不限于控制模块、数据整理模块、第一计算模块和第二计算模块。硬件加速器在检测到计算指令时,获取计算指令中对应的目标图片,并根据预设规则通过计算窗口框选目标图片;通过数据整理模块识别并获取目标图片中被计算窗口框选部分的非填充数据,并将非填充数据发送到第一计算模块;硬件加速器通过控制模块向第一计算模块输入第一填充数据,并通过第一计算模块根据非填充数据和第一填充数据得到第一计算结果;硬件加速器通过第一计算模块将第一计算结果输入第二计算模块,并通过控制模块向第二计算模块输入第二填充数据;硬件加速器通过第二计算模块根据第一计算结果和第二填充数据得到第二计算结果。
70.需要说明的是,硬件加速器获取到的目标图片如图3所示,其中“p”代表的是目标图片中的填充数据(padding值),其他数字代表的是目标图片中的非填充数据,非填充数据即目标图片中的自身携带的数据,可以理解的是,图3仅仅用于举例说明,并不是对目标图片的限定,根据实际情况,目标图片还可能在其他位置插入填充数据或者插入更多的填充数据;如图4所示,图4为硬件加速器中各模块的连接示意图,其中,控制模块负责控制数据整理模块、第一计算模块和第二计算模块,数据整理模块将对应的数输入第一计算模块,第一计算模块将对应的数据输入第二计算模块,以得到池化算法对目标图片的计算结果。
71.本实施例的池化算法的硬件加速方法,在检测到计算指令时,通过数据整理模块获取计算窗口中的非填充数据,并将非填充数据发送到第一计算模块;通过控制模块向第一计算模块输入第一填充数据,并通过第一计算模块根据非填充数据和第一填充数据得到第一计算结果;通过第一计算模块将第一计算结果输入第二计算模块,并通过控制模块向第二计算模块输入第二填充数据;通过第二计算模块根据第一计算结果和第二填充数据得到第二计算结果;本发明通过控制模块向第一计算模块输入第一填充数据和向第二计算模块输入第二填充数据,提高了硬件加速器的性能,进而提高了池化算法的计算速度。
72.以下将对各个步骤进行详细说明:
73.步骤s10,在检测到计算指令时,通过数据整理模块获取计算窗口中的非填充数据,并将所述非填充数据发送到第一计算模块;
74.在本实施例中,硬件加速器在检测到计算指令时,获取计算指令中对应的目标图片,并根据预设规则通过计算窗口框选目标图片,再通过控制模块控制数据整理模块识别并获取目标图片中被计算窗口框选部分的非填充数据,将非填充数据发送到第一计算模块,可以理解的是,如图3所示,图3中左上角位置的黑色框指代计算窗口,计算窗口中包括填充数据“p”和非填充数据“0、1、8、9”,数据整理模块识别并获取计算窗口中的非填充数据“0、1、8、9”,并将非填充数据输入第一计算模块。
75.具体的,在检测到计算指令时,通过数据整理模块获取计算窗口中的非填充数据的步骤包括:
76.步骤a,在检测到计算指令时,获取计算指令中对应的目标图片,并根据预设规则通过计算窗口框选所述目标图片;
77.在该步骤中,硬件加速器在检测到计算指令时,获取计算指令中对应的目标图片,
并根据预设规则通过计算窗口框选目标图片;如:相关研发人员设定计算窗口的高度和宽度都为3,预设规则为通过计算窗口从目标图片的左上角开始对目标图片进行框选,再以1作为行步长和列步长,计算窗口根据行步长在目标图片的行方向上移动,计算窗口根据列步长在目标图片的列方向上移动,硬件加速器根据该预设规则通过计算窗口框选目标图片。需要说明的是,行步长是指计算窗口在目标图片的行方向即宽度方向平移的步长,列步长是指计算窗口在目标图片的列方向即高度方向平移的步长。
78.步骤b,通过数据整理模块识别并获取所述目标图片中被所述计算窗口框选部分的非填充数据,并将在所述计算窗口中位于同一列的非填充数据分别发送到第一计算模块。
79.在该步骤中,硬件加速器通过控制模块控制数据整理模块识别并获取目标图片中被计算窗口框选部分的非填充数据,并将在计算窗口中位于同一列的非填充数据进行打包,并分别发送到第一计算模块,如:参考图3,当计算窗口位于图3中左上角的黑色框的位置时,计算窗口中框选了目标图片中的填充数据“p”和非填充数据“0、1、8、9”,其中,非填充数据“0和8”位于同一列,非填充数据“1和9”位于另外一列,控制模块控制数据整理模块将非填充数据“0和8”打包成集合[8,0],将非填充数据“1和9”打包成[9,1],再分别将[8,0]和[9,1]发送到第一计算模块;进一步地,当计算窗口移动到图3中的灰色框的位置时,此时计算框中的第一行全部为填充数据“p”,第二行和第三行都为非填充数据“0、1、2、8、9、10”,其中,非填充数据“0和8”位于同一列,非填充数据“1和9”位于同一列,非填充数据“2和10”位于同一列,由于非填充数据“0和8”、“1和9”在上一次计算过程中已经存储在第二计算模块的寄存器中,因此,控制模块控制数据整理模块将非填充数据“2和10”打包成[2,10],再将[2,10]发送到第一计算模块;计算窗口位于目标图片上的其他位置时的情况与上述情况类似,在此便不一一赘述。
[0080]
步骤s20,通过控制模块向所述第一计算模块输入第一填充数据,并通过所述第一计算模块根据所述非填充数据和所述第一填充数据得到第一计算结果;
[0081]
在本实施例中,硬件加速器通过控制模块控制第一计算模块向第一计算模块输入第一填充数据并通过第一计算模块根据非填充数据和第一填充数据得到第一计算结果;如:参考图5,图5为第一计算模块与控制模块的连接示意图,其中ph代表第一填充数据,pub_kh0_en、pub_kh1_en和pub_kh2_en代表第一计算模块中的三个待使能串口,三个待使能串口与控制模块相连,“ /m”代表加法器或者比较器,在初始阶段pub_kh0_en=pub_kh1_en=pub_kh2_en=0,即三个待使能串口都位于低电平,当硬件加速器识别到第一计算模块需要利用第一填充数据进行计算时,硬件加速器通过控制模块控制对应的待使能串口进行使能,使得pub_kh0_en、pub_kh1_en或pub_kh2_en中的一个或多个等于1,即位于高电平,向第一计算模块输入“ph”即第一填充数据,第一计算模块根据非填充数据和第一填充数据得到第一计算结果;需要说明的是,ph对应的是位于目标图片上方和下方的填充数据,即例如图3所示的第一行和最后一行的“p”值;第一计算模块中的待使能串口的数量可根据计算窗口的宽度进行对应的修改,例如当计算窗口的大小为5行5列,则第一计算模块中的待使能串口的数量应为5个。需要说明的是,第一计算模块中的pub_kh0_en、pub_kh1_en和pub_kh2_en分别代表计算窗口中的第一行、第二行和第三行,当哪个串口被使能,就向对应的行输入第一填充数据。
[0082]
具体地,通过控制模块向所述第一计算模块输入第一填充数据的步骤包括:
[0083]
步骤c,根据所述目标图片上方或下方的填充数据行数、所述目标图片的高度、所述计算窗口对应的列步长累加值以及所述计算窗口对应的窗口高度,确定所述第一计算模块对应的第一待使能串口;
[0084]
在该步骤中,硬件加速器获取目标图片上方的填充数据行数、目标图片的高度、计算窗口对应的列步长累加值以及计算窗口对应的窗口高度,并根据目标图片上方的填充数据行数、目标图片的高度、计算窗口对应的列步长累加值以及计算窗口对应的窗口高度,确定第一计算模块对应的第一待使能串口,其中第一待使能串口可能包括第一计算模块中的待使能串口中的一个或多个。
[0085]
在判断计算窗口中是否包含目标图片上方的填充数据时,假设以pu代表目标图片上方的填充数据行数,以h代表目标图片的高度,以h_cnt代表计算窗口对应的列步长累加值,以kh代表计算窗口对应的窗口高度;当确定pu》h_cnt不成立,则确定计算窗口中不包含目标图片上方的填充数据,则不需要确定第一待使能串口,例如计算窗口位于图3中黑色框向目标图片的高度方向移动一个行步长1的位置时,计算窗口中的数值分别为第一行“p、0、1”,第二行“p、8、9”和第三列“p、16、17”,此时计算窗口中不包含目标图片上方的填充数据,因此不需要确定第一待使能串口;若确定pu》h_cnt成立,则确定计算窗口包含目标图片上方的填充数据,进一步计算pu和h_cnt的差值,这个差值就是计算窗口上方的填充数据的行数,例如,计算窗口位于如图3所示的黑色框所在的位置时,此时h_cnt=0,pu=1,pu》h_cnt成立,pu和h_cnt的差值为1,对应的1大于0,因此以pub_kh0_en作为第一待使能串口,又例如,计算窗口位于图3中黑色框向目标图片的宽度方向移动一个列步长1的位置时,计算窗口中的数值分别为第一行“p、p、p”,第二行“0、1、2”和第三列“8、9、10”,此时计算窗口中包含目标图片上方的填充数据,pu和h_cnt的差值为1,对应的1大于0,因此以pub_kh0_en作为第一待使能串口,再例如,假设计算窗口的第一行和第二行全为填充数据,此时pu和h_cnt的差值则为2,对应的2大于0和1,因此以pub_kh0_en和pub_kh1_en作为第一待使能串口。需要说明的是,上述确定第一待使能串口的方式仅限于计算窗口在目标图片的列方向上移动时使用。
[0086]
在判断计算窗口中是否包含目标图片下方的填充数据时,当计算窗口框选了如图3所示的目标图片的左下角区域时,此时计算窗口的第一行为“p、48、49”,第二行为“p、56、57”,第三行为“p、p、p”,此时h_cnt kh》pu h成立,确定计算窗口中包含目标图片下方的填充数据,则计算h_cnt kh和pu h的差值,这个差值就是计算窗口下方的填充数据的行数,此时这个差值为1,窗口高度kh为3,对应地根据差值 x》=kh,得到x=2,则确定,以pub_kh2_en作为第一待使能串口;当计算窗口框选的数据为第一行为“p、40、41”,第二行为“p、48、49”,第三行为“p、56、57”,此时计算窗口中不包含目标图片下方的填充数据,则h_cnt kh》pu h不成立,则不需要确定第一待使能串口,需要说明的是,上述确定第一待使能串口的方式仅限于计算窗口在目标图片的列方向即高度方向上移动时使用。
[0087]
步骤d,通过所述控制模块对所述第一待使能串口进行使能操作,以向所述第一计算模块输入第一填充数据。
[0088]
在该步骤中,硬件加速器在确定第一待使能串口后,通过控制模块对第一待使能串口进行使能操作,以向第一计算模块输入第一填充数据;如:如图3所示的目标图片,当计
算窗口中包含目标图片上方的填充数据时,硬件加速器确定pub_kh0_en为第一待使能串口,硬件加速器通过控制模块对pub_kh0_en进行使能,使得pub_kh0_en=1,即位于高电平,向第一计算模块输入第一填充数据;当计算窗口中包含目标图片下方的填充数据时,硬件加速器确定pub_kh2_en为第一待使能串口,硬件加速器通过控制模块对pub_kh2_en进行使能,使得pub_kh2_en=1,即位于高电平,向第一计算模块输入第一填充数据。需要说明的是,计算窗口不能同时包括目标图片上方的填充数据和下方的填充数据;一般来说,目标图片上方的填充数据和下方的填充数据对应的值是相同的,因此第一填充数据是在硬件加速器获取到目标图片时,便记录在硬件加速器中的,在对应的串口使能时,便将第一填充数据输入第一计算模块,不需要另外通过储存器对第一填充数据进行储存,节约了从储存器中读取第一填充数据的时间,提高了硬件加速器的性能。
[0089]
具体地,通过所述第一计算模块根据所述非填充数据和所述第一填充数据得到第一计算结果的步骤包括:
[0090]
步骤e,通过所述第一计算模块将位于所述计算窗口中每一列的所述非填充数据和所述第一填充数据输入加法器或比较器中,以得到第一计算结果。
[0091]
在该步骤中,硬件加速器通过控制模块控制第一计算模块将位于计算窗口中每一列的非填充数据和第一填充数据输入加法器或比较器中,以得到第一计算结果;如:参考图3的目标图片,假设图3中的p=1,当计算窗口位于黑色框的位置时,数据整理模块分别将位于第二列的非填充数据“0、8”和位于第三列的非填充数据“1、9”进行打包,得到[8,0]和[9,1],并将[8,0]和[9,1]输入第一计算模块,控制模块控制第一计算窗口的pub_kh0_en=1,将第一填充数据ph=p=1输入第一计算模块,此时第一计算模块得到[8,0,1]和[9,1,1],当池化算法为max pool(计算窗口的最大值)时,第一计算模块将[8,0,1]和[9,1,1]输入比较器,比较器分别统计[8,0,1]和[9,1,1]中的最大值,得到第一计算结果为[8,9],当池化算法为average pool(计算窗口的平均值)时,第一计算模块将[8,0,1]和[9,1,1]输入加法器,加法器分别将[8,0,1]和[9,1,1]中的数值相加,得到计算结果为[9,11]。需要说明的是,第一填充数据为即目标图片上方和下方的填充数据,即目标图片上方和下方用“p”表示的数据,在第一计算模块的第一填充数据ph=p。
[0092]
步骤s30,通过所述第一计算模块将所述第一计算结果输入第二计算模块,并通过所述控制模块向所述第二计算模块输入第二填充数据;
[0093]
在该步骤中,硬件加速器通过第一计算模块将第一计算结果输入第二计算模块,硬件加速器通过判断计算窗口是否包含目标图片左边或右边的填充数据,若计算窗口包含目标图片左边或右边的填充数据,则通过控制模块向第二计算模块输入第二填充数据;如:参考图6,图6为第二计算模块与控制模块的连接示意图,其中pw代表第二填充数据,pub_kw0_en、pub_kw1_en和pub_kw2_en代表第二计算模块中的三个待使能串口,三个待使能串口与控制模块相连,“reg”代表寄存器,“ /m”代表加法器或者比较器,“div”代表除法器,在初始阶段pub_kw0_en=pub_kw1_en=pub_kw2_en=0,即三个待使能串口都位于低电平,当硬件加速器识别到第二计算模块需要利用第二填充数据进行计算时,硬件加速器通过控制模块控制对应的待使能串口进行使能,使得pub_kw0_en、pub_kw1_en或pub_kw2_en中的一个或多个等于1,即位于高电平,向第二计算模块输入“pw”即第二填充数据;需要说明的是,如图3所示的第一列和最后一列的“p”值,分别对应的是位于目标图片左边和右边的填充数
据,在池化算法为max pool时,第二填充数据pw=p,在池化算法为average pool时,第二填充数据pw=3*p;第二计算模块中的待使能串口的数量可根据计算窗口的宽度进行对应的修改,例如当计算窗口的大小为5行5列,则第二计算模块中的待使能串口的数量应为5个。需要说明的是,第二计算模块中的pub_kw0_en、pub_kw1_en和pub_kw2_en分别代表计算窗口中的第一列、第二列和第三列,当哪个串口被使能,就向对应的行输入第二填充数据。
[0094]
具体地,通过所述控制模块向所述第二计算模块输入第二填充数据的步骤包括:
[0095]
步骤f,根据所述目标图片左边或右边的填充数据列数、所述目标图片的宽度、所述计算窗口对应的行步长累加值以及所述计算窗口对应的窗口宽度,确定所述第二计算模块对应的第二待使能串口;
[0096]
在该步骤中,硬件加速器根据目标图片左边的填充数据列数、目标图片的宽度、计算窗口对应的行步长累加值以及计算窗口对应的窗口宽度,确定第二计算模块对应的第二待使能串口;其中第二待使能串口可能包括第二计算模块中的待使能串口中的一个或多个。
[0097]
在判断计算窗口中是否包含目标图片左边的填充数据时,假设以pl代表目标图片左边的填充数据行数,以w代表目标图片的宽度,以w_cnt代表计算窗口对应的行步长累加值,以kw代表计算窗口对应的窗口宽度,例如计算窗口位于图3中黑色框向目标图片的宽度方向移动一个列步长1的位置时,计算窗口中的数值分别为第一行“p、p、p”,第二行“0、1、2”和第三列“8、9、10”,此时确定pl》w_cnt不成立,则可确定计算窗口中不包含目标图片左边的填充数据,则不需要确定第一待使能串口;例如计算窗口位于图3中黑色框向目标图片的高度方向移动一个行步长1的位置时,计算窗口中的数值分别为第一行“p、0、1”,第二行“p、8、9”和第三列“p、16、17”,此时确定pu》h_cnt成立,则确定计算窗口包含目标图片左边的填充数据,进一步计算pl和w_cnt的差值,这个差值就是计算窗口左边的填充数据的列数,此时计算窗口中包含目标图片左边的填充数据的列数为1,pl和w_cnt的差值则为1,对应的1大于0,因此以pub_kw0_en作为第一待使能串口,假设计算窗口的第一列和第二列全为填充数据,此时pl和w_cnt的差值则为2,对应的2大于0和1,因此以pub_kh0_en和pub_kh1_en作为第二待使能串口。需要说明的是,上述确定第二待使能串口的方式仅限于计算窗口在目标图片的行方向即目标图片的宽度方向上移动时使用。
[0098]
在判断计算窗口中是否包含目标图片右边的填充数据时;当计算窗口框选了如图3所示的目标图片的右上角区域时,此时计算窗口的第一行为“p、p、p”,第二行为“6、7、p”,第三行为“14、15、p”,此时w_cnt kw》pl w成立,确定计算窗口中包含目标图片右边的填充数据的列数为1,则计算w_cnt kw和pl w的差值,这个差值就是计算窗口右边的填充数据的行数,此时这个差值为1,窗口宽度kw为3,对应地根据差值 x》=kw,得到x=2,则确定,以pub_kh2_en作为第一待使能串口;当例如计算窗口框选的数据为第一行为“p、p、p”,第二行为“5、6、7”,第三行为“13、14、15”,此时计算窗口中不包含目标图片右边的填充数据,则w_cnt kw》pl w不成立,则不需要确定第一待使能串口,需要说明的是,上述确定第一待使能串口的方式仅限于计算窗口在目标图片的行方向即宽度方向上移动时使用。
[0099]
步骤g,根据第一预设时钟周期,通过所述控制模块对所述第二待使能串口进行使能操作,以向所述第二计算模块输入第二填充数据。
[0100]
在该步骤中,硬件加速器根据第一预设时钟周期,通过控制模块对第二待使能串
口进行使能操作,以向第二计算模块输入第二填充数据,如:如图3所示的目标图片,当计算窗口中包含目标图片左边的填充数据时,硬件加速器确定pub_kw0_en为第二待使能串口,硬件加速器根据第一预设时钟周期通过控制模块对pub_kw0_en进行使能,使得pub_kw0_en=1,即位于高电平,向第二计算模块输入第二填充数据;当计算窗口中包含目标图片右边的填充数据时,硬件加速器确定pub_kw2_en为第二待使能串口,硬件加速器通过控制模块对pub_kw2_en进行使能,使得pub_kw2_en=1,即位于高电平,向第二计算模块输入第二填充数据。需要说明的是,计算窗口不能同时包括目标图片左边的填充数据和右边的填充数据;一般来说,目标图片左边的填充数据和右边的填充数据对应的值是相同的,因此第二填充数据是在硬件加速器获取到目标图片时,便记录在硬件加速器中的,在对应的串口使能时,便将第二填充数据输入第二计算模块,不需要另外通过储存器对第二填充数据进行储存,节约了从储存器中读取第二填充数据的时间,提高了硬件加速器的性能。
[0101]
步骤s40,通过所述第二计算模块根据所述第一计算结果和所述第二填充数据得到第二计算结果。
[0102]
在本实施例中,硬件加速器通过控制模块控制第二计算模块根据第一计算结果和第二填充数据得到第二计算结果。如:参考图6,图6为第二计算模块与控制模块的连接示意图,其中pw代表第二填充数据,pub_kw0_en、pub_kw1_en和pub_kw2_en代表第二计算模块中的三个待使能串口,三个待使能串口与控制模块相连,“reg”代表寄存器,“ /m”代表加法器或者比较器,“div”代表除法器,在初始阶段pub_kw0_en=pub_kw1_en=pub_kw2_en=0,即三个待使能串口都位于低电平,当硬件加速器识别到第二计算模块需要利用第二填充数据进行计算时,硬件加速器通过控制模块控制对应的待使能串口进行使能,使得pub_kw0_en、pub_kw1_en或pub_kw2_en中的一个或多个等于1,即位于高电平,向第二计算模块输入“pw”即第二填充数据,第二计算模块根据具体的池化算法,将存储在寄存器中的第一计算结果和控制模块输入的第二填充数据输入加法器和除法器,或将第一计算结果和第二填充数据输入比较器,以得到第二计算结果。
[0103]
具体地,步骤s40包括:
[0104]
通过所述第二计算模块将所述第一计算结果和所述第二填充数据存储在寄存器中,并根据第二预设时钟周期将所述第一计算结果和所述第二填充数据输入加法器和除法器,或将所述第一计算结果和所述第二填充数据输入比较器,以得到第二计算结果。
[0105]
在该步骤中,硬件加速器通过控制模块控制第二计算模块将第一计算结果和第二填充数据存储在寄存器中,并根据第二预设时钟周期将第一计算结果和第二填充数据输入加法器和除法器,或将第一计算结果和第二填充数据输入比较器,以得到第二计算结果;如:参考图3的目标图片,假设图3中的p=1,当计算窗口位于黑色框的位置时,确定计算窗口包含目标图片左边的填充数据,因此需要对pub_kw0_en进行使能,当池化算法为max pool(计算窗口的最大值)时,得到第一计算结果为[8,9],第一计算模块将第一计算结果[8,9]输入第二计算模块,第二计算模块将第一计算结果中的“8”储存在寄存器reg1,将第一计算结果中的“9”储存在寄存器reg2,将控制模块对pub_kw0_en进行使能输入的第二填充数据pw=p=1储存在寄存器reg0,再根据第二预设时钟周期将第一计算结果和第二填充数据输入比较器,即将[1,8,9]给到比较器得到第二计算结果9;当池化算法为average pool(计算窗口的平均值)时,第一计算模块得到计算结果为[9,11],第一计算模块将第一
计算结果[9,11]输入第二计算模块,第二计算模块将第一计算结果中的“9”储存在寄存器reg1,将第一计算结果中的“11”储存在寄存器reg2,将控制模块对pub_kw0_en进行使能输入的第二填充数据pw=3*p=3储存在寄存器reg0,再根据第二预设时钟周期将第一计算结果和第二填充数据输入加法器和除法器,即将[3,9,11]输入加法器和除法器,得到第二计算结果:(11 9 3)/3=7.66。需要说明的是,第二填充数据为即目标图片左边和右边的填充数据,即目标图片左边和右边用“p”表示的数据,在第二计算模块中,以pw表示。
[0106]
本实施例的池化算法的硬件加速器在检测到计算指令时,获取计算指令中对应的目标图片,并根据预设规则通过计算窗口框选目标图片;通过数据整理模块识别并获取目标图片中被计算窗口框选部分的非填充数据,并将非填充数据发送到第一计算模块;硬件加速器通过控制模块向第一计算模块输入第一填充数据,并通过第一计算模块根据非填充数据和第一填充数据得到第一计算结果;硬件加速器通过第一计算模块将第一计算结果输入第二计算模块,并通过控制模块向第二计算模块输入第二填充数据;硬件加速器通过第二计算模块根据第一计算结果和第二填充数据得到第二计算结果,提高了硬件加速器的性能,进而提高了池化算法的计算速度。
[0107]
进一步地,基于本发明池化算法的硬件加速方法第一实施例,提出本发明池化算法的硬件加速方法第二实施例。
[0108]
池化算法的硬件加速方法的第二实施例与池化算法的硬件加速方法的第一实施例的区别在于,步骤s40之后还包括:
[0109]
步骤h,根据所述计算窗口对应的行步长或列步长,控制所述计算窗口按照预设移动规则进行移动,并执行步骤:通过数据整理模块获取计算窗口中的非填充数据,以得到目标特征图。
[0110]
在本实施例中,硬件加速器根据计算窗口对应的列步长,控制计算窗口从如图3所示的黑色框的位置开始,执行通过数据整理模块获取计算窗口中的非填充数据以及后续步骤,再控制计算窗口向目标图片的行方向即宽度方向进行移动,每移动一次执行一次通过数据整理模块获取计算窗口中的非填充数据以及后续步骤,当计算窗口移动到目标图片的最右边,即计算窗口中包含:第一行“p、p、p”,第二行“6、7、p”,第三行“14、15、p”,并执行通过数据整理模块获取计算窗口中的非填充数据以及后续步骤完成计算后,控制计算窗口返回如图3所示的黑色框的位置,并根据计算窗口对应的列步长,控制计算模块向下移动,使得计算窗口中包含:第一行“p、0、1”,第二行“p、8、9”,第三行“p、16、17”,以此类推,控制计算窗口进行移动,直到整个图片计算完成,得到目标图片对应的目标特征图。
[0111]
本实施例的池化算法的硬件加速器根据所述计算窗口对应的行步长或列步长,控制所述计算窗口按照预设移动规则进行移动,并执行步骤:通过数据整理模块获取计算窗口中的非填充数据,以得到目标特征图,有助于提高硬件加速器的性能,进而有助于提高池化算法的计算速度。
[0112]
本发明还提供一种池化算法的硬件加速装置。本发明池化算法的硬件加速装置包括:
[0113]
接收模块,用于在接收到ip文件集合时,根据所述ip文件集合,生成对应的配置文件集合;
[0114]
获取模块,用于在检测到计算指令时,通过数据整理模块获取计算窗口中的非填
充数据,并将所述非填充数据发送到第一计算模块;
[0115]
第一输入模块,用于通过控制模块向所述第一计算模块输入第一填充数据,并通过所述第一计算模块根据所述非填充数据和所述第一填充数据得到第一计算结果;
[0116]
第二输入模块,用于通过所述第一计算模块将所述第一计算结果输入第二计算模块,并通过所述控制模块向所述第二计算模块输入第二填充数据;
[0117]
计算模块,用于通过所述第二计算模块根据所述第一计算结果和所述第二填充数据得到第二计算结果。
[0118]
优选地,所述获取模块还用于:
[0119]
在检测到计算指令时,获取计算指令中对应的目标图片,并根据预设规则通过计算窗口框选所述目标图片;
[0120]
通过数据整理模块识别并获取所述目标图片中被所述计算窗口框选部分的非填充数据,并将在所述计算窗口中位于同一列的非填充数据分别发送到第一计算模块。
[0121]
优选地,所述第一输入模块还用于:
[0122]
根据所述目标图片上方或下方的填充数据行数、所述目标图片的高度、所述计算窗口对应的列步长累加值以及所述计算窗口对应的窗口高度,确定所述第一计算模块对应的第一待使能串口;
[0123]
通过所述控制模块对所述第一待使能串口进行使能操作,以向所述第一计算模块输入第一填充数据。
[0124]
优选地,所述第一输入模块还包括计算模块,所述计算模块用于:
[0125]
通过所述第一计算模块将位于所述计算窗口中每一列的所述非填充数据和所述第一填充数据输入加法器或比较器中,以得到第一计算结果。
[0126]
优选地,所述第二输入模块还用于:
[0127]
根据所述目标图片左边或右边的填充数据列数、所述目标图片的宽度、所述计算窗口对应的行步长累加值以及所述计算窗口对应的窗口宽度,确定所述第二计算模块对应的第二待使能串口;
[0128]
根据第一预设时钟周期,通过所述控制模块对所述第二待使能串口进行使能操作,以向所述第二计算模块输入第二填充数据。
[0129]
优选地,所述计算模块还用于:
[0130]
通过所述第二计算模块将所述第一计算结果和所述第二填充数据存储在寄存器中,并根据第二预设时钟周期将所述第一计算结果和所述第二填充数据输入加法器和除法器,或将所述第一计算结果和所述第二填充数据输入比较器,以得到第二计算结果。
[0131]
优选地,所述计算模块还用于:
[0132]
根据所述计算窗口对应的行步长或列步长,控制所述计算窗口按照预设移动规则进行移动,并执行步骤:通过数据整理模块获取计算窗口中的非填充数据,以得到目标特征图。
[0133]
本发明还提供一种池化算法的硬件加速系统。
[0134]
本发明池化算法的硬件加速系统包括:硬件加速器、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的池化算法的硬件加速程序,所述池化算法的硬件加速程序被所述处理器执行时实现如上所述的池化算法的硬件加速方法的步骤。
[0135]
其中,在所述处理器上运行的池化算法的硬件加速程序被执行时所实现的方法可参照本发明池化算法的硬件加速方法各个实施例,此处不再赘述。
[0136]
本发明还提供一种可读存储介质。
[0137]
所述可读存储介质为计算机可读存储介质,本发明计算机可读存储介质上存储有池化算法的硬件加速程序,所述池化算法的硬件加速程序被处理器执行时实现如上所述的池化算法的硬件加速方法的步骤。
[0138]
其中,在所述处理器上运行的池化算法的硬件加速程序被执行时所实现的方法可参照本发明池化算法的硬件加速方法各个实施例,此处不再赘述。
[0139]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0140]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0141]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端系统(可以是手机,计算机,服务器,或者网络系统等)执行本发明各个实施例所述的方法。
[0142]
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书与附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

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

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

相关文献