CN107729996A - 零系数跳过卷积神经网络引擎 - Google Patents
零系数跳过卷积神经网络引擎 Download PDFInfo
- Publication number
- CN107729996A CN107729996A CN201710684870.9A CN201710684870A CN107729996A CN 107729996 A CN107729996 A CN 107729996A CN 201710684870 A CN201710684870 A CN 201710684870A CN 107729996 A CN107729996 A CN 107729996A
- Authority
- CN
- China
- Prior art keywords
- coefficient
- core
- described image
- programmed
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/764—Masking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Neurology (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了零系数跳过卷积神经网络引擎。诸如卷积神经网络的卷积引擎通过实现零跳过而有效地对稀疏的核进行操作。输入图块被加载并且通过根据核中的系数的行和列索引使图块移位,来针对非零系数的输入图块计算累加和。每个系数被单独应用于图块,并且在移动到下一个非零系数之前将结果写入累加缓冲器。可以通过这种方式实现3D或4D卷积,其中累加缓冲器的不同区域存储对于沿着一个维度的不同索引的累加和。图像被完全处理,并且在移动到下一个图像之前将每个图像的结果存储在累加缓冲器中。
Description
背景
相关申请
本申请要求享有于2016年8月11日提交的且标题为“ZERO COEFFICIENT SKIPPINGCONVOLUTION NEURAL NETWORK ENGINE”的序列号为62/373,518的美国临时申请的权益,在此通过引用以其整体并入。
发明领域
本发明涉及用于执行矩阵卷积(诸如,用于实现卷积神经网络)的系统和方法。
发明背景
使用卷积神经网络(CNN)的许多机器学习应用需要非常高的计算和存储带宽。减少该需求的一种方法是对系数进行零修剪,并且当系数为零时跳过计算。这些现有的软件和硬件优化技术基于矩阵乘法。一个示例是(Baoyuan Liu、Min Wang1、Hassan Foroosh1、Marshall Tappen以及Marianna Penksy)在稀疏卷积神经网络(Sparse ConvolutionalNeural Networks)中和(Song Han CVA组,斯坦福大学)在深层神经网络模型压缩和高效推 理引擎(Deep Neural Network Model Compression and Efficient Inference Engine)中描述的稀疏矩阵乘法技术,两者在此通过引用以其整体并入。
在本文中公开的系统和方法提供了用于实现CNN的改进方法。
附图简述
为了使本发明的优点容易理解,通过参考在附图中所示的具体实施例,将呈现上面简要描述的本发明的更加具体的描述。应理解,这些附图只描绘了本发明的典型实施例,且因此不能被看作对其范围的限制,通过使用附图,将结合附加的特征和细节描述和解释本发明,其中:
图1是根据在本文中描述的方法所使用和生成的数据结构的示意性框图;
图2是根据本发明的实施例的、用于计算核(kernel)与输入数据的卷积的部件的示意性框图;以及
图3A和图3B是根据本发明的实施例的、用于计算核与输入数据的卷积的方法的过程流程图;以及
图4是在其中可以实现在本文中公开的系统和方法的计算设备的图。
详细描述
将容易理解的是,如在本文中的附图中一般性地描述和图示的,本发明的部件可以以各种不同的配置来布置和设计。因此,如在附图中表示的本发明的实施例的下列更详细的描述不旨在限制本发明所要求保护的范围,而是仅代表根据本发明的当前预期的实施例的特定示例。通过参照附图将最好地理解当前描述的实施例,其中,相同的零件自始至终由相同的数字表示。
根据本发明的实施例可以被体现为装置、方法或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等等)或把在本文中通常全部可以被称为“模块”或“系统”的软件方面和硬件方面组合的实施例的形式。此外,本发明可采用计算机程序产品的形式,该计算机程序产品体现在具有在介质中体现的计算机可用程序代码的任何有形表达介质中。
可以使用一个或更多个计算机可用的或计算机可读的介质的任意组合,包括非暂态介质。例如,计算机可读介质可包括在下列各项中的一项或更多项:便携式计算机磁盘、硬盘、随机存取存储器(RAM)设备、只读存储器(ROM)设备、可擦除可编程只读存储器(EPROM或闪速存储器)设备、便携式光盘只读存储器(CDROM)、光学储存设备、磁储存设备。在选定的实施例中,计算机可读介质可包括任何非暂态介质,其可包含、存储、传递、传播或传输由指令执行系统、装置或设备使用的、或与指令执行系统、装置或设备结合使用的程序。
用于执行本发明的操作的计算机程序代码可用一种或更多种编程语言(包括面向对象编程语言,诸如,Java、Smalltalk、C++等等,以及常规程序编程语言,诸如,“C”编程语言或类似编程语言)的任意组合编写。程序代码可以作为独立软件包在独立的硬件单元上在计算机系统上整体执行,部分地在与计算机间隔一定距离的远程计算机上执行,或完全在远程计算机或服务器上执行。在后者的场景中,远程计算机可通过任意类型的网络(包括局域网(LAN)或广域网(WAN))连接到计算机,或者可连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。
以下参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图描述本发明。应理解的是,可通过计算机程序指令或代码实现在流程图说明和/或框图中的每个框、以及在流程图说明和/或框图中的框的组合。这些计算机程序指令可被提供到通用计算机的、专用计算机的或用于生产机器的其他可编程数据处理装置的处理器,使得经由计算机的或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图中和/或在框图的一个或更多个框中所指定的功能/行为。
这些计算机程序指令还可被存储在非暂态计算机可读介质中,非暂态计算机可读介质可以指导计算机或其他可编程数据处理装置以特定方式起作用,使得在计算机可读介质中储存的指令产生制品,该制品包括实现在流程图和/或框图的一个或更多个框中所指定的功能/行为的指令工具。
计算机程序指令还可被载入到计算机或其他可编程数据处理装置,以使将在计算机或其他可编程装置上执行的一系列操作步骤产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实施流程图和/或框图中的一个或更多个框中指定的功能/行为的过程。
基于矩阵乘法的架构具有要求复制原始2D图像数据以形成输入矩阵的基本问题。并且因此增加了本已非常高的存储带宽需求。存在用于CNN的基于卷积的架构,例如,由Vinayak Gokhale、Jonghoon Jin、Aysegul Dundar、Berin Martini和EugenioCulurciello在用于深层神经网络的240G-ops/s移动协处理器(A 240G-ops/s MobileCoprocessor for Deep Neural Networks)中描述的方法,其在此通过引用的方式并入本文。
我们的解决方案将零系数跳过(zero coefficient skipping)与新颖的卷积引擎相结合。这显著降低了计算和存储带宽。传统的卷积是通过每次将整个核移动穿过所输入的2D图像来生成一个结果来完成的。我们的引擎每次只将一个核系数应用于所输入的2D图像的很大一部分(图块(tile))。由于每次只使用一个核系数,因此跳过乘以零系数,以实现高得多的性能。如果核被提前压缩,这就进一步允许使用低成本的核解压缩器,低成本的核解压缩器每次仅解压缩一个系数。
在另一方面,使用累加而不是求和进行卷积。这也使得能够对CNN输入的第三维起作用,因为第三维自然适合于累加过程的一部分。这还进一步允许以交错方式执行来自不同核的卷积。这增加了类似于矩阵乘法的输入图像数据的重新使用。
使用合理大小的累加缓冲器,多核累加卷积神经网络引擎可以一起在多个核上执行卷积。来自不同核的这些卷积有效地共享相同的2D输入图像数据以减小输入图像数据带宽。此外,该相同的累加缓冲器允许在系统中的所有乘法器上一次对一个系数实行卷积,这允许系数一次流入一个,而没有太多缓冲。
参考图1,可以在CNN算法的背景中使用本文公开的用于计算核与值(诸如,图像的像素值)的数组的卷积的装置和方法。特别地,可以向算法输入三维图像。例如,该输入可以是图像100的阵列。因此,每个图像的每个像素可以表示通常被称为“体素(voxel)”的三维(3D空间)的体积。在所示实施例中,存在kz个图像,其中,kz是大于2的整数,优选大于8或更大。因此,可以使用沿kz维度的索引(index)(即,I(kz))来指代每个输入图像。
输入图像100可以由核104的数组102进行处理。在一个应用中,数组102的每个核104应用于一个输入图像,以获得卷积输出的数组。在所示实施例中,存在Z个数组102,每个数组102包括kz个核。每个核定义了ky和kz维度。因此,参考四个索引定义每个系数C:C(kz,Z,kx,ky)。在本文中使用的核K指的是在kz和Z维度上具有相同索引的系数,即,K(kz1,Z1)=C(kz1,Z1,kx,ky)。因此,每个输入图像I(kz)与对应的核K(kz,Z)卷积,以获得卷积V(kz,Z)。随后,使具有相同Z索引的卷积V(kz,Z)求和,以获得输出图像106,即,O(Z)。
输出图像106具有X值乘以Y值的尺寸,其中,X和Y可以与输入图像100的原始尺寸相同或不同。每个核104可以是根据本领域已知的CNN算法的任何方法确定的值的二维数组。
随后,可以根据一个或更多个函数来处理输出图像106,这些函数可以包括应用其他核104的附加数组102,以便根据本领域已知的任何方法实现期望的输出。
使用以下参照图2和图3描述的部件和方法来有利地执行图像100与核104的卷积。特别地,对于给定值kz=kz1,对于Z的所有值来说,必须将核K(kz1,Z)应用于相同的输入图像I(kz1)。因此,每个图像I(kz1)仅被加载一次(诸如,以可以重叠的多个图块的方式),并且在下一个图像I(kz≠kz1)被处理之前,将所有核K(kz1,Z)应用于图像I(kz1)。
参考图2,图形处理单元(GPU)、算术和逻辑单元(ALU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或可编程通用处理器可以实现所示的部件或所示部件200的功能。
一组核可以被输入到系数解压缩器202。核可以被压缩,使得解压缩步骤的输出是一组条目,每个条目包括系数C(kz,Z,kx,ky)及其位置(例如,kx、ky、kz和Z索引)。按照这种方式,在核稀疏的情况下,减少了存储核所需的数据量。
系数解压缩器202可按照顺序输出起始于核K(kz1,0)的条目流,即,对于每一个核来说,条目将按照顺序流出,接着按照顺序流出下一个核K(kz1,11)、K(kz1,2)的条目,直到最后一个核K(kz1,Z-1)的条目流出为止。
条目流是由零跳过定序器204按照顺序处理的。零跳过定序器204根据图像缓冲器206操作。图像缓冲器206存储图像I(kz1)的一部分。例如,图像I(kz1)可以被划分成图块。每个图块可以包括对应于核的行索引和列索引(例如,ky和kx索引)的行和列。
对于包括系数C(kx,ky)、行索引ky和列索引kx的给定条目,在图像缓冲器206中存储的图块可以垂直移位(行移动到不同位置)等于ky的行数。图块也可以水平移位(列移动到不同位置)等于kx的量。
可以通过在图像缓冲器中选择起始地址(例如,行地址)来实现垂直移位,从该起始地址开始将读取图块,以用于输入到部件200的后续级,使得实现垂直移位。可以通过移位器208来实现水平移位,该移位器208将图像缓冲器的每行中的值移位等于水平移位量的列数。可以使用本领域已知的任意移位器实现来执行该移位。
在一些实施例中,移位器208是一个、两个或四个元素的分段移位器。该分段移位器可以将图像缓冲器206中的数据当做1行×64列,2行×32列或4行×16列。分段移位器根据该行与列的限定来执行水平移位和垂直移位。例如,如果数据被排列成一行,则通过仅控制图像缓冲器读取地址(即,从图像缓冲器206读取数据的地址)来完成垂直移位。如果数据呈两行或四行,仅控制图像缓冲器读取地址是不够的。相反,所读取的数据也可能需要通过将正确的行放置在图像缓冲器206内的正确位置而进行行移位。
注意,基于图块计算的卷积的行数和列数小于图块的大小。对于应用A x B核的M(行)x N(列)图块,将产生具有(M-A+1)×(N-B+1)的卷积值的输出图块。因此,垂直移位和水平移位具有将(M-A+1)×(N-B+1)窗口定位在图像缓冲器206中的图块上的效果,其中该窗口内的值被输出,以用于由乘法器210和加法器212进行进一步处理。乘法器210和加法器212可以并行处理(M-A-1)×(N-B-1)个值。
由于所输出的有效卷积值的数量小于图块的大小,因此可以处理图块使得一次生成一个输出图块。具体来说,对于具有M2行和N2列的每个输出图块,所加载的输入图块将包括M=M2+A-1行和N=N2+B-1列。每个图块被加载使得其产生在输出图像106中的特定输出图块。
由于每个输出图块需要比它所包括的行和列更多的输入行和列,因此输入图块将彼此重叠,即包括相同的行和/或列中的一些行和/或列。例如,初始图块可以具有输入图像100的行0到(M-1)和列0到(N-1)。第二图块可以具有输入图像的行0到(M-1)和列(N-B-1)到(2*N-B-1)。同样地,在行0到(M-1)中的所有图块被处理之后,下一行图块可以包括行(M-A-1)到(2*M-A-1)和列(2*N-B-1)。
一般来说,如果水平移动,每个图块将包括前一个图块的最后(B-1)列。如果垂直移动,每个图块将包括前一个图块的最后(A-1)行。
随后,系数和根据系数的索引移位的图块被输入到乘法器210。乘法器210可以实现数量至少与输出图块的一行一样大的乘法器,使得可以并行地执行对输出图块的每一行的更新。
随后,乘法器210的输出被输入到加法器212,加法器212将在累加缓冲器214中存储的元素的数组作为其输入。然后将加法的结果存储回累加缓冲器214。在所示实施例中,图块的56个值在被移位时乘以系数并加到在累加缓冲器214中存储的对应的56个值,并被写回到累加缓冲器214。
特别是对于给定的图块值T(i,j),其中i和j是行和列位置,在累加缓冲器214中的值A(i,j)可以被设置为等于A(i,j)=A(i,j)+T(i,j)。注意,A(i,j)可以用A(i+i0,j)替换,其中i0是在累加缓冲器214内的偏移量。在一些实施例中,图块的大小可以被设置为等于累加缓冲器214的大小,或几乎等于累加缓冲器214的大小(例如,其90%)。可选地,累加缓冲器214可以比图块的大小大很多倍。
由零跳过定序器204控制的水平和垂直移位确保乘法步骤的输出将与在累加缓冲器214内的适当位置对准。通过这种方式,在处理了核的所有系数之后,累加缓冲器214的值将等于核与输入图块的卷积。
参考图3A,所示的部件200或通用处理器可以实现所示的方法300a。具体地,可以由控制器执行使用所示的部件200的图3A中的一系列步骤的互操作和控制。方法300a可以包括将正在处理的图像(“当前图像”)的2D输入图块(“当前图块”)加载302到图像缓冲器206中,并且选择下一个2D核104,诸如在数组102中的2D核104。对于第一次迭代,所加载302的图块可以是在当前图像中的第一图块,并且2D核(“当前核”)可以是对应于当前图像的2D核的列中的第一2D核(参见图1),例如,具有与当前图像相同的kz索引。
随后,当前的核被解压缩306,这导致条目流出,每个条目包括系数、列索引和行索引。可选地,单个索引值可以是映射到在核内的特定列和行的输出。注意,所示的方法300a在其中核的许多条目为零时特别有用。因此,在压缩的核中只包括对于非零值的条目,并且因此,对于这些非零值,省略了下面描述的乘法和加法步骤。
在核中的条目可以按顺序处理。例如,方法300a可以包括选择308流中的条目(“当前条目”)。随后,当前图块的值的一部分(例如,(M-A+1)×(N-B+1)窗口)可以根据当前条目的列索引水平移位310,并且根据当前条目的行索引垂直移位312。
这可以包括在起始地址处开始从图像缓冲器206中读取当前图块的行的一部分,并且在其被读取之后使每一行水平移位。例如,根据列索引的值,在一行中的所有N个值可以向左侧移位从0到(B-1)个位置。到达左侧的值将被移出,并且在每一行中从左侧开始的剩余的(N-B+1)个值随后将作为在下面讨论的“移位值”而被处理。随后,移位值被输入到乘法器210,该乘法器210将每个值乘以314来自当前条目的系数。如以上提到的,可以并行地执行乘法步骤314,使得每个值被输入到单独的乘法器210。
随后,乘法步骤314的输出与累加缓冲器214的当前内容相加316。特别地,在移位的图块中的每个位置可以被添加到在累加缓冲器214中的对应位置处的值,并且被写入该位置。例如,图块值T(i,j)(其中i和j是在图块内的行位置和列位置)在步骤316处可被相加为A(i,j)=A(i,j)+T(i,j),其中,A(I,j)是累加缓冲器314内的位置i和j处的值。可选地,可以用A(i+i0,j)替换A(i,j),其中,i0是在累加缓冲器内的偏移量。
注意,核104的每个数组102(例如,行)用于确定一个输出图像106。因此,累加缓冲器对于一列中的每个核将包括单独的一组值。因此,对于作为当前核的给定核K(kz,Z),偏移量i0=Z*(M-A+1)可用于确定在累加缓冲器214中的地址,从该地址获得在求和步骤316中使用的值,并且求和步骤316的结果将被写入该地址。
如果发现318在当前的核中条目被剩下,则处理在步骤308处继续,其中在当前核中的下一个条目作为当前条目。如果没有发现在当前核中剩下条目,则方法300可以包括评估320在与当前图像对应的列中是否剩下核。如果在列中剩下待处理的核,则在步骤304处继续处理,其中,在列中的下一个核作为当前核。
注意,在一些实施例中,在列中的核被解压缩并以流的形式输出,使得不执行步骤318和步骤320的离散评估,而是作为替代地检测对于特定列的流的终止。
如果该列中的所有核被确定320将要被处理,则方法300可以包括评估322是否存在尚未处理的在当前图像中的剩余图块。如果是,则在步骤302处继续处理,其中在图像中的下一个图块作为在步骤302处加载的当前图块。如果不是,则对于当前图像终止该方法。
参考图3B,在一些实施例中,可以通过部件200实现方法300b,以便实现3D卷积。在这种情况下,使用核104的数组102处理一组输入图像100,以获得单个输出图像106,并且使用多个数组102来获得一组输出图像106。
在这种情况下,如果确定320对于当前图块不再存在要处理的2D核,则方法300b包括确定326是否存在要处理的剩余2D输入图像100。如果是,则选择328下一个2D输入图像100作为当前图像,并且还选择与当前图像对应的2D核的列进行处理。随后,对于当前图像,在步骤302处继续处理。
如果对于当前图块位置,没有发现326要处理的剩余2D输入图像,则方法300b包括评估330是否存在依然需要处理的剩余图块位置。如果是,则在步骤332处将初始图像选为当前图像,选择与当前图像对应的核的列进行处理,并且选择下一个3D图块位置作为当前图块位置。随后,在步骤302处继续处理,其中图块从当前图块位置被加载302。
对于方法300b的第一次迭代,当前图块位置是第一图块位置,例如,在位置m=0和n=0处开始的M×N图块。通过每次迭代,图块位置水平地移动,或者水平地并且垂直地移动到m和n的所有排列,其中,m=0至Th-1,n=0至Tw,其中Th是图块的行数,并且Tw是图块的列数。如以上提到的,图块可以重叠,使得下一图块位置包括前一图块的(B-1)列或图块的前一行的(A-1)行。
如果没有发现330剩下要处理的3D图块,则在累加缓冲器中存储的图块被输出334并且存储在输出图像106中(例如,在永久存储设备或其他存储设备中),存储在对应于当前的图块位置的输出图像106中的位置处。在完全处理每个图块位置(即,应用核的所有列)之后,在累加缓冲器214中存储的输出图块是对于每个输出图像106的一个图块的最终值。步骤334还可以包括将累加缓冲器214初始化为零。
注意,上述方法可以是CNN算法的应用的一部分。因此,CNN算法的其他处理可以在执行方法200之前和之后。上述方法也可以用于执行卷积的任何其他图像处理技术。也可以在需要矩阵卷积的任何时候使用方法200,特别是在核较大的情况下。
图4是示出示例计算设备400的框图。计算设备400可以用于执行各种过程,诸如,在本文中所讨论的过程。计算设备400可以用作服务器、客户端或任何其他计算实体。计算设备可以包含执行在本文中公开的方法的电路,并且计算设备可以执行一个或更多个应用程序,诸如调用在本文中公开的方法来计算三角函数的应用程序。计算设备400可以是在各种计算设备(诸如,台式计算机、笔记本计算机、服务器计算机、手持计算机、平板计算机等)中的任意计算设备。
计算设备400包括一个或更多个处理器402、一个或更多个存储器设备404、一个或更多个接口406、一个或更多个大容量储存设备408、一个或更多个输入/输出(I/O)设备410、以及显示设备430,其中的所有部件都耦合到总线412。处理器402包括执行在存储器设备404和/或大容量储存设备408中存储的指令的一个或更多个处理器或控制器。处理器402还可以包括各种类型的计算机可读介质,诸如,高速缓冲存储器。
存储器设备404包括各种计算机可读介质,诸如易失性存储器(例如,随机存取存储器(RAM)414)和/或非易失性存储器(例如,只读存储器(ROM)416)。存储器设备404还可以包括可重写ROM,诸如,闪速存储器。
大容量储存设备408包括各种计算机可读介质,诸如,磁带、磁盘、光盘、固态存储器(例如,闪速存储器)等等。如在图4中所示,特定的大容量储存设备是硬盘驱动器424。在大容量储存设备408中还可以包括各种驱动器,以便能够读取和/或写入各种计算机可读介质。大容量储存设备408包括可移除介质426和/或不可移除介质。
I/O设备410包括允许将数据和/或其他信息输入到计算设备400的、或从计算设备400取出数据和/或其他信息的各种设备。示例I/O设备410包括光标控制设备、键盘、小键盘、麦克风、监视器或其他显示设备、扬声器、打印机、网络接口卡、调制解调器、透镜、CCD或其他图像捕获设备等等。
显示设备430包括能够向计算设备400的一个或更多个用户显示信息的任意类型的设备。显示设备430的示例包括监视器、显示终端、视频投影设备等等。
图形处理单元(GPU)432可以耦合到处理器402和/或显示设备430。GPU可以可操作以渲染计算机生成的图像并执行其他图形处理。GPU可以包括通用处理器(诸如,处理器402)的一些或全部功能。GPU还可以包括图形处理特定的附加功能。GPU可以包括与坐标变换、着色、纹理化、光栅化以及有助于渲染计算机生成的图像的其他功能相关的硬编码的和/或硬连线的图形功能。
接口406包括允许计算设备400与其他系统、设备或计算环境交互的各种接口。示例接口406包括任意数量的不同的网络接口420,诸如,到局域网(LAN)、广域网(WAN)、无线网络和互联网的接口。其他接口包括用户接口418和外围设备接口422。接口406还可以包括一个或更多个用户接口元件418。接口406还可以包括一个或更多个外围接口,诸如,用于打印机的、指示设备(鼠标,轨迹板等等)的、键盘等等的接口。
总线412允许处理器402、存储器设备404、接口406、大容量储存设备408、以及I/O设备410彼此通信、以及与耦合到总线412的其他设备或部件通信。总线412表示在几种类型的总线结构中的一种或更多种,诸如系统总线、PCI总线、IEEE 1394总线、USB总线等等。
为了说明的目的,程序和其他可执行程序部件在本文中被示出为离散的块,但是应当理解,这种程序和部件可以在不同时间驻留在计算设备400的不同储存部件中,并且由处理器402执行。可选地,在本文中描述的系统和过程可以以硬件的方式、或以硬件、软件和/或固件的组合的方式来实现。例如,一个或更多个专用集成电路(ASIC)可经编程来执行本文所描述的系统和过程中的一个或更多个。
在不脱离本发明的精神或本质特征的情况下,本发明可以以其他特定形式体现。所描述的实施例在所有方面应被视为仅说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是前面的描述来表示。所有落入权利要求的等价物的含义和范围内的改变都被包括在权利要求的范围之内。
Claims (20)
1.一种用于执行卷积的方法,所述方法包括:
(a)通过电子设备从核选择系数作为当前系数;
(b)通过所述电子设备使图像的至少一部分乘以所述当前系数,以获得一组乘积;
(c)通过所述电子设备将所述一组乘积加到一组累加的和;以及
(d)重复(a)至(c),直到根据(a)至(c)处理了所述核的所有系数为止。
2.根据权利要求1所述的方法,还包括:在对所述当前系数执行(b)之前,根据在所述核内的所述当前系数的索引,通过所述电子设备使所述图像的所述至少一部分移位。
3.根据权利要求1所述的方法,还包括:在对所述当前系数执行(b)之前:
根据在所述核内的所述当前系数的行索引,通过所述电子设备使所述图像的所述至少一部分垂直移位;以及
根据在所述核内的所述当前系数的列索引,通过所述电子设备使所述图像的所述至少一部分水平移位。
4.根据权利要求3所述的方法,还包括:
通过所述电子设备检索所述图像的所述至少一部分,并将其存储在缓冲器中;
其中,根据在所述核内的所述当前系数的所述行索引使所述图像的所述至少一部分垂直移位包括:通过所述电子设备从所述图像读取在根据所述行索引选定的起始地址处开始的所述图像的所述至少一部分。
5.根据权利要求4所述的方法,其中,根据在所述核内的所述当前系数的列索引使所述图像的所述至少一部分水平移位包括:根据所述列索引使所述图像的所述至少一部分向左移位。
6.根据权利要求1所述的方法,其中,从所述核选择所述系数作为所述当前系数包括:仅选择所述核的非零系数。
7.根据权利要求1所述的方法,其中,从所述核选择所述系数作为所述当前系数包括:从解压缩器接收条目,所述条目包括所述当前系数、所述当前系数在所述核中的行索引和列索引。
8.根据权利要求7所述的方法,还包括通过所述解压缩器仅输出与所述核的非零系数对应的条目。
9.根据权利要求1所述的方法,其中,使所述图像的所述至少一部分乘以所述当前系数以获得一组乘积包括:使用乘法器的阵列使所述图像的所述至少一部分的一行值同时乘以所述当前系数。
10.根据权利要求1所述的方法,还包括:
通过所述电子设备检索所述图像的所述至少一部分,并将其存储在缓冲器中;以及
将多个核作为关于所述图像的所述至少一部分的核,通过所述电子设备按照顺序地并且重复地执行(a)至(d),而不重写或再次检索所述图像的所述至少一部分。
11.一种用于执行卷积的装置,所述装置包括:
定序器,所述定序器被编程为接收核并且输出系数流;
输入缓冲器,所述输入缓冲器存储图像的至少一部分;
乘法器,所述乘法器被编程为按照顺序将所述系数流中的每个系数乘以所述图像的所述至少一部分,以生成一组乘积;
加法器,所述加法器被编程为将每组乘积加到累加缓冲器的内容,以获得一组和,并且采用所述一组和重写所述累加缓冲器的内容。
12.根据权利要求11所述的装置,其中,所述定序器还被编程为根据在所述系数流中的每个系数的索引来引起对所述图像的所述至少一部分的移位,以获得移位的部分;
其中,所述乘法器被编程为通过将所述系数流中的每个系数乘以所述移位的部分来按照顺序将所述系数乘以所述图像的所述至少一部分,以生成所述一组乘积。
13.根据权利要求11所述的装置,其中,所述定序器还被编程为:
根据在所述系数流中的每个系数的行索引,引起对所述图像的所述至少一部分的垂直移位;
根据将获得的在所述系数流中的每个系数的列索引,引起对所述图像的所述至少一部分的水平移位;以及
其中,所述乘法器被编程为通过使所述系数流中的每个系数乘以通过所述垂直移位和所述水平移位修改的所述图像的至少一部分来按照顺序将所述系数乘以所述图像的所述至少一部分,以生成所述一组乘积。
14.根据权利要求13所述的装置,其中,所述定序器被编程为通过指定起始地址来引起垂直移位,所述图像的所述至少一部分从所述起始地址开始从所述输入缓冲器被读取以输入到所述乘法器,所述定序器被编程为根据所述行索引选择所述起始地址。
15.根据权利要求14所述的装置,其中,所述定序器被编程为:通过根据每个系数的所述列索引引起所述图像的所述至少一部分的向左移位,来根据所述列索引引起对所述图像的所述至少一部分的水平移位。
16.根据权利要求11所述的装置,其中,所述定序器被编程为通过仅输出所述核的非零系数来输出所述系数流。
17.根据权利要求11所述的装置,其中,所述定序器被编程为:通过对所述核进行解压缩以获得条目来输出所述系数流,对于在所述系数流中的每个系数,所述条目包括所述每个系数、以及所述当前系数在所述核中的所述行索引和所述列索引。
18.根据权利要求17所述的装置,其中,所述定序器被编程为仅输出与所述核的非零系数对应的条目。
19.根据权利要求11所述的装置,其中,所述乘法器包括乘法器的阵列,所述乘法器的阵列被编程为使所述图像的所述至少一部分的一行同时乘以每个系数。
20.根据权利要求11所述的装置,其中,所述装置还被编程为:
按照顺序并且重复地(a)输出对于多个核的系数流,以及(b)通过所述乘法器和所述加法器处理所述系数流,而不重写或再次检索所述图像的所述至少一部分。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662373518P | 2016-08-11 | 2016-08-11 | |
US62/373,518 | 2016-08-11 | ||
US15/671,860 | 2017-08-08 | ||
US15/671,829 | 2017-08-08 | ||
US15/671,860 US10242311B2 (en) | 2016-08-11 | 2017-08-08 | Zero coefficient skipping convolution neural network engine |
US15/671,829 US20180046898A1 (en) | 2016-08-11 | 2017-08-08 | Zero Coefficient Skipping Convolution Neural Network Engine |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107729996A true CN107729996A (zh) | 2018-02-23 |
CN107729996B CN107729996B (zh) | 2023-07-14 |
Family
ID=61158928
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710684870.9A Active CN107729996B (zh) | 2016-08-11 | 2017-08-11 | 零系数跳过卷积神经网络引擎 |
CN201710685104.4A Active CN107729997B (zh) | 2016-08-11 | 2017-08-11 | 零系数跳过卷积神经网络引擎 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710685104.4A Active CN107729997B (zh) | 2016-08-11 | 2017-08-11 | 零系数跳过卷积神经网络引擎 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10242311B2 (zh) |
JP (2) | JP6998699B2 (zh) |
CN (2) | CN107729996B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659014A (zh) * | 2018-06-29 | 2020-01-07 | 赛灵思公司 | 乘法器及神经网络计算平台 |
CN112055862A (zh) * | 2018-05-04 | 2020-12-08 | 苹果公司 | 可扩展神经网络处理引擎 |
CN112074847A (zh) * | 2018-05-04 | 2020-12-11 | 苹果公司 | 拆分用于在神经网络处理器中处理的输入数据 |
CN112074846A (zh) * | 2018-05-04 | 2020-12-11 | 苹果公司 | 用于在神经网络处理器中分配任务的系统和方法 |
CN112396085A (zh) * | 2019-08-13 | 2021-02-23 | 三星电子株式会社 | 识别图像的方法和设备 |
CN113892092A (zh) * | 2019-02-06 | 2022-01-04 | 瀚博控股公司 | 卷积模型硬件加速器的方法和系统 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11003985B2 (en) * | 2016-11-07 | 2021-05-11 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
WO2018119035A1 (en) | 2016-12-22 | 2018-06-28 | Ip Reservoir, Llc | Pipelines for hardware-accelerated machine learning |
US11048997B2 (en) * | 2016-12-27 | 2021-06-29 | Texas Instruments Incorporated | Reduced complexity convolution for convolutional neural networks |
US10310768B1 (en) * | 2017-01-11 | 2019-06-04 | Ambarella, Inc. | Convolution calculations in multiple dimensions |
KR102415508B1 (ko) * | 2017-03-28 | 2022-07-01 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
US11164071B2 (en) * | 2017-04-18 | 2021-11-02 | Samsung Electronics Co., Ltd. | Method and apparatus for reducing computational complexity of convolutional neural networks |
US10474458B2 (en) | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
TWI680409B (zh) * | 2017-07-08 | 2019-12-21 | 英屬開曼群島商意騰科技股份有限公司 | 適用於人工神經網路之矩陣及向量相乘的方法 |
KR20190052893A (ko) * | 2017-11-09 | 2019-05-17 | 삼성전자주식회사 | 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법 |
WO2019157599A1 (en) * | 2018-02-16 | 2019-08-22 | The Governing Council Of The University Of Toronto | Neural network accelerator |
JP6749358B2 (ja) * | 2018-03-19 | 2020-09-02 | 株式会社東芝 | 演算処理装置 |
WO2019215907A1 (ja) * | 2018-05-11 | 2019-11-14 | オリンパス株式会社 | 演算処理装置 |
JP7240657B2 (ja) | 2018-05-15 | 2023-03-16 | Tokyo Artisan Intelligence株式会社 | ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム |
US10936914B2 (en) | 2018-07-31 | 2021-03-02 | International Business Machines Corporation | Convolutional neural network with augmentation features |
US10831702B2 (en) * | 2018-09-20 | 2020-11-10 | Ceva D.S.P. Ltd. | Efficient utilization of systolic arrays in computational processing |
US11586417B2 (en) | 2018-09-28 | 2023-02-21 | Qualcomm Incorporated | Exploiting activation sparsity in deep neural networks |
KR102637733B1 (ko) | 2018-10-31 | 2024-02-19 | 삼성전자주식회사 | 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법 |
KR20200081044A (ko) | 2018-12-27 | 2020-07-07 | 삼성전자주식회사 | 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치 |
US11604958B2 (en) | 2019-03-13 | 2023-03-14 | Samsung Electronics Co., Ltd. | Method and apparatus for processing computation of zero value in processing of layers in neural network |
US11188744B2 (en) * | 2019-03-15 | 2021-11-30 | Microsoft Technology Licensing, Llc | Spatially sparse convolutional neural networks for inking applications |
WO2020190800A1 (en) | 2019-03-15 | 2020-09-24 | Intel Corporation | Dynamic memory reconfiguration |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
WO2020190807A1 (en) * | 2019-03-15 | 2020-09-24 | Intel Corporation | Systolic disaggregation within a matrix accelerator architecture |
JP7208529B2 (ja) * | 2019-05-29 | 2023-01-19 | 富士通株式会社 | 最適化装置及び最適化方法 |
KR20210024865A (ko) | 2019-08-26 | 2021-03-08 | 삼성전자주식회사 | 데이터를 처리하는 방법 및 장치 |
KR20210031296A (ko) | 2019-09-11 | 2021-03-19 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
KR20210045225A (ko) | 2019-10-16 | 2021-04-26 | 삼성전자주식회사 | 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치 |
US11475283B2 (en) | 2019-10-24 | 2022-10-18 | Apple Inc. | Multi dimensional convolution in neural network processor |
US20230019275A1 (en) * | 2019-11-19 | 2023-01-19 | Nec Corporation | Information processing apparatus, information processing method, non-transitory computer readable medium |
KR20210071472A (ko) * | 2019-12-06 | 2021-06-16 | 삼성전자주식회사 | 데이터를 처리하는 방법 및 장치 |
US11562235B2 (en) | 2020-02-21 | 2023-01-24 | International Business Machines Corporation | Activation function computation for neural networks |
US20210318887A1 (en) * | 2020-04-09 | 2021-10-14 | Vivante Corporation | Multiplier with Zero Skipping |
US11586442B2 (en) * | 2020-08-06 | 2023-02-21 | Nxp Usa, Inc. | System and method for convolving image with sparse kernels |
US10970619B1 (en) * | 2020-08-21 | 2021-04-06 | Moffett Technologies Co., Limited | Method and system for hierarchical weight-sparse convolution processing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5151953A (en) * | 1990-12-10 | 1992-09-29 | Harris Corporation | Single chip 2-D convolver |
CN102103739A (zh) * | 2009-12-17 | 2011-06-22 | Arm有限公司 | 图形处理系统 |
CN102208005A (zh) * | 2011-05-30 | 2011-10-05 | 华中科技大学 | 一种2-d卷积器 |
CN105593843A (zh) * | 2013-08-30 | 2016-05-18 | 微软技术许可有限责任公司 | 稀疏矩阵数据结构 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5376920B2 (ja) * | 2008-12-04 | 2013-12-25 | キヤノン株式会社 | コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置 |
CN104077233B (zh) | 2014-06-18 | 2017-04-05 | 百度在线网络技术(北京)有限公司 | 多通道卷积层处理方法和装置 |
US9805303B2 (en) * | 2015-05-21 | 2017-10-31 | Google Inc. | Rotating data for neural network computations |
US9582726B2 (en) | 2015-06-24 | 2017-02-28 | Qualcomm Incorporated | Systems and methods for image processing in a deep convolution network |
US10546211B2 (en) * | 2016-07-01 | 2020-01-28 | Google Llc | Convolutional neural network on programmable two dimensional image processor |
-
2017
- 2017-08-08 US US15/671,860 patent/US10242311B2/en active Active
- 2017-08-08 US US15/671,829 patent/US20180046898A1/en not_active Abandoned
- 2017-08-10 JP JP2017155270A patent/JP6998699B2/ja active Active
- 2017-08-10 JP JP2017155273A patent/JP6941499B2/ja active Active
- 2017-08-11 CN CN201710684870.9A patent/CN107729996B/zh active Active
- 2017-08-11 CN CN201710685104.4A patent/CN107729997B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5151953A (en) * | 1990-12-10 | 1992-09-29 | Harris Corporation | Single chip 2-D convolver |
CN102103739A (zh) * | 2009-12-17 | 2011-06-22 | Arm有限公司 | 图形处理系统 |
CN102208005A (zh) * | 2011-05-30 | 2011-10-05 | 华中科技大学 | 一种2-d卷积器 |
CN105593843A (zh) * | 2013-08-30 | 2016-05-18 | 微软技术许可有限责任公司 | 稀疏矩阵数据结构 |
Non-Patent Citations (6)
Title |
---|
ATUL RAHMAN 等: "Efficient FPGA acceleration of Convolutional Neural Networks using logical-3D compute array", 《2016 DESIGN, AUTOMATION & TEST IN EUROPE CONFERENCE & EXHIBITION (DATE)》 * |
ATUL RAHMAN 等: "Efficient FPGA acceleration of Convolutional Neural Networks using logical-3D compute array", 《2016 DESIGN, AUTOMATION & TEST IN EUROPE CONFERENCE & EXHIBITION (DATE)》, 18 March 2016 (2016-03-18), pages 1393 - 1398 * |
AYDIN BULUÇ 等: "Parallel sparse matrix-vector and matrix-transpose-vector multiplication using compressed sparse blocks", 《PROCEEDINGS OF THE TWENTY-FIRST ANNUAL SYMPOSIUM ON PARALLELISM IN ALGORITHMS AND ARCHITECTURES》 * |
AYDIN BULUÇ 等: "Parallel sparse matrix-vector and matrix-transpose-vector multiplication using compressed sparse blocks", 《PROCEEDINGS OF THE TWENTY-FIRST ANNUAL SYMPOSIUM ON PARALLELISM IN ALGORITHMS AND ARCHITECTURES》, 11 August 2009 (2009-08-11), pages 233 - 244, XP058378861, DOI: 10.1145/1583991.1584053 * |
JONGSOO PARK 等: "Holistic SparseCNN: Forging the Trident of Accuracy, Speed, and Size", 《HTTPS://ARXIV.ORG/ABS/1608.01409V1》 * |
JONGSOO PARK 等: "Holistic SparseCNN: Forging the Trident of Accuracy, Speed, and Size", 《HTTPS://ARXIV.ORG/ABS/1608.01409V1》, 4 August 2016 (2016-08-04), pages 1 - 10 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112055862A (zh) * | 2018-05-04 | 2020-12-08 | 苹果公司 | 可扩展神经网络处理引擎 |
CN112074847A (zh) * | 2018-05-04 | 2020-12-11 | 苹果公司 | 拆分用于在神经网络处理器中处理的输入数据 |
CN112074846A (zh) * | 2018-05-04 | 2020-12-11 | 苹果公司 | 用于在神经网络处理器中分配任务的系统和方法 |
CN112055862B (zh) * | 2018-05-04 | 2024-05-07 | 苹果公司 | 可扩展神经网络处理引擎 |
US11989640B2 (en) | 2018-05-04 | 2024-05-21 | Apple Inc. | Scalable neural network processing engine |
CN110659014A (zh) * | 2018-06-29 | 2020-01-07 | 赛灵思公司 | 乘法器及神经网络计算平台 |
CN110659014B (zh) * | 2018-06-29 | 2022-01-14 | 赛灵思公司 | 乘法器及神经网络计算平台 |
CN113892092A (zh) * | 2019-02-06 | 2022-01-04 | 瀚博控股公司 | 卷积模型硬件加速器的方法和系统 |
CN112396085A (zh) * | 2019-08-13 | 2021-02-23 | 三星电子株式会社 | 识别图像的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
US20180046898A1 (en) | 2018-02-15 |
JP2018028908A (ja) | 2018-02-22 |
JP6941499B2 (ja) | 2021-09-29 |
CN107729997B (zh) | 2022-12-27 |
CN107729997A (zh) | 2018-02-23 |
JP2018026134A (ja) | 2018-02-15 |
CN107729996B (zh) | 2023-07-14 |
JP6998699B2 (ja) | 2022-01-18 |
US20180046437A1 (en) | 2018-02-15 |
US10242311B2 (en) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729996A (zh) | 零系数跳过卷积神经网络引擎 | |
KR102107709B1 (ko) | 공간 트랜스포머 모듈들 | |
JP6977864B2 (ja) | 推論装置、畳み込み演算実行方法及びプログラム | |
JP2019003615A (ja) | オートエンコーダの学習 | |
CN109410141B (zh) | 一种图像处理方法、装置、电子设备及存储介质 | |
CN109325928A (zh) | 一种图像重建方法、装置及设备 | |
KR20100112162A (ko) | 고속의 메모리 효율적인 변환 구현 방법 | |
KR102646818B1 (ko) | 그래픽스 파이프라인에서의 인덱스들의 압축 및 압축 해제 | |
JP7414930B2 (ja) | 情報処理装置、情報処理方法 | |
JP2023109847A (ja) | 機械学習のための画像変換 | |
Liu et al. | Deep adaptive inference networks for single image super-resolution | |
EP2996086A1 (en) | System, method and computer program product for automatic optimization of 3d textured models for network transfer and real-time rendering | |
CN107909537A (zh) | 一种基于卷积神经网络的图像处理方法及移动终端 | |
CN107808394B (zh) | 一种基于卷积神经网络的图像处理方法及移动终端 | |
US11113578B1 (en) | Learned model-based image rendering | |
Shen et al. | Clipgen: A deep generative model for clipart vectorization and synthesis | |
CN108520532B (zh) | 识别视频中物体运动方向的方法及装置 | |
JP7378500B2 (ja) | 自己回帰ビデオ生成ニューラルネットワーク | |
EP3282398A1 (en) | Zero coefficient skipping convolution neural network engine | |
US8761543B2 (en) | Image processing using bounds adjustment | |
US11803950B2 (en) | Universal style transfer using multi-scale feature transform and user controls | |
Jobst et al. | Efficient MPS representations and quantum circuits from the Fourier modes of classical image data | |
JP2021144428A (ja) | データ処理装置、データ処理方法 | |
KR20210152957A (ko) | 신경망을 위한 향상된 곱셈 누산 디바이스 | |
JP7140491B2 (ja) | 画像処理装置、画像処理方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |