CN113628093A - 一种加速图像处理的方法、系统、设备及存储介质 - Google Patents
一种加速图像处理的方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN113628093A CN113628093A CN202110865745.4A CN202110865745A CN113628093A CN 113628093 A CN113628093 A CN 113628093A CN 202110865745 A CN202110865745 A CN 202110865745A CN 113628093 A CN113628093 A CN 113628093A
- Authority
- CN
- China
- Prior art keywords
- data conversion
- convolution kernel
- convolution
- data
- picture
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000012545 processing Methods 0.000 title claims abstract description 17
- 238000006243 chemical reaction Methods 0.000 claims abstract description 131
- 238000004364 calculation method Methods 0.000 claims abstract description 48
- 230000001133 acceleration Effects 0.000 claims abstract description 23
- 230000009466 transformation Effects 0.000 claims abstract description 13
- 239000011159 matrix material Substances 0.000 claims description 99
- 238000004422 calculation algorithm Methods 0.000 claims description 35
- 238000005192 partition Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 8
- 238000000638 solvent extraction Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 13
- 238000013501 data transformation Methods 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 1
- 241000197727 Euscorpius alpha Species 0.000 description 1
- 101100317378 Mus musculus Wnt3 gene Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000011541 reaction mixture Substances 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/04—Context-preserving transformations, e.g. by using an importance map
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Processing (AREA)
Abstract
本发明提出了一种加速图像处理的方法、系统、设备及存储介质,其中,所述方法包括:对获得的图片数据划分数据分块,并在每个数据分块的卷积运算时执行以下步骤:对所述数据分块进行图片数据转换和卷积核数据转换,分别获得图片数据转换项和卷积核数据转换项;以及通过GPU加速单元加速所述数据分块中的所述图片数据转换项和所述卷积核数据转换项的卷积运算,并对所述卷积运算的结果进行逆变换得到计算结果。本发明的有益效果包括可以大大提升图片卷积运算的速度,以满足推理时的性能需求。此外,本发明还给出了用于执行本发明方法的最佳数据分块结构,从而有助于本发明方法的进一步实施。
Description
技术领域
本发明涉及图像处理技术领域,尤其涉及一种加速图像处理的方法、系统、设备及存储介质。
背景技术
随着互联网、大数据、云计算等技术的快速发展,人工智能(ArtificialIntelligence,简称AI)发展突飞猛进,在语音识别、图像识别、智能控制、复杂计算等各大领域涌现出一系列应用产品,同时也在各行各业得到的广泛的应用,而图像处理一直是人工智能领域的研究热点,比如汽车自动驾驶,通过实时的路况图像信息采集以及处理,可以直接控制汽车在路上的行驶行为;在人脸识别方面,通过对比信息库中数据,可以对人脸图像的面部特征进行识别从而辨认身份,而这在社会安防方面已经发挥了重要的作用。
目前对人工智能图像识别提出了多种卷积神经网络,Resnet50卷积神经网络模型即是其中一种。如图1所示,为现有技术中利用Resnet50中3*3卷积核处理图像的过程,过程包括:首先根据输入的NHWC的原始数据进行循环设置,此时外层循环为[N,H,W,Oc],内层循环为[kh,kw,Ic],随后将计算卷积矩阵乘化,此时主要计算规则变成kh*kw*(NHW,Ic)x(Ic,Oc),经过在kh,kw,Ic方向的不断累加得到最终结果,整个过程需要将数据划分数据分块给GPU的计算线程以实现加速计算,在这种计算方式中需要进行大量矩阵乘操作,导致计算速率较慢,难以推理时的性能需求。
发明内容
为了提升对图片卷积运算的速度,在本发明的一个方面,提出了一种图片处理方法,包括:
对所述数据分块进行图片数据转换和卷积核数据转换,分别获得图片数据转换项和卷积核数据转换项;以及
通过GPU加速单元加速所述数据分块中的所述图片数据转换项和所述卷积核数据转换项的卷积运算,并对所述卷积运算的结果进行逆变换得到计算结果。
在本发明的一些实施方式中,对所述数据分块进行图片数据转换和卷积核数据转换包括:
指定winograds算法的输入矩阵的规格,并根据输入矩阵的规格确定图片数据的矩阵大小以及卷积核的矩阵大小。
在本发明的一些实施方式中,方法中分别获得图片数据转换项和卷积核数据转换项包括:
根据winograds算法的输入矩阵规格,在CPU中对卷积核数据进行转换获得所述卷积核数据转换项并保存。
在本发明的一些实施方式中,分别获得图片数据转换项和卷积核数据转换项包括:
根据winograds算法的输入矩阵规格,在GPU中对所述图片数据进行转换获得所述图片数据转换项。
在本发明的一些实施方式中,通过GPU加速单元加速所述数据分块中的所述图片数据转换项和所述卷积核数据转换项的卷积运算包括:
获取在CPU中计算得到的所述卷积核数据转换项和所述图片数据转换项;
将所述图片数据转换项和所述卷积核数据转换项通过GPU加速单元进行批量卷积计算。
在本发明的一些实施方式中,所述图片数据转换项和所述卷积核数据转换数据类型为8位整型数据。
在本发明的一些实施方式中,所述GPU加速单元为tensorcore。
本发明的另一方面还提出了一种图像处理系统,其特征在于,包括:
预运算模块,配置用于对所述数据分块进行图片数据转换和卷积核数据转换,分别获得图片数据转换项和卷积核数据转换项;
加速计算模块,配置用于通过GPU加速单元加速所述数据分块中的所述图片数据转换项和所述卷积核数据转换项的卷积运算,并对所述卷积运算的结果进行逆变换得到计算结果。
本发明的再一方面还提出了一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现上述实施方式中任意一项所述方法的步骤。
本发明又一方面一种存储介质,其特征在于,所述存储介质中存储有可运行的计算机程序,所述计算机程序被执行时用于实现上述实施方式中任意一项所述的一种图片卷积运算方法的步骤。
本发明的有益效果包括:使得本发明的卷积运算中的乘法数量大大减少,还利用GPU加速单元加快了图片数据转换项和卷积核数据转换项的矩阵乘运算速度。即通过本发明的图片卷积方法可以大大提升图片卷积运算的速度,以满足推理时的性能需求。此外,本发明还给出了用于执行本发明方法的最佳数据分块结构,从而有助于本发明方法的进一步实施。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明的一种图片卷积运算方法的工作流程图;
图2为Tensorcore的原理示意图;
图3为本发明一实施例的图片卷积运算的完整流程图;
图4为根据本发明一实施例的图像处理系统;
图5为根据本发明一实施例的计算机设备;
图6为根据本发明一实施例的计算机存储介质。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
图1为本发明的一种图片卷积运算方法的工作流程图。如图1所示,本发明的图片卷积运算方法的工作流程包括:
步骤S1、对获得的图片数据划分数据分块(block),并在每个数据分块的卷积运算中执行以下步骤:
步骤S2、对所述数据分块进行图片数据转换和卷积核数据转换,分别获得图片数据转换项和卷积核数据转换项;以及
步骤S3、通过GPU加速单元加速所述数据分块中的所述图片数据转换项和所述卷积核数据转换项的卷积运算,并对所述卷积运算的结果进行逆变换得到计算结果。
在本发明的一个实施例中,预定算法为Winograd算法并以Tensorcore技术加速该算法的实施。
在本发明的一些实施方式中,方法中对所述数据分块进行图片数据转换和卷积核数据转换包括:
指定winograds算法的输入矩阵的规格,并根据输入矩阵的规格确定图片数据的矩阵大小以及卷积核的矩阵大小。
在本实施例中,所谓输入规格为Winograd算法的规格,在本实施例中使用的为F(2x2,3x3),其输入数据(图像数据)为4x4的矩阵,过滤器(卷积核)为3x3的矩阵,输出为2x2的矩阵。
在本发明的一些实施方式中,方法中分别获得图片数据转换项和卷积核数据转换项包括:
根据winograds算法的输入矩阵规格,在CPU中对卷积核数据进行转换获得所述卷积核数据转换项并保存。
在本发明的一些实施方式中,分别获得图片数据转换项和卷积核数据转换项包括:
根据winograds算法的输入矩阵规格,在GPU中对所述图片数据进行转换获得所述图片数据转换项。
在本发明的一些实施方式中,通过GPU加速单元加速方式加速所述数据分块中的所述图片数据转换项和所述卷积核数据转换项的卷积运算包括:
获取在CPU中计算得到的所述卷积核数据转换项并与所述图片数据转换项;
将所述图片数据转换项和所述卷积核数据转换项通过GPU加速单元进行批量卷积计算。在本发明的一些实施方式中,所述GPU加速单元为tensorcore。
在本发明的一些实施方式中,方法中通过GPU加速单元进行批量卷积计算的所述图片数据转换项和所述卷积核数据转换数据类型为8位整型数据。
具体的,Winograd算法是基于1980年Winograd的最小滤波算法提出的一种快速卷积算法,主要通过降低卷积的计算复杂度,将乘法运算变为加法运算从而提升卷积计算效率,适用于小尺寸的卷积核进行卷积运算。
对于最小滤波算法,在一维数据的情况下,记输出的分块(tile)大小为m,滤波器的大小为r,可将该算法标记为F(m,r),若将数据扩展为二维分布,算法可以用F(m x m,r xr)进行标记,那么算法的运算可以用下述公式表示:
上式(1)中,d表示输入数据,g表示过滤器,在卷积中表示为卷积核,AT,BT,G都是算法中的系数转换矩阵,矩阵数值由m,r共同决定。
对于F(2x2,3x3),即卷积核为3x3,输出为2x2卷积运算;其中,g为卷积核矩阵,对应的AT,BT,G分别可以用下式表示:
将上述计算过程应用到图片卷积运算中,卷积运算过程包括:
1.图片数据转换:
for b=0 to P do
for c=0 to C do
v=BTdc,bB (2)
即将图片数据采用公式(2)和公式(3)进行内循环处理,循环次数为C+1次;外循P+1次后获得图片数据转换项。公式(3)中,vξ,ν表示单个图片数据块矩阵,矩阵大小为ξ×ν,中下标b表示第b个图片的数据块,下表c表示图片的第c个输入通道,整体表示将所有单个图片数据块合并在一起,并将单个图片数据块ξ×ν散成一行,形成的ξ×ν个b*c的图片数据矩阵。
2.卷积核数据转换
for k=0 to K do
for c=0 to C do
u=Ggk,cGT (4)
即将卷积核数据采用公式(4)和公式(5)进行内循环处理,循环次数为C+1次;外循K+1次获得卷积核数据转换项。公式(5)中,uξ,ν表示单个卷积核数据块矩阵,矩阵大小为ξ×ν,中下标k表示第k个卷积核的数据块,下表c表示卷积核的第c个输入通道,整体表示将所有单个卷积核数据块合并在一起,并将单个卷积核数据块ξ×ν散成一行,形成的ξ×ν个c*k的图片数据矩阵。
3.批量矩阵乘
forξ=0 toαdo
forν=0 toαdo
M(ξ,ν)=U(ξ,ν)V(ξ,ν) (6)
即采用公式(6)作为内循环,循环次数为α+1次;外循α+1次来进行图片数据转换项与卷积核数据转换项的批量矩阵乘运算。本发明方法中,对批量矩阵乘的运算方式作出了改进,并首次提出了以Tensorcore算法进行批量矩阵乘过程,以减少卷积运算中的乘法操作。其中,由于计算机在执行乘法操作所花费的时间要多于执行加法操作所花费的时间,因此,通过本发明方法可以有效的提升卷积运算的速度。
4.图片数据逆变换
for k=0 to K do
for b=0 to P do
Yk,b=ATmA (8)
即采用公式(7)和公式(8)作为内循环,循环次数为P+1次;外循K+1次获得图片转换项。式(7)中,中下标k表示图片第k个输出通道的数据块,下表b表示第b个图片,整体表示矩阵乘计算完成后的ξ×ν个b*k大小的图片数据矩阵;mξ,ν表示将整体的图片数据按照b*k的方向散开形成的共b*k个ξ×ν大小的单个图片数据矩阵;式(8)中Yk,b表示将单个图片数据矩阵进行逆变换形成的最终图片数据矩阵结果。图片数据逆变换的目的在于将之前进行了图片数据转换的数据进行还原。
在Winograd算法中,上述各公式中的各参量的计算方式包括:
分块的总数量:P=N[H/m][W/m];其中,N为输入的图片数据的数量,H为图片的高度,W为图片的宽度,在本发明的方法中为了更适于利用Resnet50中3*3卷积核,m取值2;
输入分块的尺寸:α=m+r-1;其中r即为卷积和的尺度,在本发明的方法中r取值3;
相邻分块重叠尺寸:r-1;
输入图片数据分块b,通道c上的数据块:dc,b;
输入卷积核分块k,通道c上的数据块:gk,c;
卷积核,图片数据,逆变换数据转换矩阵分别如上述:G,Yk,b以及AT所示;其中,B与BT换为转置矩阵,A与AT换为转置矩阵,G与GT互为转置矩阵;
输出图片数据分块b,卷积核分块k上的数据块Yk,b。
Tensorcore是Nvidia公司推出的在GPU的CUDA架构上进行的混合精度矩阵乘计算方法,具体计算过程如图2所示,图2为Tensorcore算法的原理示意图。
如图2所示,最左边的输入表示进行矩阵乘的两个输入矩阵,在Tensorcore中有fp32,int8,int4等多种数据精度的mma指令,在本发明中采用的矩阵的数据精度为int8,关于矩阵的形状采用的是16x8x32,16x8x32表示的是一个A矩阵形状为[16,32]乘以B矩阵形状为[8,32]得到一个矩阵C形状为[16,8],在每组两个输入矩阵相乘后在中间的累加器(Accumulator)中进行不断地累加,在累加器中计算精度为int32,最后在所有矩阵相乘并累加后得到输出矩阵,输出矩阵的计算精度也为int32,值得一提的是在本发明的方法中所有的计算过程都是在32个线程之内完成的,通过32个线程的一次协作完成一次特定形状下的矩阵乘操作,相比较不使用Tensorcore的矩阵乘操作,使用Tensorcore的计算性能可以提高3倍左右。
本发明基于Resnet50中的第二组残差模块中的3*3卷积,进行int8数据类型下的Winograd算法设计,主要信息如下:
表1 Resnet50中的第二组残差模块中的3*3卷积主要信息
由以上可知,关于该层卷积的计算H*W=28*28,Oc=4*32=128,程序首先需要根据GPU的计算资源将这些不同区域的计算表划分到不同的数据分块上,在这里将HW维度的28*28区域划分成7*7个4*4的区域,其中代表HW维度的49个小区域分配给Block的y维度,这样在HW维度上,每一个数据分块计算得到4*4的区域,由于是3*3卷积,所以需要的原始数据为H*W=6*6的区域;将N方向每连续8个图片划分一个小区域,并将N方向分配到数据分块的x维度,这样数据分块的x维度共有N/8个,每个数据分块计算8张图片,结合HW的划分,一个数据分块计算所需要的原始数据为[8(N),6(H),6(W),32(Ic)],其中Ic取32表示的一次循环所需要的数据,这样的循环共有四次以完成输入通道数128的计算;最后是对Oc的划分,每个数据分块的z维度分配Oc为64的小区域,这样在数据分块的z维度共有2个,每个计算Oc为64的小区域;同时设置一个数据分块中线程数量为256,即8个warp。
针对Resnet50中的3*3卷积,通过Winograd实现int8数据类型下的卷积运算的整体流程图3所示,图3为本发明实施例的图片卷积运算的完整流程图。
如图3所示,本发明的图片卷积运算方法的完成流程包括:步骤10、开始;步骤20、获取图片数据N,并判断获得到的图片数量是否达到8个(在本实施例中将8个图片数据作为1组通过Tensorcore技术加速计算,理论上可对单个图片数据进行计算,理论上分组中的图片数据远多于8个,该数据根据GPU的Tensorcore的数量以及CUDA核心的数量可适当定制。);若图片数量为8的整数倍(即能被8整除)则进入步骤80结束本次循环,并重新执行步骤10;步骤30、判断对卷积和的预转换工作是否已经完成;是的话则进入步骤50,否的话则进入步骤40;其中,步骤30到步骤50的目的是,扫描系统内是否已经完成对卷积核的转换工作,如果没有预先完成对卷积核的转换工作,则进入步骤40、进行卷积核数据转换以获得卷积核数据转换项;如果预先完成了对卷积核的转换工作,则直接进入步骤50、进行图片数据转换以获得图片数据转换项;步骤60、采用Tensorcore算法批量进行图片数据转换项和卷积核数据转换项之间的批量矩阵乘运算;步骤70、对步骤60中的批量矩阵乘运算的结果进行逆变换。
在进一步的实施例中,本发明还给出了用于实施本发明上述的方法的数据分块划分;其中,对获得的图片数据划分数据分块,包括:对获得的图片数据以每连续8个图片划分为一个数据分块,并数据分块的数量划分给数据分块的x维度;将每个数据分块的宽和高划分给所述数据分块的y维度;以及将用于传输数据分块的输入通道的数量划分给所述数据分块的z维。
在一个具体的实施例中,本发明在Winograd算法的基础上采用F(2x2,3x3)为函数(即输出为2x2的矩阵,卷积核为3x3的矩阵)进行图片卷积运算,则本发明的卷积过程及数据分块的结构分析如下:
(1)图片数据前转换
由表1可知原始图片的输入数据排列为[N,Ic/4,H,W,32]即[N,4,28,28,32],在Winograd算法中先将图片数据经过式(2)变成(P,Ic,α,α)的分布,其中P表示tile的总数量,α=m+r-1表示一个图片tile经过式(3)计算完成后尺寸,随后根据式(5)将图片的数据格式由(P,Ic,α,α)的分布变为(α,α,P,Ic)的分布,其中最左侧的两个α维度会变成批量矩阵乘中的矩阵乘数量,即共有α2个矩阵进行矩阵乘。在本发明中,采用的F(m,r),即m=2,r=3这样的参数,计算得到α为4。
将上述计算过程放在CUDA编程上进行实现,考虑到寄存器以及共享内存的使用情况,首先对原始数据进行划分,由前述可知一个数据分块内部一次循环需要读取的原始数据为[8(N),6(H),6(W),32(Ic)],对F(2,3)的Winograd算法需要进行前变换,针对一个H*W=6*6的原始数据,会形成OH*OW=2*2共四个H*W=4*4的区域,此时原始数据为[8(N),2(OH),2(OW),4(H),4(W),32(Ic)],由于N,OH,OW三个维度在变换中是平等关系所以将这三维合成一维m=N*OH*OW=32,将这个维度划分到warp维度,由于一个数据分块中有8个warp,因此每个warp需要循环4次就可以完成计算;将Ic维度划分到线程维度,一个warp中的32线程对应Ic=32,经过这样的分配,一个线程一次循环会根据式(2)完成一个[4(H),4(W)]到[4(α),4(α)]的变换,为了方便矩阵乘的数据读取,将α维度放在最外层形成批量矩阵乘矩阵乘数量维度,此时经过式(2)会形成[16(α2),32(m),32(k=Ic)]的变换后的数据(为了方便矩阵乘的表示,用k代替了Ic进行表示,两者等价)。
(2)卷积核数据转换
在实际执行Resnet50模型图像推理的过程中,卷积核数据是不会变化的,因此这部分可以放在实际执行推理过程前的准备阶段,在CPU端完成卷积核数据的转换,在CPU端转换完成后将卷积核数据复制到GPU端执行真正的推理,本部分给出所需要的卷积核数据的排列形式。
原始卷积核的输入数据排列为[kh,kw,Ic,Oc],在Winograd算法中先将卷积核数据经过式(3)和式(4)变成[α,α,Ic,Oc]的分布,其中α=m+r-1表示一个卷积核tile经过式(2)和式(3)计算完成后尺寸,最左侧的两个α维度会变成批量矩阵乘中的矩阵乘数量,即共有α2个矩阵进行矩阵乘,与图片数据转换中一样,这里的α为4,因此转换之后的卷积核数据为[4(α),4(α),128(Ic),128(Oc)]。
为了方便批量矩阵乘阶段的计算,本发明修改了卷积核的排列顺序,由前述可知转换后的卷积核矩阵为[4(α),4(α),128(Ic),128(Oc)],对这个矩阵进行变换,将Oc=128拆分为O*o=2*64,将Ic=128拆分为I*i=4*32,再变换顺序形成如下矩阵[2(O),4(I),4(α),4(α),64(o),32(i)]。将O=2划分到数据分块的维度,将I=4划分到一个数据分块内部的大循环位置,那么一次循环内部所需要的数据缩减为[4(α),4(α),64(o),32(i)],将α维度放在最外层形成批量矩阵乘矩阵乘数量维度,此时[4(α),4(α),64(o),32(i)]会形成[16(α2),64(n=o),32(k=i)]的变换后的数据(为了方便矩阵乘的表示,用n代替了o进行表示,两者等价,同理用k代替了i进行表示)。
(3)批量矩阵乘
在前述两个环节,图片数据以及卷积核数据转换计算完成后,会得到两个矩阵,这一部分需要针对这两个部分进行批量矩阵乘,其中关于图片数据的矩阵为M[16(α2),32(m),32(k)],关于卷积核数据的矩阵为N[16(α2),64(n),32(k)],最左侧的两个α维度会变成批量矩阵乘中的矩阵乘数量,即共有α2=16个矩阵进行矩阵乘,其中每一个矩阵乘为[32(m),32(k)][64(n),32(k)]=[32(m),64(n)]。
在这一部分,本发明提供通过int8精度的Tensorcore实现的矩阵乘方法,其中mma的矩阵乘形状即一个warp一次指令可以完成的矩阵乘形状为[16(mi),32(ki)][8(ni),32(ki)]=[16(mi),8(ni)]。结合需要计算的矩阵乘形状,则一个warp在mma的形状mi-ni-ki为16-8-32时,为完成[32(m),64(n)]的矩阵乘需要2*8共16次mma指令。将α2=16维度划分到warp维度,由于一个数据分块内部有8个warp,因此一个warp需要完成两个矩阵乘的计算。
在所有的矩阵乘计算完成后,一个数据分块内部得到的矩阵乘结果为[16(α2),32(m),64(n)]。
(4)图片数据逆变换
在矩阵乘部分计算完成后,得到的图片数据分布为(α,α,P,Oc),经过式(7)的排列变换,图片数据分布会变为(P,Oc,α,α),随后根据式(8)将图片的数据格式由(P,Oc,α,α)的分布变为(N,H,W,O c)的分布,此时便完成了整个卷积过程的计算。
具体到一个数据分块中,由批量矩阵乘可得到[16(α2),32(m),64(n)]的结果,根据式(7)的排列变换可得[2(H),2(W),32(m),64(n=Oc)],再由图片数据前变换可知m=N*OH*OW=32是由N,OH,OW三个维度组成的,将m维度展开同时更换一下H以及W维度的排列顺序便得到矩阵[8(N),2(OH),2(OW),2(H),2(W),64(Oc)],最后将这个结果矩阵写回全局内存便完成了整个算法的计算。
将上述计算过程放在CUDA编程上进行实现,将N维度划分到warp维度,将OH*OW=4放在大循环维度,由于一个warp中有32线程,则每个线程小循环两次便可以达到0c=64这个维度,每个线程需要完成大循环以及小循环共8次[4(α),4(α)]到[2(H),2(W)]的转换。
在进一步的实施例中,本发明采用Tensorcore算法进行图片数据转换项和卷积核数据转换项之间的矩阵乘运算,包括:采用形状为16x8x32的矩阵进行图片数据转换项和卷积核数据转换项之间的矩阵乘运算;其中,采用形状为16x8x32的矩阵的数据精度为int8;对所有数据分块中的图片数据转换项和卷积核数据转换项采用形状为16x8x32,数据精度为int8的矩阵进行矩阵乘运算的结果进行累加,获得图片卷积结果。
在上述方法中,本发明针对Resnet50中第二组残差结构的3*3卷积,通过CUDA程序实现了在int8数据类型下的Winograd算法,减少了乘法计算量,同时在算法中批量矩阵乘部分增加Tensorcore实现,可以在二维卷积计算方面实现更快的性能以缩减Resnet50模型在实际推理过程中的延迟。
如图4所示,本发明的另一方面还提出了一种图像处理系统300,其特征在于,包括:
预运算模块301,配置用于对所述数据分块进行图片数据转换和卷积核数据转换,分别获得图片数据转换项和卷积核数据转换项;
加速计算模块302,配置用于通过GPU加速单元加速所述数据分块中的所述图片数据转换项和所述卷积核数据转换项的卷积运算,并对所述卷积运算的结果进行逆变换得到计算结果。
如图5所示,本发明的再一方面还提出了一种计算机设备,其特征在于,包括:
至少一个处理器401;以及
存储器402,所述存储器402存储有可在所述处理器401上运行的计算机指令,所述指令由所述处理器401执行时实现上述实施方式中任意一项所述方法的步骤。
此外,基于上述各实施例中的图片卷积运算方法,本发明提出了一种图片卷积运算装置。图4为本发明的图片卷积运算装置的结构示意图。如图4所示,本发明提出的图片卷积运算装置包括:至少一个处理模块100;以及存储模块200;其中,存储模块200中存储有可运行的计算机程序,计算机程序被执行时用于实现上述各实施例中的一种图片卷积运算方法的步骤,包括:
对所述数据分块进行图片数据转换和卷积核数据转换,分别获得图片数据转换项和卷积核数据转换项;
通过GPU加速单元加速所述数据分块中的所述图片数据转换项和所述卷积核数据转换项的卷积运算,并对所述卷积运算的结果进行逆变换得到计算结果。
此外,如图6所示,基于上述各实施例中的图片卷积运算方法,本发明提出一种存储介质500,存储介质中存储有可运行的计算机程序502,计算机程序502被执行时用于实现上述各实施例中的一种图片卷积运算方法的步骤。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种加速图像处理的方法,其特征在于,所述方法包括:对获得的图片数据划分数据分块,并在每个数据分块的卷积运算时执行以下步骤:
对所述数据分块进行图片数据转换和卷积核数据转换,分别获得图片数据转换项和卷积核数据转换项;以及
通过GPU加速单元加速所述数据分块中的所述图片数据转换项和所述卷积核数据转换项的卷积运算,并对所述卷积运算的结果进行逆变换得到计算结果。
2.如权利要求1所述的方法,其特征在于,所述对所述数据分块进行图片数据转换和卷积核数据转换包括:
指定winograds算法的输入矩阵的规格,并根据输入矩阵的规格确定图片数据的矩阵大小以及卷积核的矩阵大小。
3.如权利要求2所述的方法,其特征在于,所述分别获得图片数据转换项和卷积核数据转换项包括:
根据winograds算法的输入矩阵规格,在CPU中对卷积核数据进行转换获得所述卷积核数据转换项并保存。
4.如权利要求3所述的方法,其特征在于,所述分别获得图片数据转换项和卷积核数据转换项包括:
根据winograds算法的输入矩阵规格,在GPU中对所述图片数据进行转换获得所述图片数据转换项。
5.如权利要求4所述的方法,其特征在于,所述通过GPU加速单元加速所述数据分块中的所述图片数据转换项和所述卷积核数据转换项的卷积运算包括:
获取在CPU中计算得到的所述卷积核数据转换项和所述图片数据转换项;
将所述图片数据转换项和所述卷积核数据转换项通过GPU加速单元进行批量卷积计算。
6.如权利要求5所述的方法,其特征在于,所述图片数据转换项和所述卷积核数据转换数据类型为8位整型数据。
7.如权利要求1所述的方法,其特征在于,所述GPU加速单元为tensorcore。
8.一种加速图像处理系统,其特征在于,包括:
预运算模块,配置用于对所述数据分块进行图片数据转换和卷积核数据转换,分别获得图片数据转换项和卷积核数据转换项;
加速计算模块,配置用于通过GPU加速单元加速所述数据分块中的所述图片数据转换项和所述卷积核数据转换项的卷积运算,并对所述卷积运算的结果进行逆变换得到计算结果。
9.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现权利要求1-7任意一项所述方法的步骤。
10.一种存储介质,其特征在于,所述存储介质中存储有可运行的计算机程序,所述计算机程序被执行时用于实现上述权利要求1-7任意一项所述的一种图片卷积运算方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110865745.4A CN113628093A (zh) | 2021-07-29 | 2021-07-29 | 一种加速图像处理的方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110865745.4A CN113628093A (zh) | 2021-07-29 | 2021-07-29 | 一种加速图像处理的方法、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113628093A true CN113628093A (zh) | 2021-11-09 |
Family
ID=78381662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110865745.4A Withdrawn CN113628093A (zh) | 2021-07-29 | 2021-07-29 | 一种加速图像处理的方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113628093A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115797228A (zh) * | 2023-01-30 | 2023-03-14 | 深圳市九天睿芯科技有限公司 | 一种图像处理装置、方法、芯片、电子设备及存储介质 |
-
2021
- 2021-07-29 CN CN202110865745.4A patent/CN113628093A/zh not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115797228A (zh) * | 2023-01-30 | 2023-03-14 | 深圳市九天睿芯科技有限公司 | 一种图像处理装置、方法、芯片、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108241890B (zh) | 一种可重构神经网络加速方法及架构 | |
CN108205701B (zh) | 一种执行卷积计算的系统及方法 | |
CN111667051B (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
EP4115342A1 (en) | Parallel computing scheme generation for neural networks | |
KR101788829B1 (ko) | 콘볼루션 신경망 컴퓨팅 장치 | |
CN107301456B (zh) | 基于向量处理器的深度神经网络多核加速实现方法 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN111859270B (zh) | 一种神经网络的卷积方法和装置 | |
CN112200300B (zh) | 卷积神经网络运算方法及装置 | |
US20220058486A1 (en) | System and method of accelerating execution of a neural network | |
CN107491416B (zh) | 适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置 | |
Zlateski et al. | ZNNi: maximizing the inference throughput of 3D convolutional networks on CPUs and GPUs | |
TW202123093A (zh) | 實行卷積運算的系統及方法 | |
CN111539526B (zh) | 一种神经网络卷积的方法和设备 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
CN114781629B (zh) | 基于并行复用的卷积神经网络的硬件加速器及并行复用方法 | |
WO2022121474A1 (zh) | 优化神经网络卷积残差结构的方法、系统、设备及介质 | |
CN112084037A (zh) | 神经网络的内存分配方法及装置 | |
CN111949932A (zh) | 一种在TVM中实现TensorCore卷积计算的方法及系统 | |
CN108470211B (zh) | 一种卷积计算的实现方法、设备和计算机存储介质 | |
CN112395092A (zh) | 数据处理方法及人工智能处理器 | |
WO2023065983A1 (zh) | 计算装置、神经网络处理设备、芯片及处理数据的方法 | |
CN110414672B (zh) | 卷积运算方法、装置及系统 | |
CN113628093A (zh) | 一种加速图像处理的方法、系统、设备及存储介质 | |
KR20200043617A (ko) | 고효율 연산 처리를 위한 인공 신경망 모듈 및 이의 스케쥴링 방법 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20211109 |