CN107862650A - 加速计算二维图像cnn卷积的方法 - Google Patents

加速计算二维图像cnn卷积的方法 Download PDF

Info

Publication number
CN107862650A
CN107862650A CN201711223548.2A CN201711223548A CN107862650A CN 107862650 A CN107862650 A CN 107862650A CN 201711223548 A CN201711223548 A CN 201711223548A CN 107862650 A CN107862650 A CN 107862650A
Authority
CN
China
Prior art keywords
data
convolution
fifo
image
computation
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
CN201711223548.2A
Other languages
English (en)
Other versions
CN107862650B (zh
Inventor
李园强
张亚亚
刘洋
徐维涛
蔡刚
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.)
Zhongke Microelectronic Technology (suzhou) Co Ltd
Original Assignee
Zhongke Microelectronic Technology (suzhou) Co 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
Application filed by Zhongke Microelectronic Technology (suzhou) Co Ltd filed Critical Zhongke Microelectronic Technology (suzhou) Co Ltd
Priority to CN201711223548.2A priority Critical patent/CN107862650B/zh
Publication of CN107862650A publication Critical patent/CN107862650A/zh
Application granted granted Critical
Publication of CN107862650B publication Critical patent/CN107862650B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Complex Calculations (AREA)

Abstract

本公开提供了一种加速计算二维图像CNN卷积的方法,包括:数据以流水线方式排布输入FIFO,卷积窗口在FIFO内成为平行四边形,卷积运算在行和列方向上同时重用数据;根据PE计算单元数量及对速度的要求,PE计算单元采用并行加速计算方法或串行加速计算方法,输出特征图像。本公开的方法有助于硬件单元的设计,对片上存储容量要求低;所有数据以流水线的方式进行处理,不仅最大化地重用了数据,而且并行地执行了若干卷积运算,大幅提高了吞吐率和执行效率。

Description

加速计算二维图像CNN卷积的方法
技术领域
本发明涉及在硬件上高效加速计算二维图像CNN卷积的方法,有效减少访问外部存储、提高吞吐率和执行效率。
背景技术
深度学习在诸多场景有着广泛应用,如无人机、无人驾驶等。在终端应用领域,FPGA(Field Programmable Gate Array-FPGA)作为硬件平台加速深度学习算法,具有成本低、功耗小、速度快、灵活可配置等优点,有着非常好的应用前景。
卷积神经网络CNN(convolutional neural network)是深度学习模型的基础,最新代表性的AlexNet、VGG、GoogleNet、ResNets、DenseNet、SqueezeNet等算法均采用了CNN的思想。然而,这些具有实际应用价值的算法计算量非常庞大、对存储和带宽要求极高。若采用传统FPGA设计方法,即使当前最先进FPGA的资源量也远远不能满足要求。这是因为卷积核滑过图像不同区域进行卷积时,会有大量的数据被多次使用,而片上存储空间有限、无法同时存储输入图像和输出特征图像及中间结果。当前普遍采用时分复用的思想来实现深度学习算法,比如深鉴科技的亚里士多德(Aristotle)结构。由于输入图像、卷积核和输出特征图像都要存储在外部存储器上,带宽是影响性能的瓶颈之。
卷积运算在整个算法中计算量超过90%,主要为点积运算,需要大量的乘法器单元,是影响性能的另一个瓶颈。当前,实现点积运算的有以下几种方法:其一,用一个乘法器和一个加法器不断地做乘法和累加运算(即乘累加MAC);其二,先并行地做乘法再做累加,形成若干乘法器的输出接入到一棵加法树的结构;其三,搭建一个ALU单元,不仅可以执行卷积还可以执行pooling等运算。FPGA乘法器的数量决定了卷积运算的并行度和卷积单元的数量。
图1为二维CNN卷积示意图,如图1所示,输入图像经过一个卷积核的卷积会得到一张图像,多个卷积核卷积后将多张二维特征图像堆叠起来形成一个三维的输出特征图像。在此过程中,每个卷积核都会对输入图像的相同位置进行卷积,因此输入图像的数据可以在多个卷积间共用。数据重用方式对加速器结构设计非常重要,不仅影响片上存储空间的使用、还会影响到吞吐率等。
现有的加速计算方法受限于FPGA乘法器数量、片上存储容量、带宽、算法规模等,常常造成某些数据不能重用或某些资源未能充分利用、计算效率低等问题。为了解决相同数据被多次访问外存带来的带宽瓶颈和CNN卷积对片上存储和乘法器的大量开销,迫切需要一种加速计算方法,能够有效减少数据访存次数、提高片上存储使用效率,并以流水线方式同时完成多个卷积运算,从而获得较高的吞吐率。
公开内容
(一)要解决的技术问题
本公开提供了一种加速计算二维图像CNN卷积的方法,以至少部分解决以上所提出的技术问题。
(二)技术方案
根据本公开的一个方面,提供了一种加速计算二维图像CNN卷积的方法,包括:数据以流水线方式排布输入FIFO,卷积窗口在FIFO内成为平行四边形,卷积运算在行和列方向上同时重用数据;根据PE计算单元数量及对速度的要求,PE计算单元采用并行加速计算方法或串行加速计算方法,输出特征图像。
在本公开一些实施例中,所述的数据以流水线方式排布进入FIFO包括:将矩形方式表示的原始输入图像数据以流水线方式排布后,每行数据相对上一行向右错开一列或多列,整体形成一个平行四边形,
在本公开一些实施例中,PE计算单元处理后输出特征图像的数据也呈现每行数据相对上一行向右错开一列或多列的四边形排布。
在本公开一些实施例中,所述的卷积窗口在FIFO内呈现平行四边形包括:在原始输入图像为矩形方式表示下,卷积核滑过原始输入图像不同位置的卷积窗口在FIFO中呈现平行四边形。
在本公开一些实施例中,其中PE单元从FIFO获取数据,在资源充足速度要求高的情况使用并行加速方法,在要求资源尽可能少时使用串行加速方法。
在本公开一些实施例中,所述的并行计算方法包括:FIFO内包括了若干卷积窗口,即所述平行四边形覆盖的数据,每个固定位置与卷积核中固定位置的元素做乘积是固定的,并将固定的乘积结果接入同一加法树;FIFO中每进入一列数据,所有平行四边形便执行一次卷积运算,输出多个特征数据。
在本公开一些实施例中,并行加速方法进一步包括:尺寸较大的输入图像按行分成多组,分批送入FIFO和PE进行处理,再将输出特征按行拼接成完整的特征图像;对于多个卷积核的情形,一个卷积核对应一个PE,所有PE共享输入图像数据,并行加速计算。
在本公开一些实施例中,所述的串行计算方法包括:数据缓存data buffer与权重缓存weight buffer的结构具有置数和移位寄存器链的功能,进入数据缓存data buffer与权重缓存weight buffer的数据排布方式使得进入缓存的相邻数据可以重用。
在本公开一些实施例中,所述数据排布方式包括:输入二维图形、卷积核;将输入的二维图像在计算时将其安行分成若干组,每个分组(batch)由一个PE在一段时间内进行卷积处理,根据组内行数确定分批处理数目batch_num;将不同batch输出结果拼接在一起。
在本公开一些实施例中,输出特征图像以循环队列的方式存储;其中,特征图像的偏置作为特征队列的初始值,每行的大小等于完整特征图像的列数,行数等于FIFO内平行四边形的个数,即并行计算的卷积窗口数。
(三)有益效果
从上述技术方案可以看出,本公开加速计算二维图像CNN卷积的方法至少具有以下有益效果其中之一:
(1)由于所有数据排列方式固定,有助于硬件单元的设计;所有数据以流水线的方式进行处理,不仅最大化地重用了数据,而且并行地执行了若干卷积运算,大幅提高了吞吐率和执行效率。
(2)由于片上存储容量要求低,而且输入图像FIFO的大小、权重缓存容量、输出特征的队列容量均可提前估算,便于硬件单元的实现和控制。
(3)通过改变FIFO的行数、PE处理的行数、输出特征队列的行数来提高并行度,可以扩展到更多相邻卷积窗口位置的并行处理。本发明中PE的串行和并行计算方法也可用在CAD工具中,以便提高电路的性能。
(4)通过将三维按序展开成二维的图像,便可借助该方法完成三维卷积,有效地降低了存储的要求和计算结构的复杂性。
附图说明
图1为二维CNN卷积示意图。
图2为本公开第一实施例加速计算二维图像CNN卷积的方法的示意图。
图3为本公开第一实施例卷积窗口在不同位置时输入数据与输出特征图像的关系示意图。
图4为本公开第一实施例二维卷积数据排布顺序示意图
图5为本公开第二实施例加速计算二维图像CNN卷积采用PE内并行计算方法的示意图。
图6为本公开第三实施例加速计算二维图像CNN卷积采用PE内串行计算方法的示意图。
图7为本公开第三实施例PE内串行计算时卷积窗内数据排列顺序。
具体实施方式
本公开提供了一种高效加速计算二维图像CNN卷积的方法,该加速方法能有效减少访问外部存储、提高吞吐率和执行效率。整体计算框架如图2所示,PE(process element)负责执行若干个卷积窗口的计算并且最终输出特征图像的若干行。考虑到特征图像有偏置(没有就默认为0),预先将其加载到fmap循环队列中,作为累加的初始值。如果整个特征图像的行数较多,可在计算时将其分成若干组,再分批计算,一个分组(batch)中的所有数据均由同一个PE计算得到,当所有分组(batches)处理结束后将其结果按序拼接起来便可得到完整特征图像。
如果有多个尺寸相同的卷积核、PE数量充足,则每个对应一个PE,所有PE共享加载的局部/全部输入图像数据,便可并行执行图像的卷积任务,进而得到部分/全部特征图像。此时,所有PE单元的控制是相同的;加速器的控制部件(controller)主要负责数据的读入与写出控制、再分批分配到PE的工作。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
本公开某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本公开的各种实施例可以许多不同形式实现,而不应被解释为限于此数所阐述的实施例;相对地,提供这些实施例使得本公开满足适用的法律要求。
本公开的第一个示例性实施例中,提供了一种高效加速计算二维图像CNN卷积的方法。图2为本公开第一实施例加速计算二维图像CNN卷积的方法的结构示意图。如图2所示,本公开高效加速计算二维图像CNN卷积的方法包括:
(1)数据以流水线方式排布输入FIFO,卷积窗口在FIFO内成为平行四边形,卷积运算在行和列方向上同时重用数据;
(2)根据PE计算单元数量及对速度的要求,PE计算单元采用并行加速计算方法或串行两种加速计算方法;
(3)输出特征图像以循环队列的方式存储。
以下分别对本实施例方法的具体内容进行详细描述。
(1)输入图像数据以流水线的排布方式进入FIFO窗口,在FIFO内卷积窗变为平行四边形,便可获得行和列两个方向上数据的重用。
进一步地,所述的数据以流水线方式排布进入FIFO包括:输入图像数据原本以矩形(矩阵)方式表示,流水线排布后每行数据相对上一行向右错开一列或多列,整体形成一个大的平行四边形;PE处理后输出特征图像的数据也呈现这种排布。
所述的卷积窗口在FIFO内呈现平行四边形包括:在矩形(矩阵)方式表示下,卷积核滑过原始输入图像不同位置的卷积窗口在FIFO中大多数呈现平行四边形(前几个可能不规则)。
本实施例中,CNN的卷积过程可以按照图3的方式进行,在二维平面上,卷积核在图像的行方向和列方向同时进行,参与计算的数据(图中卷积窗口重叠区)被大量重用。为了减少资源消耗,多个卷积窗口内的数据被存储在多行的FIFO(First In First Out)中,每次入队一列数据(图中FIFO最右侧列),则所有平行四边形内的数据都进行一次卷积运算(每个平行四边形对应左侧一个计算卷积窗口),卷积结果输出到特征图队列中。从图中可以发现,FIFO的大小、平行四边形的位置是固定的且有规律的,因此,可以将其作为一个计算单元PE的数据输入端来使用。这里平行四边形(卷积窗口)的个数是一个可调节的参数,理想情况下与完整的特征图像高度一致。
(2)PE单元从FIFO从获取数据,有并行加速和串行加速两种方法,分别适用在资源充足速度要求高的情况和要求资源尽可能少但速度较慢尚可接受的情况。
所述的PE并行计算方法包括:FIFO内包括了若干卷积窗口(即平行四边形)覆盖的数据,每个固定位置与卷积核中哪些元素做乘积是固定的、哪些乘积结果接入同一加法树也是固定的;FIFO中每进入一列数据,所有平行四边形便执行一次卷积运算,输出若干个特征数据。
进一步地,高效并行加速方法包括:尺寸较大的输入图像可以按行分成若干组,分批送入FIFO和PE进行处理,再将输出特征按行拼接成完整的特征图像;对于多个卷积核的情形,每个卷积核对于一个PE,所有PE共享输入图像数据,并行加速计算,进而提高执行效率和吞吐率。
所述的PE串行计算方法包括:进入数据缓存(data buffer)与权重缓存(weightbuffer)的数据排布方式使得进入缓存的相邻数据可以重用,二者的结构具有置数和移位寄存器链的功能。
不论串行计算还是并行计算方法,二维卷积数据排布过程是一致的,包括:
1.输入二维图形、卷积核;本实施例中输入图像8×8,卷积核3×3,步长stride=1,输出特征图像行数(8-3)/1+1=6;
2.整个特征图像在计算时被按行分成若干组,再按组分批计算,每个分组的数据均有同一PE计算得到。根据组内行数确定分批处理数目batch_num;本实施例中组内行数为4,则batch_num=6/4=2(6为行数);
3.不同分组输出结果拼接在一起;本实施例中batch_num=2的分组的结果拼接成完成输出特征图形。
根据图3中的规律,输入图像数据将以图4的排列方式从右至左逐列进入FIFO,并在构成有效平行四边形后开始计算卷积,结果输出到特征图像的队列中。由于整个图像分成两个组,顺序排列后进入FIFO,时分复用同一个PE分别完成特征图像的前4行和后2行计算;当有多个卷积核时,分两种情况处理:1)PE单元足够多,每个卷积核分配一个PE同步并行计算;2)PE个数少于卷积核个数,此时将卷积核按照PE数目分成若干组,再分批加载输入图像和卷积核交给PEs执行,此时从外部存储器读入整个输入图像的次数等于分组数。
(3)输出特征图像以循环队列的方式存储;
所述的输出特征图像以循环队列的方式存储包括:特征图像的偏置作为特征队列的初始值,每行的大小等于完整特征图像的列数,行数等于FIFO内平行四边形的个数(即并行计算的卷积窗口数)。
至此,本公开第一实施例加速计算二维图像CNN卷积的方法介绍完毕。
在本公开的第二个示例性实施例中,提供了一种加速计算二维图像CNN卷积的方法,采用PE并行计算结构。数据进入FIFO后,若PE资源充足且要求速度快,适合采用PE串行计算结构执行卷积。并行结构中,当前FIFO里的每个数据参与卷积的次数由平行四边形个数决定,参与的乘法计算由其所处的位置决定。
图5为采用PE并行计算结构加速计算二维图像CNN卷积的方法的示意图,如图5所示,第一列数据分别与w1,1相乘,第二列分别与w2,1和w1,2相乘,第三列与w3,1、w2,2、w1,3相乘、第四列与w3,2、w2,3相乘、第五列与w3,3相乘,属于同一平行四边形的乘积结果累加后得到一个特征点。图中所有乘法同时计算、再同时求和、输出特征。FIFO新入队一列数据,重复该过程,直至没有数据再进入FIFO结束。需要注意的是,加法树的输入不仅有同一卷积窗内对应位置的乘积,还有特征图像的偏置数据,该偏置作为输出特征队列的一个初始值在计算前便已写入,本次加法树输出的特征将作为新的累加和写回特征队列的相同位置。此外,卷积核的权重排列成三角形的方式并不唯一,只要保证每个平行四边对应的卷积能够正确计算即可。
在不同batch计算交界处,需要分别逐步加载局部输入图像数据、新的权重、偏置到FIFO、权重缓存、特征循环队列。在新旧batch交界处,随着新batch数据从右向左的移动,FIFO内无效平行四边形从上至下逐渐出现;当新batch数据移动到FIFO特定位置后,新的有效平行四边形便又出现了,此后有效平行四边形再次从上至下逐渐出现。在无效平行四边形时,权重缓存设置为0,进入有效平行四边形时再设置为新的权重。在执行第一个batch的计算前,所有缓存均为0。为了处理方便,输出特征队列中为无效平行四边形的计算结果保留了存储位置。为了便于理解,图中画出了若干没有用到的乘法计算和加法树(没有背景色的部分),实际设计中可以去掉它们。
为了达到简要说明的目的,上述实施例1中任何可作相同应用的技术特征叙述皆并于此,无需再重复相同叙述。
至此,本公开第二实施例加速计算二维图像CNN卷积的方法介绍完毕。
在本公开的第三个示例性实施例中,提供了一种加速计算二维图像CNN卷积的方法,采用PE串行计算结构。数据进入FIFO后,若资源要求较少,但对速度要求不高时,可采用PE串行计算结构。
图6为采用PE串行计算结构加速计算二维图像CNN卷积的方法的示意图。如图6所示,FIFO入队一列数据(最右侧列)后,将每个平行四边形的元素按照一定的顺序排成一行(如图7所示的顺序),对应的卷积核元素也排成一行,然后,顺序进入data buffer和weightbuffer(图中buffer大小分别为4和1)做乘累加,在此过程中FIFO数据保持不变,直到行结束(即平行四边形所有元素都做完乘累加),此时将累加结果存入输出特征队列中。与并行结构一样,这里累加的初始数据并一定为0,而是特征图像的偏置。接着FIFO入队新的一列数据,重复上述过程,直到所有卷积完成。在本实施例中,FIFO入队一列数据后,从FIFO按序取出数据存到data buffer后再做乘累加(保持FIFO数据不变),按序9次乘累加后,FIFO才能入队新的一列数据。
data buffer的大小由平行四边形个数决定,数据进入data buffer的顺序不同,weight buffer的顺序也不同。本发明选择的顺序有助于减少从FIFO中获取数据的次数,如图7的顺序,尽管单个卷积窗口内的计算没有影响,但相邻两个平行四边形重叠的数据可以在data buffer中重用,因此data buffer可以设计成带有置数功能的寄存器链(队列),Weight buffer也可设计成循环寄存器链(队列),从而提高数据的重用性。
为了达到简要说明的目的,上述实施例1-2中任何可作相同应用的技术特征叙述皆并于此,无需再重复相同叙述。
至此,本公开第三实施例加速计算二维图像CNN卷积的方法介绍完毕。
本发明将对二维图像的卷积在以下两个方面优化:第一,同时在图像的行和列两个方向上不同位置进行卷积运算,最大限度地重用不同位置重叠区的数据;第二,多个不同的卷积核同时进行卷积,避免图像数据多次加载。本公开的方法能有效减少访问外部存储、提高吞吐率和执行效率,片上存储容量要求低,而且容易估算。
本发明的方法可以扩展到更多相邻卷积窗口位置的并行处理,即通过改变FIFO的行数、PE处理的行数、输出特征队列的行数来提高并行度。本发明中PE的串行和并行计算方法也可用在CAD工具中,以便提高电路的性能。同时,本发明可扩展至三维卷积的情形,只需将三维按序展开成二维的图像,便可借助该方法完成卷积,有效地降低了存储的要求和计算结构的复杂性。
为了达到简要说明的目的,上述实施例1中任何可作相同应用的技术特征叙述皆并于此,无需再重复相同叙述。
至此,已经结合附图对本公开实施例进行了详细描述。需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。
还需要说明的是,实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向,并非用来限制本公开的保护范围。贯穿附图,相同的元素山相同或相近的附图标记来表示。在可能导致对本公开的理解造成混淆时,将省略常规结构或构造。
此外,除非特别描述或必须依序发生的步骤,上述步骤的顺序并无限制于以上所列,且可根据所需设计而变化或重新安排。并且上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本公开也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本公开的内容,并且上面对特定语言所做的描述是为了披露本公开的最佳实施方式。
本公开可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。本公开的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本公开实施例的相关设备中的一些或者全部部件的一些或者全部功能。本公开还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本公开的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。并且,在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。
类似地,应当理解,为了精简本公开并帮助理解各个公开方面中的一个或多个,在上面对本公开的示例性实施例的描述中,本公开的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本公开要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,公开方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本公开的单独实施例。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (10)

1.一种加速计算二维图像CNN卷积的方法,包括:
数据以流水线方式排布输入FIFO,卷积窗口在FIFO内成为平行四边形,卷积运算在行和列方向上同时重用数据;
根据PE计算单元数量及对速度的要求,PE计算单元采用并行加速计算方法或串行加速计算方法,输出特征图像。
2.根据权利要求1所述的方法,其中,所述的数据以流水线方式排布进入FIFO包括:将矩形方式表示的原始输入图像数据以流水线方式排布后,每行数据相对上一行向右错开一列或多列,整体形成一个平行四边形。
3.根据权利要求2所述的方法,其中,PE计算单元处理后输出特征图像的数据也呈现每行数据相对上一行向右错开一列或多列的四边形排布。
4.根据权利要求3所述的方法,所述的卷积窗口在FIFO内呈现平行四边形包括:在原始输入图像为矩形方式表示下,卷积核滑过原始输入图像不同位置的卷积窗口在FIFO中呈现平行四边形。
5.根据权利要求4所述的方法,其中PE单元从FIFO获取数据,在资源充足速度要求高的情况使用并行加速方法,在要求资源尽可能少时使用串行加速方法。
6.根据权利要求5所述的方法,所述的并行计算方法包括:FIFO内包括了若干卷积窗口,即所述平行四边形覆盖的数据,每个固定位置与卷积核中固定位置的元素做乘积是固定的,并将固定的乘积结果接入同一加法树;FIFO中每进入一列数据,所有平行四边形便执行一次卷积运算,输出多个特征数据。
7.根据权利要求6所述的方法,并行加速方法进一步包括:
尺寸较大的输入图像按行分成多组,分批送入FIFO和PE进行处理,再将输出特征按行拼接成完整的特征图像;对于多个卷积核的情形,一个卷积核对应一个PE,所有PE共享输入图像数据,并行加速计算。
8.根据权利要求5所述的方法,所述的串行计算方法包括:数据缓存data buffer与权重缓存weight buffer的结构具有置数和移位寄存器链的功能,进入数据缓存data buffer与权重缓存weight buffer的数据排布方式使得进入缓存的相邻数据可以重用。
9.根据权利要求5所述的方法,所述数据排布方式包括:
输入二维图形、卷积核;
将输入的二维图像在计算时将其安行分成若干组,每个分组(batch)由一个PE在一段时间内进行卷积处理,根据组内行数确定分批处理数目batch_num;
将不同batch输出结果拼接在一起。
10.根据权利要求1所述的方法,还包括:输出特征图像以循环队列的方式存储;其中,
特征图像的偏置作为特征队列的初始值,每行的大小等于完整特征图像的列数,行数等于FIFO内平行四边形的个数,即并行计算的卷积窗口数。
CN201711223548.2A 2017-11-29 2017-11-29 加速计算二维图像cnn卷积的方法 Active CN107862650B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711223548.2A CN107862650B (zh) 2017-11-29 2017-11-29 加速计算二维图像cnn卷积的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711223548.2A CN107862650B (zh) 2017-11-29 2017-11-29 加速计算二维图像cnn卷积的方法

Publications (2)

Publication Number Publication Date
CN107862650A true CN107862650A (zh) 2018-03-30
CN107862650B CN107862650B (zh) 2021-07-06

Family

ID=61704355

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711223548.2A Active CN107862650B (zh) 2017-11-29 2017-11-29 加速计算二维图像cnn卷积的方法

Country Status (1)

Country Link
CN (1) CN107862650B (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108765247A (zh) * 2018-05-15 2018-11-06 腾讯科技(深圳)有限公司 图像处理方法、装置、存储介质及设备
CN108875904A (zh) * 2018-04-04 2018-11-23 北京迈格威科技有限公司 图像处理方法、图像处理装置和计算机可读存储介质
CN109117940A (zh) * 2018-06-19 2019-01-01 腾讯科技(深圳)有限公司 一种卷积神经网络前向加速方法、装置及系统
CN109472355A (zh) * 2018-11-06 2019-03-15 地平线(上海)人工智能技术有限公司 卷积处理引擎及控制方法和相应的卷积神经网络加速器
CN109800867A (zh) * 2018-12-17 2019-05-24 北京理工大学 一种基于fpga片外存储器的数据调用方法
CN109816093A (zh) * 2018-12-17 2019-05-28 北京理工大学 一种单路式卷积实现方法
CN109993293A (zh) * 2019-02-28 2019-07-09 中山大学 一种适用于堆叠式沙漏网络的深度学习加速器
CN110399977A (zh) * 2018-04-25 2019-11-01 华为技术有限公司 池化运算装置
WO2019227322A1 (zh) * 2018-05-30 2019-12-05 深圳市大疆创新科技有限公司 池化装置和池化方法
CN110555512A (zh) * 2019-07-30 2019-12-10 北京航空航天大学 一种二值卷积神经网络数据重用方法及装置
CN110569970A (zh) * 2019-09-12 2019-12-13 合肥工业大学 一种应用于卷积神经网络中硬件加速器的数据传输方法
US10733742B2 (en) 2018-09-26 2020-08-04 International Business Machines Corporation Image labeling
CN111767243A (zh) * 2020-06-09 2020-10-13 上海寒武纪信息科技有限公司 数据处理方法、相关设备及计算机可读介质
WO2020211654A1 (zh) * 2019-04-19 2020-10-22 北京灵汐科技有限公司 一种基于行缓冲Linebuffer的并行计算方法及计算设备
CN112163612A (zh) * 2020-09-24 2021-01-01 深兰人工智能芯片研究院(江苏)有限公司 基于fpga的大模板卷积图像匹配方法、装置及系统
CN112288082A (zh) * 2020-11-23 2021-01-29 天津大学 一种基于hls的可重构通用标准卷积加速器设计方法
WO2021147567A1 (zh) * 2020-01-21 2021-07-29 北京希姆计算科技有限公司 卷积运算方法及芯片
US11176427B2 (en) 2018-09-26 2021-11-16 International Business Machines Corporation Overlapping CNN cache reuse in high resolution and streaming-based deep learning inference engines
CN113989169A (zh) * 2020-07-08 2022-01-28 嘉楠明芯(北京)科技有限公司 一种膨胀卷积加速计算方法及装置
CN116306823A (zh) * 2023-04-27 2023-06-23 北京爱芯科技有限公司 为mac阵列提供数据的方法、装置和芯片

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102208005A (zh) * 2011-05-30 2011-10-05 华中科技大学 一种2-d卷积器
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN106228238A (zh) * 2016-07-27 2016-12-14 中国科学技术大学苏州研究院 现场可编程门阵列平台上加速深度学习算法的方法和系统
CN106250103A (zh) * 2016-08-04 2016-12-21 东南大学 一种卷积神经网络循环卷积计算数据重用的系统
CN107229598A (zh) * 2017-04-21 2017-10-03 东南大学 一种面向卷积神经网络的低功耗电压可调卷积运算模块
CN107392309A (zh) * 2017-09-11 2017-11-24 东南大学—无锡集成电路技术研究所 一种基于fpga的通用定点数神经网络卷积加速器硬件结构

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102208005A (zh) * 2011-05-30 2011-10-05 华中科技大学 一种2-d卷积器
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN106228238A (zh) * 2016-07-27 2016-12-14 中国科学技术大学苏州研究院 现场可编程门阵列平台上加速深度学习算法的方法和系统
CN106250103A (zh) * 2016-08-04 2016-12-21 东南大学 一种卷积神经网络循环卷积计算数据重用的系统
CN107229598A (zh) * 2017-04-21 2017-10-03 东南大学 一种面向卷积神经网络的低功耗电压可调卷积运算模块
CN107392309A (zh) * 2017-09-11 2017-11-24 东南大学—无锡集成电路技术研究所 一种基于fpga的通用定点数神经网络卷积加速器硬件结构

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张抢强等: ""基于分块卷积的大图像输入卷积神经网络加速"", 《中国科技论文在线》 *

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108875904A (zh) * 2018-04-04 2018-11-23 北京迈格威科技有限公司 图像处理方法、图像处理装置和计算机可读存储介质
CN110399977A (zh) * 2018-04-25 2019-11-01 华为技术有限公司 池化运算装置
CN108765247B (zh) * 2018-05-15 2023-01-10 腾讯科技(深圳)有限公司 图像处理方法、装置、存储介质及设备
CN108765247A (zh) * 2018-05-15 2018-11-06 腾讯科技(深圳)有限公司 图像处理方法、装置、存储介质及设备
WO2019227322A1 (zh) * 2018-05-30 2019-12-05 深圳市大疆创新科技有限公司 池化装置和池化方法
CN109117940A (zh) * 2018-06-19 2019-01-01 腾讯科技(深圳)有限公司 一种卷积神经网络前向加速方法、装置及系统
CN109117940B (zh) * 2018-06-19 2020-12-15 腾讯科技(深圳)有限公司 基于卷积神经网络的目标检测方法、装置、终端及存储介质
US11176427B2 (en) 2018-09-26 2021-11-16 International Business Machines Corporation Overlapping CNN cache reuse in high resolution and streaming-based deep learning inference engines
US10733742B2 (en) 2018-09-26 2020-08-04 International Business Machines Corporation Image labeling
US12039769B2 (en) 2018-09-26 2024-07-16 International Business Machines Corporation Identifying a type of object in a digital image based on overlapping areas of sub-images
CN109472355B (zh) * 2018-11-06 2021-01-01 地平线(上海)人工智能技术有限公司 卷积处理引擎及控制方法和相应的卷积神经网络加速器
US12093810B2 (en) 2018-11-06 2024-09-17 Beijing Horizon Robotics Technology Research And Development Co., Ltd. Convolution processing engine and control method, and corresponding convolutional neural network accelerator
CN109472355A (zh) * 2018-11-06 2019-03-15 地平线(上海)人工智能技术有限公司 卷积处理引擎及控制方法和相应的卷积神经网络加速器
CN109816093B (zh) * 2018-12-17 2020-12-04 北京理工大学 一种单路式卷积实现方法
CN109816093A (zh) * 2018-12-17 2019-05-28 北京理工大学 一种单路式卷积实现方法
CN109800867A (zh) * 2018-12-17 2019-05-24 北京理工大学 一种基于fpga片外存储器的数据调用方法
CN109993293A (zh) * 2019-02-28 2019-07-09 中山大学 一种适用于堆叠式沙漏网络的深度学习加速器
CN109993293B (zh) * 2019-02-28 2021-04-13 中山大学 一种适用于堆叠式沙漏网络的深度学习加速器
WO2020211654A1 (zh) * 2019-04-19 2020-10-22 北京灵汐科技有限公司 一种基于行缓冲Linebuffer的并行计算方法及计算设备
CN110555512A (zh) * 2019-07-30 2019-12-10 北京航空航天大学 一种二值卷积神经网络数据重用方法及装置
CN110555512B (zh) * 2019-07-30 2021-12-03 北京航空航天大学 一种二值卷积神经网络数据重用方法及装置
CN110569970A (zh) * 2019-09-12 2019-12-13 合肥工业大学 一种应用于卷积神经网络中硬件加速器的数据传输方法
CN110569970B (zh) * 2019-09-12 2022-03-15 合肥工业大学 一种应用于卷积神经网络中硬件加速器的数据传输方法
WO2021147567A1 (zh) * 2020-01-21 2021-07-29 北京希姆计算科技有限公司 卷积运算方法及芯片
CN111767243A (zh) * 2020-06-09 2020-10-13 上海寒武纪信息科技有限公司 数据处理方法、相关设备及计算机可读介质
CN113989169A (zh) * 2020-07-08 2022-01-28 嘉楠明芯(北京)科技有限公司 一种膨胀卷积加速计算方法及装置
CN112163612A (zh) * 2020-09-24 2021-01-01 深兰人工智能芯片研究院(江苏)有限公司 基于fpga的大模板卷积图像匹配方法、装置及系统
CN112288082A (zh) * 2020-11-23 2021-01-29 天津大学 一种基于hls的可重构通用标准卷积加速器设计方法
CN116306823A (zh) * 2023-04-27 2023-06-23 北京爱芯科技有限公司 为mac阵列提供数据的方法、装置和芯片
CN116306823B (zh) * 2023-04-27 2023-08-04 北京爱芯科技有限公司 为mac阵列提供数据的方法、装置和芯片

Also Published As

Publication number Publication date
CN107862650B (zh) 2021-07-06

Similar Documents

Publication Publication Date Title
CN107862650B (zh) 加速计算二维图像cnn卷积的方法
JP7329533B2 (ja) 演算を加速するための方法および加速器装置
CN112214726B (zh) 运算加速器
JP7358382B2 (ja) 演算を加速するための加速器及びシステム
US11204976B2 (en) Expanded kernel generation
TWI639119B (zh) 執行卷積計算的系統及方法
CN109891435B (zh) 张量运算和加速
CN111667051B (zh) 适用边缘设备的神经网络加速器及神经网络加速计算方法
JP2022037022A (ja) ハードウェアにおけるカーネルストライドの実行
US20190026249A1 (en) Computational array microprocessor system using non-consecutive data formatting
CN110210610B (zh) 卷积计算加速器、卷积计算方法及卷积计算设备
US20190095776A1 (en) Efficient data distribution for parallel processing
EP3836028A1 (en) Accelerating 2d convolutional layer mapping on a dot product architecture
EP3460725A1 (en) Method and apparatus for adapting parameters of neural network
CN110135556B (zh) 基于脉动阵列的神经网络加速方法、装置、计算机设备及存储介质
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
CN109313663A (zh) 人工智能计算辅助处理装置、方法、存储介质、及终端
CN116090518A (zh) 基于脉动运算阵列的特征图处理方法、装置以及存储介质
EP3940605A1 (en) Mapping convolution to connected processing elements using distributed pipelined separable convolution operations
CN110930290B (zh) 一种数据处理方法及装置
US20240135677A1 (en) Method, system and storage media for training a graphics processing neural network with a patch-based approach
CN114662647A (zh) 处理用于神经网络的层的数据
Devendran et al. Optimization of the Convolution Operation to Accelerate Deep Neural Networks in FPGA.
CN112860597A (zh) 一种神经网络运算的系统、方法、装置及存储介质

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