电子设备及其控制方法与流程

文档序号:20686495发布日期:2020-05-08 18:52阅读:183来源:国知局
电子设备及其控制方法与流程

本公开涉及电子设备及其控制方法,并且更具体地,涉及执行卷积处理的电子设备及其控制方法。



背景技术:

机器学习是人工智能的一个领域,并且是指通过向计算机输入数据来训练计算机以生成新知识的技术。具体地,机器学习在作为机器学习技术之一的人工神经网络领域已经得到了显著的发展,并且这引入了深度学习。

深度学习是基于人工神经网络的一种机器学习技术类型,并且可以通过使用无监督学习对用于学习的数据进行预处理或在多个层上共同地传输数据来提高学习效率,尽管人工神经网络被设计成多层结构。具体地,通过互联网的发展和用于处理它的计算性能的提高,深度学习最近随着大数据得到了迅速发展。

在该技术中,卷积神经网络(convolutionalneuralnetwork,cnn)具有适合于学习二维数据的结构,并且能够通过反向传播算法进行训练。cnn已广泛用于各种应用,诸如图像中的对象分类或对象检测。

在cnn中执行的大多数处理是卷积处理,这使得必须有效地执行卷积处理,但是在特定情况下效率可能会恶化。

图1a和图1b是用于描述根据传统技术的卷积处理的问题的图。首先,图1a示出步幅为1,并且图1b示出步幅为2。步幅是指内核数据被应用于目标数据(例如,图像)的间隔。

如图1a所示,在第一循环(cycle)中将内核数据与第一区域101的目标数据一起处理,并且可以计算具有以下值的像素数据的累加(accumulation)。

a1+b2+c3+d4+e5+f6+g7+h8+i9

通过相同的方法,在第二循环中将内核数据与第二区域102的目标数据一起处理,并且通过对整个目标数据执行这种处理而获得的结果是在图右侧的累加。

通过在目标数据上将内核数据移动一个像素来执行卷积处理。同时,如图1b所示,当步幅为2时,通过在目标数据上将内核数据移动两个像素来执行卷积处理。

也就是说,如图1b所示,在第一循环中将内核数据与第三区域103的目标数据一起处理,并且可以计算像素数据的累加。

通过相同的方法,在第二循环中将内核数据与第四区域104的目标数据一起处理,并且这里的第四区域可以是与第三区域间隔两个像素的区域。通过对整个目标数据执行这样的处理获得的结果是在图右侧的累加中的阴影部分。也就是说,步幅为2的累加数据尺寸仅仅是步幅为1的累加数据尺寸的1/4。

然而,在图1a和图1b的两种情况下,在硬件方面操作没有显著不同。具体地,即使在图1b的情况下,卷积处理也是通过以与图1a中的方式相同的方式在目标数据上将内核数据移动一个像素来执行的,并且计算与图1a中的累加相同的累加。之后,从计算的累加中仅获得图1b的阴影部分,并获得步幅为2时的结果。

也就是说,在硬件方面,当步幅为2时,针对图1b的非阴影部分执行处理,并且这是卷积处理中不必要的结果值。当步幅大于2时,硬件的利用进一步降低。

因此,需要开发一种卷积处理方法,即使步幅为2或更大,也不会降低硬件的利用。



技术实现要素:

技术问题

本公开是根据上述需求做出的,并且本公开的目的是提供一种用于提高卷积处理过程中的硬件利用的电子设备及其控制方法。

技术方案

根据本公开的用于实现前述目标的实施例,一种电子设备包括存储装置和处理器,处理器被配置为基于步幅信息对目标数据和内核数据执行卷积处理,步幅信息指示内核数据被应用于存储在存储装置中的目标数据的间隔,其中,处理器基于第一步幅信息将目标数据划分为多条子数据,基于不同于第一步幅信息的第二步幅信息,对多条子数据和分别与多条子数据相对应的多条子内核数据执行卷积处理,以及组合多个处理结果,通过基于第一步幅信息划分内核数据来获得多条子内核数据,并且,第二步幅信息指示内核数据被应用于目标数据的间隔是1。

处理器可以基于第一步幅信息为n(n是大于1的整数),将目标数据划分为n×n条子数据,并且可以通过将内核数据划分为n×n条来获得多条子内核数据。

处理器可以将n×n条子数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数),并且获得位于目标数据的(n×a+i)行和(n×b+j)列中的值作为与(i,j)相对应的子数据的值,并且a和b中的每一个可以是0或更大的自然数。

多个处理结果可以是具有不同尺寸的矩阵形式,处理器可以基于多个处理结果当中具有最大尺寸的第一矩阵来扩展其他矩阵的尺寸,并且组合包括在第一矩阵中的值和包括在扩展的其他矩阵中的值之间在相同位置处的值,并且其他矩阵的扩展区域的值可以是0。

该处理器可以包括:多个处理元件单元,该处理元件单元包括多个处理元件,每个处理元件以矩阵形式排列;数据分散器,其一侧连接到存储装置,并且另一侧连接到多个处理元件单元中的每一个;以及累加器,其一侧连接到多个处理元件单元中的每一个,并且另一侧连接到存储装置。

数据分散器可以从存储装置接收目标数据,将目标数据划分成多条子数据,并将多条子数据分别传输到多个处理元件单元,多个处理元件单元中的每一个可以基于与从数据分散器接收的子数据相对应的子内核数据执行卷积处理并将处理结果传输到累加器,并且累加器可以组合分别从多个处理元件单元接收的多个处理结果。

处理器可以基于行是m(m是大于1的整数)且列是n(n是大于1的整数)的第一步幅信息,将目标数据划分为m×n条子数据,并且可以通过将内核数据划分为m×n条来获得多条子内核数据。

处理器可以基于第一步幅信息为n(n是大于1的整数),将内核数据划分为n×n条子内核数据,并且基于第二步幅信息对多条子数据和分别与多条子数据相对应的多条子内核数据执行卷积处理。

处理器可以将n×n条子内核数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数),并且获得位于内核数据的(n×a+i)行和(n×b+j)列中的值作为与(i,j)相对应的子内核数据的值,并且a和b中的每一个可以是0或更大的自然数。

处理器可以使用预先存储在存储装置中的多个子内核数据集当中与第一步幅信息相对应的子内核数据集中包括的多条子内核数据来执行卷积处理,并且多个子内核数据集可以通过基于彼此不同的多条步幅信息划分内核数据来获得。

根据本公开的另一实施例,一种电子设备的控制方法包括:基于指示内核数据被应用于目标数据的间隔的第一步幅信息,将目标数据划分为多条子数据,基于不同于第一步幅信息的第二步幅信息,对多条子数据和分别与多条子数据相对应的多条子内核数据执行卷积处理,以及组合多个处理结果,通过基于第一步幅信息划分内核数据来获得多条子内核数据,并且,第二步幅信息指示内核数据被应用于目标数据的间隔是1。

划分可以包括基于第一步幅信息为n(n是大于1的整数),将目标数据划分为n×n条子数据,并且可以通过将内核数据划分为n×n条来获得多条子内核数据。

划分可以包括将n×n条子数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数),并且获得位于目标数据的(n×a+i)行和(n×b+j)列中的值作为与(i,j)相对应的子数据的值,并且a和b中的每一个可以是0或更大的自然数。

多个处理结果可以是具有不同尺寸的矩阵形式,并且组合可以包括:基于多个处理结果当中具有最大尺寸的第一矩阵来扩展其他矩阵的尺寸;以及组合包括在第一矩阵中的值和包括在扩展的其他矩阵中的值之间在相同位置处的值,并且其他矩阵的扩展区域的值可以为0。

划分可以包括:基于行是m(m是大于1的整数)且列是n(n是大于1的整数)的第一步幅信息,将目标数据划分为m×n条子数据,并且可以通过将内核数据划分为m×n条来获得多条子内核数据。

该方法还可以包括:基于第一步幅信息为n(n是大于1的整数),将内核数据划分为n×n条数据,并且基于第二步幅信息对多条子数据和分别与多条子数据相对应的多条子内核数据执行卷积处理。

划分可以包括将n×n条数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数),并且获得位于内核数据的(n×a+i)行和(n×b+j)列中的值作为与(i,j)相对应的子内核数据的值,并且a和b中的每一个可以是0或更大的自然数。

执行卷积处理可以包括使用预先存储的多个子内核数据集当中与第一步幅信息相对应的子内核数据集中包括的多条子内核数据来执行卷积处理,并且多个子内核数据集可以通过基于彼此不同的多条步幅信息划分内核数据来获得。

根据本公开的又一实施例,一种存储用于执行电子设备的操作方法的计算机指令的非暂时性计算机可读介质,其中操作包括,基于指示内核数据被应用于目标数据的间隔的第一步幅信息,将目标数据划分为多条子数据,基于不同于第一步幅信息的第二步幅信息,对多条子数据和分别与多条子数据相对应的多条子内核数据执行卷积处理,以及组合多个处理结果,通过基于第一步幅信息划分内核数据来获得多条子内核数据,并且,第二步幅信息指示内核数据被应用于目标数据的间隔是1。

发明效果

根据上述本公开的各种实施例,即使当内核数据被应用于目标数据的间隔是2或更大时,电子设备也可以通过以1的间隔执行卷积处理来提高硬件利用。

附图说明

图1a和图1b是用于描述根据传统技术的卷积处理的问题的图。

图2是示出根据实施例的电子设备的配置的框图。

图3a至图3c是用于描述根据实施例的用于划分目标数据和内核数据的方法的图。

图4a和图4b是用于描述根据实施例的处理方法的图。

图5a和图5b是用于描述根据另一实施例的处理方法的图。

图6是用于描述根据实施例的对三维数据的处理方法的图。

图7是用于描述根据实施例的处理器的特定配置的图。

图8是用于描述根据实施例的电子设备的控制方法的流程图。

具体实施方式

在下文中,将参考附图详细描述本公开的各种实施例。

图2是示出根据本公开实施例的电子设备100的配置的框图。

如图2所示,电子设备100包括存储装置110和处理器120。

电子设备100可以执行卷积处理。例如,电子设备100可以是桌面pc、笔记本、智能电话、平板pc、服务器等。此外,电子设备100可以是具有构建的云计算环境的系统。然而,实施例不限于此,并且电子设备100可以是任何设备,只要它可以执行卷积处理。

这里的卷积处理是在深度学习领域中非常重要的地执行的处理,并且可以是通过对目标数据和内核数据的处理来强调目标数据和内核数据彼此对应的特征的处理。

例如,目标数据可以是分辨率为1920×1080的图像数据,并且内核数据可以是3×3的锐化滤波器。可以针对每个元素将内核数据与位于目标数据的一侧的3×3的区域相乘,并且相乘的结果可以相加以生成一条数据。可以通过在目标数据上移动内核数据来重复执行这种处理,来执行卷积处理。当应用零填充时,可以以与目标数据的尺寸相同的尺寸来形成卷积处理结果,并且当不应用零填充时,可以以稍微小于目标数据的尺寸的尺寸形成卷积处理结果。通过上述对图像数据和锐化滤波器的卷积处理,可以生成比初始图像数据更锐化的图像数据。然而,这仅仅是实施例,并且可以对任何其他类型的各条数据执行卷积处理,并且卷积处理可以是在深度学习领域中可用的任何卷积处理。

存储装置110可以存储目标数据、内核数据、处理指令等。当处理指令是卷积处理指令时,处理指令可以包括步幅信息。步幅信息指示内核数据被应用于目标数据的间隔。

存储装置110可以存储至少一条内核数据。

存储装置110可以存储多个子内核数据集。这里,多个子内核数据集中的每一个都可以包括基于彼此不同的步幅信息从一条内核数据划分的多条子内核数据。

例如,多个子内核数据集当中的第一子内核数据集可以包括基于第一步幅信息从内核数据划分的多条第一子内核数据,并且多个子内核数据集之中的第二子内核数据集可以包括基于第二步幅信息从内核数据划分的多条第二子内核数据。

或者,存储装置110可以存储多条内核数据中的每一内核数据的多个子内核数据集。例如,存储装置110可以存储第一内核数据的多个第一子内核数据集和第二内核数据的多个第二子内核数据集。

同时,多条子内核数据可以由电子设备100生成,或者可以是由除了电子设备100之外的外部电子设备生成并从外部电子设备接收的信息。

稍后将详细描述基于步幅信息和上述多条子内核数据的卷积处理。

存储装置110可以被实施为硬盘、非易失性存储器、或易失性存储器。

处理器120通常控制电子设备100的操作。

在实施例中,处理器120可以被实施为数字信号处理器(digitalsignalprocessor,dsp)、微处理器、或时间控制器(timecontroller,tcon)。然而,处理器不限于此,并且可以包括或定义为中央处理单元(centralprocessingunit,cpu)、微控制器单元(microcontrollerunit,mcu)、微处理单元(microprocessingunit,mpu)、控制器、应用处理器(applicationprocessor,(ap)、通信处理器(communicationprocessor,cp)、和arm处理器中的一个或多个。此外,处理器140可以实施为具有嵌入式处理算法的片上系统(systemonchip,soc)或大规模集成电路(largescaleintegration,lsi),或者可以以现场可编程门阵列(fieldprogrammablegatearray,fpga)的形式实施。

处理器120可以基于步幅信息对目标数据和内核数据执行卷积处理,其中步幅信息指示内核数据被应用于存储在存储装置110中的目标数据的间隔。

处理器120可以基于第一步幅信息将目标数据划分为多条子数据,基于不同于第一步幅信息的第二步幅信息对多条子数据和分别与多条子数据相对应的多条子内核数据执行卷积处理,并且组合多个处理结果。

这里的多条子内核数据可以通过基于第一步幅信息划分内核数据来获得。第二步幅信息可以指示内核数据被应用于目标数据的间隔是1。也就是说,第一步幅信息可以指示内核数据被应用于目标数据的间隔是2或更大。

处理器120可以基于第一步幅信息为n(n是大于1的整数),将目标数据划分为n×n条子数据,并且可以通过将内核数据划分为n×n条来获得多条子内核数据。

例如,基于第一步幅信息是2,处理器120可以将目标数据划分为2×2=4条子数据。此外,可以通过将内核数据划分为2×2=4条来获得多条子内核数据。

然而,不限于此,并且对于目标数据的行和列,第一步幅信息可以不同。也就是说,处理器120可以基于行是m(m是大于1的整数)且列是n(n是大于1的整数)的第一步幅信息,将目标数据划分为m×n条子数据。处理器120可以使用通过将内核数据划分为m×n条而获得的多条子内核数据用于卷积处理。

例如,处理器120可以基于行是3且列是2的第一步幅信息,将目标数据划分为3×2条子数据。处理器120可以使用通过将内核数据划分为3×2条而获得的多条子内核数据用于卷积处理。

处理器120可以将n×n条子数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数),并且获得位于目标数据的(n×a+i)行和(n×b+j)列中的值作为与(i,j)相对应的子数据的值。a和b中的每一个可以是0或更大的自然数。稍后将参考附图描述用于划分目标数据的特定方法。

同时,多个处理结果可以是具有不同尺寸的矩阵形式,并且处理器120可以基于多个处理结果当中具有最大尺寸的第一矩阵来扩展其他矩阵的尺寸,并且组合包括在第一矩阵中的值和包括在扩展的其他矩阵中的值之间在相同位置处的值。其他矩阵的扩展区域的值可以是0。

例如,当通过卷积处理生成四个处理结果时,第一处理结果可以是2×2的矩阵形式,第二处理结果可以是2×3的矩阵形式,第三处理结果可以是3×2的矩阵形式,并且第四处理结果可以是4×4的矩阵形式。处理器120可以以4×4的矩阵形式扩展第一至第三处理结果,并且在扩展时添加的行或列的值可以是0。

在处理结果的扩展中,处理器120可以扩展矩阵的右侧或下侧。在上述示例中,处理器120可以通过向第一处理结果的右侧和下侧添加0,将2×2的矩阵形式扩展为4×4的矩阵形式。

处理器120可以组合包括在第一矩阵中的值和包括在扩展的其他矩阵中的值之间在相同位置处的值。也就是说,处理器120可以为每个元素添加每个值。根据上述示例,添加的结果可以是4×4的矩阵形式。

然而,不限于此,并且处理器120可以估计多个处理结果当中具有最小尺寸的第二矩阵的尺寸,并且执行与估计的尺寸相对应的处理。稍后将参考附图描述关于此的具体描述。

同时,处理器120可以包括:多个处理元件单元,处理元件单元包括多个处理元件,每个处理元件以矩阵形式排列;数据分散器,其一侧连接到存储装置110,并且另一侧连接到多个处理元件单元中的每一个;以及累加器,其一侧连接到多个处理元件单元中的每一个,并且另一侧连接到存储装置110。

数据分散器可以从存储装置110接收目标数据,将目标数据划分为多条子数据,并将多条子数据分别传输到多个处理元件单元。在这种情况下,数据分散器可以包括用于存储多条子数据的存储元件。

或者,数据分散器可以将接收到的目标数据实时分发给多个处理元件单元。例如,当顺序输入目标数据时,数据分散器可以被形成为至少一个多路复用器,并且可以顺序地将目标数据分发给多个处理元件单元。也就是说,数据分散器可以仅实时改变输入的数据的路径,并且在分发完成之后,多条子数据可以被存储在多个处理元件单元中的每一个中。

多个处理元件单元中的每一个可以基于与从数据分散器接收的子数据相对应的子内核数据来执行卷积处理,并将处理结果传输到累加器。

累加器可以组合分别从多个处理元件单元接收的多个处理结果。

处理器120可以将内核数据划分为多条子内核数据。具体地,处理器120可以基于第一步幅信息为n(n是大于1的整数),将内核数据划分为n×n条子内核数据,并且基于第二步幅信息,对多条子数据和分别与多条子数据相对应的多条子内核数据执行卷积处理。

然而,不限于此,并且对于内核数据的行和列,第一步幅信息可以是不同的。也就是说,处理器120可以基于行是m(m是大于1的整数)且列是n(n是大于1的整数)的第一步幅信息,将内核数据划分为m×n条数据。

处理器120可以将n×n条子内核数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数),并且获得位于内核数据的(n×a+i)行和(n×b+j)列中的值作为与(i,j)相对应的子内核数据的值。a和b中的每一个都可以是0或更大的自然数。也就是说,用于形成多条子内核数据的方法可以与用于形成多条子数据的方法相同。

处理器120可以使用预先存储在存储装置110中的多个子内核数据集当中与第一步幅信息相对应的子内核数据集中包括的多条子内核数据来执行卷积处理。多个子内核数据集可以通过基于彼此不同的步幅信息划分内核数据来获得。

也就是说,存储装置110可以存储通过基于彼此不同的步幅信息预先划分内核数据而获得的多个子内核数据集,并且处理器120可以基于存储在存储装置110中的信息执行卷积处理。在这种情况下,处理器120不执行划分内核数据的操作。用于生成多个子内核数据集的方法可以与用于由处理器120直接划分内核数据的方法相同,除了划分操作由除电子设备100之外的外部电子设备执行并且电子设备100仅从外部电子设备接收这些子内核数据集并存储这些子内核数据集。

上文已经简要描述了电子设备100的卷积处理方法。在下文中,将参考特定附图描述电子设备100的卷积处理方法,并且将描述对硬件利用的改进。

图3a至3b是用于描述根据本公开的实施例的用于划分目标数据和内核数据的方法的图。

首先,图3a是用于描述当步幅信息为2时用于划分目标数据的方法的图。

当步幅信息是2时,处理器120可以将目标数据划分为2×2=4条子数据。

具体地,处理器120可以将2×2=4条子数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数)。这里,i和j中的每一个是n或更小的自然数,并且因此i和j可以分别是1和2。

例如,处理器120可以将四条子数据中的每一个识别为(1,1)、(1,2)、(2,1)、和(2,2)。

处理器120可以获得位于目标数据的(n×a+i)行和(n×b+j)列中的值作为与(i,j)相对应的子数据的值。a和b中的每一个可以是0或更大的自然数。

例如,假设形成被识别为(1,1)的子数据的情况,处理器120可以获得位于目标数据的(2×a+1)行和(2×b+1)列中的值。这里a和b中的每一个都是大于0的自然数,并且因此,当a和b中的每一个从0开始被顺序地放入(2×a+1)行和(2×b+1)列中时,可以获得位于(1)行和(1)列中、(1)行和(3)列中、(1)行和(5)列中、(1)行和(7)列中、(1)行和(9)列中、(3)行和(1)列中、(3)行和(3)列中、(3)行和(5)列中、(3)行和(7)列中、(3)行和(9)列中、……、以及(9)行和(9)列中的值。图3a的右侧示出了四条子数据,并且这些条子数据当中左上侧的子数据指示被识别为(1,1)的子数据。

在以上示例中,已经描述了a和b中的每一个等于或小于4的情况。当a或b等于或大于5时,没有必要考虑,因为没有与目标数据相对应的值。也就是说,当a或b等于或大于5时,处理器120可以识别没有可从目标数据获得的值,并且可以改变a和b中的至少一个值或者完成子数据的生成。

例如,a被设置为1且b从1开始被顺序地增大,并且当a被设置为1且b被设置为5时,没有与目标数据相对应的值,并且因此,处理器120可以将a改变为2且将b改变为1,以获得与目标数据相对应的值。

在另一示例中,假设形成被识别为(1,2)的子数据的情况,处理器120可以获得位于目标数据的(2×a+1)行和(2×b+2)列中的值。这里a和b中的每一个都是0或更大的自然数,并且因此,当a和b中的每一个从0开始被顺序地放入(2×a+1)行和(2×b+2)列中时,可以获得位于(1)行和(2)列中、(1)行和(4)列中、(1)行和(6)列中、(1)行和(8)列中、(1)行和(10)列中、(3)行和(2)列中、(3)行和(4)列中、(3)行和(6)列中、(3)行和(8)列中、(3)行和(10)列中、……、以及(9)行和(10)列中的值。图3a右上侧的子数据表示被识别为(1,2)的子数据。

通过上述方法,处理器120可以形成其他两条子数据。

图3b是用于描述当步幅信息为2时用于划分内核数据的方法的图。用于划分内核的方法与图3a的用于划分目标数据的方法相同,因此将省略重叠的描述。

图3c是用于描述当步幅信息为3时用于划分内核数据的方法的图。

当步幅信息为3时,处理器120可以将内核数据划分为3×3=9条子内核数据。

具体地,处理器120可以将3×3=9条子内核数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数)。这里,i和j中的每一个是n或更小的自然数,并且因此i和j可以分别是1、2和3。

例如,处理器120可以将九条子内核数据中的每一个识别为(1,1)、(1,2)、(1,3)、(2,1)、(2,2)、(2,3)、(3,1)、(3,2)、和(3,3)。

处理器120可以获得位于内核数据的(n×a+i)行和(n×b+j)列中的值作为与(i,j)相对应的子内核数据的值。a和b中的每一个可以是0或更大的自然数。

例如,假设形成被识别为(2,3)的子数据的情况,处理器120可以获得位于内核数据的(3×a+2)行和(3×b+3)列中的值。这里a和b中的每一个是0或更大的自然数,并且因此,当a和b中的每一个从0开始被顺序地放入(3×a+2)行和(3×b+3)列中时,可以获得位于(2)行和(3)列中、(2)行和(6)列中、(5)行和(3)列中、以及(5)行和(6)列中的值。图3c的下侧示出了9条子内核数据,并且这些条子内核数据当中右侧中心的子内核数据指示被识别为(2,3)的子内核数据。

也就是说,当步幅信息为3时,与步幅信息为2的情况相比,要生成的多条子内核数据的数量可以不同。然而,生成方法没有显著的不同,并且同样应用于目标数据。也就是说,当在卷积处理中步幅信息等于或大于2时,处理器120可以通过与上述相同的方法分别将目标数据和内核数据划分为多条子数据和多条子内核数据。这里,处理器120可以基于相同的步幅信息来划分目标数据和内核数据。也就是说,分别与多条子数据相对应的子内核数据的尺寸可以彼此不同,但是多条子数据的数量和多条子内核数据的数量可以相同。

针对行和列中的每一个,步幅信息可以不同。然而,即使在这种情况下,当步幅信息中行是3且列是2时,处理器120可以将目标数据划分为3×2条子数据。

处理器120可以将3×2=6条子数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数)。这里,i和j中的每一个是n或更小的自然数,并且因此i和j可以是1、2和3,且j可以是1和2。

处理器120可以获得位于目标数据的(n×a+i)行和(n×b+j)列中的值作为与(i,j)相对应的子数据的值。a和b中的每一个可以是0或更大的自然数。

也就是说,尽管针对行和列中的每一个步幅信息是不同的,但是可以通过与上述相同的方法来划分目标数据和内核数据。

图4a和图4b是用于描述根据本公开的实施例的处理方法的图。在图4a和图4b中,假设处理了图3a的多条子数据和图3b的多条子内核数据。

处理器120可以将n×n条子数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数),并将n×n条子内核数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数)。

也就是说,处理器120可以将四条子数据分别识别为二维信息(1,1)、(1,2)、(2,1)、和(2,2),并将四条子内核数据分别识别为二维信息(1,1)、(1,2)、(2,1)、和(2,2)。

处理器120可以对多条子数据和与多条子数据中的每一个相对应的子内核数据执行卷积处理。也就是说,如图4a所示,处理器120可以对(1,1)的子数据和(1,1)的子内核数据一起执行卷积处理,对(1,2)的子数据和(1,2)的子内核数据一起执行卷积处理,对(2,1)的子数据和(2,1)的子内核数据一起执行卷积处理,并且对(2,2)的子数据和(2,2)的子内核数据一起执行卷积处理。处理器120可以并行执行步幅为1的卷积处理。

具体地,处理器120可以基于对多条子内核数据当中具有最大尺寸的子内核数据的卷积处理来同步对其他子内核数据的卷积处理。例如,在图4a中的多条子内核数据当中(1,1)的子内核数据具有最大尺寸的情况下,可以通过将子内核数据向右侧移动一次、改变行、以及将子内核数据再向右侧移动一次来执行卷积处理。

处理器120可以使(1,2)、(2,1)、和(2,2)的子内核数据的移动与(1,1)的子内核数据的移动同步。使用(2,2)的子内核数据作为示例,处理器120可以通过首先将(2,2)的子内核数据向右侧移动,并且省略向右侧的进一步移动,以与(1,1)的子内核数据的情况中的方式相同的方式改变行,并且再向右侧移动一次来执行卷积处理。此外,处理器120还可以在第二行中将(2,2)的子内核数据再向右侧移动一次,并移动到第三行,但是这也可以被省略。

图4b示出了(1,1)、(1,2)、(2,1)、和(2,2)各自的处理结果。处理器120可以基于对多条子内核数据当中具有最大尺寸的子内核数据的卷积处理来同步对其他子内核数据的卷积处理,并且因此,所有处理结果的尺寸可以彼此相同。

处理器120可以针对每个元素组合多个处理结果。通过组合获得的最终卷积处理结果可以与通过基于2的步幅对目标数据和内核数据执行卷积处理获得的结果相同。

图5a和图5b是用于描述根据本公开的另一实施例的处理方法的图。在图5a和图5b中,假设以与图4a和4b中的方式相同的方式处理图3a的多条子数据和图3b的多条子内核数据。然而,在图5a中,省略了多条子内核数据。

以与上述相同的方式,处理器120可以将多条子数据和多条子内核数据识别为二维信息,并且对多条子数据和分别与多条子数据相对应的子内核数据执行卷积处理。处理器120可以并行执行步幅为1的卷积处理。

同时,处理器120可以执行除了图4a和图4b的同步卷积处理之外的非同步卷积处理。在这种情况下,处理器120可以对多条子数据和分别与多条子数据相对应的子内核数据单独执行卷积处理,而不需要检测多条子内核数据当中具有最大尺寸的子内核数据。

因此,具有相对较小尺寸的子内核数据的(1,2)、(2,1)、和(2,2)的子内核数据在对应子数据上的移动次数可以大于图4a和图4b的情况。

例如,对(1,2)的子内核数据的卷积处理可以通过在每行中将它向右移动一次,并且然后再向右移动一次来执行。也就是说,与图4a的情况相比,可以对图5a的(1,2)的子内核数据附加地执行两次处理。以类似的方式,与图4a的情况相比,可以对图5a的(2,1)的子内核数据附加地执行两次处理,并且可以对(2,2)的子内核数据附加地执行五次处理。

图5b示出了(1,1)、(1,2)、(2,1)、和(2,2)各自的处理结果。所有处理结果的尺寸可能彼此不同,因为处理器120执行非同步卷积处理。

如图5c所示,处理器120可以基于多个处理结果当中具有最大尺寸的矩阵来扩展其他矩阵的尺寸。处理器120可以扩展其他矩阵的尺寸,使得扩展区域的值为0。

处理器120可以针对每个元素组合多个处理结果。在扩展之后,所有矩阵的尺寸彼此相同,并且因此,组合方法与图4b中描述的相同。

在下文中,处理器120可以基于多个处理结果当中具有最小尺寸的矩阵,来从组合的结果获得最终卷积处理结果。例如,如图5c所示,处理器120可以基于作为在多个处理结果当中具有最小尺寸的(1,1)的处理结果的2×2的矩阵,来从3×3的组合的结果中仅获得左上侧的2×2的值作为最终卷积处理结果。

通过组合获得的最终卷积处理结果可以与通过基于2的步幅对目标数据和内核数据执行卷积处理获得的结果相同。

图6是用于描述根据本公开的实施例的三维数据的处理方法的图。

如图6所示,目标数据(特征映射)和内核数据中的每一个可以是除了行和列之外还具有深度的三维数据。

处理器120可以基于步幅信息划分目标数据和内核数据中的每一个。处理器120可以通过仅考虑行和列来划分目标数据和内核数据中的每一个,而不管深度如何。

因此,如图6所示,处理器120可以生成4条子数据和4条子内核数据,并且每条数据可以是除了行和列之外还具有深度的三维数据。

处理器120可以并行执行步幅为1的卷积处理,并针对每个元素组合多个处理结果。这里,在针对每个元素进行组合时,处理器120除了行和列之外还可以考虑深度。

图7是用于描述根据本公开实施例的处理器120的特定配置的图。

如图7所示,处理器120可以包括数据分散器121、多个处理元件单元122、和累加器123。

数据分散器121的一侧连接到存储装置110,并且可以从存储装置110接收目标数据,并且将目标数据划分为多条子数据。

数据分散器121的另一侧连接到多个处理元件单元122中的每一个,并且可以将多条子数据分别传输到多个处理元件单元122。

多个处理元件单元122可以包括多个处理元件,每个处理元件以矩阵形式排列。即,第一处理元件单元122-1、第二处理元件单元122-2、第三处理元件单元122-3、和第四处理元件单元122-4可以包括多个处理元件,每个处理元件以矩阵形式排列。

图7仅示出了第一处理元件单元122-1、第二处理元件单元122-2、第三处理元件单元122-3、和第四处理元件单元122-4的四个处理元件单元,但是不限于此,并且可以形成任何其他数量的处理元件单元。此外,第一处理元件单元122-1、第二处理元件单元122-2、第三处理元件单元122-3、和第四处理元件单元122-4可以彼此相同或彼此不同。

在每个处理元件单元中的相邻处理元件之间,可以执行一个方向上的数据移位或两个方向上的数据移位。图7示出了彼此相邻的一些处理元件仅在向下的方向上执行数据移位,但是这仅仅是实施例,并且也可以在两个方向上执行移位。

每个处理元件可以基本上包括乘法器和算术逻辑单元(arithmeticlogicunit,alu),并且该alu可以包括至少一个或多个加法器。处理元件可以使用乘法器和alu执行基本算术运算。然而,不限于此,并且处理元件可以由任何其他结构形成,只要它可以执行诸如基本算术运算、移位等的功能。

每个处理元件可以包括用于存储数据的寄存器。例如,每个处理元件可以存储用于存储特定循环中的处理结果的寄存器。或者,每个处理元件可以包括用于存储在将特定循环中的处理结果移位到相邻处理元件之后从相邻处理元件移位的处理结果的寄存器。

多个处理元件单元122中的每一个可以基于对应的子内核数据对从数据分散器121接收的子数据执行卷积处理,并且将处理结果传输到累加器123。

当对应的子内核数据预先存储在存储装置110中时,多个处理元件单元122中的每一个可以从存储装置110接收对应的子内核数据。

或者,存储装置110可以仅存储除对应的子内核数据之外的内核数据。在这种情况下,处理器120还可以包括用于划分内核数据的内核数据分散器(未示出)。

内核数据分散器(未示出)可以从存储装置110接收内核数据,划分内核数据,并将它传输到对应的处理元件单元。

可选地,数据分散器121和内核数据分散器(未示出)可以被集成。在这种情况下,集成的分散器可以顺序地接收目标数据和内核数据,以合适的循环划分每个数据,并将每个数据传输到对应的处理元件单元。

通过处理元件的卷积处理方法是众所周知的方法,并且因此,将省略关于此的详细描述。

累加器123的一侧连接到多个处理元件单元122中的每一个,并且另一侧连接到存储装置110,并且可以分别从多个处理元件单元122接收多个处理结果,并且组合多个接收的处理结果。

图8是用于描述根据本公开实施例的电子设备的控制方法的流程图。

首先,基于指示内核数据被应用于目标数据的间隔的第一步幅信息,将目标数据划分为多条子数据(s810)。基于不同于第一步幅信息的第二步幅信息,对多条子数据和分别与多条子数据相对应的多条子内核数据执行卷积处理(s820)。然后,组合多个处理结果(s830)。通过基于第一步幅信息划分内核数据来获得多条子内核数据,并且第二步幅信息指示内核数据被应用于目标数据的间隔是1。

在划分步骤s810中,可以基于第一步幅信息为n(n是大于1的整数),将目标数据划分为n×n条子数据。可以通过将内核数据划分为n×n条来获得多条子内核数据。

划分步骤s810可以包括将n×n条子数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数)的步骤,以及获得位于目标数据的(n×a+i)行和(n×b+j)列中的值作为与(i,j)相对应的子数据的值的步骤。a和b中的每一个可以是0或更大的自然数。

多个处理结果可以是具有不同尺寸的矩阵形式,并且组合的步骤s830可以包括:基于多个处理结果当中具有最大尺寸的第一矩阵来扩展其他矩阵的尺寸的步骤,以及组合包括在第一矩阵中的值和包括在扩展的其他矩阵中的值之间在相同位置处的值的步骤。其他矩阵的扩展区域的值可以是0。

在划分的步骤s810中,可以基于行是m(m是大于1的整数)且列是n(n是大于1的整数)的第一步幅信息,将目标数据划分为m×n条子数据。可以通过将子内核数据划分为m×n条来获得多条子内核数据。

该方法还可以包括基于第一步幅信息为n(n是大于1的整数)将内核数据划分为n×n条子内核数据的步骤,以及基于第二步幅信息对多条子数据和分别与多条子数据相对应的多条子内核数据执行卷积处理的步骤。

划分步骤s810可以包括将n×n条子内核数据中的每一个识别为二维信息(i,j)(i和j中的每一个是n或更小的自然数)的步骤,以及获得位于内核数据的(n×a+i)行和(n×b+j)列中的值作为与(i,j)相对应的子内核数据的值的步骤。a和b中的每一个可以是0或更大的自然数。

在执行卷积处理的步骤s820中,可以使用预先存储的多个子内核数据集当中与第一步幅信息相对应的子内核数据集中包括的多条子内核数据来执行卷积处理。多个子内核数据集可以通过基于彼此不同的步幅信息划分内核数据来获得。

根据上述本公开的各种实施例,即使当内核数据被应用于目标数据的间隔是2或更大时,电子设备也可以通过以1的间隔执行卷积处理来提高硬件利用率。

根据本公开的实施例,上述各种实施例可以被实施为包括存储在机器可读存储介质(例如,计算机可读存储介质)中的指令的软件。这里的机器是调用存储在存储介质中的指令并根据所调用的指令进行操作的装置,并且可以包括根据所公开的实施例的电子设备(例如,电子设备(a))。在指令由处理器执行的情况下,处理器可以在处理器的控制下直接或使用其他元件执行对应于指令的功能。指令可以包括由编译器生成或由解释器执行的代码。机器可读存储介质可以以非暂时性存储介质的形式提供。这里,术语“非暂时性”仅意味着存储介质是有形的,而不包括信号,并且它不区分数据是半永久地还是临时地存储在存储介质中。

此外,根据本公开的实施例,根据上述公开的各种实施例的方法可以被提供为包括在计算机程序产品中。计算机程序产品可以作为商业可用产品在卖方和买方之间交换。计算机程序产品可以以机器可读存储介质(例如,光盘只读存储器(compactdiscreadonlymemory,cd-rom))的形式分发,或者通过应用商店(例如,playstoretm)在线分发。在在线分发的情况下,计算机程序产品的至少一部分可以至少在存储介质(诸如制造商的服务器的存储器、应用商店的服务器、或中继服务器)中临时地存储或临时地生成。

此外,根据本公开的实施例,可以使用软件、硬件、或其组合在计算机(或类似设备)可读存储介质中实施上述各种实施例。在一些情况下,本说明书中描述的实施例可以被实施为处理器本身。根据在软件方面的实施,本说明书中描述的诸如过程和功能的实施例可以被实施为单独的软件模块。每个软件模块可以执行本说明书中描述的一个或多个功能和操作。

根据上述各种实施例的用于执行机器的处理操作的计算机指令可以存储在非暂时性计算机可读介质中。当存储在非暂时性计算机可读介质中的计算机指令由特定机器的处理器执行时,根据上述各种实施例的机器的处理操作可以由特定机器执行。非暂时性计算机可读介质不是短时段存储数据的介质,诸如寄存器、高速缓存、或存储器,而是指半永久地存储数据并可由机器读取的介质。非暂时性计算机可读介质的特定示例可以包括cd、dvd、硬盘、蓝光光盘、usb、存储卡、和rom。

此外,根据上述各种实施例的每个元素(例如,模块或程序)可以由单个实体或多个实体组成,并且上述子元素中的一些子元素可以省略,或者其他子元素可以进一步包括在各种实施例中。替代地或附加地,一些元素(例如,模块或程序)可以被集成到一个实体中,以执行在集成之前由每个相应元件执行的相同或相似的功能。根据各种实施例,由模块、程序、或其他元素执行的操作可以顺序地、并行地、重复地、或启发式地执行,或者至少一些操作可以以不同的顺序执行、省略、或者可以添加不同的操作。

在上文中,已经示出并描述了本公开的优选实施例,但是本公开不限于上述特定实施例,本领域技术人员可以进行各种修改,而不脱离权利要求中要求保护的本公开的主旨,并且不能从本公开的技术精神或前景中单独理解这些修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1