CN112991144B - 针对神经网络的图像数据进行分块的方法和*** - Google Patents
针对神经网络的图像数据进行分块的方法和*** Download PDFInfo
- Publication number
- CN112991144B CN112991144B CN202110505152.7A CN202110505152A CN112991144B CN 112991144 B CN112991144 B CN 112991144B CN 202110505152 A CN202110505152 A CN 202110505152A CN 112991144 B CN112991144 B CN 112991144B
- Authority
- CN
- China
- Prior art keywords
- block
- image data
- neural network
- filling
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/0007—Image acquisition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Analysis (AREA)
Abstract
本公开提出一种针对神经网络的图像数据进行分块的方法和***,涉及计算机技术领域。在本公开中,对存储在外存单元的图像数据在存储顺序的最后一位的方向上进行分块,得到图像数据的多个第一分块,其中,存储顺序的最后一位是宽度W或高度H,使得对图像数据在宽度W或高度H方向上进行分块,针对输入神经网络的任一网络层的图像数据的每个分块进行计算的结果即为对应位置上最终的输出结果,不需要占用额外的缓存资源对每个分块的计算结果进行缓存,可以节约缓存资源,从而解决片上***具有较小缓存资源与图像数据的较大缓存需求之间存在的矛盾。另外,各个分块的计算结果不需要回传至CPU端重新进行整理,减少了数据传输带来的额外时间成本。
Description
技术领域
本公开涉及计算机技术领域,特别涉及一种针对神经网络的图像数据进行分块的方法和***。
背景技术
随着计算机技术的不断发展和快速更新,神经网络算法相较于传统的深度学***台是非常重要的。
现场可编程门阵列(Field Programmable Gate Array,FPGA)平台相较于中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)具有很高的能效比,同时FPGA灵活性比较高,相较于用于供专门应用的集成电路(ASIC,Application Specific Integrated Circuit)芯片技术的实现方式,FPGA的成本较低,因此基于FPGA的神经网络硬件加速器成为一个重要的研究方向。目前基于FPGA的神经网络硬件加速主要采用如下架构,包括片上***的外部存储单元(简称外存单元),片上***的缓存单元以及片上***的计算单元,外存单元通常较大,例如以吉字节(Gigabyte,GB)为单位,缓存单元通常较小,例如以兆字节(Megabytes,MB)为单位。缓存单元由于资源限制通常较小,而输入神经网络的图像数据往往非常大,因此不可能一次将所有数据均传输至片上***的缓存单元进行计算。
发明内容
据此,本公开提供一种针对神经网络的图像数据进行分块的方法。
在本公开的实施例中,图像数据的存储格式最后一位是宽度W或高度H,而不是通道C,使得对图像数据在宽度W或高度H方向上进行分块,针对输入神经网络的任一网络层的图像数据的每个分块进行计算的结果即为对应位置上最终的输出结果,不需要占用额外的缓存资源对每个分块的计算结果进行缓存,可以节约缓存资源,从而解决片上***具有的较小的缓存资源与图像数据的较大的缓存需求之间存在的矛盾。另外,相比在通道方向进行分块的处理方法需要将各个通道的计算结果回传至CPU进行排序整理等操作,各个分块的计算结果不需要回传至CPU端重新进行排序整理,减少了数据传输带来的额外时间成本。
根据本公开的一些实施例,提供一种针对神经网络的图像数据进行分块的方法,包括:
对存储在外存单元的图像数据在存储顺序的最后一位的方向上进行分块,得到所述图像数据的多个第一分块,其中,所述存储顺序的最后一位是宽度W或高度H,所述存储顺序的最后一位是宽度W的情况下,所述存储顺序的其他位包括通道C和高度H,所述存储顺序的最后一位是高度H的情况下,所述存储顺序的其他位包括通道C和宽度W;
针对输入神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果;
对所有第一分块的计算结果进行整合,将整合结果作为神经网络的所述任一网络层的输出结果,并保存到所述外存单元。
在一些实施例中,还包括:针对每个第一分块进行以下处理:
将每个第一分块依次传输到片上***的缓存单元;
在所述存储顺序的最后一位是宽度W的情况下,对存储在片上***的缓存单元的所述第一分块在高度H方向上进行分块,得到所述第一分块对应的多个第二分块;
其中,所述针对输入神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:
针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果;
对所述第一分块的所有第二分块的计算结果进行整合,得到所述第一分块的计算结果。
在一些实施例中,还包括:针对每个第一分块进行以下处理:
将每个第一分块依次传输到片上***的缓存单元;
在所述存储顺序的最后一位是高度H的情况下,对存储在片上***的缓存单元的所述第一分块在宽度W方向上进行分块,得到所述第一分块对应的多个第二分块;
其中,所述针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:
针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果;
对所述第一分块的所有第二分块的计算结果进行整合,得到所述第一分块的计算结果。
在一些实施例中,还包括:对存储在外存单元的权重数据在存储顺序的最后一位的方向上进行分块,得到所述权重数据的多个第三分块,其中,所述存储顺序的最后一位是个数N,所述存储顺序的其他位包括通道C、宽度W、高度H;
其中,所述针对输入神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:
针对输入神经网络的任一网络层的图像数据的所述第一分块与所述第三分块进行联合计算,确定所述第一分块的计算结果。
在一些实施例中,还包括:
对存储在外存单元的权重数据在存储顺序的最后一位的方向上进行分块,得到所述权重数据的多个第三分块,其中,所述存储顺序的最后一位是个数N,所述存储顺序的其他位包括通道C、宽度W、高度H;
其中,所述针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果包括:
针对输入神经网络的任一网络层的图像数据的所述第二分块与所述第三分块进行联合计算,确定所述第二分块的计算结果。
在一些实施例中,还包括:针对位于图像边缘的第一分块进行以下处理:
将所述第一分块传输到片上***的缓存单元;
根据所述第一分块的尺寸及所述第一分块在所述缓存单元的缓存地址以及预设填充参数,确定第一分块的填充数据的缓存地址;
设置所述第一分块的填充数据的缓存地址对应的数据为预设值,得到所述第一分块对应的填充数据;
根据所述第一分块对应的填充数据以及从所述缓存单元获取的所述第一分块确定所述第一分块对应的第一填充分块;
其中,所述针对输入神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:
针对输入神经网络的任一网络层的图像数据的每个第一填充分块进行计算,得到每个第一分块的计算结果。
在一些实施例中,还包括:针对位于图像边缘的第二分块进行以下处理:
根据所述第二分块的尺寸及所述第二分块在所述缓存单元的缓存地址以及预设填充参数,确定第二分块的填充数据的缓存地址;
设置所述第二分块的填充数据的缓存地址对应的数据为预设值,得到所述第二分块对应的填充数据;
根据所述第二分块对应的填充数据以及从所述缓存单元获取的所述第二分块确定所述第二分块对应的第二填充分块;
其中,所述针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果包括:
针对输入神经网络的任一网络层的图像数据的每个第二填充分块进行计算,得到每个第二分块的计算结果。
在一些实施例中,所述预设填充参数包括预设填充类型和预设填充个数。
在一些实施例中,所述网络层包括卷积层或全连接层中的至少一层。
根据本公开的另一些实施例,提供一种针对神经网络的图像数据进行分块的***,包括:外存单元,中央处理器CPU,以及片上***,其中,所述片上***包括:缓存单元,计算单元,控制单元;所述外存单元,被配置为存储图像数据和图像数据的第一分块;所述CPU,被配置为对存储在外存单元的图像数据在存储顺序的最后一位的方向上进行分块,得到所述图像数据的多个第一分块,其中,所述存储顺序的最后一位是宽度W或高度H,所述存储顺序的最后一位是宽度W的情况下,所述存储顺序的其他位包括通道C和高度H,所述存储顺序的最后一位是高度H的情况下,所述存储顺序的其他位包括通道C和宽度W,以及将所述第一分块传输到片上***的缓存单元;所述缓存单元,被配置为接收外存单元传输的图像数据的第一分块并存储;所述计算单元,被配置为针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果,其中,所述网络层包括卷积层或全连接层中的至少一层;所述控制单元,被配置为对所有第一分块的计算结果进行整合,将整合结果作为神经网络的所述任一网络层的输出结果。
在一些实施例中,所述缓存单元,还被配置为存储图像数据的第二分块;所述控制单元,还被配置为在所述存储顺序的最后一位是宽度W的情况下,对存储在所述缓存单元的所述第一分块在高度H方向上进行分块,得到所述第一分块对应的多个第二分块,以及,对所述第一分块的所有第二分块的计算结果进行整合,得到所述第一分块的计算结果;所述计算单元,还被配置为针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果。
在一些实施例中,所述缓存单元,还被配置为存储图像数据的第二分块;所述控制单元,还被配置为在所述存储顺序的最后一位是高度H的情况下,对存储在所述缓存单元的所述第一分块在宽度W方向上进行分块,得到所述第一分块对应的多个第二分块,以及,对所述第一分块的所有第二分块的计算结果进行整合,得到所述第一分块的计算结果;所述计算单元,还被配置为针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果。
在一些实施例中,所述外存单元,还被配置为存储权重数据和权重数据的第三分块;所述CPU,还被配置为对存储在外存单元的权重数据在存储顺序的最后一位的方向上进行分块,得到所述权重数据的多个第三分块,其中,所述存储顺序的最后一位是个数N,所述存储顺序的其他位包括通道C、宽度W、高度H;所述计算单元,还被配置为针对输入神经网络的任一网络层的图像数据的所述第一分块与所述第三分块进行联合计算,确定所述第一分块的计算结果。
在一些实施例中,所述外存单元,还被配置为存储权重数据和权重数据的第三分块;所述CPU,还被配置为对存储在外存单元的权重数据在存储顺序的最后一位的方向上进行分块,得到所述权重数据的多个第三分块,其中,所述存储顺序的最后一位是个数N,所述存储顺序的其他位包括通道C、宽度W、高度H;所述计算单元,还被配置为针对输入神经网络的任一网络层的图像数据的所述第二分块与所述第三分块进行联合计算,确定所述第二分块的计算结果。
在一些实施例中,还包括:所述控制单元,还被配置为根据所述第一分块的尺寸及所述第一分块在所述缓存单元的缓存地址以及预设填充参数,确定第一分块的填充数据的缓存地址;设置所述第一分块的填充数据的缓存地址对应的数据为预设值,得到所述第一分块对应的填充数据;根据所述第一分块对应的填充数据以及从所述缓存单元获取的所述第一分块确定所述第一分块对应的第一填充分块,其中,所述预设填充参数包括预设填充类型和预设填充个数;所述计算单元,还被配置为针对输入神经网络的任一网络层的图像数据的每个第一填充分块进行计算,得到每个第一分块的计算结果。
在一些实施例中,所述控制单元,还被配置为根据所述第二分块的尺寸及所述第二分块在所述缓存单元的缓存地址以及预设填充参数,确定第二分块的填充数据的缓存地址;设置所述第二分块的填充数据的缓存地址对应的数据为预设值,得到所述第二分块对应的填充数据;根据所述第二分块对应的填充数据以及从所述缓存单元获取的所述第二分块确定所述第二分块对应的第二填充分块;所述计算单元,还被配置为针对输入神经网络的任一网络层的图像数据的每个第二填充分块进行计算,得到每个第二分块的计算结果。
根据本公开的又一些实施例,提供一种针对神经网络的图像数据进行分块的***,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行任一实施例所述的针对神经网络的图像数据进行分块的方法。
根据本公开的再一些实施例,提供一种非瞬时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的针对神经网络的图像数据进行分块的方法。
附图说明
下面将对实施例或相关技术描述中所需要使用的附图作简单的介绍。根据下面参照附图的详细描述,可以更加清楚地理解本公开。
显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出根据本公开的一些实施例的针对神经网络的图像数据进行分块的方法的流程示意图。
图2示出根据本公开的一些实施例的针对位于图像边缘的第一分块进行填充处理的流程示意图。
图3a示出根据本公开的一些实施例的填充类型的示意图。
图3b示出根据本公开的另一些实施例的填充类型的示意图。
图4示出根据本公开的一些实施例的对第一分块进行再次分块处理,得到第二分块的流程示意图。
图5示出根据本公开的另一些实施例的对第一分块进行再次分块处理,得到第二分块的示意图。
图6示出根据本公开的一些实施例的对第一分块进行再次分块处理,得到第二分块的示意图。
图7示出根据本公开的一些实施例的针对神经网络的图像数据进行分块的示意图。
图8示出根据本公开的一些实施例的针对神经网络的图像数据进行分块的***的示意图。
图9示出根据本公开的另一些实施例的针对神经网络的图像数据进行分块的***的示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。
本公开的“第一”、“第二”、“第三”等描述,如果没有特别指出,是用来表示不同的对象,并不用来表示大小或时序等含义。
图1示出根据本公开的一些实施例的针对神经网络的图像数据进行分块的方法的流程示意图。该方法例如可以由针对神经网络的图像数据进行分块的***执行。
如图1所示,该实施例的方法包括步骤110、160和170。在一些实施例中,还可以包括步骤120-150中的任一项或多项。
在步骤110,对存储在外存单元的图像数据在存储顺序的最后一位的方向上进行分块,得到图像数据的多个第一分块。
其中,存储顺序的最后一位是宽度W或高度H,存储顺序的最后一位是宽度W的情况下,存储顺序的其他位包括通道C和高度H,例如图像数据的存储顺序为通道C、高度H、宽度W,则对图像数据在宽度W方向上进行分块,得到图像数据的多个第一分块。存储顺序的最后一位是高度H的情况下,存储顺序的其他位包括通道C和宽度W,例如图像数据的存储顺序为通道C、宽度W、高度H,则对图像数据在高度H方向上进行分块,得到图像数据的多个第一分块。
例如,针对某一图像数据,存储顺序为通道C、宽度W、高度H,首先按顺序存储图像数据的左上角第一个像素点的所有通道的数据,紧接着存储宽度方向上第二个像素点的所有通道的数据,宽度方向上第一行的像素点的所有通道数据存储完后,开始存储第二行第一个像素点的所有通道的数据,直至图像数据的所有像素点均存储完毕。
上述实施例中,图像数据的存储格式最后一位是宽度W或高度H,可以使得对图像数据在宽度W或高度H方向上进行分块,从而使得缓存单元依次处理单个分块的数据,减少缓存单元的压力。
在一些实施例中,还包括步骤120。该步骤可以选择性执行。
在步骤120,针对位于图像边缘的第一分块进行填充处理。
图2示出根据本公开的一些实施例的针对位于图像边缘的第一分块进行填充处理的流程示意图。如图2所示,步骤120例如可以包括步骤121-步骤124。
在步骤121,将第一分块传输到片上***的缓存单元。
将存储在外存单元的每个第一分块依次传输到片上***的缓存单元。
在步骤122,根据第一分块的尺寸及第一分块在缓存单元的缓存地址以及预设填充参数,确定第一分块的填充数据的缓存地址。
其中,预设填充参数包括预设填充类型和预设填充个数。预设填充个数指的是在第一分块的周围填充预设值的层数(例如行数或列数)。
图3a示出根据本公开的一些实施例的填充类型的示意图。
如图3a所示,将图像数据在高度H方向上进行分块,得到3个第一分块,表示为A、B和C。
图3b示出根据本公开的另一些实施例的填充类型的示意图。
如图3b所示,图像数据较小,不进行分块,表示为D。
预设填充类型例如可以分为四个类型,分别说明如下:
A)针对图像数据的第一分块A,第一分块的左方、上方及右方均需填充预设值;B)针对图像数据的第一分块B,第一分块的左方、右方需填充预设值;C) 针对图像数据的第一分块C,第一分块的左方、右方及下方需填充预设值;D) 针对图像数据D,片上***的缓存单元能全部存储,此时不进行分块,第一分块的左方、上方、右方及下方均需填充预设值。
例如,第一分块X的尺寸为3×3,第一分块在缓存单元的缓存地址为{22~24,32~34,42~44},预设填充类型为左方、上方需填充预设值,预设填充个数为1,则确定的第一分块X的填充数据的缓存地址为{11~14,21,31,41}。
在步骤123,设置第一分块的填充数据的缓存地址对应的数据为预设值,得到第一分块对应的填充数据。
其中,预设值例如为“0”。
在步骤124,根据第一分块对应的填充数据以及从缓存单元获取的第一分块确定第一分块对应的第一填充分块。
上述实施例中,对图像数据的第一分块不在实际的物理存储空间(例如外存单元)实际进行填充,而是通过预设填充参数和预设填充类型等信息将对应位置的数据设置为预设值,以等效完成填充的逻辑,能够有效地较少存储资源的浪费,减少外存单元与CPU之间的传输次数。对图像数据第一分块进行填充处理,可以保持图像数据的边缘信息不丢失,保证后续计算结果的准确性。
在一些实施例中,还包括步骤130。该步骤可以选择性执行。
在步骤130,对第一分块进行再次分块处理,得到第二分块。
图4示出根据本公开的一些实施例的对第一分块进行再次分块处理,得到第二分块的流程示意图。
如图4所示,步骤130包括步骤131-步骤133。
在步骤131,将每个第一分块依次传输到片上***的缓存单元。
将存储在外存单元的每个第一分块依次传输到片上***的缓存单元。
在步骤132,在存储顺序的最后一位是宽度W的情况下,对存储在片上***的缓存单元的第一分块在高度H方向上进行分块,得到第一分块对应的多个第二分块。
例如图像数据的存储顺序为通道C、高度H、宽度W,则对图像数据在宽度W方向上进行分块,得到图像数据的多个第一分块;对传输到片上***的缓存单元的第一分块在高度H方向上进行分块,得到每个第一分块对应的多个第二分块。可以动态决定图像数据的分块的大小,例如在H方向进行分块,动态决定分块的高度。第二次分块是片上控制模块控制完成,分块的大小可以根据部分和缓存区域的大小动态调整。
在步骤133,在存储顺序的最后一位是高度H的情况下,对存储在片上***的缓存单元的第一分块在宽度W方向上进行分块,得到第一分块对应的多个第二分块。
例如图像数据的存储顺序为通道C、宽度W、高度H,则对图像数据在高度H方向上进行分块,得到图像数据的多个第一分块;对传输到片上***的缓存单元的第一分块在宽度W方向上进行分块,得到每个第一分块对应的多个第二分块。
不同网络层输入数据的高度和宽度往往相差较大,使得计算过程中不同网络层对于各分块的计算结果的缓存需求也相差较大,从而导致计算尺寸较小的网络层时缓存资源浪费。上述实施例中,可以根据缓存单元中缓存资源的大小,动态决定第二次分块的大小,以满足不同网络层的输入数据能充分利用缓存单元上的存储资源。在缓存单元可以选择性地对图像数据进行第二次分块处理,可以进一步地节约缓存资源,减少缓存资源的浪费。
图5示出根据本公开的另一些实施例的对第一分块进行再次分块处理,得到第二分块的示意图。
如图5所示,针对某一图像数据,存储顺序例如为通道C、宽度W、高度H,首先在高度H方向上进行分块,得到图像数据的2个第一分块。然后,将2个第一分块依次传输到片上***的缓存单元,对传输到片上***的缓存单元的第1个第一分块在宽度W方向上进行分块,得到该第一分块对应的2个第二分块,将其中第1个第二分块传输到CPU用于计算。
在一些实施例中,还包括步骤140。该步骤可以选择性执行。
在步骤140,针对位于图像边缘的第二分块进行填充处理。
图6示出根据本公开的一些实施例的对第一分块进行再次分块处理,得到第二分块的示意图。
如图6所示,步骤140包括步骤141-步骤143。
在步骤141,根据第二分块的尺寸及第二分块在缓存单元的缓存地址以及预设填充参数,确定第二分块的填充数据的缓存地址。
该步骤可参考步骤122的描述,此处不再赘述。
在步骤142,设置第二分块的填充数据的缓存地址对应的数据为预设值,得到第二分块对应的填充数据。
该步骤可参考步骤123的描述,此处不再赘述。
在步骤143,根据第二分块对应的填充数据以及从缓存单元获取的第二分块确定第二分块对应的第二填充分块。
该步骤可参考步骤124的描述,此处不再赘述。
对图像数据的第二分块不在实际的物理存储空间(例如缓存单元)实际进行填充,而是通过预设填充参数和预设填充类型等信息将对应位置的数据设置为预设值,以等效完成填充的逻辑,能够有效地减少存储资源的浪费,减少缓存单元与CPU之间的传输次数。对图像数据的第二分块进行填充处理,可以保持图像数据的边缘信息不丢失,保证后续计算结果的准确性。
在一些实施例中,还包括步骤150。该步骤可以选择性执行。
在步骤150,对存储在外存单元的权重数据在存储顺序的最后一位的方向上进行分块,得到权重数据的多个第三分块。其中,存储顺序的最后一位是个数N,存储顺序的其他位包括通道C、宽度W、高度H。
例如,根据输入某一网络层的图像数据的通道数目,对权重数据在个数N方向上进行分块,得到权重数据的多个第三分块。假设图像数据的通道数目为m,对权重数据在个数N方向上进行分块,得到权重数据的第三分块的个数为m。每个第三分块的大小与网络层的设置有关,假设某一网络层有100个神经元,即该网络层对应需要100个权重数据,则该网络层对应的权重数据的单个第三分块包括100个权重参数。
对权重数据进行分块处理,可以进一步缓解片上的缓存资源不足的压力。
在步骤160,利用神经网络的任一网络层至少对每个第一分块或第二分块进行处理,还可以结合权重数据的第三分块对第一分块或第二分块进行处理。
在一些实施例中,神经网络的网络层例如可以包括卷积层或全连接层中的至少一层。
在包括步骤120对图像边缘的第一分块进行填充处理的情况下,针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的每个第一填充分块进行计算,得到每个第一分块的计算结果。
在包括步骤110和步骤130对图像数据进行两次分块处理得到第二分块的情况下,针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果;对第一分块的所有第二分块的计算结果进行整合,得到第一分块的计算结果。
在包括步骤140对图像边缘的第二分块进行填充处理的情况下,针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的每个第二填充分块进行计算,得到每个第二分块的计算结果。
在包括步骤150对权重数据进行分块处理,得到第三分块的情况下:
(1)在包括步骤110对图像数据进行分块处理,得到第一分块的情况下,针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的第一分块与第三分块进行联合计算,确定第一分块的计算结果。其中,对第一分块与第三分块进行联合计算例如包括将第一分块与第三分块中的每个元素进行相乘计算。
(2)在包括步骤110对图像数据进行第一分块以及步骤120对图像边缘的第一分块进行填充处理的情况下,针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的第一填充分块与第三分块进行联合计算,确定第一分块的计算结果。
(3)在包括步骤110和步骤130对图像数据进行两次分块处理,得到第二分块的情况下,针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的第二分块与第三分块进行联合计算,确定第二分块的计算结果;对第一分块的所有第二分块的计算结果进行整合,得到第一分块的计算结果。
(4)在包括步骤130对图像数据进行分块处理,得到第二分块以及步骤140对图像边缘的第二分块进行填充处理的情况下,针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的第填充二分块与第三分块进行联合计算,确定第二分块的计算结果;对第一分块的所有第二分块的计算结果进行整合,得到第一分块的计算结果。
在步骤170,对所有第一分块的计算结果进行整合,将整合结果作为神经网络的任一网络层的输出结果,并保存到外存单元。
例如,对某一图像数据X进行分块处理,得到3个第一分块,3个第一分块分别对应的计算结果的外存单元的地址为{0~2}、{6~8}、{3~5},将这三个分块对应的计算结果进行拼凑,得到该图像数据X的输出结果,该输出结果对应在外存单元的地址为{0~8}。
上述实施例中,对图像数据进行分块处理以及对权重数据进行分块处理,可以缓解片上***具有的较少的缓存资源与图像数据的较大的缓存需求之间存在的矛盾。此外,图像数据的存储格式最后一位是宽度W或高度H,而不是通道C,使得对图像数据在宽度W或高度H方向上进行分块,不同于对图像数据在通道C方向上进行分块的方法,单个通道上的某个分块的计算结果需要浪费额外的缓存资源进行存储,得到所有通道上的计算结果后进行整合(即求和)才可以获得该分块最终的计算结果。上述实施例中设置的图像数据的存储格式,针对输入神经网络的任一网络层的图像数据的每个分块进行计算的结果即为对应位置上最终的输出结果,不需要占用额外的缓存资源对每个分块的计算结果进行缓存,可以节约缓存资源,从而解决片上***具有的较小的缓存资源与图像数据的较大的缓存需求之间存在的矛盾。而且,相比在通道方向进行分块的处理方法需要将各个通道的计算结果回传至CPU进行排序整理等操作,上述实施例中各个分块的计算结果不需要回传至CPU端重新进行排序整理,减少了数据传输带来的额外时间成本。另外,对图像数据的第一分块或第二分块进行填充处理,可以保持图像数据的边缘信息不丢失,保证后续计算结果的准确性。
图7示出根据本公开的一些实施例的针对神经网络的图像数据进行分块的示意图。
如图7所示,图像数据的通道数为3(例如包括R通道、G通道、B通道),首先,在外存单元将图像数据以通道C、宽度W、高度H的存储格式进行存储,将图像数据在高度H方向上进行分块,得到第一分块,通过直接存储器访问 (Direct Memory Access,DMA)将该第一分块传输到缓存单元,片上***的控制单元在缓存单元上对第一分块在宽度W方向上进行分块,得到第二分块,对第二分块依次进行填充处理,并利用填充处理后得到的第二填充分块进行计算处理。
图8示出根据本公开的一些实施例的针对神经网络的图像数据进行分块的***的示意图。
如图8所示,该实施例的针对神经网络的图像数据进行分块的***800包括:中央处理器CPU 810,外存单元820,总线830以及片上***840。片上***840包括控制单元841,缓存单元842,和计算单元843。计算单元843例如可以是神经网络处理器(Neural NetworkProcessing Unit,NPU)。
其中,总线830,用于在片上***和CPU、外存单元之间传输数据。
在一些实施例中,外存单元820,被配置为存储图像数据和图像数据的第一分块;CPU 810,被配置为对存储在外存单元820的图像数据在存储顺序的最后一位的方向上进行分块,得到图像数据的多个第一分块,其中,存储顺序的最后一位是宽度W或高度H,存储顺序的最后一位是宽度W的情况下,存储顺序的其他位包括通道C和高度H,存储顺序的最后一位是高度H的情况下,存储顺序的其他位包括通道C和宽度W,以及将第一分块通过总线830获取外存单元上的第一分块,并将其通过总线830传输到片上***的缓存单元842,并将每个第一分块的计算结果通过总线830从缓存单元842传输到外存单元820; 缓存单元842,被配置为接收外存单元820传输的图像数据的第一分块并存储,以及缓存计算单元843传输的第一分块的计算结果;计算单元843,被配置为针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果,其中,网络层包括卷积层或全连接层中的至少一层;控制单元841,被配置为将图像数据的第一分块从片上***的缓存单元842传输到片上***的计算单元843;并对所有第一分块的计算结果进行整合,将整合结果作为神经网络的任一网络层的输出结果,并将每个第一分块的计算结果传输到片上***的缓存单元842。
在另一些实施例中,缓存单元842,还被配置为存储图像数据的第二分块;控制单元841,还被配置为在存储顺序的最后一位是宽度W的情况下,对存储在缓存单元842的第一分块在高度H方向上进行分块,得到第一分块对应的多个第二分块,以及,对第一分块的所有第二分块的计算结果进行整合,得到第一分块的计算结果;计算单元843,还被配置为针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果。
在再一些实施例中,缓存单元842,还被配置为存储图像数据的第二分块;控制单元841,还被配置为在存储顺序的最后一位是高度H的情况下,对存储在缓存单元842的第一分块在宽度W方向上进行分块,得到第一分块对应的多个第二分块,以及,对第一分块的所有第二分块的计算结果进行整合,得到第一分块的计算结果;计算单元843,还被配置为针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果。
在又一些实施例中,外存单元820,还被配置为存储权重数据和权重数据的第三分块;CPU 810,还被配置为对存储在外存单元820的权重数据在存储顺序的最后一位的方向上进行分块,得到权重数据的多个第三分块,其中,存储顺序的最后一位是个数N,存储顺序的其他位包括通道C、宽度W、高度H;计算单元843,还被配置为针对输入神经网络的任一网络层的图像数据的第一分块与第三分块进行联合计算,确定第一分块的计算结果。
在又再一些实施例中,外存单元820,还被配置为存储权重数据和权重数据的第三分块;CPU 810,还被配置为对存储在外存单元820的权重数据在存储顺序的最后一位的方向上进行分块,得到权重数据的多个第三分块,其中,存储顺序的最后一位是个数N,存储顺序的其他位包括通道C、宽度W、高度H;计算单元843,还被配置为针对输入神经网络的任一网络层的图像数据的第二分块与第三分块进行联合计算,确定第二分块的计算结果。
在又再一些实施例中,控制单元841,还被配置为根据第一分块的尺寸及第一分块在缓存单元842的缓存地址以及预设填充参数,确定第一分块的填充数据的缓存地址;设置第一分块的填充数据的缓存地址对应的数据为预设值,得到第一分块对应的填充数据;根据第一分块对应的填充数据以及从缓存单元842获取的第一分块确定第一分块对应的第一填充分块,其中,预设填充参数包括预设填充类型和预设填充个数;
计算单元843,还被配置为针对输入神经网络的任一网络层的图像数据的每个第一填充分块进行计算,得到每个第一分块的计算结果。
在又再一些实施例中,控制单元841,还被配置为根据第二分块的尺寸及第二分块在缓存单元842的缓存地址以及预设填充参数,确定第二分块的填充数据的缓存地址;设置第二分块的填充数据的缓存地址对应的数据为预设值,得到第二分块对应的填充数据;根据第二分块对应的填充数据以及从缓存单元842获取的第二分块确定第二分块对应的第二填充分块;计算单元843,还被配置为针对输入神经网络的任一网络层的图像数据的每个第二填充分块进行计算,得到每个第二分块的计算结果。
上述实施例中,针对神经网络的图像数据进行分块的***对图像数据进行分块处理,可以缓解片上***具有的较少的缓存资源与图像数据的较大的缓存需求之间存在的矛盾。此外,图像数据的存储格式最后一位是宽度W或高度H,而不是通道C,使得对图像数据在宽度W或高度H方向上进行分块,不同于对图像数据在通道C方向上进行分块的方法,针对输入神经网络的任一网络层的图像数据的每个分块进行计算的结果即为对应位置上最终的输出结果,不需要占用额外的缓存资源对每个分块的计算结果进行缓存,可以节约缓存资源,从而解决片上***具有的较小的缓存资源与图像数据的较大的缓存需求之间存在的矛盾。另外,对图像数据的第一分块或第二分块进行填充处理,可以保持图像数据的边缘信息不丢失,保证后续计算结果的准确性。
图9示出根据本公开的另一些实施例的针对神经网络的图像数据进行分块的***的示意图。
如图9所示,该实施例的针对神经网络的图像数据进行分块的***900包括:存储器910以及耦接至该存储器910的处理器920,处理器920被配置为基于存储在存储器910中的指令,执行本公开任意一些实施例中的针对神经网络的图像数据进行分块的方法。
例如,在一些实施例中,执行以下方法:对存储在外存单元的图像数据在存储顺序的最后一位的方向上进行分块,得到图像数据的多个第一分块,其中,存储顺序的最后一位是宽度W或高度H,存储顺序的最后一位是宽度W的情况下,存储顺序的其他位包括通道C和高度H,存储顺序的最后一位是高度H的情况下,存储顺序的其他位包括通道C和宽度W;针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果;对所有第一分块的计算结果进行整合,将整合结果作为神经网络的任一网络层的输出结果,并保存到外存单元。其中,网络层包括卷积层或全连接层中的至少一层。
在一些实施例中,还包括执行以下方法:针对每个第一分块进行以下处理:将每个第一分块依次传输到片上***的缓存单元;在存储顺序的最后一位是宽度W的情况下,对存储在片上***的缓存单元的第一分块在高度H方向上进行分块,得到第一分块对应的多个第二分块;其中,针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果;对第一分块的所有第二分块的计算结果进行整合,得到第一分块的计算结果。
在另一些实施例中,还包括执行以下方法:针对每个第一分块进行以下处理:将每个第一分块依次传输到片上***的缓存单元;在存储顺序的最后一位是高度H的情况下,对存储在片上***的缓存单元的第一分块在宽度W方向上进行分块,得到第一分块对应的多个第二分块;其中,针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果;对第一分块的所有第二分块的计算结果进行整合,得到第一分块的计算结果。
在又一些实施例中,还包括执行以下方法:对存储在外存单元的权重数据在存储顺序的最后一位的方向上进行分块,得到权重数据的多个第三分块,其中,存储顺序的最后一位是个数N,存储顺序的其他位包括通道C、宽度W、高度H;其中,针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的第一分块与第三分块进行联合计算,确定第一分块的计算结果。
在又再一些实施例中,还包括执行以下方法:对存储在外存单元的权重数据在存储顺序的最后一位的方向上进行分块,得到权重数据的多个第三分块,其中,存储顺序的最后一位是个数N,存储顺序的其他位包括通道C、宽度W、高度H;其中,针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的第二分块与第三分块进行联合计算,确定第二分块的计算结果。
在又再一些实施例中,还包括执行以下方法:针对位于图像边缘的第一分块进行以下处理:将第一分块传输到片上***的缓存单元;根据第一分块的尺寸及第一分块在缓存单元的缓存地址以及预设填充参数,确定第一分块的填充数据的缓存地址,其中,预设填充参数包括预设填充类型和预设填充个数;设置第一分块的填充数据的缓存地址对应的数据为预设值,得到第一分块对应的填充数据;根据第一分块对应的填充数据以及从缓存单元获取的第一分块确定第一分块对应的第一填充分块;其中,针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的每个第一填充分块进行计算,得到每个第一分块的计算结果。
在又再一些实施例中,还包括执行以下方法:针对位于图像边缘的第二分块进行以下处理:根据第二分块的尺寸及第二分块在缓存单元的缓存地址以及预设填充参数,确定第二分块的填充数据的缓存地址;设置第二分块的填充数据的缓存地址对应的数据为预设值,得到第二分块对应的填充数据;根据第二分块对应的填充数据以及从缓存单元获取的第二分块确定第二分块对应的第二填充分块;其中,针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的每个第二填充分块进行计算,得到每个第二分块的计算结果。
其中,存储器910例如可以包括***存储器、固定非易失性存储介质等。***存储器例如存储有操作***、应用程序、引导装载程序(Boot Loader)以及其他程序等。
针对神经网络的图像数据进行分块的***900还可以包括输入输出接口930、网络接口940、存储接口950等。这些接口930,940,950以及存储器910和处理器920之间例如可以通过总线960连接。其中,输入输出接口930为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口940为各种联网设备提供连接接口。存储接口950为SD卡、U盘等外置存储设备提供连接接口。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、***、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机程序代码的计算机非瞬时性可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (14)
1.一种针对神经网络的图像数据进行分块的方法,其特征在于,包括:
对存储在外存单元的图像数据在存储顺序的最后一位的方向上进行分块,得到所述图像数据的多个第一分块,其中,所述存储顺序的最后一位是宽度W或高度H,所述存储顺序的最后一位是宽度W的情况下,所述存储顺序的其他位包括通道C和高度H,所述存储顺序的最后一位是高度H的情况下,所述存储顺序的其他位包括通道C和宽度W;
针对输入神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果;
对所有第一分块的计算结果进行整合,将整合结果作为神经网络的所述任一网络层的输出结果,并保存到所述外存单元;
还包括:
针对每个第一分块进行以下处理:将每个第一分块依次传输到片上***的缓存单元;在所述存储顺序的最后一位是宽度W的情况下,对存储在片上***的缓存单元的所述第一分块在高度H方向上进行分块,得到所述第一分块对应的多个第二分块;其中,所述针对输入神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果;对所述第一分块的所有第二分块的计算结果进行整合,得到所述第一分块的计算结果;
或者,
针对每个第一分块进行以下处理:将每个第一分块依次传输到片上***的缓存单元;在所述存储顺序的最后一位是高度H的情况下,对存储在片上***的缓存单元的所述第一分块在宽度W方向上进行分块,得到所述第一分块对应的多个第二分块;其中,所述针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果;对所述第一分块的所有第二分块的计算结果进行整合,得到所述第一分块的计算结果。
2.根据权利要求1所述的针对神经网络的图像数据进行分块的方法,其特征在于,还包括:
对存储在外存单元的权重数据在存储顺序的最后一位的方向上进行分块,得到所述权重数据的多个第三分块,其中,所述存储顺序的最后一位是个数N,所述存储顺序的其他位包括通道C、宽度W、高度H;
其中,所述针对输入神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:
针对输入神经网络的任一网络层的图像数据的所述第一分块与所述第三分块进行联合计算,确定所述第一分块的计算结果。
3.根据权利要求1所述的针对神经网络的图像数据进行分块的方法,其特征在于,还包括:
对存储在外存单元的权重数据在存储顺序的最后一位的方向上进行分块,得到所述权重数据的多个第三分块,其中,所述存储顺序的最后一位是个数N,所述存储顺序的其他位包括通道C、宽度W、高度H;
其中,所述针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果包括:
针对输入神经网络的任一网络层的图像数据的所述第二分块与所述第三分块进行联合计算,确定所述第二分块的计算结果。
4.根据权利要求1所述的针对神经网络的图像数据进行分块的方法,其特征在于,还包括:
针对位于图像边缘的第一分块进行以下处理:
将所述第一分块传输到片上***的缓存单元;
根据所述第一分块的尺寸及所述第一分块在所述缓存单元的缓存地址以及预设填充参数,确定第一分块的填充数据的缓存地址;
设置所述第一分块的填充数据的缓存地址对应的数据为预设值,得到所述第一分块对应的填充数据;
根据所述第一分块对应的填充数据以及从所述缓存单元获取的所述第一分块确定所述第一分块对应的第一填充分块;
其中,所述针对输入神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果包括:
针对输入神经网络的任一网络层的图像数据的每个第一填充分块进行计算,得到每个第一分块的计算结果。
5.根据权利要求1所述的针对神经网络的图像数据进行分块的方法,其特征在于,还包括:
针对位于图像边缘的第二分块进行以下处理:
根据所述第二分块的尺寸及所述第二分块在所述缓存单元的缓存地址以及预设填充参数,确定第二分块的填充数据的缓存地址;
设置所述第二分块的填充数据的缓存地址对应的数据为预设值,得到所述第二分块对应的填充数据;
根据所述第二分块对应的填充数据以及从所述缓存单元获取的所述第二分块确定所述第二分块对应的第二填充分块;
其中,所述针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果包括:
针对输入神经网络的任一网络层的图像数据的每个第二填充分块进行计算,得到每个第二分块的计算结果。
6.根据权利要求5所述的针对神经网络的图像数据进行分块的方法,其特征在于,所述预设填充参数包括预设填充类型和预设填充个数。
7.根据权利要求1-6任一所述的针对神经网络的图像数据进行分块的方法,其特征在于,所述网络层包括卷积层或全连接层中的至少一层。
8.一种针对神经网络的图像数据进行分块的***,其特征在于,包括:
外存单元,中央处理器CPU,以及片上***,其中,所述片上***包括:缓存单元,计算单元,控制单元;
所述外存单元,被配置为存储图像数据和图像数据的第一分块;
所述CPU,被配置为对存储在外存单元的图像数据在存储顺序的最后一位的方向上进行分块,得到所述图像数据的多个第一分块,其中,所述存储顺序的最后一位是宽度W或高度H,所述存储顺序的最后一位是宽度W的情况下,所述存储顺序的其他位包括通道C和高度H,所述存储顺序的最后一位是高度H的情况下,所述存储顺序的其他位包括通道C和宽度W,以及将所述第一分块传输到片上***的缓存单元;
所述缓存单元,被配置为接收外存单元传输的图像数据的第一分块并存储;
所述计算单元,被配置为针对神经网络的任一网络层的图像数据的每个第一分块进行计算,得到每个第一分块的计算结果,其中,所述网络层包括卷积层或全连接层中的至少一层;
所述控制单元,被配置为对所有第一分块的计算结果进行整合,将整合结果作为神经网络的所述任一网络层的输出结果;
其中,
所述缓存单元,还被配置为存储图像数据的第二分块;所述控制单元,还被配置为在所述存储顺序的最后一位是宽度W的情况下,对存储在所述缓存单元的所述第一分块在高度H方向上进行分块,得到所述第一分块对应的多个第二分块,以及,对所述第一分块的所有第二分块的计算结果进行整合,得到所述第一分块的计算结果;所述计算单元,还被配置为针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果;
或者,
所述缓存单元,还被配置为存储图像数据的第二分块;所述控制单元,还被配置为在所述存储顺序的最后一位是高度H的情况下,对存储在所述缓存单元的所述第一分块在宽度W方向上进行分块,得到所述第一分块对应的多个第二分块,以及,对所述第一分块的所有第二分块的计算结果进行整合,得到所述第一分块的计算结果;所述计算单元,还被配置为针对输入神经网络的任一网络层的图像数据的每个第二分块进行计算,得到每个第二分块的计算结果。
9.根据权利要求8所述的针对神经网络的图像数据进行分块的***,其特征在于,
所述外存单元,还被配置为存储权重数据和权重数据的第三分块;
所述CPU,还被配置为对存储在外存单元的权重数据在存储顺序的最后一位的方向上进行分块,得到所述权重数据的多个第三分块,其中,所述存储顺序的最后一位是个数N,所述存储顺序的其他位包括通道C、宽度W、高度H;
所述计算单元,还被配置为针对输入神经网络的任一网络层的图像数据的所述第一分块与所述第三分块进行联合计算,确定所述第一分块的计算结果。
10.根据权利要求8所述的针对神经网络的图像数据进行分块的***,其特征在于,
所述外存单元,还被配置为存储权重数据和权重数据的第三分块;
所述CPU,还被配置为对存储在外存单元的权重数据在存储顺序的最后一位的方向上进行分块,得到所述权重数据的多个第三分块,其中,所述存储顺序的最后一位是个数N,所述存储顺序的其他位包括通道C、宽度W、高度H;
所述计算单元,还被配置为针对输入神经网络的任一网络层的图像数据的所述第二分块与所述第三分块进行联合计算,确定所述第二分块的计算结果。
11.根据权利要求8所述的针对神经网络的图像数据进行分块的***,其特征在于,还包括:
所述控制单元,还被配置为根据所述第一分块的尺寸及所述第一分块在所述缓存单元的缓存地址以及预设填充参数,确定第一分块的填充数据的缓存地址;设置所述第一分块的填充数据的缓存地址对应的数据为预设值,得到所述第一分块对应的填充数据;根据所述第一分块对应的填充数据以及从所述缓存单元获取的所述第一分块确定所述第一分块对应的第一填充分块,其中,所述预设填充参数包括预设填充类型和预设填充个数;
所述计算单元,还被配置为针对输入神经网络的任一网络层的图像数据的每个第一填充分块进行计算,得到每个第一分块的计算结果。
12.根据权利要求9所述的针对神经网络的图像数据进行分块的***,其特征在于,
所述控制单元,还被配置为根据所述第二分块的尺寸及所述第二分块在所述缓存单元的缓存地址以及预设填充参数,确定第二分块的填充数据的缓存地址;设置所述第二分块的填充数据的缓存地址对应的数据为预设值,得到所述第二分块对应的填充数据;根据所述第二分块对应的填充数据以及从所述缓存单元获取的所述第二分块确定所述第二分块对应的第二填充分块;
所述计算单元,还被配置为针对输入神经网络的任一网络层的图像数据的每个第二填充分块进行计算,得到每个第二分块的计算结果。
13. 一种针对神经网络的图像数据进行分块的***,其特征在于,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行权利要求1-7中任一项所述的针对神经网络的图像数据进行分块的方法。
14.一种非瞬时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7中任一项所述的针对神经网络的图像数据进行分块的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110505152.7A CN112991144B (zh) | 2021-05-10 | 2021-05-10 | 针对神经网络的图像数据进行分块的方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110505152.7A CN112991144B (zh) | 2021-05-10 | 2021-05-10 | 针对神经网络的图像数据进行分块的方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112991144A CN112991144A (zh) | 2021-06-18 |
CN112991144B true CN112991144B (zh) | 2021-08-24 |
Family
ID=76337436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110505152.7A Active CN112991144B (zh) | 2021-05-10 | 2021-05-10 | 针对神经网络的图像数据进行分块的方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112991144B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10743002B2 (en) * | 2017-03-03 | 2020-08-11 | Gopro, Inc. | Sequential in-place blocking transposition for image signal processing |
CN110298831A (zh) * | 2019-06-25 | 2019-10-01 | 暨南大学 | 一种基于分块深度学习的医学图像处理***及其方法 |
CN110796652B (zh) * | 2019-10-30 | 2023-03-21 | 上海联影智能医疗科技有限公司 | 图像处理方法、计算机设备和存储介质 |
CN112508184B (zh) * | 2020-12-16 | 2022-04-29 | 重庆邮电大学 | 一种基于卷积神经网络的快速图像识别加速器设计方法 |
CN112541929A (zh) * | 2021-01-25 | 2021-03-23 | 翱捷科技股份有限公司 | 一种用于卷积神经网络的图像处理方法及*** |
-
2021
- 2021-05-10 CN CN202110505152.7A patent/CN112991144B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112991144A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112840356B (zh) | 运算加速器、处理方法及相关设备 | |
CN107437110B (zh) | 卷积神经网络的分块卷积优化方法及装置 | |
CN104915322B (zh) | 一种卷积神经网络硬件加速方法 | |
US20220051088A1 (en) | Artificial intelligence accelerator, artificial intelligence acceleration device, artificial intelligence acceleration chip, and data processing method | |
US10354733B1 (en) | Software-defined memory bandwidth reduction by hierarchical stream buffering for general matrix multiplication in a programmable IC | |
CN103020890B (zh) | 基于多层次并行处理的视觉处理装置 | |
EP3698313A1 (en) | Image preprocessing for generalized image processing | |
CN111178518A (zh) | 一种基于fpga的软硬件协同的加速方法 | |
US20200272892A1 (en) | Super-tiling in neural network processing to enabling analytics at lower memory speed | |
CN111831254A (zh) | 图像处理加速方法、图像处理模型存储方法及对应装置 | |
CN110333827B (zh) | 一种数据加载装置和数据加载方法 | |
CN111465943A (zh) | 芯片上计算网络 | |
US20220179823A1 (en) | Reconfigurable reduced instruction set computer processor architecture with fractured cores | |
CN109146065B (zh) | 二维数据的卷积运算方法及装置 | |
CN114995782B (zh) | 数据处理方法、装置、设备和可读存储介质 | |
CN113469350A (zh) | 一种适于npu的深度卷积神经网络加速方法和*** | |
EP3889844A1 (en) | Neural network system and data processing technology | |
CN112950656A (zh) | 一种基于fpga平台的按通道进行预读取数据的分块卷积方法 | |
CN112639726A (zh) | 用于执行并行计算的方法和*** | |
CN112991144B (zh) | 针对神经网络的图像数据进行分块的方法和*** | |
CN114372012B (zh) | 一种通用、可配置的高能效池化计算单行输出***和方法 | |
KR20200129957A (ko) | 피처맵 데이터에 대한 압축을 수행하는 뉴럴 네트워크 프로세서 및 이를 포함하는 컴퓨팅 시스템 | |
KR102606207B1 (ko) | 매트릭스 수학 명령어 세트에 대한 타일링 알고리즘 | |
KR20220049325A (ko) | 가속기 및 이를 포함한 전자 장치 | |
KR102491202B1 (ko) | 인공 신경망 연산을 수행하는 방법, 시스템 및 비일시성의 컴퓨터 판독 가능 기록 매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |