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

用于识别图像的方法和设备

文献发布时间:2023-06-19 10:05:17


用于识别图像的方法和设备

本申请要求于2019年8月26日在韩国知识产权局提交的第10-2019-0104578号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。

技术领域

下面的描述涉及用于处理数据的方法和设备。更具体地,涉及用于识别图像的方法和设备。

背景技术

神经网络表示使用生物大脑作为模型的计算架构。根据神经网络技术的最新发展,通过在各种类型的电子系统中使用神经网络设备来分析输入数据,并提取有效信息。

神经网络设备针对输入数据执行大量的操作。已对能够高效地处理神经网络操作的技术进行研究。神经网络设备已经广泛用于图像识别。

发明内容

提供本发明内容来以简化的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不意在标识要求权利的主题的关键特征或必要特征,也不意在用于帮助确定要求权利的主题的范围。

用于处理数据的方法和设备、以及在其上记录有用于在计算机上执行所述方法的程序的计算机可读记录介质被提供。

在一个总体方面,一种识别图像的方法包括:获得输入图像;基于包括在输入图像中的有效信息,识别作为输入数据的输入图像的稀疏性;基于输入图像的稀疏性的形式重新排列输入图像;在至少一个卷积层上通过对重新排列的输入图像执行卷积运算来生成最终特征图;以及基于最终特征图来获得识别结果。

生成最终特征图的步骤可包括:识别每个卷积层的输入数据的稀疏性;基于稀疏性的形式重新排列输入数据;在每个卷积层上通过对重新排列的输入数据执行卷积运算来生成输出特征图,其中,所述至少一个卷积层中的首层卷积层的输入数据为重新排列的输入图像,所述至少一个卷积层中的最后层卷积层输出的输出特征图为最终特征图。

重新排列输入数据的步骤可包括:基于包括在输入数据中的无效值的分布来重新排列输入数据。

重新排列输入数据的步骤可包括:基于包括在输入数据的多个行中的每个行中的无效值的数量,来重新排列包括在输入数据中的所述多个行。

重新排列输入数据的步骤可包括:执行重新排列,使得输入数据的所述多个行之中的包括最多无效值的输入数据的第一行与输入数据的所述多个行之中的包括最少无效值的输入数据的第二行相邻。

重新排列输入数据的步骤可包括:根据第一规则移位包括在输入数据中的多个列的元素。

第一规则可包括将包括在输入数据中的所述多个列的元素沿相同方向移位特定大小,并且第一规则可被周期性地应用于包括在输入数据中的所述多个列。

重新排列输入数据的步骤可包括:重新排列包括在输入数据中的所述多个列,以跳过关于在包括在输入数据中的多个列之中的仅包括无效值的至少一个列的处理。

重新排列输入数据的步骤可包括:将包括在输入数据中的第一列的第一元素移位到与输入数据的与第一列相邻的第二列的最后的元素对应的位置。

生成最终特征图的步骤可包括:将第二规则和第三规则中的一个或两个应用于重新排列的输入数据;和对应用了第二规则和第三规则中的一个或两个的重新排列的输入数据和另外的数据执行卷积运算。

在另一总体方面,一种非暂时性计算机可读记录介质,在其上记录了用于在计算机上执行所述方法的程序。

在另一总体方面,一种用于识别图像的设备,包括:存储器,至少一个程序被存储在存储器中;和处理器,被配置为执行所述至少一个程序,其中,处理器被配置为:获得输入图像;基于包括在输入图像中的有效信息,识别作为输入数据的输入图像的稀疏性;基于输入图像的稀疏性的形式重新排列输入图像;在至少一个卷积层上通过对重新排列的输入图像执行卷积运算来生成最终特征图;以及基于最终特征图来获得识别结果。

处理器还可被配置为:通过以下步骤来生成最终特征图:识别每个卷积层的输入数据的稀疏性,基于稀疏性的形式重新排列输入数据,在每个卷积层上通过对重新排列的输入数据执行卷积运算生成输出特征图,其中,所述至少一个卷积层中的首层卷积层的输入数据为重新排列的输入图像,所述至少一个卷积层中的最后层卷积层输出的输出特征图为最终特征图。

在另一总体方面,一种用于识别图像的设备,包括:一个或多个存储器,存储一个或多个程序;和一个或多个处理器,被配置为执行所述一个或多个程序中的至少一个以:获得输入图像,确定作为输入数据的输入图像中的包括无效值的位置,通过操作输入数据中的包括无效值的位置来生成重新排列的数据,将规则应用于重新排列的数据,在至少一个卷积层上通过对应用了规则的重新排列的数据执行卷积运算来生成最终特征图,以及基于最终特征图来获得识别结果。

所述一个或多个处理器可执行所述一个或多个程序中的至少一个,以通过将包括在输入数据中的有效值移位到输入数据中的包括无效值的位置来生成重新排列的数据。

所述一个或多个处理器可执行所述一个或多个程序中的至少一个,以通过将无效值移位到输入数据中的另外的位置来生成重新排列的数据。

所述一个或多个处理器可执行所述一个或多个程序中的至少一个,以通过从输入数据去除无效值来生成重新排列的数据。

所述一个或多个处理器可执行所述一个或多个程序中的至少一个,以将规则应用于包括在重新排列的数据的窗口中的有效值,来使包括在将被输入到逻辑电路的窗口的输入层中的无效值的总数最小化。

规则可包括:将包括在重新排列的数据的窗口的与输入层相邻的层中的至少一个有效值移位到输入层的包括无效值的相应位置。

规则可包括:将包括在重新排列的数据的窗口的与输入层相邻的层中的至少一个有效值移位到输入层的包括无效值的横向位置。

在另一总体方面,一种处理数据的方法,包括:基于包括在输入数据中的有效信息,识别输入数据的稀疏性;基于稀疏性的形式重新排列输入数据;和通过处理重新排列的输入数据来生成输出数据。

在另一总体方面,一种用于处理数据的设备,包括:存储器,至少一个程序被存储在存储器中;和处理器,被配置为执行所述至少一个程序以:基于包括在输入数据中的有效信息,识别输入数据的稀疏性;基于稀疏性的形式重新排列输入数据;并且通过处理重新排列的输入数据来生成输出数据。

在另一总体方面,一种用于处理数据的设备,包括:一个或多个存储器,存储一个或多个程序;和一个或多个处理器,被配置为执行所述一个或多个程序中的至少一个以:确定输入数据中的包括无效值的位置,通过操作输入数据中的包括无效值的位置来生成重新排列的数据,以及将规则应用于重新排列的数据。

从下面的具体实施方式、附图和权利要求,其他特征和方面将是清楚的。

附图说明

图1是示出神经网络的架构的示图。

图2和图3是示出神经网络中的卷积运算的示例的示图。

图4是用于处理数据的设备的示例的框图。

图5是处理数据的方法的示例的流程图。

图6A和图6B是示出处理器识别输入数据的稀疏性(sparsity)的示例的示图。

图7是示出处理器重新排列输入数据的示例的示图。

图8是示出处理器重新排列输入数据的示例的示图。

图9是示出处理器重新排列输入数据的示例的示图。

图10是示出处理器重新排列输入数据的示例的示图。

图11是示出处理器通过处理重新排列的数据来生成输出数据的示例的流程图。

图12是用于描述处理器将第二规则应用于重新排列的数据的示例的示图;以及

图13是示出处理器将第三规则应用于重新排列的数据的示例的示图。

贯穿附图和具体实施方式,除非另外描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对尺寸、比例和描绘可被夸大。

具体实施方式

提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不受限于在此阐述的那些顺序,而是除了必须以特定的顺序发生的操作之外,可如在理解本申请的公开之后将是清楚地那样被改变。此外,为了增加的清楚和简明,可省略在理解本申请的公开之后已知的特征的描述。

在此描述的特征可以以不同的形式来实现,而不应被解释为受限于在此描述的示例。相反,已提供在此描述的示例,以仅示出在理解本申请的公开之后将是清楚的实现在此描述的方法、设备和/或系统的许多可行方式中的一些可行方式。

贯穿说明书,当组件被描述为“连接到”或“结合到”另一组件时,所述组件可直接“连接到”或“结合到”所述另一组件,或者可存在一个或多个介于它们之间的其他组件。相反,当元件被描述为“直接连接到”或“直接结合到”另一元件时,可不存在介于它们之间的其他元件。同样地,相似的表述(例如,“在……之间”与“紧接在……之间”以及“与……邻近”与“与……紧邻”)也应以相同的方式来解释。如在此使用的,术语“和/或”包括相关所列项中的任意一个或相关所列项中的任意两个或更多个的任意组合。

尽管诸如“第一”、“第二”和“第三”的术语在此可用于描述各种构件、组件、区域、层或者部分,但是这些构件、组件、区域、层或者部分不受这些术语所限制。相反,这些术语仅用于将一个构件、组件、区域、层或者部分与另一构件、组件、区域、层或者部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或者第一部分也可被称为第二构件、第二组件、第二区域、第二层或者第二部分。

在此使用的术语仅用于描述各种示例,并将不用于限制公开。除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。术语“包含”、“包括”和“具有”说明存在陈述的特征、数量、操作、构件、元件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或它们的组合。

除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与基于本申请的公开的理解和本公开所属领域的普通技术人员通常理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如在通用词典中定义的术语)应被解释为具有与它们在相关领域的上下文和本申请的公开中的含义一致的含义,并且不应被理想化或过于形式化地解释。在此关于示例或实施例的术语“可”的使用(例如,关于示例或实施例可包括或实现什么)表示存在包括或实现这样的特征的至少一个示例或实施例,而所有示例不限于此。

在下文中,将参照附图详细描述示例。

图1是示出神经网络的架构的示图。

参照图1,神经网络1可以是深度神经网络(DNN)或n层神经网络的架构。DNN或n层神经网络可对应于卷积神经网络(CNN)、递归神经网络(RNN)、深度信念网络或受限玻尔兹曼机。例如,神经网络1可以是CNN,但不限于此。在图1中,与神经网络1的示例对应的CNN的一些卷积层被示出,但是除了示出的卷积层之外,CNN还可包括池化层或全连接层。

神经网络1可被实现为具有包括输入图像、特征图和输出的多个层的架构。在神经网络1中,利用被称为内核(kernel)的滤波器对输入图像执行卷积运算,结果,输出特征图。利用内核对作为输入特征图的输出的特征图再次执行卷积运算,并输出新的特征图。当如此重复执行卷积运算时,可通过神经网络1最终输出针对输入图像的特征的识别结果。

例如,当将具有24×24像素大小的输入图像被输入到图1的神经网络1时,可通过与内核的卷积运算将输入图像输出为四个通道的特征图,每个通道具有20×20像素大小(这被简称为4@20×20)。然后,可通过重复的与内核的卷积运算来减小20×20特征图的大小(例如,可将4@20×20顺序地减小为4@10×10(即,四个通道的特征图,每个通道具有10×10像素大小)、8@8×8(即,八个通道的特征图,每个通道具有8×8像素大小)、8@4×4(即,八个通道的特征图,每个通道具有4×4像素大小),最终,可输出各自具有1×1像素大小的20个通道的特征图(即,20@1×1)。在神经网络1中,可在一些层中重复执行卷积运算和下采样(或池化)运算,以对来自输入图像的可表示整个输入图像的鲁棒特征进行滤波和输出,并且通过输出的最终特征得到输入图像的识别结果。

图2和图3是示出神经网络中的卷积运算的示例的示图。

参照图2,输入特征图210具有6×6像素大小,内核220具有3×3像素大小,输出特征图230具有4×4像素大小,但是大小不限于此。神经网络可包括具有各种大小的特征图和内核。此外,在输入特征图210、内核220和输出特征图230中定义的值仅是示例,并且不限于此。

内核220在以具有3×3像素大小的区域(或区块)单元在输入特征图210上滑动的同时执行卷积运算,其中,图2中的符号*表示卷积运算。卷积运算表示这样的运算:通过将经由将输入特征图210的任意区域的每个像素值与作为内核220的相应元素的权重相乘(由符号

内核220可首先对输入特征图210的第一区域211执行卷积运算。换言之,将第一区域211的像素值1、2、3、4、5、6、7、8和9分别与内核220的元素的权重-1、-3、+4、+7、-2、-1、-5、+3和+1相乘,结果,获得值-1、-6、12、28,-10,-6,-35、24和9。然后,将值-1、-6、12、28,-10,-6,-35、24和9相加以获得值15,因此将输出特征图230的第一行第一列的像素值231确定为值15。这里,输出特征图230的第一行第一列的像素值231对应于第一区域211。

类似地,在输入特征图210的第二区域212与内核220之间执行卷积运算,因此将输出特征图230的第一行第二列的像素值232确定为4。最终,在输入特征图210的第十六区域213(即,最后的窗口)与内核220之间执行卷积运算,因此将输出特征图230的第四行第四列的像素值233确定为11。

二维(2D)卷积运算已参照图2被描述,但是可选地,卷积运算可对应于三维(3D)卷积运算,其中,如将参照图3所述,存在多个通道的输入特征图、内核和输出特征图。

参照图3,输入特征图201可具有3D大小,在输入特征图201中存在X个输入通道,每个输入通道的2D输入特征图可具有H行W列的大小,其中,X、W和H各自为正整数。内核202可具有4D大小,并且可存在与X个输入通道和Y个输出通道一样多的2D内核(具体地,可存在与X和Y的积一样多的2D内核),每个2D内核具有R行S列的大小,其中R、S和Y各自为正整数。换言之,内核202可具有与输入特征图201的输入通道的数量X和输出特征图203的输出通道的数量Y对应的数量的通道,其中,每个通道的2D内核可具有R行S列的大小。可经由3D输入特征图201与4D内核202之间的3D卷积运算来生成包括多个输出激活的输出特征图203,并且可基于3D卷积运算的结果存在Y个通道。

经由一个2D输入特征图与一个2D内核之间的卷积运算生成输出特征图的处理如以上参照图2所述,并且在X个输入通道的输入特征图201与Y个输出通道的内核202之间重复执行图2中描述的2D卷积运算以生成Y个输出通道的输出特征图203。

图4是用于处理数据的设备的示例的框图。

参照图4,用于处理数据的设备400可包括存储器410和处理器420。尽管在图4中未示出,但是用于处理数据的设备400可与外部存储器连接。图4中示出的用于处理数据的设备400可包括与当前示例相关联的组件。因此,对于本领域普通技术人员将清楚的是,在用于处理数据的设备400中还可包括除了图4中示出的组件之外的其他通用组件。

用于处理数据的设备400可以是参照图1至图3实现上述神经网络的设备。例如,用于处理数据的设备400可利用诸如个人计算机(PC)、服务器装置、移动装置、嵌入式装置等的各种类型的装置来实现。详细地,用于处理数据的设备400可被包括在使用神经网络执行语音识别、图像识别和图像分类的智能电话、平板装置、增强现实(AR)装置、物联网(IoT)装置、自动驾驶车辆、机器人装置或医疗装置中,但不限于此。用于处理数据的设备400可对应于安装在这样的装置上的专用硬件(HW)加速器,并且可以是作为用于驱动神经网络的专用模块的HW加速器(诸如,神经处理单元(NPU)、张量处理单元(TPU)或神经引擎)。

存储器410存储在用于处理数据的设备400中处理的各种数据。例如,存储器410可存储在用于处理数据的设备400中已处理或将被处理的数据。此外,存储器420可存储将由用于处理数据的设备400驱动的应用或驱动器。

例如,存储器410可包括随机存取存储器(RAM)(诸如,动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM))、只读存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、CD-ROM、蓝光光盘、光盘存储装置、硬盘驱动器(HDD)、固态驱动器(SSD)或闪存。

处理器420可控制用于驱动用于处理数据的设备400中的神经网络的总体功能。例如,处理器420通常可通过执行存储在存储器410中的程序,来控制用于处理数据的设备400。处理器420可被实现为包括在用于处理数据的设备400中的中央处理器(CPU)、图形处理器(GPU)或应用处理器(AP),但不限于此。

处理器420可从存储器410读取数据(例如,图像数据、特征图数据或内核数据)或将数据(例如,图像数据、特征图数据或内核数据)写入存储器410,并通过使用读取的数据/写入的数据来执行神经网络。当神经网络被执行时,处理器420可驱动设置在其中的处理单元以重复地执行输入特征图与内核之间的卷积运算,从而生成与输出特征图相关的数据。这里,可基于各种因素(诸如,输入特征图的通道的数量、内核的通道的数量、输入特征图的大小、内核的大小以及值的精度),来确定卷积运算的运算总数。

例如,处理单元可包括用于卷积运算的逻辑电路。也就是说,处理单元可包括利用乘法器、加法器和累加器的组合实现的运算器。乘法器可包括多个子乘法器的组合,加法器也可包括多个子加法器的组合。

处理器420还可包括片上存储器和分配器,片上存储器管理用于处理卷积运算的缓存功能,分配器(dispatcher)分配各种操作数(诸如,输入特征图的像素值和内核的权重)。例如,分配器可将来自存储在存储器410中的数据的由处理单元执行运算所需的操作数(诸如,像素值和权重值)分配给片上存储器。然后,分配器可将分配给片上存储器的操作数再次分配给用于卷积运算的处理单元。

处理器420执行输入特征图数据与内核数据之间的卷积运算,因此当进行运算的数据包括无效信息时,该运算会是不必要的运算。例如,当进行运算的数据为0时,数据之间的卷积运算输出0,因此该不必要的运算仅增加处理器420的计算量。

同时,输入特征图数据和内核数据可被表示为M行N列的矩阵,其中,M和N是正整数。也就是说,输入特征图矩阵和内核矩阵可包括多个元素,在多个元素之中,包括0的元素的数量与不必要的运算的数量成比例。

用于处理数据的设备400可基于包括在输入数据(例如,输入特征图数据和内核数据)中的有效信息(例如,除了0以外的数据),来重新排列(rearrange)输入数据。在此,输入数据的重新排列可表示改变矩阵的原始架构(诸如,改变包括在矩阵中的一些元素的位置或者跳过包括在矩阵中的一些行或列)的操作。在一些示例中,输入数据的重新排列可表示将无效信息移位到输入数据中的另外的位置的操作或者从输入数据去除无效信息的操作。

因此,用于处理数据的设备400可输出有效结果而不执行不必要的运算,从而在输出期望的结果的同时减少计算总量。

在下文中,将参照图5至图13对用于处理数据的装置400重新排列输入数据并处理重新排列的数据以生成输出数据的示例进行描述。

图5是示出处理数据的方法的示例的流程图。

参照图5,处理数据的方法可包括由图4中示出的用于处理数据的设备400按时间序列执行的操作。因此,可看出,以上关于图4中示出的用于处理数据的设备400描述的内容(虽然以下省略)也适用于图5中示出的处理数据的方法。

在操作510中,处理器420可基于包括在输入数据中的有效信息来识别输入数据的稀疏性(sparsity)。

输入数据可表示处理器420将对其执行卷积运算的目标。例如,输入数据可包括图像数据、特征图数据或内核数据。特征图数据可以是输入特征图数据或输出特征图数据。处理器420可在多个层中执行卷积运算,并且前一层中的输出特征图数据可以是下一层中的输入特征图数据。因此,操作510的输入数据可以是输入特征图数据或输出特征图数据。如参照图4详细描述的那样,输入数据可以是包括作为数据的元素的矩阵。

有效信息可表示可被执行有意义的卷积运算的数据。通常,信息可被表示为数字,因此有效信息可表示作为非零数字的数据。换言之,无意义的信息的数据可被表示为0。

处理器420可识别输入数据的稀疏性。在此,稀疏性可表示数据中空白的存在或不存在,或者数据是否包括空白的状态。如上所述,有效信息可被表示为作为非零数字的数据。因此,零数据可表示可被解释为空白数据(即,不存在数据)的无意义的信息。因此,当处理器420识别输入数据的稀疏性时,可表示处理器420识别输入数据中的0的分布。

在下文中,将参照图6A和图6B对处理器420识别输入数据的稀疏性的示例进行描述。

图6A和图6B是示出处理器识别输入数据的稀疏性的示例的示图。

图6A和图6B示意性地示出由处理器420执行的卷积运算。处理器420可通过在输入数据610、620、630和640之间执行卷积运算来生成输出数据。例如,输入数据610、620、630和640可被表示为矩阵,处理器420可通过在包括在矩阵中的通道的元素之间执行乘积求和(sum-of-product)计算来生成输出数据。

在图6A中示出作为输入数据的输入特征图数据610和内核数据620,在图6B中示出输入特征图数据630和内核数据640。在下文中,为了方便起见,包括在输入特征图数据610和630中的元素将被称为激活(a),包括在内核数据620和640中的元素将被称为权重(w)。

当内核数据620与内核数据640相比时,在内核数据640的部分中包括空白。在此,空白可被解释为权重0。也就是说,内核数据640可比内核数据620具有更高的稀疏性,这可表示:与包括在内核数据620中的权重相比,包括在内核数据640中的更多的权重具有0。

同时,在图6A和图6B中示出:0被包括在内核数据640中,但是公开不限于此。换言之,0可被包括在输入数据610、620、630和640中的至少一个中,并且在输入数据610、620、630和640中0的数量和0分布的形式可变化。

处理器420可基于包括在输入数据610、620、630和640中的有效信息(例如,非零数字),来识别输入数据610、620、630和640的稀疏性。换言之,处理器420可识别输入数据610、620、630和640中的0的分布。

返回参照图5,在操作520中,处理器420可基于输入数据的稀疏性的形式重新排列输入数据。

处理器420可基于输入数据中的0的分布来重新排列输入数据。例如,处理器420可基于包括在输入数据的多个行中的每个行中的0的数量,来重新排列多个行。在另一示例中,处理器420可根据第一规则对输入数据的多个列中的每个列的元素移位。在另一示例中,处理器420可重新排列多个列,以跳过关于输入数据的多个列之中的仅包括0的至少一个列的处理。在另一示例中,处理器420可将输入数据的第一列的第一元素移位到与第一列相邻的第二列的最后的元素所对应的位置。

将参照图7至图10对处理器420重新排列输入数据的示例进行描述。

图7是示出处理器重新排列输入数据的示例的示图。

在图7中示出作为输入数据的输入特征图数据710和内核数据720。输入特征图数据710被示出为6行6列的矩阵,内核数据720被示出为6行4列的矩阵,但是配置不限于此。

输入特征图数据710的部分可包括空白。在此,空白可被解释为不存在有效信息,例如,与空白对应的激活可等同于0。在图7中示出:空白被包括在输入特征图数据710中,但是配置不限于此。也就是说,0也可被包括在内核数据720中包括的权重(例如,权重a

处理器420可基于输入特征图数据710的稀疏性的形式,来重新排列输入特征图数据710。例如,处理器420可基于包括在在输入特征图数据710中包括的多个行row 0至row 5中的每个行中的空白的数量,重新排列多个行row 0至row 5。

更具体地,参照输入特征图数据710和特征图数据711,处理器420可执行重新排列,使得多个行row 0至row 5之中的具有最多空白的行之一(例如,row 2和row 5中的row2)和具有最少空白的row 0彼此相邻。处理器420还可执行重新排列,使得多个行row 0至row 5之中的具有第二多空白的row 4和具有第二少空白的row 3彼此相邻。以这种方式,处理器420可基于包括的空白的数量通过重新排列输入特征图数据710的多个行row 0至row5,来生成特征图数据711。

使用通过重新排列生成的特征图数据711,处理器420可使不必要的运算的执行最小化。例如,针对与内核数据720的卷积运算,处理器420可针对每个部分将特征图数据711输入到逻辑电路730。处理器420可将输入特征图数据711的包括在窗口740中的激活输入到逻辑电路730。

处理器420还可通过将具有与窗口740的大小相同的大小的窗口750应用于内核数据720,将包括在窗口750中的权重输入到逻辑电路730。处理器420可重新排列内核数据720,以对应于特征图数据711。特征图数据711中的输入到逻辑电路730的激活的顺序和输入特征图数据710中的输入到逻辑电路730的激活的顺序彼此不同。因此,当在不重新排列内核数据720的情况下将权重输入到逻辑电路730时,可能输出不准确的运算结果。

处理器420可重新排列内核数据720,使得将与输入到逻辑电路730的激活一起被计算的权重被准确地输入到逻辑电路730。处理器420可根据重新排列的内核数据720将权重输入到逻辑电路730。因此,即使利用特征图数据711,也可从逻辑电路730输出准确的运算结果。

当内核数据720被重新排列时,处理器420可以以与如上所述的方式相同的方式重新排列输入特征图数据710,并且将重新排列的输入特征图数据710输入到逻辑电路730。

处理器420可通过调整包括在窗口740中的激活的位置,来防止执行不必要的卷积运算。将参照图11至图13描述处理器420通过调整包括在窗口740中的激活的位置来执行卷积运算的示例。

图8是示出处理器重新排列输入数据的另一示例的示图。

在图8中示出作为输入数据的输入特征图数据810和内核数据820。输入特征图数据810的部分可包括空白。在图8中示出:空白被包括在输入特征图数据810中,但是配置不限于此。也就是说,0也可包括在内核数据820中包括的权重中的至少一个中。

处理器420可基于输入特征图数据810的稀疏性的形式来重新排列输入特征图数据810。例如,处理器420可根据第一规则移位包括在输入特征图数据810中的多个列col 0至col 5中的每个列的元素。

第一规则可将多个列col 0至col 5中的每个列的元素沿相同方向移位特定大小。在此,特定大小可基于输入特征图数据810的稀疏性的形式由处理器420适应性地改变,并且应用于多个列col 0至col 5中的每个列的大小可不同。例如,参照输入特征图数据810和通过重新排列生成的特征图数据811,处理器420可通过将包括在输入特征图数据810的第二列col 1中的激活移位一格,来生成特征图数据811的第二列col 1。处理器420可通过将包括在输入特征图数据810的第五列col 4中的激活移位两格,来生成特征图数据811的第五列col 4。根据输入特征图数据810的稀疏性的形式,处理器420可不移位输入特征图数据810的其他列col 0、col 2、col 3和col 5的激活。

第一规则可被周期性地应用于多个列col 0至col 5。如图8中所示,处理器420可将“0-1-0-0-2-0”的移位规则周期性地应用于将在输入特征图数据810的下一个被输入的特征图数据。例如,周期可以但不限于与内核数据820的大小(例如,内核数据820的列数)相同。通过该处理,处理器420可防止执行不必要的卷积运算。

处理器420可重新排列内核数据820以对应于特征图数据811。例如,处理器420可重新排列内核数据820,使得将与输入到逻辑电路730的激活一起被计算的权重被准确地输入到逻辑电路。处理器420可根据重新排列的内核数据将权重输入到逻辑电路。因此,即使利用特征图数据811,也可从逻辑电路输出准确的运算结果。

当内核数据820被重新排列时,处理器420可以以与如上所述的方式相同的方式重新排列输入特征图数据810,并且将重新排列的输入特征图数据811输入到逻辑电路730。

将参照图11至图13描述处理器420通过处理特征图数据811和内核数据820来生成输出数据的示例。

图9是用于示出处理器重新排列输入数据的另一示例的示图。

在图9中示出作为输入数据的输入特征图数据910和内核数据920。输入特征图数据910的部分可包括空白。在图9中示出:空白被包括在输入特征图数据910中,但是配置不限于此。也就是说,0也可被包括在内核数据920中包括的权重(例如,权重f

处理器420可基于输入特征图数据910的稀疏性的形式,来重新排列输入特征图数据910。例如,处理器420可将包括在输入特征图数据910中的列col 1的第一元素(激活)移位到与列col 1相邻的列col 0的最后的元素(激活)所对应的位置。

更具体地,在列col 1和列col 0的第一位置中包括有效信息。在列col 0的最后的位置中不包括有效信息。在这种情况下,处理器420可将列col 1的第一位置中的元素移位到列col 0的最后的位置。通过该处理,处理器420可防止执行不必要的卷积运算。同样地,处理器420可将列col 1的第二位置中的元素移位到列col 0的第三位置,并且可将列col 1的第五位置中的元素移位到列col 0的第五位置。

如以上参照图7和图8所述,当输入特征图数据910被重新排列时,内核数据920也可被重新排列。

图10是示出处理器重新排列输入数据的另一示例的示图。

在图10中示出输入特征图数据1010。输入特征图数据1010的部分可包括空白。具体地,输入特征图数据1010的一些列col 1至col 3可仅包括空白。

处理器420可基于输入特征图数据1010的稀疏性的形式,来重新排列输入特征图数据1010。例如,处理器420可重新排列输入特征图数据1010,以跳过关于在包括在输入特征图数据1010中的多个列col 0至col 5之中的仅包括空白的列col 1至列col 3的处理。

例如,处理器420可从输入特征图数据1010省略列col 1至列col 3,并且仅利用其他列col 0、col 4和col 5生成特征图数据1020。处理器420可将对列col 1至列col 3的省略记录在存储器410中。通过该处理,处理器420可防止执行不必要的卷积运算。

如以上参照图7和图8所述,当输入特征图数据1010被重新排列时,内核数据也可被重新排列。

返回参照图5,在操作530中,处理器420可通过处理重新排列的输入数据来生成输出数据。

例如,处理器420可通过使用重新排列的输入数据执行卷积运算,来生成输出数据。然而,处理器420可另外将第二规则或第三规则应用于操作520的重新排列的数据以减少不必要的运算。

在下文中,将参照图11至图13描述处理器420生成输出数据的示例。

图11是示出处理器通过处理重新排列的数据来生成输出数据的示例的流程图。

在操作1110中,处理器420可将第二规则和第三规则中的至少一个规则应用于重新排列的数据。

如以上参照图7所述,处理器420可将重新排列的数据顺序地输入到逻辑电路。例如,处理器420可将具有特定大小的窗口应用于重新排列的数据,并将包括在窗口中的元素输入到逻辑电路。当包括在窗口中的元素中的一些包括无效信息(例如,0或空白)时,处理器420可通过应用第二规则或第三规则来重新排列包括在窗口中的元素。

在操作1120中,处理器420可对应用了至少一个规则的重新排列的数据和另外的数据执行卷积运算。例如,处理器420可通过将重新排列的激活或重新排列的权重输入到逻辑电路来执行卷积运算。

在下文中,将参照图12对处理器420将第二规则应用于重新排列的数据的示例进行描述,并将参照图13对处理器420将第三规则应用于重新排列的数据的示例进行描述。

图12是示出处理器将第二规则应用于重新排列的数据的示例的示图。

在图12中示出特征图数据1210和内核数据1220。在下文中,假设特征图数据1210是操作520的重新排列的数据。

处理器420可将特征图数据1210的部分输入到逻辑电路1230。例如,处理器420可将特征图数据1210的包括在窗口1240中的激活输入到逻辑电路1230。处理器420可通过将第二规则应用于包括在窗口1240中的激活,将最多的激活输入到逻辑电路1230。也就是说,处理器420可将第二规则应用于包括在窗口1240中的激活,以使逻辑电路1230的输入层1231中的空白最小化(例如,逻辑电路的输入层的内容来自将被输入到逻辑电路的窗口的列)。在此,第二规则可表示这样的规则:将列(例如,col 1)的激活移位到相邻列(例如,col0)的相同位置。

例如,处理器420可识别窗口1240中的列col 0和col 1的空白,并将列col 1的激活分配给列col 0的空白。参照图12,列col 1的激活2和激活4可被移位到列col 0的相同位置。

处理器420可将应用了第二规则的激活输入到逻辑电路1230的输入层1231。列col0与输入层1231相比,输入层1231的空白的数量可少于列col 0的空白的数量。空白具有与包括数据0的效果相同的效果,因此输出为0而不管与空白对应的权重的值如何。因此,随着包括在输入层1231中的空白的数量增加(即,包括在输入层1231中的0的数量增加),不必要的运算的数量会增加。

如上所述,处理器420可通过应用第二规则,使包括在输入层1231中的空白的数量最小化。因此,处理器420可使逻辑电路1230执行不必要的运算的次数最小化。

图13是示出处理器将第三规则应用于重新排列的数据的示例的示图。

在图13中示出特征图数据1310和内核数据1320。在下文中,假设特征图数据1310是操作520的重新排列的数据。

处理器420可通过将第三规则应用于包括在窗口1340中的激活,将最多的激活输入到逻辑电路1330。在此,第三规则可表示这样的规则:将列(例如,col 1)的激活移位到相邻列(例如,col 0)的横向位置,例如,横向位置表示与相邻列的相同位置间隔特定大小的位置。

例如,处理器420可识别窗口1340中的列col 0和col 1的空白,并且将列col 1的激活分配给列col 0的空白。参照图13,列col 1的激活0、激活1和激活3可被移位到列col 0的横向位置。

处理器420可将应用了第三规则的激活输入到逻辑电路1330的输入层1331。列col0与输入层1331相比,在列col 0中存在空白(更具体地,存在三个空白),但是在输入层1331中不存在空白。因此,处理器420可使逻辑电路1230执行不必要的运算的次数最小化。

如参照图12和图13详细描述的那样,处理器420可单独应用第二规则和第三规则,但是配置不限于此。处理器420可识别特征图数据1210和1310以及内核数据1220和1320的稀疏性,并且将第二规则和第三规则中的至少一个适应性地应用于特征图数据1210和1310和/或内核数据1220和1320。

如详细描述的那样,用于处理数据的设备400可重新排列输入特征图数据和/或内核数据,以使输入到在其中执行卷积运算的逻辑电路的空白的数量最小化。因此,用于处理数据的设备400可使执行不必要的运算的次数最小化。

同时,前述方法可被编写为在计算机上可执行的程序,并且可通过使用计算机可读记录介质实现在操作该程序的通用数字计算机上。可使用各种装置将在上述方法中使用的数据的结构记录在计算机可读记录介质上。计算机可读记录介质可包括存储介质,诸如,磁存储介质(例如,ROM、RAM、通用串行总线(USB)、软盘、硬盘等)、光学记录介质(例如,光盘(CD)-ROM、数字通用光盘(DVD)等)等。

虽然本公开包括特定的示例,但是在理解本申请的公开之后将清楚,在不脱离权利要求和它们的等同物的精神和范围的情况下,可在这些示例中进行形式和细节上的各种改变。在此描述的示例应仅被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述将被认为可适用于其它示例中的类似特征或方面。如果描述的技术以不同的次序被执行,和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合,和/或被其它组件或它们的等同物替换或补充,则可实现合适的结果。因此,公开的范围不是由具体实施方式限定,而是由权利要求及它们的等同物限定,并且在权利要求及它们的等同物的范围内的所有变化应被解释为包括在公开中。

相关技术
  • 具有指纹图像识别功能的定点设备、指纹图像识别和定点方法以及使用它们来用于提供便携式终端服务的方法
  • 训练图像识别模型的方法、图像识别方法和图像识别设备
技术分类

06120112409355