CN112712174B - 全频域卷积神经网络的硬件加速器、加速方法和图像分类方法 - Google Patents
全频域卷积神经网络的硬件加速器、加速方法和图像分类方法 Download PDFInfo
- Publication number
- CN112712174B CN112712174B CN202011640252.2A CN202011640252A CN112712174B CN 112712174 B CN112712174 B CN 112712174B CN 202011640252 A CN202011640252 A CN 202011640252A CN 112712174 B CN112712174 B CN 112712174B
- Authority
- CN
- China
- Prior art keywords
- frequency domain
- layer
- relu
- neural network
- convolution
- 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
Images
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24133—Distances to prototypes
- G06F18/24137—Distances to cluster centroïds
- G06F18/2414—Smoothing the distance, e.g. radial basis function networks [RBFN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/40—Document-oriented image-based pattern recognition
- G06V30/41—Analysis of document content
- G06V30/413—Classification of content, e.g. text, photographs or tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/172—Classification, e.g. identification
Abstract
本发明公开了一种全频域卷积神经网络的硬件加速器、加速方法和图像分类方法,其中硬件加速器包括主计算机模块和FPGA加速模块,主计算机模块包括主机CPU和DDR,FPGA包括直接片外访问单元、共享片上内存、频域卷积模块和频域ReLU模块;主机CPU用于对数据进行FFT和IFFT变换,并由FPGA使用FFT变换后的权值对FFT变换后的输入数据在全频域进行卷积层和频域ReLU激活层操作,并将最终的操作结果返回给主机CPU进行IFFT变换,作为卷积神经网络的输出结果。本发明使卷积神经网络的卷积层和激活层均可在频域进行计算和FPGA上加速,避免频繁进行傅里叶变换和逆变换操作,提高卷积神经网络的硬件实现效率。
Description
技术领域
本发明属于人工智能和数据处理技术领域,具体涉及一种全频域卷积神经网络的硬件加速器、加速方法和图像分类方法。
背景技术
目前卷积神经网络(CNN)已经被广泛应用于图像分类,目标识别,人脸检测,语义分割等实时处理系统中。卷积神经网络主要由卷积层组成,另外还包含有池化层(下采样层),非线性激活函数,全连接层等。由于卷积神经网络算法的计算量相对于传统算法特别大,并且具有高度的并行性,基于现场可编程门阵列(FPGA)的硬件加速器得到了人们的广泛研究和应用。
由于CNN的主要计算量集中在卷积层,基于频域的卷积运算能够将空间域的矩阵卷积操作(convolution)转换成按元素乘法(element-wise product),从而极大的降低了卷积层的计算量。基于频域卷积的神经网络加速器得到了广泛关注。
然而由于激活函数的非线性,不能对应到频域的运算,因此已有的加速器即使在频域能够实现卷积加速,但是完成每层卷积操作后,需要回到空间域,进行池化层和非线性激活层的运算。这会带来更多的傅里叶变换和逆变换操作,从而降低算法的速度,使得加速比十分有限。
基于此,已有研究者提出了全频域卷积网络的技术,将卷积神经网络的全部运算在频域执行,从而避免重复的傅里叶变换和逆变换。然而已有方案仅仅解决了池化层在频域的运算问题。对于非线性激活函数,已有研究者利用线性函数近似,从而导致网络的非线性特点缺失,对精度带来影响。同时,线性近似仅仅能应用于sigmod,tanh等函数,并不能应用于被CNN广泛使用的ReLU函数。
发明内容
本发明提供一种全频域卷积神经网络的硬件加速器、加速方法和图像分类方法,使卷积神经网络的卷积层和激活层均可在均可在频域进行计算和FPGA上加速,避免频繁进行傅里叶变换和逆变换操作,提高卷积神经网络的硬件实现效率。
为实现上述技术目的,本发明采用如下技术方案:
一种全频域卷积神经网络的硬件加速器,所述全频域卷积神经网络的ReLU激活层采用改进的激活函数,其空间域函数表达式为:
R(x)=p0+p1×x+p2×x2;
其中,x为ReLU激活层的输入数据,p0为DC值,设置为p0=0,p1和p2为激活函数的2个参数;
所述硬件加速器包括主计算机模块和FPGA加速模块,所述主计算机模块包括主机CPU和DDR,所述FPGA包括直接片外访问单元、共享片上内存、频域卷积模块和频域ReLU模块;其中:
所述主机CPU,用于将输入数据进行FFT变换,并将FFT变换后的输入数据和离线FFT转换好的各卷积层的权值存入DDR;
所述直接片外访问单元,用于将DDR中存储的FFT变换后的输入数据及卷积神经网络各卷积层的权值,读取到共享片上内存;
所述频域卷积模块,用于从共享片上内存读取输入数据和第一卷积层的权值,并在频域执行卷积神经网络的第一卷积层操作,然后将操作结果存回共享片上内存;还用于从共享片上内存读取上一个ReLU激活层的操作结果和其他卷积层的权值,并执行卷积神经网络的其他卷积层操作,然后将操作结果存回共享片内存;其他卷积层是指卷积神经网络除第一卷积层之外的卷积层;
所述频域ReLU模块,用于从共享片上内存读取各卷积层的操作结果,并在频域执行其下一个ReLU激活层操作,然后将操作结果存回共享片上内存;所述频域ReLU模块在频域执行ReLU激活层操作表示为:
所述直接片外访问单元,还用于读取共享片上内存上最终得到的操作结果,并发送给DDR;
所述主机CPU,还用于从DDR上读取FPGA发送的操作结果,并进行IFFT变换得到卷积神经网络的输出结果。
在更优的技术方案中,所述频域ReLU模块将调优后的参数p1和p2分解为多个2的幂的和的形式,从而表达式中有关p1的乘法和有关p2的乘法操作,均转换为FPGA硬件上的移位与加法操作;所述频域ReLU模块包括点乘模块和加法器,所述点乘模块用于在频域执行卷积操作,且移位操作直接由FPGA的逻辑资源实现。
在更优的技术方案中,所述频域卷积模块由一系列乘法累加单元构成,用于在频域执行乘法累加以完成频域卷积层操作。
在更优的技术方案中,所述全频域卷积神经网络将BN层融合到卷积层,同时将卷积神经网络内部各层结构的执行顺序设置为:卷积层—>最大池化层—>ReLU激活层,并且在频域将卷积层与最大池化层合并。
在更优的技术方案中,当频域卷积模块将某个卷积层的第一个filter的结果存入共享片上内存时,频域ReLU模块立即从共享片上内存读取第一个filter的结果,并开始执行该卷积层的下一个ReLU激活层操作;当频域ReLU模块将某个ReLU激活层的第一个channel的结果存入共享片上内存、且该ReLU激活层的上一个卷积层执行完毕时,频域卷积模块立即从共享片上内存读取第一个channel的结果,并开始执行该ReLU激活层的下一个卷积层操作。
一种全频域卷积神经网络的硬件加速方法,所述全频域卷积神经网络的ReLU激活层采用改进的激活函数,其空间域函数表达式为:
R(x)=p0+p1×x+p2×x2;
其中,x为ReLU激活层的输入数据,p0为DC值,设置为p0=0,p1和p2为激活函数的2个参数;
所述硬件加速方法包括:
主机CPU将输入数据进行FFT变换,并将FFT变换后的输入数据和离线FFT转换好的各卷积层的权值一起存入DDR;
直接片外访问单元将DDR中存储的FFT变换后的输入数据及神经网络各卷积层的权值,读取到共享片上内存;
频域卷积模块从共享片上内存读取第一卷积层的权值和输入数据,并在频域执行第一卷积层操作,然后将操作结果存回共享片上内存;
频域ReLU模块从共享片上内存读取第一卷积层的操作结果,并在频域执行其第一ReLU激活层操作,然后将操作结果存回共享片上内存;所述频域ReLU模块在频域执行ReLU激活层操作表示为:
频域卷积模块从共享片上内存读取其他卷积层的权值和上一个ReLU激活层的操作结果,并在频域执行卷积神经网络的其他卷积层操作,然后将操作结果存回共享片内存;其他卷积层是指卷积神经网络除第一卷积层之外的卷积层;
频域ReLU模块从共享片上内存读取上一个卷积层的操作结果,并在频域执行卷积神经网络的其他ReLU激活层操作,然后将操作结果存回共享片上内存;
直接片外访问单元读取共享片上内存上最终得到的操作结果并发送给DDR;
主机CPU从DDR上读取FPGA发送的操作结果,并进行IFFT变换得到卷积神经网络的输出结果。
在更优的技术方案中,全频域卷积神经网络的所有ReLU激活层采用相同的参数p1和p2,所述参数p1和p2采用离线方式调优后由主机CPU传送至FPGA的频域ReLU模块;其中,参数p1和p2的调优方法为:利用卷积神经网络训练中获得的所有ReLU激活层的输入范围信息,通过曲线拟合工具拟合得到。
在更优的技术方案中,所述全频域卷积神经网络将BN层融合到卷积层,同时将卷积神经网络内部各层结构的执行顺序设置为:卷积层—>最大池化层—>ReLU激活层,并且在频域将卷积层与最大池化层合并。
在更优的技术方案中,当频域卷积模块将某个卷积层的第一个filter的结果存入共享片上内存时,频域ReLU模块立即从共享片上内存读取第一个filter的结果,并开始执行该卷积层的下一个ReLU激活层操作;当频域ReLU模块将某个ReLU激活层的第一个channel的结果存入共享片上内存、且该ReLU激活层的上一个卷积层执行完毕时,频域卷积模块立即从共享片上内存读取第一个channel的结果,并开始执行该ReLU激活层的下一个卷积层操作。
一种采用卷积神经网络进行图像分类的方法,使用训练好的卷积神经网络并采用上述任一所述硬件加速方法对图像进行分类。
有益效果
1、本发明采用改进的ReLU函数,不但保持了原始ReLU函数的非线性,而且可以有效地映射到频域计算,结合已有的频域卷积和频域池化函数,可实现全频域的卷积神经网络计算,从而避免了之前的方案中需要重复进行傅里叶变换和逆变换的问题;而且在频域不需要硬件乘法单元,只需要移位和加法操作,可以利用FPGA的逻辑资源实现,更有利于提升全频域卷积神经网络的硬件实现效率;
2、本发明中的频域卷积模块和频域ReLU模块支持并行和流水计算,最大的发挥了计算效率;
3、本发明将卷积神经网络的BN层融合进卷积层,频域将卷积层与最大池化层合并,在ReLU激活层之前即进行最大池化操作,从而可以大幅度降低ReLU激活层的输入数据数目,从而降低整个卷积神经网络网络在频域的计算量,计算效率更高。
附图说明
图1是本发明实施例所述硬件加速器的构成图;
图2是本发明实施例所述频域卷积模块的构成示意图;
图3是本发明实施例所述频域ReLU模块的构成示意图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例以本发明的技术方案为依据开展,给出了详细的实施方式和具体的操作过程,对本发明的技术方案作进一步解释说明。
实施例1
本实施例1提供一种基于FPGA的全频域卷积神经网络的硬件加速器,如图1所示,包括主计算机模块和FPGA加速模块,所述主计算机模块包括主机CPU和DDR,所述FPGA包括直接片外访问单元、共享片上内存、频域卷积模块和频域ReLU模块;其中:
所述主机CPU,用于将输入数据和卷积神经网络各卷积层的权值进行FFT变换,并将FFT变换后的输入数据和离线FFT转换好的各卷积层的权值存入DDR;还用于从DDR上读取FPGA发送的操作结果,并进行IFFT变换得到卷积神经网络的输出结果。另外,主机CPU还可以向FPGA加速模块提供时钟源,并发送控制指令。其中的输入数据可以是基于卷积神经网络进行图像识别的图像等数据。
所述直接片外访问单元,用于将DDR中存储的FFT变换后的输入数据及卷积神经网络各层的权值,读取到共享片上内存;还用于读取共享片上内存上最终得到的操作结果,并发送给DDR。
所述频域卷积模块由一系列MAC单元构成,如图2所示,用于从共享片上内存读取输入数据和第一卷积层的权值,并通过在频域执行乘法累加以执行卷积神经网络的第一卷积层操作,然后将操作结果存回共享片上内存;还用于从共享片上内存读取上一个ReLU激活层的操作结果和其他卷积层(卷积神经网络除第一卷积层之外的卷积层)的权值,并通过在频域执行乘法累加以执行卷积神经网络的其他卷积层操作,然后将操作结果存回共享片内存。
所述频域ReLU模块,用于从共享片上内存读取各卷积层的操作结果,并在频域执行其下一个ReLU激活层操作,然后将操作结果存回共享片上内存;
卷积神经网络中常用的空间域ReLU函数为F(x)=max(0,x),空间域的ReLU函数简单易实现,然而并没有对应到频域的函数形式。因此,本发明利用二次函数对现有的ReLU函数进行近似,具体形式为:
R(x)=p0+p1×x+p2×x2;
因此对应到本发明中,即频域ReLU模块执行ReLU激活层操作表示为:
本实施例中,所有ReLU激活层的参数p1和p2相同,首先利用网络训练中获得的所有ReLU激活层的输入范围信息,通过曲线拟合工具(Matlab Curve Fitting Toolbox)得到,然后考虑的频域卷积的复杂性,对p1和p2进行优化,具体为将其分解为多个2的幂的和的形式,从而将空间域函数表达式中有关p1的乘法和有关p2的乘法操作,均转换为FPGA硬件上的移位与加法操作;比如其中的p1表示为2-i+2-j,则p1×x转换为x>>i+x>>j,其中>>表示右移。最终,通过图3所示的点乘模块、若干加法器以及FPGA自身逻辑资源实现的移位操作,FPGA的频域ReLU模块即可执行完成ReLU激活层操作
本发明改进的ReLU激活函数不但保持了ReLU函数的非线性,而且可以有效地映射到频域计算,在频域不需要硬件乘法单元,只需要移位和加法操作,可以利用FPGA的逻辑资源实现,更有利于提升ReLU的硬件实现效率。而且,结合已有的频域卷积和频域池化,本发明的硬件加速器即可实现全频域的卷积神经网络计算,避免常用ReLU激活函数无法进行非线性近似到频域而需要针对激活层重复进行傅里叶变换和逆变换导致的加速比效率低的问题。
在更优的硬件加速器实施例中,当频域卷积模块将某个卷积层的第一个filter的结果存入共享片上内存时,频域ReLU模块立即从共享片上内存读取第一个filter的结果,并开始执行该卷积层的下一个ReLU激活层操作;当频域ReLU模块将某个ReLU激活层的第一个channel的结果存入共享片上内存、且该ReLU激活层的上一个卷积层执行完毕时,频域卷积模块立即从共享片上内存读取第一个channel的结果,并开始执行该ReLU激活层的下一个卷积层操作。因此,该更优实施例通过频域ReLU模块与频域卷积模块并行和流水工作,从而最大地发挥了计算效率。
在更优的实施例中,除了将卷积神经网络的BN层融合进卷积层之外,同时将卷积神经网络内部各层结构的执行顺序设置为:卷积层—>最大池化层—>ReLU激活层,替代现有的空间域执行顺序(即卷积层—>ReLU激活层—>最大池化层),并且在频域将卷积层与最大池化层合并,在ReLU激活层之前即进行最大池化操作,从而可以大幅度降低ReLU激活层的输入数据数目,从而降低整个卷积神经网络网络在频域的计算量。
实施例2
本实施例2提供一种全频域卷积神经网络的硬件加速方法,包括以下步骤:
步骤S1,主机CPU将输入数据和卷积神经网络各卷积层的权值进行FFT变换,并将FFT变换后的输入数据和离线FFT转换好的各卷积层的权值存入DDR;其中的输入数据可以是基于卷积神经网络进行图像识别的图像等数据。
步骤S2,直接片外访问单元将DDR中存储的FFT变换后的输入数据及神经网络各层的权值,读取到共享片上内存;
步骤S3,频域卷积模块从共享片上内存读取第一卷积层的权值和输入数据,并在频域执行第一卷积层操作,然后将操作结果存回共享片上内存;
步骤S4,频域ReLU模块从共享片上内存读取第一卷积层的操作结果,并在频域执行其第一ReLU激活层操作,然后将操作结果存回共享片上内存;
步骤S5,频域卷积模块从共享片上内存读取其他卷积层的权值和上一个ReLU激活层的操作结果,并在频域执行卷积神经网络的其他卷积层操作,然后将操作结果存回共享片内存;其他卷积层是指卷积神经网络除第一卷积层之外的卷积层;
步骤S6,频域ReLU模块从共享片上内存读取上一个卷积层的操作结果,并在频域执行卷积神经网络的其他ReLU激活层操作,然后将操作结果存回共享片上内存;
步骤S7,重复执行步骤S5和步骤S6,直到所有卷积层和ReLU激活层执行完毕,最后结果写入DDR;
步骤S8,直接片外访问单元读取共享片上内存上最终得到的操作结果并发送给DDR;
步骤S9,主机CPU从DDR上读取FPGA发送的操作结果,并进行IFFT变换得到卷积神经网络的输出结果。
在本实施例2中,卷积神经网络的ReLU激活层采用改进的激活函数,利用二次函数对现有的ReLU函数进行近似,具体形式为:
R(x)=p0+p1×x+p2×x2;
因此对应到本发明中,即频域ReLU模块执行ReLU激活层操作表示为:
全频域卷积神经网络的所有ReLU激活层采用相同的参数p1和p2,所述参数p1和p2采用离线方式调优后由主机CPU传送至FPGA的频域ReLU模块;其中,参数p1和p2的调优方法为:利用网络训练中获得的所有ReLU激活层的输入范围信息,通过曲线拟合工具(MatlabCurve Fitting Toolbox)得到,然后考虑的频域卷积的复杂性,对p1和p2进行优化,具体为将其分解为多个2的幂的和的形式,从而将空间域函数表达式中有关p1的乘法和有关p2的乘法操作,均转换为频域的移位与加法操作;比如其中的p1表示为2-i+2-j,则可将p1×x转换到频域表示x>>i+x>>j,其中>>表示右移。最终,通过图3所示的点乘模块、若干加法器以及FPGA自身逻辑资源实现的移位操作,频域ReLU模块即可执行完成ReLU激活层操作
本发明改进的ReLU激活函数不但保持了ReLU函数的非线性,而且可以有效地映射到频域计算,在频域不需要硬件乘法单元,只需要移位和加法操作,可以利用FPGA的逻辑资源实现,更有利于提升ReLU的硬件实现效率。另外结合已有的频域卷积和频域池化,本发明的硬件加速器即可实现全频域的卷积神经网络计算,避免常用ReLU激活函数无法进行非线性近似到频域而需要针对激活层重复进行傅里叶变换和逆变换导致的加速比效率低的问题。
另外,本实施例2中的频域卷积模块由一系列MAC单元构成,如图2所示,用于从共享片上内存读取输入数据和第一卷积层的权值,并通过在频域执行乘法累加以执行卷积神经网络的第一卷积层操作,然后将操作结果存回共享片上内存;还用于从共享片上内存读取上一个ReLU激活层的操作结果和其他卷积层(卷积神经网络除第一卷积层之外的卷积层)的权值,并通过在频域执行乘法累加以执行卷积神经网络的其他卷积层操作,然后将操作结果存回共享片内存。
在更优的实施例中,当频域卷积模块在步骤S3将第一卷积层的第一个filter的结果存入共享片上内存时(此时频域ReLU模块空置),或者当频域卷积模块在步骤S5将其他卷积层的第一个filter的结果存入共享片上内存、且该卷积层的上一个ReLU激活层通过步骤S4或步骤S6执行完毕(此时频域ReLU模块空置)时,频域ReLU模块在步骤S4或步骤S6立即从共享片上内存读取第一个filter的结果,并开始执行该卷积层的下一个ReLU激活层操作。
当频域ReLU模块在步骤S4或步骤S6将某个ReLU激活层的第一个channel的结果存入共享片上内存、且该ReLU激活层的上一个卷积层通过步骤S3或步骤S5执行完毕(即此时频域卷积模块空置)时,频域卷积模块立即从共享片上内存读取该ReLU激活层的第一个channel的结果,并重复步骤S5重新开始执行该ReLU激活层的下一个卷积层操作。
因此在该更优实施例中,步骤S4与步骤S3基本上可以实现重叠计算,同时步骤S6与步骤S5也基本上可以实现重叠计算,相当于频域ReLU模块与频域卷积模块并行和流水工作,从而最大地发挥了计算效率。
实施例3
本实施例3提供一种采用卷积神经网络进行图像分类的方法,使用训练好的卷积神经网络并采用实施例2所述的硬件加速方法对进行图像分类,具体可以是图像人脸识别、图像文字识别等。
以上实施例为本申请的优选实施例,本领域的普通技术人员还可以在此基础上进行各种变换或改进,在不脱离本申请总的构思的前提下,这些变换或改进都应当属于本申请要求保护的范围之内。
Claims (10)
1.一种全频域卷积神经网络的硬件加速器,其特征在于,所述全频域卷积神经网络的ReLU激活层采用改进的激活函数,其空间域函数表达式为:
R(x)=p0+p1×x+p2×x2;
其中,x为ReLU激活层的输入数据,p0为DC值,设置为p0=0,p1和p2为激活函数的2个参数;
所述硬件加速器包括主计算机模块和FPGA加速模块,所述主计算机模块包括主机CPU和DDR,所述FPGA包括直接片外访问单元、共享片上内存、频域卷积模块和频域ReLU模块;其中:
所述主机CPU,用于将输入数据进行FFT变换,并将FFT变换后的输入数据和离线FFT转换好的各卷积层的权值存入DDR;
所述直接片外访问单元,用于将DDR中存储的FFT变换后的输入数据及卷积神经网络各层的权值,读取到共享片上内存;
所述频域卷积模块,用于从共享片上内存读取输入数据和第一卷积层的权值,并在频域执行卷积神经网络的第一卷积层操作,然后将操作结果存回共享片上内存;还用于从共享片上内存读取上一个ReLU激活层的操作结果和其他卷积层的权值,并执行卷积神经网络的其他卷积层操作,然后将操作结果存回共享片内存;其他卷积层是指卷积神经网络除第一卷积层之外的卷积层;
所述频域ReLU模块,用于从共享片上内存读取各卷积层的操作结果,并在频域执行其下一个ReLU激活层操作,然后将操作结果存回共享片上内存;所述频域ReLU模块在频域执行ReLU激活层操作表示为:
所述直接片外访问单元,还用于读取共享片上内存上最终得到的操作结果,并发送给DDR;
所述主机CPU,还用于从DDR上读取FPGA发送的操作结果,并进行IFFT变换得到卷积神经网络的输出结果。
2.根据权利要求1所述的硬件加速器,其特征在于,所述频域ReLU模块将调优后的参数p1和p2分解为多个2的幂的和的形式,从而表达式中有关p1的乘法和有关p2的乘法操作,均转换为FPGA硬件上的移位与加法操作;所述频域ReLU模块包括点乘模块和加法器,所述点乘模块用于在频域执行卷积操作,且移位操作直接由FPGA的逻辑资源实现。
3.根据权利要求1所述的硬件加速器,其特征在于,所述频域卷积模块由一系列乘法累加单元构成,用于在频域执行乘法累加以完成频域卷积层操作。
4.根据权利要求1所述的硬件加速器,其特征在于,所述全频域卷积神经网络将BN层融合到卷积层,同时将卷积神经网络内部各层结构的执行顺序设置为:卷积层—>最大池化层—>ReLU激活层,并且在频域将卷积层与最大池化层合并。
5.根据权利要求1-4任一所述的硬件加速器,其特征在于,当频域卷积模块将某个卷积层的第一个filter的结果存入共享片上内存时,频域ReLU模块立即从共享片上内存读取第一个filter的结果,并开始执行该卷积层的下一个ReLU激活层操作;当频域ReLU模块将某个ReLU激活层的第一个channel的结果存入共享片上内存、且该ReLU激活层的上一个卷积层执行完毕时,频域卷积模块立即从共享片上内存读取第一个channel的结果,并开始执行该ReLU激活层的下一个卷积层操作。
6.一种全频域卷积神经网络的硬件加速方法,其特征在于,所述全频域卷积神经网络的ReLU激活层采用改进的激活函数,其空间域函数表达式为:
R(x)=p0+p1×x+p2×x2;
其中,x为ReLU激活层的输入数据,p0为DC值,设置为p0=0,p1和p2为激活函数的2个参数;
所述硬件加速方法包括:
主机CPU将输入数据进行FFT变换,并将FFT变换后的输入数据和离线FFT转换好的各卷积层的权值一起存入DDR;
直接片外访问单元将DDR中存储的FFT变换后的输入数据及神经网络各层的权值,读取到共享片上内存;
频域卷积模块从共享片上内存读取第一卷积层的权值和输入数据,并在频域执行第一卷积层操作,然后将操作结果存回共享片上内存;
频域ReLU模块从共享片上内存读取第一卷积层的操作结果,并在频域执行其第一ReLU激活层操作,然后将操作结果存回共享片上内存;所述频域ReLU模块在频域执行ReLU激活层操作表示为:
频域卷积模块从共享片上内存读取其他卷积层的权值和上一个ReLU激活层的操作结果,并在频域执行卷积神经网络的其他卷积层操作,然后将操作结果存回共享片内存;其他卷积层是指卷积神经网络除第一卷积层之外的卷积层;
频域ReLU模块从共享片上内存读取上一个卷积层的操作结果,并在频域执行卷积神经网络的其他ReLU激活层操作,然后将操作结果存回共享片上内存;
直接片外访问单元读取共享片上内存上最终得到的操作结果并发送给DDR;
主机CPU从DDR上读取FPGA发送的操作结果,并进行IFFT变换得到卷积神经网络的输出结果。
7.根据权利要求6所述的硬件加速方法,其特征在于,全频域卷积神经网络的所有ReLU激活层采用相同的参数p1和p2,所述参数p1和p2采用离线方式调优后由主机CPU传送至FPGA的频域ReLU模块;其中,参数p1和p2的调优方法为:利用卷积神经网络训练中获得的所有ReLU激活层的输入范围信息,通过曲线拟合工具拟合得到。
8.根据权利要求6所述的硬件加速方法,其特征在于,所述全频域卷积神经网络将BN层融合到卷积层,同时将卷积神经网络内部各层结构的执行顺序设置为:卷积层—>最大池化层—>ReLU激活层,并且在频域将卷积层与最大池化层合并。
9.根据权利要求6所述的硬件加速方法,其特征在于,当频域卷积模块将某个卷积层的第一个filter的结果存入共享片上内存时,频域ReLU模块立即从共享片上内存读取第一个filter的结果,并开始执行该卷积层的下一个ReLU激活层操作;当频域ReLU模块将某个ReLU激活层的第一个channel的结果存入共享片上内存、且该ReLU激活层的上一个卷积层执行完毕时,频域卷积模块立即从共享片上内存读取第一个channel的结果,并开始执行该ReLU激活层的下一个卷积层操作。
10.一种采用卷积神经网络进行图像分类的方法,使用训练好的卷积神经网络并采用权利要求6-9任一所述硬件加速方法对图像进行分类。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011640252.2A CN112712174B (zh) | 2020-12-31 | 2020-12-31 | 全频域卷积神经网络的硬件加速器、加速方法和图像分类方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011640252.2A CN112712174B (zh) | 2020-12-31 | 2020-12-31 | 全频域卷积神经网络的硬件加速器、加速方法和图像分类方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112712174A CN112712174A (zh) | 2021-04-27 |
CN112712174B true CN112712174B (zh) | 2022-04-08 |
Family
ID=75547977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011640252.2A Active CN112712174B (zh) | 2020-12-31 | 2020-12-31 | 全频域卷积神经网络的硬件加速器、加速方法和图像分类方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112712174B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110163370A (zh) * | 2019-05-24 | 2019-08-23 | 上海肇观电子科技有限公司 | 深度神经网络的压缩方法、芯片、电子设备及介质 |
CN110910405A (zh) * | 2019-11-20 | 2020-03-24 | 湖南师范大学 | 基于多尺度空洞卷积神经网络的脑肿瘤分割方法及系统 |
CN111542839A (zh) * | 2018-12-13 | 2020-08-14 | 深圳鲲云信息科技有限公司 | 一种反卷积神经网络的硬件加速方法、装置和电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11449729B2 (en) * | 2018-11-08 | 2022-09-20 | Arm Limited | Efficient convolutional neural networks |
US20200226473A1 (en) * | 2019-01-15 | 2020-07-16 | BigStream Solutions, Inc. | Systems, apparatus, methods, and architectures for heterogeneous precision acceleration of quantized neural networks |
-
2020
- 2020-12-31 CN CN202011640252.2A patent/CN112712174B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111542839A (zh) * | 2018-12-13 | 2020-08-14 | 深圳鲲云信息科技有限公司 | 一种反卷积神经网络的硬件加速方法、装置和电子设备 |
CN110163370A (zh) * | 2019-05-24 | 2019-08-23 | 上海肇观电子科技有限公司 | 深度神经网络的压缩方法、芯片、电子设备及介质 |
CN110910405A (zh) * | 2019-11-20 | 2020-03-24 | 湖南师范大学 | 基于多尺度空洞卷积神经网络的脑肿瘤分割方法及系统 |
Non-Patent Citations (1)
Title |
---|
F-E3D:FPGA-based Acceleration of an Efficient 3D Convolutional Neural Network for Human Action Recognition;Hongxiang Fan et al.;《2019 IEEE 30th International Conference on Application-specific Systems,Architectures and Processors(ASAP)》;20190905;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112712174A (zh) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
You et al. | Gate decorator: Global filter pruning method for accelerating deep convolutional neural networks | |
Feng et al. | Computer vision algorithms and hardware implementations: A survey | |
Liang et al. | Evaluating fast algorithms for convolutional neural networks on FPGAs | |
US8131659B2 (en) | Field-programmable gate array based accelerator system | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
US11763156B2 (en) | Neural network compression based on bank-balanced sparsity | |
CN109472356A (zh) | 一种可重构神经网络算法的加速装置及方法 | |
Tsai et al. | Implementation of FPGA-based accelerator for deep neural networks | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
CN107451097B (zh) | 国产申威26010众核处理器上多维fft的高性能实现方法 | |
CN110383300A (zh) | 一种计算装置及方法 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN209231976U (zh) | 一种可重构神经网络算法的加速装置 | |
Liu et al. | Toward full-stack acceleration of deep convolutional neural networks on FPGAs | |
CN109685208B (zh) | 一种用于神经网络处理器数据稀梳化加速的方法及装置 | |
CN112712174B (zh) | 全频域卷积神经网络的硬件加速器、加速方法和图像分类方法 | |
CN112749799B (zh) | 基于自适应ReLU的全频域卷积神经网络的硬件加速器、加速方法和图像分类方法 | |
Philip et al. | Review of FPGA-based accelerators of deep convolutional neural networks | |
CN116128019A (zh) | Transformer模型的并行训练方法及装置 | |
He et al. | ECS-SC: Long-tailed classification via data augmentation based on easily confused sample selection and combination | |
Yu et al. | Hardware implementation of CNN based on FPGA for EEG Signal Patterns Recognition | |
Gou et al. | Re-training and parameter sharing with the Hash trick for compressing convolutional neural networks | |
Chung et al. | Using quantization-aware training technique with post-training fine-tuning quantization to implement a mobilenet hardware accelerator | |
Sun et al. | Unicnn: A pipelined accelerator towards uniformed computing for cnns | |
Qasaimeh et al. | An efficient hardware architecture for sparse convolution using linear feedback shift registers |
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 |