CN108009631A - 一种基于fpga的vgg-16通用处理模块及其控制方法 - Google Patents

一种基于fpga的vgg-16通用处理模块及其控制方法 Download PDF

Info

Publication number
CN108009631A
CN108009631A CN201711244286.8A CN201711244286A CN108009631A CN 108009631 A CN108009631 A CN 108009631A CN 201711244286 A CN201711244286 A CN 201711244286A CN 108009631 A CN108009631 A CN 108009631A
Authority
CN
China
Prior art keywords
module
batch
input
convolution
filtering
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
Application number
CN201711244286.8A
Other languages
English (en)
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.)
Ruishi Chikaku (shenzhen) Algorithm Technology Co Ltd
Original Assignee
Ruishi Chikaku (shenzhen) Algorithm Technology Co Ltd
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 Ruishi Chikaku (shenzhen) Algorithm Technology Co Ltd filed Critical Ruishi Chikaku (shenzhen) Algorithm Technology Co Ltd
Priority to CN201711244286.8A priority Critical patent/CN108009631A/zh
Publication of CN108009631A publication Critical patent/CN108009631A/zh
Pending legal-status Critical Current

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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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

Abstract

本发明公开一种基于FPGA的VGG‑16通用处理模块,包括:将顺序输入的待运算的Y行X列的特征数据转化为相邻三行数据同步输出的通用行移位模块,将通用行移位模块输出的三行同步数据与3*3卷积窗口进行卷积运算后输出的卷积核运算模块,将卷积核运算模块输出的卷积运算结果累加后输出的通用累加模块,存放中间过程的卷积层运算结果的,以及根据池化使能信号控制输入的卷积层运算结果是否进行池化处理后输出的池化模块。本发明还公开一种基于FPGA的VGG‑16通用处理模块的控制方法,控制临时缓存模块数据的读写控制,偏置与临时缓存模块读数据的切换选择。此种技术方案可对VGG‑16算法进行模块化、批次化处理,减小设计复杂度,具有很强的通用性。

Description

一种基于FPGA的VGG-16通用处理模块及其控制方法
技术领域
本发明涉及一种基于FPGA的VGG-16通用处理模块及其控制方法。
背景技术
VGG网络是对AlexNte经典CNN模型的改进,现在也已经是经典的CNN模型,这个模型成为了近些年人们研究的热点。
VGG网络的结构用的都是特别小的3×3的卷积模板和5个2×2的池化层,并将卷积层的深度提升到了16-19层。VGG-16结构有13个卷积层、3个全连接层,
发明内容
本发明的目的,在于提供一种基于FPGA的VGG-16通用处理模块,其可对VGG-16算法进行模块化、批次化处理,减小设计复杂度,具有很强的通用性。
为了达成上述目的,本发明的解决方案是:
一种基于FPGA的VGG-16通用处理模块,包括:
通用行移位模块,用于将顺序输入的待运算的Y行X列的特征数据转化为相邻三行数据同步输出;
卷积核运算模块,用于将通用行移位模块输出的三行同步数据与3*3卷积窗口进行卷积运算后输出;
通用累加模块,用于将卷积核运算模块输出的卷积运算结果累加后输出;
临时缓存模块,用于存放中间过程的卷积层运算结果;以及,
池化模块,用于根据池化使能信号控制输入的卷积层运算结果是否进行池化处理后输出。
设一个批次同时处理的卷积核数为:M*N,那么,所述通用处理模块包括N个通用行移位模块、M*N个卷积核运算模块、M个通用累加模块、M个临时缓存模块和M个池化模块。
如前所述的一种基于FPGA的VGG-16通用处理模块的控制方法,控制临时缓存模块数据的读写控制,偏置与临时缓存模块读数据的切换选择。
假设VGG-16第三层卷积层b步输入为特征数据112*112*128,参数数据(3*3*128+1)*128,即输入的特征数据为128层的112*112尺寸的特征数据,输入的参数为128个,取N=64,M=32,则进入第三层卷积层b步后需先后进行如下8个批次才能完成该步运算:
a.批次3.b.1:输入为前64个特征层输入112*112和第1至32个滤波核中前64个3*3卷积窗口及滤波核对应的32个偏置,输出为第1至32个滤波核运算的中间值并存入临时缓存模块;
b.批次3.b.2:输入为后64个特征层输入112*112和第1至32个滤波核中后64个3*3卷积窗口及上一批次临时缓存里的中间值,输出为第1至32个滤波核运算的结果;
c.批次3.b.3:输入为前64个特征层输入112*112和第33至64个滤波核中前64个3*3卷积窗口及滤波核对应的32个偏置,输出为第33至64个滤波核运算的中间值并存入临时缓存模块;
d.批次3.b.4:输入为后64个特征层输入112*112和第33至64个滤波核中后64个3*3卷积窗口及上一批次临时缓存里的中间值,输出为第33至64个滤波核运算的结果;
e.批次3.b.5:输入为前64个特征层输入112*112和第65至96个滤波核中前64个3*3卷积窗口及滤波核对应的32个偏置,输出为第65至96个滤波核运算的中间值并存入临时缓存模块;
f.批次3.b.6:输入为后64个特征层输入112*112和第65至96个滤波核中后64个3*3卷积窗口及上一批次临时缓存里的中间值,输出为第65至96个滤波核运算的结果;
g.批次3.b.7:输入为前64个特征层输入112*112和第97至128个滤波核中前64个3*3卷积窗口及滤波核对应的32个偏置,输出为第97至128个滤波核运算的中间值并存入临时缓存模块;
h.批次3.b.8:输入为后64个特征层输入112*112和第97至128个滤波核中后64个3*3卷积窗口及上一批次临时缓存里的中间值,输出为第97至128个滤波核运算的结果。
采用上述方案后,本发明具有如下有益效果:
(1)本发明提供的VGG-16通用处理模块实现方法,既能处理VGG-16的卷积层,又能处理VGG-16的池化层,通用性强,可根据输入特征数据的尺寸动态适应并处理各卷积层和池化层,无需针对各卷积层的尺寸和滤波核数的不同而特定设计相应处理模块,可加快算法实现的进度,提升算法的可靠性。
(2)本发明可以结合FPGA不同型号的片内资源选定最合适的VGG-16通用处理模块批次特征层数N和批次滤波核数M,快速在不同型号FPGA间移植或实现VGG-16算法,加速VGG-16算法实现,适应性强,可移植性强。
附图说明
图1是本发明的整体架构框图;
图2是本发明中特征处理模块的细节框图。
具体实施方式
以下将结合附图,对本发明的技术方案及有益效果进行详细说明。
如图1和图2所示,本发明提供一种基于FPGA的VGG-16通用处理模块,包括通用行移位模块和特征处理模块,其中,特征处理模块包括卷积核运算模块、通用累加模块、临时缓存模块和池化模块,下面分别介绍。
所述通用行移位模块用于将顺序输入的待运算的Y行X列的特征数据转化为相邻三行数据同步输出,其中中间行数据相对入数据延迟1行时间。
所述卷积核运算模块用于将通用行移位模块输出的三行同步数据与3*3卷积窗口进行卷积运算后输出。
所述通用累加模块用于将N个同步卷积核运算模块输出的卷积运算结果累加后输出。
所述临时缓存模块用于存放中间过程的卷积层运算结果。
所述池化模块用于根据池化使能信号控制输入的卷积层运算结果是否进行池化处理后输出。
所述通用处理模块中,定义从输入待处理特征数据的第一个像素点开始至处理完该特征数据的最后一个像素点结束成为一个批次处理,上一批次处理完成后即可进入下一批次处理,其中有如下约定:
N:每批次特征层数,即一个批次同时处理的特征(featuremap)层数;
M:每批次滤波核数,即一个批次同时处理的滤波器核数;
故一个批次同时处理的卷积核数为:M*N。
那么,需要使用N个通用行移位模块、M*N个卷积核运算模块、M个通用累加模块、M个临时缓存模块和M个池化模块。
基于上述通用处理模块,本发明还提供一种基于FPGA的VGG-16通用处理模块的控制方法,用来控制临时缓存模块数据的读写控制,偏置与临时缓存模块读数据的切换选择等逻辑。
如VGG-16第三层卷积层b步输入为特征数据112*112*128,参数数据(3*3*128+1)*128,即输入的特征数据为128层的112*112尺寸的特征数据,输入的参数为128个(3*3*128的卷积窗口系数+1个偏置),若取N=64,M=32,则进入第三层卷积层b步后需先后进行如下8个批次才能完成该步运算:
a.批次3.b.1:输入为前64个特征层输入112*112和第1至32个滤波核中前64个3*3卷积窗口及滤波核对应的32个偏置,输出为第1至32个滤波核运算的中间值并存入临时缓存模块;
b.批次3.b.2:输入为后64个特征层输入112*112和第1至32个滤波核中后64个3*3卷积窗口及上一批次临时缓存里的中间值,输出为第1至32个滤波核运算的结果;
c.批次3.b.3:输入为前64个特征层输入112*112和第33至64个滤波核中前64个3*3卷积窗口及滤波核对应的32个偏置,输出为第33至64个滤波核运算的中间值并存入临时缓存模块;
d.批次3.b.4:输入为后64个特征层输入112*112和第33至64个滤波核中后64个3*3卷积窗口及上一批次临时缓存里的中间值,输出为第33至64个滤波核运算的结果;
e.批次3.b.5:输入为前64个特征层输入112*112和第65至96个滤波核中前64个3*3卷积窗口及滤波核对应的32个偏置,输出为第65至96个滤波核运算的中间值并存入临时缓存模块;
f.批次3.b.6:输入为后64个特征层输入112*112和第65至96个滤波核中后64个3*3卷积窗口及上一批次临时缓存里的中间值,输出为第65至96个滤波核运算的结果;
g.批次3.b.7:输入为前64个特征层输入112*112和第97至128个滤波核中前64个3*3卷积窗口及滤波核对应的32个偏置,输出为第97至128个滤波核运算的中间值并存入临时缓存模块;
h.批次3.b.8:输入为后64个特征层输入112*112和第97至128个滤波核中后64个3*3卷积窗口及上一批次临时缓存里的中间值,输出为第97至128个滤波核运算的结果。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

Claims (4)

1.一种基于FPGA的VGG-16通用处理模块,其特征在于:包括:
通用行移位模块,用于将顺序输入的待运算的Y行X列的特征数据转化为相邻三行数据同步输出;
卷积核运算模块,用于将通用行移位模块输出的三行同步数据与3*3卷积窗口进行卷积运算后输出;
通用累加模块,用于将卷积核运算模块输出的卷积运算结果累加后输出;
临时缓存模块,用于存放中间过程的卷积层运算结果;以及,
池化模块,用于根据池化使能信号控制输入的卷积层运算结果是否进行池化处理后输出。
2.如权利要求1所述的一种基于FPGA的VGG-16通用处理模块,其特征在于:设一个批次同时处理的卷积核数为:M*N,那么,所述通用处理模块包括N个通用行移位模块、M*N个卷积核运算模块、M个通用累加模块、M个临时缓存模块和M个池化模块。
3.如权利要求1所述的一种基于FPGA的VGG-16通用处理模块的控制方法,其特征在于:控制临时缓存模块数据的读写控制,偏置与临时缓存模块读数据的切换选择。
4.如权利要求3所述的一种基于FPGA的VGG-16通用处理模块的控制方法,其特征在于:假设VGG-16第三层卷积层b步输入为特征数据112*112*128,参数数据(3*3*128+1)*128,即输入的特征数据为128层的112*112尺寸的特征数据,输入的参数为128个,取N=64,M=32,则进入第三层卷积层b步后需先后进行如下8个批次才能完成该步运算:
a.批次3.b.1:输入为前64个特征层输入112*112和第1至32个滤波核中前64个3*3卷积窗口及滤波核对应的32个偏置,输出为第1至32个滤波核运算的中间值并存入临时缓存模块;
b.批次3.b.2:输入为后64个特征层输入112*112和第1至32个滤波核中后64个3*3卷积窗口及上一批次临时缓存里的中间值,输出为第1至32个滤波核运算的结果;
c.批次3.b.3:输入为前64个特征层输入112*112和第33至64个滤波核中前64个3*3卷积窗口及滤波核对应的32个偏置,输出为第33至64个滤波核运算的中间值并存入临时缓存模块;
d.批次3.b.4:输入为后64个特征层输入112*112和第33至64个滤波核中后64个3*3卷积窗口及上一批次临时缓存里的中间值,输出为第33至64个滤波核运算的结果;
e.批次3.b.5:输入为前64个特征层输入112*112和第65至96个滤波核中前64个3*3卷积窗口及滤波核对应的32个偏置,输出为第65至96个滤波核运算的中间值并存入临时缓存模块;
f.批次3.b.6:输入为后64个特征层输入112*112和第65至96个滤波核中后64个3*3卷积窗口及上一批次临时缓存里的中间值,输出为第65至96个滤波核运算的结果;
g.批次3.b.7:输入为前64个特征层输入112*112和第97至128个滤波核中前64个3*3卷积窗口及滤波核对应的32个偏置,输出为第97至128个滤波核运算的中间值并存入临时缓存模块;
h.批次3.b.8:输入为后64个特征层输入112*112和第97至128个滤波核中后64个3*3卷积窗口及上一批次临时缓存里的中间值,输出为第97至128个滤波核运算的结果。
CN201711244286.8A 2017-11-30 2017-11-30 一种基于fpga的vgg-16通用处理模块及其控制方法 Pending CN108009631A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711244286.8A CN108009631A (zh) 2017-11-30 2017-11-30 一种基于fpga的vgg-16通用处理模块及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711244286.8A CN108009631A (zh) 2017-11-30 2017-11-30 一种基于fpga的vgg-16通用处理模块及其控制方法

Publications (1)

Publication Number Publication Date
CN108009631A true CN108009631A (zh) 2018-05-08

Family

ID=62055869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711244286.8A Pending CN108009631A (zh) 2017-11-30 2017-11-30 一种基于fpga的vgg-16通用处理模块及其控制方法

Country Status (1)

Country Link
CN (1) CN108009631A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109002885A (zh) * 2018-07-24 2018-12-14 济南浪潮高新科技投资发展有限公司 一种卷积神经网络池化单元及池化计算方法
CN110647978A (zh) * 2019-09-05 2020-01-03 北京三快在线科技有限公司 在卷积神经网络中提取卷积窗的系统和方法
WO2020029181A1 (zh) * 2018-08-09 2020-02-13 深圳鲲云信息科技有限公司 三维卷积神经网络计算装置及相关产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102320298A (zh) * 2011-06-09 2012-01-18 中国人民解放军国防科学技术大学 一种基于单芯片的车道偏离提醒装置
CN106203621A (zh) * 2016-07-11 2016-12-07 姚颂 用于卷积神经网络计算的处理器
CN106228240A (zh) * 2016-07-30 2016-12-14 复旦大学 基于fpga的深度卷积神经网络实现方法
CN106250939A (zh) * 2016-07-30 2016-12-21 复旦大学 基于fpga+arm多层卷积神经网络的手写体字符识别方法
CN107392309A (zh) * 2017-09-11 2017-11-24 东南大学—无锡集成电路技术研究所 一种基于fpga的通用定点数神经网络卷积加速器硬件结构

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102320298A (zh) * 2011-06-09 2012-01-18 中国人民解放军国防科学技术大学 一种基于单芯片的车道偏离提醒装置
CN106203621A (zh) * 2016-07-11 2016-12-07 姚颂 用于卷积神经网络计算的处理器
CN106228240A (zh) * 2016-07-30 2016-12-14 复旦大学 基于fpga的深度卷积神经网络实现方法
CN106250939A (zh) * 2016-07-30 2016-12-21 复旦大学 基于fpga+arm多层卷积神经网络的手写体字符识别方法
CN107392309A (zh) * 2017-09-11 2017-11-24 东南大学—无锡集成电路技术研究所 一种基于fpga的通用定点数神经网络卷积加速器硬件结构

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
孟勇: "一种基于FPGA的实时NPR系统", 《微型机与应用》 *
陈实: "大领域图像处理硬件加速的研究", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109002885A (zh) * 2018-07-24 2018-12-14 济南浪潮高新科技投资发展有限公司 一种卷积神经网络池化单元及池化计算方法
WO2020029181A1 (zh) * 2018-08-09 2020-02-13 深圳鲲云信息科技有限公司 三维卷积神经网络计算装置及相关产品
CN110647978A (zh) * 2019-09-05 2020-01-03 北京三快在线科技有限公司 在卷积神经网络中提取卷积窗的系统和方法

Similar Documents

Publication Publication Date Title
CN106844294B (zh) 卷积运算芯片和通信设备
CN108009631A (zh) 一种基于fpga的vgg-16通用处理模块及其控制方法
CN107862374A (zh) 基于流水线的神经网络处理系统和处理方法
CN106203617A (zh) 一种基于卷积神经网络的加速处理单元及阵列结构
CN108304923A (zh) 卷积运算处理方法及相关产品
EP3688671A1 (en) Method and system for neural network synthesis
CN108665063B (zh) 用于bnn硬件加速器的双向并行处理卷积加速系统
CN106951395A (zh) 面向压缩卷积神经网络的并行卷积运算方法及装置
CN105260773B (zh) 一种图像处理装置以及图像处理方法
CN110807522B (zh) 一种神经网络加速器的通用计算电路
CN106529668A (zh) 加速深度神经网络算法的加速芯片的运算装置及方法
CN106126481A (zh) 一种计算引擎和电子设备
Tsai et al. Implementation of FPGA-based accelerator for deep neural networks
CN108648159B (zh) 一种图像去雨方法及系统
CN107633297A (zh) 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器
CN108763159A (zh) 一种基于fpga的lstm前向运算加速器
US20190279092A1 (en) Convolutional Neural Network Compression
CN110580519B (zh) 一种卷积运算装置及其方法
CN107329461A (zh) 一种流水线车间调度方法和装置
EP4156079A1 (en) Image data storage method, image data processing method and system, and related apparatus
CN111626405A (zh) 一种cnn加速方法、加速装置及计算机可读存储介质
CN111126600A (zh) 神经网络模型的训练方法、数据处理方法和相关产品
CN111091183B (zh) 一种神经网络加速系统和方法
CN112836793B (zh) 浮点可分离卷积计算加速装置、系统以及图像处理方法
CN110135563A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180508