一种多种类型卷积的FPGA实现方法技术

技术编号:28740359 阅读:13 留言:0更新日期:2021-06-06 15:07
本发明专利技术提供了一种多种类型卷积的FPGA实现方法,能够利用统一的硬件架构将多种类型的卷积部署在FPGA上进行实现,不需要针对不同的卷积类型分别设计硬件实现架构,节省了大量的硬件资源。通过分析多种类型卷积的特点将它们转换为同一种基准卷积类型使用统一的处理引擎进行实现。相比于分别在FPGA上实现这些卷积,节省了大量的硬件资源。通过优化基准卷积的运算流程,并根据其余卷积的特征分别将其转换为基准卷积进行运算。从而利用统一的硬件架构在FPGA上进行实现。提高了实现的灵活性,降低了硬件资源的开销,有效避免了传统FPGA实现方法中需要为各类型卷积分别设计实现架构所造成的资源消耗大,结构不灵活的问题。结构不灵活的问题。结构不灵活的问题。

【技术实现步骤摘要】
一种多种类型卷积的FPGA实现方法


[0001]本专利技术属于图像检测识别
,尤其涉及一种多种类型卷积的FPGA实现方法。

技术介绍

[0002]近五年来,深度神经网络在智能图像处理领域取得了突破性进展,具有广泛的应用场景。深度卷积神经网络中存在大量的网络权重参数与计算,因此目前多数深度神经网络算法部署在CPU或GPU等高性能设备上。但是CPU、GPU的高性能需要大量的功耗支持,因此在一些功耗严格受限的应用场景中难以应用。高性能、低功耗嵌入式硬件设备为解决这一问题提供了全新的解决思路,因此基于嵌入式设备构建深度神经网络实现平台日益成为工程应用中的研究热点,基于FPGA设计深度神经网络硬件加速器是其中最为广泛的解决方案。但是在一些应用场景中,对于图像特征提取、检测识别的性能要求不断提升,所用到的深度神经网络结构越来越复杂,网络中所涉及到的卷积类型也由起初的单一类型变得更加丰富,需要为各类型卷积分别设计实现架构,但是FPGA片内逻辑与存储资源有限,难以满足为各类型卷积单独设计实现结构,使得在FPGA上实现该类包含多类型卷积的深度神经网络存在一定的技术难点。

技术实现思路

[0003]有鉴于此,本专利技术提供了一种多种类型卷积的FPGA实现方法,能够利用统一的硬件架构将多种类型的卷积部署在FPGA上进行实现,不需要针对不同的卷积类型分别设计硬件实现架构,节省了大量的硬件资源。
[0004]为实现上述目的,本专利技术的技术方案如下:
[0005]本专利技术提供了一种多种类型卷积的FPGA实现方法,包括如下步骤:
[0006]步骤一、根据所要实现的多种类型卷积的深度卷积神经网络,选取其中一种常见且具有代表性的卷积作为基准类型卷积,并采用原始循环计算过程对其进行硬件部署,使其能够在FPGA上运行;所述原始循环计算过程中,先进行行处理再进行通道处理;
[0007]步骤二、面向所述基准类型卷积设计处理引擎的结构,得到的处理引擎能够部署在FPGA上用于实现基准卷积;
[0008]步骤三、设计输入数据控制模块,用于为步骤二得到的处理引擎提供正确的输入数据;
[0009]输入数据控制模块搭配处理引擎,将基准类型卷积成功部署在FPGA中;
[0010]其中,所述输入数据控制模块包括N个BRAM,设计为乒乓缓冲区,N为基准类型卷积尺寸行数加1;
[0011]Ping缓冲区和Pang缓冲区的Bram是有序的,不能颠倒;
[0012]当需要对输入特征图进行零填充时,不需要进行额外的存储,选择零作为输出来实现填充操作;
[0013]步骤四、针对所要实现的多种类型卷积的深度卷积神经网络中,所包含的除基准类型卷积之外的其余类型卷积,制定转换方法,将其余类型卷积转换为基准类型卷积,然后应用统一的处理引擎在FPGA上进行实现,完成多种类型卷积的FPGA实现。
[0014]其中,所要实现的多种类型卷积的深度卷积神经网络包含的卷积类型有:3
×
3普通卷积,1
×
1普通卷积,步长为1、膨胀率为2的3
×
3空洞卷积以及步长为2、膨胀率为2的3
×
3空洞卷积。
[0015]其中,对于1
×
1卷积,通过零填充将卷积核的大小从1
×
1转换为基准类型卷积尺寸,与之对应的是需要将附加的零填充添加到输入要素图以获得正确的输出要素图;
[0016]在FPGA上实现时,在为处理引擎提供输入图像数据和权重参数时,通过添加0的操作,在读出输入图像数据和权重时在需要读出0的位置将读出使能信号置为无效,并把此时的数据设为0。
[0017]其中,对于步长为1膨胀率为2的3
×
3空洞卷积,在存储输入特征图时,将相邻的两行存储在同一块Bram中,在取数据时,按照同样的地址,分别在Bram中取出输入特征图的奇数行特征值;同理分别取出偶数行特征值;其中,通过设置锯齿形读取使能信号,将奇数列和偶数列的输入数据分别读出;在读取输入要素地图时,将输入特征图根据奇数行、偶数行、奇数列和偶数列进行分组。
[0018]其中,对于步长为2膨胀率为2的3
×
3空洞卷积,在往输入数据控制模块中存储输入特征图时,仅存储奇数行的特征图;在读取时通过设置锯齿形读取使能信号,仅将奇数列的输入数据读出提供给处理引擎用于参与卷积运算。
[0019]其中,所述步骤二中,利用乘法运算单元和加法运算单元搭建卷积处理引擎,用于在FPGA上完成卷积运算。
[0020]有益效果:
[0021]本专利技术提供一种多种类型卷积的FPGA实现方法,不需要针对不同的卷积类型分别设计硬件实现架构,而是通过分析多种类型卷积的特点将它们转换为同一种基准卷积类型使用统一的处理引擎进行实现。相比于分别在FPGA上实现这些卷积,节省了大量的硬件资源。通过优化基准卷积的运算流程,并根据其余卷积的特征分别将其转换为基准卷积进行运算。从而利用统一的硬件架构在FPGA上进行实现。提高了实现的灵活性,降低了硬件资源的开销,有效避免了传统FPGA实现方法中需要为各类型卷积分别设计实现架构所造成的资源消耗大,结构不灵活的问题。
[0022]利用本专利技术中提出的多种类型卷积的FPGA实现方法构建嵌入式图像处理系统可应用于多个智能化图像处理领域,如自动驾驶、手机图像处理和遥感图像处理等,能够大幅提升计算效率,降低功耗开销与设计成本。
附图说明
[0023]图1为本专利技术实施例的多种类型卷积的FPGA实现方法的流程图;
[0024]图2为本专利技术实施例中对基准卷积的计算过程进行优化后的运算流程示意图;
[0025]图3为本专利技术实施例中提供的卷积处理引擎的结构示意图;
[0026]图4为本专利技术实施例中提供的输入数据控制模块结构示意图与存储方式示意图;
[0027]图5为本专利技术实施例中提供的1
×
1卷积转换为基准卷积的转化策略的示意图;
[0028]图6为本专利技术实施例中提供的步长为1、膨胀率为2的3
×
3空洞卷积的输入数据存储方式和读取策略示意图;
[0029]图7为本专利技术实施例中提供的步长为1、膨胀率为2的3
×
3空洞卷积转换为基准卷积的转化策略的示意图;
[0030]图8为本专利技术实施例中提供的步长为2、膨胀率为2的3
×
3空洞卷积转换为基准卷积的转化策略的示意图。
具体实施方式
[0031]为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
[0032]本专利技术提供了一种多种类型卷积的FPGA实现方法,应用于深度卷积神经网络,其中,深度卷积神经网络包括多个卷积层,且各卷积层的卷积类型有所不同。本专利技术所述的多种类型卷积的深度卷积神经网络在YOLOv2网络的基础上,去掉了Passthroug本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多种类型卷积的FPGA实现方法,其特征在于,包括如下步骤:步骤一、根据所要实现的多种类型卷积的深度卷积神经网络,选取其中一种常见且具有代表性的卷积作为基准类型卷积,并采用原始循环计算过程对其进行硬件部署,使其能够在FPGA上运行;所述原始循环计算过程中,先进行行处理再进行通道处理;步骤二、面向所述基准类型卷积设计处理引擎的结构,得到的处理引擎能够部署在FPGA上用于实现基准卷积;步骤三、设计输入数据控制模块,用于为步骤二得到的处理引擎提供正确的输入数据;输入数据控制模块搭配处理引擎,将基准类型卷积成功部署在FPGA中;其中,所述输入数据控制模块包括N个BRAM,设计为乒乓缓冲区,N为基准类型卷积尺寸行数加1;Ping缓冲区和Pang缓冲区的Bram是有序的,不能颠倒;当需要对输入特征图进行零填充时,不需要进行额外的存储,选择零作为输出来实现填充操作;步骤四、针对所要实现的多种类型卷积的深度卷积神经网络中,所包含的除基准类型卷积之外的其余类型卷积,制定转换方法,将其余类型卷积转换为基准类型卷积,然后应用统一的处理引擎在FPGA上进行实现,完成多种类型卷积的FPGA实现。2.如权利要求1所述的多种类型卷积的FPGA实现方法,其特征在于,所要实现的多种类型卷积的深度卷积神经网络包含的卷积类型有:3
×
3普通卷积,1
×
1普通卷积,步长为1、膨胀率为2的3
×
3空洞卷积以及步长为2、膨胀率为2的3
×
3空洞卷积...

【专利技术属性】
技术研发人员:陈禾张宁魏鑫刘文超龙腾
申请(专利权)人:北京理工大学
类型:发明
国别省市:

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

1