CN111967582B - 一种cnn卷积层运算方法及cnn卷积层运算加速器 - Google Patents
一种cnn卷积层运算方法及cnn卷积层运算加速器 Download PDFInfo
- Publication number
- CN111967582B CN111967582B CN202010791455.5A CN202010791455A CN111967582B CN 111967582 B CN111967582 B CN 111967582B CN 202010791455 A CN202010791455 A CN 202010791455A CN 111967582 B CN111967582 B CN 111967582B
- Authority
- CN
- China
- Prior art keywords
- image
- matrix
- read
- cnn
- rows
- 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
- 238000000034 method Methods 0.000 title claims abstract description 45
- 239000011159 matrix material Substances 0.000 claims abstract description 267
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000013527 convolutional neural network Methods 0.000 description 87
- 238000010586 diagram Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
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/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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本发明提供一种CNN卷积层运算方法及CNN卷积层运算加速器,均能够:读入用于对待处理特征图像进行CNN卷积层运算的卷积核,并将读入的卷积核转化为权重矩阵H(hpq);按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像,并依据所述的权重矩阵H(hpq)计算当前所读入的分块图像对应的CNN卷积层局部运算结果;判断整幅待处理特征图像是否读取完成:若是,则按照各所述分块图像之间的相对位置关系排布所得到的各CNN卷积层局部运算结果,并拼接得到整幅待处理特征图像对应的CNN卷积层运算结果;若否则继续读入下一个分块图像。本发明用于降低CNN卷积运算的复杂度、降低存储带宽压力以及降低完成CNN卷积层运算的成本。
Description
技术领域
本发明涉及卷积运算加速领域,具体涉及一种CNN卷积层运算方法及CNN卷积层运算加速器。
背景技术
随着CNN(Convolutional Neural Networks,卷积神经网络)的不断发展,CNN在图像分类、图像识别等领域的应用越来越广泛。
CNN卷积层的运算是二维卷积,常见的实现方案是滑窗实现卷积计算,即对k×k卷积核采用专门的控制模块获取同样大小的特征图二维窗,然后将该特征图二维窗在需要进行卷积层计算的特征图上滑动,之后将需要进行卷积层计算的特征图与卷积核对应点做乘加运算。滑窗实现二维卷积的方法比较直观,只要能获取到正确的特征图二维窗,之后的计算过程相对简单。但是,用于产生二维窗的控制模块实现比较复杂。另外,对于k×k卷积核、对于在线输入的需要进行卷积层计算的特征图,往往需要额外增加k-1行存储,由此带来了成本的增加。此外,现有CNN卷积层运算过程中往往需要多次重复读取卷积核中的权重,一定程度上增加了存储带宽压力。
为此,本发明提供一种CNN卷积层运算方法及CNN卷积层运算加速器,用于解决上述问题。
发明内容
针对现有技术的上述不足,本发明提供一种CNN卷积层运算方法及CNN卷积层运算加速器,用于降低CNN卷积运算的复杂度。本发明还用于降低存储带宽压力。本发明还用于降低完成CNN卷积层运算的成本。
第一方面,本发明提供一种CNN卷积层运算方法,包括步骤:
S1、读入用于对待处理特征图像进行CNN卷积层运算的卷积核,并将读入的卷积核转化为权重矩阵H(hpq),其中,卷积核为k×k卷积核,hpq为权重矩阵H(hpq)的(p,q)元素,p=0,1,2,…,k-1;q=0,1,2,…,k-1;
S2、按照预先设定的图像大小阈值,分块图像读取待处理特征图像上的一个分块图像,并依据所述的权重矩阵H(hpq)计算当前所读入的分块图像对应的CNN卷积层局部运算结果;
S3、判断整幅待处理特征图像是否读取完成,若是,则继续执行步骤S4,否则转而重复执行步骤S2;
S4、按照各所述分块图像之间的相对位置关系,排布步骤S2中得到的各CNN卷积层局部运算结果,之后拼接得到整幅待处理特征图像对应的CNN卷积层运算结果;
其中,步骤S2中依据所述的权重矩阵H(hpq)计算当前所读入的分块图像对应的CNN卷积层局部运算结果的实现方法包括步骤:
P1、将当前读入的分块图像转化为图像矩阵A(aij),其中,分块图像为m×n像素的数字图像,aij为图像矩阵A(aij)的(i,j)元素;其中,i=0,1,2,...,m-1;j=0,1,2,...,n-1;
P2、读取权重矩阵H(hpq)的每一个元素hpq、并分别获取每一个元素hpq各自对应的由图像矩阵A(aij)中的所有需要与其做乘法运算的元素构成的乘积矩阵,并将每一个元素hpq与其各自对应的乘积矩阵相乘得到每一个元素hpq各自对应的局部矩阵;
P3、计算所得到的各局部矩阵的和,该和即为当前所读入的分块图像对应的CNN卷积层局部运算结果;
其中,步骤S2中每次读取的分块图像互不相同;
步骤S2中按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像,读取方法包括:
在首次读取分块图像时,按预先设定的读取起始位置从待处理特征图像上读取一个满足所述图像大小阈值要求的分块图像;
在再次读取分块图像时,每个所读取到的分块图像均包含其各相邻分块图像的k-1行或k-1列像素。
进一步地,步骤P2中所涉及到的元素hpq对应的乘积矩阵包括以下情况:
在p=0且q=0时,所涉及到的元素hpq对应的乘积矩阵为图像矩阵A(aij)中除去第n-k+1、n-k+2、n-k+3、…、n-1列及除去第m-k+1、m-k+2、m-k+3、…、m-1行之后余下的所有的行和列形成(m-k+1)×(n-k+1)矩阵;
在p=0且q≠0时,所涉及到的元素hpq对应的乘积矩阵为将图像矩阵A(aij)中除去第0、1、2、…、q-1、n-k+q+1、n-k+q+2、n-k+q+3、…、n-1列以及除去第m-k+1、m-k+2、m-k+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵;
在p≠0且q=0时,所涉及到的元素hpq对应的乘积矩阵为,将图像矩阵A(aij)中除去第n-k+1、n-k+2、n-k+3、…、n-1列及除去第0、1、2、…、p-1、m-k+p+1、m-k+p+2、m-k+p+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵;
在p≠0且q≠0时,所涉及到的元素hpq对应的乘积矩阵为将图像矩阵A(aij)中除去第0、1、2、…,q-1、n-k+q+1、n-k+q+2、n-k+q+3、…、n-1列及除去第0、1、2、…、p-1、m-k+p+1、m-k+p+2、m-k+p+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵。
进一步地,步骤S1中将转化得到的权重矩阵H(hpq)存储在缓存中;步骤P1中将转化为的图像矩阵A(aij)存储在缓存中。
进一步地,该CNN卷积层运算方法基于FPGA实现。
进一步地,步骤P2中采用乘法器阵列将每一个元素hpq与其各自对应的乘积矩阵相乘得到每一个元素hpq各自对应的局部矩阵。
另一方面,本发明提供一种CNN卷积层运算加速器,包括:
第一数据预读模块,用于读入用于对待处理特征图像进行CNN卷积层运算的卷积核,并将读入的卷积核转化为权重矩阵H(hpq),其中,卷积核为k×k卷积核,hpq为权重矩阵H(hpq)的(p,q)元素,p=0,1,2,...,k-1;q=0,1,2,...,k-1;
第二数据预读模块,用于按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像;
局部运算模块,用于依据所述的权重矩阵H(hpq)计算第二数据预读模块当前所读入的分块图像对应的CNN卷积层局部运算结果;
判断模块,用于判断整幅待处理特征图像是否读取完成;
卷积层运算结果输出模块,用于在判断模块判断整幅待处理特征图像已读取完成时,按照各所述分块图像之间的相对位置关系,排布局部运算模块所得到的各CNN卷积层局部运算结果,之后拼接得到整幅待处理特征图像对应的CNN卷积层运算结果并输出;
调用模块,用于在判断模块判断整幅待处理特征图像未读取完成时调用数据预读模块继续执行;
其中,所述局部运算模块包括:
图像矩阵转化单元,用于将当前读入的分块图像转化为图像矩阵A(aij),其中,分块图像为m×n像素的数字图像,aij为图像矩阵A(aij)的(i,j)元素;其中,i=0,1,2,...,m-1;j=0,1,2,...,n-1;
局部矩阵获取单元,用于读取权重矩阵H(hpq)的每一个元素hpq、并分别获取每一个元素hpq各自对应的由图像矩阵A(aij)中的所有需要与其做乘法运算的元素构成的乘积矩阵,并将每一个元素hpq与其各自对应的乘积矩阵相乘得到每一个元素hpq各自对应的局部矩阵;
局部运算结果获取单元,用于计算所得到的各局部矩阵的和,该和即为当前所读入的分块图像对应的CNN卷积层局部运算结果;
第二数据预读模块每次读取到的待处理特征图像的分块图像互不相同;
其中,第二数据预读模块按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像,读取方法包括:
在首次读取分块图像时,按预先设定的读取起始位置从待处理特征图像上读取一个满足所述图像大小阈值要求的分块图像;
在再次读取分块图像时,每个所读取到的分块图像均包含其各相邻分块图像的k-1行或k-1列像素。
进一步地,所述局部矩阵获取单元中所涉及到的元素hpq对应的乘积矩阵包括以下情况:
在p=0且q=0时,所涉及到的元素hpq对应的乘积矩阵为图像矩阵A(aij)中除去第n-k+1、n-k+2、n-k+3、…、n-1列及除去第m-k+1、m-k+2、m-k+3、…、m-1行之后余下的所有的行和列形成(m-k+1)×(n-k+1)矩阵;
在p=0且q≠0时,所涉及到的元素hpq对应的乘积矩阵为将图像矩阵A(aij)中除去第0、1、2、…、q-1、n-k+q+1、n-k+q+2、n-k+q+3、…、n-1列以及除去第m-k+1、m-k+2、m-k+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵;
在p≠0且q=0时,所涉及到的元素hpq对应的乘积矩阵为,将图像矩阵A(aij)中除去第n-k+1、n-k+2、n-k+3、…、n-1列及除去第0、1、2、…、p-1、m-k+p+1、m-k+p+2、m-k+p+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵;
在p≠0且q≠0时,所涉及到的元素hpq对应的乘积矩阵为将图像矩阵A(aij)中除去第0、1、2、…,q-1、n-k+q+1、n-k+q+2、n-k+q+3、…、n-1列及除去第0、1、2、…、p-1、m-k+p+1、m-k+p+2、m-k+p+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵。
进一步地,该CNN卷积层运算加速器还包括缓存;
第一数据预读模块将其转化为的权重矩阵H(hpq)存储在缓存中;
图像矩阵转化单元将其转化为的图像矩阵A(aij)存储在缓存中。
进一步地,该CNN卷积层运算加速器基于FPGA实现。
进一步地,局部矩阵获取单元采用乘法器阵列将每一个元素hpq与其各自对应的乘积矩阵相乘得到每一个元素hpq各自对应的局部矩阵。
本发明的有益效果在于,
(1)本发明提供的CNN卷积层运算方法及CNN卷积层运算加速器,均避免了对现有技术中特征图二维窗的使用,进而避免了对现有技术中用于生成所述特征图二维窗的控制模块的使用,一定程度上降低了CNN卷积运算的复杂度,便于实现。
(2)本发明提供的CNN卷积层运算方法及CNN卷积层运算加速器,均以卷积核中的每个权重(对应元素hpq)为出发点,直接获取每一个权重各自对应的由分块图像中的所有需要与读取到的权重做乘法运算的特征点(对应分块图像转化为的图像矩阵A(aij)的所有元素)构成的乘积矩阵,之后将卷积核中的每个权重与其各自对应的乘积矩阵相乘得到每一个权重各自对应的局部矩阵,然后通过将卷积核中所有权重对应的全部的局部矩阵进行矩阵的加和运算即得到每个分块图像对应的CNN卷积层局部运算结果,可见在一定程度上减少了对卷积核中每个权重的读取次数,一定程度上有助于降低存储带宽压力。
(3)本发明提供的CNN卷积层运算方法及CNN卷积层运算加速器,均将运算过程中所需要的权重矩阵H(hpq)及图像矩阵A(aij)存储在缓存中,一方面避免了额外增加存储,有助于在一定程度上降低完成CNN卷积层运算的成本,另一方面还减少了从外部存储中读取CNN卷积层运算所需的数据的次数,一定程度上有助于增加CNN卷积层运算的速率。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的方法的示意性流程图。
图2是本发明中所述分块图像F1在待处理特征图像中的相对位置关系分布示意图。
图3是本发明中所述分块图像F2在待处理特征图像中的相对位置关系分布示意图。
图4是本发明中所述分块图像F3在待处理特征图像中的相对位置关系分布示意图。
图5是本发明中所述分块图像F4在待处理特征图像中的相对位置关系分布示意图。
图6是本发明中所述矩阵C1、矩阵C2、矩阵C3和矩阵C4的排布位置示意图。
图7是本发明一个实施例的***的示意性框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
图1是本发明一个实施例的CNN卷积层运算方法的示意性流程图。
如图1所示,该CNN卷积层运算方法包括:
步骤S1、读入用于对待处理特征图像进行CNN卷积层运算的卷积核,并将读入的卷积核转化为权重矩阵H(hpq),其中,卷积核为k×k卷积核,hpq为权重矩阵H(hpq)的(p,q)元素,p=0,1,2,...,k-1;q=0,1,2,...,k-1;
步骤S2、按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像,并依据所述的权重矩阵H(hpq)计算当前所读入的分块图像对应的CNN卷积层局部运算结果;
步骤S3、判断整幅待处理特征图像是否读取完成,若是,则继续执行步骤S4,否则转而重复执行步骤S2;
步骤S4、按照各所述分块图像之间的相对位置关系,排布步骤S2中得到的各CNN卷积层局部运算结果,之后拼接得到整幅待处理特征图像对应的CNN卷积层运算结果。
其中,步骤S2中依据所述的权重矩阵H(hpq)计算当前所读入的分块图像对应的CNN卷积层局部运算结果的实现方法包括:
步骤P1、将当前读入的分块图像转化为图像矩阵A(aij),其中,分块图像为m×n像素的数字图像,aij为图像矩阵A(aij)的(i,j)元素;其中,i=0,1,2,...,m-1;j=0,1,2,...,n-1;
步骤P2、读取权重矩阵H(hpq)的每一个元素hpq、并分别获取每一个元素hpq各自对应的由图像矩阵A(aij)中的所有需要与其做乘法运算的元素构成的乘积矩阵,并将每一个元素hpq与其各自对应的乘积矩阵相乘得到每一个元素hpq各自对应的局部矩阵;
步骤P3、计算所得到的各局部矩阵的和,该和即为当前所读入的分块图像对应的CNN卷积层局部运算结果。
其中,步骤S2中每次读取到的待处理特征图像的分块图像互不相同;
其中,步骤S2中按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像,读取方法包括:
在首次读取分块图像时,按预先设定的读取起始位置从待处理特征图像上读取一个满足所述图像大小阈值要求的分块图像;
在再次读取分块图像时,每个所读取到的分块图像均包含其各相邻分块图像的k-1行或k-1列像素。
可选地,作为本发明一个实施例,步骤P2中所涉及到的元素hpq对应的乘积矩阵包括以下情况:
在p=0且q=0时,所涉及到的元素hpq对应的乘积矩阵为图像矩阵A(aij)中除去第n-k+1、n-k+2、n-k+3、…、n-1列及除去第m-k+1、m-k+2、m-k+3、…、m-1行之后余下的所有的行和列形成(m-k+1)×(n-k+1)矩阵;
在p=0且q≠0时,所涉及到的元素hpq对应的乘积矩阵为将图像矩阵A(aij)中除去第0、1、2、…、q-1、n-k+q+1、n-k+q+2、n-k+q+3、…、n-1列以及除去第m-k+1、m-k+2、m-k+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵;
在p≠0且q=0时,所涉及到的元素hpq对应的乘积矩阵为,将图像矩阵A(aij)中除去第n-k+1、n-k+2、n-k+3、…、n-1列及除去第0、1、2、…、p-1、m-k+p+1、m-k+p+2、m-k+p+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵;
在p≠0且q≠0时,所涉及到的元素hpq对应的乘积矩阵为将图像矩阵A(aij)中除去第0、1、2、…,q-1、n-k+q+1、n-k+q+2、n-k+q+3、…、n-1列及除去第0、1、2、…、p-1、m-k+p+1、m-k+p+2、m-k+p+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵。
可选地,作为本发明一个实施例,步骤S1中将转化得到的权重矩阵H(hpq)存储在缓存中;步骤P1中将转化为的图像矩阵A(aij)存储在缓存中。
可选地,作为本发明一个实施例,该CNN卷积层运算方法基于FPGA实现。
可选地,作为本发明一个实施例,步骤P2中采用乘法器阵列将每一个元素hpq与其各自对应的乘积矩阵相乘得到每一个元素hpq各自对应的局部矩阵。
为了便于对本发明的理解,下面以本发明CNN卷积层运算方法的原理,结合实施例中对待处理特征图像进行CNN卷积层运算的过程,对本发明提供的CNN卷积层运算方法做进一步的描述。
具体的,所述CNN卷积层运算方法包括:
步骤L1、读入用于对待处理特征图像进行CNN卷积层运算的卷积核,并将读入的卷积核转化为权重矩阵H(hpq),其中,卷积核为k×k卷积核,hpq为权重矩阵H(hpq)的(p,q)元素,p=0,1,2,…,k-1;q=0,1,2,…,k-1。
待处理特征图像为需要进行CNN卷积层运算的图像。
待处理特征图像及其进行CNN卷积层运算所需的卷积核均预先存储在外部的DDR(Double Data Rate,双倍速率同步动态随机存储器)中。
在本实施例中,为描述方便,以k=3为例。相对应地,本实施例中用于对待处理特征图像进行CNN卷积层运算的卷积核为3×3的卷积核,进一步地,对应有权重矩阵H(hpq)为三阶矩阵,具体地,p=q=0,1,2。
为增加对权重矩阵H(hpq)读取的便利性,该步骤L1中将转化得到的三阶矩阵存入缓存,在取用权重矩阵H(hpq)中的每个元素(即权重)用时,可直接从缓存中读取权重矩阵H(hpq)各元素。
步骤L2、按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像,并依据所述的权重矩阵H(hpq)计算当前所读入的分块图像对应的CNN卷积层局部运算结果。
其中,该步骤L2中每次读取到的待处理特征图像的分块图像互不相同。
其中,步骤L2中按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像,读取方法包括:
在首次读取分块图像时,按预先设定的读取起始位置从待处理特征图像上读取一个满足所述图像大小阈值要求的分块图像;
在再次读取分块图像时,每个所读取到的分块图像均包含其各相邻分块图像的两行或两列像素。
由此可见,在本实施例中,当待处理特征图像的大小小于或等于所述图像大小阈值时,步骤L2中按照预先设定的图像大小阈值首次读取到的待处理特征图像上的一个满足所述图像大小阈值要求的分块图像就是所述待处理特征图像本身;当待处理特征图像本身的大小大于所述图像大小阈值,步骤L2中按照预先设定的图像大小阈值首次读取到的待处理特征图像上的一个满足所述图像大小阈值要求的分块图像则是所述待处理特征图像的局部的图像。
在本实施例中,待处理特征图像的大小大于所述图像大小阈值,预先设定的图像大小阈值为10×9像素,所述待处理特征图像为15×12像素。
在本实施例中,该步骤L2按照预先设定的图像大小阈值,首次读取到待处理特征图像上的一个大小为10×9像素的分块图像F1(可预先设定读取起始位置为待处理特征图像左上角的像素点)。该分块图像F1在待处理特征图像(15×12像素)上的位置如图2所示。图2中虚线部分表示15×12像素的待处理特征图像,每个虚线框代表待处理特征图像的一个像素,图2中黑色矩形框框出的部分代表分块图像F1。
其中,该步骤L2中依据所述的权重矩阵H(hpq)计算当前所读入的分块图像F1对应的CNN卷积层局部运算结果的实现方法包括:
步骤L21、将当前读入的分块图像F1转化为图像矩阵A(aij),aij为图像矩阵A(aij)的(i,j)元素;其中,i=0,1,2,...,m-1;j=0,1,2,...,n-1;本实施例中的分块图像F1对应m=7,n=6;具体地,此时有:
步骤L21中将转化为的图像矩阵A(aij)存储在缓存中,当需要取用图像矩阵A(aij)时,可直接从缓存中取用。
步骤L22、读取权重矩阵H(hpq)的每一个元素hpq、并分别获取每一个元素hpq各自对应的由图像矩阵A(aij)中的所有需要与其做乘法运算的元素构成的乘积矩阵,并将每一个元素hpq与其各自对应的乘积矩阵相乘得到每一个元素hpq各自对应的局部矩阵。
其中,该步骤L22中所涉及到的元素hpq对应的乘积矩阵包括以下情况:
在p=0且q=0时,所涉及到的元素hpq对应的乘积矩阵为图像矩阵A(aij)中除去第n-k+1、n-k+2、n-k+3、…、n-1列及除去第m-k+1、m-k+2、m-k+3、…、m-1行之后余下的所有的行和列形成(m-k+1)×(n-k+1)矩阵;
在p=0且q≠0时,所涉及到的元素hpq对应的乘积矩阵为将图像矩阵A(aij)中除去第0、1、2、…、q-1、n-k+q+1、n-k+q+2、n-k+q+3、…、n-1列以及除去第m-k+1、m-k+2、m-k+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵;
在p≠0且q=0时,所涉及到的元素hpq对应的乘积矩阵为,将图像矩阵A(aij)中除去第n-k+1、n-k+2、n-k+3、…、n-1列及除去第0、1、2、…、p-1、m-k+p+1、m-k+p+2、m-k+p+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵;
在p≠0且q≠0时,所涉及到的元素hpq对应的乘积矩阵为将图像矩阵A(aij)中除去第0、1、2、…,q-1、n-k+q+1、n-k+q+2、n-k+q+3、…、n-1列及除去第0、1、2、…、p-1、m-k+p+1、m-k+p+2、m-k+p+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵。
在本实施例中,当读取到权重矩阵H(hpq)的元素hpq为h00时,因p=0且q=0,此时元素h00对应的乘积矩阵为:
图像矩阵A1中除去第n-k+1、n-k+2、n-k+3、…、n-1列及除去第m-k+1、m-k+2、m-k+3、…、m-1行之后余下的所有的行和列形成(m-k+1)×(n-k+1)矩阵,即为图像矩阵A1中除去第4、5列及除去第5、6行之后余下的所有的行和列拼接形成的5×4矩阵,记为乘积矩阵00,具体为:
在本实施例中,当读取到权重矩阵H(hpq)的元素hpq为h01时,因p=0且q=1≠0,此时元素h01对应的乘积矩阵为:
图像矩阵A1中除去第0、5列以及除去第5、6行之后余下的所有的行和列拼接形成的5×4矩阵,记为乘积矩阵01,具体为:
在本实施例中,当读取到权重矩阵H(hpq)的元素hpq为h10时,因q=0且p=1≠0,此时元素h10对应的乘积矩阵为:
图像矩阵A1中除去第4、5列及除去第0、6行的所有的行和列拼接形成的5×4矩阵,记为乘积矩阵10,具体为:
在本实施例中,当读取到权重矩阵H(hpq)的元素hpq为h11时,因q=p=1≠0,此时元素h11对应的乘积矩阵为:
图像矩阵A1中除去第0、5列及除去第0、6行的所有的行和列拼接形成的5×4矩阵,记为乘积矩阵11,具体为:
当读取到权重矩阵H(hpq)的其他元素hpq时,均可参照上述方式获取到对应的乘积矩阵。
对于图像矩阵A1,在读取完权重矩阵H(hpq)的每一个元素hpq并获取到权重矩阵H(hpq)的每一个元素hpq各自对应的乘积矩阵后,分别将权重矩阵H(hpq)的每一个元素hpq与其各自对应的乘积矩阵相乘得到每一个元素hpq各自对应的局部矩阵。
可见本发明以卷积核中的每个权重(对应元素hpq)为出发点,直接获取每一个权重各自对应的由分块图像中的所有需要与读取到的权重做乘法运算的特征点构成的乘积矩阵,一定程度上减少了从外部存储(DDR)中对卷积核中每个权重的读取次数,一定程度上有助于降低存储带宽压力。
步骤L23、计算步骤L22中所得到的各局部矩阵的和,该和即为当前所读入的分块图像F1对应的CNN卷积层局部运算结果。
各局部矩阵的和,通过矩阵的加法进行运算。
步骤L3、判断整幅待处理特征图像是否读取完成,若是,则继续执行步骤L4,否则转而重复执行步骤L2。
在本实施例中,明显在读取分块图像F1后,整幅待处理特征图像没有读取完成,需要继续读取待处理特征图像的分块图像。
在本实施例中,在步骤L2中,按照预先设定的图像大小阈值(10×9像素),整幅待处理特征图像在完成读取后,总计被单独读取的分块图像除上述分块图像F1外,还有分块图像F2、分块图像F3和分块图像F4,其中,分块图像F2、分块图像F3和分块图像F4在整幅待处理特征图像上的位置示意图依次如图3、图4和图5所示。
对于分块图像F2、分块图像F3和分块图像F4,均可参照步骤L2中的分块图像F1,获取其各自对应的CNN卷积层局部运算结果(也是矩阵)。
需要说明的是,在每次读取新的分块图像之前,可先清除上一次存储的分块图像。
步骤L4、按照各所述分块图像之间的相对位置关系,排布步骤L2中得到的各CNN卷积层局部运算结果,之后拼接得到整幅待处理特征图像对应的CNN卷积层运算结果。
比如上述15×12像素的待处理特征图像,整幅待处理特征图像需要读取四次,对应4个分块图像,该4个分块图像按读取顺序依次为分块图像F1、分块图像F2、分块图像F3和分块图像F4,其中分块图像F1、分块图像F2、分块图像F3和分块图像F4在待处理特征图像中的相对位置关系分布示意图如图2所示。
记分块图像F1、分块图像F2、分块图像F3和分块图像F4各自对应的CNN卷积层局部运算结果依次记为矩阵C1、矩阵C2、矩阵C3和矩阵C4,则矩阵C1、矩阵C2、矩阵C3和矩阵C4的排布位置示意图如图6所示。将矩阵C1、矩阵C2、矩阵C3和矩阵C4按照其排布位置拼接形成一个拼接矩阵,该拼接矩阵即为本实施例中整幅待处理特征图像对应的CNN卷积层运算结果。将该CNN卷积层运算结果转化为图像输出,即得到本实施例中整幅待处理特征图像经过CNN卷积层运算后对应的图像。
本实施例中的CNN卷积层运算方法基于FPGA实现。
综上可见,本发明所述的CNN卷积层运算方法,将CNN卷积层运算过程中所需要的权重矩阵H(hpq)及图像矩阵A(aij)存储在缓存中,一方面避免了额外增加存储,有助于在一定程度上降低完成CNN卷积层运算的成本,另一方面还减少了从外部存储(DDR)中读取CNN卷积层运算所需的数据的次数,一定程度上有助于增加CNN卷积层运算的速率。
另外可见,本发明所述的CNN卷积层运算方法,还避免了对现有技术中特征图二维窗的使用,进而避免了对现有技术中用于生成所述特征图二维窗的控制模块的使用,一定程度上降低了CNN卷积运算的复杂度,便于实现。
图7是本发明所述CNN卷积层运算加速器的一个实施例。
如图7示,该CNN卷积层运算加速器100包括:
第一数据预读模块101,用于读入用于对待处理特征图像进行CNN卷积层运算的卷积核,并将读入的卷积核转化为权重矩阵H(hpq),其中,卷积核为k×k卷积核,hpq为权重矩阵H(hpq)的(p,q)元素,p=0,1,2,...,k-1;q=0,1,2,...,k-1;
第二数据预读模块102,用于按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像;
局部运算模块103,用于依据所述的权重矩阵H(hpq)计算第二数据预读模块102当前所读入的分块图像对应的CNN卷积层局部运算结果;
判断模块104,用于判断整幅待处理特征图像是否读取完成;
卷积层运算结果输出模块105,用于在判断模块104判断整幅待处理特征图像已读取完成时,按照各所述分块图像之间的相对位置关系,排布局部运算模块103所得到的各CNN卷积层局部运算结果,之后拼接得到整幅待处理特征图像对应的CNN卷积层运算结果并输出;
调用模块106,用于在判断模块104判断整幅待处理特征图像未读取完成时调用数据预读模块继续执行;
其中,所述局部运算模块103包括:
图像矩阵转化单元1031,用于将当前读入的分块图像转化为图像矩阵A(aij),其中,分块图像为m×n像素的数字图像,aij为图像矩阵A(aij)的(i,j)元素;其中,i=0,1,2,...,m-1;j=0,1,2,...,n-1;
局部矩阵获取单元1032,用于读取权重矩阵H(hpq)的每一个元素hpq、并分别获取每一个元素hpq各自对应的由图像矩阵A(aij)中的所有需要与其做乘法运算的元素构成的乘积矩阵,并将每一个元素hpq与其各自对应的乘积矩阵相乘得到每一个元素hpq各自对应的局部矩阵;
局部运算结果获取单元1033,用于计算所得到的各局部矩阵的和,该和即为当前所读入的分块图像对应的CNN卷积层局部运算结果。
其中,第二数据预读模块每次读取到的分块图像互不相同。
其中,第二数据预读模块102按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像,读取方法包括:
在首次读取分块图像时,按预先设定的读取起始位置从待处理特征图像上读取一个满足所述图像大小阈值要求的分块图像;
在再次读取分块图像时,每个所读取到的分块图像均包含其各相邻分块图像的k-1行或k-1列像素。
可选地,作为本发明的一个实施例,所述局部矩阵获取单元1032中所涉及到的元素hpq对应的乘积矩阵包括以下情况:
在p=0且q=0时,所涉及到的元素hpq对应的乘积矩阵为图像矩阵A(aij)中除去第n-k+1、n-k+2、n-k+3、…、n-1列及除去第m-k+1、m-k+2、m-k+3、…、m-1行之后余下的所有的行和列形成(m-k+1)×(n-k+1)矩阵;
在p=0且q≠0时,所涉及到的元素hpq对应的乘积矩阵为将图像矩阵A(aij)中除去第0、1、2、…、q-1、n-k+q+1、n-k+q+2、n-k+q+3、…、n-1列以及除去第m-k+1、m-k+2、m-k+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵;
在p≠0且q=0时,所涉及到的元素hpq对应的乘积矩阵为,将图像矩阵A(aij)中除去第n-k+1、n-k+2、n-k+3、…、n-1列及除去第0、1、2、…、p-1、m-k+p+1、m-k+p+2、m-k+p+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵;
在p≠0且q≠0时,所涉及到的元素hpq对应的乘积矩阵为将图像矩阵A(aij)中除去第0、1、2、…,q-1、n-k+q+1、n-k+q+2、n-k+q+3、…、n-1列及除去第0、1、2、…、p-1、m-k+p+1、m-k+p+2、m-k+p+3、…、m-1行之后余下的所有的行和列拼接形成的(m-k+1)×(n-k+1)矩阵。
可选地,作为本发明的一个实施例,该CNN卷积层运算加速器还包括缓存;
第一数据预读模块101将其转化为的权重矩阵H(hpq)存储在缓存中;
图像矩阵转化单元1031将其转化为的图像矩阵A(aij)存储在缓存中。
可选地,作为本发明的一个实施例,该CNN卷积层运算加速器基于FPGA实现。
可选地,作为本发明的一个实施例,读取到的待处理特征图像上的一个满足所述图像大小阈值要求的分块图像,为:
在待处理特征图像上未被读取过的部分的大小大于所述图像大小阈值时,读取待处理特征图像上未被读取过的部分上的与所述图像大小阈值大小相等的局部的图像;
在待处理特征图像上未被读取过的部分的大小小于或等于所述图像大小阈值时,读取待处理特征图像上未被读取过的全部图像。
具体实现时,局部矩阵获取单元1032可采用乘法器阵列将每一个元素hpq与其各自对应的乘积矩阵相乘得到每一个元素hpq各自对应的局部矩阵;局部运算结果获取单元1033可采用累加器阵列计算所得到的各局部矩阵的和。
本说明书中各个实施例之间相同相似的部分互相参见即可。
在本发明所提供的几个实施例中,应该理解到,所揭露的***和方法,可以通过其它的方式实现。例如,以上所描述的***实施例仅仅是示意性的,例如,所述模块及所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (8)
1.一种CNN卷积层运算方法,其特征在于,包括步骤:
S3、判断整幅待处理特征图像是否读取完成,若是,则继续执行步骤S4,否则转而重复执行步骤S2;
S4、按照各所述分块图像之间的相对位置关系,排布步骤S2中得到的各CNN卷积层局部运算结果,之后拼接得到整幅待处理特征图像对应的CNN卷积层运算结果;
P3、计算所得到的各局部矩阵的和,该和即为当前所读入的分块图像对应的CNN卷积层局部运算结果;
其中,步骤S2中每次读取到的待处理特征图像的分块图像互不相同;
其中,步骤S2中按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像,读取方法包括:
在首次读取分块图像时,按预先设定的读取起始位置从待处理特征图像上读取一个满足所述图像大小阈值要求的分块图像;
在再次读取分块图像时,每个所读取到的分块图像均包含其各相邻分块图像的k-1行或k-1列像素;
在p=0且q=0时,所涉及到的元素对应的乘积矩阵为图像矩阵中除去第n-k+1、n-k+2、n-k+3、...、n-1列及除去第m-k+1、m-k+2、m-k+3、...、m-1行之后余下的所有的行和列形成矩阵;
在p=0且时,所涉及到的元素对应的乘积矩阵为将图像矩阵中除去第0、1、2、...、q-1、n-k+q+1、n-k+q+2、n-k+q+3、...、n-1列以及除去第m-k+1、m-k+2、m-k+3、...、m-1行之后余下的所有的行和列拼接形成的矩阵;
在且q=0时,所涉及到的元素对应的乘积矩阵为,将图像矩阵中除去第n-k+1、n-k+2、n-k+3、...、n-1列及除去第0、1、2、...、p-1、m-k+p+1、m-k+p+2、m-k+p+3、...、m-1行之后余下的所有的行和列拼接形成的矩阵;
3.根据权利要求1所述的CNN卷积层运算方法,其特征在于,该CNN卷积层运算方法基于FPGA实现。
5.一种CNN卷积层运算加速器,其特征在于,包括:
第二数据预读模块,用于按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像;
判断模块,用于判断整幅待处理特征图像是否读取完成;
卷积层运算结果输出模块,用于在判断模块判断整幅待处理特征图像已读取完成时,按照各所述分块图像之间的相对位置关系,排布局部运算模块所得到的各CNN卷积层局部运算结果,之后拼接得到整幅待处理特征图像对应的CNN卷积层运算结果并输出;
调用模块,用于在判断模块判断整幅待处理特征图像未读取完成时调用数据预读模块继续执行;
其中,所述局部运算模块包括:
局部矩阵获取单元,用于读取权重矩阵的每一个元素、并分别获取每一个元素各自对应的由图像矩阵中的所有需要与其做乘法运算的元素构成的乘积矩阵,并将每一个元素与其各自对应的乘积矩阵相乘得到每一个元素各自对应的局部矩阵;
局部运算结果获取单元,用于计算所得到的各局部矩阵的和,该和即为当前所读入的分块图像对应的CNN卷积层局部运算结果;
第二数据预读模块每次读取到的分块图像互不相同;
第二数据预读模块按照预先设定的图像大小阈值,读取待处理特征图像上的一个分块图像,读取方法包括:
在首次读取分块图像时,按预先设定的读取起始位置从待处理特征图像上读取一个满足所述图像大小阈值要求的分块图像;
在再次读取分块图像时,每个所读取到的分块图像均包含其各相邻分块图像的k-1行或k-1列像素;
在p=0且q=0时,所涉及到的元素对应的乘积矩阵为图像矩阵中除去第n-k+1、n-k+2、n-k+3、...、n-1列及除去第m-k+1、m-k+2、m-k+3、...、m-1行之后余下的所有的行和列形成矩阵;
在p=0且时,所涉及到的元素对应的乘积矩阵为将图像矩阵中除去第0、1、2、...、q-1、n-k+q+1、n-k+q+2、n-k+q+3、...、n-1列以及除去第m-k+1、m-k+2、m-k+3、...、m-1行之后余下的所有的行和列拼接形成的矩阵;
在且q=0时,所涉及到的元素对应的乘积矩阵为,将图像矩阵中除去第n-k+1、n-k+2、n-k+3、...、n-1列及除去第0、1、2、...、p-1、m-k+p+1、m-k+p+2、m-k+p+3、...、m-1行之后余下的所有的行和列拼接形成的矩阵;
7.根据权利要求5所述的CNN卷积层运算加速器,其特征在于,该CNN卷积层运算加速器基于FPGA实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010791455.5A CN111967582B (zh) | 2020-08-07 | 2020-08-07 | 一种cnn卷积层运算方法及cnn卷积层运算加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010791455.5A CN111967582B (zh) | 2020-08-07 | 2020-08-07 | 一种cnn卷积层运算方法及cnn卷积层运算加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111967582A CN111967582A (zh) | 2020-11-20 |
CN111967582B true CN111967582B (zh) | 2022-07-08 |
Family
ID=73365849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010791455.5A Active CN111967582B (zh) | 2020-08-07 | 2020-08-07 | 一种cnn卷积层运算方法及cnn卷积层运算加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111967582B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112966729B (zh) * | 2021-02-26 | 2023-01-31 | 成都商汤科技有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN112950656A (zh) * | 2021-03-09 | 2021-06-11 | 北京工业大学 | 一种基于fpga平台的按通道进行预读取数据的分块卷积方法 |
CN115860080B (zh) * | 2023-02-15 | 2023-05-09 | 苏州浪潮智能科技有限公司 | 计算核、加速器、计算方法、装置、设备、介质及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108549931A (zh) * | 2018-04-25 | 2018-09-18 | 济南浪潮高新科技投资发展有限公司 | 一种卷积神经网络的加速装置及方法 |
CN110321996A (zh) * | 2018-03-28 | 2019-10-11 | 华为技术有限公司 | 一种基于卷积神经网络的图像处理的方法和装置 |
CN110399591A (zh) * | 2019-06-28 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 基于卷积神经网络的数据处理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11574694B2 (en) * | 2018-10-11 | 2023-02-07 | International Business Machines Corporation | Kernel sets normalization with capacitor charge sharing |
-
2020
- 2020-08-07 CN CN202010791455.5A patent/CN111967582B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321996A (zh) * | 2018-03-28 | 2019-10-11 | 华为技术有限公司 | 一种基于卷积神经网络的图像处理的方法和装置 |
CN108549931A (zh) * | 2018-04-25 | 2018-09-18 | 济南浪潮高新科技投资发展有限公司 | 一种卷积神经网络的加速装置及方法 |
CN110399591A (zh) * | 2019-06-28 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 基于卷积神经网络的数据处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111967582A (zh) | 2020-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111967582B (zh) | 一种cnn卷积层运算方法及cnn卷积层运算加速器 | |
CN110717851B (zh) | 图像处理方法及装置、神经网络的训练方法、存储介质 | |
US20200372609A1 (en) | Super-resolution video reconstruction method, device, apparatus and computer-readable storage medium | |
EP3839875B1 (en) | Method and apparatus for correcting distorted document image | |
WO2019184657A1 (zh) | 图像识别方法、装置、电子设备及存储介质 | |
EP3855367A1 (en) | Operation accelerator, processing method, and related device | |
WO2022037257A1 (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN108573305B (zh) | 一种数据处理方法、设备及装置 | |
WO2020258491A1 (zh) | 通用字符识别方法、装置、计算机设备和存储介质 | |
WO2022042124A1 (zh) | 超分辨率图像重建方法、装置、计算机设备和存储介质 | |
JP2005044098A (ja) | 画像処理装置及び画像処理方法 | |
CN112991142B (zh) | 图像数据的矩阵运算方法、装置、设备及存储介质 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
EP3093757B1 (en) | Multi-dimensional sliding window operation for a vector processor | |
CN114092336B (zh) | 基于双线性插值算法的图像缩放方法、装置、设备及介质 | |
CN112997479A (zh) | 跨阶段跳跃连接处理图像的方法、***和计算机可读介质 | |
CN111476718A (zh) | 一种图像放大方法、装置、存储介质及终端设备 | |
CN112184587A (zh) | 一种边缘数据增强模型、以及基于所述模型的高效边缘数据增强方法及*** | |
WO2019206161A1 (zh) | 池化运算装置 | |
US20220044370A1 (en) | Image processing methods | |
CN113657587B (zh) | 基于fpga的可变形卷积加速方法及装置 | |
CN105160622A (zh) | 基于fpga的图像超分辨率的实现方法 | |
WO2021139380A1 (en) | Image processing method and device, electronic device | |
US20220130012A1 (en) | Demosaicing method and demosaicing device | |
CN110619387B (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 |