CN111310921B - 一种轻量级深度卷积神经网络的fpga实现方法 - Google Patents
一种轻量级深度卷积神经网络的fpga实现方法 Download PDFInfo
- Publication number
- CN111310921B CN111310921B CN202010229332.2A CN202010229332A CN111310921B CN 111310921 B CN111310921 B CN 111310921B CN 202010229332 A CN202010229332 A CN 202010229332A CN 111310921 B CN111310921 B CN 111310921B
- Authority
- CN
- China
- Prior art keywords
- convolution
- point
- neural network
- image
- convolutional neural
- 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
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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Image Analysis (AREA)
Abstract
本发明提出了一种轻量级深度卷积神经网络的FPGA实现方法,其步骤为:构建轻量级深度卷积神经网络;初始化轻量级深度卷积神经网络;生成训练集和验证集;训练轻量级深度卷积神经网络;设计现场可编程逻辑门阵列FPGA中轻量级卷积神经网络的基本组成器件;在现场可编程逻辑门阵列FPGA中实现已训练好的轻量级深度卷积神经网络。本发明利用搭建轻量级深度卷积神经网络,精简了深度卷积神经网络的网络结构,优化了轻量级深度卷积神经网络的训练方法,提升了在现场可编程逻辑门阵列FPGA中实现的深度卷积神经网络的资源利用率。
Description
技术领域
本发明属于图像处理技术领域,更进一步涉及数字图像模式识别技术领域中一种轻量级深度卷积神经网络的FPGA实现方法。本发明可用于在现场可编程逻辑门阵列FPGA(Field Programmable Gate Array)上实现轻量级深度卷积神经网络。
背景技术
近年来,随着深度学习的快速发展,人工智能逐渐融入到各个领域。其中基于深度卷积神经网络DCNN(Deep Convolutional Neural Network)的算法模型与其他深度学习网络框架相比具备精度较高的优势,从2015年被提出后便一直被广泛关注。迄今深度卷积神经网络模型是最丰富的神经网络模型之一,但在各种硬件平台完成实现的却很少,这种现象主要归结于深度卷积神经网络的结构复杂度较高。目前实现深度卷积神经网络的传统流程为:首先按照一定的算法规则对网络结构进行设计,并在目标平台对应的开发软件中进行代码编译;之后通过训练集对设计好的网络进行迭代式仿真训练,直到仿真精度达到预设的数值时将网络模型的各层参数保存下来;最后通过测试集对训练精度达标的网络进行仿真验证,若性能通过验证标准则网络在目标平台中完成实现。此实现流程中提到的目标平台主要包括中央处理器CPU(Central Processing Unit)、图形处理器GPU(GraphicsProcessing Unit)以及现场可编程逻辑门阵列FPGA。其中现场可编程逻辑门阵列FPGA的缺陷是体积较小,那么为了在现场可编程逻辑门阵列FPGA中实现网络层级较深的深度卷积神经网络,将深度卷积神经网络的网络层级减少为轻量级、提高对于现场可编程逻辑门阵列FPGA的资源利用率均十分关键。
复旦大学其申请的专利文献“基于FPGA的深度卷积神经网络实现方法”(专利申请号:201610615714.2,申请公开号:106228240A)中提出了一种基于FPGA的深度神经网络实现方法。该发明方法中提出的深度卷积神经网络实现方法包含以下几个步骤:首先对网络模型进行离线训练,得到训练好的网络模型参数后,通过中央处理器CPU将参数加载到现场可编程逻辑门阵列FPGA的对应存储中;然后在中央处理器CPU对输入数据进行归一化处理,再将归一化后的数据传输到现场可编程逻辑门阵列FPGA的对应存储中;之后在现场可编程逻辑门阵列FPGA中根据网络模型参数完成卷积运算流水线的设计及初始化、卷积层内核模块IP(Intellectual Property)的设计、池化层内核模块IP的设计;最后将存储空间中的归一化输入数据进行卷积计算和下采样,形成数据特征向量并传输至中央处理器CPU,并在中央处理器CPU中利用Softmax运算完成数据分类计算,得到最终的输出结果。该实现方法采用了中央处理器CPU与现场可编程逻辑门阵列FPGA共同实现深度卷积神经网络的思想,将并行度要求高的卷积运算和下采样运算在深度卷积神经网络中实现,将数据精度要求高的预处理和Softmax运算在中央处理器CPU实现,在一定程度上发挥了现场可编程逻辑门阵列FPGA和中央处理器CPU各自的优势。但是,该方法仍然存在的不足之处包括:没有对经过深度可分离卷积网络的搭建,直接读取网络的预训练模型,导致网络的层级为深层级;在可编程逻辑门阵列FPGA中实现深度卷积神经网络的过程中没有设计网络的基本组成器件,而是直接调用现场可编程逻辑门阵列FPGA中的资源,导致最终对于现场可编程逻辑门阵列FPGA的资源占用度过高。
发明内容
本发明的目的在于针对上述现有技术存在的不足,提出了一种轻量级深度卷积神经网络的FPGA实现方法,用于解决在可编程逻辑门阵列FPGA中实现深度卷积神经网络的方法时网络结构的层级为深层级、对于现场可编程逻辑门阵列FPGA的资源占用度过高的技术问题。
为实现上述目的,本发明的思路是,先构建轻量级深度卷积神经网络,然后制作训练集和验证集并输入到构建的轻量级深度卷积神经网络,进行网络训练,得到已训练好的轻量级深度卷积神经网络的各层参数、网络模型,然后设计现场可编程逻辑门阵列FPGA中轻量级卷积神经网络的基本组成器件,最后读取已训练好的轻量级深度卷积神经网络的各层参数、网络模型和现场可编程逻辑门阵列FPGA中轻量级卷积神经网络的基本组成器件的结构信息,利用现场可编程逻辑门阵列FPGA编译器和利用现场可编程逻辑门阵列FPGA综合器得到现场可编程逻辑门阵列FPGA中的轻量级深度卷积神经网络。
本发明的技术方案包括如下步骤:
(1)构建轻量级深度卷积神经网络:
(1a)搭建一个轻量级深度卷积神经网络,其结构依次为:输入层→第1卷积层→深度可分离卷积模块组合→特征空间融合模块→第2卷积层→输出层;
所述深度可分离卷积模块组合由4个结构相同的深度可分离卷积模块串联组成,每个深度可分离卷积模块结构依次为:第1逐点卷积层→深度卷积层→第2逐点卷积层;
所述特征空间融合模块由逐点卷积层和平均池化层串联组成;
(1b)设置网络参数:
将第1卷积层和第2卷积层的卷积核大小分别设置为3×3×3和1×1×1536,卷积核个数分别设置为32和4,卷积步进分别设置为2和1;
将第1深度可分离卷积模块中第1逐点卷积层、深度卷积层和第2逐点卷积层的卷积核大小分别设置为1×1×32、3×3×1和1×1×96,卷积核的个数分别设置为96、96和64,卷积步长分别设置为1、2和1;
将第2深度可分离卷积模块中第1逐点卷积层、深度卷积层和第2逐点卷积层的卷积核大小分别设置为1×1×64、3×3×1和1×1×192,卷积核的个数分别设置为192、192和128,卷积步长分别设置为1、2和1;
将第3深度可分离卷积模块中第1逐点卷积层、深度卷积层和第2逐点卷积层的卷积核大小分别设置为1×1×128、3×3×1和1×1×384,卷积核的个数分别设置为384、384和256,卷积步长分别设置为1、2和1;
将第4深度可分离卷积模块中第1逐点卷积层、深度卷积层和第2逐点卷积层的卷积核大小分别设置为1×1×256、3×3×1和1×1×768,卷积核的个数分别设置为768、768和512,卷积步长设置分别为1、2和1;
将特征空间融合模块中的逐点卷积层卷积核大小设置为1×1×512,卷积核个数设置为1536,卷积步长设置为1;
将特征空间融合模块中的平均池化层的运算核大小设置为16×16×1,运算核个数为1536,运算步长设置为1;
(2)初始化轻量级深度卷积神经网络:
使用random_normal_initializer函数将轻量级深度卷积神经网络中所有的卷积层、逐点卷积层和深度卷积层的权重初始化为满足正态分布的随机值;所述正态分布的标准差为0;
(3)生成训练集和验证集:
(3a)选取N张大小为W×H×3的全色图像组成初始图像集,其中,1000<N<10000,56<W<2000,56<H<2000,W和H分别表示图像的宽和高,W和H的单位均为像素;
(3c)利用初始数据训练验证比例公式,计算出初始训练集占比系数和初始验证集占比系数,利用扩充数据训练验证比例公式,计算出扩充训练集占比系数和扩充验证集占比系数,分别使用扩充训练集占比系数和扩充验证集占比系数乘以扩充图像集的图像张数,得到训练集的图像张数Mtra和验证集的图像张数Mval,其中,Mtra>20000,Mtest>2000,Mtra和Mval的单位为张数;
(3d)从扩充图像集中随机抽取Mtra张图像组成训练集,从扩充图像集中随机抽取Mtra张图像组成验证集;
(4)训练轻量级深度卷积神经网络:
(4a)从训练集和验证集中分别选取未选取过的Btra和Bval张图像,32≤Btra≤128,32≤Bval≤128;
(4b)将所选取的训练集图像输入到轻量级深度卷积神经网络中,输出每张图像的训练特征向量,利用轻量级深度卷积神经网络训练集损失函数,计算所选训练集图像的损失;
(4c)将所选取的验证集的图像分别输入到轻量级深度卷积神经网络中,输出每张图像的验证集特征向量,利用轻量级深度卷积神经网络验证集损失函数,计算所选验证集图像对应的验证集损失;
(4d)判断从训练集和验证集中分别选取图像的次数是否等于10,若是,则执行步骤(4e),否则,执行步骤(4a);
(4e)分别将10个训练集损失和10个验证集损失按读取次序排列,得到训练集损失的变化趋势和验证集损失的变化趋势,判断训练集损失的变化趋势和验证集损失的变化趋势是否均为逐渐下降,若是,则执行步骤(4g),否则,执行步骤(4f);
(4f)判断训练集损失的变化趋势和验证集损失的变化趋势是否均为保持不变,若是,则将第一次所选Btra和Bval的图像总数均增大2倍后执行步骤(4a),否则,采用与步骤(3)相同的方法重新生成另一组训练集和验证集后执行步骤(4a);
(4g)读取最后1个得到的训练集损失,利用梯度下降法计算轻量级深度卷积神经网络每个卷积层、每个逐点卷积层和每个深度卷积层的每个卷积核的所有梯度;
(4h)读取轻量级深度卷积神经网络每个卷积层、每个逐点卷积层和每个深度卷积层的每个卷积核的所有梯度,使用Adam优化器迭代更新轻量级深度卷积神经网络每个卷积层、每个逐点卷积层和每个深度卷积层中每个卷积核的所有权重;所述Adam优化器的初始学习率为0.0001;
(4i)读取最后1个得到的验证集损失,判断是否最后1个得到的训练集损失大于0.1或最后1个得到的验证集损失大于0.4,若是,则执行步骤(4a),否则,完成轻量级深度卷积神经网络的训练,得到训练好的轻量级深度卷积神经网络每个卷积层、每个逐点卷积层和每个深度卷积层中每个卷积核的所有权重,保存为训练好的轻量级深度卷积神经网络各层权重参数,使用session.save函数保存训练好的轻量级深度卷积网络的网络模型;
(5)设计现场可编程逻辑门阵列FPGA中轻量级卷积神经网络的基本组成器件:
(5a)设计一个的标准卷积器,其结构依次为:图像载入器→标准卷积计算单元→图像输出器;
所述图像载入器由用于储存输入图像数据的块随机存取存储器Block RAM和先入先出队列FIFO串联组成;
所述标准卷积计算单元由储存权重参数的块随机存取存储器Block RAM和标准卷积核阵列串联组成;
所述图像输出器由先入先出队列FIFO和用于储存输出图像数据的块随机存取存储器Block RAM串联组成;
所述标准卷积核阵列由16个卷积核并联组成,每个卷积核大小均为3×3×32;
(5b)设计一个深度可分离卷积器,其结构依次为:第1图像载入器→第1逐点卷积计算单元→第1图像输出器→第2图像载入器→深度卷积计算单元→第2图像输出器→第3图像载入器→第2逐点卷积计算单元→第3图像输出器;
所述每个逐点卷积计算单元由用于储存权重参数的块随机存取存储器Block RAM和逐点卷积核阵列串联组成;所述逐点卷积核阵列由16个卷积核并联组成,每个卷积核大小均为1×1×1;
所述深度卷积计算单元由用于储存权重参数的块随机存取存储器Block RAM和深度卷积核阵列串联组成;所述深度卷积核阵列由16个卷积核并联组成,每个卷积核大小均为3×3×1;
(5c)设计一个平均池化器,其结构依次为:图像载入器→平均池化计算单元→图像输出器;所述平均池化计算单元由加法器与乘法器串联组成;
(5d)设计一个逐点卷积器,其结构依次为:图像载入器→逐点卷积计算单元→图像输出器;
(6)在现场可编程逻辑门阵列FPGA中实现训练好的轻量级深度卷积神经网络:
(6a)依次将标准卷积器、深度可分离卷积器、平均池化器和逐点卷积器结构中现场可编程逻辑门阵列FPGA基本单元的数量和连接方式信息输入至现场可编程逻辑门阵列FPGA编译器,生成未配置的功能描述文本;
所述现场可编程逻辑门阵列FPGA基本器件包含块随机存取存储器Block RAM、先入先出队列FIFO、卷积核、加法器、乘法器;
(6b)读取步骤(4i)中训练好的轻量级深度卷积网络的网络模型,利用session.get函数得到已训练好的轻量级深度卷积神经网络的网络配置参数;
(6c)将步骤(6b)中得到的网络配置参数、步骤(4i)中训练好的轻量级深度卷积神经网络各层权重参数和步骤(6a)生成的未配置的功能描述文本同时输入至现场可编程逻辑门阵列FPGA编译器,生成配置完成的功能描述文本;
(6d)将配置完成的功能描述文本输入至现场可编程逻辑门阵列FPGA综合器中,生成在现场可编程逻辑门阵列FPGA中实现的轻量级深度可分离卷积网络,其结构依次为:标准卷积器→第1深度可分离卷积器→第2深度可分离卷积器→第3深度可分离卷积器→第4深度可分离卷积器→第1逐点卷积器→平均池化器→第2逐点卷积器。
本发明与现有技术相比较,具有以下优点:
第一,本发明通过搭建轻量级深度卷积神经网络,简化了深度卷积神经网络的网络结构,解决了现有技术中深度卷积神经网络层级为深层级的问题,使得本发明在搭建深度卷积神经网络时的网络结构降低为轻量级。
第二,本发明首先通过训练集和验证集对搭建好的轻量级深度卷积神经网络进行训练,得到已训练好的各层权重参数和网络模型,其次通过设计在现场可编程逻辑门阵列FPGA中轻量级卷积神经网络的基本组成器件,最终将现基本组成器件的结构信息、已已训练好的各层权重参数和网络模型输入至现场可编程逻辑门阵列FPGA的编辑器和综合器中,完成了轻量级深度卷积神经网络在现场可编程逻辑门阵列FPGA上的实现,解决了现有技术直接调用现场可编程逻辑门阵列FPGA中的资源,导致最终对于现场可编程逻辑门阵列FPGA的资源利用效率较低的问题,使得本发明避免了对于可编程逻辑门阵列FPGA中的资源调用方式过于简单而导致的资源占用度过高。
附图说明
图1是本发明的流程图;
图2是本发明的仿真图。
其中,图2(a)和图2(b)均由以下两部分组成:
命名为Console 1/A的命令框内“Output Feature=”后的1维向量为在现场可编程逻辑门阵列FPGA上实现的深度卷积网络读取图像后,得到的输出特征向量值。
命名Utilization Estimates的命令框内名为Summary的表格的最后一行数据为在现场可编程逻辑门阵列FPGA上实现的深度卷积网络的资源占用度情况。
具体实施方式
下面结合附图对本发明做进一步的描述。
参照附图1,对本发明的具体步骤做进一步的描述。
步骤1.构建轻量级深度卷积神经网络。
搭建一个轻量级深度卷积神经网络,其结构依次为:输入层→第1卷积层→深度可分离卷积模块组合→特征空间融合模块→第2卷积层→输出层。
所述深度可分离卷积模块组合由4个结构相同的深度可分离卷积模块串联组成,每个深度可分离卷积模块结构依次为:第1逐点卷积层→深度卷积层→第2逐点卷积层。
所述特征空间融合模块由逐点卷积层和平均池化层串联组成。
设置网络参数。
将第1卷积层和第2卷积层的卷积核大小分别设置为3×3×3和1×1×1536,卷积核个数分别设置为32和4,卷积步进分别设置为2和1。
将第1深度可分离卷积模块中第1逐点卷积层、深度卷积层和第2逐点卷积层的卷积核大小分别设置为1×1×32、3×3×1和1×1×96,卷积核的个数分别设置为96、96和64,卷积步长分别设置为1、2和1。
将第2深度可分离卷积模块中第1逐点卷积层、深度卷积层和第2逐点卷积层的卷积核大小分别设置为1×1×64、3×3×1和1×1×192,卷积核的个数分别设置为192、192和128,卷积步长分别设置为1、2和1。
将第3深度可分离卷积模块中第1逐点卷积层、深度卷积层和第2逐点卷积层的卷积核大小分别设置为1×1×128、3×3×1和1×1×384,卷积核的个数分别设置为384、384和256,卷积步长分别设置为1、2和1。
将第4深度可分离卷积模块中第1逐点卷积层、深度卷积层和第2逐点卷积层的卷积核大小分别设置为1×1×256、3×3×1和1×1×768,卷积核的个数分别设置为768、768和512,卷积步长设置分别为1、2和1。
将特征空间融合模块中的逐点卷积层卷积核大小设置为1×1×512,卷积核个数设置为1536,卷积步长设置为1。
将特征空间融合模块中的平均池化层的运算核大小设置为16×16×1,运算核个数为1536,运算步长设置为1
步骤2.初始化轻量级深度卷积神经网络。
使用random_normal_initializer函数将轻量级深度卷积神经网络中所有的卷积层、逐点卷积层和深度卷积层的权重初始化为满足正态分布的随机值;所述正态分布的标准差为0。
步骤3.生成训练集和验证集。
选取N张大小为W×H×3的全色图像组成初始图像集,其中,1000<N<10000,56<W<2000,56<H<2000,W和H分别表示图像的宽和高,W和H的单位均为像素。
利用初始数据训练验证比例公式,计算出初始训练集占比系数和初始验证集占比系数,利用扩充数据训练验证比例公式,计算出扩充训练集占比系数和扩充验证集占比系数,分别使用扩充训练集占比系数和扩充验证集占比系数乘以扩充图像集的图像张数,得到训练集的图像张数Mtra和验证集的图像张数Mval,其中,Mtra>20000,Mtest>2000,Mtra和Mval的单位为张数。
所述的初始数据训练验证比例公式如下:
k1+k2=1
其中,k1和k2分别表示初始训练集占比系数和初始验证集占比系数,log10表示以10为底数的对数操作,M表示扩充图像集的图像张数。
所述的扩充数据训练验证比例公式如下:
kval+ktra=1
其中,ktra和kval分别表示扩充训练集占比系数和扩充验证集占比系数,*表示乘法操作。
从扩充图像集中随机抽取Mtra张图像组成训练集,从扩充图像集中随机抽取Mtra张图像组成验证集。
步骤4.训练轻量级深度卷积神经网络。
所述的训练轻量级深度卷积神经网络的步骤如下:
第1步,从训练集和验证集中分别选取未选取过的Btra和Bval张图像,32≤Btra≤128,32≤Bval≤128。
第2步,将所选取的训练集图像输入到轻量级深度卷积神经网络中,输出每张图像的训练特征向量,利用轻量级深度卷积神经网络训练集损失函数,计算所选训练集图像的损失。
所述的轻量级深度卷积神经网络训练集损失函数如下:
其中,Ltra表示轻量级深度卷积神经网的训练集损失,∑表示求和操作,i表示训练集图像的序号,表示输入Btra张训练集图像中的第i张训练集图像到轻量级深度卷积神经网络时得到的训练特征向量,表示Btra张训练集图像中第i张待输入到轻量级深度卷积神经网络中的训练集图像。
第3步,将所选取的验证集的图像分别输入到轻量级深度卷积神经网络中,输出每张图像的验证集特征向量,利用轻量级深度卷积神经网络验证集损失函数,计算所选验证集图像对应的验证集损失。
所述的轻量级深度卷积神经网络验证集损失函数如下:
其中,Lval表示轻量级深度卷积神经网络的验证集损失,j表示验证集图像的序号,表示输入Bval验证集图像中的第j张图像到轻量级深度卷积神经网络时得到的验证特征向量,表示Bval张验证集图像中第j张待输入到轻量级深度卷积神经网络中的验证集图像。
第4步,判断从训练集和验证集中分别选取图像的次数是否等于10,若是,则继续执行第5步,否则,返回执行第1步。
第5步,分别将10个训练集损失和10个验证集损失按读取次序排列,得到训练集损失的变化趋势和验证集损失的变化趋势,判断训练集损失的变化趋势和验证集损失的变化趋势是否均为逐渐下降,若是,则继续执行第7步,否则,继续执行第6步。
第6步,判断训练集损失的变化趋势和验证集损失的变化趋势是否均为保持不变,若是,则将第一次所选Btra和Bval的图像总数均增大2倍后返回第1步,否则,采用与步骤3相同的方法重新生成另一组训练集和验证集后返回第1步。
第7步,读取最后1个得到的训练集损失,利用梯度下降法计算轻量级深度卷积神经网络每个卷积层、每个逐点卷积层和每个深度卷积层的每个卷积核的所有梯度。
第8步,读取轻量级深度卷积神经网络每个卷积层、每个逐点卷积层和每个深度卷积层的每个卷积核的所有梯度,使用Adam优化器迭代更新轻量级深度卷积神经网络每个卷积层、每个逐点卷积层和每个深度卷积层中每个卷积核的所有权重。
所述Adam优化器的初始学习率为0.0001。
第9步,读取最后1个得到的验证集损失,判断是否最后1个得到的训练集损失大于0.1或最后1个得到的验证集损失大于0.4,若是,返回执行第1步,否则,完成轻量级深度卷积神经网络的训练,得到训练好的轻量级深度卷积神经网络每个卷积层、每个逐点卷积层和每个深度卷积层中每个卷积核的所有权重,保存为训练好的轻量级深度卷积神经网络各层权重参数,使用session.save函数保存训练好的轻量级深度卷积网络的网络模型
步骤5.设计现场可编程逻辑门阵列FPGA中轻量级卷积神经网络的基本组成器件。
所述的设计现场可编程逻辑门阵列FPGA中轻量级卷积神经网络的基本组成器件的步骤如下:
第1步,设计一个的标准卷积器,其结构依次为:图像载入器→标准卷积计算单元→图像输出器。
所述图像载入器由用于储存输入图像数据的块随机存取存储器Block RAM和先入先出队列FIFO串联组成。
所述标准卷积计算单元由储存权重参数的块随机存取存储器Block RAM和标准卷积核阵列串联组成。
所述图像输出器由先入先出队列FIFO和用于储存输出图像数据的块随机存取存储器Block RAM串联组成。
所述标准卷积核阵列由16个卷积核并联组成,每个卷积核大小均为3×3×32。
第2步,设计一个深度可分离卷积器,其结构依次为:第1图像载入器→第1逐点卷积计算单元→第1图像输出器→第2图像载入器→深度卷积计算单元→第2图像输出器→第3图像载入器→第2逐点卷积计算单元→第3图像输出器。
所述每个逐点卷积计算单元由用于储存权重参数的块随机存取存储器Block RAM和逐点卷积核阵列串联组成。
所述逐点卷积核阵列由16个卷积核并联组成,每个卷积核大小均为1×1×1。
所述深度卷积计算单元由用于储存权重参数的块随机存取存储器Block RAM和深度卷积核阵列串联组成。
所述深度卷积核阵列由16个卷积核并联组成,每个卷积核大小均为3×3×1。
第3步,设计一个平均池化器,其结构依次为:图像载入器→平均池化计算单元→图像输出器。
所述平均池化计算单元由加法器与乘法器串联组成。
第4步,设计一个逐点卷积器,其结构依次为:图像载入器→逐点卷积计算单元→图像输出器。
步骤6.在现场可编程逻辑门阵列FPGA中实现训练好的轻量级深度卷积神经网络。
所述的在现场可编程逻辑门阵列FPGA中实现训练好的轻量级深度卷积神经网络的步骤如下:
第1步,依次将标准卷积器、深度可分离卷积器、平均池化器和逐点卷积器结构中现场可编程逻辑门阵列FPGA基本单元的数量和连接方式信息输入至Vivado High-Level-Systhesis的C编译器,生成未配置的C文本。
所述现场可编程逻辑门阵列FPGA基本器件包含块随机存取存储器Block RAM、先入先出队列FIFO、卷积核、加法器、乘法器。
第2步,读取步骤4的第9步中训练好的轻量级深度卷积网络的网络模型,利用session.get函数得到已训练好的轻量级深度卷积神经网络的网络配置参数。
第3步,将步骤6的第3步中得到的网络配置参数、步骤4的第9步中训练好的轻量级深度卷积神经网络各层权重参数和步骤6的第1步中生成的未配置的C文本同时输入至Vivado High-Level-Systhesis的C编译器,生成配置完成的C文本。
第4步,将配置完成的C文本输入至Vivado High-Level-Systhesis的C综合器中,生成在现场可编程逻辑门阵列FPGA中实现的轻量级深度可分离卷积网络,其结构依次为:标准卷积器→第1深度可分离卷积器→第2深度可分离卷积器→第3深度可分离卷积器→第4深度可分离卷积器→第1逐点卷积器→平均池化器→第2逐点卷积器。
下面结合仿真实验对本发明的效果做进一步的说明:
1.仿真实验条件:
本发明的仿真实验的硬件平台为:处理器为Intel i5-7300 CPU,主频为2.50GHz,内存8GB。
本发明的仿真实验的软件平台为:Windows 10操作系统、Vivado High-Level-Systhesis 2017.3。
本发明仿真实验所使用的输入图像为花卉数据flower photos图像,该图像数据为网络公开数据集,获取网址为https://blog.csdn.net/zhx_123987/article/details/86745159,成像时间为2016年11月,图像大小为512×512×3个像素,图像共包含3个波段和4类特征,图像格式为jpg。
2.仿真内容及其结果分析:
本发明仿真实验是:先采用现有技术的基于FPGA的卷积神经网络inception-v3特征提取方法,对数据flower photos图像进行特征提取,获得输出特征向量,并统计在现场现场可编程逻辑门阵列FPGA中的资源使用情况,并将输出特征向量和资源使用情况展示于图2(a)。
再采用本发明的方法,对数据flower photos图像进行特征提取,获得输出特征向量,并统计在现场现场可编程逻辑门阵列FPGA中的资源使用情况,并将输出特征向量和资源使用情况展示于图2(b)。
在仿真实验中,现有技术是指:
现有技术的基于FPGA的卷积神经网络inception-v3特征提取方法是指,使用在现场可编程逻辑门阵列FPGA上实现的inception-v3进行特征提取的方法,简称基于FPGA的卷积神经网络inception-v3的特征提取方法。
所述inception-v3为Xiaoling Xia等人在“Inception-v3 for flowerclassification,10.1109/ICIVC.2017.7984661”中提出的图像特征提取方法。
下面结合图2的仿真图对本发明的效果做进一步的描述。
图2(a)为采用现有技术的基于FPGA的卷积神经网络inception-v3特征提取方法输入雏菊花卉数据daisy全色图像得到的输出特征向量值和在现场可编程逻辑门阵列FPGA中的资源使用情况。
图2(b)为利用本发明的方法输入雏菊花卉数据daisy全色图像得到的输出特征向量值和在现场可编程逻辑门阵列FPGA中的资源使用情况。
由图2(a)可以看出,现有技术的基于FPGA的卷积神经网络inception-v3特征提取方法的输出特征向量值Output feature中,代表雏菊花卉特征明显度第1个特征值的数值明显大于其他3个特征值,证明现有技术的基于FPGA的卷积神经网络inception-v3特征提取方法的特征提取能力较高。
由图2(b)可以看出,本发明的方法与现有技术的基于FPGA的卷积神经网络inception-v3特征提取方法相比,输出特征向量值Output feature的数值相差不明显,证明两种技术对于输入图像的特征提取能力相近,进而证明了本发明方法的特征提取能力较高。
由图2(b)可以看出,本发明的方法与现有技术的基于FPGA的卷积神经网络inception-v3特征提取方法相比,本发明的方法在现场现场可编程逻辑门阵列FPGA中的资源使用更少,证明本发明方法的现场可编程逻辑门阵列FPGA资源利用效率优于现有技术的基于FPGA的卷积神经网络inception-v3特征提取方法。
以上仿真实验表明:本发明方法利用搭建轻量级深度卷积神经网络,能够有效提取全色图像的特征,利用现场可编程逻辑门阵列FPGA实现已训练好的轻量级深度卷积神经网络,能够在特征提取效果较佳的情况下减少现场可编程逻辑门阵列FPGA的资源使用,解决了现有技术方法中存在的只使用优化现场可编程逻辑门阵列FPGA的方法实现深度卷积神经网络,导致现场可编程逻辑门阵列FPGA中资源利用效率低的问题,是一种非常实用的在可编程逻辑门阵列FPGA中实现深度卷积神经网络的方法。
Claims (5)
1.一种轻量级深度卷积神经网络的FPGA实现方法,其特征在于,构建轻量级深度卷积神经网络并训练;在现场可编程逻辑门阵列FPGA中实现已训练好的轻量级深度卷积神经网络;该方法具体步骤包括如下:
(1)构建轻量级深度卷积神经网络:
(1a)搭建一个轻量级深度卷积神经网络,其结构依次为:输入层→第1卷积层→深度可分离卷积模块组合→特征空间融合模块→第2卷积层→输出层;
所述深度可分离卷积模块组合由4个结构相同的深度可分离卷积模块串联组成,每个深度可分离卷积模块结构依次为:第1逐点卷积层→深度卷积层→第2逐点卷积层;
所述特征空间融合模块由逐点卷积层和平均池化层串联组成;
(1b)设置网络参数:
将第1卷积层和第2卷积层的卷积核大小分别设置为3×3×3和1×1×1536,卷积核个数分别设置为32和4,卷积步进分别设置为2和1;
将第1深度可分离卷积模块中第1逐点卷积层、深度卷积层和第2逐点卷积层的卷积核大小分别设置为1×1×32、3×3×1和1×1×96,卷积核的个数分别设置为96、96和64,卷积步长分别设置为1、2和1;
将第2深度可分离卷积模块中第1逐点卷积层、深度卷积层和第2逐点卷积层的卷积核大小分别设置为1×1×64、3×3×1和1×1×192,卷积核的个数分别设置为192、192和128,卷积步长分别设置为1、2和1;
将第3深度可分离卷积模块中第1逐点卷积层、深度卷积层和第2逐点卷积层的卷积核大小分别设置为1×1×128、3×3×1和1×1×384,卷积核的个数分别设置为384、384和256,卷积步长分别设置为1、2和1;
将第4深度可分离卷积模块中第1逐点卷积层、深度卷积层和第2逐点卷积层的卷积核大小分别设置为1×1×256、3×3×1和1×1×768,卷积核的个数分别设置为768、768和512,卷积步长设置分别为1、2和1;
将特征空间融合模块中的逐点卷积层卷积核大小设置为1×1×512,卷积核个数设置为1536,卷积步长设置为1;
将特征空间融合模块中的平均池化层的运算核大小设置为16×16×1,运算核个数为1536,运算步长设置为1;
(2)初始化轻量级深度卷积神经网络:
使用random_normal_initializer函数将轻量级深度卷积神经网络中所有的卷积层、逐点卷积层和深度卷积层的权重初始化为满足正态分布的随机值;所述正态分布的标准差为0;
(3)生成训练集和验证集:
(3a)选取N张大小为W×H×3的全色图像组成初始图像集,其中,1000<N<10000,56<W<2000,56<H<2000,W和H分别表示图像的宽和高,W和H的单位均为像素;
(3c)利用初始数据训练验证比例公式,计算出初始训练集占比系数和初始验证集占比系数,利用扩充数据训练验证比例公式,计算出扩充训练集占比系数和扩充验证集占比系数,分别使用扩充训练集占比系数和扩充验证集占比系数乘以扩充图像集的图像张数,得到训练集的图像张数Mtra和验证集的图像张数Mval,其中,Mtra>20000,Mtest>2000,Mtra和Mval的单位为张数;
(3d)从扩充图像集中随机抽取Mtra张图像组成训练集,从扩充图像集中随机抽取Mtra张图像组成验证集;
(4)训练轻量级深度卷积神经网络:
(4a)从训练集和验证集中分别选取未选取过的Btra和Bval张图像,32≤Btra≤128,32≤Bval≤128;
(4b)将所选取的训练集图像输入到轻量级深度卷积神经网络中,输出每张图像的训练特征向量,利用轻量级深度卷积神经网络训练集损失函数,计算所选训练集图像的损失;
(4c)将所选取的验证集的图像分别输入到轻量级深度卷积神经网络中,输出每张图像的验证集特征向量,利用轻量级深度卷积神经网络验证集损失函数,计算所选验证集图像对应的验证集损失;
(4d)判断从训练集和验证集中分别选取图像的次数是否等于10,若是,则执行步骤(4e),否则,执行步骤(4a);
(4e)分别将10个训练集损失和10个验证集损失按读取次序排列,得到训练集损失的变化趋势和验证集损失的变化趋势,判断训练集损失的变化趋势和验证集损失的变化趋势是否均为逐渐下降,若是,则执行步骤(4g),否则,执行步骤(4f);
(4f)判断训练集损失的变化趋势和验证集损失的变化趋势是否均为保持不变,若是,则将第一次所选Btra和Bval的图像总数均增大2倍后执行步骤(4a),否则,采用与步骤(3)相同的方法重新生成另一组训练集和验证集后执行步骤(4a);
(4g)读取最后1个得到的训练集损失,利用梯度下降法计算轻量级深度卷积神经网络每个卷积层、每个逐点卷积层和每个深度卷积层的每个卷积核的所有梯度;
(4h)读取轻量级深度卷积神经网络每个卷积层、每个逐点卷积层和每个深度卷积层的每个卷积核的所有梯度,使用Adam优化器迭代更新轻量级深度卷积神经网络每个卷积层、每个逐点卷积层和每个深度卷积层中每个卷积核的所有权重;所述Adam优化器的初始学习率为0.0001;
(4i)读取最后1个得到的验证集损失,判断是否最后1个得到的训练集损失大于0.1或最后1个得到的验证集损失大于0.4,若是,则执行步骤(4a),否则,完成轻量级深度卷积神经网络的训练,得到训练好的轻量级深度卷积神经网络每个卷积层、每个逐点卷积层和每个深度卷积层中每个卷积核的所有权重,保存为训练好的轻量级深度卷积神经网络各层权重参数,使用session.save函数保存训练好的轻量级深度卷积网络的网络模型;
(5)设计现场可编程逻辑门阵列FPGA中轻量级卷积神经网络的基本组成器件:
(5a)设计一个的标准卷积器,其结构依次为:图像载入器→标准卷积计算单元→图像输出器;
所述图像载入器由用于储存输入图像数据的块随机存取存储器Block RAM和先入先出队列FIFO串联组成;
所述标准卷积计算单元由储存权重参数的块随机存取存储器Block RAM和标准卷积核阵列串联组成;
所述图像输出器由先入先出队列FIFO和用于储存输出图像数据的块随机存取存储器Block RAM串联组成;
所述标准卷积核阵列由16个卷积核并联组成,每个卷积核大小均为3×3×32;
(5b)设计一个深度可分离卷积器,其结构依次为:第1图像载入器→第1逐点卷积计算单元→第1图像输出器→第2图像载入器→深度卷积计算单元→第2图像输出器→第3图像载入器→第2逐点卷积计算单元→第3图像输出器;
所述第1、第2逐点卷积计算单元由用于储存权重参数的块随机存取存储器Block RAM和逐点卷积核阵列串联组成;所述逐点卷积核阵列由16个卷积核并联组成,每个卷积核大小均为1×1×1;
所述深度卷积计算单元由用于储存权重参数的块随机存取存储器Block RAM和深度卷积核阵列串联组成;所述深度卷积核阵列由16个卷积核并联组成,每个卷积核大小均为3×3×1;
(5c)设计一个平均池化器,其结构依次为:图像载入器→平均池化计算单元→图像输出器;所述平均池化计算单元由加法器与乘法器串联组成;
(5d)设计一个逐点卷积器,其结构依次为:图像载入器→逐点卷积计算单元→图像输出器;
(6)在现场可编程逻辑门阵列FPGA中实现训练好的轻量级深度卷积神经网络:
(6a)依次将标准卷积器、深度可分离卷积器、平均池化器和逐点卷积器结构中现场可编程逻辑门阵列FPGA基本单元的数量和连接方式信息输入至现场可编程逻辑门阵列FPGA编译器,生成未配置的功能描述文本;
所述现场可编程逻辑门阵列FPGA基本器件包含块随机存取存储器Block RAM、先入先出队列FIFO、卷积核、加法器、乘法器;
(6b)读取步骤(4i)中训练好的轻量级深度卷积网络的网络模型,利用session.get函数得到已训练好的轻量级深度卷积神经网络的网络配置参数;
(6c)将步骤(6b)中得到的网络配置参数、步骤(4i)中训练好的轻量级深度卷积神经网络各层权重参数和步骤(6a)生成的未配置的功能描述文本同时输入至现场可编程逻辑门阵列FPGA编译器,生成配置完成的功能描述文本;
(6d)将配置完成的功能描述文本输入至现场可编程逻辑门阵列FPGA综合器中,生成在现场可编程逻辑门阵列FPGA中实现的轻量级深度可分离卷积网络,其结构依次为:标准卷积器→第1深度可分离卷积器→第2深度可分离卷积器→第3深度可分离卷积器→第4深度可分离卷积器→第1逐点卷积器→平均池化器→第2逐点卷积器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010229332.2A CN111310921B (zh) | 2020-03-27 | 2020-03-27 | 一种轻量级深度卷积神经网络的fpga实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010229332.2A CN111310921B (zh) | 2020-03-27 | 2020-03-27 | 一种轻量级深度卷积神经网络的fpga实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111310921A CN111310921A (zh) | 2020-06-19 |
CN111310921B true CN111310921B (zh) | 2022-04-19 |
Family
ID=71149804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010229332.2A Active CN111310921B (zh) | 2020-03-27 | 2020-03-27 | 一种轻量级深度卷积神经网络的fpga实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111310921B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111882040B (zh) * | 2020-07-30 | 2023-08-11 | 中原工学院 | 基于通道数量搜索的卷积神经网络压缩方法 |
CN111967468A (zh) * | 2020-08-10 | 2020-11-20 | 东南大学 | 一种基于fpga的轻量级目标检测神经网络的实现方法 |
CN112508188A (zh) * | 2020-12-01 | 2021-03-16 | 北京奇艺世纪科技有限公司 | 一种分布式模型训练系统、方法、装置、设备和存储介质 |
CN113505830B (zh) * | 2021-07-09 | 2024-04-02 | 西安交通大学 | 旋转机械故障诊断方法、系统、设备及存储介质 |
CN114021440B (zh) * | 2021-10-28 | 2022-07-12 | 中航机载系统共性技术有限公司 | 一种基于matlab的fpga时序仿真验证方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN106250939A (zh) * | 2016-07-30 | 2016-12-21 | 复旦大学 | 基于fpga+arm多层卷积神经网络的手写体字符识别方法 |
GB201718359D0 (en) * | 2017-11-06 | 2017-12-20 | Imagination Tech Ltd | Nueral Network Hardware |
CN109284817A (zh) * | 2018-08-31 | 2019-01-29 | 中国科学院上海高等研究院 | 深度可分离卷积神经网络处理架构/方法/系统及介质 |
-
2020
- 2020-03-27 CN CN202010229332.2A patent/CN111310921B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN106250939A (zh) * | 2016-07-30 | 2016-12-21 | 复旦大学 | 基于fpga+arm多层卷积神经网络的手写体字符识别方法 |
GB201718359D0 (en) * | 2017-11-06 | 2017-12-20 | Imagination Tech Ltd | Nueral Network Hardware |
CN109284817A (zh) * | 2018-08-31 | 2019-01-29 | 中国科学院上海高等研究院 | 深度可分离卷积神经网络处理架构/方法/系统及介质 |
Non-Patent Citations (2)
Title |
---|
《A Real-Time Object Detection Accelerator with Compressed SSDLite on FPGA》;Fan HX et al;《IEEE》;20190620;全文 * |
《基于深度学习的道路场景语义分割算法研究与应用》;王希妍;《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》;20200215(第2020年第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111310921A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111310921B (zh) | 一种轻量级深度卷积神经网络的fpga实现方法 | |
JP6980958B1 (ja) | 深層学習に基づく農村地域分けゴミ識別方法 | |
CN108280514B (zh) | 基于fpga的稀疏神经网络加速系统和设计方法 | |
CN111459877B (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
CN113469073B (zh) | 一种基于轻量级深度学习的sar图像舰船检测方法及系统 | |
CN108108811B (zh) | 神经网络中的卷积计算方法和电子设备 | |
US20180018556A1 (en) | Superpixel methods for convolutional neural networks | |
CN111967468A (zh) | 一种基于fpga的轻量级目标检测神经网络的实现方法 | |
CN110766063A (zh) | 基于压缩激励和紧密连接卷积神经网络的图像分类方法 | |
CN105512723A (zh) | 一种用于稀疏连接的人工神经网络计算装置和方法 | |
CN108764466A (zh) | 基于现场可编程门阵列的卷积神经网络硬件及其加速方法 | |
CN112529165B (zh) | 深度神经网络剪枝方法、装置、终端及存储介质 | |
CN114218875A (zh) | 一种用于流场预测的加速方法及装置 | |
WO2021026225A1 (en) | System and method of accelerating execution of a neural network | |
CN107680044B (zh) | 一种图像超分辨率卷积神经网络加速计算方法 | |
CN107944545A (zh) | 应用于神经网络的计算方法及计算装置 | |
US20210019606A1 (en) | Cellular neural network integrated circuit having multiple convolution layers of duplicate weights | |
CN107341761A (zh) | 一种深度神经网络的计算执行方法和系统 | |
CN114004352B (zh) | 一种仿真实现方法、神经网络编译器以及计算机可读存储介质 | |
CN113392973A (zh) | 一种基于fpga的ai芯片神经网络加速方法 | |
WO2021238568A1 (zh) | 一种更新参数的方法、装置及存储介质 | |
CN116579408A (zh) | 一种基于模型结构冗余度的模型剪枝方法及系统 | |
CN110866552A (zh) | 基于全卷积空间传播网络的高光谱图像分类方法 | |
CN114372539B (zh) | 基于机器学习框架的分类方法及相关设备 | |
CN116301914A (zh) | 基于gap8微处理器的卷积神经网络部署方法 |
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 |