CN111626405B - 一种cnn加速方法、加速装置及计算机可读存储介质 - Google Patents
一种cnn加速方法、加速装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111626405B CN111626405B CN202010412121.2A CN202010412121A CN111626405B CN 111626405 B CN111626405 B CN 111626405B CN 202010412121 A CN202010412121 A CN 202010412121A CN 111626405 B CN111626405 B CN 111626405B
- Authority
- CN
- China
- Prior art keywords
- pixels
- convolution
- convolution operation
- data
- 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.)
- Active
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 54
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000003860 storage Methods 0.000 title claims abstract description 31
- 239000000872 buffer Substances 0.000 claims description 26
- 239000011159 matrix material Substances 0.000 claims description 24
- 238000004364 calculation method Methods 0.000 claims description 14
- 238000013527 convolutional neural network Methods 0.000 description 39
- 238000010586 diagram Methods 0.000 description 21
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 239000007787 solid Substances 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005429 filling process Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
本申请公开了一种CNN加速方法、加速装置及计算机可读存储介质,该加速方法和加速装置用于FPGA。所述方法为:通过DMA接口将完成边界填充的图像数据缓存进入行缓存区;调用FPGA内置的硬件加速单元对所述的行缓存区内的数据进行卷积运算,所述的卷积运算的卷积核大小为N×N,每个卷积层的行缓存接口数量为N;将完成卷积运算的像素缓存至缓存区,并通过DMA端口传输至外部DDR。所述装置包括:第一存储模块、运算模块和第二存储模块。所述存储介质中存储有多条指令,所述指令适于由处理器加载以执行本发明所述的CNN加速方法。
Description
技术领域
本发明涉及图像处理技术,特别是涉及CNN加速方法、加速装置及计算机可读存储介质。
背景技术
卷积神经网络(Convolutional Neural Networks,简称为CNN)是图像处理中最重要、最常用的算法之一。CNN运算量大,运算时间长,设计高效的CNN硬件加速器难度较大,因而现阶段一般使用纯软件方式调用CPU(Central Processing Unit)及GPU(GraphicProcessing Unit)进行CNN加速运算,但加速效果往往受限于GPU计算单元数量,所以加速效果并不理想。此外,GPU价格高昂,不利于产品批量生产及推广。
针对现有技术中存在的CNN加速效果不理想的问题,目前还没有提出有效的解决方法。
发明内容
本发明提供一种CNN加速方法、加速装置及计算机可读存储介质,采用软硬件相结合的方式,有效提高了CNN加速效果。
为解决上述问题,第一方面,本发明提供了一种CNN加速方法,该方法用于FPGA(Field-Programmable Gate Array),该方法包括:
通过直接存储器访问(DMA,Direct Memory Access)接口将完成边界填充的图像数据缓存进入行缓存区;
调用FPGA内置的硬件加速单元对所述的行缓存区内的数据进行卷积运算,所述的卷积运算的卷积核大小为N×N,每个卷积层的行缓存接口数量为N;
将完成卷积运算的像素缓存至缓存区,并通过DMA端口传输至外部DDR(DoubleData Rate)。
其中,所述的卷积运算包括:
从bram(bipolar random access memory)中抓取所需要的N2个像素及对应的权重;
通过非0值判断模块判断所述的N2个像素及对应的权重是否存在零值;
对抓取的像素矩阵及对应的权重矩阵进行卷积计算:当所述的N2个像素及对应的权重不存在零值时,利用N2个乘法器对所述像素矩阵中的元素及所述权重矩阵中的元素进行乘法运算,然后利用N2-1个加法器对所述的N2个乘法器的输出数据相加,完成卷积运算;当所述的N2个像素及对应的权重存在零值时,则在使用乘法器进行乘法运算时,忽略掉所述零值对应的相乘项。
其中,所述CNN加速方法还包括:
调用HLS pipeline unroll指令;
且所述的调用HLS pipeline unroll指令与所述的卷积运算同时进行。
其中,所述CNN加速方法还包括:
对所述的卷积运算及将完成卷积运算的像素缓存至缓存区进行数据流操作。
其中,所述的边界填充由ARM(Advanced RISC Machine)CPU端完成。
其中,所述的ARM CPU端的输入数据由ARM端PS(Processing System)从外部DDR调用。
为解决上述问题,第二方面,本发明提供了一种CNN加速装置,该装置用于FPGA,该装置包括:
第一存储模块,用于通过DMA接口将完成边界填充的图像数据缓存进入行缓存区;
运算模块,用于调用FPGA内置的硬件加速单元对所述的行缓存区内的数据进行卷积运算,所述的卷积运算的卷积核大小为N×N,每个卷积层的行缓存接口数量为N;
第二存储模块,用于将完成卷积运算的像素缓存至缓存区,并通过DMA端口传输至外部DDR。
其中,所述的硬件加速单元包括:
抓取子单元,用于从bram中抓取所需要的N2个像素及对应的权重;
判断单子元,通过非0值判断模块判断所述的N2个像素及对应的权重是否存在零值;
计算子单元,用于对抓取的像素矩阵及对应的权重矩阵进行卷积计算:当所述的N2个像素及对应的权重不存在零值时,利用N2个乘法器对所述像素矩阵中的元素及所述权重矩阵中的元素进行乘法运算,然后利用N2-1个加法器对所述的N2个乘法器的输出数据相加,完成卷积运算;当所述的N2个像素及对应的权重存在零值时,则在使用乘法器进行乘法运算时,忽略掉所述零值对应的相乘项。
其中,所述CNN加速装置还包括:
指令调用模块,用于调用HLS pipeline unroll指令;
且所述的调用HLS pipeline unroll指令与所述的卷积运算同时进行。
为解决上述问题,第三方面,本发明提供了一种计算机可读存储介质,所述存储介质中存储有多条指令,所述指令适于由处理器加载以执行上述任一项的CNN加速方法。
本发明的有益效果是:区别于现有技术,本发明的CNN加速方法、CNN加速装置、及计算机可读存储介质,利用ARM CPU端进行图像预处理填充边界,比纯硬件填充判断更加省时;增加每个卷积层接口数量,能够有效减少行索引判断,减少延时;增加输入数据非0值判断模块,能够为后续卷积运算节省运算量,当层数较多时可减少延时。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种CNN加速方法的一个实施例流程示意图;
图2是本发明实施例提供的一种CNN加速方法所适用的硬件架构图;
图3是本发明实施例提供的数据匹配模块对待处理图像进行边界填充的原理示意图;
图4是本发明实施例提供的调用memcpy操作指令的一个实施例流程示意图;
图5是传统的行缓存数据读取方式的原理示意图;
图6是本发明实施例提供的行缓存数据读取方式的原理示意图;
图7是传统的卷积运算方式;
图8是本发明实施例提供的卷积运算方式的原理示意图;
图9是本发明实施例提供的硬件加速模块的示意性架构图;
图10是本发明实施例提供的一种CNN加速装置的一个实施例结构示意图。
具体实施例
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本申请,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本申请。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本申请的描述变得晦涩。因此,本申请并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。
本发明提供了一种CNN加速方法,该CNN加速方法应用于FPGA,以下进行详细说明。
请参阅图1和图2,图1是本发明实施例提供的一种CNN加速方法的一个实施例流程示意图,图2是本发明实施例提供的一种CNN加速方法所适用的硬件架构图。本实施例中的CNN加速方法可以应用于FPGA。该CNN加速方法的具体流程可以如下:
S1:通过DMA接口将完成边界填充的图像数据缓存进入行缓存区;
S2:调用FPGA内置的硬件加速单元对所述的行缓存区内的数据进行卷积运算,所述的卷积运算的卷积核大小为N×N,每个卷积层的行缓存接口数量为N;
S3:将完成卷积运算的像素缓存至缓存区,并通过DMA端口传输至外部DDR。
按照步骤S1至S3的方法遍历所有像素,输出整帧图像。
本实施例中,对图像的预处理,即边界填充,是由FPGA(PL(Progarmmable Logic)部分)外部的ARM(PS部分)来完成的。
在一个具体实施例中,ARM从外部DDR调用待处理图像数据,并利用ARM内嵌的数据匹配模块对所述的待处理图像进行预处理,对处理图像进行边界填充,边界填充的方法为:假设ARM从外部DDR调用的待处理图像的大小为M1×M2,将要进行的卷积运算所采用的卷积核大小为N×N,那么,将所述的待处理图像的四周各扩展出N-1个像素作为图像边界,填充完边界后的图像大小为(M1+N-1)×(M2+N-1)。
参阅图3,图3为本发明实施例提供的数据匹配模块对待处理图像进行边界填充的原理示意图。如图3中的(a)所示,以3×3大小的卷积核为例,若输入的待处理图像大小为960×540,将其四周分别扩展出2个像素作为边界,本实施例中,扩展出的边界为黑色,扩展后的图像大小为962×542。如图3中的(b)所示,以5×5大小的卷积核为例,若输入的待处理图像大小同样为960×540,则将其四周分别扩展出4个像素作为边界,本实施例中,扩展出的边界为黑色,扩展后的图像大小为964×544。
传统的CNN加速方法中,边界条件判断是在FPGA内完成的,比较费时,会增加时延。而本实施例中,ARM CPU内嵌的数据匹配模块调用memcpy操作指令对输入的待处理图像进行边界填充,调用memcpy操作指令的流程如图4所示。以960×540大小的图像为例,边界填充过程只需耗费0.2ms的时间,大大提高了图像处理速度。
步骤S2:调用FPGA内置的硬件加速单元对所述的行缓存区内的数据进行卷积运算,所述的卷积运算的卷积核大小为N×N,每个卷积层的行缓存接口数量为N。
所述的硬件加速单元进行卷积运算的过程可以拆分成如下两个步骤:
读取行缓存区内的数据;
对读取到的数据进行卷积运算。
对于读取行缓存区数据的方式,请参阅图5和图6。
图5是传统的行缓存数据读取方式的原理示意图。以3×3大小的卷积核为例,传统方式为依次读取第1条、第2条、及第3条行缓存(line buffer)内的数据,当读取第4条linebuffer内的数据时,需要进行行索引,判断覆盖原第1条line buffer数据,这种方式导致每帧数据传输时都有两行的数据延时,当通道数较多时,延时占比将会非常重。
图6是本发明实施例提供的行缓存数据读取方式的原理示意图。本实施例中,对行缓存(line buffer)数据的获取延时进行了优化,优化方式为增加卷积层接口数量。对于N×N大小的卷积核,每个卷积层的行缓存接口数量为N,同时读取3个接口的缓存数据。以3×3大小的卷积核为例,每个卷积层的接口数量为3,3个接口的地址索引分别第0行、第1行、以及第2行,缓存数据读取方式为:首先同时读取第0行、第1行、以及第2行的缓存数据,读取完成后,向下移动一行,然后同时读取第1行、第2行、以及第3行的缓存数据,读取完成后,再向下移动一行,然后同时读取第2行、第3行、以及第4行的缓存数据……以此类推。本实施例提供的行缓存数据读取方式能够有效减少行索引判断,减少延时,有效提高图像处理速度。
在一个具体实施例中,对读取到的数据进行卷积运算具体可以包括:
从bram中抓取所需要的N2个像素及对应的权重;
通过非0值判断模块判断所述的N2个像素及对应的权重是否存在零值;
对抓取的像素矩阵及对应的权重矩阵进行卷积计算:当所述的N2个像素及对应的权重均不存在零值时,利用N2个乘法器对所述像素矩阵中的元素及所述权重矩阵中的元素进行乘法运算,然后利用N2-1个加法器对所述的N2个乘法器的输出数据相加,至此完成卷积运算;当所述的N2个像素中存在零值、对应的权重中存在零值、或者二者均存在零值时,则在使用乘法器进行乘法运算时,忽略掉所述零值对应的相乘项,零值对应的相乘项不参与乘法计算,那么,使用的乘法器的数量将少于N2个,然后使用加法器对各乘法器的输出结果进行相加,至此完成卷积运算。
可见,上述非0值判断模块能够有效减少冗余计算,提高图像处理速度。
对于卷积运算方式,请参阅图7和图8。
图7是传统的卷积运算方式,传统的卷积运算方式共采用1个乘法器和1个加法器,以3×3大小的卷积核为例,共需要9次乘法运算(耗时9clk)和8次加法运算(耗时8clk),共耗时17clk。
图8是本发明实施例提供的卷积运算方式的原理示意图,上述步骤S223对传统的卷积运算方式进行了改进,对于N×N大小的卷积核,共需要N2个乘法器和N2-1个加法器,N2个乘法器同时进行计算,乘法运算完成后,N2-1个加法器同时进行计算,卷积运算的同时,调用HLS pipeline unroll指令将整个循环并行展开,确保乘法和加法均在1clk完成,这样,整个卷积运算过程仅耗时2clk。以3×3大小的卷积核为例,9个乘法器同时运算(耗时1clk),运算完成后,8个加法器同时运算(耗时1clk),共耗时2clk。
图9是本发明实施例提供的硬件加速模块的示意性架构图,图中以3×3大小的卷积核为例,首先读取9个像素及所述9个像素的权重,然后进行非0值判断,判断完成后开始进行卷积运算,将卷积运算结果及模型偏差共同送入Relu函数进行计算,计算结果作为最终的卷积运算结果输出至外部DDR。对图9所示的每个过程都进行data flow操作,以减少时钟延时。
区别于现有技术,本发明提供的一种CNN加速方法应用于FPGA,所述的CNN加速方法包括:通过DMA接口将完成边界填充的图像数据缓存进入行缓存区;调用FPGA内置的硬件加速单元对所述的行缓存区内的数据进行卷积运算,所述的卷积运算的卷积核大小为N×N,每个卷积层的行缓存接口数量为N;将完成卷积运算的像素缓存至缓存区,并通过DMA端口传输至外部DDR。本发明利用ARM CPU端进行图像预处理填充边界,比纯硬件填充判断更加省时;增加每个卷积层接口数量,能够有效减少行索引判断,减少延时;增加输入数据非0值判断模块,能够为后续卷积运算节省运算量,当层数较多时可减少延时。
本发明还提供了一种CNN加速装置,该CNN加速装置应用于FPGA,以下进行详细说明。
请参阅图10和图2,图10是本发明实施例提供的一种CNN加速装置的一个实施例结构示意图,图2是本发明实施例提供的一种CNN加速方法所适用的硬件架构图。本实施例中的CNN加速装置可以应用于FPGA。该CNN加速装置的具体结构可以包括:
第一存储模块1,用于通过DMA接口将完成边界填充的图像数据缓存进入行缓存区;
运算模块2,用于调用FPGA内置的硬件加速单元对所述的行缓存区内的数据进行卷积运算,所述的卷积运算的卷积核大小为N×N,每个卷积层的行缓存接口数量为N;
第二存储模块3,用于将完成卷积运算的像素缓存至缓存区,并通过DMA端口传输至外部DDR。
按照第一存储模块1、运算模块2和第二存储模块3的工作方法遍历所有像素,输出整帧图像。
本实施例中,对图像的预处理,即边界填充,是由FPGA(PL部分)外部的ARM(PS部分)来完成的。
在一个具体实施例中,ARM从外部DDR调用待处理图像数据,并利用ARM内嵌的数据匹配模块对所述的待处理图像进行预处理,对处理图像进行边界填充,边界填充的方法为:假设ARM从外部DDR调用的待处理图像的大小为M1×M2,将要进行的卷积运算所采用的卷积核大小为N×N,那么,将所述的待处理图像的四周各扩展出N-1个像素作为图像边界,填充完边界后的图像大小为(M1+N-1)×(M2+N-1)。
参阅图3,图3为本发明实施例提供的数据匹配模块对待处理图像进行边界填充的原理示意图。如图3中的(a)所示,以3×3大小的卷积核为例,若输入的待处理图像大小为960×540,将其四周分别扩展出2个像素作为边界,本实施例中,扩展出的边界为黑色,扩展后的图像大小为962×542。如图3中的(b)所示,以5×5大小的卷积核为例,若输入的待处理图像大小同样为960×540,则将其四周分别扩展出4个像素作为边界,本实施例中,扩展出的边界为黑色,扩展后的图像大小为964×544。
传统的CNN加速方法中,边界条件判断是在FPGA内完成的,比较费时,会增加时延。而本实施例中,ARM CPU内嵌的数据匹配模块调用memcpy操作指令对输入的待处理图像进行边界填充,调用memcpy操作指令的流程如图4所示。以960×540大小的图像为例,边界填充过程只需耗费0.2ms的时间,大大提高了图像处理速度。
运算模块2用于调用FPGA内置的硬件加速单元对所述的行缓存区内的数据进行卷积运算,所述的卷积运算的卷积核大小为N×N,每个卷积层的行缓存接口数量为N。
所述的硬件加速单元可以包括如下两个单元:
行缓存读取单元,用于读取行缓存区内的数据;
卷积计算单元,用于对行缓存读取单元读取到的数据进行卷积运算。
对于行缓存读取单元读取行缓存区数据的方式,请参阅图5和图6。
图5是传统的行缓存数据读取方式的原理示意图。以3×3大小的卷积核为例,传统方式为依次读取第1条、第2条、及第3条line buffer内的数据,当读取第4条line buffer内的数据时,需要进行行索引,判断覆盖原第1条line buffer数据,这种方式导致每帧数据传输时都有两行的数据延时,当通道数较多时,延时占比将会非常重。
图6是本发明实施例提供的行缓存数据读取方式的原理示意图。本实施例中,对行缓存(line buffer)数据的获取延时进行了优化,优化方式为增加卷积层接口数量。对于N×N大小的卷积核,每个卷积层的行缓存接口数量为N,同时读取3个接口的缓存数据。以3×3大小的卷积核为例,每个卷积层的接口数量为3,3个接口的地址索引分别第0行、第1行、以及第2行,缓存数据读取方式为:首先同时读取第0行、第1行、以及第2行的缓存数据,读取完成后,向下移动一行,然后同时读取第1行、第2行、以及第3行的缓存数据,读取完成后,再向下移动一行,然后同时读取第2行、第3行、以及第4行的缓存数据……以此类推。本实施例提供的行缓存数据读取方式能够有效减少行索引判断,减少延时,有效提高图像处理速度。
在一个具体实施例中,卷积计算单元具体可以包括:
抓取子单元,用于从bram中抓取所需要的N2个像素及对应的权重;
判断子单元,用于通过非0值判断模块判断所述的N2个像素及对应的权重是否存在零值;
计算子单元,用于对抓取的像素矩阵及对应的权重矩阵进行卷积计算:当所述的N2个像素及对应的权重均不存在零值时,利用N2个乘法器对所述像素矩阵中的元素及所述权重矩阵中的元素进行乘法运算,然后利用N2-1个加法器对所述的N2个乘法器的输出数据相加,至此完成卷积运算;当所述的N2个像素中存在零值、对应的权重中存在零值、或者二者均存在零值时,则在使用乘法器进行乘法运算时,忽略掉所述零值对应的相乘项,零值对应的相乘项不参与乘法计算,那么,使用的乘法器的数量将少于N2个,然后使用加法器对各乘法器的输出结果进行相加,至此完成卷积运算。
可见,上述非0值判断模块能够有效减少冗余计算,提高图像处理速度。
对于所述的计算子单元的卷积运算方式,请参阅图7和图8。
图7是传统的卷积运算方式,传统的卷积运算方式共采用1个乘法器和1个加法器,以3×3大小的卷积核为例,共需要9次乘法运算(耗时9clk)和8次加法运算(耗时8clk),共耗时17clk。
图8是本发明实施例提供的卷积运算方式的原理示意图,所述的计算子单元223对传统的卷积运算方式进行了改进,对于N×N大小的卷积核,共需要N2个乘法器和N2-1个加法器,N2个乘法器同时进行计算,乘法运算完成后,N2-1个加法器同时进行计算,卷积运算的同时,调用HLS pipeline unroll指令将整个循环并行展开,确保乘法和加法均在1clk完成,这样,整个卷积运算过程仅耗时2clk。以3×3大小的卷积核为例,9个乘法器同时运算(耗时1clk),运算完成后,8个加法器同时运算(耗时1clk),共耗时2clk。
图9是本发明实施例提供的硬件加速模块的示意性架构图,图中以3×3大小的卷积核为例,首先读取9个像素及所述9个像素的权重,然后进行非0值判断,判断完成后开始进行卷积运算,将卷积运算结果及模型偏差共同送入Relu函数进行计算,计算结果作为最终的卷积运算结果输出至外部DDR。对图9所示的每个过程都进行data flow操作,以减少时钟延时。
区别于现有技术,本发明提供的一种CNN加速装置应用于FPGA,所述的CNN加速装置包括:第一存储模块,用于通过DMA接口将完成边界填充的图像数据缓存进入行缓存区;运算模块,用于调用FPGA内置的硬件加速单元对所述的行缓存区内的数据进行卷积运算,所述的卷积运算的卷积核大小为N×N,每个卷积层的行缓存接口数量为N;第二存储模块,用于将完成卷积运算的像素缓存至缓存区,并通过DMA端口传输至外部DDR。本发明利用ARMCPU端进行图像预处理填充边界,比纯硬件填充判断更加省时;增加每个卷积层接口数量,能够有效减少行索引判断,减少延时;增加输入数据非0值判断模块,能够为后续卷积运算节省运算量,当层数较多时可减少延时。
本发明还提供了一种计算机可读存储介质。本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种CNN加速方法中的步骤。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种CNN加速方法中的步骤,因此,可以实现本发明实施例所提供的任一种CNN加速方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、获取其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令处理器完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质是非短暂性(英文:non-transitory)介质,例如随机存取存储器,只读存储器,快闪存储器,硬盘,固态硬盘,磁带(英文:magnetic tape),软盘(英文:floppy disk),光盘(英文:optical disc)及其任意组合。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (7)
1.一种CNN加速方法,用于FPGA,其特征在于,包括:
通过DMA接口将完成边界填充的图像数据缓存进入行缓存区,其中,在边界填充时,采用所述FPGA外部的ARM来处理,所述ARM从外部DDR调用待处理图像数据,所述ARM从外部DDR调用的待处理图像的大小为M1×M2,将要进行的卷积运算所采用的卷积核大小为N×N,将所述的待处理图像的四周各扩展出N-1个像素作为图像边界,且扩展出的所述图像边界为黑色,填充完边界后的图像大小为(M1+N-1)×(M2+N-1),且所述边界填充由ARM CPU端完成;
调用FPGA内置的硬件加速单元对所述的行缓存区内的数据进行卷积运算,所述的卷积运算的卷积核大小为N×N,每个卷积层的行缓存接口数量为N;
其中,所述卷积运算包括如下步骤:
在读取行缓存区内的数据过程中,增加所述卷积层接口的数量并同时读取,每个卷积层读取完成后,再向下移动一行;
对读取到的数据进行卷积运算,其中,从bram中抓取所需要的N2个像素及对应的权重;
通过非0值判断模块判断所述的N2个像素及对应的权重是否存在零值;
对抓取的像素矩阵及对应的权重矩阵进行卷积计算,其中,当所述的N2个像素及对应的权重不存在零值时,利用N2个乘法器对所述像素矩阵中的元素及所述权重矩阵中的元素进行乘法运算,然后利用N2-1个加法器对所述的N2个乘法器的输出数据相加,完成卷积运算,且在卷积运算的同时调用HLS pipeline unroll指令,并控制所述乘法运算和加法运算均在1clk内完成;当所述的N2个像素及对应的权重存在零值时,则在使用乘法器进行乘法运算时,忽略掉所述零值对应的相乘项;
将完成卷积运算的像素缓存至缓存区,并通过DMA端口传输至外部DDR;其中N为大于1的整数。
2.根据权利要求1所述的方法,其特征在于,调用FPGA内置的硬件加速单元对所述的行缓存区内的数据进行卷积运算之后,还包括:
对所述卷积运算及将完成卷积运算的像素缓存至缓存区进行数据流操作。
3.根据权利要求1所述的方法,其特征在于,所述的ARM CPU端的输入数据由ARM端处理系统从外部DDR调用。
4.一种应用如权利要求1-3中任一项所述的加速方法的CNN加速装置,用于FPGA,其特征在于,包括:
第一存储模块,用于通过DMA接口将完成边界填充的图像数据缓存进入行缓存区;
运算模块,用于调用FPGA内置的硬件加速单元对所述的行缓存区内的数据进行卷积运算,所述的卷积运算的卷积核大小为N×N,每个卷积层的行缓存接口数量为N;
第二存储模块,用于将完成卷积运算的像素缓存至缓存区,并通过DMA端口传输至外部DDR。
5.根据权利要求4所述的装置,其特征在于,所述的硬件加速单元包括:
抓取子单元,用于从bram中抓取所需要的N2个像素及对应的权重;
判断单子元,通过非0值判断模块判断所述的N2个像素及对应的权重是否存在零值;
计算子单元,用于对抓取的像素矩阵及对应的权重矩阵进行卷积计算:当所述的N2个像素及对应的权重不存在零值时,利用N2个乘法器对所述像素矩阵中的元素及所述权重矩阵中的元素进行乘法运算,然后利用N2-1个加法器对所述的N2个乘法器的输出数据相加,完成卷积运算;当所述的N2个像素及对应的权重存在零值时,则在使用乘法器进行乘法运算时,忽略掉所述零值对应的相乘项。
6.根据权利要求4或5所述的装置,其特征在于,还包括:
指令调用模块,用于调用HLS pipeline unroll指令;
且所述的调用HLS pipeline unroll指令与所述的卷积运算同时进行。
7.一种计算机可读存储介质,其特征在于,所述存储介质中存储有多条指令,所述指令适于由处理器加载以执行权利要求1-3中任一项所述的CNN加速方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010412121.2A CN111626405B (zh) | 2020-05-15 | 2020-05-15 | 一种cnn加速方法、加速装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010412121.2A CN111626405B (zh) | 2020-05-15 | 2020-05-15 | 一种cnn加速方法、加速装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111626405A CN111626405A (zh) | 2020-09-04 |
CN111626405B true CN111626405B (zh) | 2024-05-07 |
Family
ID=72271867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010412121.2A Active CN111626405B (zh) | 2020-05-15 | 2020-05-15 | 一种cnn加速方法、加速装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111626405B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112183732A (zh) * | 2020-10-22 | 2021-01-05 | 中国人民解放军国防科技大学 | 卷积神经网络加速方法、装置和计算机设备 |
CN112614043B (zh) * | 2020-12-16 | 2023-04-07 | 上海壁仞智能科技有限公司 | 用于卷积的方法、计算设备和计算机可读存储介质 |
CN112905954A (zh) * | 2020-12-28 | 2021-06-04 | 北京计算机技术及应用研究所 | 一种利用fpga bram的cnn模型卷积运算加速计算方法 |
CN112801864A (zh) * | 2021-02-26 | 2021-05-14 | 翱捷智能科技(上海)有限公司 | 一种在深度学习硬件中的图像填充方法及装置 |
CN114169514B (zh) * | 2022-02-14 | 2022-05-17 | 浙江芯昇电子技术有限公司 | 一种卷积硬件加速方法及卷积硬件加速电路 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201718358D0 (en) * | 2017-11-06 | 2017-12-20 | Imagination Tech Ltd | Exploiting sparsity in a neural network |
CN109447893A (zh) * | 2019-01-28 | 2019-03-08 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种卷积神经网络fpga加速中图像前处理方法及装置 |
CN110084739A (zh) * | 2019-03-28 | 2019-08-02 | 东南大学 | 一种基于cnn的画质增强算法的fpga并行加速系统 |
CN110321997A (zh) * | 2018-03-31 | 2019-10-11 | 北京深鉴智能科技有限公司 | 高并行度计算平台、系统及计算实现方法 |
WO2020087991A1 (zh) * | 2018-11-01 | 2020-05-07 | 山东浪潮人工智能研究院有限公司 | 一种卷积神经网络推理硬件加速方法及其装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180046903A1 (en) * | 2016-08-12 | 2018-02-15 | DeePhi Technology Co., Ltd. | Deep processing unit (dpu) for implementing an artificial neural network (ann) |
US10438115B2 (en) * | 2016-12-01 | 2019-10-08 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with memory layout to perform efficient 3-dimensional convolutions |
-
2020
- 2020-05-15 CN CN202010412121.2A patent/CN111626405B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201718358D0 (en) * | 2017-11-06 | 2017-12-20 | Imagination Tech Ltd | Exploiting sparsity in a neural network |
CN110321997A (zh) * | 2018-03-31 | 2019-10-11 | 北京深鉴智能科技有限公司 | 高并行度计算平台、系统及计算实现方法 |
WO2020087991A1 (zh) * | 2018-11-01 | 2020-05-07 | 山东浪潮人工智能研究院有限公司 | 一种卷积神经网络推理硬件加速方法及其装置 |
CN109447893A (zh) * | 2019-01-28 | 2019-03-08 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种卷积神经网络fpga加速中图像前处理方法及装置 |
CN110084739A (zh) * | 2019-03-28 | 2019-08-02 | 东南大学 | 一种基于cnn的画质增强算法的fpga并行加速系统 |
Non-Patent Citations (1)
Title |
---|
基于改进动态配置的FPGA卷积神经网络加速器的优化方法;陈朋等;《高技术通讯》;20200315(第03期);第240-243页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111626405A (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111626405B (zh) | 一种cnn加速方法、加速装置及计算机可读存储介质 | |
CN108229671B (zh) | 一种降低加速器外部数据存储带宽需求的系统和方法 | |
CN109886400B (zh) | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 | |
CN108416422B (zh) | 一种基于fpga的卷积神经网络实现方法及装置 | |
WO2018196863A1 (zh) | 卷积加速和计算处理方法、装置、电子设备及存储介质 | |
CN102687162B (zh) | 以像素速率进行图像处理的方法与装置 | |
CN111047008B (zh) | 一种卷积神经网络加速器及加速方法 | |
WO2020062312A1 (zh) | 信号处理装置和信号处理方法 | |
US20230196500A1 (en) | Image data storage method, image data processing method and system, and related apparatus | |
CN107749044A (zh) | 图像信息的池化方法及装置 | |
CN110147252A (zh) | 一种卷积神经网络的并行计算方法及装置 | |
US20210201122A1 (en) | Data processing methods, apparatuses, devices, storage media and program products | |
CN110490308B (zh) | 加速库的设计方法、终端设备及存储介质 | |
CN110232665B (zh) | 最大池化方法、装置、计算机设备及存储介质 | |
CN111814972B (zh) | 一种基于fpga的神经网络卷积运算加速方法 | |
CN109416743B (zh) | 一种用于识别人为动作的三维卷积装置 | |
CN116090518A (zh) | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 | |
CN113128673B (zh) | 数据处理方法、存储介质、神经网络处理器及电子设备 | |
CN110163793B (zh) | 卷积计算加速方法和装置 | |
CN112230884B (zh) | 目标检测硬件加速器及加速方法 | |
WO2019136747A1 (zh) | 反卷积器及其所应用的人工智能处理装置 | |
CN111027682A (zh) | 神经网络处理器、电子设备及数据处理方法 | |
CN110929854A (zh) | 一种数据处理方法、装置及硬件加速器 | |
CN117371498A (zh) | 数据处理方法、乘累加器、计算架构、设备及存储介质 | |
WO2021092941A1 (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 |