CN111831254A - 图像处理加速方法、图像处理模型存储方法及对应装置 - Google Patents
图像处理加速方法、图像处理模型存储方法及对应装置 Download PDFInfo
- Publication number
- CN111831254A CN111831254A CN201910300671.2A CN201910300671A CN111831254A CN 111831254 A CN111831254 A CN 111831254A CN 201910300671 A CN201910300671 A CN 201910300671A CN 111831254 A CN111831254 A CN 111831254A
- Authority
- CN
- China
- Prior art keywords
- convolution
- weight
- image processing
- hardware
- convolution kernel
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 93
- 238000000034 method Methods 0.000 title claims abstract description 90
- 230000001133 acceleration Effects 0.000 title claims abstract description 32
- 238000010586 diagram Methods 0.000 claims abstract description 34
- 239000011159 matrix material Substances 0.000 claims description 70
- 238000013527 convolutional neural network Methods 0.000 claims description 50
- 230000008569 process Effects 0.000 abstract description 10
- 238000004364 calculation method Methods 0.000 description 17
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 238000013528 artificial neural network Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- 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
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了图像处理加速方法和装置,图像处理模型存储方法和装置。其中,加速方法包括:获取图像处理模型中卷积层的输入特征图;从多个硬件运算单元中确定与卷积层中各个卷积核分别对应的硬件运算单元;通过与各个卷积核分别对应的硬件运算单元,并行根据所述卷积核中的非零权值和所述输入特征图,确定各个卷积核与所述输入特征图间的卷积结果;根据卷积结果生成卷积层的输出特征图。采用这种处理方式,使得卷积运算过程无需考虑零权值的运算,无需计算权重坐标,且数据流不存在数据依赖关系;因此,可以有效提升网络运行速度,且同时适用于稀疏CNN和非稀疏CNN。
Description
技术领域
本申请涉及机器学习技术领域,具体涉及图像处理加速方法和装置,图像处理模型存储方法和装置。
背景技术
随着对高效率模型的追求,当前很多深度神经网络的参数矩阵可以通过稀疏化操作转换为稀疏矩阵,使用稀疏矩阵作为参数矩阵的神经网络简称稀疏网络。由于稀疏网络中的非零参数通常是非冗余的,这些参数几乎都对实际模型结果有所贡献,因此采用稀疏网络既可以确保模型准确度,又可以降低模型对存储空间和计算时间的消耗。
目前,运行稀疏网络的硬件平台主要为现场可编程门阵列(FPGA)和定制化芯片(ASIC)等硬件平台,由于这类硬件平台可采用并行计算方式,因此相比通用处理器(CPU)具有更好的性能,简称为加速器。常用的几种面向稀疏网络的加速器包括:CIRCNN、SCNN、Cambricon-S等等。但是,网络稀疏性会导致计算不规则性,而计算不规则性又会导致并行计算困难,如果直接将现有加速器针对非稀疏卷积神经网络的并行计算策略应用于稀疏卷积神经网络,将会造成大量无效计算浪费在零权值的乘法运算上。因此设计针对稀疏卷积神经网络加速器的挑战更大。
然而,在实现本发明过程中,发明人发现上述技术方案至少存在如下问题之一:1)数据编码开销过大导致处理非稀疏网络时低效;2)计算过程过于复杂导致网络运行效率低;3)计算坐标需要额外开销导致消耗较多计算资源;4)数据流存在数据依赖关系导致网络运行效率低,等等。综上所述,现有技术存在无法既实现并行计算又无需计算零权值的乘法运算的问题,也就是说,现有加速器无法同时适用于稀疏CNN和非稀疏CNN的问题。
发明内容
本申请提供图像处理加速方法,以解决现有技术存在的无法既实现并行计算又无需计算零权值的乘法运算的问题。本申请另外提供图像处理加速装置,以及图像处理模型存储方法和装置。
本申请提供一种图像处理加速方法,包括:
获取图像处理模型中卷积层的输入特征图;
从多个硬件运算单元中确定与卷积层中各个卷积核分别对应的硬件运算单元;
通过与各个卷积核分别对应的硬件运算单元,并行根据所述卷积核中的非零权值和所述输入特征图,确定各个卷积核与所述输入特征图间的卷积结果;
根据卷积结果生成卷积层的输出特征图。
可选的,所述从多个硬件运算单元中确定与卷积层中各个卷积核分别对应的硬件运算单元,包括:
根据所述卷积核的输出通道编号和硬件运算单元数量,确定与各个卷积核分别对应的硬件运算单元。
可选的,还包括:
获取所述非零权值、所述非零权值在卷积核中的行号和列号、及各个卷积核的输入通道编号和输出通道编号;
所述卷积结果采用如下步骤确定:
针对所述卷积核中的各个非零权值,根据所述行号和列号,从所述输入特征图中确定与所述非零权值对应的子特征图;
对所述非零权值和所述子特征图执行乘法运算;
对与所述卷积核包括的各个非零权值分别对应的乘法运算结果执行加法运算,作为所述卷积结果;
所述根据卷积结果生成卷积层的输出特征图,包括:
针对卷积层的各个输出通道,根据所述输入通道编号和所述输出通道编号,对与所述输出通道对应的多个输入通道的卷积结果执行加法运算,作为所述卷积层在所述输出通道上的输出特征图。
可选的,所述获取所述非零权值、所述非零权值在卷积核中的行号和列号、及各个卷积核的输入通道编号和输出通道编号,包括:
从与所述卷积层对应的非零权值参数组矩阵中读取非零权值参数组;所述参数组在所述参数组矩阵中的列号根据输出通道编号对硬件运算单元数量取模确定,在所述参数组矩阵的一行参数组元素中根据硬件运算单元数量顺序存储对应不同硬件运算单元的参数组;
从所述参数组中解析得到所述非零权值、所述行号和所述列号、所述输出通道编号的第一索引值;
根据所述参数组在所述参数组矩阵中的列号,确定所述输出通道编号的第二索引值;
将所述参数组在所述参数组矩阵中的行号作为所述输入通道编号;
根据所述第一索引值、所述第二索引值和所述硬件运算单元数量,确定所述输出通道编号。
可选的,还包括:
获取硬件平台的资源数据;
根据硬件资源数据,确定卷积运算的特征图尺寸;
将所述输入特征图划分为多个所述特征图尺寸的输入特征子图;
通过与各个卷积核分别对应的硬件运算单元,并行根据所述卷积核中的非零权值和所述输入特征子图,确定各个卷积核与所述输入特征子图间的卷积结果;
针对各个卷积核,拼接所述卷积核与各个输入特征子图间的卷积结果,得到卷积核与所述输入特征图间的卷积结果。
可选的,所述硬件运算单元位于FPGA平台或ASIC平台。
可选的,所述图像处理模型的网络结构包括稀疏卷积神经网络和/或非稀疏卷积神经网络。
本申请还提供一种图像处理模型存储方法,包括:
获取待存储的基于卷积神经网络的图像处理模型;
针对所述图像处理模型的各个非零权值,根据所述非零权值、所述非零权值在卷积核中的行号和列号、及所述卷积核的输出通道编号,生成所述非零权值的参数组;
根据所述非零权值的输入通道编号和输出通道编号,确定所述参数组在非零权值参数组矩阵中的行列位置;
根据所述行列位置将所述参数组存储至存储器。
本申请还提供一种图像处理加速器,包括:
输入特征图获取单元,用于获取图像处理模型中卷积层的输入特征图;
硬件运算单元分配单元,用于从多个硬件运算单元中确定与卷积层中各个卷积核分别对应的硬件运算单元;
卷积运算单元,用于通过与各个卷积核分别对应的硬件运算单元,并行根据所述卷积核中的非零权值和所述输入特征图,确定各个卷积核与所述输入特征图间的卷积结果;
输出特征图生成单元,用于根据卷积结果生成卷积层的输出特征图。
本申请还提供一种图像处理模型存储装置,包括:
模型获取单元,用于获取待存储的基于卷积神经网络的图像处理模型;
参数组生成单元,用于针对所述图像处理模型的各个非零权值,根据所述非零权值、所述非零权值在卷积核中的行号和列号、及所述卷积核的输出通道编号,生成所述非零权值的参数组;
参数组定位单元,用于根据所述非零权值的输入通道编号和输出通道编号,确定所述参数组在非零权值参数组矩阵中的行列位置;
参数组存储单元,用于根据所述行列位置将所述参数组存储至存储器。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各种方法。
本申请还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各种方法。
与现有技术相比,本申请具有以下优点:
本申请实施例提供的图像处理加速方法,通过获取图像处理模型中卷积层的输入特征图;从多个硬件运算单元中确定与卷积层中各个卷积核分别对应的硬件运算单元;通过与各个卷积核分别对应的硬件运算单元,并行根据所述卷积核中的非零权值和所述输入特征图,确定各个卷积核与所述输入特征图间的卷积结果;根据卷积结果生成卷积层的输出特征图;这种处理方式,使得卷积运算过程无需考虑零权值的运算,无需计算权重坐标,且数据流不存在数据依赖关系,具体而言就是卷积运算数据流能够提供与硬件资源相匹配的并行计算的操作次数,操作在卷积神经网络中就是乘加操作,一个乘加操作的操作次数为2,既可以实现并行计算,又无需计算零权值的乘法运算;因此,可以有效提升网络运行速度,且同时适用于稀疏CNN和非稀疏CNN。
附图说明
图1是本申请提供的一种图像处理加速方法的实施例的流程图;
图2是本申请提供的一种图像处理加速方法的实施例的四维稠密数组形式下稀疏权重的示意图;
图3是本申请提供的一种图像处理加速方法的实施例的具体流程图;
图4是本申请提供的一种图像处理加速方法的实施例的卷积运算数据流的示意图;
图5是本申请提供的一种图像处理加速方法的实施例的权值存储压缩后的数据存储格式示意图;
图6是本申请提供的一种图像处理加速方法的实施例的具体流程图;
图7是本申请提供的一种图像处理加速装置的实施例的示意图;
图8是本申请提供的一种图像处理模型存储方法的实施例的流程图;
图9是本申请提供的一种图像处理模型存储装置的实施例的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请中,提供了图像处理加速方法和装置,图像处理模型存储方法和装置。在下面的实施例中逐一对各种方案进行详细说明。
第一实施例
请参考图1,其为本申请提供的一种图像处理加速方法实施例的流程图,该方法的执行主体包括图像处理加速装置。本申请提供的一种图像处理加速方法包括:
步骤S101:获取图像处理模型中卷积层的输入特征图。
所述图像处理模型的网络结构包括卷积神经网络(Convolutional NeuralNetworks,CNN)。CNN是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeural Networks),是深度学习(deep learning)的代表算法之一。从网络参数是否冗余角度而言,卷积神经网络可以是稀疏卷积神经网络(稀疏CNN),也可以是非稀疏卷积神经网络(非稀疏CNN)。
所述稀疏CNN,包括在卷积神经网络训练过程中或训练结束后,经过权重裁剪、矩阵变换、正则约束等方式,得到的非零参数数量远低于参数总量的卷积神经网络,如稀疏度在90%甚至99%以上。例如,参数总量为1000*1000,其中只有10000个非零参数,则该CNN为稀疏CNN。
所述非稀疏CNN,包括在卷积神经网络训练过程中和训练结束后,不进行任何形式的稀疏化操作,直接得到的神经网络。由于非稀疏CNN的参数矩阵中绝大多数参数的数值都是非0的,因此又可将该类CNN称作稠密卷积神经网络。
所述图像处理模型的网络结构,可以是稀疏卷积神经网络,也可以是非稀疏卷积神经网络,还可以是其中一部分卷积层的权重矩阵为稀疏矩阵,另一部分卷积层的权重矩阵为非稀疏矩阵,例如,所述图像处理模型的第1、3、5个卷积层的权重矩阵为稀疏矩阵,而第2、4、6个卷积层的权重矩阵为稠密矩阵,通过本申请实施例提供的方法使得既可以加速稀疏矩阵的卷积层的运算速度,还可以提升稠密矩阵的卷积层的运算速度,且对这两类卷积层的权重存储方式及卷积运算方式均是一致的。
所述图像处理模型中可包括多个卷积层,每层卷积层(Convolutional layer)由若干卷积核(卷积单元)组成,每个卷积核的参数可以是通过反向传播算法最佳化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低级特征中迭代提取更复杂的特征。具体而言,卷积核可以是图像处理时,给定输入图像,在输出图像中每一个像素是输入图像中一个小区域中像素的加权平均,其中权值由一个函数定义,这个函数称为卷积核。
根据所述卷积层在CNN中的位置,所述卷积层的输入特征图可以是图像处理模型中输入层的输入数据,也可以是上一个卷积层的输出特征图。本实施例以CNN的第一个卷积层为例对所述方法进行说明。
如图2所示,在本实施例中,输入图像为RGB三个通道:输入通道0、1和2,第一个卷积层包括12组卷积核,每组卷积核中卷积核的数量与输入图像的通道数量相同,不同卷积核对应不同的输入通道,每个卷积核的尺寸均为3X3,该层的卷积过程是首先通过每个卷积核分别与对应输入通道的图像进行卷积,得到12X3个特征图,然后将每组卷积核对应的3个通道的卷积结果累加,得到该卷积层输出的12个输出特征图。其中,1个卷积层包括多组卷积核的原因在于,1组卷积核(1个输出通道)得到的特征提取是不充分的,因此通常要添加多组卷积核,比如12组卷积核,可以学习12种特征。
在获取到卷积层的输入特征图后,就可以进入下一步,确定与卷积层中各个卷积核分别对应的加速器平台上的硬件运算单元。
步骤S103:从多个硬件运算单元中确定与卷积层中各个卷积核分别对应的硬件运算单元。
所述多个硬件运算单元可位于可定制化的硬件平台上,如FPGA平台、ASIC平台等等。由于在可定制化的硬件平台上可以以大规模并行的方式实施算法,使得显著提升卷积运算速度,因此本申请实施例将这种硬件平台称为加速器平台。
FPGA(现场可编程门阵列)是一种可编程的半定制芯片,其与GPU一样具有并行处理优势,并且也可以设计成具有多内核的形态,其最大的优势在于其可编程的特性。这也意味着用户可以根据需要的逻辑功能对电路进行快速烧录。即使是出厂后的成品FPGA的逻辑块和连接,用户无需改***件,就可通过升级软件来配置这些芯片来实现自定义硬件功能。通过配置FPGA的可编程架构来实现任意需要的数字功能组合,可以以大规模并行的方式实施算法,这意味着可以非常迅速和有效地执行大数据的处理。
ASIC芯片的计算能力和计算效率都直接根据特定的算法的需要进行定制的,所以其可以实现体积小、功耗低、高可靠性、保密性强、计算性能高、计算效率高等优势。所以,在其所针对的特定的应用领域,ASIC芯片的能效表现要远超CPU、GPU等通用型芯片以及半定制的FPGA。但是,除非依靠其他通用处理硬件,ASIC芯片只能执行其设计时所针对的特定种类的算法。
所述加速器平台包括的硬件运算单元数量决定卷积神经网络执行的并行度。在本实施例中,设计了一个并行度为4的定制化集成电路,加速器平台包括的硬件运算单元数量为4。硬件运算单元数量是由硬件决定的,硬件设计可以由软件编程,这是FPGA的功能。
在一个示例中,步骤S103可采用如下方式实现:根据各个卷积核的输出通道编号和所述加速器平台的硬件运算单元数量,确定与各个卷积核分别对应的硬件运算单元。卷积核组数C,也就是输出通道数量,其在神经网络中通常大于硬件运算单元数量N。当卷积核组数C大于硬件运算单元数量N时,可以以N为底(除数),对C求余数,把C组卷积核按照余数分配到N个计算单元上进行并行的卷积运算。采用这种处理方式,使得规范化权重参数的读取和写入,避免竞争存储带宽;因此,可以有效提升网络运行速度。
例如,有12组卷积核需要分配到4个运算单元时,第0、4、8组卷积核的卷积运算全部分配到第0个硬件运算单元,第1、5、9组卷积核的卷积运算全部分配到第1个硬件运算单元,第2、6、10组卷积核的卷积运算全部分配到第2个硬件运算单元,第3、7、11组卷积核的卷积运算全部分配到第3个硬件运算单元。
在确定各个卷积核分别对应的硬件运算单元后,就可以进入下一步,确定每个卷积核与输入数据间的卷积结果。
步骤S105:通过与各个卷积核分别对应的硬件运算单元,根据所述卷积核中的非零权值和所述输入特征图,并行确定各个卷积核与所述输入特征图间的卷积结果。
本申请实施例提供的加速方法,在通过多个硬件运算单元对多个卷积核操作并行执行卷积运算基础上,引入元素-矩阵点对点相乘的核心算子,其中“元素”就是非零权值,矩阵可以是输入特征图本身,也可以是输入特征图中的部分区域-输入特征子图,而无需计算零权值的乘法运算,即可获得各个卷积核分别与所述输入特征图间的卷积结果。
如图3所示,在一个示例中,所述卷积结果可采用如下步骤确定:
步骤S301:针对所述卷积核中的各个非零权值,根据所述行号和列号,从所述输入特征图中确定与所述非零权值对应的子特征图。
步骤S303:对所述非零权值和所述子特征图执行乘法运算。
本步骤的乘法运算为卷积核中非零权值和子特征图间的乘法运算,也就是说,本实施例引入了元素-矩阵点对点相乘的核心算子。其中,非零权值仅仅是一个数值,将其称为元素;子特征图可表示为矩阵形式,将其称为矩阵。
步骤S305:对与所述卷积核包括的各个非零权值分别对应的乘法运算结果执行加法运算,作为所述卷积结果。
具体实施时,步骤S305可包括如下子步骤:1)根据所述卷积核的输入通道编号和所述输出通道编号,确定所述卷积核包括的至少一个非零权值;2)对与所述至少一个非零权值分别对应的乘法运算结果执行加法运算,作为所述卷积结果。
如图4所示,输入特征图包括M(如3)个输入通道的特征图,输出特征图包括N(如12)个输出通道的特征图(尺寸为7X7),卷积核尺寸为3X3,其中包括3个非零权值,分别为第0行第0列的非零权值,第1行第2列的非零权值,第2行第1列的非零权值,卷积核移动步长为3;对于一个输入特征子图(尺寸为5X5),卷积核可以在5X5的小块内上下各移动3步,也就是说每个非零权值对应了一块3X3的区域(即:与该输入特征子图中的与非零权值的行列位置对应的子特征图),将每个非零权值与其对应的子特征图(尺寸为3X3)相乘,得到图中所示的与0行0列非零权值对应的乘法结果、与1行2列非零权值对应的乘法结果、与2行0列非零权值对应的乘法结果,将这三个乘法结果累加即可得到该卷积核与子特征图间的卷积结果。其中,得到卷积结果涉及的运算次数包括:1X9X3次乘法运算和2次加法运算;1X9是指一个非零权值与子特征图中9个元素值的乘法运算,3是指三个非零权值,2是指对3个输入通道各自对应的卷积结果执行2次加法,具体实施时可通过缓存和累加器进行累加。在并行计算设计时,本申请实施例提供的加速方法采取了多个输出通道并行计算的模式。
本申请实施例提供的加速方法,通过采用如图4所示的数据流方式,使得最大化非零权值的重利用。其原因在于,以3x3卷积核为例,卷积核可以在5x5的输入特征子图内上下各移动3步,也就是说每个非零权值对应了一块3x3的区域,由于一个非零权值与一块3x3的区域相乘,因此重利用次数为3x3。用公式表示,复用次数是(w_i–w_k+1)*(h_i–h_k+1),四个参数分别是输入宽度,卷积核宽度,输入高度,卷积核高度。由于实现最大化非零权值的重利用,因此可以有效提升网络运行速度。同时,这种处理方式还使得基本保证每个硬件运算单元被分到相同的工作量,也就是说,每个硬件运算单元处理的都是一个权值乘以如3x3的输入块(也就是9次乘法),因此硬件运算单元的工作量都是相同的;因此,可以有效确保各计算单元负载均衡,从而提升网络运行速度。此外,这种处理方式还使得卷积运算数据流计算方式不同于传统卷积定义,每次选取多个非零权值与输入图像中的部分区域相乘,其中非零权值来自于不同的输出通道来保证数据无依赖性。
需要强调的是,本申请实施例提供的加速方法并不计算零权重和输入特征图间的乘法,而只计算非零权重和输入特征图间的乘法,由此可见所有的卷积计算都是有效的,因此可以有效提升网络运行速度。
在确定各个卷积结果后,就可以进入下一步,根据卷积结果生成卷积层的输出特征图。
步骤S107:根据卷积结果生成卷积层的输出特征图。
针对卷积层的各个输出通道(如共12个输出通道),对在该输出通道上的多个输入通道(如3个)的卷积结果执行加法运算,作为所述卷积层在该输出通道上的输出特征图。如果输入通道为1,则步骤S105的卷积结果就是输出特征图。
在本实施例中,所述加速方法还可包括如下步骤:获取所述非零权值、所述非零权值在卷积核中的行号和列号、及各个卷积核的输入通道编号和输出通道编号。在获得这些参数后,就可以确定由哪一个硬件运算单元执行该非零权值与哪个输入通道的输入特征图中哪个子特征图之间元素-矩阵间的点对点相乘运算。
为了节省图像处理模型的存储空间并且加快并行程序处理速度,需要对稀疏CNN进行压缩存储,压缩存储的原则可以是:不重复存储相同元素;不存储零值元素。常用的几种稀疏矩阵存储格式如下:按列压缩的稀疏矩阵(column-major sparse compressformat,Compressed Sparse Column Format,CSC),COO,CSR,DIA,ELL,HYB等,这些存储格式都可以达到压缩矩阵,减少矩阵存储所占用的空间的目的。压缩方法主要是通过增加一些“元信息”来描述矩阵中的非零元素存储的位置(如基于列),然后结合非零元素的值来表示矩阵。
例如,要创建一个如下的3x3的稀疏矩阵:
1 0 0
0 3 0
0 0 0
上面的3x3的矩阵,通过按列压缩的稀疏矩阵(column-major sparse compressformat)可以表示为下面3个数组:
Array(0,1,1,0)
Array(0,1)
Array(1,2)
第一个数组表示的是列偏移量;第二个数组表示的是每一列中非零元素所在的行号,即行索引,行号从0开始,如上面的矩阵中,第一列元素1在第0行,元素2在第2行;第三个数组是按照列,依次按照顺序记录的矩阵中的非零值。
在本实施例中,提出一种新的稀疏CNN压缩存储方式,称为基于数学取模的混合压缩格式,基于该压缩存储方式获取一个卷积层中的上述参数(包括:非零权值、所述非零权值在卷积核中的行号和列号、及各个卷积核的输入通道编号和输出通道编号)的过程如下所述:1)从保存在加速器平台的存储器中的与该卷积层对应的非零权值参数组矩阵中读取非零权值参数组,如图5中与输入通道1对应的最后一个非零权值参数组(3,1,0,2,1),所述参数组在所述参数组矩阵中的列号根据输出通道编号对硬件运算单元数量取模确定,在所述参数组矩阵的一行参数组元素中根据硬件运算单元数量顺序存储对应不同硬件运算单元的参数组,使得所述参数组矩阵中相邻列的参数组对应不同的硬件运算单元;2)从所述参数组中解析得到所述非零权值、所述行号和所述列号、所述输出通道编号的第一索引值,如5元组(3,1,0,2,1)中第1个元素3表示非零权值,第2、3个元素1和2分别表示该非零权值在卷积核中的行号和列号,第4个元素2表示输出通道编号的第一索引值,该索引值是输出通道编号11除硬件运算单元数量4的商为2;3)根据所述参数组在所述参数组矩阵中的列号,确定所述输出通道编号的第二索引值,所述第二索引值包括所述非零权值所在卷积核的输出通道编号除以所述运算单元数量得到的余数,如图5中将不同输入通道的非零权值集中存储,且每个非零权值在所述参数组矩阵中的列号与权值的输出通道有关;4)将所述参数组在所述参数组矩阵中的行号作为所述输入通道编号,如上述5元组(3,1,0,2,1)的输入通道编号为1;5)根据所述第一索引值、所述第二索引值和所述硬件运算单元数量,确定与该非零权值对应的所述输出通道编号,如输出通道编号=第一索引值X硬件运算单元数量+(第二索引值mod并行数),本例中输出通道编号=2X4+(7mod4)=11。
由此可见,在这种基于数学取模的混合压缩格式中,非零权值根据其所在的输出通道关于设计参数(如硬件运算单元数量或并行数)的余数来进行排序,从而能使权值的访问规则化,充分利用片上内存的带宽,也就是说,在根据输出通道关于并行数的余数将每个非零权值的参数组分布在参数组矩阵中不同行列位置后,由于执行卷积运算的硬件运算单元也是按余数分配的,这样在取数时就不会遇到争抢存储带宽的问题。
在本实施例中,将压缩后的非零权值参数组以二维矩阵(参数组矩阵)的方式存储在加速器平台的存储器中。在这个二维矩阵中,行索引表示输入通道编号,如第一行表示这一行的权值都是来自于第一个输入通道;列索引表示输出通道编号的第二索引值,如上例中(3,1,0,2,1)位于第2行中的第7列,当读到该参数组时根据第一索引值2和第二索引值7,就可以确定该权值在第11输出通道上,将11对并行数4取余后,确定该权值与输入特征图间的乘法运算由硬件运算单元3执行。
在一个示例中,假设计算并行度为N,在参数组矩阵的每一行中,连续的N个权值来自于不同的输出通道,并且所在输出通道对于N取模后的值依次加1。例如,N=4,则在一行中连续的4个权值属于不同的输出通道。
在本实施例中,对于参数组矩阵中的任意一行参数组元素,根据列号依次读取各个非零权值参数组,在读取出一个参数组后,解析出其中的非零权值并确定其它参数(包括:所述非零权值在卷积核中的行号和列号、及各个卷积核的输入通道编号和输出通道编号),然后将该非零权值分配至相应的硬件运算单元执行该非零权值与输入特征图间的乘法运算,由于非零权值的参数组在所述参数组矩阵中的列号是按照输出通道编号对硬件运算单元数量取模确定的,且由于硬件运算单元数量的相邻列的参数组分别对应不同的硬件运算单元,使得非零权值的访问规则化,并可充分利用片上(硬件平台)内存的带宽。
本申请实施例提供的加速方法,还可采用不同的定点化方案存储权值索引值,也就是说,对参数组中的不同数据采用不同的数据精度,数据精度也可称为存储带宽。例如,上例中5元组中第1个元素(非零权值)的数据精度为16比特,第2、3个元素(非零权值在卷积核中的方位:行号和列号)共占4比特,第4个元素(第一索引值:商数)为8比特,参数组是否有效的信号为1比特。
本申请实施例提供的方法,通过采用上述基于数学取模的混合压缩格式,使得卷积运算数据流中的数据依赖关系能够满足流水线间隔为1的要求,也就是说,使得权值的访问规则化,由此保证了每次并行计算所需要的权值可以在一个时钟周期内被访问到,且计算结果需要在一个时钟周期被累加到输出缓存上;因此,可以有效提升网络运行速度。
如图6所示,在本实施例中,所述加速方法还可包括如下步骤:
步骤S601:获取硬件平台的资源数据。
所述硬件平台的资源数据,可包括存储资源、计算资源、通信资源(带宽资源)等等。硬件平台,也可称为计算平台等等。本实施例的硬件平台采用FPGA平台,对于FPGA平台而言,计算资源可以是DSP、LUT等等,存储资源可以是LUT等等。
步骤S603:根据硬件资源数据,确定卷积运算的特征图尺寸。
硬件资源数据可能影响到卷积层的具体计算方式,如果硬件平台的硬件资源较为紧张,则可以限制执行卷积运算时的特征图尺寸,将输入特征图划分为多个所述特征图尺寸的输入特征子图,通过卷积核对各个输入特征子图分别执行卷积运算,然后再对各个输入特征子图的卷积结果进行拼接,得到输入特征图的卷积结果。采用这种处理方式的原因在于,如果直接将非零权值与尺寸较大的输入特征图进行运算,则在一个周期内一个非零权值就要和较大的输入特征图矩阵做乘法,这种方式虽然使得非零权值的复用率更高,但是有限的硬件资源可能导致无法在一个周期内完成一个非零权值和较大的输入特征图矩阵间的乘法运算,由此影响并行计算的执行效果。
步骤S604:将所述输入特征图划分为多个所述特征图尺寸的输入特征子图。
例如,输入特征图的尺寸为n*n,且n较大,由于特征图尺寸与硬件资源并不匹配,因此本实施例将该图划分为多个5*5的输入特征子图。
相应的,步骤S105可包括如下子步骤:
步骤S1051:通过与各个卷积核分别对应的硬件运算单元,并行根据所述卷积核中的非零权值和所述输入特征子图,确定各个卷积核与所述输入特征子图间的卷积结果。
步骤S1052:针对各个卷积核,拼接所述卷积核与各个输入特征子图间的卷积结果,得到卷积核与所述输入特征图间的卷积结果。
相应的,步骤S301中所述的从所述输入特征图中确定与所述非零权值对应的子特征图,可采用如下方式:从各个输入特征子图中确定与所述非零权值对应的子特征图。如图4所示,从尺寸为5*5的输入特征子图中确定出与卷积核中3个非零权值分别对应的子特征图(3*3的尺寸),而非直接从完整的输入特征图中确定出与卷积核中3个非零权值分别对应的子特征图。
本申请实施例通过图6所示的方法执行卷积运算,使得在有限的硬件资源下仍可以有效提升网络运行速度。
从上述实施例可见,本申请实施例提供的卷积神经网络的加速方法,通过获取图像处理模型中卷积层的输入特征图;从多个硬件运算单元中确定与卷积层中各个卷积核分别对应的硬件运算单元;通过与各个卷积核分别对应的硬件运算单元,并行根据所述卷积核中的非零权值和所述输入特征图,确定各个卷积核与所述输入特征图间的卷积结果;根据卷积结果生成卷积层的输出特征图;这种处理方式,使得卷积运算过程无需考虑零权值的运算,无需计算权重坐标,且数据流不存在数据依赖关系,具体而言就是卷积运算数据流能够提供与硬件资源相匹配的并行计算的操作次数,操作在卷积神经网络中就是乘加操作,一个乘加操作的操作次数为2,既可以实现并行计算,又无需计算零权值的乘法运算;因此,可以有效提升网络运行速度,且同时适用于稀疏CNN和非稀疏CNN。
在上述的实施例中,提供了一种图像处理加速方法,与之相对应的,本申请还提供一种图像处理加速装置。该装置是与上述方法的实施例相对应。
第二实施例
请参看图7,其为本申请的图像处理加速装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本申请另外提供一种图像处理加速装置,包括:
输入特征图获取单元701,用于获取图像处理模型中卷积层的输入特征图;
硬件运算单元分配单元703,用于从多个硬件运算单元中确定与卷积层中各个卷积核分别对应的硬件运算单元;
卷积运算单元705,用于通过与各个卷积核分别对应的硬件运算单元,并行根据所述卷积核中的非零权值和所述输入特征图,确定各个卷积核与所述输入特征图间的卷积结果;
输出特征图生成单元707,用于根据卷积结果生成卷积层的输出特征图。
可选的,所述硬件运算单元分配单元703,具体用于根据所述卷积核的输出通道编号和硬件运算单元数量,确定与各个卷积核分别对应的硬件运算单元。
可选的,还包括:
数据获取单元,用于获取所述非零权值、所述非零权值在卷积核中的行号和列号、及各个卷积核的输入通道编号和输出通道编号;
所述卷积运算单元705包括:
子特征图确定子单元,用于针对所述卷积核中的各个非零权值,根据所述行号和列号,从所述输入特征图中确定与所述非零权值对应的子特征图;
乘法运算子单元,用于对所述非零权值和所述子特征图执行乘法运算;
加法运算子单元,用于对与所述卷积核包括的各个非零权值分别对应的乘法运算结果执行加法运算,作为所述卷积结果;
所述输出特征图生成单元707,具体用于针对卷积层的各个输出通道,根据所述输入通道编号和所述输出通道编号,对与所述输出通道对应的多个输入通道的卷积结果执行加法运算,作为所述卷积层在所述输出通道上的输出特征图。
可选的,所述数据获取单元包括:
参数组读取子单元,用于从与所述卷积层对应的非零权值参数组矩阵中读取非零权值参数组;所述参数组在所述参数组矩阵中的列号根据输出通道编号对硬件运算单元数量取模确定,在所述参数组矩阵的一行参数组元素中根据硬件运算单元数量顺序存储对应不同硬件运算单元的参数组;
解析子单元,用于从所述参数组中解析得到所述非零权值、所述行号和所述列号、所述输出通道编号的第一索引值;所述第一索引值包括所述非零权值所在卷积核的输出通道编号除以所述运算单元数量的商;
第二索引值确定子单元,用于根据所述参数组在所述参数组矩阵中的列号,确定所述输出通道编号的第二索引值;所述第二索引值包括所述非零权值的输出通道编号除以所述运算单元数量得到的余数;
输入通道编号确定子单元,用于将所述参数组在所述参数组矩阵中的行号作为所述输入通道编号;
输出通道编号确定子单元,用于根据所述第一索引值、所述第二索引值和所述硬件运算单元数量,确定所述输出通道编号。
可选的,还包括:
硬件资源数据获取单元,用于获取硬件平台的资源数据;
特征图尺寸确定单元,用于根据硬件资源数据,确定卷积运算的特征图尺寸;
输入特征图分割单元,用于将所述输入特征图划分为多个所述特征图尺寸的输入特征子图;
所述卷积运算单元705,具体用于通过与各个卷积核分别对应的硬件运算单元,并行根据所述卷积核中的非零权值和所述输入特征子图,确定各个卷积核与所述输入特征子图间的卷积结果;针对各个卷积核,拼接所述卷积核与各个输入特征子图间的卷积结果,得到卷积核与所述输入特征图间的卷积结果。
可选的,所述硬件运算单元位于FPGA平台或ASIC平台。
可选的,所述图像处理模型的网络结构包括稀疏卷积神经网络和/或非稀疏卷积神经网络。
在上述的实施例中,提供了一种图像处理加速方法,与之相对应的,本申请还提供一种图像处理模型存储方法。该方法是与上述方法的实施例相对应。
第三实施例
请参考图8,其为本申请的图像处理模型存储方法实施例的流程图。由于还方法实施例基本相似于实施例一,所以描述得比较简单,相关之处参见方法实施例一的部分说明即可。下述描述的方法实施例仅仅是示意性的。
本实施例的一种图像处理模型存储方法包括如下步骤:
步骤S801:获取待存储的基于卷积神经网络的图像处理模型。
所述图像处理模型可包括多个卷积层,其中部分卷积层的权重矩阵为稀疏矩阵,部分卷积层的权重矩阵为稠密矩阵。
步骤S803:针对所述图像处理模型的各个非零权值,根据所述非零权值、所述非零权值在卷积核中的行号和列号、及所述卷积核的输出通道编号,生成所述非零权值的参数组。
所述参数组中元素说明可参见上述实施例一中的相关说明,此处不再赘述。
步骤S805:根据所述非零权值的输入通道编号和输出通道编号,确定所述参数组在非零权值参数组矩阵中的行列位置。
步骤S807:根据所述行列位置将所述参数组存储至存储器。
本申请实施例提供的存储方法,按照不同卷积层分别存储各个卷积层对应的参数组矩阵。所述参数组在参数组矩阵中的行位置,可根据非零权值的输入通道编号确定,如将同一输入通道编号的非零权值参数组存放在矩阵中的同一行中;所述参数组在参数组矩阵中的列位置,可根据非零权值的输出通道编号确定,如根据输出通道编号对硬件运算单元数量取模的值(余数)确定参数组在矩阵中的列号,具体可根据硬件运算单元数量顺序存储对应不同硬件运算单元的参数组,如硬件运算单元数量为4,则矩阵一行中相邻的4个参数组可对应不同的硬件运算单元,这样就使得卷积运算时权值的访问规则化,可充分利用片上内存的带宽,也就是说,在根据输出通道关于并行数的余数将每个非零权值的参数组分布在参数组矩阵中不同行列位置后,由于执行卷积运算的硬件运算单元也是按余数分配的,这样在取数时就不会遇到争抢存储带宽的问题。
从上述实施例可见,本申请实施例提供的图像处理模型存储方法,通过获取待存储的基于卷积神经网络的图像处理模型;针对所述图像处理模型的各个非零权值,根据所述非零权值、所述非零权值在卷积核中的行号和列号、及所述卷积核的输出通道编号,生成所述非零权值的参数组;根据所述非零权值的输入通道编号和输出通道编号,确定所述参数组在非零权值参数组矩阵中的行列位置;根据所述行列位置将所述参数组存储至存储器;这种处理方式,使得数据编码开销较小,且基于该存储方式的卷积运算过程无需考虑零权值,无需计算权重坐标,数据流不存在数据依赖关系;因此,可以有效提升网络运行速度,且同时适用于稀疏CNN和稠密CNN。
在上述的实施例中,提供了一种图像处理模型存储方法,与之相对应的,本申请还提供一种图像处理模型存储装置。该装置是与上述方法的实施例相对应。
第四实施例
请参看图9,其为本申请的图像处理模型存储装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本申请另外提供一种图像处理模型存储装置,包括:
模型获取单元901,用于获取待存储的基于卷积神经网络的图像处理模型;
参数组生成单元903,用于针对所述图像处理模型的各个非零权值,根据所述非零权值、所述非零权值在卷积核中的行号和列号、及所述卷积核的输出通道编号,生成所述非零权值的参数组;
参数组定位单元905,用于根据所述非零权值的输入通道编号和输出通道编号,确定所述参数组在非零权值参数组矩阵中的行列位置;
参数组存储单元907,用于根据所述行列位置将所述参数组存储至存储器。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (10)
1.一种图像处理加速方法,其特征在于,包括:
获取图像处理模型中卷积层的输入特征图;
从多个硬件运算单元中确定与卷积层中各个卷积核分别对应的硬件运算单元;
通过与各个卷积核分别对应的硬件运算单元,并行根据所述卷积核中的非零权值和所述输入特征图,确定各个卷积核与所述输入特征图间的卷积结果;
根据卷积结果生成卷积层的输出特征图。
2.根据权利要求1所述的方法,其特征在于,所述从多个硬件运算单元中确定与卷积层中各个卷积核分别对应的硬件运算单元,包括:
根据所述卷积核的输出通道编号和硬件运算单元数量,确定与各个卷积核分别对应的硬件运算单元。
3.根据权利要求1所述的方法,其特征在于,还包括:
获取所述非零权值、所述非零权值在卷积核中的行号和列号、及各个卷积核的输入通道编号和输出通道编号;
所述卷积结果采用如下步骤确定:
针对所述卷积核中的各个非零权值,根据所述行号和列号,从所述输入特征图中确定与所述非零权值对应的子特征图;
对所述非零权值和所述子特征图执行乘法运算;
对与所述卷积核包括的各个非零权值分别对应的乘法运算结果执行加法运算,作为所述卷积结果;
所述根据卷积结果生成卷积层的输出特征图,包括:
针对卷积层的各个输出通道,根据所述输入通道编号和所述输出通道编号,对与所述输出通道对应的多个输入通道的卷积结果执行加法运算,作为所述卷积层在所述输出通道上的输出特征图。
4.根据权利要求3所述的方法,其特征在于,所述获取所述非零权值、所述非零权值在卷积核中的行号和列号、及各个卷积核的输入通道编号和输出通道编号,包括:
从与所述卷积层对应的非零权值参数组矩阵中读取非零权值参数组;所述参数组在所述参数组矩阵中的列号根据输出通道编号对硬件运算单元数量取模确定,在所述参数组矩阵的一行参数组元素中根据硬件运算单元数量顺序存储对应不同硬件运算单元的参数组;
从所述参数组中解析得到所述非零权值、所述行号和所述列号、所述输出通道编号的第一索引值;
根据所述参数组在所述参数组矩阵中的列号,确定所述输出通道编号的第二索引值;
将所述参数组在所述参数组矩阵中的行号作为所述输入通道编号;
根据所述第一索引值、所述第二索引值和所述硬件运算单元数量,确定所述输出通道编号。
5.根据权利要求1所述的方法,其特征在于,还包括:
获取硬件平台的资源数据;
根据硬件资源数据,确定卷积运算的特征图尺寸;
将所述输入特征图划分为多个所述特征图尺寸的输入特征子图;
通过与各个卷积核分别对应的硬件运算单元,并行根据所述卷积核中的非零权值和所述输入特征子图,确定各个卷积核与所述输入特征子图间的卷积结果;
针对各个卷积核,拼接所述卷积核与各个输入特征子图间的卷积结果,得到卷积核与所述输入特征图间的卷积结果。
6.根据权利要求1所述的方法,其特征在于,所述硬件运算单元位于FPGA平台或ASIC平台。
7.根据权利要求1所述的方法,其特征在于,所述图像处理模型的网络结构包括稀疏卷积神经网络和/或非稀疏卷积神经网络。
8.一种图像处理模型存储方法,其特征在于,包括:
获取待存储的基于卷积神经网络的图像处理模型;
针对所述图像处理模型的各个非零权值,根据所述非零权值、所述非零权值在卷积核中的行号和列号、及所述卷积核的输出通道编号,生成所述非零权值的参数组;
根据所述非零权值的输入通道编号和输出通道编号,确定所述参数组在非零权值参数组矩阵中的行列位置;
根据所述行列位置将所述参数组存储至存储器。
9.一种图像处理加速器,其特征在于,包括:
输入特征图获取单元,用于获取图像处理模型中卷积层的输入特征图;
硬件运算单元分配单元,用于从多个硬件运算单元中确定与卷积层中各个卷积核分别对应的硬件运算单元;
卷积运算单元,用于通过与各个卷积核分别对应的硬件运算单元,并行根据所述卷积核中的非零权值和所述输入特征图,确定各个卷积核与所述输入特征图间的卷积结果;
输出特征图生成单元,用于根据卷积结果生成卷积层的输出特征图。
10.一种图像处理模型存储装置,其特征在于,包括:
模型获取单元,用于获取待存储的基于卷积神经网络的图像处理模型;
参数组生成单元,用于针对所述图像处理模型的各个非零权值,根据所述非零权值、所述非零权值在卷积核中的行号和列号、及所述卷积核的输出通道编号,生成所述非零权值的参数组;
参数组定位单元,用于根据所述非零权值的输入通道编号和输出通道编号,确定所述参数组在非零权值参数组矩阵中的行列位置;
参数组存储单元,用于根据所述行列位置将所述参数组存储至存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910300671.2A CN111831254A (zh) | 2019-04-15 | 2019-04-15 | 图像处理加速方法、图像处理模型存储方法及对应装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910300671.2A CN111831254A (zh) | 2019-04-15 | 2019-04-15 | 图像处理加速方法、图像处理模型存储方法及对应装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111831254A true CN111831254A (zh) | 2020-10-27 |
Family
ID=72915415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910300671.2A Pending CN111831254A (zh) | 2019-04-15 | 2019-04-15 | 图像处理加速方法、图像处理模型存储方法及对应装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831254A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112363844A (zh) * | 2021-01-12 | 2021-02-12 | 之江实验室 | 一种面向图像处理的卷积神经网络垂直分割方法 |
CN112801285A (zh) * | 2021-02-04 | 2021-05-14 | 南京微毫科技有限公司 | 一种基于fpga的高资源利用率cnn加速器及其加速方法 |
CN112835552A (zh) * | 2021-01-26 | 2021-05-25 | 算筹信息科技有限公司 | 一种外积累加求解稀疏矩阵与稠密矩阵内积的方法 |
CN113052258A (zh) * | 2021-04-13 | 2021-06-29 | 南京大学 | 基于中间层特征图压缩的卷积方法、模型及计算机设备 |
CN113378863A (zh) * | 2021-07-09 | 2021-09-10 | 上海商汤科技开发有限公司 | 一种图像处理方法及装置、电子设备和存储介质 |
CN113435586A (zh) * | 2021-08-03 | 2021-09-24 | 北京大学深圳研究生院 | 用于卷积神经网络的卷积运算装置、***和图像处理装置 |
CN113591025A (zh) * | 2021-08-03 | 2021-11-02 | 深圳思谋信息科技有限公司 | 特征图的处理方法、装置、卷积神经网络加速器和介质 |
CN114048839A (zh) * | 2021-10-28 | 2022-02-15 | 深圳云天励飞技术股份有限公司 | 卷积计算的加速方法、装置及终端设备 |
CN114092708A (zh) * | 2021-11-12 | 2022-02-25 | 北京百度网讯科技有限公司 | 特征图像的处理方法、装置和存储介质 |
WO2022089039A1 (zh) * | 2020-10-30 | 2022-05-05 | 京东方科技集团股份有限公司 | 一种图像处理方法及装置、电子设备和可读存储介质 |
CN114819114A (zh) * | 2022-07-04 | 2022-07-29 | 南京大学 | 脉冲神经网络硬件加速器及其在卷积运算中的优化方法 |
CN114995782A (zh) * | 2022-08-03 | 2022-09-02 | 上海登临科技有限公司 | 数据处理方法、装置、设备和可读存储介质 |
WO2022206138A1 (zh) * | 2021-04-02 | 2022-10-06 | 嘉楠明芯(北京)科技有限公司 | 一种基于神经网络的运算方法以及装置 |
CN115311536A (zh) * | 2022-10-11 | 2022-11-08 | 绍兴埃瓦科技有限公司 | 图像处理中稀疏卷积处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180157969A1 (en) * | 2016-12-05 | 2018-06-07 | Beijing Deephi Technology Co., Ltd. | Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network |
WO2018107383A1 (zh) * | 2016-12-14 | 2018-06-21 | 上海寒武纪信息科技有限公司 | 神经网络的卷积运算方法、装置及计算机可读存储介质 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速***和设计方法 |
CN108960420A (zh) * | 2017-05-23 | 2018-12-07 | 上海寒武纪信息科技有限公司 | 处理方法及加速装置 |
-
2019
- 2019-04-15 CN CN201910300671.2A patent/CN111831254A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180157969A1 (en) * | 2016-12-05 | 2018-06-07 | Beijing Deephi Technology Co., Ltd. | Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network |
WO2018107383A1 (zh) * | 2016-12-14 | 2018-06-21 | 上海寒武纪信息科技有限公司 | 神经网络的卷积运算方法、装置及计算机可读存储介质 |
CN108960420A (zh) * | 2017-05-23 | 2018-12-07 | 上海寒武纪信息科技有限公司 | 处理方法及加速装置 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速***和设计方法 |
Non-Patent Citations (2)
Title |
---|
HALL, RE: "NONLINEAR FILTERING TECHNIQUE FOR THE EXTRACTION OF QUASI-LINEAR FEATURES FROM IMAGES", NONLINEAR IMAGE PROCESSING IV, 21 May 1993 (1993-05-21), pages 193 - 199 * |
纪荣嵘;林绍辉;晁飞;吴永坚;黄飞跃;: "深度神经网络压缩与加速综述", 计算机研究与发展, no. 09, 15 September 2018 (2018-09-15), pages 1871 - 1888 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022089039A1 (zh) * | 2020-10-30 | 2022-05-05 | 京东方科技集团股份有限公司 | 一种图像处理方法及装置、电子设备和可读存储介质 |
CN112363844A (zh) * | 2021-01-12 | 2021-02-12 | 之江实验室 | 一种面向图像处理的卷积神经网络垂直分割方法 |
CN112835552A (zh) * | 2021-01-26 | 2021-05-25 | 算筹信息科技有限公司 | 一种外积累加求解稀疏矩阵与稠密矩阵内积的方法 |
CN112801285A (zh) * | 2021-02-04 | 2021-05-14 | 南京微毫科技有限公司 | 一种基于fpga的高资源利用率cnn加速器及其加速方法 |
CN112801285B (zh) * | 2021-02-04 | 2024-01-26 | 南京微毫科技有限公司 | 一种基于fpga的高资源利用率cnn加速器及其加速方法 |
WO2022206138A1 (zh) * | 2021-04-02 | 2022-10-06 | 嘉楠明芯(北京)科技有限公司 | 一种基于神经网络的运算方法以及装置 |
CN113052258A (zh) * | 2021-04-13 | 2021-06-29 | 南京大学 | 基于中间层特征图压缩的卷积方法、模型及计算机设备 |
CN113052258B (zh) * | 2021-04-13 | 2024-05-31 | 南京大学 | 基于中间层特征图压缩的卷积方法、模型及计算机设备 |
CN113378863A (zh) * | 2021-07-09 | 2021-09-10 | 上海商汤科技开发有限公司 | 一种图像处理方法及装置、电子设备和存储介质 |
CN113378863B (zh) * | 2021-07-09 | 2023-12-19 | 上海商汤科技开发有限公司 | 一种图像处理方法及装置、电子设备和存储介质 |
CN113435586A (zh) * | 2021-08-03 | 2021-09-24 | 北京大学深圳研究生院 | 用于卷积神经网络的卷积运算装置、***和图像处理装置 |
CN113435586B (zh) * | 2021-08-03 | 2021-11-30 | 北京大学深圳研究生院 | 用于卷积神经网络的卷积运算装置、***和图像处理装置 |
CN113591025A (zh) * | 2021-08-03 | 2021-11-02 | 深圳思谋信息科技有限公司 | 特征图的处理方法、装置、卷积神经网络加速器和介质 |
CN114048839A (zh) * | 2021-10-28 | 2022-02-15 | 深圳云天励飞技术股份有限公司 | 卷积计算的加速方法、装置及终端设备 |
CN114092708A (zh) * | 2021-11-12 | 2022-02-25 | 北京百度网讯科技有限公司 | 特征图像的处理方法、装置和存储介质 |
CN114819114A (zh) * | 2022-07-04 | 2022-07-29 | 南京大学 | 脉冲神经网络硬件加速器及其在卷积运算中的优化方法 |
CN114819114B (zh) * | 2022-07-04 | 2022-09-13 | 南京大学 | 脉冲神经网络硬件加速器及其在卷积运算中的优化方法 |
CN114995782A (zh) * | 2022-08-03 | 2022-09-02 | 上海登临科技有限公司 | 数据处理方法、装置、设备和可读存储介质 |
CN114995782B (zh) * | 2022-08-03 | 2022-10-25 | 上海登临科技有限公司 | 数据处理方法、装置、设备和可读存储介质 |
CN115311536A (zh) * | 2022-10-11 | 2022-11-08 | 绍兴埃瓦科技有限公司 | 图像处理中稀疏卷积处理方法及装置 |
CN115311536B (zh) * | 2022-10-11 | 2023-01-24 | 绍兴埃瓦科技有限公司 | 图像处理中稀疏卷积处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111831254A (zh) | 图像处理加速方法、图像处理模型存储方法及对应装置 | |
US11803738B2 (en) | Neural network architecture using convolution engine filter weight buffers | |
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
US20190266217A1 (en) | Apparatus and method for matrix computation | |
CN111062472B (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
CN108564168B (zh) | 一种对支持多精度卷积神经网络处理器的设计方法 | |
CN111242277B (zh) | 一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器 | |
US20180046916A1 (en) | Sparse convolutional neural network accelerator | |
CN111340201A (zh) | 卷积神经网络加速器及其执行卷积运算操作的方法 | |
TWI740274B (zh) | 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
TW202123093A (zh) | 實行卷積運算的系統及方法 | |
GB2560600A (en) | Nueral Network Hardware | |
CN109146065B (zh) | 二维数据的卷积运算方法及装置 | |
US11797830B2 (en) | Flexible accelerator for sparse tensors in convolutional neural networks | |
GB2568102A (en) | Exploiting sparsity in a neural network | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN114995782B (zh) | 数据处理方法、装置、设备和可读存储介质 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
CN115186802A (zh) | 基于卷积神经网络的块稀疏方法、装置及处理单元 | |
CN115130672B (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
CN116090518A (zh) | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 | |
CN117112145B (zh) | 训练模型分配方法、装置、计算机设备和存储介质 | |
CN117291240B (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 |