The invention discloses a 3D CNN acceleration method and system based on the Winograd algorithm. The method of implementing the method includes reading the sub block of the feature graph to be transformed from the input feature map, reading the convolution block from the weight cache, executing the output result and accumulating the 3D Winograd algorithm for the feature block Bin and the convolution kernel block. With the cumulative result, all input features in the input feature map are read, and if the read is finished, the cumulative results are written back to the output feature map caching Out. By extending the Winograd algorithm and applying it to the 3D CNN calculation, the invention uses the 2D Winograd algorithm to accelerate the CNN acceleration and achieves good results. It can effectively reduce the computational complexity of the CNN algorithm and improve the computing performance of the 3D CNN accelerator based on FPGA and the energy efficiency ratio.
【技术实现步骤摘要】
一种基于Winograd算法的3DCNN加速方法及系统
本专利技术涉及3DCNN(三维卷积神经网络)加速技术,具体涉及一种用于嵌入式平台下的、基于Winograd算法的3DCNN加速方法及系统。
技术介绍
随着人工智能领域的发展,三维卷积神经网络(Three-dimensionalConvolutionalNeuralNetwork,3DCNN)已被广泛运用于许多复杂的计算机视觉运用中,如视频分类、人体动作检测以及医疗图像分析等。与传统的二维卷积神经网络(Two-dimensionalConvolutionalNeuralNetwork,2DCNN)不同的是,3DCNN在处理过程中能够保留三维图像中的时间信息,因此在三维图像识别、分类领域能够取得比2DCNN更好的效果。随着CNN识别精度的提升,CNN网络结构越来越复杂,随之而来的是网络的计算和存储复杂度的不断提升。由于传统的CPU处理器已无法应对CNN网络强大的并行计算需求,各种类型的加速器如GPU、ASIC以及FPGA陆续被提出。在这些加速平台中,FPGA由于具备可重构能力以及大量的计算逻辑资源,渐渐得到了研究 ...
【技术保护点】
一种基于Winograd算法的3D CNN加速方法,其特征在于实施步骤包括:1)从输入特征图in中读取待变换的特征图子块Bin,从权值缓存w中读取卷积核子块Bw;2)对特征图子块Bin以及卷积核子块Bw执行3D Winograd算法输出结果Tp
【技术特征摘要】
1.一种基于Winograd算法的3DCNN加速方法,其特征在于实施步骤包括:1)从输入特征图in中读取待变换的特征图子块Bin,从权值缓存w中读取卷积核子块Bw;2)对特征图子块Bin以及卷积核子块Bw执行3DWinograd算法输出结果Tp1;3)对执行3DWinograd算法输出的结果Tp1进行累加,并输出累加结果Sum;4)判断是否输入特征图in中的所有输入特征图都读取完毕,如果尚未读取完毕,则跳转执行步骤1);否则,跳转执行步骤5);5)将累加结果Sum写回输出特征图缓存Out。2.根据权利要求1所述的基于Winograd算法的3DCNN加速方法,其特征在于,步骤1)中从输入特征图in中读取待变换的特征图子块Bin时,采用Z、R、C、M、N五重循环遍历的方式读取待变换的特征图子块Bin,其中Z,R,C分别表示输出特征图的深度、高度以及宽度,M表示输出特征图的数目,N表示输入特征图的数目,且读取待变换的特征图子块Bin采用的载入函数的函数表达式如式(1)所示,从权值缓存w中读取卷积核子块Bw采用的载入函数的函数表达式如式(2)所示;式(1)中,Bin[k][j][i]表示读取下标为k,j,i的特征图子块Bin,特征图子块Bin大小为n×n×n,dep,row,col分别表示某张特征图中所要读取子块的深度、高度以及宽度方向的索引值,in表示输入特征图in,S表示S表示卷积窗口的滑动步长,r表示卷积核的维度,W表示输入特征图宽度;Bw[k][j][i]=w[m0][n][k][j*r+i],0≤i,j,k<r.(2)式(2)中,Bw[k][j][i]表示读取下标为k,j,i的卷积核子块Bw,w表示权值缓存,m0,n表示卷积核的索引,权值缓存w中一共有M组权值、每组N个卷积核,r表示卷积核的维度。3.根据权利要求1所述的基于Winograd算法的3DCNN加速方法,其特征在于,步骤2)的详细步骤包括:2.1)对大小为n×n×n的特征图子块Bin的每一个平面依次进行列变换、行变换,得到变换后的特征图子块Tin;对特征图子块Tin进行顺时针90旋转使得特征图子块Tin中各数据位置重排,得到旋转后的特征图子块TinR;针对旋转后的特征图子块TinR的每一个平面进行列变换得到变换后大小为n×n×n的特征图子块Tin1;2.2)对大小为r×r×r的卷积核子块Bw的每一个平面依次进行列变换、行变换,得到变换后的卷积核子块Tw;对卷积核子块Tw进行顺时针90旋转使得卷积核子块Tw中各数据位置重排,得到旋转后的卷积核子块TwR;针对旋转后的卷积核子块TwR的每一个平面进行列变换得到变换后的大小为n×n×n的卷积核子块Tw1;2.3)针对大小完全一致的特征图子块Tin1和卷积核子块Tw1进行点乘操作,得到大小为n×n×n的点乘操作结果P;2.4)对大小为n×n×n的点乘操作结果P的每一个平面依次进行列变换、行变换,得到变换后的点乘操作结果Tp;对变换后的点乘操作结果Tp进行顺时针90旋转使得变换后的点乘操作结果Tp中各数据位置重排,得到旋转后的点乘操作结果TpR;针对旋转后的点乘操作结果TpR的每一个平面进行列变换得到大小为m×m×m的变换后点乘操作结果Tp1,作为执行3DWinograd算法输出的结果Tp1。4.根据权利要求3所述的基于Winograd算法的3DCNN加速方法,其特征在于,步骤2.1)中进行列变换的函数表达式如式(3)所示、行变换的函数表达式如式(4)所示;式(3)中,(x0x1x2x3)T表示待变换输入特征图子块的某一列,(x0'x1'x2'x3')T表示列变换后对应的特征图子块的列;式(4)中,(x0x1x2x3)表示待变换输入特征图子块的某一行,(...
【专利技术属性】
技术研发人员:沈俊忠,黄友,王泽龙,乔寓然,陈照云,曹壮,文梅,张春元,
申请(专利权)人:中国人民解放军国防科技大学,
类型:发明
国别省市:湖南,43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。