基于自适应ReLU的全频域卷积神经网络的硬件加速器、加速方法和图像分类方法技术

技术编号:28322134 阅读:24 留言:0更新日期:2021-05-04 13:02
本发明专利技术公开了一种基于自适应ReLU的全频域卷积神经网络的硬件加速器、加速方法和图像分类方法,其中硬件加速器包括FPGA加速模块、主机CPU和DDR,FPGA包括直接片外访问单元、共享片上内存、频域卷积模块和频域ReLU模块;主机CPU对数据进行FFT和IFFT变换及传送各激活层的参数选址信号,FPGA使用FFT变换后的权值对FFT变换后的输入数据在全频域进行卷积层和ReLU激活层操作,其中各ReLU激活层的参数根据该层训练的输入信息范围进行设置,将最终的操作结果返回给主机CPU进行IFFT变换,作为卷积神经网络的输出结果。本发明专利技术可以提高卷积神经网络输出结果的精度和硬件实现效率。

【技术实现步骤摘要】
基于自适应ReLU的全频域卷积神经网络的硬件加速器、加速方法和图像分类方法
本专利技术属于人工智能和数据处理
,具体涉及一种基于自适应ReLU的的全频域卷积神经网络的硬件加速器、加速方法和图像分类方法。
技术介绍
目前卷积神经网络(CNN)已经被广泛应用于图像分类,目标识别,人脸检测,语义分割等实时处理系统中。卷积神经网络主要由卷积层组成,另外还包含有池化层(下采样层),非线性激活函数,全连接层等。由于卷积神经网络算法的计算量相对于传统算法特别大,并且具有高度的并行性,基于现场可编程门阵列(FPGA)的硬件加速器得到了人们的广泛研究和应用。由于CNN的主要计算量集中在卷积层,基于频域的卷积运算能够将空间域的矩阵卷积操作(convolution)转换成按元素乘法(element-wiseproduct),从而极大的降低了卷积层的计算量。基于频域卷积的神经网络加速器得到了广泛关注。然而由于激活函数的非线性,不能对应到频域的运算,因此已有的加速器即使在频域能够实现卷积加速,但是完成每层卷积操作后,需要回到空间域,进行池化层和非线性激活层的运算。这会带来更多的傅里叶变换和逆变换操作,从而降低算法的速度,使得加速比十分有限。基于此,已有研究者提出了全频域卷积网络的技术,将卷积神经网络的全部运算在频域执行,从而避免重复的傅里叶变换和逆变换。然而已有方案仅仅解决了池化层在频域的运算问题。对于非线性激活函数,已有研究者利用线性函数近似,从而导致网络的非线性特点缺失,对精度带来影响。同时,线性近似仅仅能应用于sigmod,tanh等函数,并不能应用于被CNN广泛使用的ReLU函数。
技术实现思路
本专利技术提供一种基于自适应ReLU的全频域卷积神经网络的硬件加速器、加速方法和图像分类方法,可以提高卷积神经网络输出结果的精度和硬件实现效率。为实现上述技术目的,本专利技术采用如下技术方案:一种基于自适应ReLU的全频域卷积神经网络的硬件加速器,所述全频域卷积神经网络的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转换好的各卷积层的权值以及各ReLU激活层的参数选址信号存入DDR;所述直接片外访问单元,用于将DDR中存储的FFT变换后的输入数据、卷积神经网络各卷积层的权值和各ReLU激活层的参数选址信号,读取到共享片上内存;所述频域卷积模块和频域ReLU模块,共用所述共享片上内存进行数据存取,分别在频域执行卷积层操作和激活层操作;所述频域ReLU模块在频域执行ReLU激活层操作表示为:式中,F代表傅里叶变换,代表卷积操作;所述频域ReLU模块包括参数配置单元,用于根据各ReLU激活层的参数选址信号,分别对不同ReLU激活层的参数p1和p2进行相应设置;所述直接片外访问单元,还用于读取共享片上内存上最终得到的操作结果,并发送给DDR;所述主机CPU,还用于从DDR上读取FPGA发送的操作结果,并进行IFFT变换得到卷积神经网络的输出结果。在更优的技术方案中,所述频域ReLU模块将每个ReLU激活层的参数p1和p2均分解为多个2的幂的和的形式,从而表达式中有关p1的乘法和有关p2的乘法操作,均转换为FPGA硬件上的移位与加法操作;所述频域ReLU模块包括点乘模块和加法器,所述点乘模块用于在频域执行卷积操作,且移位操作直接由FPGA的逻辑资源实现。在更优的技术方案中,全频域卷积神经网络的所有ReLU激活层采用不同的参数p1和p2,均采用离线方式根据卷积神经网络训练中获得的ReLU激活层自身的输入范围信息,通过曲线拟合工具拟合得到,进而在主机CPU相应设置参数选址信号。在更优的技术方案中,所述全频域卷积神经网络将BN层融合到卷积层,同时将卷积神经网络内部各层结构的执行顺序设置为:卷积层—>最大池化层—>ReLU激活层,并且在频域将卷积层与最大池化层合并。在更优的技术方案中,当频域卷积模块将某个卷积层的第一个filter的结果存入共享片上内存时,频域ReLU模块立即从共享片上内存读取第一个filter的结果,并开始执行该卷积层的下一个ReLU激活层操作;当频域ReLU模块将某个ReLU激活层的第一个channel的结果存入共享片上内存、且该ReLU激活层的上一个卷积层执行完毕时,频域卷积模块立即从共享片上内存读取第一个channel的结果,并开始执行该ReLU激活层的下一个卷积层操作。一种基于FPGA的全频域卷积神经网络的硬件加速方法,所述全频域卷积神经网络的ReLU激活层采用改进的激活函数,其空间域函数表达式为:R(x)=p0+p1×x+p2×x2;其中,x为ReLU激活层的输入数据,p0为DC值,设置为p0=0,p1和p2为ReLU函数的2个参数;所述硬件加速方法包括:主机CPU将卷积神经网络的输入数据进行FFT变换,并将FFT变换后的输入数据和离线FFT转换好的各卷积层的权值一起存入DDR;直接片外访问单元将DDR中存储的FFT变换后的输入数据、神经网络各卷积层的权值以及各ReLU激活层的参数选址信号,读取到共享片上内存;频域卷积模块从共享片上内存读取第一卷积层的权值和输入数据,并在频域执行第一卷积层操作,然后将操作结果存回共享片上内存;频域ReLU模块从共享片上内存读取第一卷积层的操作结果和第一ReLU激活层的参数选址信号,并在频域执行其第一ReLU激活层操作,然后将操作结果存回共享片上内存;频域卷积模块从共享片上内存读取其他卷积层的权值和上一个ReLU激活层的操作结果,并在频域执行卷积神经网络的其他卷积层操作,然后将操作结果存回共享片内存;其他卷积层是指卷积神经网络除第一卷积层之外的卷积层;频域ReLU模块从共享片上内存读取其他ReLU激活层的参数选址信号和上一个卷积层的操作结果,并在频域执行卷积神经网络的其他ReLU激活层操作,然后将操作结果存回共享片上内存;其中,频域ReLU模块在频域执行各ReLU激活层操作,具体为:首先根据各ReLU激活层的参数选址信号确定参数p1和p2,然后基于确定的参数p1和p2执行各ReLU激活层操作:式中,F代表傅里叶变换,代表卷积操作;直接片外访问单元读取共享片上内存上最终得到的操作结果并发送给DDR;主机CPU从DDR上读取FPGA发送的操作结果,并进行IFFT变换得到卷积神经网络的输出结果。在更优的技术方案中,全频本文档来自技高网
...

【技术保护点】
1.一种基于自适应ReLU的全频域卷积神经网络的硬件加速器,其特征在于,所述全频域卷积神经网络的ReLU激活层采用改进的激活函数,其空间域函数表达式为:/nR(x)=p0+p1×x+p2×x

【技术特征摘要】
1.一种基于自适应ReLU的全频域卷积神经网络的硬件加速器,其特征在于,所述全频域卷积神经网络的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转换好的各卷积层的权值以及各ReLU激活层的参数选址信号存入DDR;
所述直接片外访问单元,用于将DDR中存储的FFT变换后的输入数据、卷积神经网络各卷积层的权值和各ReLU激活层的参数选址信号,读取到共享片上内存;
所述频域卷积模块和频域ReLU模块,共用所述共享片上内存进行数据存取,分别在频域执行卷积层操作和激活层操作;所述频域ReLU模块在频域执行ReLU激活层操作表示为:



式中,F代表傅里叶变换,代表卷积操作;
所述频域ReLU模块包括参数配置单元,用于根据各ReLU激活层的参数选址信号,分别对不同ReLU激活层的参数p1和p2进行相应设置;
所述直接片外访问单元,还用于读取共享片上内存上最终得到的操作结果,并发送给DDR;
所述主机CPU,还用于从DDR上读取FPGA发送的操作结果,并进行IFFT变换得到卷积神经网络的输出结果。


2.根据权利要求1所述的硬件加速器,其特征在于,所述频域ReLU模块将每个ReLU激活层的参数p1和p2均分解为多个2的幂的和的形式,从而表达式中有关p1的乘法和有关p2的乘法操作,均转换为FPGA硬件上的移位与加法操作;所述频域ReLU模块包括点乘模块和加法器,所述点乘模块用于在频域执行卷积操作,且移位操作直接由FPGA的逻辑资源实现。


3.根据权利要求1所述的硬件加速器,其特征在于,全频域卷积神经网络的所有ReLU激活层采用不同的参数p1和p2,均采用离线方式根据卷积神经网络训练中获得的ReLU激活层自身的输入范围信息,通过曲线拟合工具拟合得到,进而在主机CPU相应设置参数选址信号。


4.根据权利要求1所述的硬件加速器,其特征在于,所述全频域卷积神经网络将BN层融合到卷积层,同时将卷积神经网络内部各层结构的执行顺序设置为:卷积层—>最大池化层—>ReLU激活层,并且在频域将卷积层与最大池化层合并。


5.根据权利要求1-4任一所述的硬件加速器,其特征在于,当频域卷积模块将某个卷积层的第一个filter的结果存入共享片上内存时,频域ReLU模块立即从共享片上内存读取第一个filter的结果,并开始执行该卷积层的下一个ReLU激活层操作;当频域ReLU模块将某个ReLU激活层的第一个channel的结果存入共享片上内存、且该ReLU激活层的上一个卷积层执行完毕时,频域卷积模块立即从共享片上内存读取第一个channel的结果,并开始执行该ReLU激活层的下一个卷积层操作。


6.一种基于FPGA的全频域卷积神经网...

【专利技术属性】
技术研发人员:刘双龙
申请(专利权)人:湖南师范大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1