特征图处理方法、装置及计算机设备与流程

文档序号:27099568发布日期:2021-10-27 17:30阅读:98来源:国知局
特征图处理方法、装置及计算机设备与流程

1.本发明涉及数据处理领域,尤其涉及一种特征图处理方法、装置及计算机设备。


背景技术:

2.随着人工智能技术的发展,新的网络结构对于带宽及缓存的要求越来越高。在一个网络中,几十上百甚至上千个卷积核同时计算的情况越来越常见。并行计算可大大提高网络的计算速度,却大幅增加了数据的带宽及对缓存的占用。而在网络结构中,不同大小的特征图分布对于网络性能的提升非常重要。
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.根据本公开的一种具体实施方式,每个所述待处理的特征图的大小均小于等于256个像素;
30.所述特征图块中像素的宽度和高度均小于等于8。
31.第二方面,本公开实施例还提供了一种特征图处理装置,所述装置包括:
32.输入模块,用于输入待处理的特征图的配置参数,其中,所述配置参数包括特征图的像素宽度和像素高度及通道数中的一种或多种;
33.接收模块,用于接收所述特征图拆分得到的预设宽度和预设高度的特征图块;
34.确定模块,用于根据所述配置参数确定各特征图块在所述特征图中的排布位置;
35.拼接模块,用于按照各特征图块在所述特征图中的排布位置,通过水平扫描方式将全部特征图块拼接成预设宽度的合并图块后,写入内部缓存区。
36.根据本公开的一种具体实施方式,所述装置还包括:
37.读取模块,用于根据所述配置参数,从所述内部缓存区读取所述合并图块;
38.生成模块,用于按照各特征图块在所述特征图中的排布位置,根据所述特征图的像素宽度生成读出特征图。
39.第三方面,本公开实施例还提供了一种计算机设备,包括存储器以及处理器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行第一方面所述的特征图处理方法。
40.第四方面,本公开实施例还提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行第一方面所述的特征图处理方法。
41.本公开实施例提供的特征图处理方法、装置及计算机设备,通过将不同大小的特征图按照预设宽度和预设高度利用水平扫描方式输入,采用高效的数据拆分重拼接方式,使输入的特征图按有效像素重新排列。通过去除中间的无用数据,减小内部缓存的占用,同时也达到了减小数据传输带宽的目的,可扩展性好,可通过简单修改满足不同的带宽定制需求。
附图说明
42.为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
43.图1示出了本公开实施例提供的一种特征图处理方法的流程示意图;
44.图2示出了本公开实施例提供的一种特征图处理方法的特征图拆分格式示意图;
45.图3示出了本公开实施例提供的又一种特征图处理方法的特征图拆分格式示意图;
46.图4示出了本公开实施例提供的一种特征图处理方法的特征图拼接格式示意图;
47.图5示出了本公开实施例提供的一种特征图处理方法的部分流程示意图;
48.图6示出了本公开实施例提供的一种特征图处理方法的整体框架图;
49.图7示出了本公开实施例提供的一种特征图处理方法的特征图拆分流程示意图;
50.图8示出了本公开实施例提供的一种特征图处理方法的算法流程图;
51.图9示出了本公开实施例提供的一种特征图处理方法的数据拼接示意图;
52.图10示出了本公开实施例提供的一种特征图处理装置的模块框图;
53.图11示出了本公开实施例提供的一种特征图处理装置的部分模块框图。
具体实施方式
54.下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
55.通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
56.在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
57.此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
58.除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在
一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
59.实施例1
60.参见图1,图1为本公开实施例提供的一种特征图处理方法的流程示意图。如图1所示,所述方法包括:
61.s101,输入待处理的特征图的配置参数,其中,所述配置参数包括特征图的像素宽度和像素高度及通道数中的一种或多种;
62.具体地,输入特征图的配置参数,包括特征图中像素的宽高、通道数、卷积类型、数据模式以及初始地址等。其中,特征图中像素的宽高用于确定特征图的拆分方式以及读出特征图的格式,通道数、卷积类型、数据模式及初始地址等用于区分不同的特征图。
63.s102,接收所述特征图拆分得到的预设宽度和预设高度的特征图块;
64.具体实施时,首先接收卷积计算相关模块计算完成的多通道特征图,处于内部缓存大小的考虑,该模式单个特征图最大限制为256个像素。考虑到内部缓存区的内存大小,需要将特征图拆分为特定规格的特征图块之后,再存入内部缓存区。如图2所示,图2中是按照特征图块的宽度高度均为8进行拆分。可根据实际情况对待处理特征图的宽度进行灵活配置并填充,以适应不同的计算场景,主要对特征图的水平方向进行填充,如图3所示,wptch是根据场景需要配置的特征图的填充宽度,图3中设置的wptch的值为14。
65.s103,根据所述配置参数确定各特征图块在所述特征图中的排布位置;
66.具体地,根据配置信息确定当前输入特征图块在特征图中的位置及对应通道,后续进行特征图块拼接以及读出特征图块的步骤,需要按照特征图块的排布位置,即特征图中像素的排列顺序进行操作。
67.s104,按照各特征图块在所述特征图中的排布位置,通过水平扫描方式将全部特征图块拼接成预设宽度的合并图块后,写入内部缓存区。
68.具体实施时,根据每个特征图块在特征图中的排布位置,通过水平扫描方式将特征图中的像素按照从左至右、从上至下的顺序进行拼接,拼接之后的合并图块的宽度与预设宽度相同。将拼接后的合并图块存入内部缓存区。如图4所示,图4中是按照预设高度为8对特征图块进行拼接。
69.本公开实施例提供的特征图处理方法,通过将不同大小的特征图按照预设宽度和预设高度利用水平扫描方式输入,采用高效的数据拆分重拼接方式,使输入的特征图按有效像素重新排列。通过去除中间的无用数据,减小内部缓存的占用,同时也达到了减小数据传输带宽的目的,可扩展性好,可通过简单修改满足不同的带宽定制需求。
70.如图5所示,根据本公开的一种具体实施方式,在所述特征图中的全部特征图块均存入内部缓存区后,所述方法还包括:
71.s501,根据所述配置参数,从所述内部缓存区读取所述合并图块;
72.具体地,在所有的特征图块拼接为合并图块存入内部缓存区后,会产生一个信号发送至内部控制模块,开始进行合并图块的读取。在读取合并图块时,也是按照特征图块进行读取,读取的过程中会对特征图块进行重新拼接。
73.s502,按照各特征图块在所述特征图中的排布位置,根据所述特征图的像素宽度
生成读出特征图。
74.具体实施时,按照各特征图块在原特征图中的排布位置,将合并图块按照原特征图的像素宽度按行依次拼接,生成读出特征图。读出特征图的宽度和高度与原特征图的宽度和高度一致。
75.根据本公开的一种具体实施方式,所述特征图拆分得到预设宽度和预设高度的特征图块的步骤,包括:
76.接收待处理的特征图;
77.若所述特征图中像素的宽度和高度分别为预设宽度和预设高度的整数倍,则将所述待处理的特征图直接按照预设宽度和预设高度拆分多个特征图块;
78.具体实施时,由于内部缓存区能够存储的数据是有固定格式和大小的,因此需要对待存入的特征图进行拆分,以适应内部缓存区的格式。当特征图中的像素高度和像素宽度是预设高度及预设宽度的整数倍时,特征图可以直接被拆分为多个宽度高度均为预设的特征图块。
79.若待处理的特征图中像素的宽度/高度不是预设宽度/预设高度的整数倍,则将所述特征图的像素宽度/像素高度延伸至所述预设宽度/预设高度的整数倍后再拆分为多个特征图块。
80.具体地,当待处理的特征图的宽度或高度中有一个不是预设宽度或预设高度的整数倍时,按照预设高度和预设宽度的规格进行特征图的拆分时,会出现多余的像素。因此,需要对特征图的宽度或高度进行填充,填充入特征图中的像素均为无效像素,不会被存储到内部缓存区。
81.根据本公开的一种具体实施方式,将所述特征图的像素宽度/像素高度延伸至所述预设宽度/预设高度的整数倍的步骤,包括:
82.获取所述特征图中的未成块区域的宽度/高度;
83.具体实施时,未成块区域是指在按照固定规格对特征图进行拆分后,剩余的无法组成固定格式像素块的像素区域。获取未成块区域的像素的宽度或高度,对其进行无效像素填充,从而使其形成特征图块。
84.沿特征图的像素宽度/像素高度方向,在所述未成块区域的邻接区域填充无效像素,以使未成块区域的宽度/高度与填充的宽度/高度之和为所述预设宽度/预设高度。
85.具体地,若未成块区域的宽度未达到预设宽度,则沿特征图的像素宽度方向,在其邻接区域填充无效像素,使得未成块区域的宽度与填充像素的宽度之和等于预设宽度。若未成块区域的高度未达到预设高度,则沿特征图的像素高度方向,在其邻接区域填充无效像素,使得未成块区域的高度与填充像素的高度之和等于预设高度。
86.根据本公开的一种具体实施方式,所述待处理的特征图中原有的像素为有效像素;
87.所述按照各特征图块在所述特征图中的排布位置,通过水平扫描方式将全部特征图块拼接成预设宽度的合并图块后,写入内部缓存区的步骤,包括:
88.若已写入有效像素的高度小于预设高度或未写入所述特征图中最后一个有效像素,则通过水平扫描方式将有效像素按照预设宽度进行拼接,生成写入地址和有效像素信息;
89.具体地,先判断已写入内部缓存区的有效像素的高度是否达到预设高度,若达到预设高度,则当前特征图块处理完成,开始处理下一特征图块。若未达到,则通过水平扫描方式将有效像素进行拼接,拼接的合并图块的宽度等于预设宽度。
90.判断特征图中的最后一个有效像素是否写入内部缓存区,若已写入,则特征图处理完成,合并图块已按照规格存入内部缓存区。若未写入,则通过水平扫描方式将有效像素进行拼接,拼接的合并图块的宽度等于预设宽度,直至将所有有效像素存入内部缓存区。
91.在拼接过程中,为像素分配写入地址,同时生成各像素的像素信息。写入地址和像素信息用于确定像素的存储位置和判断像素是否为有效像素。
92.根据生成的写入地址和有效像素信息,将有效像素写入内部缓存区。
93.具体实施时,根据各像素的写入地址和像素信息,将有效像素写入内部缓存区对应的位置。
94.根据本公开的一种具体实施方式,所述按照各特征图块在所述特征图中的排布位置,根据所述特征图的像素宽度生成特征图的步骤,包括:
95.按照各特征图块在所述特征图中的排布位置,将所述合并图块中的像素利用水平扫描方式拼接为读出特征图;
96.具体地,根据特征图块中像素的排列序列,将合并图块中的像素按照从左至右、从上至下的方式读出,读出的特征图与原始特征图的像素宽度和高度一致。
97.根据所述读出特征图的像素宽度和像素高度,生成静态随机存取寄存器地址及有效像素的高度;
98.具体实施时,根据读出特征图的像素宽度和像素高度,为读出特征图分配一个静态随机存取寄存器地址,以确定读出特征图的存储位置;同时得到读出特征图中有效像素的高度。
99.将所述读出特征图、所述静态随机存取寄存器地址及所述有效像素的高度储存至静态随机存取寄存器。
100.具体地,将读出特征图、静态随机存取寄存器地址及有效像素的高度发送至内部控制模块,内部控制模块控制写入静态随机存取寄存器。
101.根据本公开的一种具体实施方式,每个所述待处理的特征图的大小均小于等于256个像素;
102.所述特征图块中像素的宽度和高度均小于等于8。
103.本公开实施例通过去除中间的无用数据,减小内部缓存的占用,同时也达到了减小数据传输带宽的目的,可扩展性好,可通过简单修改满足不同的带宽定制需求。在本公开的一个具体的实施方式中,以预设宽度预设高度均等于8为例。如图6所示,本实施方式的整体流程方法如下:
104.步骤1,输入配置参数,包括特征图宽高,通道数,卷积类型,数据模式,初始地址等。
105.步骤2,拉高rdy信号,准备接收卷积模块输入的数据。
106.步骤3.1,当收到卷积模块数据后,根据配置信息确定当前输入数据在特征图中的位置及对应通道,因特征图的宽高可能不是8的整数倍,需根据特征图宽高对输入的8x8块按8像素进行拼接。若当前行小于8或未到最后一行,计算当前行的part0_num数值,part1_
num数值,并统计已存入buffer的像素,跳到步骤3.2,否则跳到步骤3.4。
107.步骤3.2,根据步骤3.1已计算的part0_num数值,part1_num数值对数据进行拼接,生成相应buffer写地址、写入数据等信息。
108.步骤3.3,根据步骤3.2已生成的buffer写地址、数据信息将数据写入buffer,若part1_num数值为0,则行数加一,跳到步骤3.1,否则跳到步骤3.4。
109.步骤3.4,根据步骤3.2生成的part1_num数值拼接数据,并将剩余数据写入下一地址,行数加一,完成后跳到步骤3.1。
110.步骤3.4,当前8x8块处理完成,通道数加一,若当前块处于特征图中最后通道的最后一个8x8块,则产生wr_done信号并跳到步骤4.1,否则通道数加一,跳到步骤2。
111.步骤4.1,当读控制模块收到wr_done信号后,表明当前特征图已全部按特征格式存入buffer,准备配置参数开始从buffer中按照8x8块读出数据。
112.步骤4.2,依次从buffer中同时读出多个通道的8x8bit的行数据,若8x8数据块读出完成,则跳到步骤4.3,否则继续读出数据。
113.步骤4.3,按照有效数据的宽高,生成sram地址,有效行,有效通道数等信息,连同步骤4.2读出的数据发送至sram控制模块,并判断当前块是否为特征图的最后一个8x8块,若成立跳到步骤4.4。否则跳到步骤4.2开始读出下一个8x8块数据。
114.步骤4.4,特征图处理完成,发送done信号告知卷积模块已准备好处理下一个多通道特征图。
115.进一步地,以11x8单通道的特征图为例,如图7所示,特征图在上层卷积模块按几何划分为左右两个8x8块输入,在经过拼接去掉无效数据后存入右方ram。当输入特征图的wptch或行数值不是8的整数倍时,其无效位置的值为0。如图7左图所示,第二个8x8块只有三列像素有效。在拼接模块中,对当前处理的8x8块数据的拼接均按行进行处理,并写入相应ram地址进行缓存。
116.如图8所示,pix_cnt为一个最大8字节的计数器,当满8时清0。当第一个8x8特征图到来时,此时有效行数和列数均为8,拼接模块根据wptch和当前已写入字节pix_cnt计算出当前行所需分解的part0_num数据和part1_num数据,并分别写入ram中相应地址及相应字节中。如图9所示,左方8x8块第一行pix_cnt为0,则part0_num=8,part1_num=0,依次类推,直到当前行大于8或最大有效行时,则当前8x8块处理完成,结束当前循环。
117.实施例2
118.参见图10,图10为本公开实施例提供的一种特征图处理装置的模块框图。如图10所示,所述特征图处理装置1000包括:
119.输入模块1001,用于输入待处理的特征图的配置参数,其中,所述配置参数包括特征图的像素宽度和像素高度及通道数中的一种或多种;
120.接收模块1002,用于接收所述特征图拆分得到的预设宽度和预设高度的特征图块;
121.确定模块1003,用于根据所述配置参数确定各特征图块在所述特征图中的排布位置;
122.拼接模块1004,用于按照各特征图块在所述特征图中的排布位置,通过水平扫描方式将全部特征图块拼接成预设宽度的合并图块后,写入内部缓存区。
123.如图11所示,根据本公开的一种具体实施方式,所述装置还包括:
124.读取模块1005,用于根据所述配置参数,从所述内部缓存区读取所述合并图块;
125.生成模块1006,用于按照各特征图块在所述特征图中的排布位置,根据所述特征图的像素宽度生成读出特征图。
126.综上所述,本公开实施例提供的特征图处理装置,通过将不同大小的特征图按照预设宽度和预设高度利用水平扫描方式输入,采用高效的数据拆分重拼接方式,使输入的特征图按有效像素重新排列。通过去除中间的无用数据,减小内部缓存的占用,同时也达到了减小数据传输带宽的目的,可扩展性好,可通过简单修改满足不同的带宽定制需求。所提供的特征图处理装置的具体实施过程可以参见上述图1至图9所示的实施例提供的数据写入方法及数据读出方法的具体实施过程,在此不再一一赘述。
127.此外,本公开实施例还提供了一种计算机设备,包括存储器以及处理器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行如图1至图9所示的特征图处理方法。
128.另外,本公开实施例还提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行如图1至图9所示的特征图处理方法。
129.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
130.另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
131.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
132.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1