基于FPGA实现的卷积神经网络特征解码系统的制作方法

文档序号:22739412发布日期:2020-10-31 09:21阅读:270来源:国知局
基于FPGA实现的卷积神经网络特征解码系统的制作方法

本发明涉及到计算机视觉技术领域,尤其涉及到一种基于fpga实现的卷积神经网络特征解码系统。



背景技术:

当前卷积神经网络(cnn)已经被广泛运用于计算机视觉,工业检测,自然语言处理等多个领域。但受限于卷积神经网络的庞大计算量和存储要求,传统的通用处理器早已无法满足其实时性的要求,所以基于图形处理器(gpu),专用集成电路(asic)和现场可编程门阵列(fpga)等硬件平台的cnn加速器纷纷被提出。综合比较这些硬件平台,基于fpga的cnn加速器具有开发周期短,能效收益高,可重构性高等优点,越来越受到大家关注。

一个典型的cnn包含两个部分,特征提取部分和特征解码部分。特征提取部分用于产生图像不同特征的特征图,然后输出包含这些特征的低维向量给到特征解码部分。特征解码部分也可以理解为神经网络解码的过程,基于提取到的低维向量包含的特征信息,完成检测和分类等功能。cnn大部分的计算量都在于特征提取部分的卷积操作,如图1所示,现有的一些fpga加速器方案都聚焦于加速特征提取部分,而特征解码部分还是要交由上位机或者arm硬核去处理,所以在一些需要摆脱上位机的应用场景下,芯片选型时只能考虑系统级芯片(soc),即fpga+处理器结构。但是因为arm架构是一个32位的精简指令集(risv)处理器,所以往往会出现fpga的计算资源很多,卷积部分加速快,而处理器对于cnn网络的特征解码能力有限的情况,以yolov3网络为例,网络特征解码包括sigmoid函数,非极大值抑制(nms),指数(exp)函数等,存在大量的浮点数计算,处理器的性能更是会成为网络加速的瓶颈,即fpga的加速效果受到了处理器的限制,无法完全发挥fpga的优势以达到最好的加速效果。



技术实现要素:

鉴于上述技术问题,本发明提供了一种基于fpga实现的卷积神经网络特征解码系统,该系统将cnn网络的特征解码模块也放到fpga内部进行加速,解决fpga加速方案中遇到的特征提取和特征解码速率不匹配的问题。将该特征解码模块放在特征提取的后面,因为整个网络不再分为两个部分,所有功能都在fpga中实现,也就是说加速效果完全取决于fpga的性能,只要将两个部分的功能实现完全的流水化设计,就能达到fpga加速效果的最大化。同时因为特征提取的结果不需要再经过ddr缓存,直接在片内进行处理,也降低了cnn网络处理的时延,甚至可以完全脱离处理器实现cnn网络的加速,达到芯片级别的计算加速效果。

一种基于fpga实现的卷积神经网络特征解码系统,其特征在于,所述系统包括有:

相互连接的ddr缓存模块和fpga,所述fpga中设置有特征提取模块和特征解码模块,所述特征提取模块与所述特征解码模块连接。

上述的基于fpga实现的卷积神经网络特征解码系统,其特征在于,所述fpga中设置有特征提取模块和特征解码模块,所述特征解码模块进一步包括有:函数变换模块、比较模块、非极大值抑制模块,所述函数变换模块、比较模块、非极大值抑制模块依次连接。

本发明技术方案中,上述的基于fpga实现的卷积神经网络特征解码系统,其特征在于,所述函数变换模块中包括有sigmoid函数、指数函数。

本发明技术方案中,上述的基于fpga实现的卷积神经网络特征解码系统,其特征在于,所述比较模块包括有第一比较模块和第二比较模块,所述第一比较模块中设置有第一比较器,所述第二比较模块中设置有片上缓存bram和第二比较器。

上述技术方案具有如下优点或有益效果:

1、解决了加速方案所关心的芯片选型问题。包含arm处理器的soc芯片不再是唯一的选项,传统的fpga芯片也可以摆脱上位机和处理器,完成整个卷积神经网络的计算,所以在成本方面可以有更多的选择空间。

2、有效降低单张图片处理的时延。集成了该功能模块后,fpga与arm处理器之间不再有数据交互,减少了大量的数据传输。同时特征解码功能不再需要等待所有尺度的特征提取结果,任一尺度结果输出即被该模块处理,相比处理器的方式能够更快输出结果。

3、最大化加速效果。不再依赖处理器或者上位机进行特征解码,也就避免了卷积神经网络中特征提取部分和特征解码部分速率不匹配的问题,fpga的速度不会因为处理器的表现受到限制,而且处理器也不会再和fpga竞争ddr的带宽,最终能够达到完全芯片级别的加速效果。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明及其特征、外形和优点将会变得更加明显。在全部附图中相同的标记指示相同的部分。并未可以按照比例绘制附图,重点在于示出本发明的主旨。

图1是背景技术中使用fpga进行神经网络加速的方案示意图;

图2是本发明特征解码方案示意图;

图3是yolov3网络特征解码流程示意图;

图4是本发明在特征解码效率上的改进示意图;

图5是比较模块实现示意图;

图6本发明具体实施例示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图2~图4所示,本发明基于fpga实现的卷积神经网络特征解码系统,包括有:相互连接的ddr缓存模块和fpga,fpga中设置有特征提取模块和特征解码模块,特征提取模块与特征解码模块连接,特征解码模块进一步包括有:函数变换模块、比较模块、非极大值抑制模块,函数变换模块、比较模块、非极大值抑制模块依次连接。

在本发明技术方案中,函数变换模块中包括有sigmoid函数、指数函数。

在本发明技术方案中,比较模块包括有第一比较模块和第二比较模块,所述第一比较模块中设置有第一比较器,所述第二比较模块中设置有片上缓存bram和第二比较器。第一比较模块(即比较模块1)内判断所有特征点在已经得到的通道中n(n<k)分类得分最高的类别n1max,然后将所有特征点的n1max存储在第二比较模块(即比较模块2),第一比较模块再进入n个通道的数据得到n2max,通过第二比较模块再得到n1max与n2max的最大值,以此类推,直到特征点的所有的通道都遍历完,即可得到置信度最高的分类。

本发明以具有代表性的yolov3网络为例,阐述该模块实现卷积神经网络的过程。如图3所示,神经网络的特征解码包含sigmoid函数,指数函数,阈值过滤,非极大值抑制和比较模块。yolov3网络共有3个输出层,分别对应3个尺度的特征提取结果,这3层结果都要经过函数变换和阈值过滤,然后所有满足条件的点再进行nms操作,最终输出检测结果的类别,置信度和相对位置信息。

与arm处理器处理方式不同,fpga不属于冯·诺依曼架构,所以特征提取的结果不需要写入ddr,而是直接输入到特征解码模块,基于fpga可以同时拥有流水线并行和数据并行的特性,本发明对该步骤在效率上进行了改进,网络特征解码的时间会被特征提取的时间所淹没。如图4所示,我们记3个尺度的特征提取结果分别为r1,r2和r3,现有的fpga加速方案,上位机或是arm处理器必须要等到r1,r2,r3全部产生才能进行特征解码,采用本发明提出的模块后,在等待特征提取部分输出r2的过程中,基于fpga实现的卷积神经网络特征解码系统已经将r1进行函数变换。同理,在等待r3输出的过程中r2也进行了相同的处理,所以对整个神经网络来说,r3输出之后即可以和r1,r2进行nms操作,得到最终结果,所以对单张图片而言,基于fpga实现的卷积神经网络特征解码会显著降低处理时延。

通常情况下,fpga的片上缓存(bram)资源都是有限的,对于卷积神经网络加速这一场景而言,特征提取部分还需要使用部分bram资源用于存放特征图和权重数据,所以特征解码模块能分配到的bram资源更加紧缺,为了解决这一问题,本发明采用了切割通道(c,channel)的方案。原始的特征提取结果中1个特征点包含m个通道,通道信息包含了检测结果的坐标,置信度和可能的分类类别数。分类类别数k决定了通道数大小,m=3*(4+1+k),分类类别越多,通道数越多。因为分配到特征解码模块的bram无法将所有特征点的全通道数据都存储下来,所以只能存储所有特征点的部分通道的数据,通道切割后的特征点因为通道不再连续,所以无法再直接取到所有分类中的最可靠信分类,如图5所示,为此将分类得分比较部分分为2个步骤。首先在第一比较模块(即比较模块1)内判断所有特征点在已经得到的通道中n(n<k)分类得分最高的类别n1max,然后将所有特征点的n1max存储在第二比较模块(即比较模块2),接下来第一比较模块再进入n个通道的数据得到n2max,通过第二比较模块再得到n1max与n2max的最大值,以此类推,直到特征点的所有的通道都遍历完,即可得到置信度最高的分类。

同样,以yolov3-tiny网络为例,yolov3-tiny网络一共有2个输出层,检测80个分类,所以输出每个特征点共有255个通道。fpga芯片选型采用xilinx厂家的kintex7-325t(k7)芯片,此芯片不包含处理器,现有的fpga加速方案基于k7芯片只能输出特征检测结果,再将特征检测结果发送给上位机去处理,才能得到最终的检测结果。通过在k7芯片上集成本发明提出的基于fpga实现的卷积神经网络特征解码模块,fpga可以实现摆脱对上位机的依赖,同时也减少了数据传输时延。在本例中,结合k7芯片的bram存储资源大小,将切割通道大小定为32,所以要遍历完所有的通道数据需要8次,且最后一次只有31通道的数据,完成所有通道的比较后,再进行nms操作即可得到最终检测输出结果。本发明极大程度上解决了加速方案芯片选型的问题,因为摆脱了处理器的限制,选择范围不再只有单一的soc芯片,纯fpga芯片也可以。

图6中为另一实施例示意图,以yolov3网络为例,yolov3网络一共有3个输出层,检测80个分类,所以输出每个特征点共有255个通道。fpga芯片选型采用xilinx厂家的zynqultrascale+mpsoc(zu7)芯片,此soc芯片包含arm处理器。结合zu7芯片的bram存储资源大小,将切割通道大小定为64,所以要遍历完所有的通道数据需要4次,且最后一次只有63通道的数据。如图6所示,soc芯片上的arm处理器只负责控制逻辑,不参与特征解码的计算过程。arm进行特征解码的方案,本发明减少了arm与ddr的数据交互,降低了ddr的负载,不再使用arm进行特征解码步骤中的浮点数计算,也减少了soc芯片整体的功耗,单张图片处理时延也有所降低。

本领域技术人员应该理解,本领域技术人员在结合现有技术以及上述实施例可以实现所述变化例,在此不做赘述。这样的变化例并不影响本发明的实质内容,在此不予赘述。

以上对本发明的较佳实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,其中未尽详细描述的设备和结构应该理解为用本领域中的普通方式予以实施;任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例,这并不影响本发明的实质内容。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。

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