CN110399971A - 一种卷积神经网络加速方法及装置、存储介质 - Google Patents
一种卷积神经网络加速方法及装置、存储介质 Download PDFInfo
- Publication number
- CN110399971A CN110399971A CN201910595953.XA CN201910595953A CN110399971A CN 110399971 A CN110399971 A CN 110399971A CN 201910595953 A CN201910595953 A CN 201910595953A CN 110399971 A CN110399971 A CN 110399971A
- Authority
- CN
- China
- Prior art keywords
- convolution
- feature
- convolution kernel
- column
- eigenmatrix
- 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
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/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
Abstract
本申请实施例提供了一种卷积神经网络加速方法及装置、存储介质,包括:按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,得到特征矩阵;按照预设滑窗策略,依次将预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,得到卷积核矩阵,卷积核矩阵的排列规则和特征矩阵的排列规则相同;将特征矩阵和卷积核矩阵进行矩阵相乘,得到卷积结果,以根据卷积结果加速实现对特征图的处理过程。
Description
技术领域
本申请涉及图像处理领域,尤其涉及一种卷积神经网络加速方法及装置、存储介质。
背景技术
卷积在神经网络中越来越重要,在现代神经网络中卷积层占据前向推理时间的86%,可见对卷积层的优化可以直接影响到神经网络模型在移动端的部署。针对卷积的实现,最直观的办法就是滑窗法的实现,即针对窗口的滑动来执行每个窗口的乘加运算。而使用滑窗法进行加速的方式可以包括使用RISC微处理器(ARM,Advanced RISC Machines)的NEON指令集来实现并行化处理。或者使用一些专用的硬件加速器来加快卷积的计算,比如现代神经网络中的CPU-->图形处理器(GPU,Graphics Processing Unit)-->数字信号处理(DSP,Digital Signal Processing)-->嵌入式神经网络处理器(NPU,Neural-networkProcessing Unit)的硬件的发展。
然而使用滑窗法时,由于移动端的CPU cache的规模小,而对于2维卷积的窗口矩阵,大都需要横跨很多的内存单元,导致cahce局部一致性原理失效,需要频繁地从主存中加载数据到cache中,从而导致CPU的计算速度大大降低。
发明内容
本申请实施例提供一种卷积神经网络加速方法及装置、存储介质,能够提高计算卷积神经网络时的CPU的计算速度。
本申请的技术方案是这样实现的:
本申请实施例提供一种卷积神经网络加速方法,所述方法包括:
按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,得到特征矩阵;
按照所述预设滑窗策略,依次将所述预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,得到卷积核矩阵,所述卷积核矩阵的排列规则和所述特征矩阵的排列规则相同;
将所述特征矩阵和所述卷积核矩阵进行矩阵相乘,得到卷积结果,以根据所述卷积结果加速实现对所述特征图的处理过程。
在上述方法中,所述按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,得到特征矩阵,包括:
利用所述预设窗口,在所述特征图的三个通道中,分别选定三个初始特征窗口;
将所述三个初始特征窗口对应的三个通道初始特征转化为所述特征矩阵中的第一行特征或者第一列特征;
按照所述预设滑窗策略,在所述特征图的三个通道中,分别将所述预设窗口从所述三个初始特征窗口移动至三个第二特征窗口;
将所述三个第二特征窗口对应的三个通道第二特征转化为所述特征矩阵中的第二行特征或者第二列特征;
直至将所述特征图的三个最终特征窗口对应的三个通道最终特征转化为所述特征矩阵中的最终行特征或者最终列特征时,得所述特征矩阵,所述三个最终特征窗口为按照所述预设滑窗策略遍历完成所述特征图时的三个通道特征窗口。
在上述方法中,所述按照所述预设滑窗策略,依次将所述预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,得到卷积核矩阵,包括:
将所述特征图的三个初始特征窗口对应的三个初始通道卷积核转化为所述卷积核矩阵中的第一行卷积核或者第一列卷积核;
将所述特征图的三个第二特征窗口对应的三个第二通道卷积核转化为所述卷积核矩阵中的第二行卷积核或者第二列卷积核;
直至将所述特征图的三个最终特征窗口对应的三个最终通道卷积核转化为所述卷积核矩阵中的最终行卷积核或者最终列卷积核时,得到所述卷积核矩阵。
在上述方法中,所述将所述特征矩阵和所述卷积核矩阵进行矩阵相乘,得到卷积结果,包括:
将所述特征矩阵和所述卷积核矩阵输入预设矩阵相乘函数中,得到所述卷积结果。
在上述方法中,所述在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,包括:
分别将所述三个通道特征进行内存拷贝,得到三组特征元素;
将所述三组特征元素添加至一行特征的三个行元素中或者一列特征的三个列元素中,得到一行特征或者一列特征。
在上述方法中,所述依次将所述预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,包括:
分别将所述三个通道卷积核进行内存拷贝,得到三组卷积核元素;
将所述三组卷积核元素添加至一行卷积核的三个行元素中或者一列卷积核的三个列元素中,得到一行卷积核或者一列卷积核。
本申请实施例提供一种卷积神经网络加速装置,所述装置包括:
转换单元,用于按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,得到特征矩阵;按照所述预设滑窗策略,依次将所述预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,得到卷积核矩阵,所述卷积核矩阵的排列规则和所述特征矩阵的排列规则相同;
矩阵相乘单元,用于将所述特征矩阵和所述卷积核矩阵进行矩阵相乘,得到卷积结果,以根据所述卷积结果加速实现对所述特征图的处理过程。
在上述装置中,所述装置还包括:选定单元和移动单元;
所述选定单元,用于利用所述预设窗口,在所述特征图的三个通道中,分别选定三个初始特征窗口;
所述转换单元,还用于将所述三个初始特征窗口对应的三个通道初始特征转化为所述特征矩阵中的第一行特征或者第一列特征;将三个第二特征窗口对应的三个通道第二特征转化为所述特征矩阵中的第二行特征或者第二列特征;直至将所述特征图的三个最终特征窗口对应的三个通道最终特征转化为所述特征矩阵中的最终行特征或者最终列特征时,得所述特征矩阵,所述三个最终特征窗口为按照所述预设滑窗策略遍历完成所述特征图时的三个通道特征窗口;
所述移动单元,用于按照所述预设滑窗策略,在所述特征图的三个通道中,分别将所述预设窗口从所述三个初始特征窗口移动至三个第二特征窗口。
在上述装置中,所述转换单元,还用于将所述特征图的三个初始特征窗口对应的三个初始通道卷积核转化为所述卷积核矩阵中的第一行卷积核或者第一列卷积核;将所述特征图的三个第二特征窗口对应的三个第二通道卷积核转化为所述卷积核矩阵中的第二行卷积核或者第二列卷积核;直至将所述特征图的三个最终特征窗口对应的三个最终通道卷积核转化为所述卷积核矩阵中的最终行卷积核或者最终列卷积核时,得到所述卷积核矩阵。
在上述装置中,所述矩阵相乘单元,还用于将所述特征矩阵和所述卷积核矩阵输入预设矩阵相乘函数中,得到所述卷积结果。
在上述装置中,所述装置还包括:内存拷贝单元和添加单元;
所述内存拷贝单元,用于分别将所述三个通道特征进行内存拷贝,得到三组特征元素;
所述添加单元,用于将所述三组特征元素添加至一行特征的三个行元素中或者一列特征的三个列元素中,得到一行特征或者一列特征。
在上述装置中,内存拷贝单元,还用于分别将所述三个通道卷积核进行内存拷贝,得到三组卷积核元素;
添加单元,还用于将所述三组卷积核元素添加至一行卷积核的三个行元素中或者一列卷积核的三个列元素中,得到一行卷积核或者一列卷积核。
本申请实施例提供一种卷积神经网络加速装置,所述卷积神经网络加速装置包括:处理器、存储器及通信总线,;所述处理器执行存储器存储的运行程序时实现如上述任一项所述的方法。
本申请实施例提供一种存储介质,其上存储有计算机程序,应用于卷积神经网络加速装置,该计算机程序被处理器执行时实现如上述任一项所述的方法。
本申请实施例提供了一种卷积神经网络加速方法及装置、存储介质,该方法包括:按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,得到特征矩阵;按照预设滑窗策略,依次将预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,得到卷积核矩阵,卷积核矩阵的排列规则和特征矩阵的排列规则相同;将特征矩阵和卷积核矩阵进行矩阵相乘,得到卷积结果,以根据卷积结果加速实现对特征图的处理过程。采用上述实现方案,由于卷积神经网络加速装置按照预设滑窗策略,依次将特征图和对应的卷积核转化为特征矩阵和卷积核矩阵,进行卷积计算时,对特征矩阵和卷积核矩阵进行连续读取,使得cache中缓存的、与当前计算数据相邻的数据有效,避免CPU等待输入输出(IO,Output/Input)而浪费大量的时钟周期,进而提高了计算卷积神经网络时的CPU的计算速度。
附图说明
图1为基于滑窗法实现卷积神经网络中卷积的示意图;
图2为本申请实施例提供的一种卷积神经网络加速方法的流程图;
图3为本申请实施例提供的一种示例性的得到特征矩阵中第一行特征的示意图;
图4(a)为本申请实施例提供的一种示例性的对特征图的左上角进行卷积得到输出值1的示意图;
图4(b)为本申请实施例提供的一种示例性的对特征图的右上角进行卷积得到输出值2的示意图;
图4(c)为本申请实施例提供的一种示例性的对特征图的左下角进行卷积得到输出值3的示意图;
图4(d)为本申请实施例提供的一种示例性的对特征图的右下角进行卷积得到输出值4的示意图;
图5为本申请实施例提供的一种示例性的得到卷积核矩阵的示意图;
图6为本申请实施例提供的一种示例性的将特征矩阵和卷积核矩阵进行矩阵相乘的示意图;
图7为本申请实施例提供的一种卷积神经网络加速装置的结构示意图一;
图8为本申请实施例提供的一种卷积神经网络加速装置的结构示意图二。
具体实施方式
应当理解,此处描述的具体实施例仅仅用以解释本申请。并不用于限定本申请。
需要说明的是,滑窗法实现卷积神经网络的过程为:基于卷积核窗口的大小,从特征图的左上角开始进行框定,并将框定的特征值和对应卷积核的数据进行乘积并求和,输出第一卷积值,之后,将窗口向右滑动预设长度,并将框定的特征值和对应卷积核的数据进行乘积并求和,输出第二卷积值;直至滑动至特征图的最右侧时,将窗口移回左上角往下滑动,并将框定的特征值和对应卷积核的数据进行乘积并求和,输出第二卷积值;之后,继续将窗口向右滑动,直至将窗口移动至特征图的右下角时,输出所有卷积特征值。如图1所示,特征图的大小为5×5,其中每个方格中的数字为特征值,一般处于0-255之间,卷积核窗口大小为3×3,初始框定特征图左上角3×3的窗口,并将窗口内的特征值和对应的卷积核值(方格右下角的数字)进行相乘并相加,即1×1+1×0+1×0+0×0+1×1+1×0+0×1+0×0+1×1,输出对应的卷积特征值为4。
本申请实施例基于上述滑窗法实现卷积神经网络,进而加速卷积神经网络中卷积的方法,通过以下实施例进行具体的说明。
实施例一
本申请实施例提供一种卷积神经网络加速方法,如图2所示,该方法可以包括:
S101、按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,得到特征矩阵。
本申请实施例提供的一种卷积神经网络加速方法适用于对卷积神经网络进行加速,并利用加速的卷积神经网络对图像进行图像识别等处理的场景下。
本申请实施例中,卷积神经网络加速装置在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征的过程具体包括:卷积神经网络加速装置分别将三个通道特征进行内存拷贝,得到三组特征元素;之后,卷积神经网络加速装置将三组特征元素添加至一行特征的三个行元素中或者一列特征的三个列元素中,得到一行特征或者一列特征。
本申请实施例中,特征图包括RGB对应的三个通道,卷积神经网络加速装置利用预设窗口,在特征图的三个通道中,分别选定三个初始特征窗口。
具体的,卷积神经网络加速装置根据预设窗口的大小,在特征图的三个通道中框定三个初始特征窗口,在实际的实施过程中,三个初始特征窗口处于特征图的左上角位置。示例性的,预设窗口的大小为K×K,卷积神经网络加速装置分别在特征图R通道的左上角框定出K×K的初始特征窗口,在特征图G通道的左上角框定出K×K的初始特征窗口,在特征图B通道的左上角框定出K×K的初始特征窗口;由此,得到了三个初始特征窗口。
本申请实施例中,卷积神经网络加速装置将三个初始特征窗口对应的三个通道初始特征转化为特征矩阵中的第一行特征或者第一列特征。
具体的,当卷积神经网络加速装置将三个初始特征窗口对应的三个通道初始特征转化为特征矩阵中的第一行特征时,每一行特征包括三个行元素;当卷积神经网络加速装置将三个初始特征窗口对应的三个通道初始特征转化为特征矩阵中的第一列特征时,每一列特征包括三个列元素;卷积神经网络加速装置将三个初始特征窗口对应的三个通道初始特征进行内存拷贝,得到三组初始特征元素,之后,卷积神经网络加速装置将三组初始元素分别添加至一行特征的三个第一行元素中或者一列特征的三个第一列元素中,得到第一行特征或者第一列特征。示例性的,如图3所示,对于C×H×W的特征图,其中,C为颜色通道,包括RGB三个通道,H为特征图的高度,W为特征图的宽度;分别在特征图的RGB三个通道中,取左上角K×K大小的特征,其中,K×K为预设窗口大小,利用内存拷贝的方式,将三个通道对应的三个特征值拉成一行,其中,每行包括三个行元素,每个颜色通道对应的特征值占其中的一个行元素,由此,组成了C×K×K的特征矩阵的第一行特征。
本申请实施例中,卷积神经网络加速装置按照预设滑窗策略,在特征图的三个通道中,分别将预设窗口从三个初始特征窗口移动至三个第二特征窗口。
具体的,预设滑窗策略包括滑动长度和滑动顺序,卷积神经网络沿滑动顺序,分别将预设窗口从三个初始特征窗口移动滑动长度,滑动终止位置即为三个第二特征窗口。
在实际的实施过程中,滑动顺序为从特征图的左上角向右侧滑动,直至特征图的右上角,之后,返回特征图的左上角并向下滑动,再向右侧滑动,直至特征图的最右侧,依次类推,直至滑动至特征图的右下角。示例性的,图1为4×4大小的特征图,窗口大小为3×3,首先如图4(a)所示,对图1中左上角的3×3部分进行卷积神经网络,得到输出值1,之后如图4(b)所示,将窗口向右平移一格至图1右上角,对图1中右上角的3×3部分进行卷积神经网络,得到输出值2,之后如图4(c)所示,将窗口平移会图1左上角的位置,并向下平移一格至图1左下角,对图1中左下角的3×3部分进行卷积神经网络,得到输出值3,最后如图4(d)所示,将窗口向右平移一格至图1右下角,对图1中右下角的3×3部分进行卷积神经网络,得到输出值4。
本申请实施例中,卷积神经网络加速装置将三个第二特征窗口对应的三个通道第二特征转化为特征矩阵中的第二行特征或者第二列特征;直至将特征图的三个最终特征窗口对应的三个通道最终特征转化为特征矩阵中的最终行特征或者最终列特征时,卷积神经网络加速装置得到特征矩阵,其中,三个最终特征窗口为按照预设滑窗策略遍历完成特征图时的三个通道特征窗口。
具体的,卷积神经网络加速装置将三个第二特征窗口对应的三个通道第二特征进行内存拷贝,得到三组第二特征元素,之后,卷积神经网络加速装置将三组第二特征元素分别添加至一行特征的三个第二行元素或者一列特征的三个第二列元素中,得到第二行特征或者第二列特征。循环执行上述过程,直至按照滑窗策略滑动至特征图的三个最终特征窗口时,将三个最终特征窗口对应的三个通道最终特征进行内存拷贝,得到三组最终特征元素,并将三组最终特征元素分别添加至一行特征的三个最终行元素或者一列特征的三个最终列元素,得到最终行特征或者最终列特征,由此,卷积神经网络加速装置得到了特征图对应的特征矩阵。
S102、按照预设滑窗策略,依次将预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,得到卷积核矩阵,卷积核矩阵的排列规则和特征矩阵的排列规则相同。
本申请实施例中,卷积神经网络加速装置依次将预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核的过程具体包括:卷积神经网络加速装置分别将三个通道卷积核进行内存拷贝,得到三组卷积核元素;之后,卷积神经网络加速装置将三组卷积核元素添加至一行卷积核的三个行元素中或者一列卷积核的三个列元素中,得到一行卷积核或者一列卷积核。
本申请实施例中,卷积神经网络加速装置将特征图的三个初始特征窗口对应的三个初始通道卷积核转化为卷积核矩阵中的第一行卷积核或者第一列卷积核;之后,卷积神经网络加速装置将特征图的三个第二特征窗口对应的三个第二通道卷积核转化为卷积核矩阵中的第二行卷积核或者第二列卷积核;直至卷积神经网络加速装置将特征图的三个最终特征窗口对应的三个最终通道卷积核转化为卷积核矩阵中的最终行卷积核或者最终列卷积核时,得到卷积核矩阵。
具体的,不同窗口的卷积核不同,卷积神经网络加速装置分别获取三个特征窗口对应的三个通道卷积核,并按照特征矩阵的排列顺序,对三个通道卷积核分别进行内存拷贝,得到三组卷积核元素,并将三组卷积核元素添加至一行卷积核的三个行元素中或者一列卷积核的三个列元素中,得到一行卷积核或者一列卷积核。
示例性的,如图5所示,卷积神经网络加速装置利用内存拷贝的方法,将C×H×W的特征图对应的C0×C×K×K的卷积核拉成多行,其中,每行包括三个行元素,每个颜色通道对应的卷积核占其中的一个行元素,由此,组成了C0×C×K×K的卷积核矩阵。
需要说明的是,卷积核矩阵的排列规则和特征矩阵的排列规则相同,即,当卷积神经网络加速装置按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一行特征,得到特征矩阵时;卷积神经网络加速装置按照预设滑窗策略,依次将预设窗口对应的三个通道卷积核转化为一行卷积核,得到卷积核矩阵。当卷积神经网络加速装置按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一列特征,得到特征矩阵时;卷积神经网络加速装置按照预设滑窗策略,依次将预设窗口对应的三个通道卷积核转化为一列卷积核,得到卷积核矩阵。
S103、将特征矩阵和卷积核矩阵进行矩阵相乘,得到卷积结果,以根据卷积结果实现对特征图的图像处理过程。
当卷积神经网络加速装置分别得到特征矩阵和卷积核矩阵之后,图像处理装置将特征矩阵和卷积核矩阵进行矩阵相乘,得到卷积结果,图像处理装置根据卷积结果能够实现对特征图的图像处理过程。
本申请实施例中,卷积神经网络加速装置将特征矩阵和卷积核矩阵输入预设矩阵相乘函数中,得到卷积结果。
本申请实施例中,预设矩阵相乘函数可以包括线性代数运算库Eigen中的通用矩阵乘法(GEMM,General Matrix Multiply)函数等能够实现矩阵相乘的函数,具体的根据实际情况进行选择,本申请实施例不做具体的限定。
示例性的,如图6所示,卷积神经网络加速装置将C×H×W的特征图转换为(H'×W')×C×K×K的特征矩阵,并将对应的C0×C×K×K卷积核转换为C0×C×K×K的卷积核矩阵,之后,卷积神经网络加速装置将特征矩阵和卷积核矩阵进行矩阵相乘,得到最终的卷积运算结果。
本申请实施例中,卷积神经网络加速装置得到的卷积结果可以实现图像识别、图像分类等过程。
可以理解的是,由于卷积神经网络加速装置按照预设滑窗策略,依次将特征图和对应的卷积核转化为特征矩阵和卷积核矩阵,进行卷积计算时,对特征矩阵和卷积核矩阵进行连续读取,使得cache中缓存的、与当前计算数据相邻的数据有效,避免CPU等待输入输出(IO,Output/Input)而浪费大量的时钟周期,进而提高了计算卷积神经网络时的CPU的计算速度。
实施例二
本申请实施例提供一种卷积神经网络加速装置1,如图7所示,该装置1可以包括:
转换单元10,用于按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,得到特征矩阵;按照所述预设滑窗策略,依次将所述预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,得到卷积核矩阵,所述卷积核矩阵的排列规则和所述特征矩阵的排列规则相同;
矩阵相乘单元11,用于将所述特征矩阵和所述卷积核矩阵进行矩阵相乘,得到卷积结果,以根据所述卷积结果加速实现对所述特征图的处理过程。
可选的,所述装置还包括:选定单元12和移动单元13;
所述选定单元12,用于利用所述预设窗口,在所述特征图的三个通道中,分别选定三个初始特征窗口;
所述转换单元10,还用于将所述三个初始特征窗口对应的三个通道初始特征转化为所述特征矩阵中的第一行特征或者第一列特征;将三个第二特征窗口对应的三个通道第二特征转化为所述特征矩阵中的第二行特征或者第二列特征;直至将所述特征图的三个最终特征窗口对应的三个通道最终特征转化为所述特征矩阵中的最终行特征或者最终列特征时,得所述特征矩阵,所述三个最终特征窗口为按照所述预设滑窗策略遍历完成所述特征图时的三个通道特征窗口;
所述移动单元13,用于按照所述预设滑窗策略,在所述特征图的三个通道中,分别将所述预设窗口从所述三个初始特征窗口移动至三个第二特征窗口。
可选的,所述转换单元10,还用于将所述特征图的三个初始特征窗口对应的三个初始通道卷积核转化为所述卷积核矩阵中的第一行卷积核或者第一列卷积核;将所述特征图的三个第二特征窗口对应的三个第二通道卷积核转化为所述卷积核矩阵中的第二行卷积核或者第二列卷积核;直至将所述特征图的三个最终特征窗口对应的三个最终通道卷积核转化为所述卷积核矩阵中的最终行卷积核或者最终列卷积核时,得到所述卷积核矩阵。
可选的,所述矩阵相乘单元11,还用于将所述特征矩阵和所述卷积核矩阵输入预设矩阵相乘函数中,得到所述卷积结果。
可选的,所述装置还包括:内存拷贝单元14和添加单元15;
所述内存拷贝单元14,用于分别将所述三个通道特征进行内存拷贝,得到三组特征元素;
所述添加单元15,用于将所述三组特征元素添加至一行特征的三个行元素中或者一列特征的三个列元素中,得到一行特征或者一列特征。
可选的,内存拷贝单元14,还用于分别将所述三个通道卷积核进行内存拷贝,得到三组卷积核元素;
添加单元15,还用于将所述三组卷积核元素添加至一行卷积核的三个行元素中或者一列卷积核的三个列元素中,得到一行卷积核或者一列卷积核。
本申请实施例提供的一种卷积神经网络加速装置,按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,得到特征矩阵;按照预设滑窗策略,依次将预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,得到卷积核矩阵,卷积核矩阵的排列规则和特征矩阵的排列规则相同;将特征矩阵和卷积核矩阵进行矩阵相乘,得到卷积结果,以根据卷积结果加速实现对特征图的处理过程。由此可见,本实施例提出的卷积神经网络加速装置,由于卷积神经网络加速装置按照预设滑窗策略,依次将特征图和对应的卷积核转化为特征矩阵和卷积核矩阵,进行卷积计算时,对特征矩阵和卷积核矩阵进行连续读取,使得cache中缓存的、与当前计算数据相邻的数据有效,避免CPU等待输入输出(IO,Output/Input)而浪费大量的时钟周期,进而提高了计算卷积神经网络时的CPU的计算速度。
图8为本申请实施例提供的一种卷积神经网络加速装置1的组成结构示意图二,在实际应用中,基于上述实施例的同一公开构思下,如图8所示,本实施例的卷积神经网络加速装置1包括:处理器16、存储器17及通信总线18。
在具体的实施例的过程中,上述转换单元10、矩阵相乘单元11、选定单元12、移动单元13、内存拷贝单元14和添加单元15可由位于卷积神经网络加速装置1上的处理器16实现,上述处理器16可以为特定用途集成电路(ASIC,Application Specific IntegratedCircuit)、数字信号处理器(DSP,Digital Signal Processor)、数字信号处理装置(DSPD,Digital Signal Processing Device)、可编程逻辑装置(PLD,Programmable LogicDevice)、现场可编程门阵列(FPGA,Field Programmable Gate Array)、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本实施例不作具体限定。
在本申请实施例中,上述通信总线18用于实现处理器16和存储器17之间的连接通信;上述处理器16执行存储器17中存储的运行程序时实现如实施例一所述的卷积神经网络加速方法。
本申请实施例提供一种存储介质,其上存储有计算机程序,上述计算机可读存储介质存储有一个或者多个程序,上述一个或者多个程序可被一个或者多个处理器执行,应用于卷积神经网络加速装置中,该计算机程序实现如实施例一所述的卷积神经网络加速方法。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
Claims (14)
1.一种卷积神经网络加速方法,其特征在于,所述方法包括:
按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,得到特征矩阵;
按照所述预设滑窗策略,依次将所述预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,得到卷积核矩阵,所述卷积核矩阵的排列规则和所述特征矩阵的排列规则相同;
将所述特征矩阵和所述卷积核矩阵进行矩阵相乘,得到卷积结果,以根据所述卷积结果加速实现对所述特征图的处理过程。
2.根据权利要求1所述的方法,其特征在于,所述按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,得到特征矩阵,包括:
利用所述预设窗口,在所述特征图的三个通道中,分别选定三个初始特征窗口;
将所述三个初始特征窗口对应的三个通道初始特征转化为所述特征矩阵中的第一行特征或者第一列特征;
按照所述预设滑窗策略,在所述特征图的三个通道中,分别将所述预设窗口从所述三个初始特征窗口移动至三个第二特征窗口;
将所述三个第二特征窗口对应的三个通道第二特征转化为所述特征矩阵中的第二行特征或者第二列特征;
直至将所述特征图的三个最终特征窗口对应的三个通道最终特征转化为所述特征矩阵中的最终行特征或者最终列特征时,得所述特征矩阵,所述三个最终特征窗口为按照所述预设滑窗策略遍历完成所述特征图时的三个通道特征窗口。
3.根据权利要求2所述的方法,其特征在于,所述按照所述预设滑窗策略,依次将所述预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,得到卷积核矩阵,包括:
将所述特征图的三个初始特征窗口对应的三个初始通道卷积核转化为所述卷积核矩阵中的第一行卷积核或者第一列卷积核;
将所述特征图的三个第二特征窗口对应的三个第二通道卷积核转化为所述卷积核矩阵中的第二行卷积核或者第二列卷积核;
直至将所述特征图的三个最终特征窗口对应的三个最终通道卷积核转化为所述卷积核矩阵中的最终行卷积核或者最终列卷积核时,得到所述卷积核矩阵。
4.根据权利要求1所述的方法,其特征在于,所述将所述特征矩阵和所述卷积核矩阵进行矩阵相乘,得到卷积结果,包括:
将所述特征矩阵和所述卷积核矩阵输入预设矩阵相乘函数中,得到所述卷积结果。
5.根据权利要求1所述的方法,其特征在于,所述在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,包括:
分别将所述三个通道特征进行内存拷贝,得到三组特征元素;
将所述三组特征元素添加至一行特征的三个行元素中或者一列特征的三个列元素中,得到一行特征或者一列特征。
6.根据权利要求1所述的方法,其特征在于,所述依次将所述预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,包括:
分别将所述三个通道卷积核进行内存拷贝,得到三组卷积核元素;
将所述三组卷积核元素添加至一行卷积核的三个行元素中或者一列卷积核的三个列元素中,得到一行卷积核或者一列卷积核。
7.一种卷积神经网络加速装置,其特征在于,所述装置包括:
转换单元,用于按照预设滑窗策略,在特征图中依次将预设窗口对应的三个通道特征转换为一行特征或者一列特征,得到特征矩阵;按照所述预设滑窗策略,依次将所述预设窗口对应的三个通道卷积核转化为一行卷积核或者一列卷积核,得到卷积核矩阵,所述卷积核矩阵的排列规则和所述特征矩阵的排列规则相同;
矩阵相乘单元,用于将所述特征矩阵和所述卷积核矩阵进行矩阵相乘,得到卷积结果,以根据所述卷积结果加速实现对所述特征图的处理过程。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:选定单元和移动单元;
所述选定单元,用于利用所述预设窗口,在所述特征图的三个通道中,分别选定三个初始特征窗口;
所述转换单元,还用于将所述三个初始特征窗口对应的三个通道初始特征转化为所述特征矩阵中的第一行特征或者第一列特征;将三个第二特征窗口对应的三个通道第二特征转化为所述特征矩阵中的第二行特征或者第二列特征;直至将所述特征图的三个最终特征窗口对应的三个通道最终特征转化为所述特征矩阵中的最终行特征或者最终列特征时,得所述特征矩阵,所述三个最终特征窗口为按照所述预设滑窗策略遍历完成所述特征图时的三个通道特征窗口;
所述移动单元,用于按照所述预设滑窗策略,在所述特征图的三个通道中,分别将所述预设窗口从所述三个初始特征窗口移动至三个第二特征窗口。
9.根据权利要求8所述的装置,其特征在于,
所述转换单元,还用于将所述特征图的三个初始特征窗口对应的三个初始通道卷积核转化为所述卷积核矩阵中的第一行卷积核或者第一列卷积核;将所述特征图的三个第二特征窗口对应的三个第二通道卷积核转化为所述卷积核矩阵中的第二行卷积核或者第二列卷积核;直至将所述特征图的三个最终特征窗口对应的三个最终通道卷积核转化为所述卷积核矩阵中的最终行卷积核或者最终列卷积核时,得到所述卷积核矩阵。
10.根据权利要求7所述的装置,其特征在于,
所述矩阵相乘单元,还用于将所述特征矩阵和所述卷积核矩阵输入预设矩阵相乘函数中,得到所述卷积结果。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:内存拷贝单元和添加单元;
所述内存拷贝单元,用于分别将所述三个通道特征进行内存拷贝,得到三组特征元素;
所述添加单元,用于将所述三组特征元素添加至一行特征的三个行元素中或者一列特征的三个列元素中,得到一行特征或者一列特征。
12.根据权利要求7所述的装置,其特征在于,
内存拷贝单元,还用于分别将所述三个通道卷积核进行内存拷贝,得到三组卷积核元素;
添加单元,还用于将所述三组卷积核元素添加至一行卷积核的三个行元素中或者一列卷积核的三个列元素中,得到一行卷积核或者一列卷积核。
13.一种卷积神经网络加速装置,其特征在于,所述卷积神经网络加速装置包括:处理器、存储器及通信总线;所述处理器执行存储器存储的运行程序时实现如权利要求1-6任一项所述的方法。
14.一种存储介质,其上存储有计算机程序,应用于卷积神经网络加速装置,其特征在于,该计算机程序被处理器执行时实现如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910595953.XA CN110399971A (zh) | 2019-07-03 | 2019-07-03 | 一种卷积神经网络加速方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910595953.XA CN110399971A (zh) | 2019-07-03 | 2019-07-03 | 一种卷积神经网络加速方法及装置、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110399971A true CN110399971A (zh) | 2019-11-01 |
Family
ID=68323783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910595953.XA Pending CN110399971A (zh) | 2019-07-03 | 2019-07-03 | 一种卷积神经网络加速方法及装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110399971A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111340224A (zh) * | 2020-02-27 | 2020-06-26 | 杭州雄迈集成电路技术股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
CN113496272A (zh) * | 2021-05-10 | 2021-10-12 | 中国电子科技集团公司第十四研究所 | 一种基于异构平台的卷积神经网络运算方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170344882A1 (en) * | 2016-05-31 | 2017-11-30 | Canon Kabushiki Kaisha | Layer-based operations scheduling to optimise memory for CNN applications |
CN107704921A (zh) * | 2017-10-19 | 2018-02-16 | 北京智芯原动科技有限公司 | 基于Neon指令的卷积神经网络的算法优化方法及装置 |
CN107885700A (zh) * | 2017-12-29 | 2018-04-06 | 中国人民解放军国防科技大学 | 一种大规模矩阵卷积的多核实现方法 |
CN108205702A (zh) * | 2017-12-29 | 2018-06-26 | 中国人民解放军国防科技大学 | 一种多输入多输出矩阵卷积的并行处理方法 |
CN108537330A (zh) * | 2018-03-09 | 2018-09-14 | 中国科学院自动化研究所 | 应用于神经网络的卷积计算装置及方法 |
CN108985450A (zh) * | 2018-06-28 | 2018-12-11 | 中国人民解放军国防科技大学 | 面向向量处理器的卷积神经网络运算向量化方法 |
US20190187963A1 (en) * | 2017-12-19 | 2019-06-20 | Canon Kabushiki Kaisha | Memory access optimisation using per-layer computational mapping and memory allocation for cnn application |
-
2019
- 2019-07-03 CN CN201910595953.XA patent/CN110399971A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170344882A1 (en) * | 2016-05-31 | 2017-11-30 | Canon Kabushiki Kaisha | Layer-based operations scheduling to optimise memory for CNN applications |
CN107704921A (zh) * | 2017-10-19 | 2018-02-16 | 北京智芯原动科技有限公司 | 基于Neon指令的卷积神经网络的算法优化方法及装置 |
US20190187963A1 (en) * | 2017-12-19 | 2019-06-20 | Canon Kabushiki Kaisha | Memory access optimisation using per-layer computational mapping and memory allocation for cnn application |
CN107885700A (zh) * | 2017-12-29 | 2018-04-06 | 中国人民解放军国防科技大学 | 一种大规模矩阵卷积的多核实现方法 |
CN108205702A (zh) * | 2017-12-29 | 2018-06-26 | 中国人民解放军国防科技大学 | 一种多输入多输出矩阵卷积的并行处理方法 |
CN108537330A (zh) * | 2018-03-09 | 2018-09-14 | 中国科学院自动化研究所 | 应用于神经网络的卷积计算装置及方法 |
CN108985450A (zh) * | 2018-06-28 | 2018-12-11 | 中国人民解放军国防科技大学 | 面向向量处理器的卷积神经网络运算向量化方法 |
Non-Patent Citations (4)
Title |
---|
CHAO WANG ET AL.: "DLAU A Scalable Deep Learning Accelerator Unit on FPGA", 《IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS》 * |
RYOSUKE TANNO ET AL.: "Caffe2C A Framework for Easy Implementation of CNN-based Mobile Applications", 《ADJUNCT PROCEEDINGS OF THE 13TH INTERNATIONAL CONFERENCE ON MOBILE AND UBIQUITOUS SYSTEMS COMPUTING NETWORKING AND SERVICES》 * |
许小龙: "基于TVM的多平台卷积神经网络加速方案的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
陈伟杰: "卷积神经网络的加速及压缩", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111340224A (zh) * | 2020-02-27 | 2020-06-26 | 杭州雄迈集成电路技术股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
CN111340224B (zh) * | 2020-02-27 | 2023-11-21 | 浙江芯劢微电子股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
CN113496272A (zh) * | 2021-05-10 | 2021-10-12 | 中国电子科技集团公司第十四研究所 | 一种基于异构平台的卷积神经网络运算方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108280514A (zh) | 基于fpga的稀疏神经网络加速系统和设计方法 | |
JP7007488B2 (ja) | ハードウェアベースのプーリングのシステムおよび方法 | |
US10545559B2 (en) | Data processing system and method | |
CN111542839B (zh) | 一种反卷积神经网络的硬件加速方法、装置和电子设备 | |
Tsai et al. | Implementation of FPGA-based accelerator for deep neural networks | |
US20220083857A1 (en) | Convolutional neural network operation method and device | |
CN110059815B (zh) | 人工智能推理计算设备 | |
EP4156079A1 (en) | Image data storage method, image data processing method and system, and related apparatus | |
US20200110604A1 (en) | Energy-efficient memory systems and methods | |
US11593907B2 (en) | System and methods for computing 2-D convolutions and cross-correlations | |
CN110399591A (zh) | 基于卷积神经网络的数据处理方法和装置 | |
CN110399971A (zh) | 一种卷积神经网络加速方法及装置、存储介质 | |
CN110533579B (zh) | 基于自编码结构与梯度保序的视频风格转换方法 | |
CN110147252A (zh) | 一种卷积神经网络的并行计算方法及装置 | |
CN112434786B (zh) | 一种基于winograd动态卷积块的图像处理方法 | |
CN114667535A (zh) | 游戏超分辨率 | |
Hsiao et al. | Generic 2-D gaussian smoothing filter for noisy image processing | |
CN110009644B (zh) | 一种特征图行像素分段的方法和装置 | |
DE102017117381A1 (de) | Beschleuniger für dünnbesetzte faltende neuronale Netze | |
US11874898B2 (en) | Streaming-based artificial intelligence convolution processing method and apparatus, readable storage medium and terminal | |
CN110490308B (zh) | 加速库的设计方法、终端设备及存储介质 | |
KR20210014561A (ko) | 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체 | |
CN113112400B (zh) | 一种模型训练方法及模型训练装置 | |
CN109840892A (zh) | 一种基于高层次综合的红外视频增强方法 | |
Di et al. | Exploring resource-efficient acceleration algorithm for transposed convolution of GANs on FPGA |
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: 20191101 |