CN111967572A - 一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法 - Google Patents
一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法 Download PDFInfo
- Publication number
- CN111967572A CN111967572A CN202010664447.4A CN202010664447A CN111967572A CN 111967572 A CN111967572 A CN 111967572A CN 202010664447 A CN202010664447 A CN 202010664447A CN 111967572 A CN111967572 A CN 111967572A
- Authority
- CN
- China
- Prior art keywords
- yolo
- fpga
- network
- parameters
- calculation
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000004364 calculation method Methods 0.000 claims description 21
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000013139 quantization Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000004260 weight control Methods 0.000 description 1
Images
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
-
- 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
Abstract
本发明公开了一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法,本发明的提出可以在不增加额外控制逻辑的前提下,通过配置参数来控制数据经过或者跳过这些功能模块,达到参数控制按照预设的YOLO_V3网络结构运行或待机,同样也可以将参数配置成YOLO V3 Tiny3网络结构,这样的设计就可以切换网络的作用,并且也可以动态的按需调整网络的选择,达到更高精度,更快速度,更低功耗的要求。
Description
技术领域
本发明涉及网络切换方法技术领域,具体是一种基于FPGA的YOLO V3和YOLO V3Tiny网络切换方法。
背景技术
随着人工智能技术的不断普及,其在各行各业的应用也越来越广泛,但基于FPGA下的目标检测,虽然得益于FPGA的高速计算和低功耗,但同样受限于其硬件特性,有限的资源只可以容纳当量有限的网络模型,所以也就引起了一个尴尬的问题,在FPGA下YOLO V3网络精度高于YOLO V3 Tiny大约10%~15%,但是在基于FPGA下YOLO V3网络的帧率只有1.836FPS,YOLO V3 Tiny在同样环境下却有着26.141FPS,但在精度和速度的共同要求下,一块FPGA开发板,两种网络结构又放不下的这种情况。
传统方式FPGA下的YOLO模型结构示意图1所示,其组成主要卷积模块以N_PE个计算单元.通过AXI总线,将权重缓存到FPGA,其中这些卷积单元同时进行计算等操作后,再将结果写入缓存.这样的设计结构简单直接,但是在逻辑设计好的时候,就已经确定了网络的形状,后续的数据就只能按照当前设计流动,网络就失去了可变性.
上述FPGA(Field Programmable Gate Array)即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物,它是作为专用集成电路(ASIC)领域中的一种半定制电路出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA的概念,内部包括可配置逻辑模块CLB,输入输出模块IOB和内部连线三个部分。嵌入式可编程逻辑阵列有如下优势:(1)可实现软硬IP核;(2)与工艺无关;(3)很容易集成到系统级芯片(SoC)中;(4)紧凑的嵌入式可编程逻辑阵列可在低功耗下实现更高的逻辑密度;(5)目标应用程序的高度可定制化。
根据以上描述,本发明提出了一种基于嵌入式可编程逻辑阵列下YOLO V3 Tiny和YOLO V3网络的切换方法,此方法解决了在FPGA有限资源下既要求精度又要求速度的冲突问题,进一步简化集成控制逻辑,减少冗余设计,从而实现系统在功耗、面积和速度上的优化配置以达到更高的效率。
发明内容
本发明的目的在于提供一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法,计算程序的运行由寄存器指令驱动程序初始化,将控制参数,权重参数,量化参数及输入数据输入到DataBuffer,控制参数会自动选择整个项目的计算逻辑及计算顺序进行运算,运算完成后写回数据到DDR,完成memory to memory的操。
作为本发明进一步的方案:计算程序的运行由寄存器指令驱动程序初始化,将控制参数,权重参数,量化参数及输入数据输入到DataBuffer,控制参数会自动选择整个项目的计算逻辑及计算顺序进行运算,运算完成后写回数据到DDR,完成memory to memory的操作。
作为本发明再进一步的方案:参数表生成的控制参数首先进入控制器中进行解析,随后将控制参数分散到程序中的各个接口,并且控制读取DDR中的FM数据送入所需要经过或跳过的功能模块,最后再控制数据写回DDR或者直接输出,写结束的信号会驱动控制器继续分发下一层网络结构的控制参数,由此循环,以达到预设的网络结构。
作为本发明再进一步的方案:在参数送入控制器解析的时候,这时候,可以根据需要,可以手动输入控制信号送入判断逻辑中,或者在参数表中进行预设来进行选择网络结构,选择网络结构结束后,控制器才会给各个模块分发对应网络结构的控制参数,控制程序进行工作。
与现有技术相比,本发明的有益效果是:
1、本发明提出的网络切换方法可以实现在不使用FPGA宝贵的额外资源情况下,实现根据用户需求,通过配置好的控制参数,送入FPGA内,根据预设的判断条件或者用户需求来进行更换网络。
2、本发明的切换方法,完全可以将所有的参数在程序外根据需求进行预先配置生成二进制文件,只需要将生成的二进制文件输入进程序,将参数分别分到各个接口即可,这样一方面减轻的FPGA的设计压力,另一方面FPGA上在不增加过多逻辑的情况下,拥有了相当难得的灵活性。因为参数的配置在程序之外进行预设,所以在FPGA资源上可以进一步减少,将节约的资源进一步优化程序,提升效率。
3、本发明还有一个好处就是,如果YOLO模型进行优化、剪枝等操作,甚至不用调整程序,只需要在参数表中修改参数,调整成优化后的结构即可完成调整,大大减少了二次开发的工作量问题,这都是基于FPGA传统神经网络开发所达不到的效果。
附图说明
图1为一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法使用FPGA实现YOLO的传统的示意图。
图2为一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法中网络切换方法的示意图。
图3为一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法中内部交互关系的示意图。
图4为一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法中内部交互关系的示意图。
图5为一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法中判断条件内部的示意图。
图6为一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法中YOLO_V3_Tiny控制参数表的示意图。
图7为一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法中YOLO_V3控制参数表的示意图。
图8为一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法中外部交互关系的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1~4,本发明实施例中,一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法,本发明基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法优于传统FPGA下神经网络设计架构表现在:
经本发明的方法优化架构,可以使得根据需求任意切换YOLO_V3和YOLO_V3_Tiny,在FPGA有限资源下,达到精度和速度并存的效果。
如图2所示,计算程序的运行由寄存器指令(command)驱动程序初始化,将控制参数(General Para Control),权重参数(Weight Control),量化参数(Quantize Control)及输入数据(Feature Map)输入到DataBuffer,控制参数会自动选择整个项目的计算逻辑(Convolution,BN,Scale,Relu,Eltwise,Interp,Quantize)及计算顺序进行运算,运算完成后写回数据到DDR,完成memory to memory的操作。
一种独特的FPGA设计架构下如图2所示,将两种网络所需要的功能独立成各个模块,并加以控制器输出预设好的控制信号,来控制数据流的走向,根据需要以达到切换不同网络的效果,这样就可以在有限的资源上,不增加冗余的设计,还可以达到YOLO V3 Tiny和YOLO V3网络的切换。
本发明的网络切换方法的结构设计由图3所示,其中参数表生成的控制参数首先进入控制器中进行解析,随后将控制参数分散到程序中的各个接口,并且控制读取DDR中的FM数据送入所需要经过或跳过的功能模块,最后再控制数据写回DDR或者直接输出,写结束的信号会驱动控制器继续分发下一层网络结构的控制参数,由此循环,以达到预设的网络结构。
其中本发明的结构设计,如图4,在参数送入控制器解析的时候,这时候,可以根据需要,可以手动输入控制信号送入判断逻辑中,或者在参数表中进行预设来进行选择网络结构,选择网络结构结束后,控制器才会给各个模块分发对应网络结构的控制参数,控制程序进行工作。在判断模块中。
如图5,一方面是为了产生启停信号来控制程序运行,另一方面会有一些特殊情况的预设考虑都在这里进行。比如说,YOLO中的某一层需要做Eltwise,其中层计数逻辑满足后,就会触发该条件下的预设情况。或者在整个网络运行结束,根据预设,或者人为控制来决定是否还需要切换模型结构,还是继续使用该结构继续运行,也可以人为操作或预设,来控制程序工作或者待机,进一步降低功耗。所以说,本发明可以根据需求,在判断逻辑中进行灵活变更。
如图6、图7所示,图6为Tiny网络,图7为V3网络,其中“Type”的字段描述该层网络的计算方式,根据这个字段可以清晰的确定本层所需要实现的功能,从而确定该层的控制参数。“计算模块”字段表示完成本层的计算所需要启动的计算模块,并根据计算模块,填写对应的控制参数。“OutPut Size”字段描述本层输出的尺寸大小,由此可以确定本层输出的数据大小,并且本字段还确定写入DDR的数据大小,写入形状等参数。
根据以上说明,只需要用户将网络中每层的参数及形状、数据的读写地址等参数填入,生成二进制文件送入程序中,程序便会按照控制参数运行。
具体实施例一
假设在某个实验场景下,无人机在高空识别地面人员目标,其中无人机在快速移动的过程中,如果在传统的方式下,要么是tiny网络,那么帧率虽然足够快,但是精度不足,很多目标都会被过滤掉,而V3网络虽然精度足够的高,但是因为计算量的问题,所以帧率很低,在无人机高速移动情况下,很大可能会因为丢帧问题,完全错过目标。
所以在本方法下,如图8所示,在无人机高速移动中,由传感器将图像数据传入FPGA,在默认情况下使用tiny网络,以满足高帧率的需求,在发现目标后,在判断模块中的预设逻辑,比如类别少量置信度较低情况,即刻切换V3网络,或者也可以通过人工干预更换网络,再次进行识别,这时候虽然帧率较低,但是关键目标就可以完全抓住,这样就可以达到在满足帧率的情况下,也可以在一些场景下满足足够够高的精度,在完成识别目标后,可以根据需要在判断逻辑中增加预设条件,自动或者人工的切换回默认Tiny网络,同样在无人机上还可以在不需要工作的时候,可以让程序待机,进一步降低功耗,所以本方法的提出相比于传统的设计架构,无论是速度、精度、功耗、设计复杂度、灵活性等等方面都有很好的提升。
表1
具体实施例二
假设基于本方法的设计架构下,在V3网络,如图7,75层Conv剪枝为41层Conv,此时,只需要按照剪枝后的网络结构,相应的修改参数表的层数、形状,及读写数据的地址,每层网络需要经过的模块等参数,完全不需要去调整FPGA的代码,这样极大的减少了二次开发的工作量,以达到快速更换网络结构的要求。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (3)
1.一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法,其特征在于,计算程序的运行由寄存器指令驱动程序初始化,将控制参数,权重参数,量化参数及输入数据输入到DataBuffer,控制参数会自动选择整个项目的计算逻辑及计算顺序进行运算,运算完成后写回数据到DDR,完成memory to memory的操作。
2.根据权利要求1所述的一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法,其特征在于,参数表生成的控制参数首先进入控制器中进行解析,随后将控制参数分散到程序中的各个接口,并且控制读取DDR中的FM数据送入所需要经过或跳过的功能模块,最后再控制数据写回DDR或者直接输出,写结束的信号会驱动控制器继续分发下一层网络结构的控制参数,由此循环,以达到预设的网络结构。
3.根据权利要求1所述的一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法,其特征在于,在参数送入控制器解析的时候,手动输入控制信号送入判断逻辑中,或者在参数表中进行预设来进行选择网络结构,选择网络结构结束后,控制器才会给各个模块分发对应网络结构的控制参数,控制程序进行工作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010664447.4A CN111967572A (zh) | 2020-07-10 | 2020-07-10 | 一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010664447.4A CN111967572A (zh) | 2020-07-10 | 2020-07-10 | 一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111967572A true CN111967572A (zh) | 2020-11-20 |
Family
ID=73362293
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010664447.4A Pending CN111967572A (zh) | 2020-07-10 | 2020-07-10 | 一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111967572A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113709272A (zh) * | 2021-08-26 | 2021-11-26 | 无锡思朗电子科技有限公司 | 一种提高图像切换速度的方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104112066A (zh) * | 2014-08-18 | 2014-10-22 | 天津大学 | 基于fpga的癫痫状态闭环控制实验平台 |
CN109711533A (zh) * | 2018-12-20 | 2019-05-03 | 西安电子科技大学 | 基于fpga的卷积神经网络模块 |
CN110070181A (zh) * | 2019-04-30 | 2019-07-30 | 深圳朴生智能科技有限公司 | 一种用于边缘计算设备的深度学习的优化方法 |
CN110175670A (zh) * | 2019-04-09 | 2019-08-27 | 华中科技大学 | 一种基于FPGA实现YOLOv2检测网络的方法及系统 |
US20190377999A1 (en) * | 2018-06-11 | 2019-12-12 | Inait Sa | Encoding and decoding information and artificial neural networks |
US20190385048A1 (en) * | 2018-06-19 | 2019-12-19 | International Business Machines Corporation | Runtime reconfigurable neural network processor core |
CN111191772A (zh) * | 2020-01-02 | 2020-05-22 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向嵌入式环境的智能计算通用加速系统及其构建方法 |
CN111339027A (zh) * | 2020-02-25 | 2020-06-26 | 中国科学院苏州纳米技术与纳米仿生研究所 | 可重构的人工智能核心与异构多核芯片的自动设计方法 |
-
2020
- 2020-07-10 CN CN202010664447.4A patent/CN111967572A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104112066A (zh) * | 2014-08-18 | 2014-10-22 | 天津大学 | 基于fpga的癫痫状态闭环控制实验平台 |
US20190377999A1 (en) * | 2018-06-11 | 2019-12-12 | Inait Sa | Encoding and decoding information and artificial neural networks |
US20190385048A1 (en) * | 2018-06-19 | 2019-12-19 | International Business Machines Corporation | Runtime reconfigurable neural network processor core |
CN109711533A (zh) * | 2018-12-20 | 2019-05-03 | 西安电子科技大学 | 基于fpga的卷积神经网络模块 |
CN110175670A (zh) * | 2019-04-09 | 2019-08-27 | 华中科技大学 | 一种基于FPGA实现YOLOv2检测网络的方法及系统 |
CN110070181A (zh) * | 2019-04-30 | 2019-07-30 | 深圳朴生智能科技有限公司 | 一种用于边缘计算设备的深度学习的优化方法 |
CN111191772A (zh) * | 2020-01-02 | 2020-05-22 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向嵌入式环境的智能计算通用加速系统及其构建方法 |
CN111339027A (zh) * | 2020-02-25 | 2020-06-26 | 中国科学院苏州纳米技术与纳米仿生研究所 | 可重构的人工智能核心与异构多核芯片的自动设计方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113709272A (zh) * | 2021-08-26 | 2021-11-26 | 无锡思朗电子科技有限公司 | 一种提高图像切换速度的方法 |
CN113709272B (zh) * | 2021-08-26 | 2024-01-19 | 无锡思朗电子科技有限公司 | 一种提高图像切换速度的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101118568A (zh) | 仿真红外探测器输出信号的装置及方法 | |
US20130021058A1 (en) | System and method for reducing reconfiguration power usage | |
CN103714024A (zh) | 一种基于SoC FPGA的多串口并行处理架构 | |
CN205069079U (zh) | 多功能led显示屏控制系统 | |
CN111967572A (zh) | 一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法 | |
CN1874453A (zh) | 可实现待机低功耗且快速启动的电视机 | |
CN103713543A (zh) | 一种基于fpga的多串口并行处理架构 | |
CN100589123C (zh) | 一种静止图像缩放装置及其方法 | |
CN201984777U (zh) | 一种led数码管驱动电路 | |
CN103092787A (zh) | 一种基于PowerPC架构的多功能低功耗总线通讯模块 | |
CN102025889B (zh) | 基于fpga和sdram的高清数字视频帧同步的系统 | |
CN109688462A (zh) | 降低设备功耗的方法、装置、电子设备及存储介质 | |
CN115114221B (zh) | 基于异构多核架构的数据处理系统及方法 | |
CN204481952U (zh) | 一种基于高清视频切换和摄像跟踪的会议系统 | |
CN102833541B (zh) | 用于mpeg-2视频解码的sdram控制系统 | |
CN214205739U (zh) | 一种光电平台用基于fpga的通用型高清显示系统 | |
CN113704156B (zh) | 感知数据处理装置、板卡、系统及方法 | |
CN108197063A (zh) | Fpga的spi接口主动串行配置方法及装置 | |
CN104460482B (zh) | 基于cpld的双机热切换控制器 | |
CN202854647U (zh) | 零终端机 | |
CN101263441B (zh) | 用于cmos电路总线的电源管理 | |
CN111161723A (zh) | 基于语音识别的多模态大屏交互的方法及装置 | |
CN102301649B (zh) | 保护倒换装置和方法 | |
CN201467105U (zh) | 一种基于fpga和三模冗余思想的实时高可靠译码芯片 | |
CN100523924C (zh) | 液晶显示装置及其方法 |
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 |