一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

图像处理方法、装置、电子设备、存储介质和程序产品与流程

2022-02-20 13:48:27 来源:中国专利 TAG:


1.本公开涉及计算机技术,并且更具体地,涉及图像处理方法、图像处理装置、电子设备、计算机可读存储介质和计算机程序产品,可以用于人工智能领域,特别是图像处理领域等领域中。


背景技术:

2.如今深度学习已经被广泛应用。伴随着模型的多样化以及对算力需求的提升,考虑到原有的深度学习硬件平台中的例如通用处理器、图形处理单元等的性能、成本等因素,业界纷纷开始自研深度学习加速器。
3.卷积层是神经网络中极为常见的层。在卷积层的前向计算中,需要若干个卷积核在输入图像上进行卷积操作。一种常见的实现方法是对输入图像进行im2col操作,这样卷积操作就能转化为矩阵乘法。而在训练过程中,还需要反向计算,需要根据当前层的输出图像梯度,计算出当前层的权重梯度和输入图像梯度,并依次向前层传播。权重梯度的求解方法为输出图像梯度乘以im2col操作之后的输入图像。硬件计算时为了获取高吞吐率,需要将该维度整理成连续数据并输出到矩阵运算单元,等同于进行im2col操作和transpose操作。
4.然而,传统技术中的用于反向权重梯度计算的技术效率较低,难以满足用户的需求。


技术实现要素:

5.根据本公开的实施例,提供了一种图像处理方法、图像处理装置、电子设备、计算机可读存储介质和计算机程序产品。
6.在本公开的第一方面中,提供了一种图像处理方法,包括:获取输入图像,输入图像包括多个通道,多个通道中的每个通道包括多个像素点;针对输入图像的每个通道,使用多个专用处理单元并行地执行像素提取,以得到针对每个通道的每个对应像素点的像素点数据;以及将针对每个通道的每个对应像素点的像素点数据拼接,以得到输出图像。
7.在本公开的第二方面中,提供了一种图像处理装置,包括:获取模块,被配置为获取输入图像,输入图像包括多个通道,多个通道中的每个通道包括多个像素点;第一计算模块,被配置为针对输入图像的每个通道,使用多个专用处理单元并行地执行像素提取,以得到针对每个通道的每个对应像素点的像素点数据;以及拼接模块,被配置为将针对每个通道的每个对应像素点的像素点数据拼接,以得到输出图像。
8.在本公开的第三方面中,提供了一种电子设备,包括至少一个处理器;以及与至少一个处理器通信连接的存储器;其中存储器存储有可被至少一个处理器执行的指令,该指令被至少一个处理器执行,以使至少一个处理器能够实现根据本公开的第一方面的方法。
9.在本公开的第四方面中,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机实现根据本公开的第一方面的方法。
10.在本公开的第五方面中,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时,执行根据本公开的第一方面的方法。
11.利用根据本技术的技术,提供了一种适用于hwc格式卷积层权重梯度计算中输入图像数据处理的方法,利用该方法的技术方案,可以灵活支持各种规模输入图像的格式处理,能够充分利用硬件的并行性特点,高效地进行像素提取,从而可以支持高效的权重梯度计算,能够提升整体计算过程的吞吐率,并且因此能够提升用户体验。
12.应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
13.通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中在本公开示例性实施例中,相同的参考标号通常代表相同部件。应当理解,附图用于更好地理解本方案,不构成对本公开的限定。其中:
14.图1示出了可以在其中实现本公开的某些实施例中的图像处理方法的图像处理环境100的示意性框图;
15.图2示出了可以在其中实现本公开的某些实施例中的图像处理方法的图像处理环境200的示意性框图;
16.图3示出了根据本公开实施例的图像处理方法300的流程图;
17.图4示出了根据本公开的实施例的输入图像400的示意图;
18.图5示出了根据本公开实施例的图像处理方法500的流程图;
19.图6a至图6h示出了根据本公开的实施例的图像处理方法中的输入数据变化610至680的示意图;
20.图7示出了根据本公开的实施例的输出矩阵700的示意图;
21.图8示出了根据本公开的实施例的图像处理装置800的示意性框图;以及
22.图9示出了可以用来实施本公开的实施例的示例电子设备900的示意性框图。
23.在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
24.下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
25.在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
26.如以上在背景技术中所描述的,传统技术中的用于反向权重梯度计算的技术效率
较低,难以满足用户的需求。
27.具体而言,卷积层是神经网络中极为常见的层。在卷积层的前向计算中,需要若干个卷积核在输入图像上进行卷积操作,在hwc格式下,假设图像规模为in_h*in_w*c,也可以被称为权重的卷积核的规模为f*r*s*c,并且卷积操作后输出图像的规模为f*out_h*out_w,其中c为输入图像的通道数量,in_h为输入图像的高度,in_w为输入图像的宽度,f为卷积核数量,r为卷积核高度,s为卷积核宽度,out_h为输出图像的高度,out_w为输出图像的宽度,这些高度和宽度的单位可以是像素。
28.一种常见的实现方法是对输入图像进行im2col操作,将卷积核经过的部分展开为out_h*out_w个一维向量,每个一维向量长度r*s*c,即转化为[out_h*out_w,r*s*c]。这时,卷积操作就能被转化为矩阵乘法,并且具体矩阵乘法规模为[f,r*s*c]
·
[r*s*c,out_h*out_w]=[f,out_h*out_w]。
[0029]
在训练过程中,还需要反向计算,其中需要根据当前层的输出图像梯度,计算出当前层的权重梯度和输入图像梯度,并且依次向前层传播。权重梯度的求解方法为输出图像梯度乘以im2col操作之后的输入图像,具体规模为[f,out_h*out_w]
·
[out_h*out_w,r*s*c]=[f,r*s*c],其中out_w*out_h为乘累加的维度。
[0030]
硬件计算时,为了获取高吞吐率,需要将该维度整理成连续数据并且输出到矩阵运算单元,其中输出图像梯度是[f,out_h*out_w],无需额外处理,而输入图像需要从[in_h*in_w,c]处理成[r*s*c,out_h*out_w]格式,等同于进行im2col操作和transpose操作,因此其处理效率的提升对于权重梯度计算具有重要意义。
[0031]
在传统技术中,对于深度学习反向计算中的权重梯度计算,普遍采用两种方案来解决。一种方案是使用通用处理器,利用寄存器堆和通用计算单元来执行通用指令,从而完成深度学习反向计算,另一种方案是使用利用图形处理单元的专用处理单元,用寄存器堆和流处理单元执行单指令多数据流(simd)指令,从而完成深度学习反向计算。
[0032]
然而,上述两种方案都存在严重的不足。
[0033]
对于第一种方案,其实现相对简单,但是通用处理器往往适用于标量计算,在深度学习相关计算中表现出了算力的不足,整体性能低下。
[0034]
对于第一种方案,目前仍然缺乏具体实现细节。
[0035]
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个问题,本公开的实施例提出了一种图像处理方法,利用根据本公开的实施方式的技术方案,可以灵活支持各种规模输入图像的格式处理,能够充分利用硬件的并行性特点,高效地进行像素提取,从而可以支持高效的权重梯度计算,能够提升整体计算过程的吞吐率,并且因此能够提升用户体验。
[0036]
图1示出了可以在其中实现本公开的某些实施例中的图像处理方法的图像处理环境100的示意性框图。根据本公开的一个或多个实施例,图像处理环境100可以是云环境。
[0037]
如图1中所示,图像处理环境100包括计算设备110,并且计算设备110包括专用处理单元111-1、专用处理单元111-2和专用处理单元111-3,这些专用处理单元可以被统称为专用处理单元111。应当理解,在图1中示出三个专用处理单元111仅出于示例的目的,根据功能以及用户需求的不同,在图像处理环境100中可以包括更多或者更少的专用处理单元111。根据本公开的一个或多个实施例,专用处理单元111例如可以是诸如图形处理单元之
类的专用处理单元,或者是前述专用处理单元中的处理核core。
[0038]
在图像处理环境100中,计算设备110获取输入图像120。根据本公开的一个或多个实施例,输入图像120可以是hwc格式的输入图像120,并且输入图像120的图像规模可以是in_h*in_w*c。因此,输入图像120可以包括多个通道,并且每个通道中均包括in_w行像素。
[0039]
根据本公开的一个或多个实施例,对于hwc的输入图像120,其在通道c的维度是连续的,并且存储的顺序在把针对每个通道的对应的像素点都存储完之后,再存储每个通道的对应的另一个像素点。例如,如果输入图像120是rgb图像文件,则在将针对每个通道的对应的像素点的rgb都存完了之后,再去存储每个通道的对应的另一个像素点的rgb。
[0040]
在获取了输入图像120之后,计算设备110可以使用计算设备110中的专用处理单元111来针对输入图像120中的每个通道,使用多个专用处理单元并行地执行像素提取,以得到针对每个通道的每个对应像素点的像素点数据。而后,计算设备110可以使用计算设备110中的专用处理单元111将针对每个通道的每个对应像素点的像素点数据拼接,从而得到输出图像130。
[0041]
应当理解,图像处理环境100仅仅是示例性而不是限制性的,并且其是可扩展的,其中可以包括更多的计算设备110,并且计算设备110可以获取更多的输入图像120,并且可以使用更多的专用处理单元111来针对输入图像120,从而使得可以满足更多用户同时利用更多的计算设备110并行地执行像素提取,从而得到更多的输出图像130,因而可以满足用户利用更多的计算设备110以及计算设备中的专用处理单元111来同时或者非同时地对更多的输入图像120进行处理以得到更多的输出图像130的需求。
[0042]
在图1所示的图像处理环境100中,计算设备110获取输入图像120以及提供输出图像130的过程可以通过网络来进行。
[0043]
图2示出了可以在其中实现本公开的某些实施例中的图像处理方法的图像处理环境200的示意性框图。根据本公开的一个或多个实施例,图像处理环境200可以是云环境。
[0044]
如图2中所示,图像处理环境200包括计算设备210,并且计算设备210包括专用处理单元211-1、专用处理单元211-2和专用处理单元211-3,这些专用处理单元可以被统称为专用处理单元211。应当理解,在图2中示出三个专用处理单元211仅出于示例的目的,根据功能以及用户需求的不同,在图像处理环境200中可以包括更多或者更少的专用处理单元211。根据本公开的一个或多个实施例,专用处理单元211例如可以是图形处理单元。
[0045]
除了专用处理单元211之外,计算设备210还包括指令存储单元212、指令译码单元213、控制单元214、同步单元215、数据读取单元216以及数据处理单元217。
[0046]
在图像处理环境200中,还包括计算设备210可以从中获取输入图像120的源存储器220、计算设备210可以向其存储输出图像130的目标存储器230、可以被输入到计算设备210以供执行各种操作的处理指令240、以及对计算设备210执行的各种操作进行调度的调度器250。根据本公开的一个或多个实施例,输入图像120可以是如参照图1所描述的hwc格式的输入图像120。
[0047]
根据本公开的一个或多个实施例,源存储器220和目标存储器230可以是各种类型的存储器,例如静态随机存取存储器(sram)。此外,源存储器220和目标存储器230也可以被合并为同一个存储器。
[0048]
指令存储单元212用于存储所获取的处理指令240。针对数据转换,处理指令240包
括但不限于:参数配置指令、数据操作指令、同步指令等。参数配置指令用于配置参数包括但不限于:数据类型、输入图像的规模、卷积核或权重的规模、卷积步长、填充规模、存储器地址及偏移量等等。数据操作指令用于发起后续硬件执行动作。同步指令用于保证该指令之前的所有指令执行完成且数据落盘,供调度器对各模块进行同步。
[0049]
指令译码单元213在检测到指令存储单元212非空且当前可执行指令时,从指令存储单元212读取处理指令并进行解析,并且将解析的内容发送到控制单元214。
[0050]
控制单元214根据配置参数生成相应的控制信号,控制信号可以用于控制以下各项:数据读取单元216的读请求操作,数据处理单元217和专用处理单元211的操作,以及同步单元215的操作。
[0051]
数据读取单元216根据来自控制单元214的控制信号,向源存储器220发送读请求。根据控制单元214的控制信号,数据读取单元216可向源存储器220发起多次读请求。
[0052]
数据处理单元217和专用处理单元211根据控制单元214的控制信号来对所读取的数据进行特定操作。例如,针对所读取的输入图像120中的每个通道,并行地执行像素提取,以得到针对每个通道的每个对应像素点的像素点数据。
[0053]
同步单元215在接受到同步请求后,在检测到当前指令完成且数据落盘之后,向调度器250输出同步完成信号。
[0054]
具体而言,根据本公开的一个或多个实施例,计算设备210的具体操作流程可以包括:将包括配置指令、数据操作指令和同步指令的处理指令240获取到指令存储单元212,由指令译码单元213进行指令译码,控制单元214根据参数配置对例如数据读取单元216、数据处理单元217、专用处理单元211以及同步单元215的后续模块输出控制信号。数据读取单元216根据控制信号按特定方式对源存储器220发起连续的读操作。读数据返还后,数据处理单元216根据控制信号对数据进行移位和填充等操作。专用处理单元211从数据处理单元217获取数据,并且根据控制信号同步地对属于其负责部分的数据进行提取和拼接操作,并最终写入到目标存储器230。在专用处理单元211对数据进行处理时,不同的专用处理单元211负责处理卷积核上不同的点,并且在整个处理过程中,控制单元214会进行若干次循环,直到整个卷积核的所有点循环完成。在所有数据落盘后,同步模块215根据控制单元214的控制信号以及专用处理单元211返还的控制信号进行判断,并且向调度器250返还操作完成信号,以指示数据操作已经完成。
[0055]
应当理解,图像处理环境200同样仅仅是示例性而不是限制性的,并且其是可扩展的。此外,在图2所示的图像处理环境200中,计算设备210从源存储器220获取输入图像120、向目标存储器230提供输出图像130、获取指令240以及与调度器250交互的过程可以通过网络来进行。
[0056]
图3示出了根据本公开的实施例的图像处理方法200的流程图。具体而言,图像处理方法300可以由图1中所示的图像处理环境100中的计算设备110或者图2中所示的图像处理环境200中的计算设备210来执行。应当理解的是,图像处理方法300还可以包括未示出的附加操作和/或可以省略所示出的操作,本公开的范围在此方面不受限制。以下以计算设备110作为执行主体为例说明图像处理方法300的各个步骤。
[0057]
在框302,计算设备110获取输入图像。根据本公开的一个或多个实施例,输入图像可以是hwc格式的输入图像,并且包括多个通道,多个通道中的每个通道包括多个像素点。
[0058]
以下参见图4来描述输入图像的具体形式。
[0059]
图4示出了根据本公开的实施例的输入图像400的示意图。如图4中所示,输入图像400具有由横线阴影部分表示的一个卷积核。标号401表示输入图像400的通道数c,并且同时也表示卷积核的通道数。标号402和标号403分别表示输入图像400的高度in_h和宽度in_w,它们也可以分别被认为是输入图像400的列维度和行维度。标号404和标号405分别表示卷积核的高度r和宽度s。根据本公开的一个或多个实施例,输入图像的高度in_h和宽度in_w的单位可以是输入图像400的像素。
[0060]
在方法300中,首先以输入图像400以及卷积核的通道数c为3作为示例来进行描述。
[0061]
在框304,计算设备110针对输入图像的每个通道,使用多个专用处理单元111并行地执行像素提取,以得到针对每个通道的每个对应像素点的像素点数据。
[0062]
在卷积层的前向计算过程中,卷积核会按行方向按步长移动并遍历整行,然后回到行初、向下按步长移动,并继续按行方向遍历整行,重复上述操作直到整个图像遍历完成。一种实现方式是将卷积核移动时每次所在位置所覆盖的数据依次提取出来,展开为一维向量,即im2col操作,展开后的矩阵规模为[out_h*out_w,c*r*s]。之后再将im2col操作后的数据和卷积核进行矩阵乘法,其规模为[f,r*s*c]
·
[r*s*c,out_h*out_w]=[f,out_h*out_w],需要注意的是,矩阵乘公式中的累加维度是[c*r*s],而矩阵乘法模块输入的两个矩阵一般分别是行存储和列存储,所以实际上执行了im2col操作后的数据无需转置。
[0063]
在后向的权重梯度计算中,需要将输出数据权重和执行im2col操作之后的输入数据进行矩阵乘操作,其规模为[f,out_h*out_w]
·
[out_h*out_w,r*s*c]=[f,r*s*c],由于累加维度是[out_h*out_w],所以需要将输入数据整理为[r*s*c,out_h*out_w]格式,out_h*out_w维度的连续存储才能保证向矩阵乘法单元高效率供数。
[0064]
根据本公开的一个或多个实施例,计算设备110使用多个专用处理单元111并行地执行像素提取来提高上述过程中进行像素提取的效率。
[0065]
根据本公开的一个或多个实施例,计算设备110可以在输入图像的每个通道的至少一侧的边缘添加填充,以得到经填充的输入图像。根据所采用的算法以及实际需求的不同,上述填充可以是值为全0或者全1的像素,或者可以是按照其他预设规则的值,比如复制输入图像最外层的像素中的数值。在这种添加填充的情况下,计算设备110将针对经填充的输入图像所包括的多行像素中的每行像素,使用多个专用处理单元111并行地执行像素提取,以得到针对每行像素的行数据。
[0066]
根据本公开的一个或多个实施例,计算设备110可以基于输入图像的尺度以及用于执行像素提取的卷积核的宽度,确定要被添加的填充的数目。根据所采用的算法以及实际需求的不同,出于调整与根据输入图像生成的输出图像对应的输出矩阵的大小或者避免生成缺少数据的前述输出矩阵的目的,计算设备110可以调整要被添加的填充的数目。
[0067]
在框306,计算设备110将在框304所得到的、针对每个通道的每个对应像素点的像素点数据拼接,以得到输出图像。根据本公开的一个或多个实施例,框306中的操作同样可以由计算设备110使用专用处理单元111来执行。
[0068]
以上参见图3描述了根据本公开的实施例的图像处理方法300。根据本公开的一个或多个实施例,图像处理方法300还可以被扩展具有附加的步骤。以下参见图5来进行描述。
[0069]
图5示出了根据本公开实施例的图像处理方法500的流程图。具体而言,图像处理方法500可以由图1中所示的图像处理环境100中的计算设备110或者图2中所示的图像处理环境200中的计算设备210来执行。应当理解的是,图像处理方法500还可以包括未示出的附加操作和/或可以省略所示出的操作,本公开的范围在此方面不受限制。以下以计算设备110作为执行主体为例说明图像处理方法500的各个步骤。
[0070]
在框502,计算设备110获取输入图像。根据本公开的一个或多个实施例,输入图像可以是hwc格式的输入图像,并且包括多个通道,多个通道中的每个通道包括多个像素点。框502所涉及的步骤的具体内容与框302中所涉及的步骤的具体内容相同,在此不再赘述。
[0071]
在框504,计算设备110基于输入图像所包括的通道的数目,确定用于并行地执行所述像素提取的专用处理单元的数目。
[0072]
根据本公开的一个或多个实施例,当专用处理单元的数量不小于输入图像的通道的数目时,并行计算的效率最高。因此,当存在多个专用处理单元可供使用时,可以基于输入图像所包括的通道的数目来确定相等数目的专用处理单元以用于并行地执行像素提取,从而使得图像处理的效率最高。
[0073]
在框506,计算设备110基于以下至少一项来确定由多个专用处理单元中的每个专用处理单元111执行像素提取时每次针对的像素:用于执行像素提取的卷积核的宽度步长;以及用于执行像素提取的卷积核的高度步长。
[0074]
根据本公开的一个或多个实施例,用于执行像素提取的卷积核的宽度步长和高度步长可以是根据算法或者用户需求而被预先配置的。例如,如果用于执行像素提取的卷积核的宽度步长是2,则在每行像素中,每个专用处理单元111将每次每隔1个像素选择对应的像素来用于执行像素提取。
[0075]
根据本公开的一个或多个实施例,方法500中可以无需同时包括框504和框506所涉及的步骤,而是可以只包括框504和框506之一中所涉及的步骤,甚至可以不包括框504和框506所涉及的步骤。
[0076]
在框508,计算设备110针对输入图像的每个通道,使用多个专用处理单元111并行地执行像素提取,以得到针对每个通道的每个对应像素点的像素点数据。框508所涉及的步骤的具体内容与框304中所涉及的步骤的具体内容相同,在此不再赘述。
[0077]
在框510,计算设备110将在框304所得到的、针对每个通道的每个对应像素点的像素点数据拼接,以得到输出图像。框510所涉及的步骤的具体内容与框306中所涉及的步骤的具体内容相同,在此不再赘述。
[0078]
以上参见图3和图5分别描述了根据本公开的实施例的图像处理方法300以及根据本公开的实施例的图像处理方法500。以下将参见图6a至图6h来描述采用根据本公开的实施例的图像处理方法300或者图像处理方法500所带来的图像处理方法中的输入数据变化。
[0079]
图6a示出了根据本公开的实施例的图像处理方法中的输入数据变化610的示意图。在图6a中所示出的输入数据变化610中,标号601、602和603表示输入图像的三个不同通道,其中每个通道的输入数据的高度为2列,宽度为2行,标号604表示高度为1并且宽度为2的卷积核,其也可以被称为滤波器。
[0080]
在图6a至图6h中,以预设通道数c=3、输入图像高度in_h=2,输入图像宽度in_w=2,卷积核高度r=1,卷积核宽度s=2,宽度步长stride_w=1,高度步长stride_h=1,上
侧填充pad_up=0,下侧填充pad_down=0,左侧填充pad_left=0,右侧填充pad_right=1的输入图像以及数目为3的专用处理单元为例来进行描述。
[0081]
在图6a中,卷积核604中的左侧的块r0s0添加了虚线框表明将针对卷积核中的这一块进行处理,标号611表示从输入数据的不同通道601、602和603中的左上像素提取的数据,标号612表示数据611无需变换即可用于并行计算,标号613、614和615表示分别由三个专用数据处理单元处理后的、针对从输入数据的不同通道601、602和603中的左上像素提取的数据611的三个单独数据。
[0082]
通过图6a可以看到,三个专用数据处理单元分别针对从输入数据的不同通道601、602和603中的左上像素提取的数据611进行处理。
[0083]
图6b中,卷积核604中的左侧的块r0s0添加了虚线框表明将针对卷积核中的这一块进行处理,标号621表示从输入数据的不同通道601、602和603中的右上像素提取的数据,标号622表示数据621无需变换即可用于并行计算,标号623、624和625表示分别由三个专用数据处理单元处理后的、针对从输入数据的不同通道601、602和603中的右上像素提取的数据621的三个单独数据。
[0084]
通过图6b可以看到,三个专用数据处理单元分别针对从输入数据的不同通道601、602和603中的右上像素提取的数据621进行处理。
[0085]
在图6c中,卷积核604中的左侧的块r0s0添加了虚线框表明将针对卷积核中的这一块进行处理,标号631表示从输入数据的不同通道601、602和603中的左下像素提取的数据,标号632表示数据631无需变换即可用于并行计算,标号633、634和635表示分别由三个专用数据处理单元处理后的、针对从输入数据的不同通道601、602和603中的左下像素提取的数据631的三个单独数据。
[0086]
通过图6c可以看到,三个专用数据处理单元分别针对从输入数据的不同通道601、602和603中的左下像素提取的数据631进行处理。
[0087]
图6d中,卷积核604中的左侧的块r0s0添加了虚线框表明将针对卷积核中的这一块进行处理,标号641表示从输入数据的不同通道601、602和603中的右下像素提取的数据,标号642表示数据641无需变换即可用于并行计算,标号643、644和645表示分别由三个专用数据处理单元处理后的、针对从输入数据的不同通道601、602和603中的右下像素提取的数据641的三个单独数据。
[0088]
通过图6d可以看到,三个专用数据处理单元分别针对从输入数据的不同通道601、602和603中的右下像素提取的数据641进行处理。
[0089]
在图6e中,卷积核604中的右侧的块r0s1添加了虚线框表明将针对卷积核中的这一块进行处理,标号651表示从输入数据的不同通道601、602和603中的左上像素提取的数据,标号652表示数据651无需变换即可用于并行计算,标号653、654和655表示分别由三个专用数据处理单元处理后的、针对从输入数据的不同通道601、602和603中的左上像素提取的数据651的三个单独数据。
[0090]
通过图6e可以看到,三个专用数据处理单元分别针对从输入数据的不同通道601、602和603中的左上像素提取的数据651进行处理。
[0091]
图6f中,卷积核604中的右侧的块r0s1添加了虚线框表明将针对卷积核中的这一块进行处理,标号661表示从输入数据的不同通道601、602和603中的右上像素提取的数据,
并且标识这些数据的框中的x表示这些数据是按照预设参数被填充的,标号662表示对数据661进行变换,按照预设参数添加了填充并且用于并行计算,标号663、664和665表示分别由三个专用数据处理单元处理后的、针对从输入数据的不同通道601、602和603中的右上像素提取的数据662的三个单独数据。
[0092]
通过图6f可以看到,三个专用数据处理单元分别针对从输入数据的不同通道601、602和603中的右上像素提取的数据662进行处理。
[0093]
在图6g中,卷积核604中的右侧的块r0s1添加了虚线框表明将针对卷积核中的这一块进行处理,标号671表示从输入数据的不同通道601、602和603中的左下像素提取的数据,标号672表示数据671无需变换即可用于并行计算,标号673、674和675表示分别由三个专用数据处理单元处理后的、针对从输入数据的不同通道601、602和603中的左下像素提取的数据671的三个单独数据。
[0094]
通过图6g可以看到,三个专用数据处理单元分别针对从输入数据的不同通道601、602和603中的左下像素提取的数据671进行处理。
[0095]
图6h中,卷积核604中的右侧的块r0s1添加了虚线框表明将针对卷积核中的这一块进行处理,标号681表示从输入数据的不同通道601、602和603中的右下像素提取的数据,并且标识这些数据的框中的x表示这些数据是按照预设参数被填充的,标号682表示对数据681进行变换,按照预设参数添加了填充并且用于并行计算,标号683、684和685表示分别由三个专用数据处理单元处理后的、针对从输入数据的不同通道601、602和603中的右上像素提取的数据682的三个单独数据。
[0096]
通过图6h可以看到,三个专用数据处理单元分别针对从输入数据的不同通道601、602和603中的右上像素提取的数据682进行处理。
[0097]
需要说明的是,由于图6a至图6h示例中,卷积核的高度为1,宽度为2,并且卷积核将作为一个整体来分别在输入图像的三个通道601、602和603上进行移动,因此为了避免卷积核移动超出输入图像的三个通道601、602和603,卷积核的左侧块r0s0仅移动经过输入数据图像的三个通道601、602和603的第一列和第二列,并且卷积核的右侧块r0s1仅移动经过输入图像的三个通道601、602和603的第二列和第三列,其中第三行为填充行。
[0098]
在如图6a至图6h所示分别得到了单独数据613、614、615、623、624、625、633、634、635、643、644、645、653、654、655、663、664、665、673、674、675、683、684和685之后,可以对它们进行拼接以得到输出矩阵,以下参见图7进行描述。
[0099]
图7示出了根据本公开的实施例的输出矩阵700的示意图。在矩阵700中,第一行为与卷积核左侧的块r0s0在第一通道601相关联的单独数据613、623、633和643中的数值,第二行为与卷积核左侧的块r0s0在第二通道602相关联的单独数据614、624、634和644中的数值,第三行为与卷积核左侧的块r0s0在第三通道603相关联的单独数据615、625、635和645中的数值,第四行为与卷积核右侧的块r0s1在第一通道601相关联的单独数据653、663、673和683中的数值,第五行为与卷积核右侧的块r0s1在第二通道602相关联的单独数据654、664、674和684中的数值,第六行为与卷积核右侧的块r0s1在第三通道603相关联的单独数据655、665、675和685中的数值。由此可见,输出矩阵700的矩阵规模为[r*s*c,out_h*out_w]=[6,4],其中输出矩阵700的每一行代表卷积核对应元素在图像上滑动时取出的数据。
[0100]
应当理解,在参照图6a至图6h以及图7所描述的示例中,卷积核左侧的块r0s0和卷
积核右侧的块r0s1在第一通道601中的计算由一个专用处理单元处理,卷积核左侧的块r0s0和卷积核右侧的块r0s1在第二通道602中的计算由另一个专用处理单元处理,卷积核左侧的块r0s0和卷积核右侧的块r0s1在第三通道603中的计算由再一个专用处理单元处理。然而,在实际应用中,并不限于这一对应关系。此外,应当理解,上述示例中的所存储的行和列仅为逻辑概念,而并不代表实际在存储器中的位置。
[0101]
以上参考图1至图7描述了与可以在其中实现本公开的某些实施例中的图像处理方法的图像处理环境100、可以在其中实现本公开的某些实施例中的图像处理方法的图像处理环境200、根据本公开实施例的图像处理方法300以及根据本公开实施例的图像处理方法500相关的内容。应当理解,上述描述是为了更好地展示本公开中所记载的内容,而不是以任何方式进行限制。
[0102]
应当理解,本公开的上述各个附图中所采用的各种元件的数目和物理量的大小仅为举例,而并不是对本公开的保护范围的限制。上述数目和大小可以根据需要而被任意设置,而不会对本公开的实施方式的正常实施产生影响。
[0103]
上文已经参见图1至图7描述了根据本公开的实施方式的图像处理方法300和图像处理方法500的细节。在下文中,将参见图4描述图像处理装置中的各个模块。
[0104]
图8是根据本公开实施例的图像处理装置800的示意性框图。如图8所示,图像处理装置800包括:获取模块810,被配置为获取输入图像,输入图像包括多个通道,多个通道中的每个通道包括多个像素点;第一计算模块820,被配置为针对输入图像的每个通道,使用多个专用处理单元并行地执行像素提取,以得到针对每个通道的每个对应像素点的像素点数据;以及拼接模块830,被配置为将针对每个通道的每个对应像素点的像素点数据拼接,以得到输出图像。
[0105]
在一个或多个实施例中,其中第一计算模块820包括:填充模块(未示出),被配置为在输入图像的多个通道的至少一侧的边缘添加填充,以得到经填充的多个通道;以及第二计算模块(未示出),被配置为针对经填充的多个通道中的经填充的每个通道,使用多个专用处理单元并行地执行像素提取,以得到针对经填充的每个通道的每个对应像素点的像素点数据。
[0106]
在一个或多个实施例中,其中图像处理装置800包括:填充数目确定模块(未示出),被配置为基于输入图像的尺度以及用于执行像素提取的卷积核的宽度,确定要被添加的填充的数目。
[0107]
在一个或多个实施例中,其中第一计算模块820包括:单元数目确定模块(未示出),被配置为基于输入图像所包括的通道的数目,确定用于并行地执行像素提取的专用处理单元的数目。
[0108]
在一个或多个实施例中,其中第一计算模块820包括:像素确定模块(未示出),被配置为基于以下至少一项来确定由多个专用处理单元中的每个专用处理单元执行像素提取时每次针对的像素:用于执行像素提取的卷积核的宽度步长;以及用于执行像素提取的卷积核的高度步长。
[0109]
通过以上参考图1至图8的描述,根据本公开的实施方式的技术方案相对于传统方案具有诸多优点。例如,利用根据本公开的实施例的技术方案,可以灵活支持各种规模输入图像的格式处理,能够充分利用硬件的并行性特点,高效地进行像素提取,高效地进行像素
提取,从而可以支持高效的权重梯度计算,能够提升整体计算过程的吞吐率,并且因此能够提升用户体验。
[0110]
具体而言,利用根据本公开的实施例的技术方案,可以基于接收到的参数配置指令来灵活第配置参数,因此可以适应多种输入图像规模和卷积核规模。同时,由于多个专用处理单元并行地工作,因此总体上能够高效率地完成输入数据处理工作。此外,由于根据本公开的实施例的技术方案相当于一次性完成了im2col操作和transpose操作,因此其实现无需占用额外的存储空间。
[0111]
根据本公开的实施例,本公开还提供了一种电子设备、一种计算机可读存储介质和一种计算机程序产品。
[0112]
图9示出了可以用来实施本公开的实施例的示例电子设备900的示意性框图。例如,如图1所示的计算设备110、如图2所示的计算设备210和如图8所示的图像处理装置800可以由电子设备900来实施。电子设备900旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0113]
如图9所示,设备900包括计算单元901,其可以根据存储在只读存储器(rom)902中的计算机程序或者从存储单元908加载到随机访问存储器(ram)903中的计算机程序,来执行各种适当的动作和处理。在ram 903中,还可存储设备900操作所需的各种程序和数据。计算单元901、rom 902以及ram 903通过总线904彼此相连。输入/输出(i/o)接口905也连接至总线904。
[0114]
设备900中的多个部件连接至i/o接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0115]
计算单元901可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元901的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元901执行上文所描述的各个方法和处理,例如方法300和500。例如,在一些实施例中,方法300和500可以被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由rom902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序加载到ram 903并由计算单元901执行时,可以执行上文描述的方法300和500的一个或多个步骤。备选地,在其他实施例中,计算单元901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法300和500。
[0116]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算
机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0117]
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0118]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0119]
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0120]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
[0121]
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
[0122]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0123]
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献