CN113705803B - 基于卷积神经网络的图像硬件识别系统及部署方法 - Google Patents

基于卷积神经网络的图像硬件识别系统及部署方法 Download PDF

Info

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
Application number
CN202111011695.XA
Other languages
English (en)
Other versions
CN113705803A (zh
Inventor
李丽
孙玉祥
傅玉祥
龙威
王峰
何书专
李伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN202111011695.XA priority Critical patent/CN113705803B/zh
Publication of CN113705803A publication Critical patent/CN113705803A/zh
Application granted granted Critical
Publication of CN113705803B publication Critical patent/CN113705803B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying 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卷积调用乘法器阵列。
CN202111011695.XA 2021-08-31 2021-08-31 基于卷积神经网络的图像硬件识别系统及部署方法 Active CN113705803B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN207458128U (zh) * 2017-09-07 2018-06-05 哈尔滨理工大学 一种基于fpga在视觉应用中的卷积神经网络加速器
EP3346425A1 (en) * 2017-01-04 2018-07-11 STMicroelectronics Srl Hardware accelerator engine and method
EP3346423A1 (en) * 2017-01-04 2018-07-11 STMicroelectronics Srl Deep convolutional network heterogeneous architecture system and device
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3346425A1 (en) * 2017-01-04 2018-07-11 STMicroelectronics Srl Hardware accelerator engine and method
EP3346423A1 (en) * 2017-01-04 2018-07-11 STMicroelectronics Srl Deep convolutional network heterogeneous architecture system and device
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)

* Cited by examiner, † Cited by third party
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
CN113705803B (zh) 基于卷积神经网络的图像硬件识别系统及部署方法
CN108108809B (zh) 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法
US10445638B1 (en) Restructuring a multi-dimensional array
CN108416327B (zh) 一种目标检测方法、装置、计算机设备及可读存储介质
CN107145939B (zh) 一种低计算能力处理设备的计算机视觉处理方法及装置
CN109063825B (zh) 卷积神经网络加速装置
CN108229671B (zh) 一种降低加速器外部数据存储带宽需求的系统和方法
WO2022037257A1 (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
CN111199273A (zh) 卷积计算方法、装置、设备及存储介质
CN111738433B (zh) 一种可重配置的卷积硬件加速器
CN111047008B (zh) 一种卷积神经网络加速器及加速方法
WO2022134465A1 (zh) 加速可重构处理器运行的稀疏化数据处理方法和装置
CN112633490B (zh) 执行神经网络模型的数据处理装置、方法及相关产品
CN108664993B (zh) 一种密集权重连接的卷积神经网络图像分类方法
CN111768458A (zh) 一种基于卷积神经网络的稀疏图像处理方法
CN109086879B (zh) 一种基于fpga的稠密连接神经网络的实现方法
CN111008691B (zh) 一种权值和激活值都二值化的卷积神经网络加速器架构
CN111340198A (zh) 基于fpga的数据高度复用的神经网络加速器
CN113298237A (zh) 一种基于fpga的卷积神经网络片上训练加速器
CN113516236A (zh) 基于zynq平台的vgg16网络并行加速处理方法
CN110222835A (zh) 一种基于零值检测的卷积神经网络硬件系统及运算方法
CN110569970B (zh) 一种应用于卷积神经网络中硬件加速器的数据传输方法
CN110555512B (zh) 一种二值卷积神经网络数据重用方法及装置
CN109447239B (zh) 一种基于arm的嵌入式卷积神经网络加速方法
CN116820577A (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
GR01 Patent grant
GR01 Patent grant