掌桥专利:专业的专利平台
掌桥专利
首页

处理张量数据的方法和装置

文献发布时间:2023-06-19 11:08:20


处理张量数据的方法和装置

技术领域

本公开总体上涉及人工智能的技术领域,并且具体地涉及一种处理张量数据的方法和装置。

背景技术

相关技术中提出的基于感兴趣区域(Region of Interest,ROI)的目标检测方案中,对于每个输入张量(tensor),可以通过例如区域推荐网络(Region Proposal Network,RPN)等生成大量的ROI,例如,可以是数千个、数万个、数十万个、甚至更多的ROI。

然后,针对输入张量中与所生成的各个ROI相对应的各个局部张量,可以执行诸如排序、非极大值抑制、插值和对齐等各种处理,并且进一步地,可以通过例如基于区域的卷积神经网络(Region-based Convolution Neural Network,RCNN)等,获得针对输入张量的检测结果。

发明内容

根据本公开的一个方面,提供了一种处理张量数据的方法,该方法可以包括:存储多个指令序列,每个指令序列用于处理与该指令序列相对应的数量的张量;针对输入张量的每个感兴趣区域,从所述输入张量中确定与该感兴趣区域对应的局部张量;以及针对所获取的每第一数量的局部张量,执行所述多个指令序列中的用于处理所述第一数量的张量的第一指令序列。

根据本公开的另一个方面,还提供了一种处理张量数据的装置,该装置可以包括:指令存储模块,被配置为存储多个指令序列,每个指令序列用于处理与该指令序列相对应的数量的张量;张量获取模块,被配置为针对输入张量的每个感兴趣区域,从所述输入张量中获取与该感兴趣区域对应的局部张量;以及第一指令执行模块,被配置为针对通过所述张量获取模块所获取的每第一数量的局部张量,执行所述多个指令序列中的用于处理所述第一数量的张量的第一指令序列。

根据本公开的另一个方面,还提供了一种计算机可读存储介质,在其上存储有计算机程序,所述计算机程序用于执行上述方法。

根据本公开的另一个方面,还提供了一种电子设备,该电子设备可以包括处理器和用于存储所述处理器可执行的指令的存储器,所述处理器用于从所述存储器中读取所述指令,并执行所述指令以实现上述方法。

通过根据本公开的实施例的方法、装置和电子设备,能够减少在张量数据的处理过程中的数据传输量,提升张量数据的处理速度。

附图说明

通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。

图1示出用于处理张量数据的示例装置。

图2示出根据本公开的实施例的用于处理张量数据的示例方法。

图3示出根据本公开的实施例的局部张量和ROI的示例。

图4示出根据本公开的实施例的处理过程的示例。

图5示出针对张量要执行的运算示例。

图6示出针对图5的运算的过程的示例。

图7示出根据本公开的实施例的针对图5的运算的过程的示例。

图8示出根据本公开的实施例的用于处理张量数据的示例方法。

图9示出根据本公开的实施例的用于处理张量数据的示例方法。

图10示出根据本公开的实施例的用于处理张量数据的示例方法。

图11示出根据本公开的实施例的用于处理张量数据的示例装置。

图12示出根据本公开的实施例的用于处理张量数据的示例装置。

图13示出根据本公开的实施例的用于处理张量数据的示例装置。

图14示出根据本公开的实施例的用于处理张量数据的示例装置。

图15示出根据本公开的实施例的电子设备的示例。

具体实施方式

下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。

在基于ROI的目标检测和标注方案中,所生成的ROI的数量往往十分巨大并且是不确定的,而且还随着输入张量的不同而变化。对于在生成ROI之后的基于与各个ROI相对应的各个局部张量的处理,难以事先确定和部署一个能够高效处理所有局部张量的指令序列。如果针对每个局部张量重复地执行相同的指令序列,则对于每个局部张量,需要反复地加载相关数据和参数(例如,与卷积神经网络的各层运算相关的数据和参数),而这些相关参数可能占用较多的存储资源,并且反复的数据加载将造成严重的带宽浪费,从而严重地影响执行效率。

为此,如图1所示,可以预先基于用于处理单个局部张量的指令序列,生成指令模板150,并将所生成的指令模板150存储到用于执行目标检测任务的示例装置100的存储器120中。在示例装置100运行时,基于中央处理单元(Central Processing Unit,CPU)、高级精简指令集计算机器(Advanced RISC Machine,ARM)处理器、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)等开发的处理器110可以根据从存储器120中读取的该指令模板150和实际生成的ROI数量,生成一个用于处理所有局部张量的指令序列160,并将该指令序列160存储到存储器140中。然后,示例装置100中的诸如卷积神经网络加速核这样的处理器130可以从存储器140中读取所生成的指令序列160,并针对所有的局部张量执行该指令序列160。

然而,示例装置100中的处理器110和130具有异构性,这导致示例装置100具有天然的系统性风险。例如,难以在由处理器130执行的处理过程中检测出处理器110的执行错误。另外,在示例装置100的运行过程中还存在从存储器120到存储器140的数据流,这造成额外的带宽开销。

图2示出根据本公开的实施例的用于处理张量数据的示例方法200,该示例方法100可以包括步骤110、120和130。

在步骤110中,可以存储M个指令序列,其中,M可以是任意自然数,并且M个指令序列中的每个指令序列可以分别用于处理与该指令序列相对应的数量的张量。

例如,M个指令序列可以包括用于对N

M个指令序列240中的各指令序列可以用于处理相同的一个或多个任务,例如排序、非极大值抑制、插值、对齐、执行RCNN模型等。另外,M个指令序列中的各指令序列可以相同或不同的方法处理上述相同的一个或多个任务,并且还可以针对不同的张量数量预先进行不同的优化。

本公开中的“张量”可以包括例如人工智能领域中的“特征数据”或“特征图”等,相应的示例可以包括但不局限于能够通过人眼在视觉上辨别或观看的彩色或单色的图像、图片或视频帧以及无法通过人眼在视觉上辨别或观看的抽象数据等。例如,张量可以是彩色图像、灰度图像、图像序列中的某一帧图像等,也可以是神经网络的某一层的中间结果等。另外,张量可以包括一个或多个通道,并且每个通道可以携带关于该张量的一个或多个方面的特征。例如,张量可以包括分别表征红、黄、蓝等不同颜色的色彩信息通道,也可以包括表征灰度信息的灰度信息通道,还可以包括表征诸如锐度信息、边缘信息等其他特征信息的一个或多个其他通道。本公开不局限于张量的类型、形式、形状、内容等。

然后,在步骤120中,可以针对输入张量的每个ROI,从输入张量中确定与该ROI对应的局部张量。

图3示出一个示例张量300,其中,每个小方块代表示例张量300中的一个元素点。可以采用任何适当的方式,获得示例张量300的各个ROI,本公开对此不做限制。如图3所示,根据该示例张量300的一个ROI 310,可以从示例张量300中确定与ROI 310相对应的一个局部张量320,其中,局部张量320是示例张量300的一个数据切块,其与示例张量300可以具有不同的宽度和高度,但具有相同的深度(即,通道数量)。

在图3的示例中,用数据立方体表示示例张量300和局部张量320,并且用二维矩形表示ROI 310。然而,本公开不局限于图3的示例。例如,输入张量和局部张量也可以是二维的数据阵列(例如,灰度图等单色图像)等,并且针对输入张量确定的ROI还可以具有圆形、三角形、多边形或者其他任意形状,诸如此类。

另外,由于ROI与局部张量的对应性,例如,对ROI数据进行排序实际上相当于对使用ROI数据描述的(或者说,与ROI数据对应的)局部张量进行排序,ROI数据中的置信度数据实际上是与该ROI数据相对应的局部张量的置信度。因此,在本公开中,除非另外说明,否则对ROI这局部张量这两者可以不做区分。例如,“感兴趣区域”或“ROI”可以更侧重于描述张量的属性,例如边界和置信度等,而“局部张量”可以更侧重于张量的数据本身,例如张量内部的各个元素。

然后,在步骤130中,可以针对所获取的每第一数量的局部张量,执行上述的M个指令序列中的用于处理第一数量C

可以将第一数量C

在示例方法200中,设置并存储M个指令序列,并且M个指令序列中的每个指令序列可以分别用于处理与该指令序列相对应的数量的张量,然后针对输入张量的每组第一数量的局部张量,执行上述M个指令序列中的用于处理第一数量的张量的第一指令序列。这样的M个指令序列中的每个指令序列可以是预先通过诸如CPU这样的高性能处理器离线地编译成适合于诸如卷积神经网络加速核这样的处理器执行的指令序列。由此,在用于处理张量的装置中,可以不必设置实现方式和处理能力不同的多种处理器,从而避免由模块异构性造成的系统性风险,同时还能够避免与不同处理器相关联的存储器之间的数据流动。

另外,如前文所述,示例方法200中的M个指令序列中的各指令序列可以是针对不同的张量数量预先进行了优化的指令序列,从而允许通过相对较少的存储资源获得较高的执行效率。下面参考图5至图7对此进行更详细的描述。

图5示出针对与所生成的每个ROI相对应的张量要执行的示例运算500,其包括使用参数520的卷积运算510、使用参数540的卷积运算530和使用参数560的卷积运算550。

图6示出针对示例运算500的示例过程600。示例过程600可以针对与所生成的每个ROI相对应的每个局部张量重复地执行。

如图6所示,对于与每个ROI相对应的每个局部张量,示例过程600包括:步骤610,从存储器中加载局部张量;步骤620,从存储器中加载用于卷积运算510的参数520;步骤630,执行卷积运算510;步骤640,从存储器中加载用于卷积运算530的参数540;步骤650,执行卷积运算530;步骤660,从存储器中加载用于卷积运算550的参数560;步骤670,执行卷积运算550;步骤680,将通过卷积运算550获得的结果张量存储到存储器中。

图7示出针对示例运算500的示例过程700。该示例过程700可以是图2的示例方法200的步骤230的一个示例,并且对示例过程600中的步骤进行了调整。

如图7所示,在示例过程700中,在通过步骤620加载用于卷积运算510的参数520之后,进入针对每个局部张量的循环710。在循环710中,针对每个局部张量,通过步骤610加载该局部张量,然后通过步骤630执行卷积运算510,然后通过步骤720存储通过卷积运算510获得的第一结果。然后,在通过步骤640加载用于卷积运算530的参数540之后,进入针对每个第一结果的循环730。在循环730中,针对每个第一结果,通过步骤740加载该第一结果,然后通过步骤650执行卷积运算530,然后通过步骤750存储通过卷积运算530获得的第二结果。然后,在通过步骤660加载用于卷积运算550的参数560之后,进入针对每个第二结果的循环760。在循环760中,针对每个第一结果,通过步骤740加载该第二结果,然后通过步骤670执行卷积运算550,然后通过步骤680存储通过卷积运算550获得的结果张量。

假设在上述示例过程600和700中,从存储器中加载用于每个卷积运算的每个参数的用时为T

在实际应用中,例如在实际的RCNN模型中,用于每个卷积运算的参数的总大小往往远大于用于该卷积运算的张量的大小。相应地,针对每个卷积运算,加载用于该卷积运算的参数的用时T

另外,在实际的处理过程中,由于与诸如卷积神经网络加速核这样的处理器相关联的高速存储器的容量通常十分有限,所以对于示例过程600,通过步骤630获得的第一结果和通过步骤650获得的第二结果往往也需要存储到容量更大但存取速度更低的片外存储器(例如,动态随机存取存储器)中。考虑到这一点,示例过程700相对于示例过程600的执行效率的提升实际上可以更高。

如前文所述,示例方法200的M个指令序列中的每个指令序列可以是诸如示例过程700这样的针对特定数量的张量进行了优化的指令序列,例如,第一指令序列用于处理第一数量C

如前文所述,针对输入张量生成的ROI的数是不确定的,因此最终生成的ROI的数量可能不是第一数量C

如图8所示,在一个实施例中,示例方法200还可以包括:步骤810,针对所获取的第二数量C

例如,假设M个指令序列中包括用于处理8个ROI的指令序列IS

如果在执行了若干次指令序列IS

例如,如果在执行了若干次指令序列IS

通过步骤810,示例方法200能够处理任意数量的ROI。

在另一个实施例中,如图9所示,示例方法200还可以包括:步骤910,获取所获取的第二数量C

继续上面的假设,例如,如果在执行了若干次指令序列IS

例如,如果在执行了若干次指令序列IS

在该实施例中,代替前一实施例中的对最后剩余数量的拆分,通过获取任意一个或多个局部张量的至少一个拷贝来获取符合条件的数量的局部张量数据,从而能够避免在数量拆分过程中所需的可能较为复杂的决策处理。通过步骤910,能够以较少的代价确保示例方法100可适用于任意数量的ROI。

在一个实施例中,如图10所示,示例方法200还可以包括:步骤1010,将所获取的每个局部张量调整为预定尺寸。在步骤1010中,可以采用任何适当的方法将所获取的每个局部张量调整为预定尺寸,例如可以采用双线性插值、膨胀卷积等。

针对输入张量产生的各个ROI的对应的局部张量可以具有不同的尺寸和形状。通过步骤1010将各个局部张量调整为预定尺寸和形状,能够允许前述的M个指令序列中的每个指令序列能够以统一、简单的处理逻辑处理各个局部张量,从而允许通过适当的优化技术优化指令序列,从而提供更高的执行效率。

应理理解,根据本公开的实施例的方法可以不局限于上述示例方法200,并且各个步骤的次序和实现细节也可以不局限于上述示例。

图11示出根据本公开的实施例的用于处理张量数据的示例装置1100,该示例装置1100可以包括指令存储模块1110、张量获取模块1120和第一指令执行模块1130。

指令存储模块1110可以被配置为存储上述的M个指令序列,其中,M个指令序列中的每个指令序列可以分别用于处理与该指令序列相对应的数量的张量,例如,M个指令序列可以包括用于对N

张量获取模块1120可以被配置为执行示例方法200的步骤120。例如,张量获取模块1120可以接收输入张量T

第一指令执行模块1130可以被配置为执行示例方法200的步骤130。在图11的示例中,第一指令执行模块1130可以包括计数器1140和缓冲存储器1150。例如,如果1≤N

在另外的实施例中,张量获取模块1120和第一指令执行模块1130可以通过例如基于图形处理器、FPGA等开发的适当的处理器来实现。

该示例装置1100可以用于实施示例方法200。如图11所示,在示例装置1100中,可以使用同一处理器,从而避免由模块异构性造成的系统性风险,同时还能够避免与不同处理器相关联的存储器之间的数据流动。另外,如前文所述,存储于指令存储模块1110中的M个指令序列中的各指令序列可以是针对不同的张量数量预先进行了优化的指令序列,使得示例装置1100能够具有较高的执行效率。

在一个实施例中,如图12所示,示例装置1100还可以包括第二指令执行模块1210,该第二指令执行模块1210可以被配置为执行上述的步骤810,从而使示例装置1100能够处理任意数量的ROI。在一个示例中,类似于第一指令执行模块1130,第二指令执行模块1210可以包括计数器和用于缓存局部张量的缓冲存储器。在另外的示例中,第二指令执行模块1210还可以包括用于缓存指令序列的指令缓冲存储器。在另外的示例中,第二指令执行模块1210可以重用第一指令执行模块1130中的电路,也可以与第一指令执行模块1130一体地实现。

在另一个实施例中,如图13所示,示例装置1100还可以包括张量复制模块1310,该张量复制模块1310可以被配置为执行示例方法200的步骤910。在该示例中,通过张量复制模块1310补充局部张量,使得示例装置1100能够避免实现在数量拆分过程中所需的可能较为复杂的决策处理,从而降低示例装置1100的设计复杂度,并且能够提高示例装置1100的执行效率。

在另一个实施例中,如图13所示,示例装置1100还可以包括张量调整模块1410。该张量调整模块1410可以被配置为执行示例方法200中的步骤1010,从而为第一指令执行模块1130和第二指令执行模块1210(未在图13中示出)提供具有预定尺寸的局部张量,由此允许指令存储模块1110中的M个指令序列是通过适当的优化技术优化的指令序列。

在一个实施例中,示例装置1100中的各个模块可以通过例如基于图形处理器、FPGA等开发的适当的处理器一体地实现。

应当理解,根据本公开的实施例的装置不局限于上述示例装置1100。例如,在示例装置100中还可以包括诸如卷积运算模块等其他模块。另外,装置中的各个模块可以通过任何适当的方式连接或耦接在一起,并且在上述的图11至图14的示例中,各模块之间的箭头仅用于表示所关注的数据或信号的流向,但不表示模块之间的数据或信号的流向只能按照箭头方向。

图15示出根据本公开实施例的电子设备1500,该电子设备1500可以包括一个或多个处理器1510和存储器1520。

处理器1510可以是CPU或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备1500中的其他组件以执行期望的功能。

存储器1520可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪速存储器等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器1510可以运行所述程序指令,以实现上述示例方法200以及/或者其他期望的功能。

在一个示例中,电子设备1500还可以包括输入装置1530和输出装置1540,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。例如,该输入设备1530还可以包括例如键盘、鼠标等。该输出装置1540可以包括例如显示器、扬声器、打印机,以及通信网络及其所连接的远程输出设备等。另外,电子设备1500还可以包括任何其他适当的组件或模块。

除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的声源定位方法中的步骤。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的声源定位方法中的步骤。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、RAM、ROM、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。

本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。

还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。

提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。

为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

相关技术
  • 张量浮点数据处理方法、装置、设备及存储介质
  • 用于获得和处理带数字签名信息的张量数据的方法和装置
技术分类

06120112809792