CN112862724B - 用于计算的方法、计算设备和计算机可读存储介质 - Google Patents

用于计算的方法、计算设备和计算机可读存储介质 Download PDF

Info

Publication number
CN112862724B
CN112862724B CN202110267725.7A CN202110267725A CN112862724B CN 112862724 B CN112862724 B CN 112862724B CN 202110267725 A CN202110267725 A CN 202110267725A CN 112862724 B CN112862724 B CN 112862724B
Authority
CN
China
Prior art keywords
pixel
pixel data
buffer
fill
pixel block
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
Application number
CN202110267725.7A
Other languages
English (en)
Other versions
CN112862724A (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bi Ren Technology Co ltd
Original Assignee
Shanghai Biren Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Biren Intelligent Technology Co Ltd filed Critical Shanghai Biren Intelligent Technology Co Ltd
Priority to CN202110267725.7A priority Critical patent/CN112862724B/zh
Publication of CN112862724A publication Critical patent/CN112862724A/zh
Priority to US17/691,134 priority patent/US20220295080A1/en
Application granted granted Critical
Publication of CN112862724B publication Critical patent/CN112862724B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/77Retouching; Inpainting; Scratch removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/90Dynamic range modification of images or parts thereof
    • G06T5/94Dynamic range modification of images or parts thereof based on local image properties, e.g. for local contrast enhancement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Image Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开涉及一种用于计算的方法、计算设备和计算机可读存储介质。该方法包括在高速缓存中确定像素块集合,像素块集合中的第一像素块包括与原始像素数据有关的第一填充设置的m*n的像素矩阵,m和n为正整数。然后,将确定的像素块集合存储到缓冲区中,以便基于第一像素块的缓冲区起始地址和与第二像素块相关联的地址偏移而从缓冲区读取第二像素块。第二像素块具有与原始像素数据有关第二填充设置,第一填充设置与第二填充设置在第一方向上相对于原始像素数据的偏移量相同。由此,避免了从高速缓存中对重复的像素数据的读取,降低了读取高速缓存的次数,降低了系统功耗,提高了系统性能。

Description

用于计算的方法、计算设备和计算机可读存储介质
技术领域
本公开的实施例总体上涉及人工智能领域,更具体地涉及一种用于计算的方法、计算设备和计算机可读存储介质。
背景技术
填充像素数据经常出现在基于人工智能的图像处理或卷积神经网络中。例如,在卷积神经网络中,一种卷积计算是将卷积核中的权重和对应的输入像素块相乘再相加进而生成对应输出特征的值。然而,在进行卷积计算时,由于往往会丢失图像周边的像素,因此会造成像素损失。特别是当应用许多连续的卷积层时,如果每层都存在因丢失图像周边的像素而造成的像素损失,最后累积的图像像素损失可能会很严重。
因此,在进行卷积前,通常会通过在输入的原始图像的边界周围添加额外的像素,即对原始图像进行填充(Paddings)。然后,再对经填充的填充像素数据进行卷积,从而通过增加图像的有效尺寸,以避免像素信息丢失。反向传播中的权重梯度计算通常也需要使用例如水平填充和垂直填充的各种组合来获得经填充后的像素数据。
发明内容
本公开提供了一种用于计算的方法、计算设备和计算机可读存储介质,能够提供一种用于卷积计算的高速缓存实现。
根据本公开的第一方面,提供了一种用于计算的方法。该方法包括:在高速缓存中确定像素块集合,像素块集合中的第一像素块包括与原始像素数据有关的第一填充设置的m*n的像素矩阵,m和n为正整数。然后,将像素块集合存储到缓冲区中,以便基于第一像素块的缓冲区起始地址和与第二像素块相关联的地址偏移而从缓冲区读取第二像素块。第二像素块具有与原始像素数据有关的第二填充设置,第一填充设置与第二填充设置在第一方向上相对于原始像素数据的偏移量相同。
根据本发明的第二方面,还提供了一种计算设备,该设备包括:至少一个处理单元;以及至少一个存储器,至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令,指令当由至少一个处理单元执行时,使得设备执行根据第一方面的方法的步骤。
根据本公开的第三方面,还提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,计算机程序被机器执行时执行本公开的第一方面的方法。
在一些实施例中,m行中的一行像素数据或n列中的一列像素数据占缓冲区的一个条目,条目具有对应的缓冲区地址。
在一些实施例中,像素块集合包括2个像素块,其中每个像素块包括8*8的像素矩阵。
在一些实施例中,第一方向为水平方向或垂直方向。
在一些实施例中,第一填充设置与第二填充设置不同。
在一些实施例中,当过滤器大小为3*3时,原始像素数据具有9种不同的填充设置,9种不同的填充设置包括第一填充设置和第二填充设置。
在一些实施例中,原始像素数据具有多种不同的填充设置,并且从缓冲区读取第二像素块包括:从缓冲区读取多个第二像素块,多个第二像素块分别具有相应的填充设置,相应的填充设置在第一方向上相对于原始像素数据的偏移量相同。
在一些实施例中,该方法还包括:基于与原始像素数据有关的过滤器大小,确定第一填充设置。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。
图1示意性示出了传统的用于卷积计算的方法的示意图;
图2示意性示出了传统的具有不同填充设置的像素块的示意图;
图3示意性示出了本公开的多个实施例能够在其中实现的计算设备的示意图;
图4示出了根据本公开的实施例的用于计算的方法的流程图;
图5示出了根据本公开的一些实施例的对像素块集合进行加载的示意图;以及
图6示出了根据本公开的另一些实施例的对像素块集合进行加载的示意图。
这些附图中,相同或相似参考符号用于表示相同或相似元素。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开内容的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如前文所述,在进行卷积前,通常会对原始图像进行填充(Padding)。在下文中,将分别介绍两种填充的方式。
在一个示例中,可以在输入的原始图像的边界周围添加额外像素以生成填充像素块,以对原始图像进行填充(Padding)。以下结合图1说明传统的用于卷积计算的方法。图1示意性示出了传统的用于卷积计算的方法100的示意图。
如图1所示,在对2x2像素的原始图像105(或称为原始像素数据)进行卷积前,首先对该2*2像素的原始图像105进行填充,其中该原始图像105由像素5、6、9和10组成。在一个示例中,从图像的角度看,像素5、6、9和10中的每个像素可以包括红绿蓝(RGB)三种颜色的信息。在另一个示例中,如果是物品,则例如当该物品为口红时,每个像素可以包括口红的颜色、口红的型号、口红的外观等信息。换句话说,每个像素都可以具有多个(例如,3个、几百个、或几千个)特征。
在图1所示的示例中,通过将在原始图像105外面填充一圈像素(即包括像素0、1、2、3、4、7、8、11、12、13、14和15),从而获得4*4像素的填充图像110。
之后,可以对上述填充图像110进行过滤。例如,通过使用过滤器大小(即卷积核的大小)为3x3(未示出)的过滤器进行卷积计算。在进行过滤时,上述4*4像素的填充图像110将被分成9个2*2像素,如图1所示。此外,每个2*2像素具有相应的权重(例如,权重0至权重8),以用于卷积计算,从而得到2*2像素的输出图像138(例如,包括5’、6’、9’和10’)。
更具体地,例如在对4x4像素的填充图像110上进行3x3卷积核(未示出)的计算,针对3x3卷积核,包括9个权重,即初始权重(weight0)到第八权重(weight 8)。由此,如图1所示,2x2像素120中的每个像素具有初始权重;2x2像素122中的每个像素具有第一权重;2x2像素124具有第二权重;2x2像素126中的每个像素具有第三权重;2x2像素128中的每个像素具有第四权重;2x2像素130中的每个像素具有第五权重;2x2像素132中的每个像素具有第六权重;2x2像素134中的每个像素具有第七权重;2x2像素136中的每个像素具有第八权重。由此,可以理解,在对原始图像(或原始像素数据)进行处理时,将需要从高速缓存加载对应于每个权重的2x2像素数据(或称2*2的像素矩阵)到缓冲区,以用于进行卷积计算。
在另一示例中,在反向传播的权重梯度计算中,仍然需要从高速缓存加载例如2*2的像素矩阵这样的9个权重的相应的像素数据,也就是说,也会需要使用例如水平填充或垂直填充的各种组合来获得经填充后的像素数据(或称像素块)。图2示意性的示出了可以用于这样的权重梯度计算的传统的具有不同填充设置(Padding Setting)的像素块的示意图。
在对图2进行介绍前,将首先简单介绍一下平铺(Tiling)和在平铺过程中使用的像素块(也可称为区块或瓦片(tile))的概念,以便于对图2的理解。平铺(Tiling)是一种常见的用于数据处理的技术。进行一次平铺处理即为处理一定数量的像素数据。例如,当进行图像处理时,硬件可以一次处理一个像素块的64个像素的像素数据。
如图2所示,原始像素数据210可以为一个像素块(也可称为区块或tile),其包括一个8*8的像素矩阵。在进行填充时,原始像素数据210的具有某种填充设置(+x,+y)的像素块,为以原始像素数据210所在的位置为原点,在水平方向上平移x,并且在垂直方向上平移y的得到。
例如,如图2所示,原始像素数据210的具有填充配置(+1,+1)的像素块220,为以原始像素数据210所在位置为原点,在水平方向上向左边平移1,并且在垂直方向向上平移1,而获得的具有这种填充配置的8*8的像素块。换句话说,在进行权重梯度计算的过程中,针对原始像素数据210,实际需要获取的是原始图像(例如,像素块210)的具有某种填充设置的像素块(例如像素块220)中包括的像素数据。这样,为了获得像素块220中的像素数据,不仅需要从原始像素数据210获得部分的像素数据(即图2中像素块210中的与像素块220重叠的部分的数据),还需要从原始像素数据210旁边的位置获取一些像素数据,即原始像素数据210上面一行和左边一列的部分像素数据。
在另一个示例中,原始像素数据210的具有填充配置(-1,-1)的像素块230,为以原始像素数据210所在位置为原点,在水平方向上向右边平移1(即向左平移-1),并且在垂直方向向下平移1,而获得的具有这种填充配置的8*8的像素块。换句话说,在进行权重梯度计算的过程中,针对原始像素数据210,实际需要获取的是原始图像(例如,像素块210)的具有某种填充设置的像素块(例如像素块230)中包括的像素数据。这样,为了获得像素块220中的像素数据,不仅需要从原始像素数据210获得部分的像素数据(即图2中像素块210中的与像素块230重叠的部分的数据),还需要从原始像素数据210旁边的位置获取一些像素数据,即原始像素数据210下面一行和右边一列的部分像素数据。
由此,本公开的发明人意识到,当需要从缓冲区获取如图2所示具有不同的填充设置的像素块时,需要分别例如从高速缓存中读取/分别加载这些具有不同填充设置的像素块(例如,像素块220和230)。然而,这样的方式将造成对某些像素数据的重复的读取,从而造成在读取时的资源的浪费。
在一个示例中,如图2所示,像素块220和230具有部分重叠的像素数据。在另一个示例中,2x2像素120和2x2像素126以及2x2像素132中具有重叠的像素数据。如果分别对这样的像素块进行加载,将造成对系统资源的浪费。
为此,针对上述提及的所需解决的问题,本公开的实施方式提供了一种用于计算的方法,旨在至少部分地解决上述问题。在本公开的方案中,首先在高速缓存中确定像素块集合,像素块集合中的第一像素块包括与原始像素数据有关的第一填充设置的m*n的像素矩阵,m和n为正整数。然后,将像素块集合存储到缓冲区(例如,目标缓冲区)中,以便基于第一像素块的缓冲区起始地址和与第二像素块相关联的地址偏移而从缓冲区读取第二像素块,其中,第二像素块具有与原始像素数据有关的第二填充设置,第一填充设置与第二填充设置在第一方向上相对于原始像素数据的偏移量相同。由此,可以减少对需要加载的经填充的像素块中包括的重复的像素数据进行加载的次数,从而降低系统功耗,提高系统性能。
下面将结合图3至图5来具体描述本公开的实施方式。
图3示意性示出了本公开的多个实施例能够在其中实现的计算设备300的示意图。如图3所示,计算设备300至少包括处理器310、高速缓存320和缓冲区330。在一个示例中,计算设备300例如可以用于芯片。在另一个示例中,计算设备300可以用于图像处理单元(GPU)加速的神经网络计算。备选地,计算设备300可以用于向量处理器,或者其他类型的数据计算单元,或用于人工智能的其他计算单元。
处理器310用于对从高速缓存320加载的像素块进行处理。在一个实施例中,处理器310可以为通用矩阵乘单元(GEMM)。在其他实施例中,处理器310可以为其他类型的处理器,本公开的范围在此方面不受限制。
高速缓存320用于缓存数据。在一个示例中高速缓存320可以缓存有用于卷积的原始图像或原始像素数据。在一个示例中,高速缓存320可以包括多个高速缓存线,其中每条高速缓存线可以具有一个虚拟地址,从而使得处理器310可以使用该虚拟地址从高速缓存线加载数据。
缓冲区330可以用于存储数据,例如存储像素块,该像素块可以为由原始像素数据组成的像素块,或者具有某种填充配置的像素块。例如,计算设备300中的处理器310可以从高速缓存320中读取/加载(一个或多个)像素块,并且将(一个或多个)像素块存储到缓冲区330中,以便处理器310对像素块进行处理。
下面将参考图3并且结合图4和图5介绍根据本公开的实施例的用于计算的方法。图4示出了根据本公开的实施例的用于计算的方法的流程图。应当理解,方法400可以包括未示出的附加组成部分、动作和/或可以省略所示出的组成部分、动作,本公开的范围在此方面不受限制。图5示出了根据本公开的一些实施例的对像素块集合进行加载的示意图。应当理解,图5仅示出了对像素块集合进行加载的示意图的根据本公开的一种实施例的示例。虽然图5仅示出了加载包括两个像素块的像素块集合,然而,可以理解像素块集合可以包括任意数目的像素块,本公开的范围在此方面不受限制。
如图4所示,在步骤410,计算设备300在高速缓存320中确定像素块集合。像素块集合中的像素块包括与原始像素数据有关的第一填充设置的m*n的像素矩阵,m和n为正整数。在一个示例中,m和n可以为8。可以理解,m和n可以为其他的正整数,本公开的保护范围在此方面不受限制。
下面将结合图5对上述图4的步骤410进行是详细说明。在一些实施例中,如图5所示,计算设备300例如在高速缓存320中确定像素块集合505,其由8*16的像素矩阵组成。例如该像素块集合505可以包括像素块520和像素块530。像素块520包括与原始像素数据510有关的第一填充设置的8*8的像素矩阵,该第一填充设置为(+1,+1)。换句话说,像素块520为以原始像素数据510所在位置为原点,在水平方向上向左边平移1,并且在垂直向上平移1后形成的8*8的像素矩阵。或者也可以理解为,像素块520为以原始像素数据510的8*8像素矩阵中的64个像素中的左上角的像素所在位置为原点,在水平方向上向左边平移1,并且在垂直向上平移1后,再以这个位置为矩阵的左上角的原点所形成的8*8的像素矩阵,如图所示。此外,在一个示例中,像素块530为与像素块520在垂直方向上相邻的两个8*8的像素矩阵,如图5所示。
在一些实施例中,上文所述的第一填充设置(+1,+1)中的第一个+1表示以原始像素数据510为原点在水平方向上平移的距离为1(即,为是1个像素数据点,或称为1个像素,即8*8的原始像素数据510中的64个像素数据点中的一个像素)。类似地,第一填充设置(+1,+1)中的第二个+1表示以原始像素数据510为原点在垂直方向上平移的距离为1。
在另一些实施例中,由于在上述平移后需要进行填充,因此所填充的数据可以为8*8的像素矩阵组成的原始像素数据510周围的数据。例如,当将要被处理的数据为图像时,该图像可以包括多个原始像素数据510,而组成该图像的这些原始像素数据510可以被连续地存储在高速缓存320中(例如,可以被存储在高速缓存320的不同的高速缓存线中或存储在相同的高速缓存线中)。这样,填充的数据将为图像的原始像素数据510的周围的像素数据。在一些示例中,当要被处理的原始像素数据510为在该图像的边界处的像素数据时(图5未示出),可能导致该原始像素数据510周围没有数据可以进行填充。在这种情况下,可以通过填充零值的方式获得填充的像素数据。
在一些实施例中,可以基于过滤器的大小确定上述第一填充设置。例如,针对图5所示的示例,过滤器的大小可以为3*3。也就是说,当过滤器的大小为3*3时,第一填充设置可以为(+1,+1)。在另一些示例中,当过滤器大小为5*5时,第一填充设置则可以为(+2,+2)。备选地,当过滤器大小为7*7时,第一填充设置则可以为(+3,+3)。过滤器也可以具有其他的大小,本公开的保护范围在此方面不受限制。
图6示出了根据本公开的另一些实施例的对像素块集合进行加载的示意图。应当理解,图6仅示出了对像素块集合进行加载的示意图的根据本公开的一种实施例的示例。虽然图6仅示出了加载包括两个像素块的像素块集合,然而,可以理解像素块集合可以包括任意数目的像素块,本公开的范围在此方面不受限制。
如图6所示,当过滤器大小为5*5时,计算设备300例如在高速缓存320中确定像素块集合605,其由8*16的像素矩阵组成。例如该像素块集合605可以包括像素块620和像素块630。像素块620包括与原始像素数据610有关的第一填充设置的8*8的像素矩阵,该第一填充设置为(+2,+2)。换句话说,像素块620为以原始像素数据610所在位置为原点,在水平方向上向左边平移2,并且再垂直向上平移2后形成的8*8的像素矩阵。如图6所示,像素块630为与像素块620在垂直方向上相邻的两个8*8的像素矩阵。
再重新回到图4和图5。将继续参考图4和图5对本公开的一些实施例进行介绍。在步骤420,计算设备300将确定的像素块集合存储到缓冲区330,以便基于像素块520的缓冲区330起始地址和与第二像素块相关联的地址偏移而从缓冲区330读取该第二像素块。
上述步骤420中的第二像素块具有与原始像素数据510有关的第二填充设置。例如该第二填充设置可以为(+1,+1)、(+1,0)或(+1,-1)。也就是说,第二填充设置可以与第一填充设置相同或者不同。
此外,像素集合505中的像素块520所具有的第一填充设置与该第二填充设置在一个方向上相对于原始像素数据510的偏移量相同。在一些实施例中,当第一填充设置为(+1,+1)时,第二填充设置相应地可以为(+1,+1)、(+1,0)或(+1,-1)。由此,第一填充设置与第二填充设置在水平方向上具有相同的偏移量,即其在水平方向上的偏移量均为+1。
可以理解,也可以在水平方向上平移其他的数量,本公开的保护范围在此方面不受限制。例如,当第一填充设置为(0,+1)时,第二填充设置相应地可以为(0,+1)、(0,0)或(0,-1)。由此,第一填充设置与第二填充设置在水平方向上具有相同的偏移量,即其在水平方向上的偏移量均为0。
在另一些实施例中,当过滤器大小为5*5时,像素集合605中的像素块620所具有的第一填充设置与该第二填充设置在一个方向上相对于原始像素数据610的偏移量相同。在一些实施例中,当第一填充设置为(+2,+2)时,第二填充设置相应地可以为(+2,+2)、(+2,+1)、(+2,0)、(+2,-1)、(+2,-2)。由此,在5*5过滤器大小的情况下,第一填充设置与第二填充设置在水平方向上具有相同的偏移量,即其在水平方向上的偏移量均为+2。可以理解,根据过滤器的大小不同,也可以在水平方向上平移其他的数量,本公开的保护范围在此方面不受限制。
在一些实施例中,像素块520的8行像素数据中的1行像素数据或8列中的一列像素数据占缓冲区330的一个条目(Entry)。在一个示例中,当像素块中的一行包括8个像素时,在缓冲区330的条目中存储8个像素的数据。在另一个示例中,一个像素可以具有p个通道(Channel)时,并且像素块中的一行包括8个这样的像素时,则在例如目标缓冲区330的一个条目中将存储8行*64个通道的数据。也就是说,这8行*64个通道的像素数据将占据目标缓冲区330的一个条目。
在另一些实施例中,一个像素块将占据8个这样的连续的条目;而组成像素块集合的例如两个像素块将占据16个连续的条目。每个条目具有对应的缓冲区330的地址。由此,例如为了读取具有填充设置(+1,-1)的像素块,计算设备300可以将像素块520的缓冲区330起始地址(即起始条目的地址)+2作为缓冲区330起始地址进行读取。下面将介绍一些更具体的实施例。
在一些实施例中,当第二填充设置为(+1,+1)时,其对应的第二像素块为原始像素数据510向左平移一个单位(或称为一个像素数据)并向上平移一个单位后得到的8*8的像素矩阵。由此,因为在步骤410时已经从高速缓存320中将像素块520和530读取到了缓冲区330,所以可以基于像素块520的缓冲区330起始地址和与第二像素块(即原始像素数据510向左平移一个单位并向上平移一个单位后得到的8*8的像素矩阵)相关联的地址偏移(即,偏移0)而从缓冲区330读取该第二像素块,也就是从像素块520的第一行像素数据开始读取8行的像素数据,即为第二像素块。也就是说,为了读取针对原始像素数据510的具有填充设置(+1,+1)的第二像素块,计算设备300可以将像素块520的缓冲区330起始地址作为缓冲区330起始地址进行读取,即由此开始连续读取8行像素数据,也就是8个连续条目中的像素数据。
在另一些实施例中,当第二填充设置为(+1,0)时,其对应的第二像素块为原始像素数据510向左平移一个单位后得到的8*8的像素矩阵。由此,因为在步骤410时已经从高速缓存320中将像素块520和530读取到了缓冲区330,所以可以基于像素块520的缓冲区330起始地址和与第二像素块(即原始像素数据510向左平移一个单位后得到的8*8的像素矩阵)相关联的地址偏移(即,偏移+1)而从缓冲区330读取该第二像素块(即第二填充设置为(+1,0)的第二像素块),即从像素块520的第二行像素数据开始读取8行的像素数据,即为第二像素块。也就是说,为了读取具有填充设置(+1,0)的像素块,计算设备300可以将像素块520的在缓冲区330中的起始地址+1作为缓冲区330起始地址进行读取,即由此开始连续读取8行像素数据,也就是8个连续条目中的像素数据。
类似地,当第二填充设置为(+1,-1)时,其对应的第二像素块为原始像素数据510向左平移一个单位并且向下平移一个单位后得到的8*8的像素矩阵。由此,可以基于像素块520的缓冲区330起始地址和与第二像素块(即原始像素数据510向左平移一个单位并向下平移一个单位后得到的8*8的像素矩阵)相关联的地址偏移(即,偏移2)而从缓冲区330读取该第二像素块,也就是在缓冲区330中从像素块520的第三行像素数据开始读取8行的像素数据,即为第二像素块。也就是说,为了读取具有填充设置(+1,-1)的像素块,计算设备300可以将像素块520的缓冲区330起始地址+2作为缓冲区330起始地址进行读取,即由此开始连续读取8行像素数据,也就是8个连续条目中的像素数据。
由此,通过从高速缓存320仅读取一个像素块集合(例如包括像素块520和530的像素块集合505)到缓冲区330,就可以获得具有3种或更多种不同的填充设置的原始像素数据(例如原始图像数据510)的像素块,由此避免了从高速缓存320中对重复的像素数据的读取,降低了读取次数,降低了系统功耗,提高了系统性能。
附加地,在一些实施例中,当过滤器的大小为3*3时,可以具有9种不同的第二填充设置,其分别为(+1,+1)、(+1,0)、(+1,-1)、(0,+1)、(0,0)、(0,-1)、(-1,+1)、(-1,0)和(-1,-1)。由此,在进行卷积计算前,为了获得上述9种不同填充设置的像素块,可以通过从高速缓存320中分别将相应的三个像素块集合读取到缓冲区330而实现对具有上述9种不同的填充设置像素数据的处理,而不再需要分别针对9种填充设置从高速缓存320分别读取9个像素块,从而避免了对重复的像素数据的读取,降低了读取底数,从而降低了系统功耗,提高了系统性能。
如上所述,在一些实施例中,当过滤器大小为5*5时,第一填充设置可以为(+2,+2)。相应地,第二填充设置可以为:(+2,+2)、(+2,+1)、(+2,+0)、(+2,-1)、(+2,-2)。由此,为了读取具有填充设置(+2,+2)的像素块,计算设备300可以将具有第一填充设置的像素块的缓冲区330的起始地址作为缓冲区330起始地址进行读取;为了读取具有填充设置(+2,+1)的像素块,计算设备300可以将具有第一填充设置的像素块的缓冲区330起始地址+1作为缓冲区330起始地址;为了读取具有填充设置(+2,0)的像素块,计算设备300可以将具有第一填充设置的像素块的缓冲区330起始地址+2作为缓冲区330起始地址进行读取;为了读取具有填充设置(+2,-1)的像素块,计算设备300可以将具有第一填充设置的像素块的缓冲区330起始地址+3作为缓冲区330起始地址进行读取;为了读取具有填充设置(+2,-2)的像素块,计算设备300可以将具有第一填充设置的像素块的缓冲区330起始地址+4作为缓冲区330起始地址进行读取。
以此方式,通过从高速缓存320读取一个像素块集合(例如包括像素块620和630的像素块集合605)到缓冲区330,就可以从缓冲区330获得具有5种填充设置的原始像素数据(例如原始图像数据610)的像素块,由此避免了从高速缓存320中对重复的像素数据的读取的同时,降低了系统功耗,提高了系统性能。
可以理解,虽然在上文中介绍了第一填充设置与所述第二填充设置在水平方向上相对于原始像素数据的偏移量相同。在另一些实施例中,第一填充设置与所述第二填充设置可以在垂直方向上相对于原始像素数据的偏移量相同。本公开的保护范围在此方面不受限制。
在一个示例中,当第一填充设置为(+1,+1)时,第二填充设置相应地可以为(+1,+1)、(0,+1)或(-1,+1)。由此,第一填充设置与第二填充设置在垂直方向上具有相同的偏移量,即其在垂直方向上均为向上偏移+1。这样,像素集合中的像素块所具有的第一填充设置与该第二填充设置在垂直方向上相对于原始像素数据的偏移量相同。在另一些示例中,也可以在垂直方向上具有其他不同的偏移量,本公开的保护范围在此方面不受限制。
由此,通过从高速缓存320仅读取一个像素块集合到缓冲区330,其中该像素块集合例如可以为如图5所示的像素块520和在水平方向上与像素块520相邻的另一个8*8的像素块(未示出)。当把这样的像素块集合读取到缓冲区330后,就可以从缓冲区330获得具有3种不同的填充设置(即,填充设置为(+1,+1)、(0,+1)或(-1,
+1))的与原始像素数据(例如原始图像数据510)有关的第二像素块,由此避免了从高速缓存320中对重复的像素数据的读取,降低了系统功耗,提高了系统性能。
应当理解,方法400可被实现为计算机软件程序,其可以被有形地包含于机器可读介质,例如存储单元。在一些实施例中,计算机程序的部分或者全部可以经由ROM和/或通信单元而被载入和/或安装到计算设备300上。当计算机程序被加载到RAM并由处理器执行时,可以执行上文描述的方,400的一个或多个动作。
本公开可以是方法、计算设备、计算机存储介质和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (12)

1.一种用于计算的方法,包括:
在高速缓存中确定像素块集合,所述像素块集合中的第一像素块包括与原始像素数据有关的第一填充设置的m*n的像素矩阵,所述m和n为正整数;以及
将所述像素块集合存储到缓冲区中,以便基于所述第一像素块的缓冲区起始地址和第二像素块相对于所述起始地址的地址偏移而从所述缓冲区读取所述第二像素块,
其中,所述第二像素块具有与所述原始像素数据有关的第二填充设置,所述第一填充设置与所述第二填充设置在第一方向上相对于所述原始像素数据的偏移量相同。
2.根据权利要求1所述的方法,其中所述m行中的一行像素数据或n列中的一列像素数据占所述缓冲区的一个条目,所述条目具有对应的缓冲区地址。
3.根据权利要求1所述的方法,其中所述像素块集合包括2个像素块,其中每个像素块包括8*8的像素矩阵。
4.根据权利要求1所述的方法,其中所述第一方向为水平方向或垂直方向。
5.根据权利要求1所述的方法,其中所述第一填充设置与所述第二填充设置不同。
6.根据权利要求1所述的方法,其中当过滤器大小为3*3时,所述原始像素数据具有9种不同的填充设置,所述9种不同的填充设置包括所述第一填充设置和所述第二填充设置。
7.根据权利要求1所述的方法,其中所述原始像素数据具有多种不同的填充设置,并且从所述缓冲区读取所述第二像素块包括:
从所述缓冲区读取多个第二像素块,所述多个第二像素块分别具有相应的填充设置,所述相应的填充设置在所述第一方向上相对于所述原始像素数据的偏移量相同。
8.根据权利要求1所述的方法,还包括:
基于与所述原始像素数据有关的过滤器大小,确定所述第一填充设置。
9.一种计算设备,包括:
至少一个处理单元;以及
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述计算设备执行权利要求1至8任一项所述的方法。
10.根据权利要求9所述的计算设备,其中所述计算设备包括向量处理器。
11.根据权利要求9所述的计算设备,其中所述计算设备用于人工智能。
12.一种存储有计算机指令的计算机可读存储介质,其中所述计算机指令用于使机器执行根据权利要求1-8中任一项所述的方法。
CN202110267725.7A 2021-03-12 2021-03-12 用于计算的方法、计算设备和计算机可读存储介质 Active CN112862724B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110267725.7A CN112862724B (zh) 2021-03-12 2021-03-12 用于计算的方法、计算设备和计算机可读存储介质
US17/691,134 US20220295080A1 (en) 2021-03-12 2022-03-10 Method, computing device and computer readable storage medium for computing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110267725.7A CN112862724B (zh) 2021-03-12 2021-03-12 用于计算的方法、计算设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN112862724A CN112862724A (zh) 2021-05-28
CN112862724B true CN112862724B (zh) 2022-09-09

Family

ID=75994175

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110267725.7A Active CN112862724B (zh) 2021-03-12 2021-03-12 用于计算的方法、计算设备和计算机可读存储介质

Country Status (2)

Country Link
US (1) US20220295080A1 (zh)
CN (1) CN112862724B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1618084A (zh) * 2002-01-29 2005-05-18 夏普株式会社 图像处理装置、图像处理方法、图像处理程序、记录媒体
TW201042576A (en) * 2009-05-19 2010-12-01 Ipanel Technologies Ltd Method and device for obtaining deviation position of picture
CN111078920A (zh) * 2019-11-22 2020-04-28 北京云宽志业网络技术有限公司 数据处理方法、装置、设备和计算机可读存储介质
US10635955B1 (en) * 2019-05-31 2020-04-28 Kyocera Document Solutions Inc. Image forming method, apparatus, and program separating addresses for storing color tone data by shifting the relative address using an offset address
CN111179199A (zh) * 2019-12-31 2020-05-19 展讯通信(上海)有限公司 图像处理方法、装置及可读存储介质
WO2020237460A1 (zh) * 2019-05-27 2020-12-03 华为技术有限公司 一种图形处理方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5224210A (en) * 1989-07-28 1993-06-29 Hewlett-Packard Company Method and apparatus for graphics pipeline context switching in a multi-tasking windows system
AU634354B2 (en) * 1990-08-31 1993-02-18 Sun Microsystems, Inc. Method and apparatus for predictive caching
US6011565A (en) * 1998-04-09 2000-01-04 S3 Incorporated Non-stalled requesting texture cache
JP4978529B2 (ja) * 2008-03-25 2012-07-18 セイコーエプソン株式会社 画像処理装置、画像処理システム及び車両用ヘッドアップディスプレイシステム
JP5339824B2 (ja) * 2008-09-08 2013-11-13 キヤノン株式会社 画像形成装置およびその制御方法
JP6767660B2 (ja) * 2017-01-27 2020-10-14 富士通株式会社 プロセッサ、情報処理装置及びプロセッサの動作方法
EP3664017B1 (en) * 2018-12-06 2022-03-02 Robert Bosch GmbH Method and device for digital image or video data processing
CN109871841B (zh) * 2019-02-14 2023-04-21 腾讯科技(深圳)有限公司 图像处理方法、装置、终端及存储介质
US11741350B2 (en) * 2019-11-27 2023-08-29 Amazon Technologies, Inc. Efficient utilization of processing element array
US20210224630A1 (en) * 2020-01-21 2021-07-22 Arm Limited Neural processing system
CN112395092B (zh) * 2020-11-30 2023-06-02 清华大学 数据处理方法及人工智能处理器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1618084A (zh) * 2002-01-29 2005-05-18 夏普株式会社 图像处理装置、图像处理方法、图像处理程序、记录媒体
TW201042576A (en) * 2009-05-19 2010-12-01 Ipanel Technologies Ltd Method and device for obtaining deviation position of picture
WO2020237460A1 (zh) * 2019-05-27 2020-12-03 华为技术有限公司 一种图形处理方法和装置
US10635955B1 (en) * 2019-05-31 2020-04-28 Kyocera Document Solutions Inc. Image forming method, apparatus, and program separating addresses for storing color tone data by shifting the relative address using an offset address
CN111078920A (zh) * 2019-11-22 2020-04-28 北京云宽志业网络技术有限公司 数据处理方法、装置、设备和计算机可读存储介质
CN111179199A (zh) * 2019-12-31 2020-05-19 展讯通信(上海)有限公司 图像处理方法、装置及可读存储介质

Also Published As

Publication number Publication date
US20220295080A1 (en) 2022-09-15
CN112862724A (zh) 2021-05-28

Similar Documents

Publication Publication Date Title
US11068776B2 (en) Convolutional neural network based data processing apparatus, method for controlling the same, and storage medium storing program
CN107563952B (zh) 可编程二维图像处理器上的卷积神经网络
WO2019201656A1 (en) Method for accelerating operations and accelerator apparatus
JP6927320B2 (ja) 推論装置、畳み込み演算実行方法及びプログラム
US8130229B2 (en) Methods and apparatus for image processing at pixel rate
WO2022206556A1 (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
US10679319B2 (en) Task execution in a SIMD processing unit with parallel groups of processing lanes
KR102106360B1 (ko) 2-차원의 상호관련된 데이터 세트들의 효율적인 고-처리량 프로세싱을 위한 프로세서, 시스템 및 방법
WO2022110386A1 (zh) 数据处理方法及人工智能处理器
CN112862725B (zh) 用于计算的方法、计算设备和计算机可读存储介质
WO2022121474A1 (zh) 优化神经网络卷积残差结构的方法、系统、设备及介质
CN112862724B (zh) 用于计算的方法、计算设备和计算机可读存储介质
CN112614043B (zh) 用于卷积的方法、计算设备和计算机可读存储介质
US11520854B2 (en) Support for different matrix multiplications by selecting adder tree intermediate results
JP3860545B2 (ja) 画像処理装置及び画像処理方法
CN112184565B (zh) 一种多窗口串行的图像锐化方法
US10726516B2 (en) Arithmetic logic unit (ALU)-centric operations in graphics processing units (GPUs)
KR20240072060A (ko) 화상 처리 장치 및 화상 처리 방법
JP4821427B2 (ja) データ処理装置及びそのプログラム
CN118227516A (zh) 在处理单元处对值阵列执行运算
CN118227515A (zh) 在包括存储器的处理单元处对二维值阵列执行可分离运算
CN113920045A (zh) 图像处理方法、装置、电子设备、存储介质和程序产品
CN118043777A (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
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai

Patentee after: Shanghai Bi Ren Technology Co.,Ltd.

Country or region after: China

Address before: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai

Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address