CN110135572A - 一种基于soc的可训练柔性cnn系统设计方法 - Google Patents
一种基于soc的可训练柔性cnn系统设计方法 Download PDFInfo
- Publication number
- CN110135572A CN110135572A CN201910416537.9A CN201910416537A CN110135572A CN 110135572 A CN110135572 A CN 110135572A CN 201910416537 A CN201910416537 A CN 201910416537A CN 110135572 A CN110135572 A CN 110135572A
- Authority
- CN
- China
- Prior art keywords
- cnn
- study
- accelerator
- restructural
- study engine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文发明提供一种基于SOC的可训练柔性CNN系统设计方法,属于深度学习领域,用于实现嵌入式CNN系统的在线学习和结构柔性拓展。该方法首先构建包含学习引擎、前馈加速器和外部接口的CNN片上系统;然后进入在线学习模式,接收外部命令设置网络结构和样本个数,依次加载样本图像和权值数据,在学习引擎的控制下,分时复用前馈加速器,实现CNN网络的前向加速计算,并由学习引擎执行学习规则,推算新权值,依次实现各样本的学习;学习完毕进入预测模式,利用训练所得网络结构和权值参数,对输入图像进行预测。本发明能够实现嵌入式CNN系统的预测、在线学习和结构柔性扩展,且具有低功耗、低成本、高灵活性和强环境适应性等优点。
Description
技术领域
本发明提供的一种基于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机通信,设置网络结构参数,并初始化训练样本图像个数;
S2:学习引擎从片外存储器DDR中加载一个训练样本图像,并通过AXI总线将图像数据传递至图像缓存区IMB;
S3:初始化待加速网络层数和网络权值,并初始化可重构加速单元输入通道,使可重构加速单元的初始输入数据dina和dinb分别来自图像缓存区IMB和权值缓存区WTB;
S4:学习引擎通过AXI总线将待加速层网络权值传递至权值缓存器WTB;并利用当前待加速层的模型参数,包括卷积核的个数N、卷积核的尺寸K、输入特征图的大小F、池化核尺寸P,经过参数配置器,配置可重构加速单元和地址生成器;
S5:地址生成器产生相应的图像、权值数据读取地址addra和addrb,向可重构加速单元加载数据流;
S6:可重构加速单元对输入数据流dina、dinb进行卷积、激活、池化等运算,并将输出结果doutf传送至特征图缓存区FB中,准备进行下一级隐含层加速;
S7:状态监控器实时监测可重构加速单元的状态信号finish,若finish为1,表示当前层加速计算完毕,转S8;否则,继续等待。
S8:将dina输入由图像通道切换至特征图通道,并向学习引擎发送请求处理下一级信号;
S9:学习引擎判断待加速层数是否为0,若为0,表明所有网络层处理完毕,转S10;否则将待加速层数减1,转S4;
S10:学习引擎访问特征图缓存区FB中的特征图结果,执行输出层,并输出执行结果;
S11:学习引擎根据学习规则,以最优化误差损失为目标函数,推算新权值;
S12:学习引擎判断样本个数是否为0,若为0,表明所有样本学习完毕,转S13;否则,将待学习样本个数减1,转S2;
S13:学习引擎将最优网络权值暂存外部存储器DDR中,学习完毕;
S14:进入预测阶段,将S13所得最终网络权值作为初始化网络权值,加载待预测图像,重复S3~S10,输出执行结果。
(3)系统软硬件集成及板级调试与验证
在SDK中,将系统全局配置位流文件system.bit和可执行文件mynet.elf生成系统的启动文件Boot.bin文件,并保存至SD卡中。
将SD卡插入开发板卡槽,然后在硬件系统中添加Debug核,用于抓取信号,通过调试,验证系统功能的正确性。开发板上电后,系统先将样本集、测试集从SD卡加载到DDR3中,等待用户发出开始训练指令,工作过程中串口通信界面交互信息如图3所示。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (4)
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上实现;所述外部接口和所述学习引擎的输入输出互连,所述前馈加速器和所述学习引擎通过总线互连;所述前馈加速器包括可重构加速单元、数据缓存区、参数配置器、状态监控器和地址生成器,其中参数配置器的输出分别连接地址生成器和可重构加速单元,地址生成器的输出连接数据缓存区,数据缓存区的输出连接可重构加速单元,可重构加速单元的输出分别连接数据缓存区和状态监控器。
3.如权利要求1所述的一种基于SOC的可训练柔性CNN系统的控制方法,其特征在于,步骤4中,所述图像数据处理的前馈过程加速的具体实现方法如下:
(1)学习引擎将当前待加速CNN网络层的网络权值存储至数据缓存区,并向参数配置器发送当前待加速层CNN网络层的网络参数,配置地址生成器和可重构加速单元;
(2)地址生成器产生相应的图像、权值数据读取地址,向可重构加速单元加载数据流;
(3)可重构加速单元对输入图像数据进行卷积、激活、池化等运算,并将特征图结果保存至数据缓存区,作为下一级待加速CNN网络层的输入;
(4)状态监控器实时监测可重构加速单元的状态信号,等待当前待加速CNN网络层加速计算完毕;
(5)状态检测器向学习引擎发送请求处理下一级信号;
(6)重复(1)~(5),直至所有待加速CNN网络层处理完毕。
4.如权利要求3所述的图像数据处理的前馈过程加速的实现方法,其特征在于,采用加速器与数据流分离的设计方法:所述可重构加速单元包含N路运算链,每条运算链通过卷积、激活、池化等算子组合,提取一种特征信息,运算链路数N由参数配置器设置;所述地址生成器根据参数配置器设置的当前待加速层模型参数,生成数据缓存区的读取地址序列,自动向可重构加速单元加载数据流;通过控制加速器链路数与数据流的变化,灵活地适应不同卷积层的加速计算,实现CNN结构的柔性拓展。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910416537.9A CN110135572B (zh) | 2019-05-17 | 2019-05-17 | 一种基于soc的可训练柔性cnn系统设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910416537.9A CN110135572B (zh) | 2019-05-17 | 2019-05-17 | 一种基于soc的可训练柔性cnn系统设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110135572A true CN110135572A (zh) | 2019-08-16 |
CN110135572B CN110135572B (zh) | 2023-05-26 |
Family
ID=67571261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910416537.9A Active CN110135572B (zh) | 2019-05-17 | 2019-05-17 | 一种基于soc的可训练柔性cnn系统设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110135572B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111191772A (zh) * | 2020-01-02 | 2020-05-22 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向嵌入式环境的智能计算通用加速系统及其构建方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106228238A (zh) * | 2016-07-27 | 2016-12-14 | 中国科学技术大学苏州研究院 | 现场可编程门阵列平台上加速深度学习算法的方法和系统 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速系统 |
-
2019
- 2019-05-17 CN CN201910416537.9A patent/CN110135572B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106228238A (zh) * | 2016-07-27 | 2016-12-14 | 中国科学技术大学苏州研究院 | 现场可编程门阵列平台上加速深度学习算法的方法和系统 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速系统 |
Non-Patent Citations (1)
Title |
---|
王昆等: "基于深度学习的实时识别硬件系统框架设计", 《电子技术应用》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111191772A (zh) * | 2020-01-02 | 2020-05-22 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向嵌入式环境的智能计算通用加速系统及其构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110135572B (zh) | 2023-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Knight et al. | GPUs outperform current HPC and neuromorphic solutions in terms of speed and energy when simulating a highly-connected cortical model | |
US9754221B1 (en) | Processor for implementing reinforcement learning operations | |
CN107103113B (zh) | 面向神经网络处理器的自动化设计方法、装置及优化方法 | |
US10949743B2 (en) | Method and system for implementing reinforcement learning agent using reinforcement learning processor | |
CN104899076B (zh) | 一种超大规模集成电路门级网表仿真的加速方法 | |
CN109937418B (zh) | 用于仿真的基于波形的重构 | |
CN112433819A (zh) | 异构集群调度的模拟方法、装置、计算机设备及存储介质 | |
CN110309911A (zh) | 神经网络模型验证方法、装置、计算机设备和存储介质 | |
US11860227B2 (en) | Machine learning delay estimation for emulation systems | |
De Sio et al. | FireNN: Neural networks reliability evaluation on hybrid platforms | |
US20230120227A1 (en) | Method and apparatus having a scalable architecture for neural networks | |
CN114611686A (zh) | 基于可编程神经拟态核的突触延时实现系统及方法 | |
Huang et al. | Real-time radar gesture classification with spiking neural network on SpiNNaker 2 prototype | |
CN101025625A (zh) | 一种基于dsp的嵌入式智能控制器 | |
EP3805995A1 (en) | Method of and apparatus for processing data of a deep neural network | |
Kim et al. | The implementation of a power efficient bcnn-based object detection acceleration on a xilinx FPGA-SOC | |
CN110135572A (zh) | 一种基于soc的可训练柔性cnn系统设计方法 | |
CN115629928B (zh) | 一种面向类脑处理器的软硬协同验证方法及系统 | |
CN104991884B (zh) | 异构多核SoC的体系结构设计方法 | |
CN111143208B (zh) | 基于处理器技术辅助fpga实现ai算法的验证方法 | |
Callanan et al. | Estimating stream application performance in early-stage system design | |
CN118551717A (zh) | 用于各种协议总线事务的基于机器学习的异常检测系统 | |
CN111506384B (zh) | 模拟运算方法和模拟器 | |
US20220366267A1 (en) | Performance Modeling and Analysis of Artificial Intelligence (AI) Accelerator Architectures | |
Feng et al. | SOPC-based Implementation of Convolutional Neural Network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |