1.一种基于自适应ReLU的全频域卷积神经网络的硬件加速器,其特征在于,所述全频域卷积神经网络的ReLU激活层采用改进的激活函数,其空间域函数表达式为:2
R(x)=p0+p1×x+p2×x;
其中,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的全频域卷积神经网络的硬件加速方法,其特征在于,所述全频域卷积神经网络的ReLU激活层采用改进的激活函数,其空间域函数表达式为:2
R(x)=p0+p1×x+p2×x;
其中,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变换得到卷积神经网络的输出结果。
7.根据权利要求6所述的硬件加速方法,其特征在于,全频域卷积神经网络的所有ReLU激活层采用不同的参数p1和p2,均采用离线方式根据卷积神经网络训练中获得的ReLU激活层自身的输入范围信息,通过曲线拟合工具拟合得到,进而在主机CPU相应设置参数选址信号。
8.根据权利要求6所述的硬件加速方法,其特征在于,所述全频域卷积神经网络将BN层融合到卷积层,同时将卷积神经网络内部各层结构的执行顺序设置为:卷积层—>最大池化层—>ReLU激活层,并且在频域将卷积层与最大池化层合并。
9.根据权利要求6所述的硬件加速方法,其特征在于,当频域卷积模块将某个卷积层的第一个filter的结果存入共享片上内存时,频域ReLU模块立即从共享片上内存读取第一个filter的结果,并开始执行该卷积层的下一个ReLU激活层操作;当频域ReLU模块将某个ReLU激活层的第一个channel的结果存入共享片上内存、且该ReLU激活层的上一个卷积层执行完毕时,频域卷积模块立即从共享片上内存读取第一个channel的结果,并开始执行该ReLU激活层的下一个卷积层操作。
10.一种采用卷积神经网络进行图像分类的方法,使用训练好的卷积神经网络并采用权利要求6‑9任一所述硬件加速方法对图像进行分类。