一种基于CNN的画质增强算法的FPGA并行加速系统的制作方法

文档序号:18323537发布日期:2019-08-03 10:44阅读:229来源:国知局
一种基于CNN的画质增强算法的FPGA并行加速系统的制作方法

本发明涉及一种基于cnn的画质增强算法的fpga并行加速系统,属于数字集成电路技术领域。



背景技术:

随着计算机、互联网、多媒体技术的飞速发展,数字图像、视频技术在现实生活中得到了广泛的应用。在所有的这些应用中,包括视频会议、数码相机、移动视频、图像或视频的网络传输等等都需要非常高效的数据压缩方法来把大量的视觉信息压缩到有限的物理带宽之内,同时保证在数据接收端重构回来的数据保留相当的质量。这样的要求对于现存的压缩编码方法和标准来说都是一个巨大的挑战,因为图像或视频在高压缩比的情况下会不可避免得图像质量的退化,如振铃、模糊、方块效应等,这种退化对于敏感的人眼视觉系统来说甚至是不可忍受的。许多学者在提高低比特率下压缩图像或视频方面做了大量工作,以目前主流的高性能视频编码(highefficiencyvideocoding,hevc)技术为例,目前常用的处理技术主要包括去块算法(deblocking)和样本自适应偏移算法(sampleadaptiveoffset,sao),

随着近几年卷积神经网络在诸如图片分类、物品识别等较高抽象层次的机器视觉任务上不断取得成功,越来越多的研究者开始尝试将cnn应用到压缩图像的后处理领域并取得了良好的效果。最近,中国科学技术大学的戴元英等人在前者的基础上提出了一种新颖的可变尺寸卷积神经网络(vrcnn)结构用于jpeg图像的后处理。与前人的工作相比,该网络具有三大特点

1.在同一网络层中包含不同尺寸的卷积核从而可以提取不同层次的图像特征,并简化了网络结构;

2.网络中引入了残差学习层(residue-learninglayer)大幅缩短训练复杂度;

3.该网络采用标准自然图像数据集来进行训练和推理,具有良好的适应性;

实验结果表明,该算法相比于标准的sao算法和deblocking算法平均降低了4.6%的比特率,同时与之前提出的网络结构相比也在图像信噪比、网络结构复杂度以及网络的延展性方面占据优势。

目前,卷积神经网络主要基于通用处理器(centralprocessingunit,cpu),通过软件方式实现。事实上,cnn作为一种前馈网络结构,层与层之间具有高度的独立性——各层网络计算独立,层间无数据反馈。因此,cnn是一种高度并行的网络结构,通用处理器为执行逻辑处理和事务处理而优化的特性并不适合用来挖掘cnn的并行性。目前主流的硬件加速方案是采用专用图形处理器(graphicsprocessingunit,gpu)对卷积神经网络进行加速,gpu适用于大量数据的并行运算,具有高带宽、高主频、高并行的优点,但gpu的功耗相对较高、体积较大,无法适用于实时的嵌入式视频图像应用场景。

现场可编程门阵列(fieldprogrammablefieldarray,fpga)是一种计算密集型加速器件,通过将软件算法映射到并行独立的硬件电路上进行加速,各电路模块之间独立运行,能够最大限度地挖掘算法内在的并行性。fpga芯片具有高度的可配置性,通过硬件描述语言(hdl)或者高层次综合技术(hls)能够快速将不同的算法部署到芯片,与gpu等其他硬件加速方式相比,fpga具有低功耗优势,能够适用于对实时性要求较高的嵌入式图像应用场景。虽然采用fpga进行硬件加速的技术已经日趋成熟,但是目前还未出现将fpga应用到有损压缩图像的后处理过程的文献和报道。



技术实现要素:

本发明所要解决的技术问题是,针对卷积神经网络存储密集和计算密集性特征以及视频图像后处理的实时性要求,提供一种基于cnn的画质增强算法的fpga并行加速系统,采用fpga硬件加速的方法实现基于cnn的画质增强算法,通过采用并行优化和流水线优化方式,使得图片的画质增强后处理速度相对cpu计算能够显著提升,在较低的工作频率下能够保证单帧图片处理速度保持在毫秒(ms)级别,且功耗大幅降低,能够满足实际嵌入式场景下的实时高速的视频图像应用需求。

本发明具体采用以下技术方案解决上述技术问题:

一种基于cnn的画质增强算法的fpga并行加速系统,包括:中央处理器、dma控制器、总线模块、加速器ip核模块、片上存储器bram、片外存储器sdram;所述中央处理器对训练完成的卷积神经网络模型的权值数据进行定点量化,得到量化完成的权值数据并存储在片外sdram中;所述dma控制器在中央处理器的控制下将预先存储在片外sdram的权值数据和待处理的视频图像数据通过总线模块搬运至片上存储器bram进行分块存储,及在加速器ip核模块计算结束后将计算结果从片上存储器bram搬运至片外存储器sdram进行存储;所述加速器ip核模块采用乘法器并行优化和维度变换、流水线化的行缓存和共享padding设计的优化操作,并在计算过程中由中央处理器进行启动及从片上存储器bram中取得权值数据和待处理的视频图像数据进行网络的正向计算得到输出图像,并通过中央处理器控制dma控制器将输出图像搬运至片外存储器sdram。

进一步地,作为本发明的一种优选技术方案:所述加速器ip核模块构建的卷积神经网络模型包括1个输入层、1个输出层、4个卷积层以及1个残差层。

进一步地,作为本发明的一种优选技术方案,所述卷积层对输入的待处理视频图像数据卷积后由每一个卷积核通道输出图像,计算如下:

其中,oi,j,k表示输出特征图像;i、j、k用于表示当前像素点在输出特征图像中的位置;ck表示输出图像通道数,hk和wk表示输出图像的高度和宽度大小,bk表示网络偏置参数,wh,m,c和xi+h,j+m,c分别表示卷积神经网络模型的权值和输入数据;h、m、c分别表示当前参与计算的权值数据在权值矩阵中的位置。

进一步地,作为本发明的一种优选技术方案,所述残差层的输出图像计算如下:

y=f(x)+x

其中,x表示网络的输入,y表示网络的输出,f(x)表示前一层的输出结果。

进一步地,作为本发明的一种优选技术方案,所述加速器ip核模块进行乘法器并行优化通过插入循环展开指令使多通道计算并行。

进一步地,作为本发明的一种优选技术方案,所述加速器ip核模块对输入的待处理视频图像数据进行维度变换后的维度顺序依次为图像高度、图像宽度、输入通道。

进一步地,作为本发明的一种优选技术方案,所述加速器ip核模块进行流水线化的行缓存使得网络的下一层能在当前层计算完成之前就开始计算。

进一步地,作为本发明的一种优选技术方案,所述加速器ip核模块采用流水线化的行缓存将计算所需的缓存空间大小降低为:h*w*c,其中h、w、c分别表示图像的高度和宽度、图像通道数。

本发明采用上述技术方案,能产生如下技术效果:

本发明的基于cnn的画质增强算法的fpga并行加速系统,针对卷积神经网络的计算密集型特征,基于fpga对所涉及的算法进行并行计算和流水线优化设计。针对该算法模型具有的可变尺寸卷积的特点,本发明对输入特征图的数据维度进行转换,将并行计算引擎在输入通道的维度展开,同时对于存储架构采取行缓存和最大padding设计,实现了fpga资源利用和运算效率的平衡。

相比于现有技术,本发明的有益效果在于:1.采用并行优化和流水线优化方式,使得在相同的工作频率下,对于图片的画质增强处理速度相对cpu计算提升了64倍,能够满足实时的视频图像后处理速度要求;2.本发明采用fpga芯片进行算法的实现和部署,相对于同等算力的gpu等硬件实现方式,功耗大幅降低,能够满足实际嵌入式场景下的视频图像应用需求。3.开发过程采用最新的高层次综合技术,使得整个系统的开发周期相对传统的基于硬件描述语言的开发流程缩短了2/3。

附图说明

图1为本发明的画质增强算法硬件实现方法流程图。

图2为本发明所要进行加速的算法网络结构示意图。

图3为本发明针对卷积层所采用的并行优化计算架构示意图。

图4为本发明所涉及的流水线优化原理示意图。

图5为本发明的硬件系统架构示意图。

图6为本发明所涉及的加速器的运行流程图。

图7为本发明所涉及的输入图像维度转换过程示意图。

图8为本发明所涉及的卷积层最大padding设计示意图。

具体实施方式

下面结合说明书附图对本发明的实施方式进行描述。

如图1所示,本发明设计一种基于cnn的画质增强算法的fpga并行加速系统,主要包括:中央处理器、dma控制器、总线模块、加速器ip核模块、片上存储器bram、片外存储器sdram。各模块主要设计考虑如下:

中央处理器,在该系统中主要用于对系统运行流程进行控制,包括控制加速器的启动与停止、对加速器进行配置、加速器中断处理、以及控制dma完成数据的搬运。

加速器ip核模块,本发明最核心的运算系统,在上述第三点的基础上设计得到,主要由fpga内部的lut和dsp资源组成。计算时ip核的各计算层从前一层得到输入特征图像并从片上存储系统中取出网络权值进行网络的正向计算。

dma控制器,用于协助cpu完成大量数据的搬运工作,本设计中主用于在cpu的控制下将片外权值数据和输入图像数据搬运至片上存储模块进行缓存。

总线模块,在基于axi总线协议的系统中,用于完成多主机总线仲裁和从机地址译码。

片外存储器sdram,高带宽的片外数据接口,外接高速sd卡,用作权值数据和图像数据输入输出加速器的数据通路。

基于上述结构,搭建soc硬件控制系统,并在软件端对加速器运行进行实时控制,本发明所设计的硬件加速系统的运行流程如图2所示,主要包含以下步骤:

步骤1、本发明所涉及中央处理器对训练完成的卷积神经网络模型的权值数据进行定点量化,及将量化完成的权值数据存储在片外sdram中;

步骤2、所述dma控制器在中央处理器的控制下将预先存储在片外sdram的权值数据和待处理的视频图像数据通过总线模块搬运至片上存储器bram进行分块存储。所述加速器ip核模块在设计过程中采用乘法器并行优化和维度变换、流水线化的行缓存和共享padding设计的优化操作。

即针对本发明所涉及的加速系统中加速器ip核模块进行硬件结构优化设计。主要采用乘法器并行优化、特征图维度转换、流水线优化以及存储结构优化。其中,针对存储结构的优化操作主要包括:1)存储分块;2)行缓存器设计;3)共享padding设计。

步骤3、以及,在将权值数据和待处理的视频图像数据搬运至片上存储器后,所述加速器ip核由中央处理器控制启动并从片上存储器bram中取得权值数据和待处理的视频图像数据进行网络的正向计算,最终计算得到的整张输出图像通过中央处理器控制dma控制器将输出图像搬运至片外存储器sdram。

其中,所述步骤1中,利用所涉及中央处理器对训练完成的卷积神经网络模型的权值数据进行定点量化。如图3所示,为本发明所要进行加速算法的卷积神经网络模型结构示意图,该卷积神经网络模型包括1个输入层、1个输出层、采用relu函数进行激活的4个卷积层以及1个残差层。其中各层具体的网络参数如下:

输入层:35×35

卷积层1:64kernels,eachwithsize5×5;

卷积层2-1:16kernels,eachwithsize5×5;

卷积层2-2:32kernels,eachwithsize3×3;

卷积层3-1:16kernels,eachwithsize3×3;

卷积层3-2:32kernels,eachwithsize1×1;

卷积层4:1kernels,eachwithsize3×3;

残差层:35×35inputsize,35×35outputsize;

输出层:35×35;

本发明所涉及的卷积神经网络算法模型主要包含以下特点:1.在同一网络层中包含不同尺寸的卷积核从而可以提取不同层次的图像特征,并降低了网络深度;2.网络中引入了残差学习层residue-learninglayer大幅缩短训练复杂度;

其中,所述步骤2中,对加速器ip核模块进行硬件电路设计。由于本发明采用最新的高层次综合技术进行画质增强算法的快速部署,主要涉及各个网络计算层的软件实现:

卷积层。卷积层在网络模型中的作用主要提取输入图像特征,通过将一系列k×k大小的卷积核应用于输入图像,卷积完成后每一个卷积核通道输出一张特征图作为后续网络层的输入,具体的计算过程如下:

其中,oi,j,k表示输出特征图像;i,j,k用于表示当前像素点在输出特征图像中的位置;ck表示输出图像通道数,hk和wk表示输出图像的高度和宽度大小,bk表示网络偏置参数,wh,m,c和xi+h,j+m,c分别表示卷积神经网络模型的权值和输入数据;h、m、c分别表示当前参与计算的权值数据在权值矩阵中的位置。

激活函数。激活函数的引入是为了增加网络的非线性,激活函数通常跟随在卷积层后面。常用的激活函数有很多,包括sigmoid、tanh、relu等,本发明所涉及的网络模型采用的是线性修正单元rectifiedlinearunit,relu,其计算过程如下:

f(x)=max(0,x)

残差层。残差层的加入主要是为了使得模型训练能够更快地收敛,本发明所涉及的网络最后一层残差层的主要计算过程是将前一层的输出特征图与原始图像输入按像素相加,从而将卷积层的输出特征图转化为可视化的输出图像,其输出结果可表示为:

y=f(x)+x

其中,x表示网络的输入,y表示网络的输出,f(x)表示前一层的输出结果。

然后,所述步骤2中针对加速器ip核模块进行的硬件架构优化操作具体为:本发明所涉及的网络不包含全连接层,整个网络中乘加计算最密集耗时最多的层是各个卷积层,因此本发明在硬件单元设计过程中主要针对卷积层进行优化,图4为本发明针对卷积层所采用的并行优化计算架构示意图,包含以下几点优化操作:

(1)资源并行优化。卷积神经网络中的卷积计算具有很高的并行性,包括卷积通道并行、输入通道并行以及卷积核计算并行等,为了充分发挥fpga芯片的并行计算优势,本发明对所设计的卷积计算层的硬件计算架构进行了乘法器并行设计。

本发明主要针对卷积层的层内并行性进行优化,在输入通道维度进行乘法器并行优化,通过插入循环展开loopunroll指令使得综合器将原来单引擎顺序执行的算法综合为多计算引擎并行的硬件电路,从而大幅提升计算效率。与传统的卷积神经网络不同,本发明所涉及的网络具有可变尺寸卷积的特点,不是适合在卷积核内部进行并行计算设计。

(2)特征图维度转换。本发明对输入特征图的数据维度进行了转换。如图5所示,原始的输入特征图维度顺序依次为输入通道、图像高度、图像宽度,经过维度转换后维度顺序依次为图像高度、图像宽度、输入通道。经过上述维度转换,本发明在输入通道维度将乘加计算引擎并行展开,实现计算加速。本发明通过控制循环展开指令中的展开因子来设计卷积层的并行度。结合本发明所涉及的网络模型特点,各卷积层的展开维度及展开因子如下:

卷积层1:unrolloutputchanneldimension,unrollfactor=64;

卷积层2-1:unrollinputchanneldimension,unrollfactor=64;

卷积层2-2:unrollinputchanneldimension,unrollfactor=64;

卷积层3-1:unrollinputchanneldimension,unrollfactor=48;

卷积层3-2:unrollinputchanneldimension,unrollfactor=48;

卷积层4:unrollinputchanneldimension,unrollfactor=48;

通过控制各层的循环展开因子,能够使得各层的计算时间大致相同,能够使得各层在以流水线方式运行时达到最大效率。

(3)流水线优化。如图6所示,一次完整的卷积计算过程包含多个运算步骤,其中包含多次访存、乘法运算、加法运算等,为了提高硬件电路的资源利用率和整个计算单元的运算效率,本发明对如图6所示的运算架构采取了流水线并行优化。如图6所示,未采用流水线优化的电路在运行过程中,下一次计算过程必须在上一次计算的所有操作完成后才能开始执行,而所述加速器ip核模块进行流水线化的行缓存使得网络的下一层能在当前层计算完成之前就开始计算过程,从而提高电路的总体运算效率。本发明通过在卷积实现过程中插入流水线优化指令,约束综合器在不同运算单元之间插入缓冲器实现整个计算层的流水线运行。结合上述的并行计算和存储分块优化,该加速器能够实现每个时钟周期输出一个特征图像素点。

(4)存储结构优化设计,主要包含三种操作:(a)存储分块;(b)行缓存器设计;(c)共享padding设计。存储单元设计的目的主要是:1)保证存储系统的访存带宽能够匹配计算单元的计算吞吐,2)由于fpga片上存储资源有限,需要优化存储结构以节省片上存储空间。本发明主要采用了以下存储优化设计:

(a)存储分块优化。在上述并行计算架构设计的基础上,可以计算出整个加速器理论上的计算吞吐如下:

对于以上计算吞吐,如果采用单块ram进行结果缓存,那么其访存速度将成为制约整个加速器运行速度的瓶颈所在。为了更好得匹配计算模块的运行速度,本设计采用数组分块arraypartion技术对缓存权值和中间结果的片上存储进行分块。如图4所示,将权值和输入数据分块存储在片上bram中,计算时各计算引擎分别从对应的bram中读取权值和数据,从而满足加速器对于访存带宽的要求。通常将数组在进行循环展开优化的维度进行分块,并且数组分块因子和上述循环展开因子相同,从而有效解决了单块ram访存速度的瓶颈问题。片上的权值数据和图像数据采用了分块存储的方式,在计算单元进行网络正向计算过程中,分块存储设计能够保证访存速度能够匹配模块计算吞吐。

(b)行缓存器设计。图5为本发明说涉及的针对输入图像数据进行维度转换的示意图,其中h、w、c、k分别表示输入特征图像的高度、宽度、输入通道数以及卷积核尺寸,箭头的方向指明了数据在数据最低维度所在的方向。如图5所示,正常的输入特征图数据维度顺序为:输入通道、图像高度、图像宽度,如上所述,本设计在缓存过程中对输入图像进行了维度调整,调整之后的维度顺序依次为:图像高度、图像宽度、输入通道。

根据卷积运算特点,卷积核需要与所有通道的输入图像进行乘累加运算,因此每计算得到一个输出像素点,需要完成h*w*c次乘累加运算。如果采用传统的维度顺序进行数据缓存,需要的缓存空间趋近于整张输入特征图大小,经过维度转换后,需要的缓存空间只需要h*w*c大小,有效节省了片上存储资源,其中h、w、c分别表示图像的高度和宽度、图像通道数。

(c)共享padding设计。根据本发明所涉及的画质增强算法具有可变尺寸卷积的特点,本发明采用了最大padding设计使得同一层内两组不同尺寸的卷积核能够共享片上缓存空间,从而节约片上存储资源。以第二层为例,该层包含两组卷积核——卷积层2-1和卷积层2-2,其卷积核尺寸分别分3*3和5*5,为了保证两组卷积的输出特征图尺寸一致,如图7所示,需要对前一层的输入进行不同尺寸的padding操作并对结果进行缓存,因此需要更大的片上存储空间。

本发明采用了一种最大padding的设计策略,对于同一层输入的不同padding尺寸取其中较大者作为该层输入特征图的padding尺寸。仍以第二层为例,本设计取2为该层的padding尺寸,对于较小尺寸的卷积核conv1,只需将其访问缓存的地址索引设置为相应的非零基地址开始即可,从而实现两部分卷积共享缓存空间,节约了近一倍的片上存储资源。

最后,加速器ip核模块在计算完成后计算得到的整张输出图像通过中央处理器控制dma控制器将输出图像搬运至片外存储器sdram,其过程如图8所示。通过采用上述优化设计,该加速器实际运行过程中能够保证每个时钟周期输出一个像素数据,采用dma控制将计算结果输出至片外sdram进行存储。

综上,本发明采用并行优化和流水线优化方式,使得在相同的工作频率下,对于图片的画质增强处理速度相对cpu计算提升了64倍,能够满足实时的视频图像后处理速度要求;且采用fpga芯片进行算法的实现和部署,相对于同等算力的gpu等硬件实现方式,功耗大幅降低,实现了fpga资源利用和运算效率的平衡,能够满足实际嵌入式场景下的视频图像应用需求。

上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1