CN113705803B - 基于卷积神经网络的图像硬件识别***及部署方法 - Google Patents
基于卷积神经网络的图像硬件识别***及部署方法 Download PDFInfo
- Publication number
- CN113705803B CN113705803B CN202111011695.XA CN202111011695A CN113705803B CN 113705803 B CN113705803 B CN 113705803B CN 202111011695 A CN202111011695 A CN 202111011695A CN 113705803 B CN113705803 B CN 113705803B
- Authority
- CN
- China
- Prior art keywords
- data
- convolution
- fpga
- network
- sram
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 20
- 238000007781 pre-processing Methods 0.000 claims abstract description 18
- 238000012805 post-processing Methods 0.000 claims abstract description 16
- 230000005540 biological transmission Effects 0.000 claims abstract description 10
- 230000003993 interaction Effects 0.000 claims abstract description 8
- 230000008707 rearrangement Effects 0.000 claims abstract description 6
- 238000009825 accumulation Methods 0.000 claims abstract description 4
- 108091006146 Channels Proteins 0.000 claims description 30
- 238000013139 quantization Methods 0.000 claims description 25
- 239000011159 matrix material Substances 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 13
- 241001442055 Vipera berus Species 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 8
- 230000001133 acceleration Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 6
- 230000000694 effects Effects 0.000 claims description 6
- 238000013486 operation strategy Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 claims description 2
- 239000012634 fragment Substances 0.000 claims 1
- 238000009826 distribution Methods 0.000 abstract description 5
- 238000005457 optimization Methods 0.000 abstract description 4
- 230000001629 suppression Effects 0.000 abstract description 4
- 238000013461 design Methods 0.000 description 9
- 238000005520 cutting process Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 2
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及基于卷积神经网络的图像硬件识别***及部署方法,基于SoC平台实现MobileNetV1 SSD网络进行图像识别,平台内置ARM处理器和FPGA。ARM端完成全局调度任务,主要完成数据预处理,数据重排,网络推理,FPGA配置,以及后处理,包括非极大值抑制算法实现。ARM端整体策略采用按通道取数的方式以及MEC策略来降低数据重复率。FPGA端设计数据分发模块配合特殊尺寸的SRAM进行数据缓存,1*1和3*3两种卷积控制器,其中3*3卷积可配置成dw卷积和normal卷积两种模式,PE乘法阵列、加法树阵列,以及通道累加模块,大大提高资源的利用率。ARM端和FPGA端的交互通过调用驱动函数ioctl来实现,映射到硬件的Avalon接口实现数据与配置信息传输。本发明在板子资源受限的情况下有较好的优化。
Description
技术领域
本发明涉及图像处理领域,具体涉及一种基于卷积神经网络的图像硬件识别***及部署方法。
背景技术
近年来,随着算力的增长以及深度学习领域的发展,卷积神经网络(CNN)在图像分类、目标检测和语音识别、计算机视觉等方面取得了很大的进展,并在实际应用中有广泛的应用。CNN的特征检测层通过训练数据进行学习,避免了显示的特征抽取,而是隐式地从训练数据中进行学习;除此之外CNN在同一特征映射面上的神经元权值相同,所以网络可以并行学习,因此CNN在准确率上远远超过其他机器学习算法,但在精度提高的同时,CNN的深度以及规模也在迅速增长。CNN的本质为卷积运算,会带来大量的资源消耗,为神经网络在移动端的部署带来了巨大的挑战。
目前关于CNN在移动端的实现有两个主要研究方向:一是基于ASIC定制电路进行实现,ASIC效率高,性能好但是ASIC设计难度大,验证周期长,且灵活性很差,定制完之后无法在更改;另一个方向是基于FPGA进行部署,单纯的FPGA硬件电路设计相对于ASIC具有较好的设计迭代速度,能够快速进行验证,但是单纯的FPGA对于数据的预处理,结果数据的后处理等操作并不高效。
SoCFPGA结合了ARM的灵活性以及FPGA的高并行度,可以将FPGA的高并行度多为加速的关键,利用ARM的灵活性来完成整个网络的调度,包括数据的预处理,结果数据的后处理等操作。充分发挥FPGA的并行优势,加速CNN的推理过程。
目前大多数基于SoCFPGA的网络部署方案需要依赖于已有的框架移植,消耗资源过多且移植较为繁琐,除此之外传统的部署方案受限于片上资源,不得不在ARM和FPGA之间过于频繁的数据交互,严重影响了整个网络的推理过程,无法发挥FPGA硬件加速的优势。
发明内容
发明目的:提出一种基于卷积神经网络的图像硬件识别***,并进一步提出一种基于上述***所提出的部署方法,该方案可以脱离框架的限制,自主完成整个网络的推理以及数据处理,且优化计算的次序,减少ARM与FPGA的数据交互次数,提高整个网络的推理过程,更好的满足实际应用的需求,从而解决现有技术存在的上述问题。
技术方案:第一方面,提供了一种基于卷积神经网络的图像硬件识别***,该***包括ARM端和FPGA端;
ARM端用于完成数据预处理,数据重排,网络推理,FPGA配置,以及后处理操作;FPGA端用于完成计算密集的任务,实现卷积加速。
利用ARM的灵活性脱离神经网络框架,控制整个网络的推理过程,整体策略采用按通道取数的方式以及MEC策略来降低数据重复率。利用FPGA的高并行度来完成计算密集的任务,主要实现卷积的加速。
在第一方面的一些可实现方式中,ARM端包括预处理模块、网络推理模块、后处理模块、驱动模块;
预处理模块用于读取图片文件、将其缩放到预定尺寸,并转化为预定格式;网络推理模块与所述预处理模块建立双向通信;后处理模块与所述网络推理模块建立双向通信;驱动模块同时与所述预处理模块、网络推理模块、以及后处理模块建立双向通信,用于驱动所述FPGA端。
在第一方面的一些可实现方式中,FPGA端包括SRAM、多个卷积控制器、卷积核控制器、以及PE阵列;
SRAM用于对所述ARM端的数据进行传输以及卷积的存取数操作;卷积控制器根据标志位配置成dw卷积和normal卷积两种卷积计算模式;卷积核控制器用于实现卷积运算;PE阵列包括乘法器阵列以及加法树阵列,用于卷积的具体运算。
第二方面,提供了一种部署方法,该部署方法用于对第一方面提及的图像硬件识别***进行部署,步骤如下:
ARM端完成输入数据以及权重数据、偏置数据的处理;
FPGA端用于完成计算密集的任务,实现卷积加速。
在第二方面的一些可实现方式中,ARM端完成数据预处理,数据重排,网络推理,FPGA配置,以及后处理,先验框生成,解码得到预测框的置信度和位置信息,以及非极大值抑制算法过滤重合的预测框。
在第二方面的一些可实现方式中,ARM端完成输入数据以及权重数据、偏置数据的处理包括以下步骤:
步骤1)数据预处理:通过opencv读取图片文件并进行缩放,缩放到1*3*300*300的固定尺寸,并进行图片格式的转化:NHWC->NCHW,方便FPFA的运算。
步骤2)数据量化:基于FPGA资源的限制,本发明对数据进行不同位宽的量化,输入数据、权重数据、偏置数据进行8bit有符号量化。输出数据为32bit,需要及进行解量化。偏置数据的量化因子为输入数据、权重数据的量化因子的乘积。
以输入数据的Int8量化为例,过程主要有以下几个步骤:
步骤1)查找输入数据中的对大值Vmax。
步骤2)得到量化因子Fd。
步骤3)输入数据乘Fd,映射到[-127,127]之间。
步骤4) 权重的量化过程与输入数据一致,其量化因子为Fw,偏置的量化因子为;
在第二方面的一些可实现方式中,ARM端根据改进MEC的运算策略上述对量化数据进行重新排布,方便FPGA的存取数以及运算,具体的MEC运算策略包括以下步骤:
步骤1)输入根据卷积核的尺寸以及步径,将输入数据按列进行取数,以3为维度,按列取数,得到ABCDE五个矩阵。
步骤2)将得到的输入矩阵展依次展开成一维数据排列并拼接,受限于ARM端和FPGA端硬件接口为128bit,需要补零操作。
步骤3)3*3卷积将输入数据按照3个一组进行分组,一次数据传输可以传输5组数据(120bit),补零至128bit得到第一个数据包,每四个数据包有效数据之间有两组数据(6Byte)的重叠,方便下一个卷积的运算。
步骤4)1*1卷积将输入数据按照次序传输16个数据,共128bit,无需补零。
步骤5)将卷积核一维展开:3*3卷积核将9个数(72bit)拼接上偏置数据(8bit),补零至128bit;1*1卷积将1个数(8bit)拼接上偏置数据(8bit), 补零至128bit。
步骤6)按照通道的顺序,依次重复上述步骤,得到整个输入数据以及权重、偏置数据的矩阵。
本发明基于软硬件协同的方案,因此ARM端的数据排布需要有相匹配的赢家进行处理,因此,根据以上ARM端的数据排布,FPGA端设计特殊尺寸的SRAM配合数据分发模块,用于ARM端数据的传输以及卷积的存取数操作。根据ARM端整体运算策略,传输输入数据时一个数据包(128bit)有120bit的有效数据,PFGA数据分发模块通过截位操作取得有效的120bit,四个数据包拼接成一个480bit并存入SRAM。传输权重数据时一个数据包(128bit)有80bit(72bit+8bit)的有效数据,PFGA通过截位操作取得有效的80bit,并存入权重SRAM。考虑到累加对于位宽的扩展效果,本发明采用32bit来存储结果数据,以3*3卷积为例,一个完整的480bit数据可以取出18个卷积数据,即一个结果SRAM地址需要存储18个32bit数据,576bit。考虑到FPGA端的资源限制,本发明SRAM设计为3种不同的尺寸,分别512*480,512*96,576*1536,分别为输入SRAM,权重SRAM,输出SRAM。
在第二方面的一些可实现方式中,考虑到ARM与FPGA之间数据交互会耗费大量时间,因此ARM端传输数据特邀进行额外的优化。ARM与FPGA通过Avalon接口进行数据传输,最大位宽为128bit,这里的数据包括数据数据以及配置信息,两者需要进行匹配。受限于板上资源,无法将一次完整的卷积所需的数据传送到FPGA端,因此计算次序采用按通道取数的分片方法有效避免同一批输入数据的反复传输,以此减少软硬件数据交互次数包括以下步骤:
步骤1)计算FPGA的最大存储量,oc为输出通道,oh为输出尺寸,以输出尺寸为维度,输出SRAM最大的存储行数(向下取整)如下所示:
步骤2)根据output_row的值计算所需的输入SRAM深度(向下取整)以及分片总数,公式如下:
步骤3)传输所有的权重数据,再以输入SRAM的深度为一片数据的基本单位,按照通道的顺序,依次传输每一个通道的第一片输入数据。
步骤4)再次按照通道顺序,传输每一个通道的第二片输入数据。直到遍历完所有的数据。
在第二方面的一些可实现方式中,FPGA端设计卷积核控制器,实现两种卷积运算,分别为1*1卷积和3*3卷积,其中3*3卷积为可配置卷积,根据标志位可以灵活配置成DW卷积和normal卷积,两者主要是在地址生成模块有不同的模式。两种卷积控制器均设置了通道累加功能,若不是通道0的数据,则本次卷积结果会与上次卷积结果相加,即对结果SRAM的数据进行累加再重新存入结果SRAM中。为了满足计算的需求且尽可能的降低资源消耗以及功耗,FPGA端设计PE阵列来完成卷积的运算。其中PE为具体的运算阵列,有效的节约FPGA资源并改善时序。3*3卷积调用乘法器阵列和加法树阵列,1*1卷积调用乘法器阵列。根据数据的存储策略,一个输入SRAM地址所对应的最大计算量(3*3卷积)有18个卷积结果并行生成,每一个卷积结果需要9个乘法器,8个加法器,因此乘法器需要18*9=162个乘法器组成阵列,加法器需要18*8=144个加法器组成加法树阵列。
在第二方面的一些可实现方式中,FPGA计算完所有的数据之后,ARM端自主实现数据后处理,在网络搭建之前先生成一系列先验框作为参考,根据先验框数据的解码预测框位置,将预测框位置矩阵与先验框位置矩阵一一对应计算得到预测框的坐标以及所有类的置信度,过程得出了网络输出的预测框位置以及置信度,最后由非极大值算法去除重合度比较高的预测框留下最终的效果框。
有益效果:
本发明实现了基于SoC的卷积神经网络的软硬件部署方案,脱离了框架的限制,在资源受限的情况下可以有较好的优化效果。
本发明采用了MEC策略对数据进行重排,并且采用按通道分片取数的方式,有效降低了对片上存储资源的消耗,提高效率。
本发明应用可重构的思想,设计了两种卷积控制器,其中3*3卷积控制器实现了可配置。
本发明自主实现了数据的后处理,包括先验框生成、预测框解码、非极大值抑制算法(NMS)。
附图说明
图1是本发明的软硬件部署方案总体架构。
图2是本发明的卷积运算的MEC运算策略。
图3为发明的数据包重叠排列。
图4是本发明设计的输入SRAM数据拼接及卷积数量。
图5是本发明按通道分片取数方案示意图。
图6是本发明两种卷积控制器示意框图。
图7是本发明PE加法树阵列。
具体实施方式
在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。
本发明具体实施是基于MobileNetV1 SSD实现的。ARM端完成数据预处理,数据重排,网络推理,FPGA配置,以及后处理,先验框生成,解码得到预测框的置信度和位置信息,以及非极大值抑制算法过滤重合的预测框。
ARM端完成输入数据以及权重数据、偏置数据的处理包括以下步骤:
步骤1)数据预处理:通过opencv读取图片文件并进行缩放,缩放到1*3*300*300的固定尺寸,并进行图片格式的转化:NHWC->NCHW,方便FPFA的运算。
步骤2)数据量化:基于FPGA资源的限制,本发明对数据进行不同位宽的量化,输入数据、权重数据、偏置数据进行8bit有符号量化。输出数据为32bit,需要及进行解量化。偏置数据的量化因子为输入数据、权重数据的量化因子的乘积。
以输入数据的Int8量化为例,过程主要有以下几个步骤:
步骤1)查找输入数据中的对大值Vmax。
步骤2)得到量化因子Fd。
步骤3)输入数据乘Fd,映射到[-127,127]之间。
步骤4) 权重的量化过程与输入数据一致,其量化因子为Fw,偏置的量化因子为;
ARM端根据改进MEC的运算策略上述对量化数据进行重新排布,方便FPGA的存取数以及运算,具体的MEC运算策略见图2所示,包括以下步骤:
步骤1)输入根据卷积核的尺寸以及步径,将输入数据按列进行取数,如图则是以3为维度,按列取数,得到ABCDE五个矩阵。
步骤2)将得到的输入矩阵展依次展开成一维数据排列并拼接,受限于ARM端和FPGA端硬件接口为128bit,需要补零操作。
步骤3)3*3卷积将输入数据按照3个一组进行分组,一次数据传输可以传输5组数据(120bit),补零至128bit得到第一个数据包,每四个数据包有效数据之间有两组数据(6Byte)的重叠,见图3,方便下一个卷积的运算。
步骤4)1*1卷积将输入数据按照次序传输16个数据,共128bit,无需补零。
步骤5)将卷积核一维展开:3*3卷积核将9个数(72bit)拼接上偏置数据(8bit),补零至128bit;1*1卷积将1个数(8bit)拼接上偏置数据(8bit), 补零至128bit。
步骤6)按照通道的顺序,依次重复上述步骤,得到整个输入数据以及权重、偏置数据的矩阵。
本发明基于软硬件协同的方案,因此ARM端的数据排布需要有相匹配的赢家进行处理,因此,根据以上ARM端的数据排布,FPGA端设计特殊尺寸的SRAM配合数据分发模块,用于ARM端数据的传输以及卷积的存取数操作。根据ARM端整体运算策略,传输输入数据时一个数据包(128bit)有120bit的有效数据,PFGA数据分发模块通过截位操作取得有效的120bit,四个数据包拼接成一个480bit并存入SRAM见图4。传输权重数据时一个数据包(128bit)有80bit(72bit+8bit)的有效数据,PFGA通过截位操作取得有效的80bit,并存入权重SRAM。考虑到累加对于位宽的扩展效果,本发明采用32bit来存储结果数据,以3*3卷积为例,一个完整的480bit数据可以取出18个卷积数据见图4,即一个结果SRAM地址需要存储18个32bit数据,576bit。考虑到FPGA端的资源限制,本发明SRAM设计为3种不同的尺寸,分别512*480,512*96,576*1536,分别为输入SRAM,权重SRAM,输出SRAM。
考虑到ARM与FPGA之间数据交互会耗费大量时间,因此ARM端传输数据特邀进行额外的优化。ARM与FPGA通过Avalon接口进行数据传输,最大位宽为128bit,这里的数据包括数据以及配置信息,两者需要进行匹配。受限于板上资源,无法将一次完整的卷积所需的数据传送到FPGA端,因此计算次序采用按通道取数的分片方法有效避免同一批输入数据的反复传输,见图5,以此减少软硬件数据交互次数包括以下步骤:
步骤1)计算FPGA的最大存储量,oc为输出通道,oh为输出尺寸,以输出尺寸为维度,输出SRAM最大的存储行数(向下取整)如下所示:
步骤2)根据output_row的值计算所需的输入SRAM深度(向下取整)以及分片总数,公式如下:
步骤3)传输所有的权重数据,再以输入SRAM的深度为一片数据的基本单位,按照通道的顺序,依次传输每一个通道的第一片输入数据。
步骤4)再次按照通道顺序,传输每一个通道的第二片输入数据。直到遍历完所有的数据。
FPGA端设计卷积核控制器,实现两种卷积运算,分别为1*1卷积和3*3卷积,其中3*3卷积为可配置卷积,根据标志位可以灵活配置成DW卷积和normal卷积,两者主要是在地址生成模块有不同的模式。两种卷积控制器均设置了通道累加功能,若不是通道0的数据,则本次卷积结果会与上次卷积结果相加,即对结果SRAM的数据进行累加再重新存入结果SRAM中。为了满足计算的需求且尽可能的降低资源消耗以及功耗,FPGA端设计PE阵列来完成卷积的运算,卷积核控制器的框图见图6。其中PE为具体的运算阵列,加法树见图7所示,有效的节约FPGA资源并改善时序。3*3卷积调用乘法器阵列和加法树阵列,1*1卷积调用乘法器阵列。根据数据的存储策略,一个输入SRAM地址所对应的最大计算量(3*3卷积)有18个卷积结果并行生成,每一个卷积结果需要9个乘法器,8个加法器,因此乘法器需要18*9=162个乘法器组成阵列,加法器需要18*8=144个加法器组成加法树阵列。
FPGA计算完所有的数据之后,ARM端自主实现数据后处理,在网络搭建之前先生成一系列先验框作为参考,SSD算法是常用的onestage算法,在网络搭建之前先生成一系列先验框作为参考,用于网络训练以及结果数据解码。标准SSD算法选取了六个尺寸的特征图分割图片,每个尺寸特征图对应五个长宽比,每个长宽比对应一个尺寸系数,以及一个特殊尺寸系数。先验框是固定的值因此只需要生成一次,就可以根据先验框数据的解码预测框位置。每种特征图都会从detection层中得出两个输出,其中通道数较多的输出存放预测框对应的21个类别的置信度,通道数较少的输出存放预测框的位置及尺寸偏移信息。将预测框位置矩阵与先验框位置矩阵一一对应进行计算,就解码出预测框的坐标信息。而每个预测框对应的置信度为21个值,将其送入softmax函数并选出概率最大的值作为置信度。过程得出了网络输出的预测框位置以及置信度,下面就由非极大值算法去除重合度比较高的预测框留下最终的效果框。具体过程为先根据置信度阈值删除一部分置信度较小的预测框,以及类别为背景的框。然后在剩余的预测框中选取一个置信度最大预测框计算剩余框与其IoU(交并比),剔除IoU大于阈值的框,不断重复上述过程直到剩余集合为空。
如上所述,尽管参照特定的优选实施例已经表示和表述了本实施例,但其不得解释为对本实施例自身的限制。在不脱离所附权利要求定义的本实施例的精神和范围前提下,可对其在形式上和细节上做出各种变化。
Claims (4)
1.基于卷积神经网络的图像硬件识别***,其特征在于,包括ARM端和FPGA端;
所述ARM端用于完成数据预处理,数据重排,网络推理,FPGA配置,以及后处理操作;所述ARM端包括预处理模块,用于读取图片文件、将其缩放到预定尺寸,并转化为预定格式;
网络推理模块,与所述预处理模块建立双向通信;
后处理模块,与所述网络推理模块建立双向通信;
驱动模块,同时与所述预处理模块、网络推理模块、以及后处理模块建立双向通信,用于驱动所述FPGA端;
所述FPGA端用于完成计算密集的任务,实现卷积加速;所述FPGA端包括:
SRAM,用于对所述ARM端的数据进行传输以及卷积的存取数操作;
多个卷积控制器,根据标志位配置成dw卷积和normal卷积两种卷积计算模式;
卷积核控制器,用于实现卷积运算;
PE阵列,包括乘法器阵列以及加法树阵列,用于卷积的具体运算;
所述图像硬件识别***采用如下部署方法实现部署:
步骤1、ARM端完成输入数据以及权重数据、偏置数据的处理;
步骤2、FPGA端用于完成计算密集的任务,实现卷积加速;
ARM端自主实现数据后处理,在网络搭建之前先生成一系列先验框作为参考,根据先验框数据的解码预测框位置,将预测框位置矩阵与先验框位置矩阵一一对应计算得到预测框的坐标以及所有类的置信度,过程得出网络输出的预测框位置以及置信度,最后由非极大值算法去除重合度比较高的预测框留下最终的效果框;
ARM端根据改进MEC的运算策略对量化数据进行重新排布,方便FPGA的存取数以及运算,包括如下步骤:
A1、输入根据卷积核的尺寸以及步径,将输入数据按列进行取数,得到ABCDE五个矩阵;
A2、将得到的输入矩阵展依次展开成一维数据排列并拼接,并进行补零操作;
A3、3*3卷积将输入数据按照3个一组进行分组,一次数据传输5组数据,补零至128bit得到第一个数据包,每四个数据包有效数据之间有两组数据的重叠;
A4、1*1卷积将输入数据按照次序传输16个数据,共128bit,不补零;
A5、将卷积核一维展开:3*3卷积核将9个数拼接上偏置数据,补零至128bit;1*1卷积将1个数拼接上偏置数据,补零至128bit;
A6、按照通道的顺序,依次重复A1至A5,得到整个输入数据以及权重、偏置数据的矩阵;
ARM端存储网络的结构以及参数,通过Avalon接口传输配置字来配置FPGA的工作模式,以完成整个网络的推理;
同时通过Avalon接口传输对应的重排数据;
计算次序采用按通道取数的分片方法避免同一批输入数据的反复传输,以此减少软硬件数据交互次数。
2.根据权利要求1所述的基于卷积神经网络的图像硬件识别***,其特征在于,步骤A进一步包括:
步骤1-1、数据预处理:通过opencv读取图片文件并进行缩放,缩放到预定尺寸,并进行图片格式的转化;
步骤1-2、数据量化:对数据进行不同位宽的量化,输入数据、权重数据、偏置数据进行8bit有符号量化,输出数据为32bit;偏置数据的量化因子为输入数据、权重数据的量化因子的乘积。
3.根据权利要求1所述的基于卷积神经网络的图像硬件识别***,其特征在于,进一步包括如下步骤:
B1、计算FPGA的最大存储量,oc为输出通道,oh为输出尺寸,以输出尺寸为维度,输出SRAM最大的存储行数如下所示:
B2、根据output_row的值计算所需的输入SRAM深度以及分片总数,公式如下:
B3、传输所有的权重数据,再以输入SRAM的深度为一片数据的基本单位,按照通道的顺序,依次传输每一个通道的第一片输入数据;
B4、再次按照通道顺序,传输每一个通道的第二片输入数据,直到遍历完所有的数据。
4.根据权利要求1所述的基于卷积神经网络的图像硬件识别***,其特征在于,步骤2进一步包括:
步骤2-1、在FPGA端设计卷积核控制器,实现两种卷积运算,分别为1*1卷积和3*3卷积,其中3*3卷积为可配置卷积,根据标志位配置成DW卷积和normal卷积,两种卷积控制器均设置通道累加功能,若不是通道0的数据,则本次卷积结果与上次卷积结果相加,即对结果SRAM的数据进行累加再重新存入结果SRAM中;
步骤2-2、在FPGA端设计PE阵列,包括乘法器阵列以及加法树阵列,用于卷积的具体运算;3*3卷积调用乘法器阵列和加法树阵列,1*1卷积调用乘法器阵列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111011695.XA CN113705803B (zh) | 2021-08-31 | 2021-08-31 | 基于卷积神经网络的图像硬件识别***及部署方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111011695.XA CN113705803B (zh) | 2021-08-31 | 2021-08-31 | 基于卷积神经网络的图像硬件识别***及部署方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113705803A CN113705803A (zh) | 2021-11-26 |
CN113705803B true CN113705803B (zh) | 2024-05-28 |
Family
ID=78657930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111011695.XA Active CN113705803B (zh) | 2021-08-31 | 2021-08-31 | 基于卷积神经网络的图像硬件识别***及部署方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113705803B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114662681B (zh) * | 2022-01-19 | 2024-05-28 | 北京工业大学 | 一种面向yolo算法可快速部署的通用硬件加速器***平台 |
CN115879530B (zh) * | 2023-03-02 | 2023-05-05 | 湖北大学 | 一种面向rram存内计算***阵列结构优化的方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN207458128U (zh) * | 2017-09-07 | 2018-06-05 | 哈尔滨理工大学 | 一种基于fpga在视觉应用中的卷积神经网络加速器 |
EP3346423A1 (en) * | 2017-01-04 | 2018-07-11 | STMicroelectronics Srl | Deep convolutional network heterogeneous architecture system and device |
EP3346425A1 (en) * | 2017-01-04 | 2018-07-11 | STMicroelectronics Srl | Hardware accelerator engine and method |
CN110110707A (zh) * | 2019-05-24 | 2019-08-09 | 苏州闪驰数控***集成有限公司 | 人工智能cnn、lstm神经网络动态识别*** |
CN110348574A (zh) * | 2019-07-17 | 2019-10-18 | 哈尔滨理工大学 | 一种基于zynq的通用卷积神经网络加速结构及设计方法 |
CN111178519A (zh) * | 2019-12-27 | 2020-05-19 | 华中科技大学 | 卷积神经网络加速引擎、卷积神经网络加速***及方法 |
CN111797982A (zh) * | 2020-07-31 | 2020-10-20 | 北京润科通用技术有限公司 | 基于卷积神经网络的图像处理*** |
CN112508184A (zh) * | 2020-12-16 | 2021-03-16 | 重庆邮电大学 | 一种基于卷积神经网络的快速图像识别加速器设计方法 |
CN113034391A (zh) * | 2021-03-19 | 2021-06-25 | 西安电子科技大学 | 一种多模式融合水下图像增强方法、***及应用 |
CN113138748A (zh) * | 2021-04-09 | 2021-07-20 | 广东工业大学 | 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11321613B2 (en) * | 2016-11-17 | 2022-05-03 | Irida Labs S.A. | Parsimonious inference on convolutional neural networks |
US11449729B2 (en) * | 2018-11-08 | 2022-09-20 | Arm Limited | Efficient convolutional neural networks |
-
2021
- 2021-08-31 CN CN202111011695.XA patent/CN113705803B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3346423A1 (en) * | 2017-01-04 | 2018-07-11 | STMicroelectronics Srl | Deep convolutional network heterogeneous architecture system and device |
EP3346425A1 (en) * | 2017-01-04 | 2018-07-11 | STMicroelectronics Srl | Hardware accelerator engine and method |
CN207458128U (zh) * | 2017-09-07 | 2018-06-05 | 哈尔滨理工大学 | 一种基于fpga在视觉应用中的卷积神经网络加速器 |
CN110110707A (zh) * | 2019-05-24 | 2019-08-09 | 苏州闪驰数控***集成有限公司 | 人工智能cnn、lstm神经网络动态识别*** |
CN110348574A (zh) * | 2019-07-17 | 2019-10-18 | 哈尔滨理工大学 | 一种基于zynq的通用卷积神经网络加速结构及设计方法 |
CN111178519A (zh) * | 2019-12-27 | 2020-05-19 | 华中科技大学 | 卷积神经网络加速引擎、卷积神经网络加速***及方法 |
CN111797982A (zh) * | 2020-07-31 | 2020-10-20 | 北京润科通用技术有限公司 | 基于卷积神经网络的图像处理*** |
CN112508184A (zh) * | 2020-12-16 | 2021-03-16 | 重庆邮电大学 | 一种基于卷积神经网络的快速图像识别加速器设计方法 |
CN113034391A (zh) * | 2021-03-19 | 2021-06-25 | 西安电子科技大学 | 一种多模式融合水下图像增强方法、***及应用 |
CN113138748A (zh) * | 2021-04-09 | 2021-07-20 | 广东工业大学 | 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器 |
Non-Patent Citations (6)
Title |
---|
LSTM硬件加速器的运算单元优化;查羿;《中国优秀硕士学位论文全文数据库》(第02期);全文 * |
一种基于FPGA的卷积神经网络加速器的设计与实现;张榜;来金梅;;复旦学报(自然科学版)(02);全文 * |
一种基于FPGA的卷积神经网络加速器设计与实现;仇越;马文涛;柴志雷;;微电子学与计算机(08);全文 * |
基于FPGA的CNN加速SoC***设计;赵烁;范军;何虎;;计算机工程与设计(04);全文 * |
基于FPGA的卷积神经网络定点加速;雷小康;尹志刚;赵瑞莲;;计算机应用(10);全文 * |
基于FPGA的卷积神经网络训练加速器设计;孟浩等;《南京大学学报(自然科学)》;第57卷(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113705803A (zh) | 2021-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220012593A1 (en) | Neural network accelerator and neural network acceleration method based on structured pruning and low-bit quantization | |
CN113705803B (zh) | 基于卷积神经网络的图像硬件识别***及部署方法 | |
CN108108809B (zh) | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 | |
US10445638B1 (en) | Restructuring a multi-dimensional array | |
CN108416327B (zh) | 一种目标检测方法、装置、计算机设备及可读存储介质 | |
CN107145939B (zh) | 一种低计算能力处理设备的计算机视觉处理方法及装置 | |
CN109063825B (zh) | 卷积神经网络加速装置 | |
WO2022037257A1 (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN111738433B (zh) | 一种可重配置的卷积硬件加速器 | |
CN108229671B (zh) | 一种降低加速器外部数据存储带宽需求的***和方法 | |
CN111199273A (zh) | 卷积计算方法、装置、设备及存储介质 | |
CN111047008B (zh) | 一种卷积神经网络加速器及加速方法 | |
WO2022134465A1 (zh) | 加速可重构处理器运行的稀疏化数据处理方法和装置 | |
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN108664993B (zh) | 一种密集权重连接的卷积神经网络图像分类方法 | |
CN114092336B (zh) | 基于双线性插值算法的图像缩放方法、装置、设备及介质 | |
CN111931927B (zh) | 一种在npu中减少计算资源占用的方法及装置 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
CN109086879B (zh) | 一种基于fpga的稠密连接神经网络的实现方法 | |
CN111340198A (zh) | 基于fpga的数据高度复用的神经网络加速器 | |
CN113516236A (zh) | 基于zynq平台的vgg16网络并行加速处理方法 | |
CN110222835A (zh) | 一种基于零值检测的卷积神经网络硬件***及运算方法 | |
CN110569970B (zh) | 一种应用于卷积神经网络中硬件加速器的数据传输方法 | |
CN110555512B (zh) | 一种二值卷积神经网络数据重用方法及装置 | |
CN109447239B (zh) | 一种基于arm的嵌入式卷积神经网络加速方法 |
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 |