可左右滑动选省市

一种数据处理方法及装置实用新型专利

更新时间:2024-10-01
一种数据处理方法及装置实用新型专利 专利申请类型:实用新型专利;
源自:北京高价值专利检索信息库;

专利名称:一种数据处理方法及装置

专利类型:实用新型专利

专利申请号:CN202011148331.1

专利申请(专利权)人:北京三快在线科技有限公司
权利人地址:北京市海淀区北四环西路9号2106-030

专利发明(设计)人:柴双林

专利摘要:本说明书公开了一种数据处理方法及装置,处理器可包括缓存模块以及若干个逻辑模块,处理器可获取图像传感器采集的图像数据并存储在缓存模块中,通过数据处理模型对图像数据进行处理时,针对数据处理模型的各层,获取该层的模型参数,将模型参数加载到各逻辑模块中,从缓存模块中获取该层的上一层得到的中间图像,分割中间图像得到各子中间图像,将各子中间图像加载的各逻辑模块中,通过各逻辑模块,对模型参数以及各子中间图像进行运算,得到该层得到的中间图像,并存储到缓存模块中。通过上述方法,图像数据或者各层得到的中间图像存储在缓存中,解决了数据传输带宽受限制的问题,使处理器的算力资源得到有效使用,达到了减少耗时的效果。

主权利要求:
1.一种数据处理方法,其特征在于,处理器包括缓存模块以及若干个逻辑模块,所述方法包括:所述处理器获取图像传感器采集的图像数据存储在所述缓存模块中,通过数据处理模型对所述图像数据进行处理;
针对所述数据处理模型的各层,获取内存中存储的所述数据处理模型的该层的模型参数,将所述模型参数加载到各逻辑模块中;并且,从所述缓存模块中获取该层的上一层得到的中间图像,根据预先确定的各逻辑模块的信息,将所述中间图像进行分割,得到若干个子中间图像,将各子中间图像加载到各逻辑模块中;
通过各逻辑模块,对所述模型参数以及各子中间图像进行运算,得到运算结果作为该层得到的中间图像,并将该层得到的中间图像存储到所述缓存模块中。
2.如权利要求1所述的方法,其特征在于,从所述缓存模块中获取该层的上一层得到的中间图像,具体包括:若该层为所述数据处理模型的第一层,则从所述缓存模块中获取所述图像数据。
3.如权利要求1所述的方法,其特征在于,预先确定各逻辑模块的信息,具体包括:根据所述数据处理模型的模型结构,确定所述数据处理模型中各层所需要处理的中间图像的尺寸以及各层的模型参数的信息;
根据所述数据处理模型中各层所需要处理的中间图像的尺寸和/或各层的模型参数的信息,确定所述处理器中包含的逻辑模块的数量。
4.如权利要求1所述的方法,其特征在于,将所述模型参数加载到各逻辑模块中,具体包括:针对获取的所述模型参数的参数矩阵中的各参数值,根据该参数值在所述模型参数的参数矩阵中的位置,在各逻辑模块中,确定需要加载该参数值的各逻辑模块;
将该参数值并行加载到确定出的各逻辑模块中。
5.如权利要求1所述的方法,其特征在于,将各子中间图像加载到各逻辑模块中,具体包括:根据各子中间图像在所述中间图像中的位置,依次将各子中间图像加载到各逻辑模块中。
6.如权利要求5所述的方法,其特征在于,依次将各子中间图像加载到各逻辑模块中,具体包括:针对各子中间图像,将该子中间图像加载到所述逻辑模块中时,执行以下操作:针对该子中间图像中的各像素值,根据该像素值在该子中间图像中的位置信息,在各逻辑模块中,确定需要加载该像素值的各逻辑模块;
将该像素值并行加载到确定出的各逻辑模块中。
7.如权利要求1所述的方法,其特征在于,通过各逻辑模块,对所述模型参数以及各子中间图像进行运算,得到运算结果作为该层得到的中间图像,具体包括:针对各子中间图像,通过各逻辑模块,对所述模型参数以及该子中间图像进行运算,得到该子中间图像的运算结果;
将各子中间图像的运算结果作为所述该层得到的中间图像。
8.如权利要求7所述的方法,其特征在于,通过各逻辑模块,对所述模型参数以及该子中间图像进行运算,得到该子中间图像的运算结果,具体包括:通过各逻辑模块,对加载到各逻辑模块中的所述模型参数以及该子中间图像进行并行运算,得到各逻辑模块关于该子中间图像的运算结果。
9.如权利要求7所述的方法,其特征在于,通过各逻辑模块,对所述模型参数以及该子中间图像进行运算,得到该子中间图像的运算结果,具体包括:通过各逻辑模块,对所述模型参数以及该子中间图像进行卷积;
将卷积后的结果进行池化运算,得到该子中间图像的运算结果。
10.一种数据处理装置,其特征在于,所述装置所在的处理器包括缓存模块以及若干个逻辑模块,所述装置包括:获取模块,用于所述装置所在的所述处理器获取图像传感器采集的图像数据存储在所述缓存模块中,通过数据处理模型对所述图像数据进行处理;
加载模块,用于针对所述数据处理模型的各层,获取内存中存储的所述数据处理模型的该层的模型参数,将所述模型参数加载到各逻辑模块中;并且,从所述缓存模块中获取该层的上一层得到的中间图像,根据预先确定的各逻辑模块的信息,将所述中间图像进行分割,得到若干个子中间图像,将各子中间图像加载到各逻辑模块中;
运算模块,用于通过各逻辑模块,对所述模型参数以及各子中间图像进行运算,得到运算结果作为该层得到的中间图像,并将该层得到的中间图像存储到所述缓存模块中。
11.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1‑9任一所述的方法。 说明书 : 一种数据处理方法及装置技术领域[0001] 本说明书涉及机器学习技术领域,尤其涉及一种数据处理方法及装置。背景技术[0002] 目前,在硬件支持方面,可通过处理器与存储器实现机器学习模型的运算。处理器可包括图形处理器(GraphicsProcessingUnit,GPU)、张量处理单元(TensorProcessingUnit,TPU)等,存储器可包括诸如双倍速率同步动态随机存储器(DoubleDataRateSynchronousDynamicRandomAccessMemory,DDRSDRAM)等内存元器件。[0003] 以对图像数据进行目标检测、机器学习模型为卷积神经网络(ConvolutionalNeuralNetworks,CNN)模型为例,图像数据、CNN的模型参数以及CNN每一层的运算结果可存储在DDRSDRAM中,针对TPU对CNN中的任一层的运算,首先将CNN的模型参数以及图像数据或者上一层运算结果依次从DDRSDRAM中加载到TPU中,TPU根据模型参数以及图像数据进行运算,并将运算结果存储在DDRSDRAM中。[0004] 由于图像数据、CNN的运算结果等数据量较大,将其从DDRSDRAM中加载到TPU中需要较高的带宽来支撑数据传输,受限于DDRSDRAM与TPU之间的传输带宽,数据加载需要耗费较长的时间,并且,由于算力与带宽的需求呈正相关关系,当带宽受到限制时,TPU中的算力资源未能有效使用,TPU的运算速度较低,导致TPU对图像数据进行目标检测需要耗费较长的时间。发明内容[0005] 本说明书实施例提供一种数据处理方法及装置,以部分解决现有技术存在的上述问题。[0006] 本说明书实施例采用下述技术方案:[0007] 本说明书提供的一种数据处理方法,处理器包括缓存模块以及若干个逻辑模块,所述方法包括:[0008] 所述处理器获取图像传感器采集的图像数据存储在所述缓存模块中,通过数据处理模型对所述图像数据进行处理;[0009] 针对所述数据处理模型的各层,获取内存中存储的所述数据处理模型的该层的模型参数,将所述模型参数加载到各逻辑模块中;并且,从所述缓存模块中获取该层的上一层得到的中间图像,根据预先确定的各逻辑模块的信息,将所述中间图像进行分割,得到若干个子中间图像,将各子中间图像加载到各逻辑模块中;[0010] 通过各逻辑模块,对所述模型参数以及各子中间图像进行运算,得到运算结果作为该层得到的中间图像,并将该层得到的中间图像存储到所述缓存模块中。[0011] 可选地,从所述缓存模块中获取该层的上一层得到的中间图像,具体包括:[0012] 若该层为所述数据处理模型的第一层,则从所述缓存模块中获取所述图像数据。[0013] 可选地,预先确定各逻辑模块的信息,具体包括:[0014] 根据所述数据处理模型的模型结构,确定所述数据处理模型中各层所需要处理的中间图像的尺寸以及各层的模型参数的信息;[0015] 根据所述数据处理模型中各层所需要处理的中间图像的尺寸和/或各层的模型参数的信息,确定所述处理器中包含的逻辑模块的数量。[0016] 可选地,将所述模型参数加载到各逻辑模块中,具体包括:[0017] 针对获取的所述模型参数的参数矩阵中的各参数值,根据该参数值在所述模型参数的参数矩阵中的位置,在各逻辑模块中,确定需要加载该参数值的各逻辑模块;[0018] 将该参数值并行加载到确定出的各逻辑模块中。[0019] 可选地,将各子中间图像加载到各逻辑模块中,具体包括:[0020] 根据各子中间图像在所述中间图像中的位置,依次将各子中间图像加载到各逻辑模块中。[0021] 可选地,依次将各子中间图像加载到各逻辑模块中,具体包括:[0022] 针对各子中间图像,将该子中间图像加载到所述逻辑模块中时,执行以下操作:[0023] 针对该子中间图像中的各像素值,根据该像素值在该子中间图像中的位置信息,在各逻辑模块中,确定需要加载该像素值的各逻辑模块;[0024] 将该像素值并行加载到确定出的各逻辑模块中。[0025] 可选地,通过各逻辑模块,对所述模型参数以及各子中间图像进行运算,得到运算结果作为该层得到的中间图像,具体包括:[0026] 针对各子中间图像,通过各逻辑模块,对所述模型参数以及该子中间图像进行运算,得到该子中间图像的运算结果;[0027] 将各子中间图像的运算结果作为所述该层得到的中间图像。[0028] 可选地,通过各逻辑模块,对所述模型参数以及该子中间图像进行运算,得到该子中间图像的运算结果,具体包括:[0029] 通过各逻辑模块,对加载到各逻辑模块中的所述模型参数以及该子中间图像进行并行运算,得到各逻辑模块关于该子中间图像的运算结果。[0030] 可选地,通过各逻辑模块,对所述模型参数以及该子中间图像进行运算,得到该子中间图像的运算结果,具体包括:[0031] 通过各逻辑模块,对所述模型参数以及该子中间图像进行卷积;[0032] 将卷积后的结果进行池化运算,得到该子中间图像的运算结果。[0033] 本说明书提供一种数据处理系统,所述系统包括:图像传感器、处理器、内存,所述处理器包括缓存模块以及若干个逻辑模块;[0034] 所述图像传感器,用于采集图像数据;[0035] 所述处理器,用于获取所述图像数据存储在所述缓存模块中以及所述内存中存储的所述数据处理模型的模型参数,将所述模型参数加载到各逻辑模块中;并且,从所述缓存模块中获取中间图像,根据预先确定的各逻辑模块的信息,将所述中间图像进行分割,得到若干个子中间图像,将各子中间图像加载到各逻辑模块中,通过各逻辑模块,对所述模型参数以及各子中间图像进行运算,得到运算结果作为中间图像,并将中间图像存储到所述缓存模块中;[0036] 所述内存,用于存储所述数据处理模型的模型参数。[0037] 本说明书提供一种数据处理装置,所述装置所在的处理器包括缓存模块以及若干个逻辑模块,所述装置包括:[0038] 获取模块,用于所述装置所在的所述处理器获取图像传感器采集的图像数据存储在所述缓存模块中,通过数据处理模型对所述图像数据进行处理;[0039] 加载模块,用于针对所述数据处理模型的各层,获取内存中存储的所述数据处理模型的该层的模型参数,将所述模型参数加载到各逻辑模块中;并且,从所述缓存模块中获取该层的上一层得到的中间图像,根据预先确定的各逻辑模块的信息,将所述中间图像进行分割,得到若干个子中间图像,将各子中间图像加载到各逻辑模块中;[0040] 运算模块,用于通过各逻辑模块,对所述模型参数以及各子中间图像进行运算,得到运算结果作为该层得到的中间图像,并将该层得到的中间图像存储到所述缓存模块中。[0041] 本说明书提供的一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法。[0042] 本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:[0043] 在本说明书中,处理器可包括缓存模块以及若干个逻辑模块,处理器可获取图像传感器采集的图像数据并存储在缓存模块中,通过数据处理模型对图像数据进行处理时,针对数据处理模型的各层,获取内存中存储的数据处理模型的该层的模型参数,将模型参数加载到各逻辑模块中,从缓存模块中获取该层的上一层得到的中间图像,根据预先确定的各逻辑模块的信息,分割中间图像得到各子中间图像,将各子中间图像加载的各逻辑模块中,通过各逻辑模块,对模型参数以及各子中间图像进行运算,得到该层得到的中间图像,并将该层得到的中间图像存储到缓存模块中。由于在本说明书中,图像数据或者数据处理模型各层得到的中间图像存储在缓存中,而处理器的片内数据传输带宽远大于内存与处理器之间的数据传输带宽,只有模型参数需要通过内存实时加载,而模型参数所需要的带宽为图像数据带宽的二十分之一,因此,本说明书解决了数据传输带宽受限制的问题,尤其是算力满载时传输图像数据的带宽瓶颈问题,从而使处理器的算力资源得到满载使用,达到了大幅提高帧率,大幅减低算法延迟的效果,从而缩短通过数据处理模型对图像数据进行处理所消耗的时间。附图说明[0044] 此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:[0045] 图1为现有技术对图像数据进行处理的框图;[0046] 图2为本说明书实施例提供的对图像数据进行处理的框图;[0047] 图3为本说明书实施例提供的一种数据处理方法流程图;[0048] 图4为本说明书实施例提供的将子中间图像中的像素值并行加载到各逻辑模块中的示意图;[0049] 图5为本说明书实施例提供的一种数据处理装置的结构示意图。具体实施方式[0050] 为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。[0051] 在底层硬件实现使用机器学习模型对图像数据进行处理的过程中,需要处理器与存储器之间的配合作为硬件支撑。通常,处理器可包括图形处理器(GraphicsProcessingUnit,GPU)、张量处理单元(TensorProcessingUnit,TPU)、现场可编程逻辑门阵列(FieldProgrammableGateArray,FPGA)等,存储器是计算机可读存储介质中的一种,可包括内存、硬盘等,其中内存可包括双倍速率同步动态随机存储器(Double DataRateSynchronousDynamicRandomAccessMemory,DDRSDRAM)等内存元器件,为便于描述,以下以存储器为DDRSDRAM(可简称为DDR)为例进行说明。[0052] 现有的技术方案中,机器学习模型为卷积神经网络(ConvolutionalNeuralNetworks,CNN)模型,采用TPU通过CNN对图像数据进行目标检测,其中,TPU为一种用于神经网络模型运算的处理器。[0053] 图1为现有技术对图像数据进行处理的框图,在图1中,DDR中存储的信息可包括图像传感器采集的图像数据、CNN每一层的运算结果以及CNN的模型参数。当使用TPU进行运算时,DDR中存储的CNN的模型参数以串行的方式预加载到TPU中,然后将DDR中存储的当前层的上一层的运算结果加载到TPU中,TPU根据加载的CNN的模型参数以及当前层的上一层的运算结果进行运算,得到当前层的运算结果,将当前层的运算结果存储到DDR中。其中,若当前层为第一层,当前层的上一层的运算结果即为图像传感器采集的图像数据。[0054] 由于图像数据、CNN的运算结果等数据量较大,将DDR中存储的当前层的上一层的运算结果加载到TPU中的过程中,需要较高的带宽来支撑数据传输,受限于DDR与TPU之间的传输带宽,数据加载需要耗费较长的时间。另外,由于将DDR中存储的模型参数是以串行的方式加载到TPU中,需要占用多个时钟周期,同样需要耗费一定的时间。考虑到处理器的算力负载与带宽的需求呈正相关关系,也即,算力负载越大,带宽的需求越高,当带宽受到限制时,TPU中的算力资源未能有效使用,基于上述原因,使得TPU对图像数据进行目标检测需要耗费较长的时间。[0055] 因此,本说明书提供一种数据处理方法,以解决现有的技术方案中存在的问题。[0056] 首先来说本说明书提供的数据处理方法的底层硬件需求等信息。[0057] 本说明书中需要的硬件同样包括处理器以及内存,其中,处理器可包括FPGA、复杂可编程逻辑器件(ComplexProgramminglogicdevice,CPLD)等,其特点在于,作为一种半定制电路,可根据实际需求进行编程,从而实现实际需求中的功能。以FPGA为例,FPGA的基本结构可包括可配置逻辑块、嵌入式块RAM等,其中,嵌入式块RAM(即本说明书中的缓存模块)作为FPGA的片内缓存,主要包括BRAM、URAM,其特点在于,带宽高、空间小。可配置逻辑块(即本说明书中的逻辑模块,本领域技术人员可将其作为人工智能(ArtificialIntelligence,AI)算力核)可进行运算。[0058] 图2为本说明书实施例提供的对图像数据进行处理的框图,在图2中,图像传感器采集的图像数据、数据处理模型的运算结果可存储在缓存模块中,数据处理模型的模型参数可存储在内存中,当使用处理器通过数据处理模型对图像数据进行处理时,针对数据处理模型的各层,将内存中存储的数据处理模型的该层的模型参数加载到逻辑模块中,将缓存模块中存储的该层的上一层的运算结果加载到逻辑模块中,逻辑模块可根据模型参数以及上一层的运算结果进行运算,得到该层的运算结果,并将该层的运算结果存储到缓存模块中,以覆盖上一层的运算结果,也即,缓存模块中存储的为历史上最近一次的运算结果,当该层为第一层时,该层的上一层的运算结果为图像传感器采集的图像数据。[0059] 因此,本说明书提供的数据处理系统可包括图像传感器、处理器、内存,处理器包括缓存模块以及若干个逻辑模块,可运行在嵌入式平台上,其中,图像传感器可采集图像数据,嵌入式平台可包括PetaLinuxAPP,用于将图像传感器采集的图像数据加载到处理器中的缓存模块,并且,将内存中存储的数据处理模型的模型参数加载到处理器中的逻辑模块,处理器可将图像数据从缓存中加载到逻辑模块中,逻辑模块根据加载的模型参数以及图像数据进行运算,得到的运算结果存储在缓存模块中。[0060] 然后再来说本说明书提供的数据处理方法的具体内容。以下结合附图,详细说明本说明书各实施例提供的技术方案。[0061] 图3为本说明书实施例提供的一种数据处理方法流程图,具体可包括以下步骤:[0062] S100:所述处理器获取图像传感器采集的图像数据存储在所述缓存模块中,通过数据处理模型对所述图像数据进行处理。[0063] S102:针对所述数据处理模型的各层,获取内存中存储的所述数据处理模型的该层的模型参数,将所述模型参数加载到各逻辑模块中;并且,从所述缓存模块中获取该层的上一层得到的中间图像,根据预先确定的各逻辑模块的信息,将所述中间图像进行分割,得到若干个子中间图像,将各子中间图像加载到各逻辑模块中。[0064] 在本说明书中,处理器包括缓存模块(包括BRAM/URAM)以及若干个逻辑模块,处理器可获取图像传感器采集的图像数据存储在缓存模块中,具体的,本说明书中,通过嵌入式平台可以将图像传感器实时采集的图像数据直接加载到处理器中的缓存模块,也可以将存储在内存中的图像数据加载到缓存模块中,即,图像传感采集的图像数据存储在内存中,由嵌入式平台将图像数据加载到缓存模块中,以便于处理器对图像数据进行处理。[0065] 由于CNN的模型结构为链式,即下一层的运算数据来源于上一层得到运算结果,因此,缓存模块中存储的是上一层得到的运算结果,当下一层运算结束后,将下一层的运算结果存储到缓存模块中,并将上一层得到的运算结果进行覆盖。若数据处理模型的模型结构为复式,即某一层得到的运算结果用于下一层的运算以及下一层之后的其他层的运算,则将该层得到的运算结果另行存储在内存中,以便于下一层之后的其他层调用该层得到的运算结果。[0066] 数据处理模型为机器学习模型的一种,可以是诸如CNN等神经网络,也可以是其他机器学习模型,例如决策树(DecisionTree)模型等,本说明书对数据处理模型的类型不作限制,为便于描述,可以CNN作为数据处理模型,对图像数据进行目标检测为例对数据处理方法进行描述。[0067] 从整体上来说,处理器通过数据处理模型对图像数据进行处理,得到图像数据的数据处理结果,具体可以解释为:图像传感器采集图像数据存储在缓存模块中,数据处理模型的各层的模型参数存储在内存中,通过逻辑模块对图像数据与数据处理模型的第一层的模型参数进行运算,第一层的运算结果存储在缓存模块中,通过逻辑模块对第一层的运算结果以及第二层的模型参数进行运算,得到第二层的运算结果,以此类推,得到最后一层的运算结果即为图像数据的数据处理结果。[0068] 因此,以对数据处理模型的其中一层为例,对处理器的运算进行描述。[0069] 首先来说处理器包含的各逻辑模块。[0070] 在本说明书中,处理器可包含若干个逻辑模块,其中处理器中包含的逻辑模块的数量可预先确定。[0071] 具体的,根据数据处理模型的模型结构,可确定数据处理模型中各层所需要处理的中间图像的尺寸以及各层的模型参数的信息;根据数据处理模型中各层所需要处理的中间图像的尺寸和/或各层的模型参数的信息,确定处理器中包含的逻辑模块的数量。[0072] 例如,根据数据处理模型的模型结构,可确定数据处理模型中所需要处理的中间图像的最小尺寸为N*N,模型参数的参数矩阵为M*M,则处理器中包含的逻辑模块的数量可以为N*N*M*M。[0073] 当然,上述只是举例说明,在这个例子中,各逻辑模块可得到最大程度的复用,算力可达到满载。而逻辑模块的数量也可以是其他数量,例如,(N+1)*(N+1)*M*M,只是在该种情况下,并非是每个逻辑模块得到最大程度的复用,未完全合理利用算力资源。而无论逻辑模块的数量的取值具体是多少,取值的依据为数据处理模型中各层所需要处理的中间图像的尺寸、各层的模型参数的参数矩阵的维数等信息,从而以便于根据逻辑模块的数量,将模型参数以及上一层得到的运算结果(即,中间图像)加载到各逻辑模块中。考虑到本方案中数据处理模型可以是机器学习模型中的任一种,因此,也可以根据经验确定逻辑模块的数量,在加载模型参数以及中间图像时,同样需要基于逻辑模块的数量进行加载。[0074] 然后来说将上一层得到的中间图像加载到逻辑模块中。[0075] 若当前层为数据处理模型的第一层,则缓存模块中存储的为图像传感器采集的图像数据,将图像数据加载到各逻辑模块中。若当前层为数据处理模型的第二层或者第二层以后的其他层,则缓存模块中存储的为当前层的上一层得到的运算结果(即,上一层得到的中间图像),将中间图像加载到各逻辑模块中。因为,为便于表述,以下将图像传感器采集的图像数据也作为中间图像。需要说明的是,在本说明书中,中间图像实际上可包括中间特征值数据块,中间图像的像素值可包括特征值。[0076] 在一种优选的实施例中,可将数据处理模型的第一层所需要处理的图像数据直接由图像传感器采集得到的图像数据加载到各逻辑模块中,而无需将图像传感器采集的图像存储在处理器中的缓存模块进行存储,然后再由缓存模块中将图像数据加载到各逻辑模块中,因此,本说明书可避免图像数据重加载,可节省一帧图像数据存取延迟,并且,在实际的工程实现中,由于图像传感器采集的图像数据的尺寸与YOLOv3的输入尺寸通常不匹配,因此,该步骤同时完成了图像缩放处理,即将图像尺寸由1980*1020缩放至416*416。[0077] 由于处理器中包含的逻辑模块的数量是预先确定的,故,各逻辑模块所能运算的数据的数量也是固定的,也即,每个逻辑模块能够运算的中间图像的图像尺寸也是确定的,因此,根据各逻辑模块的所能运算的数据量、处理器中包含的逻辑模块的数量等信息,可对中间图像进行分割,得到若干个子中间图像,根据各子中间图像在中间图像中的位置等信息,依次可将各子中间图像加载到各逻辑模块中。[0078] 这里需要说明的是,各子中间图像以串行加载的方式加载到各逻辑模块中,各逻辑模块将一个子中间图像进行运算后,对下一个加载的子中间图像进行运算,当对所有的子中间图像运算结束后,得到中间图像的运算结果,即为当前层得到的运算结果。[0079] 每个子中间图像加载到各逻辑模块中的方式相同,这里以其中一个子中间图像的加载为例进行说明。[0080] 针对该子中间图像中的各像素值,根据该像素值在该子中间图像中的位置信息,在各逻辑模块中,确定需要加载该像素值的各逻辑模块,将该像素值并行加载到确定出的各逻辑模块中。[0081] 图4为本说明书实施例提供的将子中间图像中的像素值并行加载到各逻辑模块中的示意图。在图4中,根据每个像素值在子中间图像中的位置以及每个逻辑模块在逻辑模块所在区域的位置,可确定需要加载子中间图像的第一行第二列的像素值‑6的逻辑模块为逻辑模块所在区域的第一行的第一个以及第二个逻辑模块,以及确定需要加载子中间图像的第二行第一列的像素值2的逻辑模块为第一行的第一个以及第二行的第一个逻辑模块,因此,可将各像素值进行并行加载,并且,每个像素值在加载时,可并行加载到各需要加载该像素值的逻辑模块中。[0082] 当然,本说明书中,也可支持各像素值并行加载,每个像素值串行加载到需要加载该像素值的各逻辑模块中,还可支持各像素值串行加载,每个像素值并行加载到需要加载该像素值的各逻辑模块中。图4所示的方式相对后面两种方式的加载速度更快,所需要耗时更短。[0083] 之后来说将数据处理模型的模型参数加载到逻辑模块中。[0084] 在本说明书中,数据处理模型的模型参数可包括数据处理模型中每一层的权重,模型参数的参数值可包括权重值。根据数据处理模型的模型结构,可确定数据模型各层的模型参数的信息,例如,模型参数的参数矩阵的维数,通过预先对数据处理模型进行训练,可得到各层的模型参数的参数矩阵的取值。可将各层的模型参数的参数矩阵存储在内存中,其中,预先对数据处理模型进行训练可参考现有的训练方式。[0085] 在将数据处理模型的当前层的模型参数加载到各逻辑模块中时,针对获取的模型参数的参数矩阵中的各参数值,根据该参数值在模型参数的参数矩阵中的位置,在各逻辑模块中,确定需要加载该参数值的各逻辑模块;将该参数值并行加载到确定出的各逻辑模块中。[0086] 具体的,本说明书中可采用直接存储器访问(DirectMemoryAccess,DMA)的方式将模型参数从内存中加载到各逻辑模块中,也可以由处理器将模型参数从内存中加载到各逻辑模块中。[0087] 参考图4,将图4中存储在缓存中的子中间图像替换为存储在内存中的模型参数的参数矩阵,针对模型参数的参数矩阵中的各参数值,同样可根据该参数值在参数矩阵中的位置以及每个逻辑模块在逻辑模块所在区域的位置,确定需要参数值的各逻辑模块,可将各参数值并行加载到各逻辑模块中,并且,每个参数值并行加载到需要加载该参数值的各逻辑模块中。[0088] 同样,本说明书也可支持各参数值并行加载到各逻辑模块中,每个参数值串行加载到需要加载该参数值的各逻辑模块中,还可支持各参数值串行加载到各逻辑模块中,每个参数值并行加载到需要加载该参数值的各逻辑模块中,第一种方式相对于后面两种方式所耗时间更短。[0089] 由于本说明书中,子中间图像的各像素值以及模型参数的参数矩阵中各参数值均以并行加载的方式加载到各逻辑模块中,即,子中间图像的像素值以及参数矩阵中的各参数值均可复用,因此,子中间图像的像素值复用后所需的带宽由3456.0GB/s缩减至384.9GB/s,参数矩阵中的各参数值复用后所需的带宽由3456.0GB/s缩减至20.5GB/s。带宽需求的极大降低,可使算力资源能够得到有效利用。[0090] S104:通过各逻辑模块,对所述模型参数以及各子中间图像进行运算,得到运算结果作为该层得到的中间图像,并将该层得到的中间图像存储到所述缓存模块中。[0091] 由于中间图像分割为若干个子中间图像,因此,通过数据处理模型对中间图像进行处理得到结果由通过数据处理模型对每个子中间图像进行处理得到的结果确定。针对各子中间图像,通过各逻辑模块,对模型参数以及该子中间图像进行运算,得到该子中间图像的运算结果;将各子中间图像的运算结果作为该层得到的中间图像。在本说明书中,依次将每个子中间图像加载到各逻辑模块中,各逻辑模块并行运算,也即,通过各逻辑模块,对加载到各逻辑模块中的模型参数以及该子中间图像进行并行运算,得到各逻辑模块关于该子中间图像的运算结果。[0092] 当然,本说明书中各逻辑模块也可以依次进行运算,也即,一个逻辑模块运算结束后另一个逻辑模块进行运算,只是由于各逻辑模块均已加载了需要加载的参数值以及像素值,实际上,各逻辑模块的运算完全可以并行运算。[0093] 在通过各逻辑模块,对模型参数以及该子中间图像进行运算时,可对模型参数以及该子中间图像进行卷积,将卷积后的结果进行池化运算,得到该子中间图像的运算结果。[0094] 具体的,针对各逻辑模块,在通过该逻辑模块进行运算时,可对加载到该逻辑模块中的模型参数以及像素值进行运算,使用数据处理资源(DigitalSignalProcess,DSP)资源以及查找表(LookUpTable,LUT)资源进行运算,可参考现有的实现方式。[0095] 在进行池化运算时,可选择平均池化、最大池化等,在一种优选的实施例中,可对卷积运算结果进行X*X最大池化,可将卷积运算得到的结果减少为原来的1/(X*X),然后将池化运算的结果作为当前层得到的中间图像存储到缓存模块中,减少了中间图像的数据量,使用处理器片内数据传输带宽所需要消耗的时间远少于存储到内存中所需要消耗的时间。[0096] 在卷积运算之后,还可进行其他运算,例如BatchNormalization、Scale、Bias、reLu等运算,本说明书中将其他运算并入各逻辑模块中一次完成,也即,通过逻辑模块对加载至该逻辑模块中的参数值以及像素值进行卷积后,还可直接进行BatchNormalization、Scale、Bias、Maxpooling、reLu等运算,在各运算结束后,将最终运算结果作为当前层得到的中间图像存储在缓存模块中,而无需将每种运算的运算结果存储在缓存模块中之后,再将其取出进行下一种运算,也即,本说明书中通过逻辑模块进行各种运算时无需将每种运算的运算结果反复读写,避免了反复读写运算结果至缓存模块中导致带宽的消耗,并且可达到降低算法延迟的效果。其中,通过逻辑模块进行各种运算的具体运算方式可参考现有的运算方式,本说明书不再一一赘述。[0097] 在具体实现时,本说明书采用的是YOLOv3神经网络,处理器采用的是FPGA。根据该神经网络的模型结构,确定该神经网络处理的中间图像的最小尺寸为13*13,模型参数为3*3参数矩阵,因此,处理器中逻辑模块的数量可以是13*13*9(当然可以设置其他数量,在工程实现时主要以算力满载为主要目标),针对该神经网络的任一层的运算,中间图像存储在缓存模块中,模型参数的参数矩阵存储在内存中,将中间图像进行分割,得到若干个图像尺寸为13*13的子中间图像,针对每个子中间图像,将该子中间图像的各像素值并行加载到各逻辑模块中。[0098] 由于处理器采用的是XilinxZU7ev,极限算力(算力满载)为6.9Tops,模型参数以及中间图像所需要的带宽总需求为2x3456.0GB/s,而本方案中,模型参数存储在内存中,中间图像存储在缓存模块中,并且模型参数以及中间图像在加载到各逻辑模块中时均采用并行加载,因此,模型参数的带宽需求缩减至20.5GB/s,ZCU106板卡上可由PLDDR4(42GB/s)和PSDDR4(34GB/s)支撑。中间图像带宽需求缩减至384.9GB/s,ZCU106板卡上可由BRAM(1404.0GB/s)和URAM(864.0GB/s)支撑,在实现YOLOv3Tiny(128Gops)目标检测算法时,帧率为1617FPS,延迟为61.8微秒;实现YOLOv3(3.84Tops)目标检测算法时,帧率为54FPS,延迟为18.5毫秒。[0099] 而且,由于本方案中在对中间图像进行卷积后,还可以进行2*2最大池化运算,中间图像的最大缓存需求2,768,896字节缩减为原来的四分之一692,224字节,从而使中间图像存储对带宽的需求减少为原来的四分之一,也同时减少了对缓存模块空间的占用。[0100] 因此,本说明书中,图像传感器采集的图像数据和数据处理模型中各层得到的中间图像直接存储在处理器芯片上缓存模块中,模型参数存储在内存中,因此,只有模型参数需通过内存实时加载,而加载模型参数所需要的带宽仅为加载中间图像所需要的带宽的1/20,解决了算力资源满载时图像数据读写带宽瓶颈问题,即,解决了带宽受到限制导致算力无法满载的问题,并且,本说明书将模型参数加载到逻辑模块中时采用并行加载的方式,另外,本说明书中卷积运算以及池化等运算均在处理器内部的逻辑模块中处理,实现了最低处理延迟,从而使处理器的算力资源得到有效使用,达到了缩短通过数据处理模型对图像数据进行处理所消耗的时间的效果。[0101] 基于上述内容所述的数据处理方法,本说明书实施例还对应提供一种数据处理装置的结构示意图,如图5所示。[0102] 图5为本说明书实施例提供的一种数据处理装置的结构示意图,所述装置所在的处理器包括缓存模块以及若干个逻辑模块,所述装置包括:[0103] 获取模块501,用于所述装置所在的所述处理器获取图像传感器采集的图像数据存储在所述缓存模块中,通过数据处理模型对所述图像数据进行处理;[0104] 加载模块502,用于针对所述数据处理模型的各层,获取内存中存储的所述数据处理模型的该层的模型参数,将所述模型参数加载到各逻辑模块中;并且,从所述缓存模块中获取该层的上一层得到的中间图像,根据预先确定的各逻辑模块的信息,将所述中间图像进行分割,得到若干个子中间图像,将各子中间图像加载到各逻辑模块中;[0105] 运算模块503,用于通过各逻辑模块,对所述模型参数以及各子中间图像进行运算,得到运算结果作为该层得到的中间图像,并将该层得到的中间图像存储到所述缓存模块中。[0106] 由于在本说明书中,图像数据或者数据处理模型各层得到的中间图像存储在缓存中,而处理器的片内数据传输带宽远大于内存与处理器之间的数据传输带宽,因此,本说明书解决了数据传输带宽受限制的问题,从而使处理器的算力资源得到有效使用,达到了缩短通过数据处理模型对图像数据进行处理所消耗的时间的效果。[0107] 可选地,所述加载模块502具体用于,若该层为所述数据处理模型的第一层,则从所述缓存模块中获取所述图像数据。[0108] 可选地,所述装置还包括确定模块504;[0109] 所述确定模块504具体用于,根据所述数据处理模型的模型结构,确定所述数据处理模型中各层所需要处理的中间图像的尺寸以及各层的模型参数的信息;根据所述数据处理模型中各层所需要处理的中间图像的尺寸和/或各层的模型参数的信息,确定所述处理器中包含的逻辑模块的数量。[0110] 可选地,所述加载模块502具体用于,针对获取的所述模型参数的参数矩阵中的各参数值,根据该参数值在所述模型参数的参数矩阵中的位置,在各逻辑模块中,确定需要加载该参数值的各逻辑模块;将该参数值并行加载到确定出的各逻辑模块中。[0111] 可选地,所述加载模块502具体用于,根据各子中间图像在所述中间图像中的位置,依次将各子中间图像加载到各逻辑模块中。[0112] 可选地,所述加载模块502具体用于,针对各子中间图像,将该子中间图像加载到所述逻辑模块中时,执行以下操作:针对该子中间图像中的各像素值,根据该像素值在该子中间图像中的位置信息,在各逻辑模块中,确定需要加载该像素值的各逻辑模块;将该像素值并行加载到确定出的各逻辑模块中。[0113] 可选地,所述运算模块503具体用于,针对各子中间图像,通过各逻辑模块,对所述模型参数以及该子中间图像进行运算,得到该子中间图像的运算结果;将各子中间图像的运算结果作为所述该层得到的中间图像。[0114] 可选地,所述运算模块503具体用于,通过各逻辑模块,对加载到各逻辑模块中的所述模型参数以及该子中间图像进行并行运算,得到各逻辑模块关于该子中间图像的运算结果。[0115] 可选地,所述运算模块503具体用于,通过各逻辑模块,对所述模型参数以及该子中间图像进行卷积;将卷积后的结果进行池化运算,得到该子中间图像的运算结果。[0116] 本说明书实施例还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述内容所述的数据处理方法。其中,计算机可读存储介质包括上述所述的内存,实际上,计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。[0117] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。[0118] 本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。[0119] 本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。[0120] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。[0121] 以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

专利地区:北京

专利申请日期:2020-10-23

专利公开日期:2024-07-26

专利公告号:CN112308762B


以上信息来自国家知识产权局,如信息有误请联系我方更正!
电话咨询
读内容
搜本页
回顶部