CN108701236A - 卷积神经网络 - Google Patents

卷积神经网络 Download PDF

Info

Publication number
CN108701236A
CN108701236A CN201680082541.0A CN201680082541A CN108701236A CN 108701236 A CN108701236 A CN 108701236A CN 201680082541 A CN201680082541 A CN 201680082541A CN 108701236 A CN108701236 A CN 108701236A
Authority
CN
China
Prior art keywords
described image
pixels
block
storage
caching
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
Application number
CN201680082541.0A
Other languages
English (en)
Other versions
CN108701236B (zh
Inventor
P·比吉奥伊
M·C·蒙特亚努
A·卡里曼
C·扎哈里亚
D·迪努
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fotonation Ltd
Original Assignee
DigitalOptics Corp Europe Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US15/010,418 external-priority patent/US9665799B1/en
Priority claimed from US15/234,851 external-priority patent/US10497089B2/en
Application filed by DigitalOptics Corp Europe Ltd filed Critical DigitalOptics Corp Europe Ltd
Publication of CN108701236A publication Critical patent/CN108701236A/zh
Application granted granted Critical
Publication of CN108701236B publication Critical patent/CN108701236B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851Cache with interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Neurology (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

一种用于图像处理系统的卷积神经网络(CNN),所述卷积神经网络包括图像缓存,所述图像缓存响应于读取从输入映射内的指定位置延伸的N×M像素块的请求,以在输出端口处提供N×M像素块。卷积引擎从所述输出端口读取像素块,将像素块与对应的权重集组合以得到乘积,并对所述乘积应用激活函数以得到输出像素值。所述图像缓存包括多个交叉存储器,其能够在单个时钟周期中同时在输出端口处提供N×M个像素。控制器在处理输入映射之前向所述卷积引擎提供权重集,使所述卷积引擎通过递增像素的连续块的指定位置来扫描所述输入映射,并通过将输出像素值写入到所述图像缓存内的连续位置在所述图像缓存内生成输出映射。

Description

卷积神经网络
技术领域
本发明涉及一种具有改进的图像缓存的卷积神经网络。
背景技术
典型卷积神经网络(CNN)的处理流程如图1所示。通常,CNN的输入是对应于来自图像的感兴趣区域(ROI)的至少一个2D图像/映射10。图像/映射可仅包括图像强度值,例如,来自YCC图像的Y平面;或者图像/映射可包括来自图像的颜色平面的任何组合;或者另选地或除此之外,图像/映射可包含从图像得出的值,诸如PCT申请No.PCT/EP2015/073058(参考号:FN-398)中描述的梯度直方图(HOG)映射,其公开内容以引用方式并入本文,或积分图像映射。
CNN处理包括两个阶段:
○特征提取(12)-卷积部分;并且
○特征分类(14)。
CNN特征提取12通常包括多个处理层1…N,其中:
·每层包括卷积,然后是可选的子采样;
·每层产生一个或(通常)更多个映射(有时称为信道);
·每个卷积层之后的映射大小通常通过子采样来减少(其示例是池化或最大池化);
·第一卷积层通常执行原始2D图像/映射的2D卷积以产生其输出映射,而后续卷积层使用由前一层产生的输出映射作为输入来执行3D卷积。但是,如果输入包括先前从图像中导出的多个映射;或多个颜色平面,例如,图像的RGB或YCC;或者图像的多个版本,则第一卷积层可以与连续层完全相同的方式操作,对输入图像/映射执行3D卷积。
图2示出了由图1的后续特征提取卷积层执行的具有3×3×3核的示例性3D卷积。3×3×3意味着使用三个输入映射A、B、C,因此需要来自每个输入映射的3×3像素块,以便计算输出映射内的一个像素。
卷积核还具有在CNN的训练阶段期间预先计算的3×3×3=27个值或权重。使用点积函数20将输入映射像素值的三次方16与卷积核值18组合。在计算点积之后,应用激活函数22以提供输出像素值。激活函数22可包括简单除法,如通常用于卷积,或者更复杂的函数,诸如s型函数或整流线性单位(ReLU)激活函数,其形式为:zj=h(aj)=max(0,aj),如通常用于神经网络。
在这种情况下,对于2D卷积,在使用单个输入图像/映射的情况下,将使用3×3核扫描输入图像/映射以产生对应输出映射的像素。
重新参考图1,CNN特征分类14中涉及的层通常如下:
·由最后一个卷积层产生的映射在单个向量(V输入)中连接;
·V输入是多层完全连接网络的输入,包括一系列完全连接的网络层,每个网络层处理向量输入并提供向量输出;
·完全连接网络的输出包括分类评分的向量或表示根据CNN训练的输入图像/映射的特征向量。
CNN被训练为将输入ROI分类为一个或多个类别或者用图像检测对象。例如,对于可能包含面部的ROI,可以使用CNN来确定面部是属于成人还是儿童;面部在微笑、眨眼还是皱眉。对于可能包含身体的ROI,可以使用CNN来确定身体的姿势。
一旦确定了CNN的结构,即输入映射、卷积层的数量;输出映射的数量;卷积核的大小;子采样的程度;完全连接层的数量;以及其向量的范围—将在卷积层核和用于特征分类的完全连接层中使用的权重是通过对包含给定类别的正和负标记实例(例如,标记为微笑的面部和包含非笑脸的感兴趣区域)的样本数据集进行训练来确定的。用于促进CNN训练的合适平台可得自:PyLearn,其基于Theano和MatConvNet,MatConvNet进而基于Caffe;Thorch;或TensorFlow。然而,应当理解,选择用于训练的结构可能需要迭代地调整以优化由CNN提供的分类。
在任何情况下,CNN引擎结合到图像处理系统内将是有用的,使得可在采集到图像时或者至少很快之后立即执行特征分类。例如,CNN可结合到图像采集系统内,例如在2015年8月26日提交的美国临时申请No.62/210,243(参考号:FN-469)、PCT申请WO2014/005783(参考号:FN-384)和US2015/262344(参考号:FN-384-CIP)中所述的图像采集系统,其公开内容以引用方式并入。
但是,为了做到这一点,需要合理化CNN的响应性和存储器要求。
发明内容
根据第一方面,提供了一种用于根据权利要求1所述的图像处理系统的卷积神经网络引擎。
本发明的该方面的实施例提供了一种CNN引擎,其容易结合到图像处理系统内,并且其中CNN引擎可以可编程的方式被配置为利用变化的特征提取卷积层以及特征分类层来操作。CNN引擎包括具有流水线架构的图像缓存,其能够快速地向卷积引擎提供输入映射信息,使得可在最小数量的时钟周期中执行涉及给定数量的输入映射的3D卷积。
在第二方面,提供了根据权利要求28所述的图像处理系统。
该方面的实施例提供了一种可配置系统,其中可从图像缓存同时读取不同大小的像素块,用于处理以产生输出数据。
在第三方面,提供了用于根据权利要求34所述的图像处理系统的CNN。
该方面的实施例减少了CNN对系统总线的访问,使得CNN可以处理更大和/或更深的网络。
在第四方面,提供了用于根据权利要求40所述的图像处理系统的CNN。
该方面的实施例减少了图像缓存的占用面积,再次使得CNN可以处理更大和/或更深的网络。
附图说明
现在将结合附图以举例的方式描述本发明的实施例,在附图中:
图1示出了典型的卷积神经网络(CNN);
图2示出了具有3×3×3核的示例性3D卷积;
图3是根据本发明的实施例的CNN的框图;
图4示出了图3的图像缓存内的图像和映射的示例性存储器组织;
图5示出了图3的图像缓存内的特定图像/映射的示例性存储器组织;
图6示出了图3的图像缓存的内部结构;
图7示出了根据本发明另一实施例的将存储网络配置信息的闪存存储器结合到CNN内;
图8示出了图7的闪存存储器和CNN的其余部分之间的冗余连接方案;
图9示出了根据本发明又一实施例的将双缓冲图像缓存结合到CNN内;并且
图10示意性地示出了在本发明的一些实施例中采用的单晶体管存储器单元的位架构。
具体实施方式
图3示出了在图像采集系统内根据本发明实施例实现的CNN引擎30的框图。CNN引擎30连接到系统总线42并且可访问主(DRAM)存储器40,由系统采集的图像被写入该存储器中。在将图像写入到DRAM 40之前或之后获得并可能预处理图像的图像采集流水线是众所周知的,这里不再详细描述,但是在上面提到的2015年8月26日提交的美国临时申请No.62/210,243(参考号:FN-469)、PCT申请WO2014/005783(参考号:FN-384)和US2015/262344(参考号:FN-384-CIP)中描述了这种系统的示例。
因此,由系统CPU 50执行的应用程序(未示出)可通过系统总线42向CNN引擎30内的控制器60发信号通知存储在DRAM 40中并由CPU 50指示的图像的感兴趣区域(ROI)将被分析并分类。控制器60可以实现为固定状态机,或者它可以是可编程的(CPU)。在任一情况下,由CPU 50通过经由系统总线42设置控制器60内的寄存器来确定由CNN引擎30执行的可配置的连续特征提取和分类操作。
一旦被配置,控制器60随后与CNN引擎30内的各种模块通信,以从DRAM 40读取所需的图像或图像映射信息和CNN权重信息,并在向DRAM和/或随后使用的调用应用程序提供图像信息的分类之前处理该信息。
CNN引擎30包括以下模块:
图像缓存31将数据输入端口(din)和数据输出端口(dout)暴露给CNN引擎30的其余部分。数据通过数据输入端口(din)从DRAM 40经由读取控制器36或从卷积引擎32的输出端经由子采样器34读取到由控制器60在图像缓存的地址端口处指定的地址。(注意,在本说明书中,使用术语卷积引擎32,然而,从下文的描述应当理解,在实施例中,引擎32可以实现卷积层和其他形式的层两者,例如完全连接层(其在任何情况下都可被视为卷积层的一种形式,其中核大小(宽×高×信道)等于它所应用的(多信道)映射的大小)用于多层神经网络,例如图1所示。)提供开关35以使图像/映射数据能够最初经由读取控制器36由DRAM 40提供,但随后用于将由卷积引擎32/子采样器34的各层生成的信息读回到图像缓存31中,如下所述。
现在参见图4,首先将初始ROI图像/映射加载到图像缓存31中,并且该初始ROI图像/映射通常从图像缓存的地址0×00延伸,偏移量为0。需注意,缓存以2D方式寻址,其地址包括地址行和地址处的偏移量。在特征提取的第一卷积和子采样层之后,生成多个映射,在这种情况下数量为5,第1层映射0…第1层映射4。在这种情况下,这些被写入到图像缓存31中在初始ROI图像/映射的最后地址位置之后的地址线。由于这些映射通常相对于初始ROI图像/映射以2的比例进行子采样,因此可以在与初始ROI图像/映射相同的地址范围内写入这些映射中的两个映射。还要注意,由于这些映射的宽度是ROI图像/映射的宽度的一部分,因此可以将多个第1层映射写入相同的地址空间,相对于彼此以一个映射宽度的偏移量移位。如将看到的,随着处理的进行,对于每个新层,映射的数量可以更大,但是映射的大小通常由于子采样而减小。在该示例中,卷积层2从由卷积层1产生的5个映射生成10个映射,但是没有进行子采样。由卷积层2生成的新映射可以覆写图像缓存的由初始ROI图像/映射使用的区域,因为处理后续层不再需要该区域。再次需注意,第2层映射1…3在缓存内相对于彼此和映射0连续移位;映射5…7也相对于映射4连续移位。另请注意,第2层映射8和9写入到第1层映射的地址空间内,但相对于这些映射移位。尽管如此,如果图像缓存足够大,则可以保留初始ROI图像/映射以用于其他处理,例如,如果需要新的分类或者如果缓存与其他处理引擎共享。在图4的示例中,卷积层3由层2的10个映射产生20个子采样映射。同样,这些可以覆写第1层的映射,因为不再需要这些映射。
需注意,出于图像缓存访问的目的,将由特征分类层产生的向量视为包含像素值的1×W单元的1D映射。
在每种情况下,控制器60根据从CPU 50接收的配置确定起始位置,包括图像缓存31内的图像/映射、映射或向量的基址和移位范围、偏移量。
出于以下描述的目的,我们将描述每个映射内的相对地址以及如何确定这些地址,假设将起始位置添加到这些相对地址。
在任何情况下,将看到图像缓存31最初加载有来自DRAM 40的输入图像/映射。然后,可以仅使用该图像缓存31执行所有处理,而不需要访问外部DRAM以获得图像信息,直到分类完成为止。在每个卷积/子采样阶段之后,中间图像映射/向量被写回到由控制器60确定的不同图像缓存区域。然后,在将另外的中间或最终映射/向量写回到不同的图像缓存区域之前,可以读取那些映射/向量以供下一个处理层处理。写回到图像缓存31的映射/向量可以覆写来自多于1个先前迭代的映射/向量,例如,第2层输出映射可以覆写原始输入图像/映射,因为后续层不需要原始输入图像/映射。
在图3的具体实施中,数据可从输出端口dout读取或者写入到像素的N×M窗口中的图像缓存31的输入端口din,像素范围从1×1(单个像素)到5×5,并且取决于对准,最高至从窗口的(相对)基址延伸的8×8像素。因此,对于8位像素值,数据端口是512(8×8×8)个像素宽。尽管如此,应当理解,本发明同样可以用与8位不同分辨率的像素来实现。
需注意,一旦特征提取/分类完成,任何生成的映射/向量都可经由写入控制器39写回到DRAM 40。尽管如此,控制器39或控制器60可能仅需要提供最终的分类值,因此写入控制器39不是必需的,或者至少写入控制器39可能仅需要提供最终的分类值。
类似于图像缓存31的权重缓存37存储在特征提取和特征分类二者中使用的权重。如上所述,对于特征提取,权重是卷积核值;而对于特征分类,权重是完全连接层神经元/连接权重值。权重缓存的读取控制器38在处理每个层之前从DRAM 40取出权重值。例如,在特征提取卷积层中,如果存在5个输入映射并且核大小是5×5,则必须在生成每个输出映射之前从DRAM取出5×5×5(75)个权重。在特征分类中,可能需要比权重缓存37中可用的最大空间更多的权重。如果是,则使用填充权重缓存37的第一个权重集来进行处理,然后在使用新权重继续处理之前从DRAM 40取出下一权重。例如,如果待分类的向量具有2048个元素并且输出向量具有15个元素,则完全连接层需要15×2048个权重,即输出向量的每个元素需要2048个权重。如果权重缓存的大小为1024,则用于权重缓存37的读取控制器38取出计算输出向量的第一元素所需的前1024个权重,使用这些权重进行计算,然后读取控制器38取出计算该元素所需的接下来1024个权重,计算继续,然后它取出计算输出向量的第二元素所需的前1024个权重,依此类推。
应当理解,如果具体实施采用典型的8位浮点(FP)表示权重值,例如,将1位用于符号,4位用于指数,3位用于尾数,则一些权重值可能倾向于归零或饱和。
因此,在一些具体实施中,不是通过使用16位或更多位进行权重表示来增加存储要求、存储器带宽和计算要求,而是将默认FP指数偏差改变为自定义值。在标准FP表示中,默认指数偏差计算为2exp-1-1,其中exp是用于指数表示的位数(在这种情况下为4);从指数的二进制表示中减去这个偏差,得到实际的指数;所以对于指数的4位,指数值的值范围是0到15D;减去偏差(在这种情况下为7D)得到-7D到8D的实际指数值范围;与-7D相等的指数表示低于正常的权重;8D的指数不是FP表示中的数字(NaN);因此,可能指数的实际范围是-6D到7D(即,2-6:27)。这是对称表示,其可用于在表示小编号权重值和大编号权重值之间创建平衡。
然而,在一些实施例中,为了为更常见的较小编号权重值提供更好的表示,指数偏差被改变为更大的值,从而导致小编号和大编号之间的不对称表示;例如,使用等于12D的指数偏差,实际指数值将从-11D到2D,从而得到用于表示较小编号权重值的更好精度(即,2-11:22)。
通过使用所提出的权重表示,在典型情况下,网络的性能保持与使用具有较大位数但具有默认偏差的浮点表示的情况相同。
关于引擎30、30'内的权重值的处理,还可以进行进一步的改进。例如,可以使用权重压缩技术来减小完全连接层权重的大小,并因此减少用于在权重缓存37中传送并且/或者存储权重值的存储器访问要求。因此,例如,可以采用RLE(游程长度编码)来压缩层的权重值中的一个或多个零的序列。当使用这样的方案时,优选地对于大多数神经网络层压缩零值,权重的高达70%或更多可以四舍五入到零,而对神经网络的性能影响最小。这种小值权重的修剪具有从神经网络中移除(修剪)对应连接的效果。此外,这种编码可利用负零和低于正常的浮点值,它们都可被归零;而NaN(非数字)和正/负无穷大值可以饱和达到最大的正/负有效值,如下表所示:
低于正常、NaN和无穷大值的归零/饱和意味着相当多的可能浮点值(由上表中的x的排列表示)不再正常使用。这些其他未使用的值可用于编码1到64个连续零值的可变长度序列,如下所示:
·符号位是所编码数字的MSB(最高有效位);
·所有指数位组合成下一位(MSB-1位置);
·尾数位构成所编码数字的LSB(最低有效位)部分;
·结果数字加1,结果数字编码零数。
还应注意,可以对从一层到另一层的权重值使用不同的格式。因此,对于给定层,可在一种格式中更好地压缩的权重可以该形式使用,而对于另一层,权重可以使用不同的格式。格式的最简单变化涉及为每个特定层选择最佳指数偏差,不一定是如上所述的7D或12D。在任何情况下,沿着上述线的压缩可应用于任何这样的格式。
需注意,在一些实施例中,读/写控制器36、38和39中的每一者可在一个时钟周期中从/向系统存储器40读取或写入多于1个像素/重量/单元。例如,如果系统总线42包括64位,则可以在一个时钟周期中跨总线42传送8个像素/权重/单元。因此,可以在一次事务中从或向缓存31或37读取/写入8×1个像素窗口、权重集或向量。具体地讲,对于64位宽的系统总线42,其中在系统总线上的突发事务内,每个时钟周期产生新数据,如果总线42和缓存31都以相同的时钟频率工作,则控制器60可以使输入数据在图像缓存31内正确对准的方式工作,因此可在一个时钟周期中将8×1个像素写入缓存31。实际上,利用上述权重的数据压缩,每个时钟周期可读取更多权重,这在完全连接层的情况下是有用的,在完全连接层中每个时钟周期读取尽可能多的权重可为有用的。
3D卷积引擎32具有两种操作模式:
·特征提取模式
·特征分类模式。
在特征提取模式中,由读取控制器38从DRAM 40读取生成当前输出映射所需的权重;并且输入图像/映射最初由读取控制器36读取。将每个输出映射像素的输入数据和权重提供给卷积引擎32。在给定的时钟周期中从图像缓存31读取每个输入映射的N×M像素值的窗口,而每个输出映射仅需要提供一次输出映射的权重。卷积引擎32执行多个标量(点)积,接着执行激活函数以产生像素值。如果在卷积层之后存在下采样,则子采样器34执行最大下采样,并且将得到的数据提供给子采样器数据输出接口,准备好写回到图像缓存31。(也可以使用其他子采样方案,诸如平均。)最常见的子采样比例在x方向和y方向都是2。这意味着在卷积引擎32之后的2×2像素块被组合成提供给子采样器数据输出接口的一个像素。如果不需要子采样,则由卷积引擎处理层生成的数据可以直接发送到子采样器数据输出接口。然后,可以与从读取控制器36提供的数据相同的方式将数据经由开关35从子采样器数据输出接口写入到图像缓存31。
在特征分类模式中,利用读取控制器38从DRAM 40读取权重。待分类的输入向量被组织在图像缓存31中,类似于在特征提取中使用的映射,但是具有1行的大小和等于特征向量的长度的宽度(W)。因此,如果需要,仍然可以在多个像素的窗口中从存储器读取向量数据。然而,假设可能需要每个向量单元的权重多于可适合权重缓存37的权重,则在单个时钟周期中读取多个向量单元的数据可能不是非常有利。尽管如此,对于每个向量单元,卷积引擎32执行多个标量积,接着执行激活函数;如前所述,将得到的数据发送到子采样器数据存储器接口,以便写入图像缓存31中。重复这一过程,直到计算出整个输出向量并将其写入图像缓存31中。最后,包括ROI的分类的最终输出向量由写入控制器39发送到DRAM 40以进行进一步处理。
如上所述,特别是在特征提取期间,卷积引擎32可在每个时钟周期处理由图像缓存31提供的N×M像素的窗口。为了在给定的输出映射中产生一个输出像素,卷积引擎32需要:用于2D卷积的一个时钟周期;或者等于3D卷积的输入映射的数量的多个时钟周期。相同的卷积架构可用于特征提取和分类。对于特征分类,完全连接层的每个神经元/连接将具有不同的权重,因此权重数量通常将大于卷积特征提取的权重数量,在卷积特征提取中当计算新映射的每个像素时应用相同的卷积核。一旦图像数据和权重在图像缓存31和权重缓存37内可用,则卷积引擎32执行多个标量积以产生输出像素值。应当理解,使用更加并行化的缓存31可以通过例如并行计算输出映射的像素来加速该过程,但是这会过度增加卷积引擎32的大小。
如下面将更详细描述的,以及通过在图像分类期间从DRAM读取图像部分仅一次来减少访问系统DRAM 40的带宽要求;图像缓存31被布置成通过产生N×M像素的矩形窗口来加速处理,以便在尽可能少的时钟周期中并且优选地在单个时钟周期中在卷积引擎32内使用。
嵌入式应用程序的卷积核的典型大小是5×5,但是应当理解,这可能会有所不同。本发明的实施例能够以在位于图像缓存31中的任何(x,y)位置处的窗口上操作的任何大小的核操作,所述大小最多至5×5,并且取决于输入/输出映射内的对准可能最多至8×8像素。
参考图5,在本发明的实施例中,图像缓存31包括交叉存储器架构,允许在一个时钟周期中读取和写入像素块。在该实施例中,存在4个SRAM实例-SRAM0至SRAM3。
在图5中,左侧示出了64×64像素图像区域的图像缓存的2D组织。在图5中,像素索引以00开头,并且图像缓存地址以0×00开头。这些都可以是图像、图像ROI或图像缓存31内的相对地址,而绝对地址包括相对地址加上由控制器60确定的起始位置,如上文结合图4所解释的。
图5的右侧示出了图像数据如何存储在每个SRAM中。在每个(x,y)SRAM地址坐标处,存储4×4像素的块。因此,在SRAM2的地址0×00处,存储从索引40到73的4×4像素值的块。类似地,在SRAM3的地址0×01处,存储从索引4c到7f的4×4像素值的块。在该示例中,正在寻址从像素48延伸到8c的地址(8,4)处的5×5窗口,并且每个像素内的数字表示输入/输出窗口中该像素的索引。这种布置允许在仅一个时钟周期中读取和写入像素块,如下所示:
可以从任何位置读取大小为1×1最多至5×5像素的块或将其写入任何位置。可以看出,在某些情况下,大于5×5像素的窗口,例如来自地址(7,3)的窗口将需要从SRAM0、SRAM1和SRAM3的多于2个地址读取的数据。因此,为了在单个时钟周期中读取/写入窗口信息,只能从偶数x和y坐标读取6×6像素的窗口块;而7×7和8×8像素的窗口块只能从x和y坐标为4的倍数的位置读取。高于8×8像素的窗口大小需要多于1个时钟周期才能从图像缓存31中读取。尽管如此,也可以访问非矩形像素块,其具有x和y方向的独立的最大大小限制。
对于嵌入式应用程序,5×5卷积核非常适合缓存的最大窗口大小限制。如上所述,对于较大的核大小,可以使用2或4像素的步长读取;如果不是,则必须从图像缓存31进行多次读取。在任何情况下,使用该图像缓存31简化了CNN引擎30,因为可以在每个时钟周期访问馈送卷积引擎32的大像素块。
尽管不是必需的,但是在图像缓存31内的新起始地址处写入任何新映射可能更方便。
缓存的内部结构如图6所示。包括输出寄存器(dout),在该具体实施中有三个流水线级。(当然可以有更少或更多的寄存器,增加或减少缓存的流水线长度(和延迟)。在本实施例中仅使用三个,因为它在面积和性能之间提供了良好的折衷。)由于图像缓存31可在每个时钟周期提供新的N×M窗口,如果卷积引擎32也可在一个时钟周期中处理这样的窗口,则数据可通过流水线移动一个窗口,每个时钟周期写入一个点积和一个输出寄存器。因此,当执行读取操作时,输出数据可在3个时钟周期后可用,但此后,可在每个时钟周期执行连续的读取操作。当然,新的读取和写入操作可在每个时钟周期启动,并且读取和写入操作也可按任何顺序混合。
图6的具体实施包括以下子模块:
·缓存控制块(62):
○接收读取或写入操作的x,y坐标和窗口大小(w,h);并且
○计算输入数据解复用器和输出数据多路复用器选择信号(MS,BS);
○将x、y、w和h输入转换为四个SRAM中每一个的地址(ADDR)和字节(像素)使能(BE)控制信号。
·输入数据解复用器(64)和输出数据多路复用器(66):
○块64、66将每个输入/输出像素数据路由至/自正确的SRAM,并且路由至每个SRAM数据输入和数据输出端口内的正确像素位置。如所指出的,由读取控制器36或子采样器数据输出接口在din端口处或由图像缓存31在dout端口处呈现的输入和输出数据被组织在包括最多至8×8像素的数据的2D窗口中,其中(x,y)窗口地址指的是窗口原点,
它位于左上角。
地址计算
分别用于每个存储器实例SRAM0到SRAM3的地址ADDR0到ADDR3可由缓存控制块62使用以下公式(使用类似Verilog的语法)来计算。
·ADDR0={(y+4)>>(sqrt(n)-1),(x+4)>>(sqrt(n)-1)}
·ADDR1={(y+4)>>(sqrt(n)-1),x>>(sqrt(n)-1)}
·ADDR2={y>>(sqrt(n)-1),(x+4)>>(sqrt(n)-1)}
·ADDR3={y>>(sqrt(n)-1),x>>(sqrt(n)-1)}
其中{A,B}表示与B连接的A,其中A和B是一个或多个位的信号,因此如果A和B是4位信号,则{A,B}将是8位信号;并且其中n是4×4块中的图像缓存存储器的宽度,因此在当前示例中n=16以容纳64像素宽的图像。
因此,y被抽取以提供地址行的最高有效位;而x被抽取以提供地址行的最低有效位。
因此,可以看出,为了实现上述寻址方案,缓存宽度应该是2的幂。
另一方面,图像缓存31中的行数应理想地至少与第一输入图像/映射一样大,并且有用地,行数应该足以容纳输入图像/映射和至少一个卷积层的输出映射两者。在图5和图6的示例中,对于64行图像,256行足以存储输入图像/映射、来自至少一个层的输出映射和特征提取向量。
然而,应当理解,在实践中,图像可能大于64×64像素,因此上述示例中的n可能远大于16。
可以注意到,只需要两个加法器来计算地址:x+4和y+4。通过3次操作的移位转换为在硬件实现中不需要逻辑门的简单位选择。
如果图像缓存存储器宽度不是2的幂,那么将需要比上面概述的更复杂的逻辑来确定每个SRAM所需的图像缓存地址线。
存储器选择
通过缓存控制块62执行对要从/向图像缓存31读取或写入的窗口的任何像素的存储器SRAM0…SRAM3的选择。取决于(x,y)地址,din/dout端口内的每个像素对应于四个存储器实例SRAM0…SRAM3中的一个。四个存储器选择信号MS00…MS11中的每一个具有两个位,编码对应的存储器:
·00-SRAM0
·10-SRAM1
·01-SRAM2
·11-SRAM3
缓存控制块62使用两组信号:存储器选择(MS)和字节选择(BS)来计算存储器SRAM0…SRAM3的字节使能信号BE0…BE3。
用于从(x,y)原点延伸最多至8×8像素的窗口像素的存储器选择(MS)信号的公式可使用Verilog风格语法描述如下:
·MS00={(y[2]==0),(x[2]==0)}
·MS01={((y+1)[2]==0),(x[2]==0)}
·MS02={((y+2)[2]==0),(x[2]==0)}
·MS03={((y+3)[2]==0),(x[2]==0)}
·MS04={((y)[2]==1),(x[2]==0)}
·MS05={((y+1)[2]==1),(x[2]==0)}
·MS06={((y+2)[2]==1),(x[2]==0)}
·MS07={((y+3)[2]==1),(x[2]==0)}
·MS10={(y[2]==0),((x+1)[2]==0)}
·MS11={((y+1)[2]==0),((x+1)[2]==0)}
·MS12={((y+2)[2]==0),((x+1)[2]==0)}
·MS13={((y+3)[2]==0),((x+1)[2]==0)}
·MS14={((y)[2]==1),((x+1)[2]==0)}
·MS15={((y+1)[2]==1),((x+1)[2]==0)}
·MS16={((y+2)[2]==1),((x+1)[2]==0)}
·MS17={((y+3)[2]==1),((x+1)[2]==0)}
·…
·MS44={((y)[2]==1),((x+4)[2]==0)}
·…
·MS70={(y[2]==0),((x+7)[2]==0)}
·MS71={((y+1)[2]==0),((x+7)[2]==0)}
·MS72={((y+2)[2]==0),((x+7)[2]==0)}
·MS73={((y+3)[2]==0),((x+7)[2]==0)}
·MS74={((y)[2]==1),((x+3)[2]==1)}
·MS75={((y+1)[2]==1),((x+3)[2]==1)}
·MS76={((y+2)[2]==1),((x+3)[2]==1)}
·MS77={((y+3)[2]==1),((x+3)[2]==1)}
其中A[2]表示信号A的位2(第3最低有效位)。
因此,在图4的示例中,为像素59选择的存储器(从像素48延伸到8c的窗口的MS11)是:
y+1=5D=0101h,x+1=9D=1001h,
而为像素5c选择的存储器,即窗口的MS14是:
y=4D=0100h,x+1=9D=1001h
并且为像素8c选择的存储器,即窗口的MS44是:
y=4D=0100h,x+4=9D=1100h
同样,可以注意到,仅需要x+1,x+2,x+3和y+1,y+2,y+3和来计算所有存储器选择(MS)信号。
MS00…MS77向缓存控制块62指示其N×M输入/输出数据输出接口的每个像素将被读取自/写入到的SRAM。现在,缓存控制块62需要为SRAM中的每一个断言字节(像素)使能信号BE0…BE3,以发信号通知16个像素中存储在任何给定存储器地址的哪些特定像素将被读取自/写入到其中。(需注意,在这种情况下,术语字节与8位像素同义使用,但是,这在使用不同像素分辨率的实施例中会有所不同。)
再看图5的示例,可以看出,需要来自SRAM2的地址0×01的所有16个像素,而当读取或写入所示的5×5窗口时,仅需要来自SRAM1的地址0×09的像素0。因此,除了知道要向或从哪个存储器写入或读取像素之外,缓存控制块62还需要确定要向或从给定存储器地址内的哪个偏移读取或写入像素。
本发明的一个实施例首先开始于以与上述存储器选择(MS)信号类似的方式确定起始于指定的(x,y)地址的字节选择信号(BS)的8×8阵列。然后,特别是取决于被写入的窗口的大小(这对于读取而言不是那么重要),将屏蔽一些BS信号以生成字节使能信号BE0…BE3。例如,对于7×7窗口,其中x=0...7和y=0…7的BS信号BS×7和BS7y将被屏蔽,以防止数据被写入到8×8窗口的最后一个行和列(或可能从其读取),从而覆写图像缓存31内的数据。对于5×5窗口,BS发信号通知,其中a=5…7并且其中b=0…7的BSab和其中c=0…7并且其中d=5…7的BScd将被屏蔽,防止数据被写入到8×8窗口的最后3个行和列(或从其读取)。
可以在缓存控制块62内利用BS00的固定旋转移位(对应于窗口原点)计算所有像素的字节选择(BS),如下所示。这意味着可以在不需要逻辑门的情况下计算所有字节选择信号。
以下是Verilog风格语法中的字节选择计算公式:
在这种情况下,(x,y)地址的两个最低有效位可用于确定根据给定存储器地址处的16个像素中的哪个像素将读取对应于(x,y)地址的窗口像素,实质上这包括像素所在的给定存储器地址内的偏移。可以使用独热函数将(x,y)地址的四(2×2)位映射到16个像素中的这一个。(独热指的是一组位,其中值的合法组合仅是具有单个高(1)位并且所有其他值为低(0)的那些。)然后可以看出,字节选择(BS)矩阵的剩余像素的相对地址在循环之前移位4个为1的步长。
因此,查看图5的示例中的BS00,y[1:0]=00h,x[1:0]=00h,因此选择来自SRAM2的地址0×01的字节0(SRAM2已使用MS矩阵确定并且Addr 0×01已如上所述确定)。如果所选窗口的原点向左移位到地址(7,4),则独热函数将指示要选择{00,11}=字节3(属于来自SRAM3的地址0×00)。
字节选择(BS)矩阵的所有剩余元素都可从BS00的值得出,因为它们以4×4的步长与正被寻址的窗口的移位原点一起移位。
因此,在根据窗口的大小(w,h)屏蔽临时信号以确定最终的BE0…BE3值之前,组合MS和BS矩阵临时指示每个SRAM0…SRAM3的字节使能信号BE0…BE3。
单独地,MS和BS矩阵值中的每一个被提供给输入数据解复用器64和输出数据多路复用器66(可能根据访问是读取还是写入),使得来自BE的能够在SRAM内被寻址的值可通过数据输入端口(din)处提供的或者被提供给数据输出端口(dout)的数据而被选择并连接。
在上述示例中,由缓存控制块62为每个输入/输出(I/O)请求确定MS和BS矩阵。然而,应当理解,在缓存控制块62内实现的功能可以根据需要移位到解复用器64或多路复用器66,反之亦然。
在另选的具体实施中,可以进一步并行化图像缓存31以使得能够同时扫描输入映射,使得可以每时钟周期1的速率生成输出映射像素。但是,增加可并行读取的像素的数量会大大增加多路复用/解复用逻辑的大小(对于此缓存,多路复用/解复用逻辑的门数已经约为30KGates),而这可能不是可取的。
图5和图6中所示的存储器布置已被描述用于在图像缓存31内实现,使得图像或映射像素的N×M窗口或向量单元的1×W窗口可以在单个时钟周期中提供给卷积引擎32。应当理解,权重缓存37可以类似的方式实现,尤其是使得卷积核可在图像或映射或向量处理的开始时尽可能快地提供给卷积引擎32的方式。
在上述实施例的更进一步的变型中,图像缓存31可与不同于卷积引擎32的其他形式的图像处理器一起使用。例如,图像缓存可用于任何高性能图像或2D映射处理应用程序,其中映射元素(像素)需要以有效方式从随机位置以矩形块的形式(每个时钟周期在缓存中的任何位置的一个块)访问(读取或写入)。这种处理可能不需要权重缓存37;或者另选地,可以使用权重缓存的等效物来存储图像处理器采用的通用核值。尽管图像缓存内的交叉存储器的数量保持不变,但是在任何给定时钟周期中在图像缓存和图像处理器之间传送的像素块的大小可被配置用于由CPU诸如CPU 50执行的任何给定应用程序,使得例如可将不同大小的核应用于输入图像以产生输出图像的不同效果。
可以看出,本发明的实施例可通过主控制器60实现,仅需要最少数量的命令,包括:
RD-从系统存储器中读取映射
WR-将映射写入系统存储器
CONV-卷积
END
这允许引擎30以非常合理的方式实现。
上述实施例的更进一步的变型是可能的。应当理解,当实时处理多个视频帧(例如每秒超过30个)时,每个帧需要通过多个卷积层进行处理,缓存31内的层信息的持续仅需要非常短时间,可能是毫秒级,即它最少只需要足够短以便最初或在层处理之后被写入图像缓存中,然后从图像缓存读回到系统存储器40或用于进一步的层处理。
因此,在本发明的一些实施例中,图像缓存31用单个晶体管单元实现,其中每个编程单元的电荷存储在寄生晶体管或衬底电容中。图10中示出了这种单元的浮体变型的示例性架构。这种单元能够将电荷施加到一些存储器上,但是包括这种单元的存储器阵列不需要用于刷新存储器的电路,如在传统DRAM中那样。在美光科技公司(Micron Technology)的US 8518774、US 8014195和US 8325515中也公开了单晶体管存储单元的其他示例,但是这些布置中的一些仍然涉及提供刷新和保持功能,而WO2008/054987中公开了无刷新DRAM的另一个示例。可以看出,单元的大小以及电容确定了给定单元的最大存储时间,并且因此CNN增加了其处理层的速度,例如当网络深度或帧速率增加时,单元可以变得更小,因此可增加图像缓存的阵列大小和/或密度以处理更大的网络。因而,这种单元设计在缓存31内实现了大得多的存储密度,因此允许CNN引擎30实现大得多的网络。
然而,处理较大的网络会对CNN引擎30的其余部分产生影响,因为CNN引擎30实现的网络越大和/或越深,网络的网络配置信息就变得越广泛。
如果每次初始化CNN引擎时要通过系统总线42从DRAM 40读取该信息,则这可能严重地限制系统性能。
另一方面,一旦网络被训练,则包括网络的层拓扑定义和权重的网络配置信息基本上保持相同。
现在参考图7,示出了另一变型,其中CNN引擎30'包括板载闪存存储器80。存储器80仅需要用给定网络的网络配置信息编程一次,因此读取控制器38可直接从存储器80获得权重信息,并且如前所述不使用系统总线42便能将其提供给缓存37。(尽管未示出,但是存储器80也可以被控制器60访问,使得它不使用系统总线42便可获得网络配置信息,例如,层拓扑定义。)
在一个实施例中,闪存存储器80可以在一个芯片上实现,并且这可以堆叠在实现CNN引擎30'功能的其余部分的一个或多个另外的芯片上。用于堆叠这种芯片的方法包括由Invensas a Tessera公司提供的ZiBond和DBI,这些方法提供3D晶圆/芯片接合解决方案,使晶圆与晶圆、芯片与晶圆或芯片与芯片的接合和互连成为可能。
现在参考图8,示意性地示出了在一个芯片上实现的CNN引擎30'的其余部分的逻辑,该CNN引擎连接到在另一个芯片上实现的闪存存储器80。用于HDIO互连的片上I/O垫太精细,无法在生产测试仪上进行测试。这意味着芯片之间的HDIO互连只能在组装后进行测试。而且,在组装两个芯片时会出现缺陷,导致互连线中断。
为了解决该问题,在一个具体实施中,提供了芯片之间的冗余物理连接。然后,在生产测试仪上使用边界测试,找到良好的连接,并且使用相应的选择寄存器82和84将两个芯片之间的信号路由通过这些连接线。因此,对于N个逻辑信号,M个物理连接可用,其中M>N。根据技术产量选择M和N之间的比率。选择寄存器82、84可以是根据测试结果在生产测试仪上编程的熔丝寄存器。
现在参考图9,前述实施例的图像缓存31可用包括缓存31-A和31-B的双缓冲图像缓存代替(每个缓存包括与如图6和图7所示的缓存31等效的元件)。每个缓存31-A、31-B的输出端口Dout经由开关(多路复用器)70连接到写入控制器39(如图3所示)。每个缓存31-A、31-B的输入端口Din经由开关(多路复用器)72连接到读取控制器36(如图3所示)。如图3所示,另一个开关35确定新的图像数据是从系统存储器40写入还是从卷积引擎32的输出(为简单起见,子采样器34未在图3中示出)写入到选定的缓存31-A或31-B。
图9的布置使控制器60能够确定31-A或31-B中的哪个图像缓存将图像/映射信息提供给卷积引擎32(或提供回到系统存储器),以及当正在执行卷积的每一层时,将向哪个图像缓存,即31-A或31-B中的另一个写入所得的映射。每层的交替读取和写入选择允许一层的写入库充当后续层的读取库。然而,由于采用了两个单独的存储器,这使得能够同时读取图像/映射信息并将映射信息写入缓存31-A、31-B,从而可能使处理速度加倍。
最后,同样可以理解,在少至一个存储周期中从图像缓存31读取和/或向该图像缓存写入N×M像素的窗口的能力,意味着在卷积层中卷积X个图像/映射的操作在可以执行卷积之前,需要来自读取图像缓存的X个存储周期。
在一些实施例中,代替在一个映射地址处仅存储一个像素,来自若干映射信道(例如,16个信道)的像素被存储在给定地址处。这对于将多信道3D映射用于卷积层的CNN特别有用,这意味着可以在单个存储周期中从图像缓存读取多个信道的图像/映射信息,因此匹配所得层可被写入的速度进而最大化吞吐量。需注意,在3D卷积中,每个输入信道都对每个输出信道有贡献。这意味着使用该技术,可以执行的MAC(乘法累加器)操作的数量随着信道的数量而平方地增加。因此,通过每个时钟周期从多于一个源映射(信道)读取像素,可以增加3D卷积运算的吞吐量,而不会使对图像缓存31(31-A、31-B)的写入/读取操作过度复杂化。

Claims (42)

1.一种用于图像处理系统的卷积神经网络(CNN),包括:
包括输入端口和输出端口的图像缓存,所述图像缓存响应于读取从输入映射内的指定位置延伸的N×M像素块的请求,以在所述输出端口处提供所述N×M像素块;
卷积引擎,所述卷积引擎被布置成从所述图像缓存输出端口读取至少一个N×M像素块,以将所述至少一个N×M像素块与对应的权重集组合以得到乘积,并对所述乘积应用激活函数以得到输出像素值;
所述图像缓存被配置为经由所述图像缓存输入端口将输出像素值写入到指定的写入地址;
所述图像缓存包括多个交叉存储器,每个存储器存储给定存储器地址处的像素值块,所述图像缓存被布置成确定要从所述图像缓存读取的N×M像素块:所述交叉存储器的每一个交叉存储器内的存储所述N×M像素块的所述像素的相应一个地址;所述多个交叉存储器的相应存储器,其内存储所述N×M像素块的每个像素;以及每个存储器地址内的所述N×M像素块的每个像素的相应偏移,使得所述图像缓存可以在单个时钟周期中同时在所述输出端口处提供所述N×M个像素;以及
控制器,所述控制器被布置成在处理至少一个输入映射之前向所述卷积引擎提供权重集,以使所述卷积引擎通过指定N×M像素的连续块的位置来处理所述至少一个输入映射,并且通过将所述输出像素值写入到所述图像缓存内的连续位置在所述图像缓存内生成输出映射。
2.根据权利要求1所述的CNN,还包括子采样器,所述子采样器被布置成选择性地对来自所述卷积引擎的输出像素值进行子采样并且在数据输出接口处提供输出像素值,所述图像缓存被配置为将来自所述子采样器数据输出接口的输出像素值经由所述图像缓存输入端口写入到指定的写入地址。
3.根据权利要求1所述的CNN,还包括被布置成跨系统总线采集图像信息的读取控制器,所述读取控制器被布置成提供数据输出接口,以提供要写入到所述图像缓存内的指定写入地址的至少一个像素。
4.根据权利要求1所述的CNN,还包括被布置成跨系统总线提供图像缓存数据的写入控制器,所述写入控制器被布置成提供数据输入接口以接收要从所述图像缓存内的指定地址读取的至少一个像素。
5.根据权利要求1所述的CNN,包括A交叉存储器,并且其中在每个存储器地址处可存储用于映射的A×A个相邻像素。
6.根据权利要求5所述的CNN,其中A=4。
7.根据权利要求5所述的CNN,其中在N≤A+1且M≤A+1的情况下,所述控制器被布置成自由地访问在映射内的任何位置处的N×M像素块。
8.根据权利要求6所述的CNN,其中在M=N=6的情况下,所述控制器被布置成访问在映射内偶数位置处的N×M像素块。
9.根据权利要求6所述的CNN,其中在6<M≤8且6<N≤8的情况下,所述控制器被布置成访问在映射内仅每隔4个位置处的N×M像素块。
10.根据权利要求1所述的CNN,其中所述控制器被布置成将来自多个输出映射的像素连接成1×W单元的单个向量,并且其中所述卷积引擎被布置成将向量单元与对应的权重集组合以得到乘积,并且对所述乘积应用激活函数以得到输出向量单元值。
11.根据权利要求1所述的CNN,其中所述控制器被布置成在与用于生成所述输出映射的输入映射不同的存储器位置处将输出映射写入到所述图像缓存。
12.根据权利要求1所述的CNN,其中所述控制器被布置成用来自连续卷积层的输出映射覆写所述图像缓存内的输入映射。
13.根据权利要求1所述的CNN,其中所述图像缓存包括缓存控制块,并且对于要在所述图像缓存内访问的每个N×M像素块,在M≤8且N≤8的情况下,所述缓存控制块被布置成:计算8×8(MS)矩阵,其中每个单元指示所述多个交叉存储器的相应存储器,其内存储所述N×M像素块的每个像素;计算8×8(BS)矩阵,其中每个单元指示每个存储器地址内的所述N×M像素块的每个像素的相应偏移;组合所述MS矩阵和所述BS矩阵并根据所述N×M像素块的大小屏蔽所述组合,以为所述图像缓存的每个交叉存储器生成相应的字节使能(BE)信号。
14.根据权利要求13所述的CNN,其中所述MS矩阵使用求和与比较的组合来计算。
15.根据权利要求13所述的CNN,其中所述BS矩阵使用移位和独热函数的组合来计算。
16.根据权利要求1所述的CNN,还包括权重缓存和读取控制器,所述读取控制器被布置成将跨系统总线的每个卷积处理层的权重读取到所述权重缓存中。
17.根据权利要求16所述的CNN,其中所述权重缓存包括多个交叉存储器,每个存储器存储给定存储器地址处的权重块,所述权重缓存被布置成确定要从所述权重缓存读取的N×M权重块:所述交叉存储器的每一个交叉存储器内的存储所述N×M权重块的所述权重的相应一个地址;所述多个交叉存储器的相应存储器,其内存储所述N×M权重块的每个权重;以及每个存储器地址内的所述N×M权重块的每个权重的相应偏移,使得所述权重缓存可以在单个时钟周期中同时在输出端口处提供所述N×M个权重。
18.根据权利要求1所述的CNN,其中所述图像缓存的像素宽度是2的幂。
19.根据权利要求1所述的CNN,还包括用于所述图像缓存的读取控制器,所述读取控制器被布置成同时向所述图像缓存输入端口提供N×M像素值块,所述图像缓存被布置成确定要被写入到所述图像缓存的所述N×M像素块:所述交叉存储器的每一个交叉存储器内的要存储所述N×M像素块的所述像素的相应一个地址;所述多个交叉存储器的相应存储器,其内将要存储所述N×M像素块的每个像素;以及每个存储器地址内的所述N×M像素块的每个像素的相应偏移,使得所述图像缓存可以同时在所述输入端口处将所述N×M个像素写入到所述交叉存储器。
20.根据权利要求19所述的CNN,其中由所述读取控制器提供的所述像素块包括1行像素。
21.根据权利要求1所述的CNN,其中所述权重存储为8位浮点数,指数偏差大于7D。
22.根据权利要求21所述的CNN,其中所述指数偏差等于大约12D。
23.根据权利要求1所述的CNN,其中所述权重包括浮点数。
24.根据权利要求23所述的CNN,其中所述权重以压缩形式传输和/或存储。
25.根据权利要求24所述的CNN,其中在压缩之前,负零和低于正常的浮点值被归零并且为非数字,正无穷大值和负无穷大值是饱和的。
26.根据权利要求25所述的CNN,其中所述权重使用游程长度编码(RLE)压缩,其中用于未压缩的负零、低于正常、无穷大和/或非数字的符号编码序列中多个连续的零值权重。
27.根据权利要求1所述的CNN,其中所述图像缓存被布置成存储每个存储器地址处的多个映射的像素数据,使得可以在单个存储周期中从所述图像缓存中读取所述多个映射的N×M像素的连续块,以便在所述图像缓存内生成输出映射。
28.一种图像处理系统,包括:
包括输入端口和输出端口的图像缓存,所述图像缓存响应于读取从输入映射内的指定位置延伸的N×M像素块的请求,以在所述输出端口处提供所述N×M像素块;
图像处理器,所述图像处理器被布置成从所述图像缓存输出端口读取至少一个N×M像素块,并处理所述至少一个N×M像素块,以提供至少一个输出像素值;
所述图像缓存被配置为经由所述图像缓存输入端口将输出像素值写入到指定的写入地址;
所述图像缓存包括多个交叉存储器,每个存储器存储给定存储器地址处的像素值块,所述图像缓存被布置成确定要从所述图像缓存读取的N×M像素块:所述交叉存储器的每一个交叉存储器内的存储所述N×M像素块的所述像素的相应一个地址;所述多个交叉存储器的相应存储器,其内存储所述N×M像素块的每个像素;以及每个存储器地址内的所述N×M像素块的每个像素的相应偏移,使得所述图像缓存可以在单个时钟周期中同时在所述输出端口处提供所述N×M个像素;以及
控制器,所述控制器被布置成使所述图像处理器从所述至少一个输入映射的指定位置读取可配置的N×M像素块,并将输出像素值写入到所述图像缓存内的指定位置。
29.根据权利要求28所述的图像处理系统,包括A交叉存储器,并且其中在每个存储器地址处可存储用于映射的A×A个相邻像素。
30.根据权利要求29所述的图像处理系统,其中A=4。
31.根据权利要求29所述的图像处理系统,其中在N≤A+1且M≤A+1的情况下,所述控制器被布置成自由地访问在映射内的任何位置处的N×M像素块。
32.根据权利要求30所述的图像处理系统,其中在M=N=6的情况下,所述控制器被布置成访问在映射内偶数位置处的N×M像素块。
33.根据权利要求30所述的图像处理系统,其中在6<M≤8且6<N≤8的情况下,所述控制器被布置成访问在映射内仅每隔4个位置处的N×M像素块。
34.一种用于图像处理系统的卷积神经网络(CNN),包括:
包括输入端口和输出端口的图像缓存,所述图像缓存响应于读取从输入映射内的指定位置延伸的N×M像素块的请求,以在所述输出端口处提供所述N×M像素块;
卷积引擎,所述卷积引擎被布置成从所述图像缓存输出端口读取至少一个N×M像素块,以将所述至少一个N×M像素块与对应的权重集组合以得到乘积,并对所述乘积应用激活函数以得到输出像素值;
所述图像缓存被配置为经由所述图像缓存输入端口将输出像素值写入到指定的写入地址;
控制器,所述控制器被布置成在处理至少一个输入映射之前向所述卷积引擎提供权重集,以使所述卷积引擎通过指定N×M像素的连续块的位置来处理所述至少一个输入映射,并且通过将所述输出像素值写入到所述图像缓存内的连续位置在所述图像缓存内生成输出映射;并且
非易失性可编程存储器,所述非易失性可编程存储器存储卷积神经网络的网络配置信息,所述配置信息包括所述网络拓扑的定义和所述网络的每层的权重集,
其中所述控制器被布置成根据所述网络拓扑直接从所述非易失性存储器读取所述权重集,而无需访问系统总线。
35.根据权利要求34所述的CNN,其中所述可编程存储器在堆叠在一个或多个另外的芯片上的芯片内实现,所述一个或多个另外的芯片包括所述CNN的其余部分。
36.根据权利要求35所述的CNN,包括在所述可编程存储器芯片和所述一个或多个另外的芯片中的一个芯片之间的多个I/O互连,所述一个或多个另外的芯片包括所述CNN的所述其余部分,所述多个I/O连接包括冗余数量的互连,并且其中所述互连芯片中的每一个芯片包括相应的可编程选择器,所述可编程选择器被布置成选择使得能够在所述互连芯片之间进行通信的功能I/O连接的子集。
37.根据权利要求34所述的CNN,其中所述CNN被布置成处理来自实时采集的图像序列的图像数据帧,并且所述图像缓存包括存储器,其中每个位包括能够保持编程状态一段时间的单晶体管,所述一段时间仅比在处理数据帧期间需要所述CNN的给定数据层存储在存储器中的时间更长。
38.根据权利要求34所述的CNN,其中所述图像缓存包括双缓冲存储器,所述双缓冲存储器包括一对存储体,每个存储体具有相应的输入端口和输出端口,并且其中所述控制器被布置成交替地选择所述存储器中从其读取所述输入像素值的一个存储器和所述存储器中向其写入所述网络的连续卷积层的所述输出像素值的另一个存储器。
39.根据权利要求34所述的CNN,其中所述图像缓存被布置成存储每个存储器地址处的多个映射的像素数据,使得可以在单个存储周期中从所述图像缓存中读取所述多个映射的N×M像素的连续块,以便在所述图像缓存内生成输出映射。
40.一种用于图像处理系统的卷积神经网络(CNN),包括:
包括输入端口和输出端口的图像缓存,所述图像缓存响应于读取从输入映射内的指定位置延伸的N×M像素块的请求,以在所述输出端口处提供所述N×M像素块;
卷积引擎,所述卷积引擎被布置成从所述图像缓存输出端口读取至少一个N×M像素块,以将所述至少一个N×M像素块与对应的权重集组合以得到乘积,并对所述乘积应用激活函数以得到输出像素值;
所述图像缓存被配置为经由所述图像缓存输入端口将输出像素值写入到指定的写入地址;以及
控制器,所述控制器被布置成在处理至少一个输入映射之前向所述卷积引擎提供权重集,以使所述卷积引擎通过指定N×M像素的连续块的位置来处理所述至少一个输入映射,并且通过将所述输出像素值写入所述图像缓存内的连续位置在所述图像缓存内生成输出映射;
其中所述CNN被布置成处理来自实时采集的图像序列的图像数据帧,并且所述图像缓存包括存储器,其中每个位包括能够保持编程状态一段时间的单晶体管,所述一段时间仅比在处理数据帧期间需要所述CNN的给定数据层存储在存储器中的时间更长。
41.根据权利要求40所述的CNN,其中所述图像缓存包括双缓冲存储器,所述双缓冲存储器包括一对存储体,每个存储体具有相应的输入端口和输出端口,并且其中所述控制器被布置成交替地选择所述存储器中从其读取所述输入像素值的一个存储器和所述存储器中向其写入所述网络的连续卷积层的所述输出像素值的另一个存储器。
42.根据权利要求40所述的CNN,其中所述图像缓存被布置成存储每个存储器地址处的多个映射的像素数据,使得可以在单个存储周期中从所述图像缓存中读取所述多个映射的N×M像素的连续块,以便在所述图像缓存内生成输出映射。
CN201680082541.0A 2016-01-29 2016-12-19 卷积神经网络 Active CN108701236B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US15/010,418 2016-01-29
US15/010,418 US9665799B1 (en) 2016-01-29 2016-01-29 Convolutional neural network
US15/234,851 2016-08-11
US15/234,851 US10497089B2 (en) 2016-01-29 2016-08-11 Convolutional neural network
US201615295846A 2016-10-17 2016-10-17
US15/295,846 2016-10-17
PCT/EP2016/081776 WO2017129325A1 (en) 2016-01-29 2016-12-19 A convolutional neural network

Publications (2)

Publication Number Publication Date
CN108701236A true CN108701236A (zh) 2018-10-23
CN108701236B CN108701236B (zh) 2022-01-21

Family

ID=57749915

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680082541.0A Active CN108701236B (zh) 2016-01-29 2016-12-19 卷积神经网络

Country Status (3)

Country Link
EP (1) EP3408798B1 (zh)
CN (1) CN108701236B (zh)
WO (1) WO2017129325A1 (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109726798A (zh) * 2018-12-27 2019-05-07 北京灵汐科技有限公司 一种数据处理方法及装置
CN110826694A (zh) * 2019-10-30 2020-02-21 瀚博半导体(上海)有限公司 一种基于卷积神经网络的图像处理方法及装置
CN111192319A (zh) * 2018-11-14 2020-05-22 百度(美国)有限责任公司 用于监控人类面部到智能设备的距离的系统和方法
CN111199269A (zh) * 2018-11-16 2020-05-26 三星电子株式会社 图像处理装置及其操作方法
CN111382861A (zh) * 2018-12-31 2020-07-07 爱思开海力士有限公司 处理系统
CN111738417A (zh) * 2020-06-19 2020-10-02 上海兆芯集成电路有限公司 神经网络计算装置及其快取管理方法
CN111767994A (zh) * 2019-04-01 2020-10-13 中国科学院半导体研究所 一种神经元计算模块
WO2020216227A1 (zh) * 2019-04-24 2020-10-29 华为技术有限公司 图像分类方法、数据处理方法和装置
CN111984189A (zh) * 2020-07-22 2020-11-24 深圳云天励飞技术有限公司 神经网络计算装置和数据读取、数据存储方法及相关设备
CN112019803A (zh) * 2020-05-27 2020-12-01 今瞳半导体技术(上海)有限公司 图像信号处理器、图像处理装置及神经网络图像处理系统
WO2021027238A1 (zh) * 2019-08-12 2021-02-18 北京大学 基于flash存算阵列的图像压缩系统和方法
US11087433B2 (en) 2016-01-29 2021-08-10 Fotonation Limited Convolutional neural network
CN113424201A (zh) * 2018-12-21 2021-09-21 伟摩有限责任公司 神经网络处理器
WO2021190639A1 (en) * 2020-03-26 2021-09-30 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for video recognition and related products
CN113727014A (zh) * 2020-05-25 2021-11-30 西克股份公司 用于处理图像数据的相机和方法
WO2023071673A1 (zh) * 2021-10-29 2023-05-04 浪潮电子信息产业股份有限公司 卷积特征缓存方法、调用方法、装置、设备、介质及产品

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10546231B2 (en) 2017-01-23 2020-01-28 Fotonation Limited Method for synthesizing a neural network
US10915817B2 (en) 2017-01-23 2021-02-09 Fotonation Limited Method of training a neural network
US10275648B2 (en) 2017-02-08 2019-04-30 Fotonation Limited Image processing method and system for iris recognition
CA3051990C (en) 2017-02-23 2021-03-23 Cerebras Systems Inc. Accelerated deep learning
CA3060356C (en) 2017-04-17 2021-03-23 Cerebras Systems Inc. Task activating for accelerated deep learning
US11488004B2 (en) 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
WO2018193354A1 (en) 2017-04-17 2018-10-25 Cerebras Systems Inc. Wavelet representation for accelerated deep learning
US11164071B2 (en) * 2017-04-18 2021-11-02 Samsung Electronics Co., Ltd. Method and apparatus for reducing computational complexity of convolutional neural networks
EP3580691B1 (en) 2017-08-31 2020-07-01 FotoNation Limited A peripheral processing device
US10839259B2 (en) 2017-10-27 2020-11-17 Google Llc Attention-based image generation neural networks
KR102561261B1 (ko) * 2017-11-14 2023-07-28 삼성전자주식회사 커널을 이용한 컨볼루션 연산 처리 방법 및 장치
WO2019136764A1 (zh) * 2018-01-15 2019-07-18 深圳鲲云信息科技有限公司 卷积器及其所应用的人工智能处理装置
KR102161690B1 (ko) * 2018-02-05 2020-10-05 삼성전자주식회사 전자 장치 및 그 제어 방법
US10516415B2 (en) * 2018-02-09 2019-12-24 Kneron, Inc. Method of compressing convolution parameters, convolution operation chip and system
EP3528181B1 (en) * 2018-02-14 2024-04-17 Samsung Electronics Co., Ltd. Processing method of neural network and apparatus using the processing method
US10768856B1 (en) * 2018-03-12 2020-09-08 Amazon Technologies, Inc. Memory access for multiple circuit components
US10558430B2 (en) 2018-04-17 2020-02-11 Fotonation Limited Neural network engine
EP3557425B1 (en) * 2018-04-19 2024-05-15 Aimotive Kft. Accelerator and system for accelerating operations
US10684681B2 (en) 2018-06-11 2020-06-16 Fotonation Limited Neural network image processing apparatus
CN112513885B (zh) 2018-06-22 2024-02-27 三星电子株式会社 神经处理器
US11429850B2 (en) 2018-07-19 2022-08-30 Xilinx, Inc. Performing consecutive mac operations on a set of data using different kernels in a MAC circuit
WO2020021395A1 (en) * 2018-07-25 2020-01-30 Cerebras Systems Inc. Numerical representation for neural networks
US11676371B2 (en) 2018-08-17 2023-06-13 Fotonation Limited Apparatus for processing a neural network
WO2020044152A1 (en) 2018-08-28 2020-03-05 Cerebras Systems Inc. Scaled compute fabric for accelerated deep learning
US11321087B2 (en) 2018-08-29 2022-05-03 Cerebras Systems Inc. ISA enhancements for accelerated deep learning
WO2020044238A1 (en) 2018-08-29 2020-03-05 Cerebras Systems Inc. Processor element redundancy for accelerated deep learning
CN112219210B (zh) * 2018-09-30 2024-03-29 华为技术有限公司 信号处理装置和信号处理方法
FR3089649A1 (fr) * 2018-12-06 2020-06-12 Stmicroelectronics (Rousset) Sas Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones
US20200184321A1 (en) 2018-12-11 2020-06-11 Fotonation Limited Multi-processor neural network processing apparatus
US11671111B2 (en) 2019-04-17 2023-06-06 Samsung Electronics Co., Ltd. Hardware channel-parallel data compression/decompression
US11211944B2 (en) 2019-04-17 2021-12-28 Samsung Electronics Co., Ltd. Mixed-precision compression with random access
US11036642B2 (en) * 2019-04-26 2021-06-15 Intel Corporation Architectural enhancements for computing systems having artificial intelligence logic disposed locally to memory
US11302009B2 (en) 2019-08-19 2022-04-12 Fotonation Limited Method of image processing using a neural network
FR3115746A1 (fr) * 2020-10-30 2022-05-06 Valeo Vision Procédé de fabrication d'un dispositif d'éclairage automobile et dispositif d'éclairage automobile
FR3115747B1 (fr) * 2020-10-30 2023-10-06 Valeo Vision Procédé de gestion des données d'image et dispositif d'éclairage automobile
KR102464508B1 (ko) * 2020-12-31 2022-11-09 주식회사 메이아이 인공 신경망 모델을 경량화하기 위한 방법, 시스템 및 비일시성의 컴퓨터 판독 가능한 기록 매체
WO2024040421A1 (en) * 2022-08-23 2024-02-29 Intel Corporation Fractional-bit quantization and deployment of convolutional neural network models
CN115719088B (zh) * 2022-11-17 2023-06-27 晶铁半导体技术(广东)有限公司 一种支持存内cnn的中间缓存调度电路装置

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157751A (en) * 1997-12-30 2000-12-05 Cognex Corporation Method and apparatus for interleaving a parallel image processing memory
CN1346460A (zh) * 1999-12-10 2002-04-24 皇家菲利浦电子有限公司 并行数据处理及重排
US7663502B2 (en) * 1992-05-05 2010-02-16 Intelligent Technologies International, Inc. Asset system control arrangement and method
US20100138587A1 (en) * 2004-11-23 2010-06-03 Efficient Memory Technology Shunted interleave for accessing plural memory banks, particularly those having partially accessed cells containing data for cache lines
CN102007499A (zh) * 2008-01-29 2011-04-06 泰塞拉技术爱尔兰公司 检测数字图像中的脸部表情
US20120092356A1 (en) * 2010-10-15 2012-04-19 Via Technologies, Inc. Systems and Methods for Performing Shared Memory Accesses
CN103824054A (zh) * 2014-02-17 2014-05-28 北京旷视科技有限公司 一种基于级联深度神经网络的人脸属性识别方法
CN103971352A (zh) * 2014-04-18 2014-08-06 华南理工大学 一种基于广角镜头的快速图像拼接方法
CN104077782A (zh) * 2014-07-11 2014-10-01 中国科学院自动化研究所 一种星载遥感图像匹配方法
CN104657776A (zh) * 2013-11-22 2015-05-27 华为技术有限公司 神经网络系统、基于神经网络系统的图像解析方法和装置
WO2015090885A1 (fr) * 2013-12-18 2015-06-25 Commissariat A L'energie Atomique Et Aux Energies Alternatives Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal.
CN204929109U (zh) * 2015-04-28 2015-12-30 艾韬 一种实时图像处理电路

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7761772B2 (en) 2006-10-18 2010-07-20 Trellisware Technologies, Inc. Using no-refresh DRAM in error correcting code encoder and decoder implementations
WO2009031052A2 (en) 2007-03-29 2009-03-12 Innovative Silicon S.A. Zero-capacitor (floating body) random access memory circuits with polycide word lines and manufacturing methods therefor
US8014195B2 (en) 2008-02-06 2011-09-06 Micron Technology, Inc. Single transistor memory cell
US9280810B2 (en) 2012-07-03 2016-03-08 Fotonation Limited Method and system for correcting a distorted input image
US8928730B2 (en) 2012-07-03 2015-01-06 DigitalOptics Corporation Europe Limited Method and system for correcting a distorted input image

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7663502B2 (en) * 1992-05-05 2010-02-16 Intelligent Technologies International, Inc. Asset system control arrangement and method
US6157751A (en) * 1997-12-30 2000-12-05 Cognex Corporation Method and apparatus for interleaving a parallel image processing memory
CN1346460A (zh) * 1999-12-10 2002-04-24 皇家菲利浦电子有限公司 并行数据处理及重排
US20100138587A1 (en) * 2004-11-23 2010-06-03 Efficient Memory Technology Shunted interleave for accessing plural memory banks, particularly those having partially accessed cells containing data for cache lines
CN102007499A (zh) * 2008-01-29 2011-04-06 泰塞拉技术爱尔兰公司 检测数字图像中的脸部表情
US20120092356A1 (en) * 2010-10-15 2012-04-19 Via Technologies, Inc. Systems and Methods for Performing Shared Memory Accesses
CN104657776A (zh) * 2013-11-22 2015-05-27 华为技术有限公司 神经网络系统、基于神经网络系统的图像解析方法和装置
WO2015090885A1 (fr) * 2013-12-18 2015-06-25 Commissariat A L'energie Atomique Et Aux Energies Alternatives Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal.
CN103824054A (zh) * 2014-02-17 2014-05-28 北京旷视科技有限公司 一种基于级联深度神经网络的人脸属性识别方法
CN103971352A (zh) * 2014-04-18 2014-08-06 华南理工大学 一种基于广角镜头的快速图像拼接方法
CN104077782A (zh) * 2014-07-11 2014-10-01 中国科学院自动化研究所 一种星载遥感图像匹配方法
CN204929109U (zh) * 2015-04-28 2015-12-30 艾韬 一种实时图像处理电路

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ANTONY W SAVICH ET AL: "The Impact of Arithmetic Representation on Implementing MLP-BP on FPGAs: A Study", 《IEEE TRANS NEURAL NETW》 *
DIAS F M ET AL: "Engineering Applications of Artificial Intelligence", 《ENGINEERING APPLICATIONS OF ARTIFICIAL INTELLIGENCE》 *
MINGU KANG ET AL: "An energy-efficient memory-based high-throughput VLSI architecture for convolutional networks", 《2015 IEEE INTERNATIONAL CONFERENCE ON ACOUSTICS, SPEECH AND SIGNAL PROCESSING (ICASSP)》 *
白亚龙: "基于深度神经网络的图像识别系统的研究与改进", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
许可: "卷积神经网络在图像识别上的应用的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11087433B2 (en) 2016-01-29 2021-08-10 Fotonation Limited Convolutional neural network
CN111192319B (zh) * 2018-11-14 2024-03-29 百度(美国)有限责任公司 用于监控人类面部到智能设备的距离的系统和方法
CN111192319A (zh) * 2018-11-14 2020-05-22 百度(美国)有限责任公司 用于监控人类面部到智能设备的距离的系统和方法
CN111199269A (zh) * 2018-11-16 2020-05-26 三星电子株式会社 图像处理装置及其操作方法
CN113424201A (zh) * 2018-12-21 2021-09-21 伟摩有限责任公司 神经网络处理器
CN109726798B (zh) * 2018-12-27 2021-04-13 北京灵汐科技有限公司 一种数据处理方法及装置
CN109726798A (zh) * 2018-12-27 2019-05-07 北京灵汐科技有限公司 一种数据处理方法及装置
CN111382861B (zh) * 2018-12-31 2023-11-10 爱思开海力士有限公司 处理系统
CN111382861A (zh) * 2018-12-31 2020-07-07 爱思开海力士有限公司 处理系统
CN111767994A (zh) * 2019-04-01 2020-10-13 中国科学院半导体研究所 一种神经元计算模块
CN111767994B (zh) * 2019-04-01 2024-06-11 中国科学院半导体研究所 一种神经元计算装置
WO2020216227A1 (zh) * 2019-04-24 2020-10-29 华为技术有限公司 图像分类方法、数据处理方法和装置
WO2021027238A1 (zh) * 2019-08-12 2021-02-18 北京大学 基于flash存算阵列的图像压缩系统和方法
CN110826694A (zh) * 2019-10-30 2020-02-21 瀚博半导体(上海)有限公司 一种基于卷积神经网络的图像处理方法及装置
WO2021190639A1 (en) * 2020-03-26 2021-09-30 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for video recognition and related products
CN113727014A (zh) * 2020-05-25 2021-11-30 西克股份公司 用于处理图像数据的相机和方法
CN112019803A (zh) * 2020-05-27 2020-12-01 今瞳半导体技术(上海)有限公司 图像信号处理器、图像处理装置及神经网络图像处理系统
CN111738417B (zh) * 2020-06-19 2024-03-08 格兰菲智能科技有限公司 神经网络计算装置及其快取管理方法
CN111738417A (zh) * 2020-06-19 2020-10-02 上海兆芯集成电路有限公司 神经网络计算装置及其快取管理方法
CN111984189B (zh) * 2020-07-22 2022-05-17 深圳云天励飞技术股份有限公司 神经网络计算装置和数据读取、数据存储方法及相关设备
CN111984189A (zh) * 2020-07-22 2020-11-24 深圳云天励飞技术有限公司 神经网络计算装置和数据读取、数据存储方法及相关设备
WO2023071673A1 (zh) * 2021-10-29 2023-05-04 浪潮电子信息产业股份有限公司 卷积特征缓存方法、调用方法、装置、设备、介质及产品

Also Published As

Publication number Publication date
CN108701236B (zh) 2022-01-21
WO2017129325A1 (en) 2017-08-03
EP3408798B1 (en) 2020-07-15
EP3408798A1 (en) 2018-12-05

Similar Documents

Publication Publication Date Title
CN108701236A (zh) 卷积神经网络
US10497089B2 (en) Convolutional neural network
US9665799B1 (en) Convolutional neural network
US20180189643A1 (en) Convolution circuit, application processor including the same, and operating method thereof
US7333107B2 (en) Volume rendering apparatus and process
KR101270925B1 (ko) 신호 처리 장치
US6266733B1 (en) Two-level mini-block storage system for volume data sets
US4622632A (en) Data processing system having a pyramidal array of processors
KR20180034557A (ko) 2차원 어레이 프로세서의 성능 향상
EP0613098B1 (en) Image processing apparatus and method of controlling the same
CN106203327A (zh) 基于卷积神经网络的肺部肿瘤识别系统及方法
JPH08320946A (ja) テクスチャーパターンメモリ回路
US11836102B1 (en) Low latency and high bandwidth artificial intelligence processor
US7979622B2 (en) Memory access method
US20220207109A1 (en) Convolution method, electronic device, and computer-readable storage medium
US20220113944A1 (en) Arithmetic processing device
US11222396B2 (en) Texture memory storage
US10019349B2 (en) Cache memory and method of managing the same
US9864722B2 (en) System and method for communication between a data-acquisition circuit and a data-processing circuit
US20060290983A1 (en) Data access apparatus and method
JPS63201851A (ja) バッファ記憶アクセス方法
DE102007036273A1 (de) Integrierte Speichervorrichtung und Verfahren zum Betreiben einer Speichervorrichtung
CN1105358C (zh) 具有运算功能的半导体存储器及使用该存储器的处理器
KR20000028579A (ko) 화상합성시스템
EP0295186B1 (en) Boundary-free semiconductor memory device having a plurality of slide access memories

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