CN108717571A - 一种用于人工智能的加速方法和装置 - Google Patents
一种用于人工智能的加速方法和装置 Download PDFInfo
- Publication number
- CN108717571A CN108717571A CN201810553342.4A CN201810553342A CN108717571A CN 108717571 A CN108717571 A CN 108717571A CN 201810553342 A CN201810553342 A CN 201810553342A CN 108717571 A CN108717571 A CN 108717571A
- Authority
- CN
- China
- Prior art keywords
- convolution
- image data
- data
- unit
- convolution unit
- 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/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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
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)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种加速方法,包括:确定卷积计算的模板尺寸、图像尺寸和模板个数M;基于图像尺寸、模板尺寸、模板个数和/或加速装置的计算能力确定加速链中卷积单元的个数N和数据循环的最短长度;将模板系数加载到加速链中的卷积单元;在FIFO缓存中加载多行图像数据;启动数据流,图像数据从FIFO缓存进入第一卷积单元的图像数据输入端口,每次向第一卷积单元的图像数据输入端口提供一列数据,后一列图像数据将前一列图像数据向前推动一位,边流动边计算;将每次计算的结果存储在结果存储器的指定存储位置。
Description
技术领域
本发明涉及计算机领域,具体而言,本发明涉及一种用于人工智能的加速方法和装置。
背景技术
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,与传统的BP神经网络相比,具有识别效率高、旋转缩放不变性好等优点,已在数字图像处理及人脸识别等领域得到了广泛的应用。
传统卷积神经网络模型的应用原理为:首先,根据待输入图像的属性设计卷积神经网络模板架构,所设计的卷积神经网络模板架构为多层结构,包括1 个输入层,在输入层之后,按各种顺序排布有若干个卷积层和若干个降采样层,最后为输出层。其中,输入层用于接收原始图像;每个卷积层包括多个相同尺寸的特征图,并且,每个特征图的像素,对应于前一层指定的若干特征图相应窗口位置的像素集合;每个降采样层包括多个相同尺寸的特征图,并且,降采样层的每张特征图,对应于前一层卷积层的一张特征图,降采样层的特征图像素对应于前一层相应特征图的采样区域。某一层节点与前一层节点和后一层节点之间通过边相互连接。
在搭建得到上述具有特定网络架构的卷积神经网络模板后,当需要识别某一图片时,需要对上述的卷积神经网络模板进行训练,训练过程为:初始化卷积神经网络模板的参数为随机值,包括:边的权重值以及卷积核的值等;然后,将训练样本输入卷积神经网络模板,对卷积神经网络模板反复“刺激”,不断调整边的权重值以及卷积核的值等,直到训练得到可识别该图片的卷积神经网络模板。在后续应用中,只需要将待分析图片或其他样本输入到训练好的卷积神经网络模板中,即可达到分类和智能识别的目的。
为了从复杂场景中分开并识别出每个物体,需要使用大量的模板对图像进行遍历卷积计算,其计算量大,计算时间长,通常这类计算通过专用加速单元完成。
在现有技术中,人工智能AI计算***包括主处理器和加速器,AI加速器通常包括多达几万个乘法器,采用二维矩阵脉动加速原理。加速过程中计算数据的发送和搬运都需要主处理器来执行,因此需要花费大量的主处理器时间和等待时间。AI加速器空转率比较高,即浪费率比较高,能效低;主处理器数据组织比较复杂,芯片设计比较困难,主要体现在全局时钟方面。
因此,本领域需要一种新型的用于人工智能的加速方法和***,至少部分地解决现有技术中存在的问题。
发明内容
针对现有技术中存在的问题,本发明提出了一种用于人工智能的加速装置,包括:
模板存储器,所述模板存储器存储待计算的模板系数;
输入数据存储器,所述输入数据存储器包括多个先进先出FIFO缓存,每个先进先出FIFO缓存存储一行图像数据;
加速链,所述加速链包括第一卷积单元至第N卷积单元,N为大于等于1 的整数,所述第一卷积单元至第N卷积单元中每一个均包括模板数据输入端口、图像数据输入端口、第一图像数据输出端口以及卷积和输出端口;每一个模板数据输入端口与所述模板存储器连接;第一卷积单元的图像数据输入端口连接到输入数据存储器;第一卷积单元的第一图像数据输出端口连接到第二卷积单元的图像数据输入端口;第二卷积单元的第一图像数据输出端口连接到第三卷积单元的图像数据输入端口;…第N-1卷积单元的第一图像数据输出端口连接到第N卷积单元的图像数据输入端口;第N卷积单元的第一图像数据输出端口连接到第一卷积单元的图像数据输入端口;第一卷积单元至第N卷积单元中每一个的卷积和输出端口分别与结果存储器相连;以及
结果存储器,第一卷积单元至第N卷积单元中每一个的卷积和输出端口分别与结果存储器相连。
在本发明的一个实施例中,所述第一卷积单元至第N卷积单元中每一个还包括第二图像数据输出端口,所述第一卷积单元至第N卷积单元中每一个的第二图像数据输出端口连接到输入数据存储器。
在本发明的一个实施例中,加速装置还包括:
累加器,所述累加器对卷积计算结果进行循环累加;
池化单元,所述池化单元对所述累加器的输出结果进行池化处理;
非线性单元,所述非线性单元对计算结果进行非线性化处理;和/或
存储单元,所述存储单元存储非线性化处理后的数据。
在本发明的一个实施例中,所述存储单元与输入数据存储器相连,将存储单元存储的数据作为下一级卷积计算的输入数据。
本发明的另一个实施例提供一种用于权上述加速装置的加速方法,包括:
确定卷积计算的模板尺寸、图像尺寸和模板个数M;
基于图像尺寸、模板尺寸、模板个数和/或加速装置的计算能力确定加速链中卷积单元的个数N和数据循环的最短长度;
将模板系数加载到加速链中的卷积单元;
在FIFO缓存中加载多行图像数据;
启动数据流,图像数据从FIFO缓存进入第一卷积单元的图像数据输入端口,每次向第一卷积单元的图像数据输入端口提供一列数据,后一列图像数据将前一列图像数据向前推动一位,边流动边计算;
将每次计算的结果存储在结果存储器的指定存储位置。
在本发明的另一个实施例中,将模板系数加载到加速链中的卷积单元还包括:
判断模板个数M是否小于或等于加速链中卷积单元的个数N;
如果模板个数M小于或等于加速链中卷积单元的个数N,则将M个模板系数加载到加速链中的前M个卷积单元。
在本发明的另一个实施例中,该加速方法还包括:
将第N卷积单元输出的图像数据输入FIFO缓存,当第一列图像数据再次出现在第一卷积单元左端时,一次数据循环结束;
判断是否存在未计算的一行或多行图像数据,
如果存在未计算的一行或多行图像数据,则返回在FIFO缓存中加载多行图像数据的步骤,利用新的一行图像数据更新FIFO缓存,图像数据再进入第一卷积单元,再次进行数据循环。
在本发明的另一个实施例中,忽略第M+1卷积单元至第N卷积单元,
将第M卷积单元输出的图像数据输入FIFO缓存,当第一列图像数据再次出现在第一卷积单元左端时,一次数据循环结束;
判断是否存在未计算的一行或多行图像数据,
如果存在未计算的一行或多行图像数据,则返回在FIFO缓存中加载多行图像数据的步骤,利用新的一行图像数据更新FIFO缓存,图像数据再进入第一卷积单元,再次进行数据循环。
在本发明的另一个实施例中,将模板系数加载到加速链中的卷积单元还包括:
判断模板个数M是否小于或等于加速链中卷积单元的个数N;
如果模板个数M大于加速链中卷积单元的个数N,则先将前N个模板系数加载到加速链中的N个卷积单元。
在本发明的另一个实施例中,该加速方法还包括:
将第N卷积单元输出的图像数据输入FIFO缓存,
当第一列图像数据再次出现在第一卷积单元左端时,判断是否存在未计算的模板;
如果存在未计算的模板,则返回将模板系数加载到加速链中的卷积单元的步骤,将未计算的模板系数加载到加速链中的一个或多个卷积单元;
如果不存在未计算的模板,则判断是否存在未计算的一行或多行图像数据,
如果存在未计算的一行或多行图像数据,则返回在FIFO缓存中加载多行图像数据的步骤,利用新的一行图像数据更新FIFO缓存,图像数据再进入第一卷积单元,再次进行数据循环。
在本发明的另一个实施例中,该加速方法还包括对卷积单元的计算结果进行后处理,所述后处理包括累加、池化、非线性中的一种或多种操作。
在本发明的另一个实施例中,该加速方法还包括将处理后的结果作为下一级加速计算的输入图像数据。
在本发明的另一个实施例中,在数据循环的同时,将新的一行图像数据加载到FIFO缓存。
本发明公开的人工智能AI计算的加速装置和加速计算方法在运算的同时加载数据,减小带宽需求,同时不需要为每个卷积计算单元单独进行数据准备。加速器的输入数据存储器采用FIFO缓存,不需要外部读写地址线,这样使用起来非常简单,数据组织简约,加速器架构简单,芯片设计简单,功耗低,效率高。
附图说明
为了进一步阐明本发明的各实施例的以上和其它优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。在附图中,为了清楚明了,相同或相应的部件将用相同或类似的标记表示。
图1示出待识别图像和模板的示意图。
图2示出根据本发明的一个实施例的人工智能AI的加速装置200的示意图。
图3示出根据本发明的一个实施例的对图2输出的计算结果进行后续处理的后处理装置300的示意框图。
图4示出根据本发明的一个实施例的人工智能AI的加速过程的流程图。
具体实施方式
在以下的描述中,参考各实施例对本发明进行描述。然而,本领域的技术人员将认识到可在没有一个或多个特定细节的情况下或者与其它替换和/或附加方法、材料或组件一起实施各实施例。在其它情形中,未示出或未详细描述公知的结构、材料或操作以免使本发明的各实施例的诸方面晦涩。类似地,为了解释的目的,阐述了特定数量、材料和配置,以便提供对本发明的实施例的全面理解。然而,本发明可在没有特定细节的情况下实施。此外,应理解附图中示出的各实施例是说明性表示且不一定按比例绘制。
在本说明书中,对“一个实施例”或“该实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书各处中出现的短语“在一个实施例中”并不一定全部指代同一实施例。
在以下的描述中,参考各实施例对本发明进行描述。然而,本领域的技术人员将认识到可在没有一个或多个特定细节的情况下或者与其它替换和/或附加方法、材料或组件一起实施各实施例。在其它情形中,未示出或未详细描述公知的结构、材料或操作以免使本发明的各实施例的诸方面晦涩。类似地,为了解释的目的,阐述了特定数量、材料和配置,以便提供对本发明的实施例的全面理解。然而,本发明可在没有特定细节的情况下实施。此外,应理解附图中示出的各实施例是说明性表示且不一定按比例绘制。
在本说明书中,对“一个实施例”或“该实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书各处中出现的短语“在一个实施例中”并不一定全部指代同一实施例。
首先,介绍使用模板处理图像的过程中用到的相关概念:
模板指的是矩阵方块,其数学含义是一种卷积计算。
卷积计算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别与卷积核(即,权矩阵)的每个元素对应相乘,所有乘积之和作为区域中心像素的新值。
卷积核:卷积时使用到的权用一个矩阵表示,该矩阵与使用的图像区域大小相同,其行、列都是奇数,是一个权矩阵。
卷积计算示例:
3*3的像素区域R与卷积核G的卷积计算:
假设R为3*3的像素区域,卷积核为G:
卷积和=R1G1+R2G2+R3G3+R4G4+R5G5+R6G6+R7G7+R8G8+ R9G9
本发明提出使用模板计算图像的类别得分,基于类别得分检测是否为识别的物体。下面结合图1和图2介绍计算图像的类别得分的具体过程。
图1示出待识别图像和模板的示意图。如图1所示,矩形方框110为图像,由若干像素点组成,该图像具有特定宽度和高度。阴影方框120为模板。将模板120与所覆盖区域的图像进行卷积计算,即模板每点的值与所覆盖区域图像相对应的值相乘,得到的值再求和,最终得到的和作为该图像区域的类别得分。类别得分表示该区域与模板的响应强度,响应强度越大得分越高,反之得分越小。
在对图像进行识别的过程中,需要使模板遍历整张图像。使模板从该图像的起始位置开始进行卷积计算遍历。例如,设图像的起始位置的坐标为(0,0),以起始位置(0,0)为起点,从起点开始沿x轴方向和y轴方向取与模板大小等同的图像区域。将该区域与模板进行卷积,即,将该区域的像素值分别与两个模板的对应值相乘再求和,得到该图像区域针对该模板的类别得分。接下来,使起点坐标沿x轴方向加1,以位置(1,0)为起点沿x轴方向和y轴方向取与模板大小等同的图像区域。将所取得的图像区域与模板进行卷积,得到该图像区域针对该模板的类别得分。使起点坐标沿x轴方向递增,计算卷积,直到判断所取的图像区域超出图像的范围,则将起点坐标的x值设置为起始位置坐标值,y值增加1。从新的起点位置开始沿x轴方向和y轴方向取与模板大小等同的图像区域,将所取得的图像区域与模板进行卷积,接下来,沿x轴方向逐个像素递增进行卷积计算,直到判断所取的图像区域超出图像的范围,则将起点坐标的x值设置为起始位置坐标值,y值增加1。以此类推,直到判断所取的图像区域沿y轴方向超出图像的范围,则整张图像卷积完成。
在卷积计算过程中,输入的图像数据不能直接应用于卷积神经网络,需要按照卷积尺寸抽取对应的二维数据,并输送到卷积计算单元。这需要主存储器为卷积计算单元配置数据和时钟,当图像数据和卷积单元数量巨大时,需要花费大量的主处理器时间和等待时间,并且主处理器数据组织比较复杂,芯片设计比较困难。这对这一问题,本发明提供一种用于人工智能AI的加速方法和装置,运算的同时加载数据,减小带宽需求,同时不需要主处理器为每个卷积计算单元进行数据准备。
图2示出根据本发明的一个实施例的人工智能AI的加速装置200的示意图。如图2所示,加速装置200包括模板存储器210、输入数据存储器220、加速链230以及结果存储器240。
本发明中的模板存储器210可以是随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、诸如闪存之类的非易失性存储器或任何其它类型的存储器。
输入数据存储器220可以包括多个先进先出FIFO的数据缓存器221-1至221-N,用于顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成。在下文中,为了描述方便,FIFO的数据缓存器221-1至221-N 统称为FIFO缓存221。每个FIFO缓存221存储一行图像数据,并且在向加速链230顺序提供图像数据列的同时,从外部存储器读取新的图像数据行,因此输入数据存储器220中FIFO缓存的个数应大于卷积单元一次计算所需的图像数据的行数,多出的FIFO缓存用于存储新的图像数据行。
加速链230可以包括第一卷积单元231-1至第N卷积单元231-N。第一卷积单元231-1至第N卷积单元231-N的功能基本相同。换言之,第一卷积单元 231-1至第N卷积单元231-N中的每一个可基于模板数据和图像数据进行卷积计算,得到卷积和。第一卷积单元231-1至第N卷积单元231-N所使用的模板尺寸相同。在本发明的一个实施例中,第一卷积单元231-1至第N卷积单元 231-N可以是3×3卷积单元、5×5卷积单元、8×8卷积单元等等。
第一卷积单元231-1至第N卷积单元231-N中每一个均包括模板数据输入端口、图像数据输入端口、第一图像数据输出端口、第二图像数据输出端口以及卷积和输出端口。每一个模板数据输入端口与模板存储器210连接,用于接收该卷积单元所使用的模板数据。
第一卷积单元231-1的图像数据输入端口从输入数据存储器220接收图像数据。第一卷积单元231-1的图像数据输入端口与多个FIFO缓存221连接,每次从多个FIFO缓存221接收一列数据。第一卷积单元231-1的第一图像数据输出端口连接到第二卷积单元231-2的图像数据输入端口;第二卷积单元 231-2的第一图像数据输出端口连接到第三卷积单元231-3的图像数据输入端口;…第N-1卷积单元231-N-1的第一图像数据输出端口连接到第N卷积单元 231-N的图像数据输入端口;第N卷积单元231-N的第一图像数据输出端口连接到输入数据存储器220或第一卷积单元231-1的图像数据输入端口。当第N 卷积单元231-N的第一图像数据输出端口连接到第一卷积单元231-1的图像数据输入端口时,第一卷积单元231-1至第N卷积单元231-N形成数据内循环。在下文中,为了便于描述,使用名词“卷积单元的左端和右端”,卷积单元的左端指的是最靠近第一图像数据输入端口的一列计算单元,卷积单元的右端指的是最靠近图像数据输出端口的一列计算单元。
第一卷积单元231-1至第N卷积单元231-N中每一个的第二图像数据输出端口通过数据总线232连接到输入数据存储器220。输入数据存储器220与第一卷积单元231-1至第N卷积单元231-N中的一个或多个形成数据外循环。
第一卷积单元231-1至第N卷积单元231-N中每一个的卷积和输出端口与结果存储器240相连。本发明中的结果存储器240可以是随机存取存储器 (RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、诸如闪存之类的非易失性存储器或任何其它类型的存储器。
下面以一个具体的示例介绍加速装置200的运行过程。在本发明的一个实施例中,第一卷积单元231-1至第N卷积单元231-N是5×5卷积单元,需要计算的模板总数M小于等于卷积单元数N,将M个模板加载到加速链的前M 个卷积单元,输入数据存储器220包括至少六个FIFO缓存,第一卷积单元231-1 的图像数据输入端口与输入数据存储器220中的五个FIFO缓存221相连。首先,向输入数据存储器220的第一至第五FIFO缓存221加载第一至第五行图像数据,每一个FIFO缓存存储一行图像数据。第一至第五FIFO缓存221首先将五行图像数据阵列的第一列发送到第一卷积单元231-1,然后,第一至第五FIFO缓存221每次(每个时钟周期)向提供一列图像数据,后一列图像数据将前一列图像数据向前推动一位,数据边流动边计算,每次计算的结果存储在结果存储器240的指定存储位置。图像数据从第N卷积单元231-N出来后进入FIFO缓存221
当第一列图像数据再次出现在第一卷积单元231-1左端时,一次数据循环结束。
考虑到外部存储器和内部逻辑是异步工作的,且外部存储器读写速度可能远远低于内部逻辑工作速度,因此首先预存五行图像数据,在第一卷积单元 231-1至第N卷积单元231-N循环计算一圈的同时,将第六行图像数据加载到第六FIFO缓存221,然后,将第六行图像数据更新到第五行图像数据,第五行图像数据更新到第四行图像数据,第四行图像数据更新到第三行图像数据,第三行图像数据更新到第二行图像数据,第二行图像数据更新到第一行图像数据。完成更新后进行下一次数据循环。重复上述更新FIFO缓存、进行数据循环的操作,直到所有数据流过N个卷积单元。
在本发明的一个实施例中,当需要计算的模板总数M大于卷积单元数N 时,图像数据在第一卷积单元231-1至第N卷积单元231-N循环计算一圈后,需要更新卷积单元的模板,然后图像数据在第一卷积单元231-1至第N卷积单元231-N循环计算一圈;依次类推,当M个模板全部计算完毕后,更新输入数据存储器220中的FIFO缓存。
在本发明的一个实施例中,当需要计算的模板数L小于卷积单元数N时,第一卷积单元231-1至第N卷积单元231-N中的前L个卷积单元有效工作,因此,数据循环可以忽略第L+1卷积单元至第N卷积单元,图像数据从第L卷积单元231-L出来后进入FIFO缓存221。
结果存储器240可包括多个存储单元241-1至241-N,每个存储单元与一个卷积单元对应,存储对应卷积单元的计算结果。
图3示出根据本发明的一个实施例的对图2输出的计算结果进行后续处理的后处理装置300的示意框图。
可选地,后处理装置300可包括累加器310和池化单元320。累加器310 对每个存储单元的结果进行循环累加。池化单元320对累加器310的输出结果进行池化。
后处理装置300包括非线性单元330和结果存储器340。当后处理装置300 不包括累加器310和/或池化单元320时,数据可直接进入非线性单元330,进行非线性处理后,存储在结果存储器340中。
结果存储器340的数据可作为输入图像数据输入到输入数据存储器220 进行第二级卷积计算。
例如在一个具体实施例中,第一级卷积计算的输入图像的尺寸为32×32,加速链230中包含7个5×5卷积单元,为加速链230加载第一至第六卷积单元的模板系数。启动数据流,完成数据循环后,更新FIFO缓存的一行数据,在进入第一卷积单元。因为第一级卷积计算的模板数量小于7,所以每个卷积单元只需计算一个模板,对应只有一个模板的计算结果经缓存后经累加器310、进行下采样、非线性处理,进入输入数据存储器220。接下来进行第二级卷积计算,输入图像为14×14×6,模板有16个,因此先前7个模板的系数加载到卷积单元,启动数据流,数据从第七卷积单元出来后再进入第一卷积单元,此时根据数据流依次将7个卷积单元替换加载第8-14号模板系数,数据循环完成后,在将卷积单元更新加载15-16号模板系数,数据循环完成后进入FIFO 缓存。
通过图3所示的后处理装置300,前一级卷积计算的计算结果可以作为下一级卷积计算的输入数据直接进行下一级的计算,无需主处理器重新进行数据组织。从而节省大量的主处理器计算时间和等待时间,功耗低,能效高,并且能够简化加速装置的架构,使得加速器芯片的设计得以简化。
图4示出根据本发明的一个实施例的人工智能AI的加速过程的流程图。
首先,在步骤410,确定卷积计算的模板尺寸、图像尺寸和模板个数M。
在步骤420,基于图像尺寸、模板尺寸、模板个数和/或加速器的计算能力确定加速链中卷积单元的个数N和数据循环的最短长度。
在步骤430,判断模板个数M是否小于或等于加速链中卷积单元的个数N。
如果模板个数M小于或等于加速链中卷积单元的个数N,则在步骤440,将M个模板系数加载到加速链中的前M个卷积单元。
在步骤450,在FIFO缓存中加载/更新多行图像数据。
在步骤460启动数据流,数据从FIFO缓存进入第一卷积单元的图像数据输入端口,边流动边计算。
在本发明的一个实施例中,图像数据从第N卷积单元出来后进入FIFO 缓存。当第一列图像数据再次出现在第一卷积单元左端时,一次数据循环结束,在步骤470判断是否存在未计算的一行或多行图像数据,如果是,则返回步骤 450,利用新的一行图像数据更新FIFO缓存,图像数据再进入第一卷积单元,再次进行数据循环。重复上述更新FIFO缓存、进行数据循环的操作,直到所有数据流过N个卷积单元。
在本发明的另一个实施例中,当需要计算的模板数M小于卷积单元数N 时,第一卷积单元至第N卷积单元中的前M个卷积单元有效工作,因此,数据循环可以忽略第M+1卷积单元至第N卷积单元,图像数据从第M卷积单元出来后进入FIFO缓存。
在更新FIFO缓存时,需要从外部存储器读取一行图像数据,外部存储器和内部逻辑是异步工作的,且外部存储器读写速度可能远远低于内部逻辑工作速度,因此首先预存多行图像数据,在第一卷积单元至第N卷积单元循环计算一圈的同时,将新的一行图像数据加载到FIFO缓存,利用新的一行图像数据将第一行图像数据挤出FIFO缓存。
在步骤480,将每个卷积单元的计算结果存储在指定位置。
如果模板个数M大于加速链中卷积单元的个数N,则在步骤445,先将前 N个模板系数加载到加速链中的N个卷积单元。
在步骤455,在FIFO缓存中加载/更新多行图像数据。
在步骤465启动数据流,数据从FIFO缓存进入第一卷积单元的图像数据输入端口,边流动边计算。
步骤465的卷积计算与步骤460的卷积计算类似,因此不再重复描述。
图像数据从第N卷积单元出来后进入FIFO缓存,在步骤466,判断是否存在未计算的模板,如果存在未计算的模板,则返回步骤445,将未计算的模板系数加载到加速链中的一个或多个卷积单元。如果不存在未计算的模板,在步骤475判断是否存在未计算的一行或多行图像数据,如果是,则返回步骤 445,将前N个模板系数加载到加速链中的N个卷积单元,在步骤455,利用新的一行图像数据更新FIFO缓存,图像数据再进入第一卷积单元,再次进行步骤465、466和475。重复上述更新FIFO缓存、进行数据循环的操作,直到所有数据流过N个卷积单元。
在步骤485,将每个卷积单元的计算结果存储在指定位置。
接下来,可任选地,在一些实施例中,通过累加器每个卷积单元的计算结果进行循环累加、对累加结果进行池化,然后进行非线性处理后,存储在结果存储器中。在本发明的其它实施例中,可以不进行累加/或池化处理,数据可直接进行非线性处理,然后存储在结果存储器340中。
结果存储器的数据可作为输入图像数据输入到输入数据存储器进行下一级卷积计算。
本发明公开的人工智能AI计算的加速装置和加速计算方法在运算的同时加载数据,减小带宽需求,同时不需要为每个卷积计算单元单独进行数据准备。加速器的输入数据存储器采用FIFO缓存,不需要外部读写地址线,顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,这样使用起来非常简单,数据组织简约,加速器架构简单,芯片设计简单,功耗低,能效高。
尽管上文描述了本发明的各实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制。对于相关领域的技术人员显而易见的是,可以对其做出各种组合、变型和改变而不背离本发明的精神和范围。因此,此处所公开的本发明的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。
Claims (13)
1.一种用于人工智能的加速装置,包括:
模板存储器,所述模板存储器存储待计算的模板系数;
输入数据存储器,所述输入数据存储器包括多个先进先出FIFO缓存,每个先进先出FIFO缓存存储一行图像数据;
加速链,所述加速链包括第一卷积单元至第N卷积单元,N为大于等于1的整数,所述第一卷积单元至第N卷积单元中每一个均包括模板数据输入端口、图像数据输入端口、第一图像数据输出端口以及卷积和输出端口;每一个模板数据输入端口与所述模板存储器连接;第一卷积单元的图像数据输入端口连接到输入数据存储器;第一卷积单元的第一图像数据输出端口连接到第二卷积单元的图像数据输入端口;第二卷积单元的第一图像数据输出端口连接到第三卷积单元的图像数据输入端口;…第N-1卷积单元的第一图像数据输出端口连接到第N卷积单元的图像数据输入端口;第N卷积单元的第一图像数据输出端口连接到输入数据存储器;第一卷积单元至第N卷积单元中每一个的卷积和输出端口分别与结果存储器相连;以及
结果存储器,第一卷积单元至第N卷积单元中每一个的卷积和输出端口分别与结果存储器相连。
2.如权利要求1所述的加速装置,其特征在于,所述第一卷积单元至第N卷积单元中每一个还包括第二图像数据输出端口,所述第一卷积单元至第N卷积单元中每一个的第二图像数据输出端口连接到输入数据存储器。
3.如权利要求1所述的加速装置,其特征在于,还包括:
累加器,所述累加器对卷积计算结果进行循环累加;
池化单元,所述池化单元对所述累加器的输出结果进行池化处理;
非线性单元,所述非线性单元对计算结果进行非线性化处理;和/或
存储单元,所述存储单元存储非线性化处理后的数据。
4.如权利要求3所述的加速装置,其特征在于,所述存储单元与输入数据存储器相连,将存储单元存储的数据作为下一级卷积计算的输入数据。
5.一种用于权利要求1至4中任一项所述的加速装置的加速方法,包括:
确定卷积计算的模板尺寸、图像尺寸和模板个数M;
基于图像尺寸、模板尺寸、模板个数和/或加速装置的计算能力确定加速链中卷积单元的个数N和数据循环的最短长度;
将模板系数加载到加速链中的卷积单元;
在FIFO缓存中加载多行图像数据;
启动数据流,图像数据从FIFO缓存进入第一卷积单元的图像数据输入端口,每次向第一卷积单元的图像数据输入端口提供一列数据,后一列图像数据将前一列图像数据向前推动一位,边流动边计算;
将每次计算的结果存储在结果存储器的指定存储位置。
6.如权利要求5所述的加速方法,其特征在于,将模板系数加载到加速链中的卷积单元还包括:
判断模板个数M是否小于或等于加速链中卷积单元的个数N;
如果模板个数M小于或等于加速链中卷积单元的个数N,则将M个模板系数加载到加速链中的前M个卷积单元。
7.如权利要求6所述的加速方法,其特征在于,还包括:
将第N卷积单元输出的图像数据输入FIFO缓存,当第一列图像数据再次出现在第一卷积单元左端时,一次数据循环结束;
判断是否存在未计算的一行或多行图像数据,
如果存在未计算的一行或多行图像数据,则返回在FIFO缓存中加载多行图像数据的步骤,利用新的一行图像数据更新FIFO缓存,图像数据再进入第一卷积单元,再次进行数据循环。
8.如权利要求6所述的加速方法,其特征在于,忽略第M+1卷积单元至第N卷积单元,
将第M卷积单元输出的图像数据输入FIFO缓存,当第一列图像数据再次出现在第一卷积单元左端时,一次数据循环结束;
判断是否存在未计算的一行或多行图像数据,
如果存在未计算的一行或多行图像数据,则返回在FIFO缓存中加载多行图像数据的步骤,利用新的一行图像数据更新FIFO缓存,图像数据再进入第一卷积单元,再次进行数据循环。
9.如权利要求5所述的加速方法,其特征在于,将模板系数加载到加速链中的卷积单元还包括:
判断模板个数M是否小于或等于加速链中卷积单元的个数N;
如果模板个数M大于加速链中卷积单元的个数N,则先将N个模板系数加载到加速链中的N个卷积单元。
10.如权利要求9所述的加速方法,其特征在于,还包括:
将第N卷积单元输出的图像数据输入FIFO缓存,
当第一列图像数据再次出现在第一卷积单元左端时,判断是否存在未计算的模板;
如果存在未计算的模板,则返回将模板系数加载到加速链中的卷积单元的步骤,将未计算的模板系数加载到加速链中的一个或多个卷积单元;
如果不存在未计算的模板,则判断是否存在未计算的一行或多行图像数据,
如果存在未计算的一行或多行图像数据,则返回在FIFO缓存中加载多行图像数据的步骤,利用新的一行图像数据更新FIFO缓存,图像数据再进入第一卷积单元,再次进行数据循环。
11.如权利要求5所述的加速方法,其特征在于,还包括对卷积单元的计算结果进行后处理,所述后处理包括累加、池化、非线性中的一种或多种操作。
12.如权利要求11所述的加速方法,其特征在于,还包括将处理后的结果作为下一级加速计算的输入图像数据。
13.如权利要求5所述的加速方法,其特征在于,在数据循环的同时,将新的一行图像数据加载到FIFO缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810553342.4A CN108717571B (zh) | 2018-06-01 | 2018-06-01 | 一种用于人工智能的加速方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810553342.4A CN108717571B (zh) | 2018-06-01 | 2018-06-01 | 一种用于人工智能的加速方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108717571A true CN108717571A (zh) | 2018-10-30 |
CN108717571B CN108717571B (zh) | 2020-09-15 |
Family
ID=63912657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810553342.4A Active CN108717571B (zh) | 2018-06-01 | 2018-06-01 | 一种用于人工智能的加速方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108717571B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800867A (zh) * | 2018-12-17 | 2019-05-24 | 北京理工大学 | 一种基于fpga片外存储器的数据调用方法 |
CN112001479A (zh) * | 2020-07-18 | 2020-11-27 | 北京达佳互联信息技术有限公司 | 基于深度学习模型的处理方法、***及电子设备 |
CN112133342A (zh) * | 2019-06-25 | 2020-12-25 | 中电海康集团有限公司 | 存储器 |
CN112183732A (zh) * | 2020-10-22 | 2021-01-05 | 中国人民解放军国防科技大学 | 卷积神经网络加速方法、装置和计算机设备 |
WO2021077427A1 (zh) * | 2019-10-25 | 2021-04-29 | 深圳市大疆创新科技有限公司 | 图像处理方法、设备和可移动平台 |
CN112966813A (zh) * | 2021-03-15 | 2021-06-15 | 神思电子技术股份有限公司 | 一种卷积神经网络输入层装置及其工作方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的*** |
CN106779060A (zh) * | 2017-02-09 | 2017-05-31 | 武汉魅瞳科技有限公司 | 一种适于硬件设计实现的深度卷积神经网络的计算方法 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理***和处理方法 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
-
2018
- 2018-06-01 CN CN201810553342.4A patent/CN108717571B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的*** |
CN106779060A (zh) * | 2017-02-09 | 2017-05-31 | 武汉魅瞳科技有限公司 | 一种适于硬件设计实现的深度卷积神经网络的计算方法 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理***和处理方法 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
Non-Patent Citations (1)
Title |
---|
WENYAN LU ET AL.: "FlexFlow: A Flexible Dataflow Accelerator Architecture for Convolutional Neural Networks", 《2017 IEEE INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800867A (zh) * | 2018-12-17 | 2019-05-24 | 北京理工大学 | 一种基于fpga片外存储器的数据调用方法 |
CN112133342A (zh) * | 2019-06-25 | 2020-12-25 | 中电海康集团有限公司 | 存储器 |
CN112133342B (zh) * | 2019-06-25 | 2022-05-06 | 中电海康集团有限公司 | 存储器 |
WO2021077427A1 (zh) * | 2019-10-25 | 2021-04-29 | 深圳市大疆创新科技有限公司 | 图像处理方法、设备和可移动平台 |
CN112001479A (zh) * | 2020-07-18 | 2020-11-27 | 北京达佳互联信息技术有限公司 | 基于深度学习模型的处理方法、***及电子设备 |
CN112001479B (zh) * | 2020-07-18 | 2024-04-16 | 北京达佳互联信息技术有限公司 | 基于深度学习模型的处理方法、***及电子设备 |
CN112183732A (zh) * | 2020-10-22 | 2021-01-05 | 中国人民解放军国防科技大学 | 卷积神经网络加速方法、装置和计算机设备 |
CN112966813A (zh) * | 2021-03-15 | 2021-06-15 | 神思电子技术股份有限公司 | 一种卷积神经网络输入层装置及其工作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108717571B (zh) | 2020-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108717571A (zh) | 一种用于人工智能的加速方法和装置 | |
CN111967468B (zh) | 一种基于fpga的轻量级目标检测神经网络的实现方法 | |
US11775430B1 (en) | Memory access for multiple circuit components | |
CN110050267B (zh) | 用于数据管理的***和方法 | |
CN111488983B (zh) | 一种基于fpga的轻量级cnn模型计算加速器 | |
CN104915322B (zh) | 一种卷积神经网络硬件加速方法 | |
KR102637735B1 (ko) | 근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템온 칩 | |
CN111414994B (zh) | 一种基于FPGA的Yolov3网络计算加速***及其加速方法 | |
WO2019136764A1 (zh) | 卷积器及其所应用的人工智能处理装置 | |
CN106022468A (zh) | 人工神经网络处理器集成电路及该集成电路的设计方法 | |
CN109032781A (zh) | 一种卷积神经网络算法的fpga并行*** | |
CN113051216B (zh) | 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法 | |
CN110738308B (zh) | 一种神经网络加速器 | |
WO2022001805A1 (zh) | 一种神经网络蒸馏方法及装置 | |
CN107066239A (zh) | 一种实现卷积神经网络前向计算的硬件结构 | |
CN110321997B (zh) | 高并行度计算平台、***及计算实现方法 | |
CN107239824A (zh) | 用于实现稀疏卷积神经网络加速器的装置和方法 | |
CN107239733A (zh) | 连续手写字识别方法及*** | |
CN108764182A (zh) | 一种优化的用于人工智能的加速方法和装置 | |
WO2021173201A1 (en) | Vector reductions using shared scratchpad memory | |
US10733498B1 (en) | Parametric mathematical function approximation in integrated circuits | |
CN112906865B (zh) | 神经网络架构搜索方法、装置、电子设备及存储介质 | |
WO2022156475A1 (zh) | 神经网络模型的训练方法、数据处理方法及装置 | |
CN112005251A (zh) | 运算处理装置 | |
CN115423081A (zh) | 一种基于fpga的cnn_lstm算法的神经网络加速器 |
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 |