一种基于SOC的可训练柔性CNN系统设计方法技术方案

技术编号:21893427 阅读:15 留言:0更新日期:2019-08-17 15:06
本文发明专利技术提供一种基于SOC的可训练柔性CNN系统设计方法,属于深度学习领域,用于实现嵌入式CNN系统的在线学习和结构柔性拓展。该方法首先构建包含学习引擎、前馈加速器和外部接口的CNN片上系统;然后进入在线学习模式,接收外部命令设置网络结构和样本个数,依次加载样本图像和权值数据,在学习引擎的控制下,分时复用前馈加速器,实现CNN网络的前向加速计算,并由学习引擎执行学习规则,推算新权值,依次实现各样本的学习;学习完毕进入预测模式,利用训练所得网络结构和权值参数,对输入图像进行预测。本发明专利技术能够实现嵌入式CNN系统的预测、在线学习和结构柔性扩展,且具有低功耗、低成本、高灵活性和强环境适应性等优点。

A Design Method of Trainable Flexible CNN System Based on SOC

【技术实现步骤摘要】
一种基于SOC的可训练柔性CNN系统设计方法
本专利技术提供的一种基于SOC的可训练柔性CNN系统设计方法,属于嵌入式深度学习领域,适用于嵌入式CNN识别系统。
技术介绍
CNN在机器视觉、图像处理等领域表现出优秀的处理能力。目前,基于CNN的人工智能产品,多以专用处理器为核心,依托云平台、服务器,完成核心的神经网络算法。这种实现方法虽然处理性能高,能够保证产品的实时性;但体积庞大、成本和功耗高、便携性差,不能满足工业、医疗、国防等嵌入式应用领域的需求。近年来,基于FPGA的CNN嵌入式加速实现,逐渐成为新的研究热点。但是,现有方案多局限于神经网络算法的前馈过程加速,存在着系统电路固定、适应性差、无法在线学习等不足。特别是在军事目标识别领域,应用场景复杂多变,目标多元化,系统需要具备在线学习能力,以便及时改善识别准确率。因此,迫切需要设计面向嵌入式环境的可训练柔性CNN系统,本专利技术专利是针对上述问题的一种有效的系统设计方法。
技术实现思路
本专利技术的目的在于针对上述存在的问题和不足,提供一种基于SOC的可训练柔性CNN系统设计方法,不仅能够实现在线预测功能,而且具有嵌入式在线学习和结构柔性拓展能力,能适应多种应用场景,非常适合低成本、低功耗的嵌入式应用环境。为了实现上述目的,本专利技术采用的技术方案是:一种基于SOC的可训练柔性CNN系统设计方法,包括以下几个步骤:步骤1:利用FPGA片上软核或硬核处理器实现学习引擎,利用FPGA逻辑设计前馈加速器,并设计外部接口模块,构建基于SOC的可训练CNN系统的硬件框架;步骤2:使CNN系统进入在线学习阶段,通过外部接口设置网络结构参数,并初始化训练样本图像个数;步骤3:通过外部接口向CNN系统加载一个训练样本图像,同时初始化待加速网络层数和网络权值;步骤4:在学习引擎的控制下,分时复用前馈加速器,实现图像数据处理的前馈过程加速;步骤5:学习引擎访问最后一个待加速CNN网络层的运算结果,执行输出层,输出执行结果;步骤6:学习引擎根据学习规则,以最优化误差损失为目标函数,推算新权值;步骤7:将步骤6所得新权值作为初始化网络权值,重复步骤3~6,依次学习全部样本;步骤8:使CNN系统进入预测阶段,将步骤7所得最终网络权值作为初始化网络权值,通过外部接口加载待预测图像,重复步骤4~5,输出执行结果。进一步地,步骤1中,所述CNN系统的学习引擎、前馈加速器和外部接口均在同一片FPGA上实现;所述外部接口和所述学习引擎的输入输出互连,所述前馈加速器和所述学习引擎通过总线互连;所述前馈加速器包括可重构加速单元、数据缓存区、参数配置器、状态监控器和地址生成器,其中参数配置器的输出分别连接地址生成器和可重构加速单元,地址生成器的输出连接数据缓存区,数据缓存区的输出连接可重构加速单元,可重构加速单元的输出分别连接数据缓存区和状态监控器;所述学习引擎为主控制器,负责各模块的总体控制、样本图像损失误差的分析和新权值的计算;所述外部接口用于与外部通信,接收控制命令,输入样本图像、待预测图像和初始权值,输出处理结果;所述前馈加速器用于实现图像数据处理的前馈过程加速;所述前馈加速器的数据缓存区包括图像缓存、权值缓存和特征图缓存,均为双端口RAM。进一步地,步骤4中,所述图像数据处理的前馈过程加速的具体实现方法如下:(1)学习引擎将当前待加速CNN网络层的网络权值存储至数据缓存区,并向参数配置器发送当前待加速层CNN网络层的网络参数,配置地址生成器和可重构加速单元;(2)地址生成器产生相应的图像、权值数据读取地址,向可重构加速单元加载数据流;(3)可重构加速单元对输入图像数据进行卷积、激活、池化等运算,并将特征图结果保存至数据缓存区,作为下一级待加速CNN网络层的输入;(4)状态监控器实时监测可重构加速单元的状态信号,等待当前待加速CNN网络层加速计算完毕;(5)状态检测器向学习引擎发送请求处理下一级信号;(6)重复(1)~(5),直至所有待加速CNN网络层处理完毕。进一步地,所述前馈过程加速的具体实现方法采用加速器与数据流分离的设计方法:所述可重构加速单元包含N路运算链,每条运算链通过卷积、激活、池化等算子组合,提取一种特征信息,运算链路数N由参数配置器设置;所述地址生成器根据参数配置器设置的当前待加速层模型参数,生成数据缓存区的读取地址序列,自动向可重构加速单元加载数据流;通过控制加速器链路数与数据流的变化,灵活地适应不同卷积层的加速计算,实现CNN结构的柔性拓展。与现有技术相比,本专利技术的有益效果是:系统整体采用包含学习引擎、前馈加速器和外部接口的SOC架构,能够实现CNN系统的嵌入式在线学习和预测功能;采用数据流与加速器分离的设计方法,能够实现CNN结构的柔性拓展;通过分时复用前馈加速器,并通过加速器协助训练过程,不仅节约了硬件资源开销,而且降低了系统功耗和体积,在工业、医疗、国防等低成本、低功耗的嵌入式应用领域具有广阔的应用前景。附图说明图1为本专利技术实施实例的可训练柔性CNN系统的设计流程图2为本专利技术实施实例的可训练柔性CNN系统的SOC系统组成框图图3为本专利技术实施实例的串口通信界面交互信息具体实施方式下面详细描述本专利技术的实施例,本实施例是示例性的,仅用于解释本专利技术,而不能理解为对本专利技术的限制。基于Xilinx公司的ZedBoard开发板设计和实现本专利技术实例,参照说明书附图对本专利技术的一种基于SOC的可训练柔性CNN系统设计方法作以下详细说明。如图1所示,为基于SOC的可训练柔性CNN系统的设计流程,包括以下步骤:首先构建基于SOC的可训练柔性CNN系统硬件架构;然后设计软件控制程序,实现在线学习和预测的流程控制;最后完成系统软硬件集成,并进行板级调试与验证。(1)构建基于SOC的可训练柔性CNN系统的硬件架构如图2所示,为本专利技术实施实例的可训练柔性CNN系统的SOC系统硬件架构:采用FPGA片上ARM硬核实现学习引擎,采用FPGA逻辑资源设计前馈加速器,包括可重构加速单元、参数配置器、地址生成器、状态监控器、BRAM控制器等;采用外部SD卡存储FPGA初始化位流、样本集、测试集,采用UART接口实现与PC机的通信;具体构建步骤如下:①在Vivado开发环境下,使用Verilog硬件描述语言,设计可重构加速单元、地址生成器、状态监控器、参数配置器等模块,并设计顶层文件,编写仿真代码,进行仿真测试,验证设计的正确性;②将参数配置器、状态监控器等具有AXI接口的模块封装成IP核;③创建基于ZYNQ硬核处理器核的系统,并修改其配置信息,包括系统时钟频率、存储器类型、外设IO引脚等;④在系统中添加①和②所设计的IP核和其他必要的辅助IP核,并按照图2所示连接各IP核,完成CNN系统硬件架构的构建;然后通过综合报告,分析优化时序、资源利用率;最后经布局布线,生成系统全局配置位流文件system.bit。(2)设计软件控制程序在SDK软件开发环境下,以CNN中典型的LeNet5模型为例,采用C语言编程,实现可训练柔性CNN系统的在线学习和预测的控制流程,并生成可执行文件mynet.elf;主要包括以下步骤:S1:学习引擎通过UART接口与外部PC机通信,设置网络结构参数,并初始化训练样本图像个数本文档来自技高网...

【技术保护点】
1.一种基于SOC的可训练柔性CNN系统设计方法,其特征在于,包括以下几个步骤:步骤1:利用FPGA片上软核或硬核处理器实现学习引擎,利用FPGA逻辑设计前馈加速器,并设计外部接口模块,构建基于SOC的可训练CNN系统的硬件框架;步骤2:使CNN系统进入在线学习阶段,通过外部接口设置网络结构参数,并初始化训练样本图像个数;步骤3:通过外部接口向CNN系统加载一个训练样本图像,同时初始化待加速网络层数和网络权值;步骤4:在学习引擎的控制下,分时复用前馈加速器,实现图像数据处理的前馈过程加速;步骤5:学习引擎访问最后一个待加速CNN网络层的运算结果,执行输出层,输出执行结果;步骤6:学习引擎根据学习规则,以最优化误差损失为目标函数,推算新权值;步骤7:将步骤6所得新权值作为初始化网络权值,重复步骤3~6,依次学习全部样本;步骤8:使CNN系统进入预测阶段,将步骤7所得最终网络权值作为初始化网络权值,通过外部接口加载待预测图像,重复步骤4~5,输出执行结果。

【技术特征摘要】
1.一种基于SOC的可训练柔性CNN系统设计方法,其特征在于,包括以下几个步骤:步骤1:利用FPGA片上软核或硬核处理器实现学习引擎,利用FPGA逻辑设计前馈加速器,并设计外部接口模块,构建基于SOC的可训练CNN系统的硬件框架;步骤2:使CNN系统进入在线学习阶段,通过外部接口设置网络结构参数,并初始化训练样本图像个数;步骤3:通过外部接口向CNN系统加载一个训练样本图像,同时初始化待加速网络层数和网络权值;步骤4:在学习引擎的控制下,分时复用前馈加速器,实现图像数据处理的前馈过程加速;步骤5:学习引擎访问最后一个待加速CNN网络层的运算结果,执行输出层,输出执行结果;步骤6:学习引擎根据学习规则,以最优化误差损失为目标函数,推算新权值;步骤7:将步骤6所得新权值作为初始化网络权值,重复步骤3~6,依次学习全部样本;步骤8:使CNN系统进入预测阶段,将步骤7所得最终网络权值作为初始化网络权值,通过外部接口加载待预测图像,重复步骤4~5,输出执行结果。2.如权利要求1所述的一种基于SOC的可训练柔性CNN系统设计方法,其特征在于,步骤1中,所述CNN系统的学习引擎、前馈加速器和外部接口均在同一片FPGA上实现;所述外部接口和所述学习引擎的输入输出互连,所述前馈加速器和所述学习引擎通过总线互连;所述前馈加速器包括可重构加速单元、数据缓存区、参数配置器、状态监控器和地址生成器,其中参数配置器的输出分别连接地址生成器和可重构加速单元,地址生成...

【专利技术属性】
技术研发人员:姚睿李明莉周冠宇游霞周翟和陈燕
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:江苏,32

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

1