一种基于FPGA的CNN目标识别系统及方法技术方案

技术编号:31714714 阅读:13 留言:0更新日期:2022-01-01 11:19
本发明专利技术提供一种基于FPGA的CNN目标识别系统及方法,所述系统包括DDR模块、RAM模块、图像数据缓存模块、权重数据缓存模块、偏置数据缓存模块、数据分配模块、网络结构仲裁模块、卷积神经网络运算模块;使用模块化设计,可根据需要实现的网络结构快速调用各模块来完成该卷积神经网络在FPGA平台上的部署;采用参数化设计方法,将卷积神经网络中用的卷积、池化及全连接操作进行单独设计,在调用这些模块时,只需输入相应的参数,即可完成调用,对于不同的网络结构,可以快速的使用这些模块进行搭建,效率高,不需要二次开发,可以根据板载资源,动态化配置所占资源数,并行度可灵活配置,资源消耗可控,适用范围广,对平台的资源要求较低,方便移植。方便移植。方便移植。

【技术实现步骤摘要】
一种基于FPGA的CNN目标识别系统及方法


[0001]本专利技术涉及深度学习
,具体涉及一种基于FPGA的CNN目标识别系统及方法。

技术介绍

[0002]神经网络是一种人工智能机器学习技术,尤其是卷积神经网络受到了广泛的关注,在语音识别、自然语言处理和智能图像处理,特别是图像识别领域,卷积神经网络取得了一些显著的成果。但是,常用的网络模型在计算量上均达到了10亿量级,同时参数量上达到了上百兆的量级。对于资源紧张、功耗较为敏感的嵌入式设备来说,庞大的计算量和参数量为卷积神经网络(简称CNN)的实现提出了较为严苛的要求。
[0003]FPGA(Field Programmable Gate Array)是一种可配置的逻辑门电路,具有可配置逻辑块和用户输入、输出接口组件,研究开发人员可以通过配置FPGA内相关的开关状态来构建出可实现不同功能的处理架构。充分利用FPGA的高性能并行计算、超低功耗、低成本等优点来研究用以实现卷积神经网络的高性能体系结构,将是人工智能领域的必然趋势之一。

技术实现思路

[0004]针对现有技术的不足,本专利技术提出一种基于FPGA的CNN目标识别系统,包括:DDR模块、RAM模块、图像数据缓存模块、权重数据缓存模块、偏置数据缓存模块、数据分配模块、网络结构仲裁模块、卷积神经网络运算模块;
[0005]所述DDR模块用于存储图像数据、权重数据;将DDR模块的存储区分为两部分,一部分用于存储图像数据,另一部分用于存储权重数据;
[0006]所述RAM模块用于存储偏置数据,所述权重数据、偏置数据是指对待搭建的卷积神经网络进行预训练生成的权重数据、偏置数据;
[0007]所述图像数据缓存模块用于缓存从DDR模块读取的图像数据;
[0008]所述权重数据缓存模块用于缓存从DDR模块读取的权重数据;
[0009]所述偏置数据缓存模块用于缓存从RAM模块读取的偏重数据;
[0010]所述数据分配模块用于对从DDR模块中读出的数据按照数据种类进行分配,并传输给相应的缓存模块;若从DDR中读出的数据为图像数据,则将其放入图像数据缓存模块;若从DDR中读出的数据为权重数据,则将其放入权重数据缓存模块;
[0011]所述网络结构仲裁模块用于搭建需要实现的卷积神经网络结构,即根据所要实现的网络结构以及当前所计算的网络结构层,选择所要进行的卷积运算、池化操作;
[0012]所述卷积神经网络运算模块用于根据缓存的权重数据、偏置数据、图像数据进行整个卷积神经网络的逐层运算,并根据运算完成的数据进行分类操作,得到所要识别物体的种类。
[0013]所述卷积神经网络运算模块包括卷积层运算模块、池化层运算模块、Softmax分类
器;
[0014]所述卷积层运算模块包括卷积层运算模块I、卷积层运算模块II、卷积层运算模块III、卷积层运算模块IV;
[0015]所述卷积层运算模块I用于实现输入通道为1的卷积运算;
[0016]所述卷积层运算模块II用于实现输入通道为64的卷积运算;
[0017]所述卷积层运算模块III用于实现输入通道为128的卷积运算;
[0018]所述卷积层运算模块IV用于实现输入通道为256及其以上的卷积运算、全连接运算;
[0019]所述池化层运算模块用于实现最大池化或平均池化操作;
[0020]所述Softmax分类器用根据全连接运算后的数据得到输入的原始图像属于某一物体类别的概率,得到所要识别物体的种类,并将结果输出。
[0021]一种采用所述的基于FPGA的CNN目标识别系统的目标识别方法,包括:
[0022]步骤1:获取对待搭建的卷积神经网络进行预训练生成的权重数据及偏置数据,通过网络结构仲裁模块搭建需要实现的卷积神经网络结构;
[0023]步骤2:将DDR模块的存储区划分为两部分,一部分用于存储图像数据,另一部分用于存储权重数据;
[0024]步骤3:将获取的原始图像数据存入图像数据的存储区,将获取的权重数据存入权重数据的存储区,将获取的偏置数据存入RAM模块;
[0025]步骤4:数据读取及数据分配,根据卷积神经网络结构以及当前计算的网络结构层,从DDR模块中读取图像数据以及权重数据,经数据分配模块进行分类后分别传入相应的缓存模块,从RAM模块中读取偏置数据;
[0026]步骤5:通过网络结构仲裁模块选择所需要的卷积层运算模块以及池化层运算模块对待搭建网络结构中的不同结构层进行计算,并将计算得到的结果存入至DDR模块中的图像数据存储区中以供网络结构的下一层计算使用;
[0027]步骤6:重复步骤4至步骤5直至整个卷积神经网络运算完成,将运算完成的数据输入至Softmax分类器,得到所要识别的物体种类。
[0028]所述步骤4包括:
[0029]步骤4.1:图像数据及权重数据读取,根据输入的图像数据在图像数据存储区中的起始地址img_start_addr、权重数据在权重数据存储区中的起始地址weight_start_addr、图像大小img_size、图像宽度img_width、DDR突发读个数rd_len、卷积核滑动步距conv_skip_stype、输出通道数out_channel、输入通道数取对数的结果log_in_channel、数据请求信号data_req以及卷积核大小conv_kernal_size,从DDR模块中的图像数据存储区以及权重数据存储区中读取数据;
[0030]步骤4.2:数据分配,根据数据类型标志data_tpye_flag判断,若从DDR模块中读出的值为图像数据,则将数据存入至图像数据缓存模块,若从DDR模块中读出的值为权重数据,则将数据存入至权重数据缓存模块;
[0031]步骤4.3:偏置数据读取,根据当前所处的网络层数,该层所需的偏置数据在RAM模块中的起始地址bias_start_addr、图像大小img_size、图像宽度img_width、卷积核滑动步距conv_skip_stype、输出通道数out_channel,从RAM模块中读出存储的偏置数据,存入至
偏置数据缓存模块。
[0032]所述步骤5包括:
[0033]步骤5.1:卷积层的计算,按照所要实现的网络结构以及当前计算所处的结构层,从图像数据缓存模块、权重数据缓存模块以及偏置数据缓存模块中读出存储的数据,读出的数据传入至相应的卷积层运算模块进行卷积运算,运算完成的结果存回至DDR模块中的图像数据存储区中以供网络结构的下一层计算使用;
[0034]步骤5.2:池化层的计算,按照所要实现的网络结构以及当前计算所处的结构层,从图像数据缓存模块中读出存储的图像数据,读出的数据传入至池化层运算模块进行池化运算,运算完成的结果存回至DDR模块中的图像数据存储区以供网络结构的下一层计算使用;
[0035]步骤5.3:全连接层的计算,按照所要实现的网络结构以及当前本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的CNN目标识别系统,其特征在于,包括:DDR模块、RAM模块、图像数据缓存模块、权重数据缓存模块、偏置数据缓存模块、数据分配模块、网络结构仲裁模块、卷积神经网络运算模块;所述DDR模块用于存储图像数据、权重数据;将DDR模块的存储区分为两部分,一部分用于存储图像数据,另一部分用于存储权重数据;所述RAM模块用于存储偏置数据,所述权重数据、偏置数据是指对待搭建的卷积神经网络进行预训练生成的权重数据、偏置数据;所述图像数据缓存模块用于缓存从DDR模块读取的图像数据;所述权重数据缓存模块用于缓存从DDR模块读取的权重数据;所述偏置数据缓存模块用于缓存从RAM模块读取的偏重数据;所述数据分配模块用于对从DDR模块中读出的数据按照数据种类进行分配,并传输给相应的缓存模块;若从DDR中读出的数据为图像数据,则将其放入图像数据缓存模块;若从DDR中读出的数据为权重数据,则将其放入权重数据缓存模块;所述网络结构仲裁模块用于搭建需要实现的卷积神经网络结构,即根据所要实现的网络结构以及当前所计算的网络结构层,选择所要进行的卷积运算、池化操作;所述卷积神经网络运算模块用于根据缓存的权重数据、偏置数据、图像数据进行整个卷积神经网络的逐层运算,并根据运算完成的数据进行分类操作,得到所要识别物体的种类。2.根据权利要求1所述的一种基于FPGA的CNN目标识别系统,其特征在于,所述卷积神经网络运算模块包括卷积层运算模块、池化层运算模块、Softmax分类器;所述卷积层运算模块包括卷积层运算模块I、卷积层运算模块II、卷积层运算模块III、卷积层运算模块IV;所述卷积层运算模块I用于实现输入通道为1的卷积运算;所述卷积层运算模块II用于实现输入通道为64的卷积运算;所述卷积层运算模块III用于实现输入通道为128的卷积运算;所述卷积层运算模块IV用于实现输入通道为256及其以上的卷积运算、全连接运算;所述池化层运算模块用于实现最大池化或平均池化操作;所述Softmax分类器用根据全连接运算后的数据得到输入的原始图像属于某一物体类别的概率,得到所要识别物体的种类,并将结果输出。3.一种采用权利要求1所述的基于FPGA的CNN目标识别系统的目标识别方法,其特征在于,包括:步骤1:获取对待搭建的卷积神经网络进行预训练生成的权重数据及偏置数据,通过网络结构仲裁模块搭建需要实现的卷积神经网络结构;步骤2:将DDR模块的存储区划分为两部分,一部分用于存储图像数据,另一部分用于存储权重数据;步骤3:将获取的原始图像数据存入图像数据的存储区,将获取的权重数据存入权重数据的存储区,将获取的偏置数据存入RAM模块;步骤4:数据读取及数据分配,根据卷积神经网络结构以及当前计算的网络结构层,从DDR模块中读取图像数据以及权重数据,经数据分配模块进行分类后分别传入相应的缓存
模块,从RAM模块中读取偏置数据;步骤5:通过网络结构仲裁模块选择所需要的卷积层运算模块以及池化层运算模块对待搭建网络结构中的不同结构层进行计算,并将计算得到的结果存入至DDR模块中的图像数据存储区中以供网络结构的下一层计算使用;步骤6:重复步骤4至步骤5直至整个卷积神经网络运算完成,将运算完成的数据输入至Softmax分类器,得到所要识别的物体种类。4.根据权利要求3所述的基于FPGA的CNN目标识别方法,其特征在于,所述步骤4包括:步骤4.1:图像数据及权重数据读取,根据输入的图像数据在图像数据存储区中的起始地址img_start_addr、权重数据在权重数据存储区中的起始地址weight_start_addr、图像大小img_size、图像宽度img_width、DDR突发读个数rd_len、卷积核滑动步距conv_skip_stype、输出通道数out_channel、输入通道数取对数的结果log_in_channel、数据请求信号data_req以及卷积核大小conv_kernal_size,从DDR模块中的图像数据存储区以及权重数...

【专利技术属性】
技术研发人员:张丽丽陈真白玉屈乐乐
申请(专利权)人:沈阳航空航天大学
类型:发明
国别省市:

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

1