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

一种池化方法、芯片、设备和存储介质

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


一种池化方法、芯片、设备和存储介质

技术领域

本申请涉及计算机技术,具体涉及一种池化方法、芯片、设备和存储介质。

背景技术

池化处理是指对输入的特征图进行下采样,在保持特征在某些维度(例如,旋转、平移、伸缩)不变性的情形下,减少特征数量,简化卷积网络计算复杂度的处理过程。池化处理可以包括两种方式:第一,平均池化,即对池化窗口内的特征值求平均;第二,最大池化,即对池化窗口内的特征值取最大。

池化处理通常需要依赖人工智能芯片(以下简称AI芯片)。目前,亟需对池化处理的加速方法。

发明内容

有鉴于此,本申请至少公开一种池化方法,上述方法可以包括:获取目标特征图;对上述目标特征图进行拆分,得到若干子特征图;其中,上述目标特征图中处于同一池化窗口内的至少部分像素值分别处于不同的子特征图,各池化窗口内处于同一位置的像素值处于同一子特征图;

对各子特征图中属于不同池化窗口的像素并行处理,得到上述目标特征图对应的池化结果。

在示出的一些实施例中,上述对各子特征图中属于不同池化窗口的像素并行处理,得到上述目标特征图对应的池化结果,包括:将上述若干子特征图分别包括的像素值加载至位移寄存器阵列中,根据池化指令,对上述若干子特征图中处于同一位置的像素值并行池化处理,得到与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述对各子特征图中属于不同池化窗口的像素值并行处理,得到上述目标特征图对应的池化结果,包括:根据各子特征图中处于同一池化窗口的像素值所处的位置,确定各子特征图分别对应的位移寄存器阵列的移位操作方式;将上述若干子特征图分别加载至位移寄存器阵列中,并针对每个子特征图,按照为该子特征图确定的位移寄存器阵列的移位操作方式对上述位移寄存器阵列中的位移寄存器存储的像素值执行移位操作,根据池化指令并行得到该特征子图中对应不同池化窗口的部分池化结果;根据各个子特征图对应不同池化窗口的部分池化结果,确定与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述对上述目标特征图进行拆分,得到若干子特征图,包括:将上述目标特征图中处于奇数行、奇数列位置的像素值确定为第一子特征图;将上述目标特征图中处于奇数行、偶数列位置的像素值确定为第二子特征图;将上述目标特征图中处于偶数行、奇数列位置的像素值确定为第三子特征图;将上述目标特征图中处于偶数行、偶数列位置的像素值确定为第四子特征图。

在示出的一些实施例中,上述将上述若干子特征图分别包括的像素值加载至位移寄存器阵列中,根据池化指令,对上述若干子特征图中处于同一位置的像素值并行池化处理,得到与上述目标特征图对应的池化结果位移寄存器阵列,包括:将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器中;将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使与各位移寄存器对应的计算内核根据上述池化指令,对接收的两个像素值进行池化处理,得到第一池化处理结果;将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使各计算内核根据上述池化指令,对上述第一池化处理结果与接收的像素值进行池化处理,得到第二池化处理结果;将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使各计算内核根据上述池化指令,对上述第二池化处理结果与接收的像素值进行池化处理,得到第三池化处理结果;输出各计算内核分别进行池化处理得到的第三池化处理结果,得到与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述池化处理包括最大池化处理;上述池化指令包括比较两者之间的最大值;上述将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器中,包括:将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器的第一寄存器中;上述将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使各计算单元根据上述池化指令,对接收的两个像素值进行池化处理,得到第一池化处理结果,包括:将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中,以使各计算单元根据上述池化指令,获取上述第一寄存器与上述第二寄存器中存储的数值中的最大值,并将上述最大值作为上述第一池化处理结果存储在上述第一寄存器中。

在示出的一些实施例中,上述将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使各计算单元根据上述池化指令,对上述第一池化处理结果与接收的像素值进行池化处理,得到第二池化处理结果,包括:将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中,以使各计算单元根据上述池化指令,获取上述第一寄存器与上述第二寄存器中存储的数值中的最大值,并将上述最大值作为上述第二池化处理结果存储在上述第一寄存器中;上述将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使各计算单元根据上述池化指令,对上述第二池化处理结果与接收的像素值进行池化处理,得到第三池化处理结果,包括:将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中,以使各计算单元根据上述池化指令,获取上述第一寄存器与上述第二寄存器中存储的数值中的最大值,并将上述最大值作为上述第三池化处理结果存储在上述第一寄存器中。

在示出的一些实施例中,上述输出各计算单元上述部分位移寄存器中分别进行池化处理得到的第三池化处理结果,得到与上述目标特征图对应的池化结果,包括:输出上述部分位移寄存器的第一寄存器中存储的数值,得到与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述对各子特征图中属于不同池化窗口的像素并行处理,得到上述目标特征图对应的池化结果,包括:将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器中;根据上述池化指令,对上述位移寄存器阵列包括的任意四个上下左右相邻的位移寄存器中的像素值进行池化操作,得到第一部分池化处理结果,并将上述第一部分池化处理结果存储至上述四个上下左右相邻的位移寄存器中处于预设位置的目标位移寄存器内;将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器中;根据上述池化指令,对上述位移寄存器阵列包括的任意两个上下相邻的位移寄存器中的像素值进行池化操作,得到第二部分池化处理结果,并将上述第二部分池化处理结果存储至上述目标位移寄存器;将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器中;根据上述池化指令,对上述位移寄存器阵列包括的任意两个左右相邻的位移寄存器中的像素值进行池化操作,得到第三部分池化处理结果,并将上述第三部分池化处理结果存储至上述目标位移寄存器;将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器中,并将上述部分位移寄存器中各位移寄存器中的像素值搬移至上述目标位移寄存器。

根据上述位移寄存器阵列包括的各目标位移寄存器内的第一部分池化处理结果、第二部分池化处理结果、第三部分池化处理结果以及上述第四子特征图,得到与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述池化处理包括最大池化处理;上述池化指令包括比较两者之间的最大值;上述预设位置包括任意四个上下左右相邻的位移寄存器中的左下角位置;上述目标位移寄存器包括上述四个上下左右相邻的位移寄存器中的左下角位置的位移寄存器;上述将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器中,包括:将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器的第一寄存器中;上述根据上述池化指令,对上述位移寄存器阵列包括的任意四个上下左右相邻的位移寄存器中的像素值进行池化操作,得到第一部分池化处理结果,并将上述第一部分池化处理结果存储至上述四个上下左右相邻的位移寄存器中处于预设位置的目标位移寄存器内,包括:将上述部分位移寄存器中各第一位移寄存器的第一寄存器中的数值搬移至该第一位移寄存器右方的第二位移寄存器的第二寄存器中;将各第二位移寄存器中第一寄存器与第二寄存器中较大的数值存储至各第二位移寄存器的第一寄存器中;将上述各第二位移寄存器中第一寄存器中的数值搬移至该第二位移寄存器下方的第三位移寄存器的第二寄存器中;将各第三位移寄存器中第一寄存器与第二寄存器中较大的数值存储至各第三位移寄存器的第一寄存器中;将上述各第三位移寄存器中第一寄存器中的数值搬移至该第三位移寄存器左方的目标位移寄存器的第二寄存器中;将各目标位移寄存器中第一寄存器与第二寄存器中较大的数值作为上述第一部分池化处理结果,存储至各目标位移寄存器的第一寄存器中。

在示出的一些实施例中,上述将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器中,包括:将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中;上述根据上述池化指令,对上述位移寄存器阵列包括的任意两个上下相邻的位移寄存器中的像素值进行池化操作,得到第二部分池化处理结果,并将上述第二部分池化处理结果存储至上述目标位移寄存器,包括:将上述部分位移寄存器中各第一位移寄存器的第二寄存器中的数值搬移至该第一位移寄存器下方的目标位移寄存器的第三寄存器中;将各目标位移寄存器中第二寄存器与第三寄存器中较大的数值作为上述第二部分池化处理结果,存储至各目标位移寄存器的第二寄存器中。

在示出的一些实施例中,上述将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器中,包括:将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器的第三寄存器中;上述根据上述池化指令,对上述位移寄存器阵列包括的任意两个左右相邻的位移寄存器中的像素值进行池化操作,得到第三部分池化处理结果,并将上述第三部分池化处理结果存储至上述目标位移寄存器,包括:将上述部分位移寄存器中各第一位移寄存器的第三寄存器中的数值搬移至该第一位移寄存器右方的第二位移寄存器的第四寄存器中;将各第二位移寄存器中第三寄存器与第四寄存器中较大的数值作为上述第三部分池化处理结果,存储至各第二位移寄存器的第三寄存器中;将上述第二位移寄存器的第三寄存器中的第三部分池化处理结果,搬移至该第二位移寄存器左方的第一位移寄存器的第三寄存器中;将上述第一位移寄存器的第三寄存器中的第三部分池化处理结果,搬移至该第一位移寄存器下方的目标位移寄存器的第三寄存器中。

在示出的一些实施例中,上述将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器中,包括:将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器的第四寄存器中;上述将上述部分位移寄存器中各位移寄存器中的像素值搬移至上述目标位移寄存器,包括:将上述部分位移寄存器中各第一位移寄存器的第四寄存器中的数值搬移至该第一位移寄存器下方的目标位移寄存器的第四寄存器中。

在示出的一些实施例中,上述根据上述位移寄存器阵列包括的各目标位移寄存器内的第一部分池化处理结果、第二部分池化处理结果、第三部分池化处理结果以及上述第四子特征图对应的像素值,得到与上述目标特征图对应的池化结果,包括:将各目标位移寄存器中的第一寄存器与第二寄存器中较大的数值存储至各目标位移寄存器的第一寄存器中;将各目标位移寄存器中的第一寄存器与第三寄存器中较大的数值存储至各目标位移寄存器的第一寄存器中;将各目标位移寄存器中的第一寄存器与第四寄存器中较大的数值存储至各目标位移寄存器的第一寄存器中;输出各目标位移寄存器的第一寄存器中存储的数值,得到与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述位移寄存器阵列外围连接了多个临时寄存器;上述临时寄存器用于存储进行数值搬移操作时,溢出上述位移寄存器阵列的像素值。

在示出的一些实施例中,上述若干子特征图中至少部分子特征图包括的像素点数量与上述位移寄存器阵列包括的位移寄存器数量一致。

本申请还提出一种池化方法,上述方法可以包括:获取原始特征图;将上述原始特征图划分为若干目标特征图;

根据前述任一实施例示出的池化方法对各目标特征图进行池化处理,得到各目标特征图对应的池化结果;输出各目标特征图对应的池化结果,得到上述原始特征图对应的池化结果。

本申请还提出一种芯片,上述芯片可以包括控制器;上述控制器,用于获取目标特征图;对上述目标特征图进行拆分,得到若干子特征图;其中,上述目标特征图中处于同一池化窗口内的至少部分像素值分别处于不同的子特征图,各池化窗口内处于同一位置的像素值处于同一子特征图;对各子特征图中属于不同池化窗口的像素并行处理,得到上述目标特征图对应的池化结果。

在示出的一些实施例中,上述控制器用于:将上述各子特征图分别包括的像素值加载至位移寄存器阵列中,根据池化指令,对上述各子特征图中处于同一位置的像素值并行池化处理,得到与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述控制器用于:根据各子特征图中处于同一池化窗口的像素值所处的位置,确定各子特征图分别对应的位移寄存器阵列的移位操作方式;将上述若干子特征图分别加载至位移寄存器阵列中,并针对每个子特征图,按照为该子特征图确定的位移寄存器阵列的移位操作方式对上述位移寄存器阵列中的位移寄存器存储的像素值执行移位操作,根据池化指令并行得到该特征子图中对应不同池化窗口的部分池化结果;根据各个子特征图对应不同池化窗口的部分池化结果,确定与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述控制器用于:将上述目标特征图中处于奇数行、奇数列位置的像素值确定为第一子特征图;将上述目标特征图中处于奇数行、偶数列位置的像素值确定为第二子特征图;将上述目标特征图中处于偶数行、奇数列位置的像素值确定为第三子特征图;将上述目标特征图中处于偶数行、偶数列位置的像素值确定为第四子特征图。

在示出的一些实施例中,上述控制器用于:将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器中;将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使与各位移寄存器对应的计算内核根据上述池化指令,对接收的两个像素值进行池化处理,得到第一池化处理结果;将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使各计算内核根据上述池化指令,对上述第一池化处理结果与接收的像素值进行池化处理,得到第二池化处理结果;将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使各计算内核根据上述池化指令,对上述第二池化处理结果与接收的像素值进行池化处理,得到第三池化处理结果;输出各计算内核分别进行池化处理得到的第三池化处理结果,得到与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述池化处理包括最大池化处理;上述池化指令包括比较两者之间的最大值;上述控制器用于:将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器的第一寄存器中;以及,将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中,以使各计算单元根据上述池化指令,获取上述第一寄存器与上述第二寄存器中存储的数值中的最大值,并将上述最大值作为上述第一池化处理结果存储在上述第一寄存器中。

在示出的一些实施例中,上述控制器用于:将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中,以使各计算单元根据上述池化指令,获取上述第一寄存器与上述第二寄存器中存储的数值中的最大值,并将上述最大值作为上述第二池化处理结果存储在上述第一寄存器中;以及,将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中,以使各计算单元根据上述池化指令,获取上述第一寄存器与上述第二寄存器中存储的数值中的最大值,并将上述最大值作为上述第三池化处理结果存储在上述第一寄存器中。

在示出的一些实施例中,上述控制器用于:输出上述部分位移寄存器的第一寄存器中存储的数值,得到与上述目标特征图对应的池化结果。

本申请还提出一种芯片,上述芯片可以包括控制器;上述控制器,用于获取原始特征图;将上述原始特征图划分为若干目标特征图;根据前述任一实施例示出的池化方法对各目标特征图进行池化处理,得到各目标特征图对应的池化结果;

输出各目标特征图对应的池化结果,得到上述原始特征图对应的池化结果。

本申请还提出一种电子设备,包括如前述任一实施例示出的芯片。

本申请还提出一种计算机可读存储介质,其上存储有计算机程序,上述程序被控制器执行时实现上述任一池化方法。

在上述方案中,由于将目标特征图中处于同一池化窗口内的至少部分像素值分别拆分至不同的子特征图中,并对各子特征图中属于不同池化窗口的像素并行处理,得到上述目标特征图对应的池化结果,因此提升了芯片池化处理效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

为了更清楚地说明本申请一个或多个实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请示出的一种位移寄存器阵列的结构示意图;

图2为本申请示出的一种PE的结构示意图;

图3为本申请示出的一种池化方法的方法流程图;

图4为本申请示出的一种目标特征图拆分示意图;

图5为本申请示出的一种目标特征图拆分示意图;

图6为本申请示出的一种池化窗口示意图;

图7为本申请示出的一种针对第一子特征图像素值搬移的示意图;

图8为本申请示出的一种针对第二子特征图像素值搬移的示意图;

图9为本申请示出的一种针对第三子特征图像素值搬移的示意图;

图10为本申请示出的一种池化方法的方法流程图。

具体实施方式

下面将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的设备和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“上述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。还应当理解,本文中所使用的词语“如果”,取决于语境,可以被解释成为“在……时”或“当……时”或“响应于确定”。

以下先介绍AI芯片使用的位移寄存器阵列。

请参见图1,图1为本申请示出的一种位移寄存器阵列的结构示意图。

位移寄存器阵列中可以包括纵横排列的多个位移寄存器,各位移寄存器可以分别唯一对应计算内核(以下简称PE),各PE用于根据位移寄存器中的数值进行运算。如图 1所示,可以认为上述位移寄存器阵列包括纵横排列的多个PE。任意相邻的两个PE(PE 对应的位移寄存器)之间可以进行数据搬移;每一行PE可以从对应的RAM(Random Access Memory,随机存取存储器)中获取数据。

假设上述位移寄存器阵列的大小为8*8;需要输入的特征图大小也为8*8。在执行将特征图输入位移寄存器阵列的操作时,可以通过控制器(例如,阵列控制器)将上述特征图拆分为8行像素值,并分别把8行像素值输入每行PE对应的RAM中。然后上述控制器可以通过数据搬移指令,将各RAM中的像素值,按照各像素值在上述特征图中的位置顺序,分别搬移至对应的各位移寄存器中,从而完成将特征图输入位移寄存器的操作。

上述PE可以响应于指令,对位移寄存器内的数据进行数据运算。

请参见图2,图2为本申请示出的一种PE的结构示意图。

如图2所示,对应于上述位移寄存器的PE可以包括寄存器,以及ALU(arithmeticand logic unit,算术逻辑单元)。其中,上述寄存器可以是对上述位移寄存器进行存储空间划分后得到的寄存器。在一些例子中,上述位移寄存器可以根据实际需求配置为若干个相互之间可以进行数据搬移的寄存器(例如,图2中示出的寄存器1和寄存器2)。上述PE可以根据运算指令,对多个寄存器内的数据进行运算处理。上述ALU用户执行逻辑运算。

例如,当PE接收到诸如数值加减或比较大小的运算指令后,可以通过上述ALU可以对寄存器中存储的数值进行相关运算操作。

在一些例子中,本申请实施例中上述的移位寄存器阵列包括多个移位寄存器,这里的移位寄存器与各自的PE对应,每个移位寄存器(或者说每个PE)包含多个寄存器(例如:第一寄存器、第二寄存器、第三寄存器、第四寄存器等,这里不限制每个PE的寄存器数量)。

本申请旨在提出一种池化方法。该方法将目标特征图中处于同一池化窗口内的至少部分像素值分别拆分至不同的子特征图中,并对各子特征图中属于不同池化窗口的像素并行处理,得到上述目标特征图对应的池化结果,从而提升芯片池化处理效率。

请参见图3,图3为本申请示出的一种池化方法的方法流程图。

如图3所示,上述方法可以包括:

S302,获取目标特征图。

上述目标特征图,具体可以是需要进行池化处理的特征图。在一些例子中,上述目标特征图可以是经过卷积处理后,需进行池化处理的特征图。在一些例子中,上述目标特征图可以是经过上述位移寄存器阵列中的各PE进行卷积处理得到的目标特征图。可以理解的是,上述目标特征图可以存储在各行PE对应的RAM中。

S304,对上述目标特征图进行拆分,得到若干子特征图;其中,上述目标特征图中处于同一池化窗口内的至少部分像素值分别处于不同的子特征图,各池化窗口内处于同一位置的像素值处于同一子特征图。

池化处理通常包括根据业务需求设定的预设大小的池化窗口和预设大小的步长。

以池化窗口为2*2,步长为2为例,在对特征图进行池化操作时,可以理解为从特征图左上角的第一像素值开始,以该第一像素值为左上角元素形成2*2大小的池化窗口。然后针对该池化窗口内包括的各像素值取最大值,完成该池化窗口内的池化操作。之后,按照步长为2,向第一像素值右方滑动两个像素值,并形成2*2的池化窗口。然后,再针对当前池化窗口内的像素值进行池化操作。以此类推,当针对所有池化窗口进行池化操作后,对各池化窗口输出的最大像素值进行组合,即可得到上述特征图对应的池化结果。

池化窗口可以包括若干像素值。各像素值可以处于池化窗口的不同位置。以池化窗口为2*2为例。池化窗口内的4个像素值可以分别处于池化窗口的左上角,左下角,右上角和右下角。

在一些例子中,在执行S304时,可以根据预设池化窗口的大小,以及各像素值的位置分布规律,确定满足上述目标特征图中处于同一池化窗口内的至少部分像素值分别处于不同的子特征图,各池化窗口内处于同一位置的像素值处于同一子特征图的条件的拆分方法。然后根据确定的上述拆分方法对上述目标特征图进行拆分,得到若干子特征图。

例如,当池化窗口为2*2时,可以确定池化窗口内的各像素值分别处于奇数行,奇数列;奇数行,偶数列;偶数行,奇数列;偶数行,偶数列。因此,可以将将上述目标特征图中处于奇数行、奇数列位置的像素值确定为第一子特征图;

将上述目标特征图中处于奇数行、偶数列位置的像素值确定为第二子特征图;

将上述目标特征图中处于偶数行、奇数列位置的像素值确定为第三子特征图;

将上述目标特征图中处于偶数行、偶数列位置的像素值确定为第四子特征图。

由此,即可将上述目标特征图进行拆分,得到满足上述目标特征图中处于同一池化窗口内的至少部分像素值分别处于不同的子特征图,各池化窗口内处于同一位置的像素值处于同一子特征图条件的拆分结果,得到4个子特征图。

在一些例子中,可以预先维护池化处理与拆分方案的对应关系。在对目标特征图进行拆分时,可以先确定池化处理的池化窗口,步长等参数。然后根据确定的参数,查询上述对应关系,得到对应的拆分方案,并根据上述拆分方案对上述目标特征图进行拆分。

在完成目标特征图拆分后,可以执行S306,对各子特征图中属于不同池化窗口的像素并行处理,得到上述目标特征图对应的池化结果。

在一些例子中,可以将上述若干子特征图分别包括的像素值加载至位移寄存器阵列中,根据池化指令,对上述若干子特征图中处于同一位置的像素值并行池化处理,得到与上述目标特征图对应的池化结果。

上述池化指令,可以包括与当前池化处理对应的指令。该指令可以预先生成。当池化处理为最大池化时,上述池化指令可以是比较两者之间的最大值。当池化处理为平均池化时,上述池化指令可以是求和或求平均值。

上述池化结果,可以包括对目标特征图进行池化处理后得到的池化处理结果。

在一些例子中,在执行S306时,可以按照预设搬移方法,依次将各子特征图包括的像素值搬移至位移寄存器阵列包括的位移寄存器,以使各子特征图中处于同一位置的像素值搬移至同一位移寄存器中。

上述预设搬移方法,可以是按照各像素值在目标特征图中的排序,将各像素值搬移至上述位移寄存器阵列中。在本申请中不特别限定上述搬移方法。可以理解的是,按照相同的搬移方法对各子特征图进行像素值搬移即可保证各子特征图中处于同一位置的像素值搬移至同一位移寄存器。

然后,与各位移寄存器对应的PE可以根据池化指令,对接收到的像素值进行并行池化处理,得到与上述目标特征图对应的池化结果。

例如,以池化处理为最大池化为例。各位移寄存器每收到新的像素值时,可以通过与其对应的PE将新收到的像素值与已存储的像素值进行比较,获取最大值,并将最大值覆盖至该位移寄存器。由此,当完成目标特征图拆分出来的各子特征图的输入后,上述位移寄存器中即可包括各池化窗口内的最大像素值。之后,将寄存器阵列中存储的最大像素值输出,即可得到针对上述目标特征图的池化结果。

上述例子中,在目标特征图拆分结果中,同一池化窗口中包括的全部像素值均处于不同的子特征图,此时可以将上述若干子特征图分别包括的像素值加载至位移寄存器阵列中,根据池化指令,对上述若干子特征图中处于同一位置的像素值并行池化处理,得到与上述目标特征图对应的池化结果,从而可以利用位移寄存器阵列对应的多个PE并行进行各池化窗口的池化处理操作,进而提升了池化处理效率。

在一些例子中,在执行S306时,可以根据各子特征图中处于同一池化窗口的像素值所处的位置,确定各子特征图分别对应的位移寄存器阵列的移位操作方式。

在确定上述移位操作方式后,可以将上述若干子特征图分别加载至位移寄存器阵列中,并针对每个子特征图,按照为该子特征图确定的位移寄存器阵列的移位操作方式对上述位移寄存器阵列中的位移寄存器存储的像素值执行移位操作,然后根据池化指令并行得到该特征子图中对应不同池化窗口的部分池化结果,并根据各个子特征图对应不同池化窗口的部分池化结果,确定与上述目标特征图对应的池化结果。

上述例子中,在目标特征图拆分结果中,同一池化窗口中有部分像素值处于同一子特征图中,此时可以先对各子特征图中处于同一池化窗口中的像素值进行池化,得到各子特征图中对应不同池化窗口的部分池化结果;然后再对各子特征图中对应同一池化窗口的部分池化结果进行再次池化,得到最终池化结果,由此可以利用位移寄存器阵列对应的多个PE同并行进行各池化窗口的池化处理操作,进而提升了池化处理效率。

在一些例子中,为了最大化利用位移寄存器阵列对应的PE,进一步提升池化效率,上述若干子特征图中至少部分子特征图包括的像素点数量与上述位移寄存器阵列包括的位移寄存器数量一致。

在一些例子中,在确定拆分策略时,可以根据位移寄存器阵列包括的位移寄存器数量进行确定,进而保证对目标特征图进行拆分后得到的各子特图中有部分子特征图或全部的子特征图包括的像素点数量与上述位移寄存器数量一致。

由此,即可使上述位移寄存器对应的全部PE并行进行池化操作,从而最大化利用位移寄存器阵列对应的PE,进一步提升池化效率。

以下结合具体场景进行实施例说明。

场景一:

目标特征图大小为16*16,池化窗口大小为2*2,步长为2,池化处理为最大池化处理,池化指令为上述池化指令包括比较两者之间的最大值。进程池化处理的AI芯片包括的位移寄存器阵列大小为8*8。

在通过AI芯片进行池化操作时,可以对上述目标特征图进行拆分,得到四个子特征图。

在一些例子中,可以将上述目标特征图中处于奇数行、奇数列位置的像素值确定为第一子特征图;

将上述目标特征图中处于奇数行、偶数列位置的像素值确定为第二子特征图;

将上述目标特征图中处于偶数行、奇数列位置的像素值确定为第三子特征图;

将上述目标特征图中处于偶数行、偶数列位置的像素值确定为第四子特征图。

请参见图4,图4为本申请示出的一种目标特征图拆分示意图。

如图4所示,目标特征图为16*16。其中,黑色方块指示目标特征图中处于奇数行、奇数列的像素点;深灰色方块指示目标特征图中处于奇数行、偶数列的像素点;白色方块指示目标特征图中处于偶数行、奇数列的像素点;浅灰色方块指目标特征图中处于偶数数行、偶数列的像素点。

按照前述拆分方法对上述目标特征图进行拆分,得到第一至第四子特征图。其中,各子特征图大小为8*8,与上述位移寄存器阵列的大小一致。

完成拆分后,可以按照预设搬移方法,将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列对应的至少部分位移寄存器中。

在一些例子中,可以按照预设搬移方法,将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器的第一寄存器中。在一些实施例中,各像素值需要在寄存器阵列中的各移位寄存器之间整体移动,那么根据移动方向和移动步长可以在寄存器阵列中的预设位置预留空闲移位寄存器,以便存储移动后的像素值,假设各像素值需要整体向右移动一个步长,那么至少需要将各像素值存储位置中最右列像素值相邻右侧的空闲移位寄存器进行预留,其他移动方式同理,这里不再赘述。

由此可以将第一子特征图包括的各像素值全部搬移至上述位移寄存器阵列包括的各位移寄存器中。

然后,可以按照上述预设搬移方法,将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使与位移寄存器对应的计算内核可以根据上述池化指令,对接收的两个像素值进行池化处理,得到第一池化处理结果。

在一些例子中,可以按照上述预设搬移方法,将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中,以使各计算内核可以根据上述池化指令,获取上述第一寄存器与上述第二寄存器中存储的数值中的最大值,并将上述最大值作为上述第一池化处理结果存储在上述第一寄存器中。

由此,即可将同一池化窗口内分别处于第一子特征图与第二子特征图中的像素值进行比较,得到最大值并存储在位移寄存器中。

之后,可以按照上述预设搬移方法,将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使各计算内核根据上述池化指令,对上述第一池化处理结果与接收的像素值进行池化处理,得到第二池化处理结果。

在一些例子中,按照上述预设搬移方法,将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中,以使各计算内核可以根据上述池化指令,获取上述第一寄存器与上述第二寄存器中存储的数值中的最大值,并将上述最大值作为上述第二池化处理结果存储在上述第一寄存器中。

由此,即可将同一池化窗口内分别处于第一子特征图、第二子特征图以及第三子特征图中的像素值进行比较,得到最大值并存储在位移寄存器中。

再之后,可以按照上述预设搬移方法,将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使各计算内核根据上述池化指令,对上述第二池化处理结果与接收的像素值进行池化处理,得到第三池化处理结果。

在一些例子中,按照上述预设搬移方法,将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中,以使各计算内核可以根据上述池化指令,获取上述第一寄存器与上述第二寄存器中存储的数值中的最大值,并将上述最大值作为上述第三池化处理结果存储在上述第一寄存器中。

由此,即可将同一池化窗口内分别处于第一子特征图、第二子特征图、第三子特征图以及第四子特征图中的像素值进行比较,得到最大值并存储在位移寄存器中。

最后,可以输出各计算内核中分别进行池化处理得到的第三池化处理结果,得到与上述目标特征图对应的池化结果。

在一些例子中,可以输出上述部分位移寄存器的第一寄存器中存储的数值,得到与上述目标特征图对应的池化结果。

由此,即可完成针对上述目标特征图的最大池化处理,得到对应的池化结果。

需要说明的是,以上各子特征图输入位移寄存器的顺序仅为示意性说明。在实际应用中可以使用任意输入顺序。

当池化处理为平均池化时,具体过程可以参照上述实施例,仅是池化指令有所不同,在此不做详述。

场景二:

目标特征图大小为17*17,池化窗口大小为3*3,步长为2,池化处理为最大池化处理,池化指令为上述池化指令包括比较两者之间的最大值。进性池化处理的AI芯片包括的位移寄存器阵列大小为9*9。

在通过AI芯片进行池化操作时,可以对上述目标特征图进行拆分,得到四个子特征图。

请参见图5,图5为本申请示出的一种目标特征图拆分示意图。

如图5所示,目标特征图为17*17。其中,黑色方块指示目标特征图中处于奇数行、奇数列的像素点;深灰色方块指示目标特征图中处于奇数行、偶数列的像素点;白色方块指示目标特征图中处于偶数行、奇数列的像素点;浅灰色方块指目标特征图中处于偶数数行、偶数列的像素点。

按照前述拆分方法对上述目标特征图进行拆分,得到第一至第四子特征图。其中,第一子特征图为9*9,第二子特征图9*8,第三子特征图为8*9,第四子特征图为8*8。上述第一子特征图与上述位移寄存器阵列的大小一致。

请参见图6,图6为本申请示出的一种池化窗口示意图。其中,图6示出的池化窗口包括,以池化核大小为3*3,步长为2对上述目标特征图进行池化时的池化窗口。

如图6所示,虚线框内表示目标特征图中的一个池化窗口。该池化窗口内可以包括4个黑色块,2个深灰色块,2个白色块以及1个浅灰色块。在对该池化窗口进行池化操作时,根据各子特征图中处于同一池化窗口的像素值所处的位置,针对每个池化窗口,可以先执行S61-S62,确定分别处于左上角,右上角,左下角,右下角位置四个像素值中最大值,即该池化窗口对应的在第一子特征图中的上下左右相邻四个像素值中第一最大值。然后再执行S63-S64确定处于第一行第二列,以及第三行第二列位置的两个像素值中的最大值,即该池化窗口对应的在第二子特征图中上下相邻的两个像素值中的第二最大值。然后再执行S65-S66,确定处于第二行第一列和第二行第三列的两个像素值中的最大值,即该池化窗口对应的在第三子特征图中左右相邻的两个像素值中的第三最大值。最后确定上述第一最大值、第二最大值、第三最大值以及位置处于中间的像素值(即该池化窗口对应的在第四子特征图中的像素值)中的最大值,并将确定的最大值作为针对该池化窗口的最大池化结果。

在一些例子中,可以执行S61,按照预设搬移方法,将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器中。

在一些例子中,可以按照预设搬移方法,将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器的第一寄存器中。

然后,可以执行S62,与上述至少部分位移寄存器对应的计算内核可以根据上述池化指令,对上述位移寄存器阵列包括的任意四个上下左右相邻的位移寄存器中的像素值进行池化操作,得到第一部分池化处理结果,并将上述第一部分池化处理结果存储至上述四个上下左右相邻的位移寄存器中处于预设位置的目标位移寄存器内。

在一些例子中,上述预设位置包括任意四个上下左右相邻的位移寄存器中的左下角位置。可以理解的是,上述预设位置为其它位置的方案可以参照本实施例,在此不做详述。

上述目标位移寄存器包括上述四个上下左右相邻的位移寄存器中的左下角位置的位移寄存器。请参见图7,图7为本申请示出的一种针对第一子特征图像素值搬移的示意图。需要说明的是,位移寄存器阵列中任意上下左右相邻的四个位移寄存器均可以看作是图7示出的一组位移寄存器。以图7示出的该组位移寄存器中的第二位移寄存器为例,在另一组位移寄存器组中可能是第一位移寄存器,也可能是第三位移寄存器或目标位移寄存器。

图7仅示意性的说明像素值在一组位移寄存器中的移动流向,其它组位移寄存器中像素值的移动流向可以参照图7示意出的,在本申请中不做详述。

如图7(图7中并未示意出PE)所示,一组位移寄存器中,左上角位置的位移寄存器可以看作是第一位移寄存器,第一位移寄存器右方的位移寄存器可以看作第二位移寄存器,第二位移寄存器下方的位移寄存器可以看作是第三位移寄存器,第三位移寄存器左方的位移寄存器可以看作是上述目标位移寄存器。

在如图7中,S71,可以将上述部分位移寄存器中各第一位移寄存器的第一寄存器中的数值搬移至该第一位移寄存器右方的第二位移寄存器的第二寄存器中。

然后,各计算内核可以将各第二位移寄存器中第一寄存器与第二寄存器中较大的数值存储至各第二位移寄存器的第一寄存器中。

S72,可以将上述各第二位移寄存器中第一寄存器中的数值搬移至该第二位移寄存器下方的第三位移寄存器的第二寄存器中。

然后,各计算内核可以将各第三位移寄存器中第一寄存器与第二寄存器中较大的数值存储至各第三位移寄存器的第一寄存器中。

S73,可以将上述各第三位移寄存器中第一寄存器中的数值搬移至该第三位移寄存器左方的目标位移寄存器的第二寄存器中。

然后,各计算内核可以将各目标位移寄存器中第一寄存器与第二寄存器中较大的数值作为上述第一部分池化处理结果,存储至各目标位移寄存器的第一寄存器中。

由此,即可将同一池化窗口内分别处于左上角,右上角,左下角,右下角位置四个像素值中最大值,即第一子特征图中的上下左右相邻四个像素值中第一最大值存储在上述目标位移寄存器中。

之后,可执行S63,以按照上述预设搬移方法,将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器中。

在一些例子中,可以按照上述预设搬移方法,将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中。

然后,各计算内核可以执行S64,根据上述池化指令,对上述位移寄存器阵列包括的任意两个上下相邻的位移寄存器中的像素值进行池化操作,得到第二部分池化处理结果,并将上述第二部分池化处理结果存储至上述目标位移寄存器。

请参见图8,图8为本申请示出的一种针对第二子特征图像素值搬移的示意图。需要说明的是,位移寄存器阵列中任意上下相邻的两个个位移寄存器可以看作是图8示出的一组位移寄存器。图8仅示意性的说明像素值在一组位移寄存器中的移动流向,其它组位移寄存器中像素值的移动流向可以参照图8示意出的,在本申请中不做详述。

如图8(图8中并未示意出寄存器)所示,一组位移寄存器中处于上方位置的位移寄存器可以看作是第一位移寄存器,第一位移寄存器下方的位移寄存器可以看作是上述目标位移寄存器。

S81,将上述部分位移寄存器中各第一位移寄存器的第二寄存器中的数值搬移至该第一位移寄存器下方的目标位移寄存器的第三寄存器中。

S82,各计算内核可以将各目标位移寄存器中第二寄存器与第三寄存器中较大的数值作为上述第二部分池化处理结果,存储至各目标位移寄存器的第二寄存器中。

由此,即可将同一池化窗口内分别处于第一行第二列,以及第三行第二列位置的两个像素值中的最大值,即第二子特征图中上下相邻的两个像素值中的第二最大值存储在上述目标位移寄存器中。

之后,可以执行S65,按照上述预设搬移方法,将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器中。

在一些例子中,按照上述预设搬移方法,将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器的第三寄存器中。

然后,各计算内核可以执行S66,根据上述池化指令,对上述位移寄存器阵列包括的任意两个左右相邻的位移寄存器中的像素值进行池化操作,得到第三部分池化处理结果,并将上述第三部分池化处理结果存储至上述目标位移寄存器。

请参见图9,图9为本申请示出的一种针对第三子特征图像素值搬移的示意图。需要说明的是,位移寄存器阵列中任意左右相邻的两个个位移寄存器可以看作是图9示出的一组位移寄存器。图9仅示意性的说明像素值在一组位移寄存器中的移动流向,其它组位移寄存器中像素值的移动流向可以参照图9示意出的,在本申请中不做详述。

如图9(图9中并未示意出寄存器)所示,一组位移寄存器中处于左上角位置的位移寄存器可以看作是第一位移寄存器,第一位移寄存器右方的位移寄存器可以看作第二位移寄存器,第二位移寄存器下方的位移寄存器可以看作是第三位移寄存器,第三位移寄存器左方的位移寄存器可以看作是上述目标位移寄存器。

S91,将上述部分位移寄存器中各第一位移寄存器的第三寄存器中的数值搬移至该第一位移寄存器右方的第二位移寄存器的第四寄存器中。

S92,各计算内核可以将各第二位移寄存器中第三寄存器与第四寄存器中较大的数值作为上述第三部分池化处理结果,存储至各第二位移寄存器的第三寄存器中。

至此,即可将同一池化窗口内分别第二行第一列和第二行第三列的两个像素值中的最大值,即第三子特征图中左右相邻的两个像素值中的第三最大值存储在上述第二位移寄存器中。

之后,可以将上述第三最大值(第三部分池化处理结果)搬移是上述目标位移寄存器中。即执行S93,将上述第二位移寄存器的第三寄存器中的第三部分池化处理结果,搬移至该第二位移寄存器左方的第一位移寄存器的第三寄存器中。S94,将上述第一位移寄存器的第三寄存器中的第三部分池化处理结果,搬移至该第一位移寄存器下方的目标位移寄存器的第三寄存器中。

由此,即可将同一池化窗口内分别第二行第一列和第二行第三列的两个像素值中的最大值,即第三子特征图中左右相邻的两个像素值中的第三最大值存储在上述目标位移寄存器中。

在一些例子中,在将数据从第二位移寄存器搬移至目标位移寄存器时,也可以先将数据搬移至第三位移寄存器,然后再搬移至上述目标位移寄存器。

之后,可以执行S67,按照上述预设搬移方法,将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器中。

在一些例子中,可以按照上述预设搬移方法,将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器的第四寄存器中。

然后,可以执行S68,将上述部分位移寄存器中各位移寄存器中的像素值搬移至上述目标位移寄存器。

在一些例子中,可以将上述部分位移寄存器中各第一位移寄存器的第四寄存器中的数值搬移至该第一位移寄存器下方的目标位移寄存器的第四寄存器中。

至此,上述目标位移寄存器中则包括了第一部分池化处理结果(第一最大值),第二部分池化处理结果(第二最大值),第三部分池化处理结果(第三最大值),以及处于池化窗口中间的像素值(第四子特征图对应的像素值)。

最后,可以将上述位移寄存器阵列包括的各目标位移寄存器内的第一部分池化处理结果、第二部分池化处理结果、第三部分池化处理结果以及上述第四子特征图对应的像素值进行比较,并输出其中的最大值,得到与上述目标特征图对应的池化结果。

在一些例子中,各计算内核可以将各目标位移寄存器中的第一寄存器与第二寄存器中较大的数值存储至各目标位移寄存器的第一寄存器中。

然后,可以将各目标位移寄存器中的第一寄存器与第三寄存器中较大的数值存储至各目标位移寄存器的第一寄存器中。

之后,可以将各目标位移寄存器中的第一寄存器与第四寄存器中较大的数值存储至各目标位移寄存器的第一寄存器中。

最后,输出各目标位移寄存器的第一寄存器中存储的数值,得到与上述目标特征图对应的池化结果。

由此,即可将对各池化窗口进行最大池化后得到的最大值存储在上述目标位移寄存器中,并通过输出各目标位移寄存器中的最大值,得到与上述目标特征图对应的池化结果。

在一些例子中,为了进一步提升池化效率,在上述位移寄存器外围连接了多个临时寄存器。其中,上述临时寄存器用于存储进行数值搬移操作时,溢出上述位移寄存器阵列的像素值。

由此,在进行数据搬移过程中,无需将溢出位移寄存器阵列的像素值存储至RAM,仅需将溢出像素值存储至临时寄存器,从而提升了数据搬移效率,进而提升池化效率。

在一些例子中,需进行池化处理的特征图的大小可能大于位移寄存器阵列的大小。本申请提出一种池化方法。请参见图10,图10为本申请示出的一种池化方法的方法流程图。

如图10所示,上述方法可以包括:

S1002,获取原始特征图。

S1004,将上述原始特征图划分为若干目标特征图。

S1006,根据上述任意实施例示出的池化方法对各目标特征图进行池化处理,得到各目标特征图对应的池化结果。

S1008,输出各目标特征图对应的池化结果,得到上述原始特征图对应的池化结果。

在上述方案中,可以先将原始特征图进行划分,得到若干目标特征图,然后再根据上述任意实施例示出的池化方法对各目标特征图进行池化处理,得到各目标特征图对应的池化结果。最后,输出各目标特征图对应的池化结果,得到上述原始特征图对应的池化结果。由此,即可实现对大于位移寄存器阵列的上述原始特征图的进行高效地池化处理。

本申请还提出一种芯片。上述芯片可以包括控制器;

上述控制器,用于获取目标特征图;

对上述目标特征图进行拆分,得到若干子特征图;其中,上述目标特征图中处于同一池化窗口内的至少部分像素值分别处于不同的子特征图,各池化窗口内处于同一位置的像素值处于同一子特征图;

对各子特征图中属于不同池化窗口的像素并行处理,得到上述目标特征图对应的池化结果。

在示出的一些实施例中,上述控制器具体用于:

将上述若干子特征图分别包括的像素值加载至位移寄存器阵列中,根据池化指令,对上述若干子特征图中处于同一位置的像素值并行池化处理,得到与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述控制器具体用于:

根据各子特征图中处于同一池化窗口的像素值所处的位置,确定各子特征图分别对应的位移寄存器阵列的移位操作方式;

将上述若干子特征图分别加载至位移寄存器阵列中,并针对每个子特征图,按照为该子特征图确定的位移寄存器阵列的移位操作方式对上述位移寄存器阵列中的位移寄存器存储的像素值执行移位操作,根据池化指令并行得到该特征子图中对应不同池化窗口的部分池化结果;

根据各个子特征图对应不同池化窗口的部分池化结果,确定与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述控制器具体用于:将上述目标特征图中处于奇数行、奇数列位置的像素值确定为第一子特征图;将上述目标特征图中处于奇数行、偶数列位置的像素值确定为第二子特征图;将上述目标特征图中处于偶数行、奇数列位置的像素值确定为第三子特征图;将上述目标特征图中处于偶数行、偶数列位置的像素值确定为第四子特征图。

在示出的一些实施例中,上述控制器具体用于:

将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器中;

将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使与各位移寄存器对应的计算内核根据上述池化指令,对接收的两个像素值进行池化处理,得到第一池化处理结果;

将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使各计算内核根据上述池化指令,对上述第一池化处理结果与接收的像素值进行池化处理,得到第二池化处理结果;

将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器中,以使各计算内核根据上述池化指令,对上述第二池化处理结果与接收的像素值进行池化处理,得到第三池化处理结果;

输出各计算内核分别进行池化处理得到的第三池化处理结果,得到与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述池化处理包括最大池化处理;上述池化指令包括比较两者之间的最大值;上述控制器具体用于:

将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器的第一寄存器中;以及,

将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中,以使各计算单元根据上述池化指令,获取上述第一寄存器与上述第二寄存器中存储的数值中的最大值,并将上述最大值作为上述第一池化处理结果存储在上述第一寄存器中。

在示出的一些实施例中,上述控制器具体用于:

将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中,以使各计算单元根据上述池化指令,获取上述第一寄存器与上述第二寄存器中存储的数值中的最大值,并将上述最大值作为上述第二池化处理结果存储在上述第一寄存器中;以及,

将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中,以使各计算单元根据上述池化指令,获取上述第一寄存器与上述第二寄存器中存储的数值中的最大值,并将上述最大值作为上述第三池化处理结果存储在上述第一寄存器中。

在示出的一些实施例中,上述控制器具体用于:

输出上述部分位移寄存器的第一寄存器中存储的数值,得到与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述控制器具体用于:

将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器中;

根据上述池化指令,对上述位移寄存器阵列包括的任意四个上下左右相邻的位移寄存器中的像素值进行池化操作,得到第一部分池化处理结果,并将上述第一部分池化处理结果存储至上述四个上下左右相邻的位移寄存器中处于预设位置的目标位移寄存器内;

将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器中;

根据上述池化指令,对上述位移寄存器阵列包括的任意两个上下相邻的位移寄存器中的像素值进行池化操作,得到第二部分池化处理结果,并将上述第二部分池化处理结果存储至上述目标位移寄存器;

将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器中;

根据上述池化指令,对上述位移寄存器阵列包括的任意两个左右相邻的位移寄存器中的像素值进行池化操作,得到第三部分池化处理结果,并将上述第三部分池化处理结果存储至上述目标位移寄存器;

将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器中,并将上述部分位移寄存器中各位移寄存器中的像素值搬移至上述目标位移寄存器。

根据上述位移寄存器阵列包括的各目标位移寄存器内的第一部分池化处理结果、第二部分池化处理结果、第三部分池化处理结果以及上述第四子特征图,得到与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述池化处理包括最大池化处理;上述池化指令包括比较两者之间的最大值;上述预设位置包括任意四个上下左右相邻的位移寄存器中的左下角位置;上述目标位移寄存器包括上述四个上下左右相邻的位移寄存器中的左下角位置的位移寄存器;上述控制器具体用于:

将上述第一子特征图包括的各像素值分别搬移至上述位移寄存器阵列包括的至少部分位移寄存器的第一寄存器中;

上述控制器具体用于:

将上述部分位移寄存器中各第一位移寄存器的第一寄存器中的数值搬移至该第一位移寄存器右方的第二位移寄存器的第二寄存器中;

将各第二位移寄存器中第一寄存器与第二寄存器中较大的数值存储至各第二位移寄存器的第一寄存器中;

将上述各第二位移寄存器中第一寄存器中的数值搬移至该第二位移寄存器下方的第三位移寄存器的第二寄存器中;

将各第三位移寄存器中第一寄存器与第二寄存器中较大的数值存储至各第三位移寄存器的第一寄存器中;

将上述各第三位移寄存器中第一寄存器中的数值搬移至该第三位移寄存器左方的目标位移寄存器的第二寄存器中;

将各目标位移寄存器中第一寄存器与第二寄存器中较大的数值作为上述第一部分池化处理结果,存储至各目标位移寄存器的第一寄存器中。

在示出的一些实施例中,上述控制器具体用于:

将上述第二子特征图包括的各像素值分别搬移至上述部分位移寄存器的第二寄存器中;

上述控制器具体用于:

将上述部分位移寄存器中各第一位移寄存器的第二寄存器中的数值搬移至该第一位移寄存器下方的目标位移寄存器的第三寄存器中;

将各目标位移寄存器中第二寄存器与第三寄存器中较大的数值作为上述第二部分池化处理结果,存储至各目标位移寄存器的第二寄存器中。

在示出的一些实施例中,上述控制器具体用于:

将上述第三子特征图包括的各像素值分别搬移至上述部分位移寄存器的第三寄存器中;

上述控制器具体用于:

将上述部分位移寄存器中各第一位移寄存器的第三寄存器中的数值搬移至该第一位移寄存器右方的第二位移寄存器的第四寄存器中;

将各第二位移寄存器中第三寄存器与第四寄存器中较大的数值作为上述第三部分池化处理结果,存储至各第二位移寄存器的第三寄存器中;

将上述第二位移寄存器的第三寄存器中的第三部分池化处理结果,搬移至该第二位移寄存器左方的第一位移寄存器的第三寄存器中;

将上述第一位移寄存器的第三寄存器中的第三部分池化处理结果,搬移至该第一位移寄存器下方的目标位移寄存器的第三寄存器中。

在示出的一些实施例中,上述控制器具体用:

将上述第四子特征图包括的各像素值分别搬移至上述部分位移寄存器的第四寄存器中;上述控制器具体用:

将上述部分位移寄存器中各第一位移寄存器的第四寄存器中的数值搬移至该第一位移寄存器下方的目标位移寄存器的第四寄存器中。

在示出的一些实施例中,上述控制器具体用:

将各目标位移寄存器中的第一寄存器与第二寄存器中较大的数值存储至各目标位移寄存器的第一寄存器中;

将各目标位移寄存器中的第一寄存器与第三寄存器中较大的数值存储至各目标位移寄存器的第一寄存器中;

将各目标位移寄存器中的第一寄存器与第四寄存器中较大的数值存储至各目标位移寄存器的第一寄存器中;

输出各目标位移寄存器的第一寄存器中存储的数值,得到与上述目标特征图对应的池化结果。

在示出的一些实施例中,上述位移寄存器阵列外围连接了多个临时寄存器;上述临时寄存器用于存储进行数值搬移操作时,溢出上述位移寄存器阵列的像素值。

在示出的一些实施例中,上述若干子特征图中至少部分子特征图包括的像素点数量与上述位移寄存器阵列包括的位移寄存器数量一致。

本申请还提出一种芯片。上述芯片可以包括控制器;上述控制器,用于获取原始特征图;

将上述原始特征图划分为若干目标特征图;

根据前述任一实施例示出的池化方法对各目标特征图进行池化处理,得到各目标特征图对应的池化结果;

输出各目标特征图对应的池化结果,得到上述原始特征图对应的池化结果。

本申请还提出一种电子设备,该设备包括前述任一实施例示出的芯片。

例如,该电子设备可以是手机等智能终端,或者也可以是具有摄像头并可以进行图像处理的其他设备。示例性的,当该电子设备对采集到的图像进行池化处理时,可以采用本申请实施例的芯片来执行池化任务。

由于上述芯片具有较高的池化处理效率,具有更高的性能,因此,使用该芯片可以辅助提高池化任务的处理效率,从而提升电子设备性能。

本申请还提出一种计算机可读存储介质,其上存储有计算机程序,上述程序被控制器执行时实现上述任一池化方法。

本领域技术人员应明白,本申请一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本申请一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、 0xCD_00-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请中记载的“和/或”表示至少具有两者中的其中一个,例如,“A和/或B”包括三种方案:A、B、以及“A和B”。

本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的行为或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本申请中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本申请中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本申请中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理芯片执行或控制数据处理芯片的操作的计算机程序指令中的一个或多个单元。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机芯片以由数据处理芯片执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。

本申请中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。上述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且芯片也可以实现为专用逻辑电路。

适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。

适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及0xCD_00ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。

虽然本申请包含许多具体实施细节,但是这些不应被解释为限制任何公开的范围或所要求保护的范围,而是主要用于描述特定公开的具体实施例的特征。本申请内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上上述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统单元和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。

由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。

以上上述仅为本申请一个或多个实施例的较佳实施例而已,并不用以限制本申请一个或多个实施例,凡在本申请一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请一个或多个实施例保护的范围之内。

相关技术
  • 一种池化方法、芯片、设备和存储介质
  • 池化方法和装置、检测方法和设备、电子设备、存储介质
技术分类

06120112808971