CN116051345A - 图像数据处理方法、装置、计算机设备及可读存储介质 - Google Patents
图像数据处理方法、装置、计算机设备及可读存储介质 Download PDFInfo
- Publication number
- CN116051345A CN116051345A CN202211462652.8A CN202211462652A CN116051345A CN 116051345 A CN116051345 A CN 116051345A CN 202211462652 A CN202211462652 A CN 202211462652A CN 116051345 A CN116051345 A CN 116051345A
- Authority
- CN
- China
- Prior art keywords
- current
- data
- memory
- target
- address
- 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.)
- Pending
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
Abstract
本申请涉及一种图像数据处理方法、装置、计算机设备及可读存储介质。方法包括:获取目标图像对应的待进行卷积运算的目标特征图;从目标特征图中确定待缓存的当前行,并从目标数量的存储块中确定当前行对应的存储块;获取当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,将特征值序列存储至当前行对应的存储块中;从目标数量的存储块中读取待卷积数据,将待卷积数据存储到移位寄存器中;待卷积数据在目标特征图中所占的像素位置的数量为第二数量;利用卷积运算单元对移位寄存器中的数据进行卷积运算,得到目标特征图对应的运算结果。采用本申请能够提高卷积运算效率。
Description
技术领域
本申请涉及数据缓存技术领域,特别是涉及一种图像数据处理方法、装置、计算机设备及可读存储介质。
背景技术
随着卷积神经网络技术的发展,卷积神经网络的结构越来越复杂,训练参数和计算量不断增加,当前通用的处理器难以满足计算需求,于是采用FPGA(Field ProgrammableGate Array,现场可编程逻辑门阵列)来构建神经网络加速器,提升卷积运算单元的性能。FPGA上的数据缓存资源用于存储需要进行卷积的数据,由于FPGA上的数据缓存资源有限,利用FPGA的数据缓存机制对图像数据进行处理对提升性能至关重要。
传统技术中,FPGA的数据缓存机制,使得神经网络加速器在多步进的情况下,增加了卷积运算单元的运算次数,并使得卷积运算单元需要等待数据到来,从而导致卷积运算效率低。
发明内容
本申请提供一种图像数据处理方法、装置、计算机设备及计算机可读存储介质,能够提高卷积运算效率。
第一方面,本申请提供了一种图像数据处理方法,包括:
获取目标图像对应的待进行卷积运算的目标特征图;
从目标特征图中确定待缓存的当前行,并从目标数量的存储块中确定当前行对应的存储块;目标数量是基于卷积运算的卷积步长以及卷积核的尺寸确定的;
获取当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,将特征值序列存储至当前行对应的存储块中;
从目标数量的存储块中读取待卷积数据,将待卷积数据存储到移位寄存器中;待卷积数据在目标特征图中所占的像素位置的数量为第二数量;其中,第一数量与第二数量之间的关系满足缓存与卷积同步;
利用卷积运算单元对移位寄存器中的数据进行卷积运算,得到目标特征图对应的运算结果,以基于运算结果确定目标图像的图像处理结果。
第二方面,本申请还提供了一种图像数据处理装置,包括:
获取模块,用于获取目标图像对应的待进行卷积运算的目标特征图;
确定模块,用于从目标特征图中确定待缓存的当前行,并从目标数量的存储块中确定当前行对应的存储块;目标数量是基于卷积运算的卷积步长以及卷积核的尺寸确定的;
存储模块,用于获取当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,将特征值序列存储至当前行对应的存储块中;
读取模块,用于从目标数量的存储块中读取待卷积数据,将待卷积数据存储到移位寄存器中;待卷积数据在目标特征图中所占的像素位置的数量为第二数量;其中,第一数量与第二数量之间的关系满足缓存与卷积同步;
运算模块,用于利用卷积运算单元对移位寄存器中的数据进行卷积运算,得到目标特征图对应的运算结果,以基于运算结果确定目标图像的图像处理结果。
第三方面,本申请还提供了一种计算机设备,计算机设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述图像数据处理方法中的步骤。
第四方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述图像数据处理方法中的步骤。
第五方面,本申请还提供了一种计算机程序产品,计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现上述图像数据处理方法中的步骤。
上述图像数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品,由于第一数量与第二数量之间的关系满足缓存与卷积同步,使得存储块每次可以提供卷积运算单元进行一次运算所需的数据,卷积运算单元不需要等待,两个部分形成一条高效的流水线,从而提高了卷积运算的效率。
附图说明
图1A为本申请实施例提供的一种图像数据处理方法的应用环境图;
图1B为本申请实施例中计算机设备的FPGA的内部架构框图;
图2为本申请实施例提供的一种图像数据处理方法的流程示意图;
图3A为本申请实施例提供的一种特征图数据缓存的示意图;
图3B为本申请实施例提供的一种特征图数据读取的示意图;
图3C为本申请实施例提供的一种移位寄存器的移位过程的示意图;
图4A为本申请实施例提供的另一种特征图数据缓存的示意图;
图4B为本申请实施例提供的另一种特征图数据读取的示意图;
图4C为本申请实施例提供的另一种移位寄存器的移位过程的示意图;
图5为本申请实施例提供的一种图像数据处理装置的结构框图;
图6为本申请实施例提供的另一种图像数据处理方法的流程示意图;
图7为本申请实施例提供的一种计算机设备的内部结构图;
图8为本申请实施例提供的一种计算机可读存储介质的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的图像数据处理方法,可以应用于如图1A所示的应用环境中。其中,计算机设备102通过通信网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。
具体地,计算机设备102获取目标图像对应的待进行卷积运算的目标特征图;从目标特征图中确定待缓存的当前行,并从目标数量的存储块中确定当前行对应的存储块;目标数量是基于卷积运算的卷积步长以及卷积核的尺寸确定的;获取当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,将特征值序列存储至当前行对应的存储块中;从目标数量的存储块中读取待卷积数据,将待卷积数据存储到移位寄存器中;待卷积数据在目标特征图中所占的像素位置的数量为第二数量;其中,第一数量与第二数量之间的关系满足缓存与卷积同步;利用卷积运算单元对移位寄存器中的数据进行卷积运算,得到目标特征图对应的运算结果,以基于运算结果确定目标图像的图像处理结果。在得到目标特征图对应的运算结果后,计算机设备102可以将目标特征图对应的运算结果发送至服务器104,服务器104可以保存目标特征图对应的运算结果。
计算机设备102可以包括FPGA,FPGA用于实现神经网络加速器,神经网络加速器可以加速对图像的卷积处理过程,FPGA的内部架构如图1B所示,目标图像对应的目标特征图存储在外部存储器中,在运算控制器的控制指令下,在每个时钟周期,FPGA可以通过AIX4总线从外部存储器中获取目标特征图的特征值,并存储至输入缓存单元中,并从输入缓存单元中读取数据存储至移位寄存器,卷积运算单元对移位寄存器中的数据进行卷积运算,并将运算结果存储至输出缓存单元,FPGA可以通过AIX4总线将输出缓存单元中的运算结果存储至外部存储器,直到卷积完成,得到卷积运算结果。外部处理器可以基于卷积运算结果,得到图像识别结果。其中,控制指令包括时序控制信号以及读写信号,时序控制信号可以控制时钟周期的变换,读写信号控制存储块的读、写状态;输入缓存单元中包括多个存储块。
其中,计算机设备102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一些实施例中,如图2所示,提供了一种图像数据处理方法,以该方法应用于图1A中的计算机设备102为例进行说明,包括以下步骤:
步骤202,获取目标图像对应的待进行卷积运算的目标特征图。
其中,目标图像是指待进行图像处理的图像,图像处理包括图像识别、目标检测或图像分割中的至少一种。图像处理是基于卷积神经网络的,卷积神经网络可以包括一个或多个卷积层,多个是指至少两个;目标特征图可以是卷积神经网络中的任意一个卷积层的输入数据,一个特征值的存储大小可以是8bit。目标特征图可以为一个或多个。目标特征图还可以是目标图像的三个图像通道的特征图,例如可以是RGB图像对应有红、绿、蓝三个图像通道的特征图。
具体地,计算机设备在对目标图像进行特征提取后,计算机设备获取目标图像对应的至少一个特征图,得到待进行卷积运算的各目标特征图。针对各目标特征图,计算机设备可以为目标特征图分配存储块,用于缓存目标特征图的数据。
步骤204,从目标特征图中确定待缓存的当前行,并从目标数量的存储块中确定当前行对应的存储块;目标数量是基于卷积运算的卷积步长以及卷积核的尺寸确定的。
其中,待缓存的当前行是从目标特征图的各行中确定的,可以是目标特征图的任意一行,例如,可以将目标特征图的第0行作为待缓存的当前行。卷积步长和卷积核尺寸是预先设置的卷积神经网络的参数,例如,卷积步长为2,卷积核尺寸包括卷积核的长度和宽度,本申请中,卷积核的长度与宽度相同,例如卷积核尺寸可以是3×3,也可以是5×5,在卷积步长为2、卷积核尺寸为3×3的情况下,目标数量为2×3=6。
存储块是用于缓存特征图的存储资源,一个存储块可以是一个BRAM(BlockRandom Access Memory,随机块存储器),BRAM是FPGA上的一种片上缓存资源,BRAM的存储容量是固定的也可以根据需要设置,例如一个BRAM的存储容量为36KB,并且可以将一个36KB的BRAM当作两个独立的18KB的BRAM进行使用。BRAM具有宽度和深度,宽度是指BRAM中一个存储单元的存储大小,深度是指BRAM中存储单元的数量,存储单元是存储块中的最小存储单位,宽度和深度可以是预先设置的,但必须符合BRAM的存储容量的条件,例如,在特征值大小为8bit的情况下,可以将一个36KB的BRAM的宽度设置为16bit,则深度为2304,BRAM中共有2304个存储单元,一个存储单元可以存储16bit的数据,即可以存储2个特征值。
具体地,计算机设备可以按照行序号从小到大的顺序,依次从目标特征图的各行中确定待缓存的当前行,并基于当前行的行序号,从目标数量的存储块中确定当前行对应的存储块。其中,行序号用于表征特征图中像素点的行位置。
在一些实施例中,在从目标数量的存储块中确定当前行对应的存储块之前,计算机设备可以计算卷积步长与卷积核的宽度的乘积,得到目标数量,从而确定目标数量的存储块。例如,在卷积步长为2、卷积核尺寸为3×3即卷积核的宽度为3的情况下,目标数量为2×3=6,则需要6个存储块来对目标特征图进行缓存。
步骤206,获取当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,将特征值序列存储至当前行对应的存储块中。
其中,当前读像素位置是指当前时钟周期内,目标特征图中待缓存的特征值所在的像素位置;当前读像素位置之前的像素位置的特征值已完成缓存,之后的像素位置的特征值还未进行缓存。时钟周期是由FPGA的时钟信号控制产生的,FPGA的时钟信号可以是全局时钟,用于实现FPGA的时序逻辑。
第一数量是一个时钟周期内向目标数量的存储块中存入的特征值的数量,第一数量可以是预设的,也可以是根据卷积运算的卷积步长得到的,第一数量可以是卷积步长的平方,例如,当卷积步长为2时,第一数量可以为22=4。
特征值序列是当前行中的当前读像素位置起连续的第一数量像素位置处的特征值组成的序列,例如,如图3A所示,在目标特征图一中,当前行为第0行,当前读像素位置为当前行的第0列的像素位置,则在第一数量为4的情况下,特征值序列为00位置处的特征值,01位置处的特征值,02位置处的特征值,03位置处的特征值。
具体地,在当前时钟周期内,计算机设备确定当前行中的当前读像素位置后,获取当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,然后将特征值序列存储至当前行对应的存储块中。
在一些实施例中,在将特征值序列存储至当前行对应的存储块中之后,计算机设备可以更新当前读像素位置,从当前行中的当前读像素位置起,在后向像素位置中,将与当前读像素位置对应的列序号相差第一数量的像素位置,更新为当前读像素位置,例如,当前行为第0行,当前读像素位置为第0行第0列,则可以将第0行第4列更新为当前读像素位置,返回获取当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,将特征值序列存储至当前行对应的存储块中的步骤;直到完成当前行中所有像素位置处的特征值的缓存。其中,列序号用于表征特征图中像素点的列位置。
在一些实施例中,在完成当前行中所有像素位置处的特征值的缓存后,计算机设备可以将与当前行相邻的下一行作为当前行,返回从目标数量的存储块中确定当前行对应的存储块的步骤,直到遍历特征图的所有行为止。例如,目标特征图的大小为24×24,则目标特征图共有24行,可以将目标特征图的第0行作为当前行,依次缓存目标特征图的第0行中各像素位置处的特征值,在完成第0行的缓存后,将当前行更新为目标特征图的第1行,依次缓存目标特征图的第1行中各像素位置处的特征值,直到遍历目标特征图的24行。在向存储块的存储单元中缓存数据时,采用覆盖存储单元中存储的数据的方式缓存新的数据。
步骤208,从目标数量的存储块中读取待卷积数据,将待卷积数据存储到移位寄存器中;待卷积数据在目标特征图中所占的像素位置的数量为第二数量;其中,第一数量与第二数量之间的关系满足缓存与卷积同步。
其中,待卷积数据用于卷积运算单元进行卷积运算,第一数量是一个时钟周期内向目标数量的存储块中存入的特征值的数量。
移位寄存器是数字电路中的基础器件,在时钟信号的控制下,每个时钟周期内,将存储在移位寄存器中的数据,依次向右移动与卷积步长相同数量的列例如,如图3C所示,卷积步长为2,则每次将移位寄存器中的数据向右移动2列。移位寄存器的尺寸与卷积核的尺寸一致。
第一数量与第二数量之间的关系满足缓存与卷积同步是指:每个时钟周期内,向存储块存入第一数量的数据,并从存储块读取第二数量的数据存储至移位寄存器中,并且在将第二数量的数据存储至移位寄存器后,移位寄存器中的数据为该时钟周期中卷积窗口中的数据,每个时钟周期的卷积窗口不同。从而,每一次可以向卷积运算单元提供用于进行一次运算所需的数据,从而使得存储块提供数据的速率和卷积运算单元消耗数据的速率同步。
具体地,计算机设备从目标数量存储块中确定多个当前可读存储块,并从多个当前可读存储块中读取数据,从读取出的数据中确定待卷积数据,然后将待卷积数据存储到移位寄存器中。
步骤210,利用卷积运算单元对移位寄存器中的数据进行卷积运算,得到目标特征图对应的运算结果,以基于运算结果确定目标图像的图像处理结果。
具体地,由于移位寄存器中的数据是不断更新的,移位寄存器每更新一次,计算机设备则利用卷积运算单元,对卷积运算的卷积核和移位寄存器中的数据进行卷积处理,得到该次更新的卷积运算结果,在目标特征图中的所有数据均通过移位寄存器被卷积运算单元执行完卷积运算的情况下,将针对移位寄存器中的数据的各次卷积运算的结果作为目标特征图对应的运算结果。
在一些实施例中,在设备异常监测场景下,计算机设备可以从目标图像中识别目标对象,得到图像识别结果,若图像识别结果为存在目标对象,则判断为设备异常,实现设备异常告警。例如,计算机设备为智能网关,智能网关获取图像采集设备发送的设备图像,将设备图像确定为目标图像,利用基于FPGA实现的神经网络加速器可以对目标图像的特征图进行卷积运算,得到卷积运算结果,并基于卷积运算结果得到图像识别结果。
上述图像数据处理方法中,由于第一数量与第二数量之间的关系满足缓存与卷积同步,使得存储块每次可以提供卷积运算单元进行一次运算所需的数据,卷积运算单元不需要等待,两个部分形成一条高效的流水线,从而提高了卷积运算单元的卷积运算效率,而卷积运算单元是基于FPGA实现的神经网络加速器的核心部件,卷积运算单元的效率决定了神经网络加速器的能效比,故提高了神经网络加速器的能效比。
在一些实施例中,当前行对应的存储块包括第一存储块以及第二存储块;步骤206,包括:
基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址;第一存地址为第一存储块对应的地址,第二存地址为第二存储块对应的地址;
获取当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列;
将特征值序列中的前一半特征值存储到第一存地址指向的存储单元中,将特征值序列中的后一半特征值存储到第二存地址指向的存储单元中;
步骤210,包括:
利用卷积运算单元对移位寄存器中的数据进行卷积运算,并对第一计数器的当前计数值进行递增操作,返回基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址的步骤;直到当前行遍历完毕为止。
其中,当卷积步长为第一卷积步长时,当前行对应的存储块包括第一存储块以及第二存储块,第一存储块与第二存储块是从目标数量的存储块中确定的,用于存储当前行的数据,第一卷积步长为2。第一计数器是用于将当前行的数据存储至对应的存储块中的,第一计数器的初始值为0,第一计数器的最大值是根据目标特征图的长度L确定的,最大值为25%×L-1,计数值为非负整数,例如,目标特征图的尺寸为80×80,则目标特征图的长度为80,第一计数器的最大值为25%×80-1=19,则第一计数器的取值范围为[0,19]。第一计数器随着时钟周期的变换而递增1,例如,在第一个时钟周期,第一计数器的值为1,第二个时钟周期,第一计数器的值为2,第一计数器的当前计数值是指第一计数器在当前时钟周期的取值。
第一存地址是基于当前计数值确定的第一存储块对应的地址,用于指向第一存储块中的存储单元,第二存地址是基于当前计数值确定的第二存储块对应的地址,用于指向第二存储块中的存储单元。存储单元是存储块中的最小存储单位,以存储块为BRAM为例,当BRAM的宽度为16bit时,一个存储单元的存储大小为16bit。
例如,第一存地址指向第一存储块的第0个存储单元,第二存地址指向第二存储块的第1个存储单元,特征值序列为00,01,02,03,则将特征值序列中的前一半特征值00,01存储到第一存储块的第0个存储单元中,将特征值序列中的后一半特征值02,03存储到第二存储块的第1个存储单元中。
在一些实施例中,在当前时钟周期,完成将待缓存的特征值序列存储到第一存储块和第二存储块中之后,在到达下一时钟周期时,计算机设备可以对第一计数器的当前计数值进行递增1的操作,返回基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址的步骤;直到当前行遍历完毕为止。
在一些实施例中,在当前行遍历完毕的情况下,即第一计数器的当前计数值为第一计数器的取值范围中的最大值的情况下,进入下一个时钟周期后,计算机设备可以将第一计数器的当前计数值更新为0,并将当前行的下一行更新为当前行,重复对当前行进行缓存的步骤,直到遍历目标特征图中的所有行。
举例说明,如图3A所示,假设目标特征图的大小为24×24,卷积步长为2,则第一数量为4,可以用6个BRAM来对目标特征图进行缓存,第一计数器的取值范围为[0,5]。在第0个时钟周期,即0时刻,计算机设备将目标特征图的第0行确定为当前行,将BRAM1、BRAM2分别确定为当前行对应的第一存储块、第二存储块,此时第一计数器的当前计数值count=0,基于当前计数值将当前行的第0列确定为当前读像素位置,将第一存储块中第0个存储单元的地址确定为第一存地址,将第二存储块中第1个存储单元的地址确定为第二存地址,获取当前行中的当前读像素位置起连续的4个像素位置处的特征值,得到待缓存的特征值序列,即目标特征图中00,01,02,03位置处的特征值,将00,01位置处的特征值存储到第一存储块的第0个存储单元中,将02,03位置处的特征值存储到第二存储块的第1个存储单元中。在第1个时钟周期,即1时刻,此时第一计数器的当前计数值更新为count=1,基于当前计数值将当前行的第4列确定为当前读像素位置,将第一存储块中第2个存储单元的地址确定为第一存地址,将第二存储块中第3个存储单元的地址确定为第二存地址,获取当前行中的当前读像素位置起连续的4个像素位置处的特征值,得到待缓存的特征值序列,即目标特征图中04,05,06,07位置处的特征值,将04,05位置处的特征值存储到第一存储块的第2个存储单元中,将06,07位置处的特征值存储到第二存储块的第3个存储单元中,在时钟信号的控制下重复上述步骤,直到遍历当前行,将24个特征值全部存储至BRAM1、BRAM2中,此时第一计数器的当前计数值为count=5,当前计数值为第一计数器的取值范围中的最大值的情况下,在第6个时钟周期内,将第一计数器的当前计数值更新为0,计算机设备将目标特征图的第1行确定为当前行,将BRAM2、BRAM1分别确定为当前行对应的第一存储块、第二存储块,重复上述操作,直到遍历目标特征图中的所有行。
在一些实施例中,在移位寄存器中存储有数据的情况下,在每一个时钟周期内,计算机设备可以对当前行的像素位置处的特征图进行缓存,同时利用卷积运算单元对移位寄存器中的数据进行卷积运算,然后对第一计数器的当前计数值进行递增操作,返回基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址的步骤;直到当前行遍历完毕为止。举例说明,如图3C所示,从t时刻开始,移位寄存器中存储有目标特征图中00,01,10,11,20,21位置处的特征值,则计算机设备在t时刻向存储块中存入数据的同时,利用卷积运算单元对移位寄存器中的数据进行卷积运算,然后对第一计数器的当前计数值进行递增操作,返回基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址的步骤;直到当前行遍历完毕为止。
本实施例中,通过基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址,实现了每次向当前行对应的存储块中存入第一数量的像素位置处的特征值,为实现数据缓存与卷积运算的同步做了准备,从而提高了运算效率。
在一些实施例中,基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址,包括:
基于第一计数器的当前计数值以及第一数量确定当前读像素位置;当前读像素位置对应的列序号为第一数量的整数倍;
对第一计数器的当前计数值进行左移处理,得到左移后的计数值;
根据左移后的计数值以及地址间隔,确定第一地址偏移量以及第二地址偏移量;
在第一存储块的起始地址的基础上增加第一地址偏移量,得到第一存地址,在第二存储块的起始地址的基础上增加第二地址偏移量,得到第二存地址。
其中,左移处理是指在二进制数据的基础上向左平移一位的操作,例如,将8位二进制数据00000010左移1位,得到的数为00000100,实质上,左移后的数据大小为原数据大小的两倍。
地址间隔是指存储块中两个相邻存储单元的地址之间的差值,以宽度为16bit的BRAM为例,地址间隔为16bit。第一地址偏移量是根据左移后的计数值以及地址间隔得到的地址偏移量,用于表征第一存地址相对于第一存储块的首地址的偏移量。第二地址偏移量是根据左移后的计数值以及地址间隔得到的地址偏移量,用于表征第二存地址相对于第二存储块的首地址的偏移量。
具体地,计算机设备可以将第一计数器的当前计数值与第一数量相乘,得到当前行中的当前读像素位置对应的列序号,从而从当前行中确定当前读像素位置。计算机设备对第一计数器的当前计数值进行左移处理,得到左移后的计数值,将左移后的计数值与地址间隔相乘,得到第一地址偏移量,对左移后的计数值的最低位修改为1,即将左移后的计数值加1,并将该数据与地址间隔相乘,得到第二地址偏移量。然后计算机设备获取第一存储块的起始地址以及第二存储块的起始地址,在第一存储块的起始地址的基础上增加第一地址偏移量,得到第一存地址,在第二存储块的起始地址的基础上增加第二地址偏移量,得到第二存地址。
举例说明,第一计数器的当前计数值为1,第一数量为4,1×4=4,则当前读像素位置为当前行中第4列的像素位置,将当前计数值1转化为8位二进制数00000001,并将00000001左移一位后得到00000010,十进制表示为2,用左移后的计数值2与地址间隔相乘,得到第一地址偏移量;将左移后的计数值的最低位修改为1,得到00000011,十进制表示为3,用3与地址间隔相乘,得到第二地址偏移量。然后在第一存储块的起始地址的基础上增加第一地址偏移量,得到第一存地址,在第二存储块的起始地址的基础上增加第二地址偏移量,得到第二存地址。第一存地址指向第一存储块中的第2个存储单元,第二存地址指向第二存储块中的第3个存储单元。
本实施例中,通过使用第一计数器,利用第一计数器的当前计数值进行计算得到当前读像素位置、第一地址偏移量以及第二地址偏移量,从而确定第一存地址以及第二存地址,实现将当前行的数据交错存储到第一存储块以及第二存储块两个存储块当中,从而在对目标数量的存储块进行读取时,读取出的数据正好来自特征图中相同的两列,为卷积运算单元提供运算数据,提高了运算效率。
在一些实施例中,从目标数量的存储块中读取待卷积数据,包括:
基于第二计数器的当前计数值从目标数量的存储块中确定多个当前可读存储块;
按照存储地址递增的方向确定当前读地址,从多个当前可读存储块中读取当前读地址处的数据;
从读取出的当前读地址处的数据中确定待卷积数据。
其中,第二计数器是用于确定当前可读存储块的,第二计数器的初始值为0,第二计数器的最大值是根据目标特征图的长度L确定的,计数值数量为50%×L-1,计数值为非负整数,例如,目标特征图的尺寸为80×80,则目标特征图的长度为80,第二计数器的最大值为50%×80-1=39,则第二计数器的取值范围为[0,39]。第二计数器的当前计数值会随着时钟周期的变换而递增1。当前可读存储块是在当前时钟周期内可以读取数据的存储块,当前读地址指向的存储单元中存储的数据为在当前时钟周期所需要读取的数据。
具体地,计算机设备可以预先将目标数量的存储块分为多组,得到第一可读存储块组、第二可读存储块组以及第三可读存储块组,三个可读存储块组中的存储块数量相同。在目标数量的存储块中的数据量满足可读条件的情况下,计算机设备将第二计数器的当前计数值初始化为0,并将第一可读存储块组中的存储块作为初始的当前可读存储块,从当前可读存储块的起始地址开始读取,然后按照存储地址递增的方向确定当前读地址,从各当前可读存储块中读取当前读地址处的数据,每一次读取完成后,在到达下一时钟周期时,第二计数器的当前计数值增加1,直到遍历当前可读存储块中的所有存储地址,即第二计数器的当前计数值为第二计数器的取值范围中的最大值的情况下,在下一时钟周期,计算机设备将第二计数器的当前计数值更新为0,将第二可读存储块组中的存储块作为初始的当前可读存储块,重复执行上述步骤。其中,可读条件是指,目标数量的存储块中的第3个存储块中存储有预设数量的存储单元已经存储了数据,预设数量可以是预先设置的,例如,预设数量可以为1,可读条件即第3个存储块中存储有1个存储单元已经存储了数据。
举例说明,如图3B所示,6个BRAM分别为BRAM1、BRAM2、BRAM3、BRAM4、BRAM5、BRAM6,第一可读存储块组为BRAM1、BRAM2、BRAM3、BRAM4,第二可读存储块组为BRAM3、BRAM4、BRAM5、BRAM6,第三可读存储块组为BRAM5、BRAM6、BRAM1、BRAM2,在t时刻,6个BRAM中数据的数量满足可读条件,将第二计数器的当前计数值初始化为0,将BRAM1、BRAM2、BRAM3、BRAM4作为当前可读存储块,读取当前可读存储块中第0个存储地址指向的存储单元中的数据,即目标特征图中00,01,10,11,20,21,30,31位置处的特征值,在t+1时刻,第二计数器的当前计数值更新为1,读取当前可读存储块中第1个存储地址指向的存储单元中的数据,即目标特征图中12,13,02,03,32,33,22,23位置处的特征值,直到遍历当前可读存储块中的所有存储地址。
在一些实施例中,计算机设备需要从读取出的当前读地址处的数据中确定待卷积数据,读取出的数据包括8个,在第二计数器的当前计数值为偶数的情况下,将读取出的数据中的前6个数据确定为待卷积数据,在第二计数器的当前计数值为奇数的情况下,对读取出的数据进行重新排列,将读取出的数据中的第1、2个数据与第3、4个数据的位置进行交换,将读取出的数据中的第5、6个数据与第7、8个数据的位置进行交换,将重新排列后的数据中的前6个数据确定为待卷积数据,例如,如图3B所示,在t时刻,第二计数器的当前计数值为0,0为偶数,读取出的数据为目标特征图中00,01,10,11,20,21,30,31位置处的特征值,取这8个数据中的前6个数据,即目标特征图中00,01,10,11,20,21位置处的特征值作为待卷积的数据,并按照图3B中CYC_0的格式排列,送入移位寄存器中;在t+1时刻,第二计数器的当前计数值更新为1,1为奇数,读取出的数据为目标特征图中12,13,02,03,32,33,22,23位置处的特征值,将12,13位置处的特征值与02,03位置处的特征值互换位置,将32,33位置处的特征值与22,23位置处的特征值互换位置,得到重新排列后的数据,即目标特征图中02,03,12,13,22,23,32,33位置处的特征值,取02,03,12,13,22,23位置处的特征值作为待卷积的数据,并按照图3B中CYC_1的格式排列,送入移位寄存器中。
在一些实施例中,在时钟信号的控制下,计算机设备可以在同一时钟周期内,完成对特征图进行缓存、读取存储块中的数据以及进行卷积运算,从而形成一条图像数据处理的流水线。
本实施例中,通过利用第二计数器,从目标数量的存储块中确定多个当前可读存储块,从当前可读存储块中读取数据,并从读取出的当前读地址处的数据中确定待卷积数据,从而读取一次存储块能够得到满足一次卷积运算的数据,使得卷积运算单元不再等待,能够提高运算效率。
在一些实施例中,从目标数量的存储块中确定当前行对应的存储块,包括:
将当前行的行序号与目标数量进行取余运算,得到第一余数;
将存储块编号与第一余数一致的存储块确定为第一存储块;
在当前行的行序号为偶数的情况下,将与第一存储块编号相邻的下一存储块编号对应的存储块确定为第二存储块;第一存储块编号为第一存储块对应的存储块编号。
其中,第一余数是将当前行的行序号与目标数量进行取余运算得到的余数,第一存储块编号为第一存储块对应的存储块编号,例如,BRAM1为第0个存储块,在存储块编号为0。
具体地,计算机设备获取目标特征图中当前行的行序号,将当前行的行序号与目标数量进行取余运算,得到第一余数,将存储块编号与第一余数一致的存储块确定为第一存储块,在当前行的行序号为偶数的情况下,将与第一存储块编号相邻的下一存储块编号对应的存储块确定为第二存储块;在当前行的行序号为奇数的情况下,将与第一存储块编号相邻的上一存储块编号对应的存储块确定为第二存储块。例如,当前行的行序号为0的情况下,第一存储块为第0个BRAM,第二存储块为第1个BRAM;当前行的行序号为1的情况下,第一存储块为第1个BRAM,第二存储块为第0个BRAM。
本实施例中,通过基于当前行的行序号确定当前行对应的第一存储块以及第二存储块,从而实现了将当前行的特征值存入第一存储块与第二存储块。
在一些实施例中,卷积步长为第一卷积步长;图像数据处理方法还包括:
在卷积步长为第二卷积步长的情况下,将当前行的行序号与目标数量进行取余运算,得到第二余数;第一卷积步长大于第二卷积步长;
将目标数量的存储块中存储块编号与第二余数一致的存储块,确定为当前存储块;
针对当前行中的每个像素位置,基于像素位置对应的列序号以及当前存储块的起始地址,从当前存储块中确定像素位置对应的存地址。
其中,第一卷积步长大于第二卷积步长,例如,第一卷积步长为2,第二卷积步长为1。第二余数是将当前行的行序号与目标数量进行取余运算,得到的余数。
具体地,在卷积步长为第二卷积步长的情况下,计算机设备将当前行的行序号与目标数量进行取余运算,得到第二余数,将目标数量的存储块中存储块编号与第二余数一致的存储块,确定为当前存储块,针对当前行中的每个像素位置,按照当前行中像素位置对应的列序号从小到大的顺序,依次将像素位置对应的列序号与地址间隔相乘,得到地址偏移量,在当前存储块的起始地址的基础上加上地址偏移量,得到当前存储块中像素位置对应的存地址,然后将该像素位置处的特征值存储到该像素位置对应的存地址所指向的存储单元中。
举例说明,如图4A所示,卷积步长为1,则目标数量为1×3=3,当前行为目标特征图一中的第0行,则将0除以3得到的余数为0,将三个BRAM中的第0个BRAM即BRAM1确定为当前存储块,从当前行第0列的像素位置开始,将当前行第0列的特征值存入BRAM1中的第0个存储单元,将当前行第1列的特征值存入BRAM1中的第1个存储单元,直到遍历当前行中所有像素位置。
在一些实施例中,在遍历目标特征图中当前行中所有像素位置的情况下,计算机设备可以将当前行的下一行更新为当前行,基于当前行的行序号确定对应的当前存储块,并将当前行的数据存储至对应的当前存储块,直到遍历目标特征图中的所有行。
本实施例中,在卷积步长为第二卷积步长,通过基于当前行的行序号确定当前行对应的当前存储块,并按照当前行中像素位置对应的列序号依次将数据存储至当前存储块,实现了目标特征图的行缓存。
在一些实施例中,存储单元的存储大小为存储目标特征图中的单个特征值所需要占用的存储大小的两倍,目标特征图为多个;图像数据处理方法还包括:
在卷积步长为第二卷积步长的情况下,从各目标特征图中的两个目标特征图中获取当前像素位置对应的特征值,将当前像素位置的对应的特征值存储到当前存地址对应的存储单元中;
按照存储地址递增的方向确定当前读地址,从目标数量的存储块中读取当前读地址对应的存储单元中的数据,得到当前数据集合;
对当前数据集合中的数据进行拆分,得到各目标特征图分别对应的当前拆分数据;
将当前拆分数据存储到各目标特征图分别对应的移位寄存器中,利用卷积运算单元对各移位寄存器中的数据进行卷积运算,得到各目标特征图对应的运算结果。
其中,目标特征图可以是卷积神经网络中的任意一个卷积层的输入数据。存储单元的存储大小是存储块的宽度,可以是预先设置的,存储单元的存储大小为目标特征图中的单个特征值所需要占用的存储大小的两倍,例如,目标特征图中的单个特征值所需要占用的存储大小为8bit,存储单元的存储大小为16bit。
当前数据集合是从目标数量的存储块中,读取当前读地址对应的存储单元所得到的数据,当前拆分数据是对当前数据集合进行拆分得到的。
具体地,在卷积步长为第二卷积步长的情况下,计算机设备可以将两个目标特征图存储在目标数量的存储块中,从各目标特征图中的两个目标特征图中获取当前像素位置对应的特征值,将当前像素位置对应的特征值存储到当前存地址对应的存储单元中,例如,如图4A所示,两个目标特征图分别为目标特征图一以及目标特征图二,在当前像素位置为第0行第0列的情况下,可以将目标特征图一中的00位置处的特征值以及目标特征图二中的00位置处的特征值组合起来,存入BRAM1中的第0个存储单元中。
在一些实施例中,计算机设备可以基于第三计数器的当前计数值确定当前读地址,从目标数量的存储块中读取当前读地址对应的存储单元中的数据,得到当前数据集合。其中,第三计数器的初始值为0,第三计数器的最大值是根据目标特征图的长度L确定的,最大值为L-1。在当前时钟周期,计算机设备可以根据第三计数器的当前计数值与地址间隔,得到地址偏移量,根据当前存储块的起始地址与地址偏移量确定当前读地址。
在一些实施例中,计算机设备可以按照存储地址递增的方向确定当前读地址,从目标数量的存储块中读取当前读地址对应的存储单元中的数据,得到当前数据集合,然后对当前数据集合中的数据进行拆分,将当前数据集合中的每个数据按照8bit的数据长度进行拆分,得到各目标特征图分别对应的当前拆分数据。例如,如图4B所示,假设目标特征图一中00位置处的特征值为A1,10位置处的特征值为B1,20位置处的特征值为C1,目标特征图二中00位置处的特征值为A2,10位置处的特征值为B2,20位置处的特征值为C2,在t时刻,计算机设备可以从3个BRAM中读取出当前数据集合A1A2,B1B2,C1C2,其中A1A2的数据长度为16bit,前8bit来自目标特征图一,后8bit来自目标特征图二,将当前数据集合中的数据按照8bit的数据长度进行拆分并重新排列,分别得到目标特征图一对应的当前拆分数据A1,B1,C1,以及目标特征图二对应的当前拆分数据A2,B2,C2。
在一些实施例中,在每个时钟周期,计算机设备可以将当前时钟周期内的当前拆分数据存储到各目标特征图分别对应的移位寄存器中,对各移位寄存器中的数据进行卷积运算,得到各目标特征图对应的运算结果。例如,如图4C所示,在t时刻,计算机设备可以将目标特征图一的当前拆分数据即00,10,20位置处的特征值放入对应的移位寄存器中,并将目标特征图二的当前拆分数据即00,10,20位置处的特征值放入对应的移位寄存器中,对各移位寄存器中的数据进行卷积运算,得到目标特征图一以及目标特征图二分别对应的运算结果。
本实施例中,通过将目标图像的两个目标特征图存储至目标数量的存储块,减少了存储块的存储空间的浪费,降低了资源冗余。
在一些实施例中,如图6所示,提供了一种图像数据处理方法,以该方法应用于计算机设备为例进行说明,包括以下步骤:
步骤602,获取目标图像对应的待进行卷积运算的目标特征图,并根据卷积运算的卷积步长以及卷积核的尺寸,确定目标数量的存储块。
步骤604,从目标特征图中确定待缓存的当前行,并从目标数量的存储块中确定当前行对应的存储块。
步骤606,在卷积步长为1的情况下,在每个时钟周期,确定当前行对应的存储块中的当前存地址,从各目标特征图中的两个目标特征图中获取当前像素位置对应的特征值,将当前像素位置的特征值存储到当前存地址对应的存储单元中。
其中,存储单元的存储大小为存储目标特征图中的单个特征值所需要占用的存储大小的两倍,两个目标特征图中的当前像素位置的特征值存储在同一个存储地址对应的存储单元中。
步骤608,基于第三计数器的当前计数值确定当前读地址,从目标数量的存储块中读取当前读地址对应的存储单元中的数据,得到当前数据集合,对当前数据集合中的数据进行拆分,得到各目标特征图分别对应的当前拆分数据。
其中,第三计数器随着时钟周期的变换而递增1。
步骤610,将当前拆分数据存储到各目标特征图对应的移位寄存器中,利用卷积运算单元对各移位寄存器中的数据进行卷积运算,得到各目标特征图对应的运算结果。
步骤612,在卷积步长为2的情况下,在每个时钟周期,确定当前行对应的存储块中的当前存地址,获取当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,将特征值序列存储至当前行对应的存储块中。
其中,当前行对应的存储块包括第一存储块以及第二存储块,当前存地址包括第一存地址和第二存地址,第一存地址指想第一存储块中的存储单元,第二存储块指向第二存储块中的存储单元。当前读像素位置、第一存地址以及第二存地址是基于第一计数器的当前计数值确定的。
步骤614,基于第二计数器的当前计数值从目标数量的存储块中确定多个当前可读存储块,从各当前可读存储块中读取待卷积数据。
步骤616,将待卷积数据存储至移位寄存器中,利用卷积运算单元对移位寄存器中的数据进行卷积运算,得到目标特征图对应的运算结果。
步骤618,基于运算结果确定目标图像的图像处理结果。
本实施例中,在同一时钟周期内,计算机设备完成对目标特征图的缓存、从存储块中读取数据以及进行卷积运算,从而形成一条图像数据处理的流水线,并且在卷积步长为1或卷积步长为2的任意一种情况下,本申请中的图像数据处理方法均能够用于对目标特征图进行数据缓存与运算,且神经网络加速器可以使用FPGA上相同的片上缓存资源,实现了不同步长的缓存的兼容。
应该理解的是,虽然如上述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种图像数据处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的图像数据处理装置实施例中的具体限定可以参见上文中对于图像数据处理方法的限定,在此不再赘述。
在一些实施例中,如图5所示,提供了一种图像数据处理装置,包括:
获取模块502,用于获取目标图像对应的待进行卷积运算的目标特征图;
确定模块504,用于从目标特征图中确定待缓存的当前行,并从目标数量的存储块中确定当前行对应的存储块;目标数量是基于卷积运算的卷积步长以及卷积核的尺寸确定的;
存储模块506,用于获取当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,将特征值序列存储至当前行对应的存储块中;
读取模块508,用于从目标数量的存储块中读取待卷积数据,将待卷积数据存储到移位寄存器中;待卷积数据在目标特征图中所占的像素位置的数量为第二数量;其中,第一数量与第二数量之间的关系满足缓存与卷积同步。
运算模块510,用于利用卷积运算单元对移位寄存器中的数据进行卷积运算,得到目标特征图对应的运算结果,以基于运算结果确定目标图像的图像处理结果。
在一些实施例中,当前行对应的存储块包括第一存储块以及第二存储块;在获取当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,将特征值序列存储至当前行对应的存储块中的方面,存储模块506具体用于:基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址;第一存地址为第一存储块对应的地址,第二存地址为第二存储块对应的地址;获取当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列;将特征值序列中的前一半特征值存储到第一存地址指向的存储单元中,将特征值序列中的后一半特征值存储到第二存地址指向的存储单元中;
在利用卷积运算单元对移位寄存器中的数据进行卷积运算,得到目标特征图对应的运算结果方面,运算模块510具体用于:利用卷积运算单元对移位寄存器中的数据进行卷积运算,并对第一计数器的当前计数值进行递增操作,返回基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址的步骤;直到当前行遍历完毕为止。
在一些实施例中,在基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址方面,存储模块506具体用于:
基于第一计数器的当前计数值以及第一数量确定当前读像素位置;当前读像素位置对应的列序号为第一数量的整数倍;对第一计数器的当前计数值进行左移处理,得到左移后的计数值;根据左移后的计数值以及地址间隔,确定第一地址偏移量以及第二地址偏移量;在第一存储块的起始地址的基础上增加第一地址偏移量,得到第一存地址,在第二存储块的起始地址的基础上增加第二地址偏移量,得到第二存地址。
在一些实施例中,在从目标数量的存储块中读取待卷积数据方面,读取模块508具体用于:
基于第二计数器的当前计数值从目标数量的存储块中确定多个当前可读存储块;按照存储地址递增的方向确定当前读地址,从多个当前可读存储块中读取当前读地址处的数据;从读取出的当前读地址处的数据中确定待卷积数据。
在一些实施例中,在从目标数量的存储块中确定当前行对应的存储块方面,确定模块504具体用于:
将当前行的行序号与目标数量进行取余运算,得到第一余数;将存储块编号与第一余数一致的存储块确定为第一存储块;在当前行的行序号为偶数的情况下,将与第一存储块编号相邻的下一存储块编号对应的存储块确定为第二存储块;第一存储块编号为第一存储块对应的存储块编号。
在一些实施例中,卷积步长为第一卷积步长;图像数据处理装置还用于:在卷积步长为第二卷积步长的情况下,将当前行的行序号与目标数量进行取余运算,得到第二余数;第一卷积步长大于第二卷积步长;将目标数量的存储块中存储块编号与第二余数一致的存储块,确定为当前存储块;针对当前行中的每个像素位置,基于像素位置对应的列序号以及当前存储块的起始地址,从当前存储块中确定像素位置对应的存地址。
在一些实施例中,存储单元的存储大小为存储目标特征图中的单个特征值所需要占用的存储大小的两倍,目标特征图为多个;图像数据处理装置还用于:在卷积步长为第二卷积步长的情况下,从各目标特征图中的两个目标特征图中获取当前像素位置对应的特征值,将当前像素位置对应的特征值存储到当前存地址对应的存储单元中;按照存储地址递增的方向确定当前读地址,从目标数量的存储块中读取当前读地址对应的存储单元中的数据,得到当前数据集合;对当前数据集合中的数据进行拆分,得到各目标特征图分别对应的当前拆分数据;将当前拆分数据存储到各目标特征图分别对应的移位寄存器中,利用卷积运算单元对各移位寄存器中的数据进行卷积运算,得到各目标特征图对应的运算结果。
上述图像数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以以硬件形式内嵌于或独立于计算机设备中的处理器,也可以以软件形式存储于计算机设备中的存储器,以便于处理器调用执行以上各个模块对应的操作。
在一些实施例中,提供了一种计算机设备,该计算机设备可以是服务器或终端,其内部结构图可以如图7所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)、通信接口、输入装置以及显示单元。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、输入装置和显示单元通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储图像数据处理方法所涉及到的相关数据,例如,目标图像或目标特征图对应的运算结果。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现上述图像数据处理方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置。显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,计算机设备包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述图像数据处理方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质800,其上存储有计算机程序802,计算机程序802被处理器执行时实现上述图像数据处理方法中的步骤,其内部结构图可以如图8所示。
在一个实施例中,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现上述图像数据处理方法中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(FerroelectricRandom Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(StaticRandom Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种图像数据处理方法,其特征在于,包括:
获取目标图像对应的待进行卷积运算的目标特征图;
从所述目标特征图中确定待缓存的当前行,并从目标数量的存储块中确定所述当前行对应的存储块;所述目标数量是基于所述卷积运算的卷积步长以及卷积核的尺寸确定的;
获取所述当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,将所述特征值序列存储至所述当前行对应的存储块中;
从所述目标数量的存储块中读取待卷积数据,将所述待卷积数据存储到移位寄存器中;所述待卷积数据在所述目标特征图中所占的像素位置的数量为第二数量;其中,所述第一数量与所述第二数量之间的关系满足缓存与卷积同步;
利用卷积运算单元对所述移位寄存器中的数据进行卷积运算,得到所述目标特征图对应的运算结果,以基于所述运算结果确定所述目标图像的图像处理结果。
2.根据权利要求1所述的方法,其特征在于,所述当前行对应的存储块包括第一存储块以及第二存储块;
所述获取所述当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,将所述特征值序列存储至所述当前行对应的存储块中,包括:
基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址;所述第一存地址为所述第一存储块对应的地址,所述第二存地址为所述第二存储块对应的地址;
获取所述当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列;
将所述特征值序列中的前一半特征值存储到所述第一存地址指向的存储单元中,将所述特征值序列中的后一半特征值存储到所述第二存地址指向的存储单元中;
所述利用卷积运算单元对所述移位寄存器中的数据进行卷积运算,得到所述目标特征图对应的运算结果,包括:
利用卷积运算单元对所述移位寄存器中的数据进行卷积运算,并对所述第一计数器的当前计数值进行递增操作,返回所述基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址的步骤;直到所述当前行遍历完毕为止。
3.根据权利要求2所述的方法,其特征在于,所述基于第一计数器的当前计数值确定当前读像素位置、第一存地址以及第二存地址,包括:
基于第一计数器的当前计数值以及所述第一数量确定当前读像素位置;所述当前读像素位置对应的列序号为所述第一数量的整数倍;
对所述第一计数器的当前计数值进行左移处理,得到左移后的计数值;
根据所述左移后的计数值以及地址间隔,确定第一地址偏移量以及第二地址偏移量;
在所述第一存储块的起始地址的基础上增加所述第一地址偏移量,得到第一存地址,在所述第二存储块的起始地址的基础上增加所述第二地址偏移量,得到第二存地址。
4.根据权利要求2所述的方法,其特征在于,所述从所述目标数量的存储块中读取待卷积数据,包括:
基于第二计数器的当前计数值从所述目标数量的存储块中确定多个当前可读存储块;
按照存储地址递增的方向确定当前读地址,从所述多个当前可读存储块中读取所述当前读地址处的数据;
从读取出的所述当前读地址处的数据中确定待卷积数据。
5.根据权利要求1所述的方法,其特征在于,所述从目标数量的存储块中确定所述当前行对应的存储块,包括:
将所述当前行的行序号与所述目标数量进行取余运算,得到第一余数;
将存储块编号与所述第一余数一致的存储块确定为第一存储块;
在所述当前行的行序号为偶数的情况下,将与第一存储块编号相邻的下一存储块编号对应的存储块确定为第二存储块;所述第一存储块编号为所述第一存储块对应的存储块编号。
6.根据权利要求1所述的方法,其特征在于,所述卷积步长为第一卷积步长;所述方法还包括:
在所述卷积步长为第二卷积步长的情况下,将所述当前行的行序号与所述目标数量进行取余运算,得到第二余数;所述第一卷积步长大于所述第二卷积步长;
将所述目标数量的存储块中存储块编号与所述第二余数一致的存储块,确定为当前存储块;
针对所述当前行中的每个像素位置,基于所述像素位置对应的列序号以及所述当前存储块的起始地址,从所述当前存储块中确定所述像素位置对应的存地址。
7.根据权利要求6所述的方法,其特征在于,所述存储单元的存储大小为存储所述目标特征图中的单个特征值所需要占用的存储大小的两倍,所述目标特征图为多个;所述方法还包括:
在所述卷积步长为所述第二卷积步长的情况下,从各所述目标特征图中的两个目标特征图中获取当前像素位置对应的特征值,将所述当前像素位置对应的特征值存储到当前存地址对应的存储单元中;
按照存储地址递增的方向确定当前读地址,从所述目标数量的存储块中读取所述当前读地址对应的存储单元中的数据,得到当前数据集合;
对所述当前数据集合中的数据进行拆分,得到各所述目标特征图分别对应的当前拆分数据;
将所述当前拆分数据存储到各所述目标特征图分别对应的移位寄存器中,利用所述卷积运算单元对各所述移位寄存器中的数据进行卷积运算,得到各所述目标特征图对应的运算结果。
8.一种图像数据处理装置,其特征在于,包括:
获取模块,用于获取目标图像对应的待进行卷积运算的目标特征图;
确定模块,用于从所述目标特征图中确定待缓存的当前行,并从目标数量的存储块中确定所述当前行对应的存储块;所述目标数量是基于所述卷积运算的卷积步长以及卷积核的尺寸确定的;
存储模块,用于获取所述当前行中的当前读像素位置起连续的第一数量像素位置处的特征值,得到待缓存的特征值序列,将所述特征值序列存储至所述当前行对应的存储块中;
读取模块,用于从所述目标数量的存储块中读取待卷积数据,将所述待卷积数据存储到移位寄存器中;所述待卷积数据在所述目标特征图中所占的像素位置的数量为第二数量;其中,所述第一数量与所述第二数量之间的关系满足缓存与卷积同步;
运算模块,用于利用卷积运算单元对所述移位寄存器中的数据进行卷积运算,得到所述目标特征图对应的运算结果,以基于所述运算结果确定所述目标图像的图像处理结果。
9.一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211462652.8A CN116051345A (zh) | 2022-11-22 | 2022-11-22 | 图像数据处理方法、装置、计算机设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211462652.8A CN116051345A (zh) | 2022-11-22 | 2022-11-22 | 图像数据处理方法、装置、计算机设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116051345A true CN116051345A (zh) | 2023-05-02 |
Family
ID=86130211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211462652.8A Pending CN116051345A (zh) | 2022-11-22 | 2022-11-22 | 图像数据处理方法、装置、计算机设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116051345A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116886845A (zh) * | 2023-09-04 | 2023-10-13 | 湖北芯擎科技有限公司 | 自适应的参数更新方法、装置、计算机设备及存储介质 |
-
2022
- 2022-11-22 CN CN202211462652.8A patent/CN116051345A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116886845A (zh) * | 2023-09-04 | 2023-10-13 | 湖北芯擎科技有限公司 | 自适应的参数更新方法、装置、计算机设备及存储介质 |
CN116886845B (zh) * | 2023-09-04 | 2023-12-15 | 湖北芯擎科技有限公司 | 自适应的参数更新方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729996B (zh) | 零系数跳过卷积神经网络引擎 | |
US10346507B2 (en) | Symmetric block sparse matrix-vector multiplication | |
WO2022037257A1 (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
US11328395B2 (en) | Image processing method, image processing device, electronic equipment and computer readable storage medium | |
US20210373792A1 (en) | Method and tensor traversal engine for strided memory access during execution of neural networks | |
CN112967172A (zh) | 一种数据处理装置、方法、计算机设备及存储介质 | |
CN116051345A (zh) | 图像数据处理方法、装置、计算机设备及可读存储介质 | |
CN106909320B (zh) | 一种多维数据扩充传输的方法、装置以及系统 | |
CN114764615A (zh) | 卷积运算的实现方法、数据处理方法及装置 | |
CN116418985A (zh) | 录像文件存储方法、装置、计算机设备和存储介质 | |
CN114758209B (zh) | 卷积结果获取方法、装置、计算机设备及存储介质 | |
CN114022518B (zh) | 图像的光流信息获取方法、装置、设备和介质 | |
CN115424038A (zh) | 多尺度图像处理方法、系统、装置和计算机设备 | |
CN111931937B (zh) | 图像处理模型的梯度更新方法、装置及系统 | |
CN115456858B (zh) | 图像处理方法、装置、计算机设备及计算机可读存储介质 | |
CN117370488A (zh) | 数据处理方法、装置、电子设备和计算机可读存储介质 | |
CN114666008A (zh) | 数据传输方法、装置、计算机设备和存储介质 | |
CN118051168A (zh) | 数据读取方法、装置、计算机设备、存储介质和程序产品 | |
CN116483645A (zh) | 设备虚拟调试方法、装置、设备、存储介质和程序产品 | |
CN117077734A (zh) | 卷积输入变换方法、硬件加速器和加速器结构确定方法 | |
CN118153876A (zh) | 核电厂中燃料相关组件的倒换序列确定方法、装置和设备 | |
CN116527908A (zh) | 运动场估计方法、装置、计算机设备和存储介质 | |
CN116360730A (zh) | 乘法器的构建方法、装置、计算机设备和存储介质 | |
CN116149602A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN117952816A (zh) | 多视域图像生成装置和图形处理器 |
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 |