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

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

Info

Publication number
CN112862725A
CN112862725A CN202110267756.2A CN202110267756A CN112862725A CN 112862725 A CN112862725 A CN 112862725A CN 202110267756 A CN202110267756 A CN 202110267756A CN 112862725 A CN112862725 A CN 112862725A
Authority
CN
China
Prior art keywords
rows
columns
pixel
pixel matrix
pixel data
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.)
Granted
Application number
CN202110267756.2A
Other languages
English (en)
Other versions
CN112862725B (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 CN202110267756.2A priority Critical patent/CN112862725B/zh
Publication of CN112862725A publication Critical patent/CN112862725A/zh
Priority to US17/692,198 priority patent/US20220292632A1/en
Application granted granted Critical
Publication of CN112862725B publication Critical patent/CN112862725B/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4023Scaling of whole images or parts thereof, e.g. expanding or contracting based on decimating pixels or lines of pixels; based on inserting pixels or lines of pixels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/77Retouching; Inpainting; Scratch removal

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本公开涉及一种用于计算的方法、计算设备和计算机可读存储介质。该方法包括在高速缓存中确定第一像素块,第一像素块由2m行*2n列的像素矩阵组成并且包括原始像素数据以及与原始像素数据有关的像素数据。然后,从高速缓存中读取第一像素块。与原始像素数据有关的像素数据中的至少部分像素数据用于与原始像素数据有关的填充,并且原始像素数据包括2m行*2n列的像素矩阵中的第m+1行到第2m行中的第n+1列到第2n列的像素数据。由此,能够实现在从高速缓存中读取数据时,一次读取在反向传播中在对原始像素数据进行插零操作和填充操作后所需获得的像素数据,从而降低了系统功耗,提高了系统性能。

Description

用于计算的方法、计算设备和计算机可读存储介质
技术领域
本公开的实施例总体上涉及人工智能领域,更具体地涉及一种用于计算的方法、计算设备和计算机可读存储介质。
背景技术
填充像素数据经常出现在基于人工智能的图像处理或深度神经网络中。例如在深度神经网络中,在对像素数据进行处理前,通常会对原始像素数据进行填充(Padding)操作。在一个示例中,可以通过在将被处理的原始像素数据的边界周围添加额外的像素,实现对原始图像的填充。
在反向传播(Back Propagration)的权重梯度计算中,通常需要使用例如在水平方向上进行填充和/或在垂直方向上进行填充来获得经填充的像素数据。
发明内容
本公开提供了一种用于计算的方法、计算设备和计算机可读存储介质,能够提供一种用于计算的高速缓存实现。
根据本公开的第一方面,提供了一种用于计算的方法。该方法包括:在高速缓存中确定第一像素块,第一像素块由2m行*2n列的像素矩阵组成并且包括原始像素数据以及与原始像素数据有关的像素数据,m和n为正整数;以及从高速缓存中读取第一像素块,其中与原始像素数据有关的像素数据中的至少部分像素数据用于与原始像素数据有关的填充,并且原始像素数据包括2m行*2n列的像素矩阵中的第m+1行到第2m行中的第n+1列到第2n列的像素数据。
根据本发明的第二方面,还提供了一种计算设备,该设备包括:至少一个处理单元;以及至少一个存储器,至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令,指令当由至少一个处理单元执行时,使得设备执行根据第一方面的方法的步骤。
根据本公开的第三方面,还提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,计算机程序被机器执行时执行本公开的第一方面的方法。
在一些实施例中,该方法还包括基于与原始像素数据有关的填充配置所指示的在垂直方向上的坐标,从2m行*2n列的像素矩阵的2m行中确定p行,以得到p行*2n列的像素矩阵;基于填充配置所指示的在水平方向上的坐标,从所确定的p行*2n列的像素矩阵的2n列中确定q列,以得到p行*q列的像素矩阵,p和q为正整数;对p行*q列的像素矩阵进行插零操作,以将p行*q列的像素矩阵扩展为2p行*2q列的像素矩阵。
在一些实施例中,2m行为4行,从2m行*2n列的像素矩阵的2m行中确定p行包括:响应于填充配置所指示的在垂直方向上的坐标为+3或+2时,从4行*2n列的像素矩阵的4行中选择第2行和第3行,以得到2行*2n列的像素矩阵;以及响应于填充配置所指示的在垂直方向上的坐标为+1或0时,从4行*2n列的像素矩阵的4行中选择第3行和第4行,以得到2行*2n列的像素矩阵。
在一些实施例中,2n列为8列,从所确定的p行*2n列的像素矩阵的2n列中确定q列包括:响应于填充配置所指示的在水平方向上的坐标为0或+1时,从2行*2n列的像素矩阵的8列中选择第5列至第8列,以得到2行*4列的像素矩阵;并且响应于填充配置所指示的在水平方向上的坐标为+2或+3时,从2行*2n列的像素矩阵的8列中选择第4列至第7列,以得到2行*4列的像素矩阵。
在一些实施例中,对p行*q列的像素矩阵进行插零操作包括:对p行像素矩阵隔行插一行零;以及对q行像素矩阵隔列插一列零,以得到2p行*2q列的像素矩阵。
在一些实施例中,该方法还包括:基于与原始图像数据有关的过滤器大小,确定填充设置。
在一些实施例中,2m行*2n列的像素矩阵为4行*8列的像素矩阵。
在一些实施例中,原始像素矩阵为2行*4列的像素矩阵。
在一些实施例中,与原始像素数据有关的像素数据包括2m行*2n列的像素矩阵中的第1行到第m行中的第1列到第2n列的像素数据、第m+1行到第2m行中的第1列到第n列的像素数据。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。
图1示意性示出了传统的具有不同填充设置的像素块的示意图;
图2示意性示出了本公开的一些实施例能够在其中实现的计算设备的示意图;
图3示出了根据本公开的实施例的用于计算的方法的流程图;
图4示出了根据本公开的一些实施例的对像素块进行加载的示意图;以及
图5A-5D分别示出了根据本公开的具有某个填充设置的像素块的读取结果的示意图;
图6示出了根据本公开的一些实施例的对经加载的像素块进行扩展的示意图。
这些附图中,相同或相似参考符号用于表示相同或相似元素。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开内容的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如前文所述,在对像素数据进行处理前,通常需要对原始像素数据进行填充(Padding)。在一个示例中,可以在输入的原始图像的边界周围添加额外像素以生成填充像素块,以对原始图像进行填充。另外,在反向传播(Back Propagration)的权重梯度计算中,通常需要使用例如在水平方向上进行填充和/或在垂直方向上进行填充来获得经填充的像素数据。
此外,在深度神经网络中,在正向传播的计算过程中,当以步长(Stride)大小为2来进行滤波时,前向传导(Forward Pass)激活像素数据的大小将变为原始图像大小的一半,以作为输出。具体地,例如在对一个原始图像进行取样时,当该原始图像的大小为56行*56列的像素矩阵时,将仅隔一个像素点取一个像素点,由此将输出经采样的28行*28列的像素矩阵。也就是说,由于采用了隔一个点取一个点的方式(即隔一行取一行,并且隔一列取一列),因此得到28行*28列的图像。由此,在上述采样过程中,原始图像在长和高上均缩小了一倍。在经过这样的步骤后,相应地,在反向传播的计算过程中,将需要从先前所保存下来的经采样的28行*28列的像素矩阵组成的图像,恢复成56行*56列大小的像素矩阵的图像。这就需要通过隔一行插入一行零,并且隔一列插一列零的方式来扩展保存的激活像素数据,从而将之前保存下来的28行*28列的像素矩阵组成的图像扩展成为一个56行*56列的像素矩阵的图像。
另外,如上文中提到的,在对像素块进行处理前,还需要进行填充操作。例如,在一个示例中,可以在将被处理的像素数据的左边填充一列像素数据。在另一个示例中,可以在将被处理的像素数据的上面填充一行像素数据。另外,也可以在将被处理的像素块的上面填充两行像素数据并且在其上边也填充两行像素数据。
图1示意性示出了传统的具有不同填充设置的像素块的示意图。在对图1进行介绍前,将首先简单介绍一下平铺(Tiling)和在平铺过程中使用的像素块的概念,以便于对图1的理解。平铺是一种常见的用于数据处理的技术。进行一次平铺处理即为处理一定数量的像素数据。例如,当进行图像处理时,硬件可以一次处理一个像素块的64个像素数据。
如图1所示,将被处理的原始像素数据110这样一个像素块可以包括一个8行*8列的像素矩阵。在进行填充时,原始像素数据110的具有某种填充设置(+x,+y)的像素块可以通过以原始像素数据110所在的位置为原点,在水平方向上平移x,并且在垂直方向上平移y来得到。
例如,如图1所示,原始像素数据110的具有填充配置(+1,+1)的像素块120为以原始像素数据110所在位置为原点,在水平方向上向左边平移1,并且在垂直方向向上平移1,而获得的具有这种填充配置的8行*8列的像素块。换句话说,在进行权重梯度计算的过程中,针对上述原始像素数据110,实际需要获取的是上述原始像素数据(例如,像素块110)的具有某种填充设置的像素块(例如像素块120或像素块130)中包括的像素数据。由此,为了获得像素块120或130的像素数据,不仅需要从原始像素数据110获得部分的像素数据(即图1中像素块110中的与像素块120重叠的部分的数据),还需要例如从原始像素数据110旁边的位置获取一些像素数据,即原始像素数据110上面一行和左边一列的部分像素数据。
在另一个示例中,原始像素数据110的具有填充配置(-1,-1)的像素块130,为以原始像素数据110所在位置为原点,在水平方向上向右边平移1(即向左平移-1),并且在垂直方向向下平移1,而获得的具有这种填充配置的8*8的像素块。换句话说,在进行权重梯度计算的过程中,针对原始像素数据110,实际需要获取的是原始图像(例如,像素块110)的具有某种填充设置的像素块(例如像素块130)中包括的像素数据。这样,为了获得像素块120中的像素数据,不仅需要从原始像素数据110获得部分的像素数据(即图1中像素块110中的与像素块130重叠的部分的数据),还需要从原始像素数据110旁边的位置获取一些像素数据,即原始像素数据110下面一行和右边一列的部分像素数据。由此,得到具有某种填充设置的经填充的像素块。
综上,在进行反向传播计算的过程中,需要对保存的激活像素数据进行插零以及填充这两项操作。然而,在传统方案中,通常使用专用的硬件,通过使用多条读取指令,将所需的像素数据读取出来。例如,如果需要读取的目标像素块的开销是一个4行*4列大小像素数据,其将需要一个5行*5列、6行*6列、7行*7列大小的像素矩阵。由此,当使用上述专用硬件时,将使用缓冲区,将把这些像素读取到该缓冲区中。然而,这样的做法需要专用硬件,通常成本较高,而且这种方法也比较复杂。
为此,针对上文中提及的所需解决的问题,本公开的实施方式提供了一种用于计算的方法,旨在至少部分地解决上述问题。在本公开的方案中,首先在高速缓存中确定第一像素块,第一像素块由2m行*2n列的像素矩阵组成并且包括原始像素数据以及与原始像素数据有关的像素数据。然后,从高速缓存中读取第一像素块。与原始像素数据有关的像素数据中的至少部分像素数据用于与原始像素数据有关的填充,并且原始像素数据包括2m行*2n列的像素矩阵中的第m+1行到第2m行中的第n+1列到第2n列的像素数据。由此,能够实现在从高速缓存中读取数据时,一次读取在反向传播中在对原始像素数据进行插零操作和填充操作后所需获得的像素数据,并且由此,在将这些数据读取到例如缓冲区后,仅需再增加与插零操作和填充操作相关的逻辑就可以得到用于处理的像素数据,从而避免了通过使用复杂的硬件开销的方案读取相关的像素数据,从而降低系统功耗,提高了系统性能。
下面将结合图2至图6来具体描述本公开的实施方式。
图2示意性示出了本公开的多个实施例能够在其中实现的计算设备200的示意图。如图2所示,计算设备200至少包括处理器210、高速缓存220和缓冲区230。在一个示例中,计算设备200例如可以用于芯片。在另一个示例中,计算设备200可以用于图像处理单元(GPU)加速的神经网络计算。备选地,计算设备200可以用于向量处理器,或者其他类型的数据计算单元,或用于人工智能的其他计算单元。
处理器210用于对从高速缓存220加载的像素块进行处理。在一个实施例中,处理器210可以为通用矩阵乘单元(GEMM)。在其他实施例中,处理器210可以为其他类型的处理器,本公开的范围在此方面不受限制。在一个示例中,所加载的像素块的大小可以为4*8。可以理解,所加载的像素块的大小可以为任何大小,本公开的范围在此方面不受限制。
高速缓存220用于缓存数据。在一个示例中,高速缓存220可以缓存有用于卷积的原始图像或原始像素数据。在另一个示例中,高速缓存220可以缓存将用于反向传播的权重梯度计算的原始图像或原始像素数据。在一个示例中,高速缓存220可以包括多个高速缓存线,其中每条高速缓存线可以具有一个虚拟地址,从而使得处理器210可以使用该虚拟地址从高速缓存线加载数据。
缓冲区230可以用于存储数据,例如存储像素块,该像素块可以为由原始像素数据组成的像素块,或者具有某种填充配置的像素块。例如,计算设备200中的处理器210可以从高速缓存220中读取/加载(一个或多个)像素块,并且将(一个或多个)像素块存储到缓冲区230中,以便处理器210对像素块进行处理。
下面将参考图3并且结合图4介绍根据本公开的实施例的用于计算的方法。图3示出了根据本公开的实施例的用于计算的方法的流程图。应当理解,方法300可以包括未示出的附加组成部分、动作和/或可以省略所示出的组成部分、动作,本公开的范围在此方面不受限制。图4示出了根据本公开的一些实施例的对像素块进行加载的示意图。应当理解,图4仅示出了对像素块集合进行加载的示意图的根据本公开的一种实施例的示例。虽然图4仅示出了加载包括两个像素块的像素块集合,然而,可以理解像素块集合可以包括任意数目的像素块,本公开的范围在此方面不受限制。
如图3所示,在步骤310,计算设备200在高速缓存220中确定第一像素块。该第一像素块由2m行*2n列的像素矩阵组成并且包括原始像素数据以及与原始像素数据有关的像素数据。m和n为正整数。例如,m=2,并且n=4。可以理解,m和n可以为其他的正整数,例如,m=3,并且n=4,本公开的保护范围在此方面不受限制。
与该原始像素数据有关的像素数据中的至少部分像素数据用于与原始像素数据有关的填充。此外,原始像素数据包括2m行*2n列的像素矩阵中的第m+1行到第2m行中的第n+1列到第2n列的像素数据。
在一些实施例中,在进行填充时,可以基于不同的填充配置对原始像素数据进行填充。例如,填充配置可以为(0,0)、(0,+1)、(0,+2)、(0,+3)、(+1,0)、(+1,+1)、(+1,+2)、(+1,+3)、(+2,0)、(+2,+1)、(+2,+2)、(+2,+3)、(+3,0)、(+3,+1)、(+3,+2)、(+3,+3)。可以理解,上面仅给出了与填充配置有关的示例,填充配置还可以是其他,本公开的保护范围在此范围不受限制。
下面将结合图4对上述图3的步骤310进行是详细说明。如图4所示,第一像素块410为一个4行*8列的像素矩阵组成的像素块。也就是说,计算设备200在高速缓存220中确定这样一个4行*8列的像素矩阵组成的像素块410。该像素块410包括原始像素数据420。该原始像素数据为一个2行*4列的像素矩阵,如图4所示,其占据4行*8列的像素矩阵中的从第3行到第4行中的第5列到第8列的像素数据。也就是说,该原始像素数据420占据4行*8列的像素矩阵所组成的第一像素块410的右下角的部分。
在一些实施中,如图4所示,第一像素块410还包括与原始像素数据有关的像素数据,其可以占据第一像素块410的除原始像素块420以外的其他部分。也就是说,与原始像素数据有关的像素数据可以包括4行*8列的像素矩阵中的第1行到第2行中的第1列到第8列的像素数据以及第3行到第4行中的第1列到第4列的像素数据。也就是说,该与原始像素数据420有关的像素数据占据4行*8列的像素矩阵所组成的第一像素块410的左边部分(包括左上部分)以及右上部分。
可以理解,在一些实施例中,当需要对一个原始图像(例如图4中的整个的图像405)中的多个原始像素数据420进行处理时,将需要从高速缓存220读取与原始像素数据相邻的像素数据,以用于填充。
在另一些实施例中,当将被处理的原始像素数据420处于边界时,例如如果原始像素数据420位于原始图像405的左上角,则该原始像素数据420将不具有为与其上面的一行或多行像素数据和/或位于其左边的一列或多列的、用于填充的像素数据。因此,在这样的实施例中,可以通过使用OOB(Out of Boundary)算法,通过填充零值等方法对将被处理的原始像素数据420进行填充。
再重新回到图3。在步骤320,计算设备200将从高速缓存220中读取第一像素块410。例如,将该第一像素块410从高速缓存220读取到缓冲区。以此方式,能够实现在从高速缓存中读取数据时,一次读取在反向传播中在对原始像素数据进行插零操作和填充操作后所需获得的像素数据,从而降低了系统功耗,提高了系统性能。
在一些实施例中,计算设备200可以基于与原始像素数据有关的填充配置所指示的在垂直方向上的坐标,从2m行*2n列的像素矩阵的2m行中确定p行,以得到p行*2n列的像素矩阵。
在一些实例中,当2m行为4行时,如果填充配置所指示的在垂直方向上的坐标为+3或+2时,可以从4行*2n列的像素矩阵的4行中选择第2行和第3行,以得到2行*2n列的像素矩阵。
如果填充配置所指示的在垂直方向上的坐标为+1或0时,可以从4行*2n列的像素矩阵的4行中选择第3行和第4行,以得到2行*2n列的像素矩阵。
在另一些实施例中,计算设备200可以基于填充配置所指示的在水平方向上的坐标,从所确定的p行*2n列的像素矩阵的2n列中确定q列,以得到p行*q列的像素矩阵。在一些实施例中,p和q可以为正整数。
在一些实施例中,当2n列为8列时,如果填充配置所指示的在水平方向上的坐标为0或+1时,可以从2行*8列的像素矩阵的2n列中选择第5列至第8列,以得到2行*4列的像素矩阵。
如果填充配置所指示的在水平方向上的坐标为+2或+3时,可以从2行*2n列的像素矩阵的8列中选择第4列至第7列,以得到2行*4列的像素矩阵。
在得到p行*q列(例如2行*4列)的像素矩阵后,将对该矩阵进行插零操作,以将p行*q列的像素矩阵扩展为2p行*2q列的像素矩阵。在一些具体的示例中,计算设备200可以对p行像素矩阵隔行插一行零,并且可以对q行像素矩阵隔列插一列零,以得到2p行*2q列的像素矩阵。例如,当p=2;q=4时,当通过插零操作,将2行*4列的像素矩阵扩展为4行*8列的像素矩阵。
图5A-5D分别示出了根据本公开的具有某个填充配置的像素块的读取结果的示意图。换句话说,通过上文中的方法计算设备200可以从例如缓冲区230中读取到经填充并且经插零操作的相应的像素块的结果。
图5A示出了读取具有填充配置(0,0)的像素块的结果。在该示例中,其原始像素数据为2行*4列,由此,将从高速缓存中读取如4所示的大小的第一像素块。另外,由于该填充配置在垂直方向上的坐标为0,由此,将从4行*8列的像素矩阵的4行中选择第3行和第4行,以得到2行*8列的像素矩阵。然后,由于该填充配置所指示的在水平方向上的坐标为0,因此将从上文中得到的2行*8列的像素矩阵的8列中选择第5列至第8列,以得到2行*4列的像素矩阵。由此,在得到2行*4列的像素矩阵后,将对该矩阵进行插零操作,以将2行*4列的像素矩阵扩展为4行*8列的像素矩阵。也就是说,将在2行像素矩阵每隔一行插一行零(即,在第一行像素矩阵下面插一行零以及在第二行像素矩阵下面插一行零)。另外,将在4列像素矩阵每隔一列插一列零(即,在像素矩阵额第一列、第二列、第三列和第四列的右面分别插一列零),从而将2行*4列的像素矩阵扩展为4行*8列的像素矩阵(如图5A中的示例500A所示),以用于进行后续的对像素数据的处理。
图5B示出了读取具有填充配置(+1,+1)的像素块的结果。在该示例中,其原始像素数据为2行*4列,由此,将从高速缓存中读取如4所示的大小的第一像素块。另外,由于该填充配置在垂直方向上的坐标为+1,由此,将从4行*8列的像素矩阵的4行中选择第3行和第4行,以得到2行*8列的像素矩阵。然后,由于该填充配置所指示的在水平方向上的坐标为+1,因此将从上文中得到的2行*8列的像素矩阵的8列中选择第5列至第8列,以得到2行*4列的像素矩阵。由此,在得到2行*4列的像素矩阵后,将对该矩阵进行插零操作,以将2行*4列的像素矩阵扩展为4行*8列的像素矩阵。也就是说,将在2行像素矩阵每隔一行插一行零(即,在第一行像素矩阵上面插一行零以及在第二行像素矩阵上面插一行零),另外,将在4列像素矩阵每隔一列插一列零(即,在像素矩阵的第一列、第二列、第三列和第四列的左面分别插一列零),从而将2行*4列的像素矩阵扩展为4行*8列的像素矩阵(如图5B中的示例500B所示),以用于进行后续的对像素数据的处理。
图5C示出了读取具有填充配置(+3,+2)的像素块的结果。在该示例中,其原始像素数据为2行*4列,由此,将从高速缓存中读取如图4所示的大小的第一像素块。另外,由于该填充配置在垂直方向上的坐标为+3,由此,将从4行*8列的像素矩阵的4行中选择第2行和第3行,以得到2行*8列的像素矩阵。然后,由于该填充配置所指示的在水平方向上的坐标为+2,因此将从上文中得到的2行*8列的像素矩阵的8列中选择第4列至第7列,以得到2行*4列的像素矩阵。由此,在得到2行*4列的像素矩阵后,将对该矩阵进行插零操作,以将2行*4列的像素矩阵扩展为4行*8列的像素矩阵(如图5C中的示例500C所示),以用于进行后续的对像素数据的处理。
图5D示出了读取具有填充配置(+3,+3)的像素块的结果。在该示例中,其原始像素数据为2行*4列,由此,将从高速缓存中读取如4所示的大小的第一像素块。另外,由于该填充配置在垂直方向上的坐标为+3,由此,将从4行*8列的像素矩阵的4行中选择第2行和第3行,以得到2行*8列的像素矩阵。然后,由于该填充配置所指示的在水平方向上的坐标为+3,因此将从上文中得到的2行*8列的像素矩阵的8列中选择第4列至第7列,以得到2行*4列的像素矩阵。由此,在得到2行*4列的像素矩阵后,将对该矩阵进行插零操作,以将2行*4列的像素矩阵扩展为4行*8列的像素矩阵(如图5D中的示例500D所示),以用于进行后续的对像素数据的处理。
可以理解,在另一个实施例中,在从高速缓存中读取第一像素块后,可以首先对第一像素块进行扩展(即,插零操作)。图6示出了根据本公开的一些实施例的对经加载的像素块进行扩展的示意图。由此,可以在获得如图6中的示例600所示的经扩展的第一像素块后,再根据填充配置的相应坐标,获得相应的4行*8列的像素矩阵,从而用于进行后续的对像素数据的处理。例如,当填充配置(+3,+3)时,可以以原始像素数据中的左上角顶点为坐标原点,向上平移三个像素的位置,然后再向左平移三个像素的位置,从而得到如500D所示的像素矩阵组成的像素块,以用于进行后续的对像素数据的处理。
在一些实施例中,像素块410的4行像素数据中的1行像素数据或8列中的一列像素数据占缓冲区230的一个条目(Entry)。在一个示例中,当像素块中的一行包括8个像素时,在缓冲区230的条目中存储8个像素的数据。在另一个示例中,一个像素可以具有p个通道(Channel)时,并且像素块中的一行包括8个这样的像素时,则在例如目标缓冲区230的一个条目中将存储8个像素*64个通道的数据。也就是说,这8个像素*64个通道的像素数据将占据目标缓冲区230的一个条目。
由此,计算设备200可以基于第一像素块的缓冲区230起始地址和与相应的地址偏移(例如,与填充配置相关联的地址偏移),并且通过插零操作,从而从缓冲区230读取出如图5A-5D所示的结果。
可以理解,计算设备200也可以使用其他方法读取到如图5A-5D所示的结果,因为此时所需的与填充有关的数据均已从高速缓存中一次性地加载到例如缓冲区230以备计算设备200使用。
在一些实施例中,可以基于与原始图像数据有关的过滤器大小,确定填充配置。例如,当过滤器大小为3*3时,填充配置可以为(+1,+1)。在另一些示例中,当过滤器大小为5*5时,填充配置可以为(+2,+2)。备选地,当过滤器大小为7*7时,填充配置可以为(+3,+3)。
应当理解,方法300可被实现为计算机软件程序,其可以被有形地包含于机器可读介质,例如存储单元。在一些实施例中,计算机程序的部分或者全部可以经由ROM和/或通信单元而被载入和/或安装到计算设备200上。当计算机程序被加载到RAM并由处理器执行时,可以执行上文描述的方法300的一个或多个动作。
本公开可以是方法、计算设备、计算机存储介质和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (11)

1.一种用于计算的方法,包括:
在高速缓存中确定第一像素块,所述第一像素块由2m行*2n列的像素矩阵组成并且包括原始像素数据以及与所述原始像素数据有关的像素数据,m和n为正整数;以及
从所述高速缓存中读取所述第一像素块,
其中与所述原始像素数据有关的像素数据中的至少部分像素数据用于与所述原始像素数据有关的填充,并且所述原始像素数据包括所述2m行*2n列的像素矩阵中的第m+1行到第2m行中的第n+1列到第2n列的像素数据。
2.根据权利要求1所述的方法,还包括:
基于与所述原始像素数据有关的填充配置所指示的在垂直方向上的坐标,从所述2m行*2n列的像素矩阵的2m行中确定p行,以得到p行*2n列的像素矩阵;
基于所述填充配置所指示的在水平方向上的坐标,从所确定的p行*2n列的像素矩阵的2n列中确定q列,以得到p行*q列的像素矩阵,p和q为正整数;
对所述p行*q列的像素矩阵进行插零操作,以将所述p行*q列的像素矩阵扩展为2p行*2q列的像素矩阵。
3.根据权利要求2所述的方法,其中所述2m行为4行,从所述2m行*2n列的像素矩阵的2m行中确定所述p行包括:
响应于所述填充配置所指示的在所述垂直方向上的所述坐标为+3或+2时,从所述4行*2n列的像素矩阵的4行中选择第2行和第3行,以得到2行*2n列的像素矩阵;以及
响应于所述填充配置所指示的在所述垂直方向上的所述坐标为+1或0时,从所述4行*2n列的像素矩阵的4行中选择第3行和第4行,以得到2行*2n列的像素矩阵。
4.根据权利要求3所述的方法,其中所述2n列为8列,从所确定的p行*2n列的像素矩阵的2n列中确定所述q列包括:
响应于所述填充配置所指示的在所述水平方向上的所述坐标为0或+1时,从所述2行*2n列的像素矩阵的2n列中选择第5列至第8列,以得到2行*4列的像素矩阵;并且
响应于所述填充配置所指示的在所述水平方向上的所述坐标为+2或+3时,从所述2行*2n列的像素矩阵的2n列中选择第4列至第7列,以得到2行*4列的像素矩阵。
5.根据权利要求2所述的方法,其中对所述p行*q列的像素矩阵进行插零操作包括:
对所述p行像素矩阵隔行插一行零;以及
对所述q行像素矩阵隔列插一列零,以得到所述2p行*2q列的像素矩阵。
6.根据权利要求1所述的方法,还包括:
基于与所述原始图像数据有关的过滤器大小,确定所述填充设置。
7.根据权利要求1所述的方法,所述2m行*2n列的像素矩阵为4行*8列的像素矩阵。
8.根据权利要求1所述的方法,所述原始像素矩阵为2行*4列的像素矩阵。
9.根据权利要求1所述的方法,其中与所述原始像素数据有关的像素数据包括所述2m行*2n列的像素矩阵中的第1行到第m行中的第1列到第2n列的像素数据、第m+1行到第2m行中的第1列到第n列的像素数据。
10.一种计算设备,包括:
至少一个处理单元;以及
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述计算设备执行根据权利要求1至9中任一项所述的方法的步骤。
11.一种存储有计算机指令的计算机可读存储介质,其中所述计算机指令用于使所述计算机执行根据权利要求1-10中任一项所述的方法。
CN202110267756.2A 2021-03-12 2021-03-12 用于计算的方法、计算设备和计算机可读存储介质 Active CN112862725B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110267756.2A CN112862725B (zh) 2021-03-12 2021-03-12 用于计算的方法、计算设备和计算机可读存储介质
US17/692,198 US20220292632A1 (en) 2021-03-12 2022-03-11 Method for computing, computing device, and computer-readable storage medium

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
CN112862725A true CN112862725A (zh) 2021-05-28
CN112862725B CN112862725B (zh) 2023-10-27

Family

ID=75994078

Family Applications (1)

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

Country Status (2)

Country Link
US (1) US20220292632A1 (zh)
CN (1) CN112862725B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116033106A (zh) * 2023-03-24 2023-04-28 摩尔线程智能科技(北京)有限责任公司 一种用于多重采样的图像处理方法及装置、电子设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116071242B (zh) * 2023-03-17 2023-07-14 山东云海国创云计算装备产业创新中心有限公司 一种图像处理方法、系统、设备以及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102460503A (zh) * 2009-06-25 2012-05-16 Tvone有限公司 显示源图像的变形版本的设备和方法
CN103870256A (zh) * 2012-12-12 2014-06-18 联想(北京)有限公司 信息处理的方法及电子设备
CN104603834A (zh) * 2012-09-07 2015-05-06 德克萨斯仪器股份有限公司 用于多媒体数据处理的方法和系统
CN105472442A (zh) * 2015-12-01 2016-04-06 上海交通大学 一种用于超高清帧率上变换的片外缓存压缩系统
CN108133270A (zh) * 2018-01-12 2018-06-08 清华大学 卷积神经网络加速方法及装置
CN108230229A (zh) * 2018-01-04 2018-06-29 上海兆芯集成电路有限公司 图像处理装置以及图像处理方法
CN109461119A (zh) * 2019-01-31 2019-03-12 深兰人工智能芯片研究院(江苏)有限公司 卷积神经网络fpga加速中的图像填充方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7260253B2 (en) * 2002-04-19 2007-08-21 Visiongate, Inc. Method for correction of relative object-detector motion between successive views
US8649595B2 (en) * 2010-03-09 2014-02-11 Dynamic Invention Llc Subpixel-based image down-sampling
CN107680028B (zh) * 2016-08-01 2020-04-21 北京百度网讯科技有限公司 用于缩放图像的处理器和方法
CN112991142B (zh) * 2021-03-31 2023-06-16 腾讯科技(深圳)有限公司 图像数据的矩阵运算方法、装置、设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102460503A (zh) * 2009-06-25 2012-05-16 Tvone有限公司 显示源图像的变形版本的设备和方法
CN104603834A (zh) * 2012-09-07 2015-05-06 德克萨斯仪器股份有限公司 用于多媒体数据处理的方法和系统
CN103870256A (zh) * 2012-12-12 2014-06-18 联想(北京)有限公司 信息处理的方法及电子设备
CN105472442A (zh) * 2015-12-01 2016-04-06 上海交通大学 一种用于超高清帧率上变换的片外缓存压缩系统
CN108230229A (zh) * 2018-01-04 2018-06-29 上海兆芯集成电路有限公司 图像处理装置以及图像处理方法
CN108133270A (zh) * 2018-01-12 2018-06-08 清华大学 卷积神经网络加速方法及装置
CN109461119A (zh) * 2019-01-31 2019-03-12 深兰人工智能芯片研究院(江苏)有限公司 卷积神经网络fpga加速中的图像填充方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116033106A (zh) * 2023-03-24 2023-04-28 摩尔线程智能科技(北京)有限责任公司 一种用于多重采样的图像处理方法及装置、电子设备

Also Published As

Publication number Publication date
US20220292632A1 (en) 2022-09-15
CN112862725B (zh) 2023-10-27

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
EP4227886A1 (en) Matrix operation method and apparatus for image data, device, and storage medium
CN112862725B (zh) 用于计算的方法、计算设备和计算机可读存储介质
JP6927320B2 (ja) 推論装置、畳み込み演算実行方法及びプログラム
US20180181406A1 (en) Arithmetic processing device and control method of the arithmetic processing device
US20170206089A1 (en) Information processing apparatus and computational method
US10922785B2 (en) Processor and method for scaling image
CN108073549B (zh) 卷积运算装置及方法
CN112633470B (zh) 优化神经网络卷积残差结构的方法、系统、设备及介质
CN112712457B (zh) 数据处理方法以及人工智能处理器
US20170270632A1 (en) Caching Method Of Graphic Processing Unit
CN112862724B (zh) 用于计算的方法、计算设备和计算机可读存储介质
US9230305B2 (en) Summed area computation using ripmap of partial sums
CN116109481A (zh) 缩放方法、芯片、存储介质及电子设备
CN112614040B (zh) 用于卷积计算的方法、计算设备和计算机可读存储介质
KR101688435B1 (ko) 블록 구조를 이용한 적분 영상 생성 장치 및 그 방법
CN108805846B (zh) 二值图像处理优化的方法及其系统
CN112614043B (zh) 用于卷积的方法、计算设备和计算机可读存储介质
CN112308762A (zh) 一种数据处理方法及装置
JP5045652B2 (ja) 相関処理装置及びその相関処理装置で読みとり可能な媒体
CN113988256B (zh) 卷积运算方法
KR101540300B1 (ko) 캐시 메모리를 이용한 이미지 워핑 시스템 및 그 방법
US20240281496A1 (en) Convolution layer processor and method

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
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