CN110930290B - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN110930290B CN110930290B CN201911107813.XA CN201911107813A CN110930290B CN 110930290 B CN110930290 B CN 110930290B CN 201911107813 A CN201911107813 A CN 201911107813A CN 110930290 B CN110930290 B CN 110930290B
- Authority
- CN
- China
- Prior art keywords
- convolution
- data
- characteristic data
- parallel
- computing units
- 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
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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本发明实施例公开了一种数据处理方法及装置,可以应用于FPGA,获取待处理图像的多个特征数据,分别基于多个卷积核对每个特征数据进行卷积运算,得到特征数据对应的卷积结果,这里的卷积运算可以并行执行,这样不同的卷积运算可以同时执行,相比于顺序执行各个卷积运算而言,可以减少数据处理所消耗的时长,提高数据处理效率,提高数据处理的实时性。
Description
技术领域
本发明涉及信息处理技术领域,特别是涉及一种数据处理方法及装置。
背景技术
深度学习(Deep Learning,DL)是机器学习(Machine Learning,ML)领域的一个重要研究方向,其最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据,使机器学习更接近人工智能。
进行深度学习的主流硬件主要基于中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和现场可编程门阵列(FieldProgrammable Gate Array,FPGA),其中GPU的功耗较大,CPU和FPGA的功耗较小,但是目前的深度学习方法中,利用CPU和FPGA进行数据处理的实时性较差。
然而一些场景下对数据处理的实时性要求较高,例如其对于自动驾驶领域,需要对数据进行实时处理,才能快速得到车辆驾驶策略。如何提高数据处理的实时性,是目前数据处理领域的重大问题。
发明内容
为解决上述技术问题,本申请实施例提供一种数据处理方法和装置,通过多个计算单元并行进行数据处理,提高了数据处理的实时性。
本申请实施例提供一种数据处理方法,应用于现场可编程门阵列FPGA,所述方法包括:
获取待处理图像的多个特征数据;
分别对每个所述特征数据进行卷积运算,得到所述特征数据对应的卷积结果,至少两个所述卷积运算并行执行。
可选的,所述特征数据具有行属性,则对至少两个具有不同行属性的特征数据进行的卷积运算并行执行。
可选的,所述特征数据具有列属性,则对至少两个具有不同列属性的特征数据进行的卷积运算并行执行。
可选的,所述特征数据具有多个输出通道,则对所述特征数据的至少两个不同输出通道的卷积运算并行执行。
可选的,所述特征数据具有多个输入通道,则对所述特征数据的至少两个不同输入通道的卷积运算并行执行。
可选的,对不同卷积参数的至少两个行或列对应的卷积运算并行执行。
可选的,所述卷积运算包括基于不同尺寸的卷积核的多个卷积运算,则对所述至少两个尺寸的卷积核对应的卷积运算并行执行。
本申请实施例还提供了一种数据处理装置,应用于现场可编程门阵列FPGA,所述装置包括:
数据获取单元,用于获取待处理图像的多个特征数据;
运算单元,用于分别对每个所述特征数据进行卷积运算,得到所述特征数据对应的卷积结果,至少两个所述卷积运算并行执行。
可选的,所述特征数据具有行属性,则对至少两个具有不同行属性的特征数据进行的卷积运算并行执行。
可选的,所述特征数据具有列属性,则对至少两个具有不同列属性的特征数据进行的卷积运算并行执行。
可选的,所述特征数据具有多个输出通道,则对所述特征数据的至少两个不同输出通道的卷积运算并行执行。
可选的,所述特征数据具有多个输入通道,则对所述特征数据的至少两个不同输入通道的卷积运算并行执行。
可选的,对不同卷积参数的至少两个行或列对应的卷积运算并行执行。
可选的,所述卷积运算包括基于不同尺寸的卷积核的多个卷积运算,则对所述至少两个尺寸的卷积核对应的卷积运算并行执行。
本申请实施例还提供了一种现场可编程门阵列FPGA,包括:处理器、存储器、系统总线;
所述处理器以及所述存储器通过所述系统总线相连;
所述存储器用于存储一个或多个程序,所述一个或多个程序包括指令,所述指令当被所述处理器执行时使所述处理器执行所述的数据处理方法。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行所述的数据处理方法。
本申请实施例提供了一种数据处理方法及装置,可以应用于FPGA,获取待处理图像的多个特征数据,分别基于多个卷积核对每个特征数据进行卷积运算,得到特征数据对应的卷积结果,这里的卷积运算可以并行执行,这样不同的卷积运算可以同时执行,相比于顺序执行各个卷积运算而言,可以减少数据处理所消耗的时长,提高数据处理效率,提高数据处理的实时性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据处理方法的流程图;
图2为本申请实施例提供的一种FPGA的结构示意图;
图3为本申请实施例提供的第一缓存中的特征数据的存储示意图;
图4为本申请实施例提供的第二缓存中的第一卷积核对应的卷积参数的存储示意图;
图5为本申请实施例提供的第三缓存中的特征数据的存储示意图;
图6为本申请实施例提供的第二缓存中第二卷积核对应的卷积参数的存储示意图;
图7为本申请实施例提供的一种数据处理装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
正如背景技术中所说,目前进行深度学习的主流硬件基于CPU、GPU和FPGA,其中GPU的功耗较大,CPU和FPGA的功耗较小,但是目前的深度学习方法中,利用CPU和FPGA进行数据处理的实时性较差。然而车载平台对数据处理的实时性要求较高,例如其对于自动驾驶领域,需要对数据进行实时处理,才能快速得到车辆驾驶策略。因此,如何提高数据处理的实时性,是目前数据处理领域的重大问题。
发明人经过研究发现,CPU和FPGA进行数据处理的实时性较差的原因在于,CPU顺序执行指令的特点,使其在面对大计算量的深度学习任务时性能较低,而无法满足实时的图像处理功能,FGPA内部集成大量硬件定点乘累加器,从而进行定点运算,本领域技术人员通常不利用FGPA进行深度学习的运算。而事实上,定点运算可以保持和浮点运算同样的准确性,在图像分类等多种应用中,只要INT8或更低定点计算精度即可实现可接受的准确性。因此FPGA可以作为车载平台的处理芯片,可以执行深度学习任务。具体的,本申请实施例中的深度学习为卷积神经网络。
为了提高数据处理的实时性,本申请实施例提供了一种数据处理方法及装置,可以应用于FPGA,获取待处理图像的多个特征数据,分别基于多个卷积核对每个特征数据进行卷积运算,得到特征数据对应的卷积结果,这里的卷积运算可以并行执行,这样不同的卷积运算可以同时执行,相比于顺序执行各个卷积运算而言,可以减少数据处理所消耗的时长,提高数据处理效率,提高数据处理的实时性。
下面结合附图,通过实施例来详细说明本发明实施例中一种数据处理方法的具体实现方式。
参考图1所示,为本申请实施例提供的一种数据处理方法的流程图,该方法应用于FPGA,具体的,可以包括以下步骤。
S101,获取待处理图像的多个特征数据。
本申请实施例中,待处理图像可以是通过相机进行拍摄得到的一帧图像,也可以是通过摄像头拍摄得到的视频中的一帧图像,待处理图像可以是实时拍摄得到的路况图像,也可以是实时拍摄得到的其他图像。
在拍摄得到待处理图像后,待处理图像的图像数据可以存储在片外动态存储器中,FPGA从片外动态存储器中获取到待处理图像的图像数据。待处理图像的图像数据可以包括像素点颜色信息等,图像数据可以具有多个数据通道,例如彩色的待处理图像的颜色数据可以有红(Red,R)绿(Green,G)蓝(Blue,B)三通道,不同通道可以有不同的颜色值,共同构成待处理图像的颜色特性。例如,待处理图像的某一像素点的RGB三通道的颜色值分别为(50,205,50),表示该像素点为绿色。当然,待处理图像的图像数据也可以具有更多的数据通道,体现待处理图像的多个方面的特性。
FPGA可以根据网络结构对待处理图像的图像数据的像素结构进行,得到待处理图像的多个特征数据,例如对于卷积核尺寸为3*3的卷积网络,待处理图像的多个特征数据可以为三行三列的矩阵数据,此时某一像素点的特征数据包括该像素点的图像数据以及该像素点周围的其他像素点的图像数据,该像素点周围的其他像素点可以是基于卷积核尺寸进行填充得到的。
待处理图像的多个特征数据可以存储在FPGA的第一缓存(fm_buffer3*3_0)中。其中,FPGA内部使用RAM18E1作为最小的块存储单元,作为第一缓存,每个RAM18E1的宽度为36bit,深度为512。同时考虑FPGA内部实现int8乘法的效率是浮点乘法的4倍,并且定点计算不会显著降低卷积神经网络的准确性,因此特征值可以在FPGA内部都以8bit位宽方式存储,相邻的4个数据组成1个32bit数组存放在RAM18E1中,每个RAM18E1最多能存储4*512个特征数据。
在需要进行数据处理时,FPGA可以从第一缓存中读取待处理图像的多个特征数据。举例来说,第一缓存由24个RAM18E1构成,这样一个时钟周期内FPGA可以获取到96个特征数据。
具体的,获取的待处理图像的多个特征数据可以是待处理图像的所有像素点的特征数据,也可以是待处理图像的部分像素点的特征数据,例如可以是待处理图像中某一行像素点的特征数据,或者是待处理图像的某一列像素点的特征数据。可以理解的是,若对应卷积核尺寸为3*3的卷积网络,则待处理图像的某一像素点的特征数据与该像素点本身的数据有关,也与该像素点周围的其他像素点的数据有关。
S102,分别对每个特征数据进行卷积运算,得到特征数据对应的卷积结果,至少两个卷积运算并行执行。
本申请实施例中,FPGA可以基于卷积神经网络对图像的特征数据进行处理,卷积神经网络可以包括输入层、卷积层、池化层、全连接层和输出层,其中输入层用于输入特征数据;卷积层用于对输入数据进行特征提取,其中可以包括多个卷积核,卷积核可以对应卷积参数,卷积参数可以为组成卷积核的每个元素对应的一个权重和一个偏差值,卷积层基于特征数据和卷积参数进行乘加运算,相当于对特征数据进行特征提取,运算结果即为特征提取的结果;池化层用于特征选择和信息过滤;输出层用于数据输出。
本申请实施例主要是对卷积层的卷积运算方式进行优化,FPGA可以对待处理图像的特征数据进行卷积运算,得到特征数据的卷积结果,从而实现对待处理图像的特征提取,这些卷积运算中的至少两个可以并行执行,这样可以提高卷积运算效率,提高数据处理的实时性。
具体的,特征数据可以对应多个通道,则特征数据可以包括多个输入通道的通道数据,通常来说,同一待处理图像的各个特征数据的输入通道相同,基于卷积运算,可以计算得到特征数据的各个输入通道的卷积结果。根据实际需要,可以为特征数据设置输出通道,通常来说,同一待处理图像的各个特征数据的输出通道也相同。对于每个输出通道,可以对应有各个输入通道的卷积参数,这样可以根据各个输入通道的通道数据和卷积参数,计算得到该特征数据的至少一个输出通道的值,作为特征数据的输出结果。
其中,卷积参数可以存储在第二缓存(wt_buffer3*3_0)中,其中RAM18E1作为第二缓存,卷积参数可以在FPGA内部都以8bit位宽方式存储,相邻的4个数据组成1个32bit数组存放在RAM18E1中,每个RAM18E1最多能存储4*512个卷积参数。在需要进行数据处理时,FPGA可以从第二缓存中读取待处理图像的多个卷积参数。举例来说,每个第二缓存由12个RAM18E1构成,这样一个时钟周期内FPGA可以获取到48个卷积参数。
下面对第一输出通道的输出结果的计算过程进行举例说明。某特征数据的第一输入通道的通道数据为第二输入通道的通道数据为/>第三输入通道的通道数据为/>而对于该特征数据的第一输出通道的输出结果而言,第一输入通道对应的卷积权重为/>第二输入通道对应的卷积权重为/>第三输入通道对应的卷积权重为/>则第一输出通道的输出结果为通道数据和卷积权重的卷积运算结果,参考下式:A00*X00+A01*X01+A02*X02+A10*X10+A11*X11+A12*X12+A20*X20+A21*X21+A22*X22+B00*Y00+B01*Y01+B02*Y02+B10*Y10+B11*Y11+B12*Y12+B20*Y20+B21*Y21+B22*Y22+C00*Z00+C01*Z01+C02*Z02+C10*Z10+C11*Z11+C12*Z12+C20*Z20+C21*Z21+C22*Z22。
也就是说,对于第一输出通道的卷积运算包括27次相乘运算以及27个结果的相加运算,如果是串行运算,需要顺序执行27次乘加运算,花费较长的时间,而顺序对于多个输出通道进行卷积运算,则需要花费更长的时间,如果顺序对不同的特征数据的多个输出通道进行卷积运算,花费的时间成倍增长。因此为了节省运算时间,可以对这些相乘运算和相加运算进行整合,使其中的至少两个卷积运算并行执行。
作为一种可能的实施方式,可以对卷积参数进行展开,对卷积参数的至少两个行或列对应的卷积运算并行执行,具体实施时,FPGA中可以有多个第一计算单元,第一计算单元并行执行卷积参数的多行或多列对应的卷积运算,实现卷积运算的并行执行。
对于卷积核尺寸为3*3的卷积运算来说,计算单元的数量可以是3个倍数。举例来说,可以利用3个第一计算单元,每个第一计算单元对应卷积权重的一行数据,这样3个第一计算单元单次运算可以得到一个卷积权重对应的卷积结果,分为3次运算即可得到3个卷积权重对应的卷积结果,对各个卷积结果求和,从而得到第一输出通道的输出结果。以通过3个第一计算单元分别对应第一输入通道对应的卷积权重的三行数据为例,3个第一计算单元可以分别计算以下3个卷积结果:A00*X00+A01*X01+A02*X02,A10*X10+A11*X11+A12*X12,A20*X20+A21*X21+A22*X22。
这样,每个第一计算单元每次可以执行3个乘加运算,通过三次运算可以得到第一输出通道的输出结果,即对于单个第一计算单元,执行3*3次乘加运算,可以得到第一输出通道的输出结果,相比于顺序执行的27次乘加运算而言,节省了运算时间。
作为另一种可能的实施方式,可以对特征数据的输入通道展开,对特征数据的至少两个不同输入通道的卷积运算并行执行,具体实施时,FPGA中可以有多个第二计算单元,第二计算单元并行执行多个输入通道对应的卷积运算,实现卷积运算的并行执行。这里的第二计算单元的数量可以根据实际情况而定,第二计算单元的数量越多,计算速度越快,需要的计算资源和缓存资源也越多。
举例来说,可以利用3个第二计算单元,每个第二计算单元对应一个输入通道,这样3个第二计算单元可以计算得到3个输入通道对应的卷积结果,将3个第二计算单元得到的卷积结果相加,可得到第一输出通道的输出结果。以3个第二计算单元分别对应以上3个输入通道为例,其分别计算以下3个卷积结果:A00*X00+A01*X01+A02*X02+A10*X10+A11*X11+A12*X12+A20*X20+A21*X21+A22*X22,B00*Y00+B01*Y01+B02*Y02+B10*Y10+B11*Y11+B12*Y12+B20*Y20+B21*Y21+B22*Y22,C00*Z00+C01*Z01+C02*Z02+C10*Z10+C11*Z11+C12*Z12+C20*Z20+C21*Z21+C22*Z22。
每个第二计算单元每次可以执行9个乘加运算,进行一次卷积运算即可得到第一输出通道的输出结果,相比于顺序执行的27次乘加运算而言,节省了运算时间。
当然,第二计算单元可以包括多个第一计算单元,这样可以进一步节省运算时间,对FPGA的计算资源和缓存资源要求也进一步提高。例如一个第二计算单元可以包括3个第一计算单元,则第二计算单元每次执行的9个乘加运算可以并行执行,这样存在9个第一计算单元,每个第一计算单元执行3个乘加运算,进一步节省了运算时间。
作为又一种可能的实施方式,特征数据可以对应多个输出通道,则还可以对特征数据进行展开,对特征数据的至少两个不同输出通道的卷积运算并行执行,具体实施时,FPGA中可以有多个第三计算单元,第三计算单元并行执行多个输出通道的卷积运算,实现卷积运算的并行执行。这里的第三计算单元的数量可以根据实际情况而定,第三计算单元的数量越过,计算速度越快,需要的计算资源的缓存资源也越多。
举例来说,特征数据可以包括4个输出通道,则可以利用4个第三计算单元,每个第三计算单元对应一个输出通道,这样4个第三计算单元可以计算得到4个输出通道对应的输出结果,第三计算单元计算得到输出结果的方式参考上述说明。当然,第三计算单元可以包括多个第二计算单元,用于进一步节省运算时间,对FPGA的计算资源和缓存资源要求也进一步提高。
作为再一种可能的实施方式,若获取到的待处理图像的特征数据为多个,则特征数据可以为同一行的数据,也可以为同一列的数据,还可以包括不同行不同列的数据。
若特征数据为同一行的数据,则特征数据具有列属性,则可以对特征数据进行列展开,对至少两个具有不同列属性的特征数据进行的卷积运算并行执行,具体实施时,FPGA中可以有多个第四计算单元,第四计算单元并行执行具有多个列属性的特征数据,实现卷积运算的并行执行。第四计算单元可以包括多个第三计算单元,用于进一步节省运算时间。
若特征数据为同一列的数据,则特征数据具有行属性,则可以对特征数据进行行展开,对至少两个具有不同行属性的特征数据进行的卷积运算并行执行。具体实施时,FPGA中可以有多个第五计算单元,第五计算单元并行执行具有多个行属性的特征数据,实现卷积运算的并行执行。第五计算单元可以包括多个第三计算单元,用于进一步节省运算时间。
若特征数据包括不同行不同列的数据,则特征数据具有行属性和列属性,则可以对至少两个具有不同列属性的特征数据进行的卷积运算并行执行,或对至少两个具有不同行属性的特征数据进行的卷积运算并行执行。
以上对特征数据的卷积运算基于同一尺寸的卷积核,而实际操作中,对特征数据的卷积运算还可以包括基于不同尺寸的多个卷积核的多次卷积运算,例如,可以先基于第一卷积核对特征数据进行第一卷积运算,得到第一卷积结果,再基于第二卷积核对第一卷积结果进行第二卷积运算,得到第二卷积结果,例如在网络结构为mobileNet-v1_SSD时,第一卷积核的尺寸可以为3*3,第二卷积核的存储可以为1*1,第一卷积运算和第二卷积运算作为一次计算流水线。
并行执行卷积运算可以具体的,对至少两个不同尺寸的卷积核对应的卷积运算并行执行,例如第一卷积运算和第二卷积运算可以并行处理,具体实施时,可以利用两个计算单元分别执行第一卷积运算和第二卷积运算。
具体的,在基于第一卷积核对特征数据进行第一卷积运算之后,可以将第一卷积结果存储到第三缓存(fm_buffer1x1)中,这样基于第二卷积核对第一卷积结果进行第二卷积运算的过程,可以和后续的第一卷积运算并行执行。当然,还可以对第一卷积结果进行预处理,以满足第二卷积运算的网络结构,再将其存储到第三缓存中,以便对其执行第二卷积运算。
本申请实施例提供了一种数据处理方法,可以应用于FPGA,获取待处理图像的多个特征数据,分别基于多个卷积核对每个特征数据进行卷积运算,得到特征数据对应的卷积结果,这里的卷积运算可以并行执行,这样不同的卷积运算可以同时执行,相比于顺序执行各个卷积运算而言,可以减少数据处理所消耗的时长,提高数据处理效率,提高数据处理的实时性。
下面结合具体场景对本申请实施例提供的数据处理方法进行介绍。
参考图2所示,为一种FPGA的结构示意图,FPGA包括第一缓存单元(fm_buffer3x3_0)、第二缓存单元(wt_buffer)、第三缓存单元(fm_buffer1x1_0)、第四缓存单元(fm_buffer3x3_1)、第一计算模块(Conv3x3)和第二计算模块(Conv1x1),第一计算模块的卷积核尺寸为3x3,第二计算模块的卷积核尺寸为1x1的进行两次卷积运算。
FPGA可以从片外动态存储器(DDR4)中读取待处理图像的第一行的特征数据,并将第一行的特征数据存储到第一缓存中,其中第一行的特征数据为三行数据,第一行数据为0填充数据,第二行数据为待处理图像的第一行图像数据,第三行数据为待处理图像的第二行图像数据。
参考图3所示,为第一缓存中的特征数据的存储示意图,fm[ti][row][col]为特征数据,其中row为特征数据的行数,col为特征数据的列数,ti为特征数据的输入通道数,col总数为16,ti总数为48。
图中仅示出前16个输入通道的通道数据的存储位置,对一列的特征数据(fm_ram[0]),可以存储在不同深度的存储区域中,在深度为0,即地址(address)为0的存储区域中,存储有fm[0][n+0][0]、fm[1][n+0][0]、fm[2][n+0][0]、fm[3][n+0][0],n为填充数据的行数,即深度为0的存储区域中存储有第一列的特征数据的前4个输入通道的通道数据,同理,在深度为1的存储区域中,存储有第一列的特征数据的第5-8个输入通道的通道数据,以此类推。第一缓存的存储深度fm_depth=ti/4*col/8=24。
FPGA从片外动态存储器中读取卷积参数,卷积参数包括权重和偏差值,将卷积参数存储到第二缓存中。
参考图4所示,为第二缓存中的第一卷积核对应的卷积参数的存储示意图,wt[to][ti][i][j]为卷积核的权重,其中to为特征数据的输出通道数,ti为特征数据的输入通道数,i为卷积核行数,j为卷积核列数,to总数为4。
图中仅示出前16个输入通道的通道数据对应的权重的存储位置,对卷积核行数为1的权重(wt_ram[0]),可以存储在不同深度的存储区域中,在深度为0的存储区域中,存储有wt[0][0][0][0]、wt[0][1][0][0]、wt[0][2][0][0]、wt[0][3][0][0],即深度为0的存储区域中存储有卷积核行数为1且对应特征数据的前4个输入通道的的权重,同理,在深度为1的存储区域中,存储有卷积核行数为1且对应特征数据的第5-8个输入通道的权重,以此类推。第二缓存的存储深度wt_depth=ti/4*3*to/4=36。
基于以上第一缓存中的特征数据和第二缓存中的卷积参数,第一计算模块(Conv3x3)可以进行第一卷积计算。以第一计算模块对特征数据的输出通道的并行度为4,对特征数据的输入特征的并行度为4,对卷积核的展开并行度为3,对不同列属性的特征数据的并行度为8,则第一卷积计算的并行度为4*4*3*8=384,即在相同频率下,FPGA执行相同指令所需时间是CPU的1/384,进而完成实时加速。
在进行第一卷积计算后,可以得到第一卷积结果,对第一卷积结果进行结构调整,得到符合第二卷积核的网络结构的特征数据,将第一卷积结果处理得到的特征数据存储到第三缓存中。
参考图5所示,为第三缓存中的特征数据的存储示意图,fm[ti][row][col]为特征数据,其中row为特征数据的行数,col为特征数据的列数,ti为特征数据的输入通道数,col总数为16,ti总数为48。
图中仅示出第1-4、12-15、24-27、36-39个输入通道的通道数据的存储位置,对一列的特征数据(fm_ram[0]),可以存储在不同深度的存储区域中,在深度为0,即地址(address)为0的存储区域中,存储有fm[0][n+0][0]、fm[1][n+0][0]、fm[2][n+0][0]、fm[3][n+0][0],n为填充数据的行数,即深度为0的存储区域中存储有第一列的特征数据的前4个输入通道的通道数据,同理,在深度为1的存储区域中,存储有第一列的特征数据的第13-16个输入通道的通道数据,以此类推。第一缓存的存储深度fm_depth=ti/12*col/8=8。
需要说明的是,由于第一卷积结果是第一计算模块中的子模块并行进行的,则得到的第一卷积结果与执行卷积运算的子模块相关,由于对卷积核的展开并行度为3,图中所示为单一子模块输出的第一卷积结果,因此只包括部分特征数据。
参考图6所示,为第二缓存中第二卷积核对应的卷积参数的存储示意图,wt[to][ti][i][j]为卷积核的权重,其中to为特征数据的输出通道数,ti为特征数据的输入通道数,i为卷积核行数,j为卷积核列数,to总数为4。
图中仅示出第1-4、12-15、24-27、36-39个输入通道的通道数据对应的权重的存储位置,对卷积核行数为1的权重(wt_ram[0]),可以存储在不同深度的存储区域中,在深度为0的存储区域中,存储有wt[0][0][0][0]、wt[0][1][0][0]、wt[0][2][0][0]、wt[0][3][0][0],即深度为0的存储区域中存储有卷积核行数为1且对应特征数据的前4个输入通道的的权重,同理,在深度为1的存储区域中,存储有卷积核行数为1且对应特征数据的第13-16个输入通道的权重,以此类推。第二缓存的存储深度wt_depth=ti/12*to/4=4。
基于以上第一缓存中的特征数据和第二缓存中的卷积参数,第二计算模块(Conv3x3)可以进行第二卷积计算。以第一计算模块对特征数据的输出通道的并行度为4,对特征数据的输入特征的并行度为4,对不同列属性的特征数据的并行度为8。
在进行第二卷积计算后,可以得到第二卷积结果,对第二卷积结果进行结构调整,可以得到第二轮卷积运算的输入数据,存储到第四缓存中。
基于本申请实施例提供的一种数据处理方法,本申请实施例还提供了一种数据处理装置,参考图7所示为本申请实施例提供的一种数据处理装置的结构框图,该装置应用于现场可编程门阵列FPGA,可以包括:
数据获取单元110,用于获取待处理图像的多个特征数据;
运算单元120,用于分别对每个所述特征数据进行卷积运算,得到所述特征数据对应的卷积结果,至少两个所述卷积运算并行执行。
可选的,所述特征数据具有行属性,则对至少两个具有不同行属性的特征数据进行的卷积运算并行执行。
可选的,所述特征数据具有列属性,则对至少两个具有不同列属性的特征数据进行的卷积运算并行执行。
可选的,所述特征数据具有多个输出通道,则对所述特征数据的至少两个不同输出通道的卷积运算并行执行。
可选的,所述特征数据具有多个输入通道,则对所述特征数据的至少两个不同输入通道的卷积运算并行执行。
可选的,对不同卷积参数的至少两个行或列对应的卷积运算并行执行。
可选的,所述卷积运算包括基于不同尺寸的卷积核的多个卷积运算,则对所述至少两个尺寸的卷积核对应的卷积运算并行执行。
本申请实施例提供了一种数据处理装置,可以应用于FPGA,获取待处理图像的多个特征数据,分别基于多个卷积核对每个特征数据进行卷积运算,得到特征数据对应的卷积结果,这里的卷积运算可以并行执行,这样不同的卷积运算可以同时执行,相比于顺序执行各个卷积运算而言,可以减少数据处理所消耗的时长,提高数据处理效率,提高数据处理的实时性。
本申请实施例还提供了一种现场可编程门阵列FPGA,包括:处理器、存储器、系统总线;
所述处理器以及所述存储器通过所述系统总线相连;
所述存储器用于存储一个或多个程序,所述一个或多个程序包括指令,所述指令当被所述处理器执行时使所述处理器执行所述的数据处理方法。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行所述的数据处理方法。
本发明实施例中提到的“第一……”、“第一……”等名称中的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”等。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储器(英文:read-only memory,ROM)/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如路由器等网络通信设备)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的优选实施方式,并非用于限定本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种数据处理方法,其特征在于,应用于现场可编程门阵列FPGA,所述FPGA包括多个第四计算单元,所述第四计算单元包括多个第三计算单元,所述第三计算单元包括多个第二计算单元,所述第二计算单元包括多个第一计算单元,所述方法包括:
获取待处理图像的多个特征数据;所述特征数据具有多个输入通道,每个所述第二计算单元对应一个所述输入通道,所述特征数据具有多个输出通道,所述特征数据具有列属性;
利用多个所述第四计算单元对至少两个具有不同列属性的特征数据进行的卷积运算并行执行,利用多个所述第三计算单元对所述特征数据的至少两个不同输出通道的卷积运算并行执行,利用多个所述第二计算单元对所述特征数据的至少两个不同输入通道的卷积运算并行执行,利用多个所述第一计算单元对不同卷积参数的至少两个行或列对应的卷积运算并行执行,得到所述特征数据对应的卷积结果。
2.根据权利要求1所述的方法,其特征在于,所述FPGA包括多个第五计算单元,所述第五计算单元包括多个第三计算单元,所述特征数据具有行属性,则利用多个所述第五计算单元对至少两个具有不同行属性的特征数据进行的卷积运算并行执行。
3.根据权利要求1所述的方法,其特征在于,所述卷积运算包括基于不同尺寸的卷积核的多个卷积运算,则对所述至少两个尺寸的卷积核对应的卷积运算并行执行。
4.一种数据处理装置,其特征在于,应用于现场可编程门阵列FPGA,所述装置包括:
数据获取单元,用于获取待处理图像的多个特征数据;
运算单元,用于分别对每个所述特征数据进行卷积运算,得到所述特征数据对应的卷积结果,至少两个所述卷积运算并行执行;
所述运算单元包括多个第四计算单元,所述第四计算单元包括多个第三计算单元,所述第三计算单元包括多个第二计算单元,所述第二计算单元包括多个第一计算单元,所述特征数据具有多个输入通道,每个所述第二计算单元对应一个所述输入通道,所述特征数据具有多个输出通道,所述特征数据具有列属性;
所述第四计算单元,用于对至少两个具有不同列属性的特征数据进行的卷积运算并行执行;
所述第三计算单元,用于对所述特征数据的至少两个不同输出通道的卷积运算并行执行;
所述第二计算单元,用于对所述特征数据的至少两个不同输入通道的卷积运算并行执行;
所述第一计算单元,用于对不同卷积参数的至少两个行或列对应的卷积运算并行执行。
5.一种现场可编程门阵列FPGA,其特征在于,包括:处理器、存储器、系统总线;
所述处理器以及所述存储器通过所述系统总线相连;
所述存储器用于存储一个或多个程序,所述一个或多个程序包括指令,所述指令当被所述处理器执行时使所述处理器执行权利要求1-3任一项所述的数据处理方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行权利要求1-3任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911107813.XA CN110930290B (zh) | 2019-11-13 | 2019-11-13 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911107813.XA CN110930290B (zh) | 2019-11-13 | 2019-11-13 | 一种数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110930290A CN110930290A (zh) | 2020-03-27 |
CN110930290B true CN110930290B (zh) | 2023-07-07 |
Family
ID=69852835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911107813.XA Active CN110930290B (zh) | 2019-11-13 | 2019-11-13 | 一种数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110930290B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767243A (zh) * | 2020-06-09 | 2020-10-13 | 上海寒武纪信息科技有限公司 | 数据处理方法、相关设备及计算机可读介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4718091A (en) * | 1984-01-19 | 1988-01-05 | Hitachi, Ltd. | Multifunctional image processor |
CN107993186A (zh) * | 2017-12-14 | 2018-05-04 | 中国人民解放军国防科技大学 | 一种基于Winograd算法的3D CNN加速方法及系统 |
CN109086244A (zh) * | 2018-07-11 | 2018-12-25 | 中国人民解放军国防科技大学 | 一种基于向量处理器的矩阵卷积向量化实现方法 |
CN110084739A (zh) * | 2019-03-28 | 2019-08-02 | 东南大学 | 一种基于cnn的画质增强算法的fpga并行加速系统 |
CN110147252A (zh) * | 2019-04-28 | 2019-08-20 | 深兰科技(上海)有限公司 | 一种卷积神经网络的并行计算方法及装置 |
CN110222818A (zh) * | 2019-05-13 | 2019-09-10 | 西安交通大学 | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 |
JP2019164402A (ja) * | 2018-03-19 | 2019-09-26 | ヤフー株式会社 | 情報処理装置、情報処理方法、およびプログラム |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060200798A1 (en) * | 2005-01-03 | 2006-09-07 | The Regents Of The University Of California | Applications of discrete and geometric calculus |
US20160239706A1 (en) * | 2015-02-13 | 2016-08-18 | Qualcomm Incorporated | Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks |
WO2018121013A1 (en) * | 2016-12-29 | 2018-07-05 | Zhejiang Dahua Technology Co., Ltd. | Systems and methods for detecting objects in images |
CN106529517B (zh) * | 2016-12-30 | 2019-11-01 | 北京旷视科技有限公司 | 图像处理方法和图像处理设备 |
CN108268931B (zh) * | 2016-12-30 | 2022-10-25 | 华为技术有限公司 | 数据处理的方法、装置和系统 |
GB2566733B (en) * | 2017-09-25 | 2020-02-26 | Advanced Risc Mach Ltd | Performimg convolution operations in graphics texture mapping units |
CN110210610B (zh) * | 2018-03-27 | 2023-06-20 | 腾讯科技(深圳)有限公司 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
CN108765247B (zh) * | 2018-05-15 | 2023-01-10 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、存储介质及设备 |
CN110163215B (zh) * | 2018-06-08 | 2022-08-23 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、计算机可读介质及电子设备 |
CN109063825B (zh) * | 2018-08-01 | 2020-12-29 | 清华大学 | 卷积神经网络加速装置 |
CN109740732B (zh) * | 2018-12-27 | 2021-05-11 | 深圳云天励飞技术有限公司 | 神经网络处理器、卷积神经网络数据复用方法及相关设备 |
CN110211130A (zh) * | 2019-05-20 | 2019-09-06 | 上海联影智能医疗科技有限公司 | 图像分割方法、计算机设备和存储介质 |
-
2019
- 2019-11-13 CN CN201911107813.XA patent/CN110930290B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4718091A (en) * | 1984-01-19 | 1988-01-05 | Hitachi, Ltd. | Multifunctional image processor |
CN107993186A (zh) * | 2017-12-14 | 2018-05-04 | 中国人民解放军国防科技大学 | 一种基于Winograd算法的3D CNN加速方法及系统 |
JP2019164402A (ja) * | 2018-03-19 | 2019-09-26 | ヤフー株式会社 | 情報処理装置、情報処理方法、およびプログラム |
CN109086244A (zh) * | 2018-07-11 | 2018-12-25 | 中国人民解放军国防科技大学 | 一种基于向量处理器的矩阵卷积向量化实现方法 |
CN110084739A (zh) * | 2019-03-28 | 2019-08-02 | 东南大学 | 一种基于cnn的画质增强算法的fpga并行加速系统 |
CN110147252A (zh) * | 2019-04-28 | 2019-08-20 | 深兰科技(上海)有限公司 | 一种卷积神经网络的并行计算方法及装置 |
CN110222818A (zh) * | 2019-05-13 | 2019-09-10 | 西安交通大学 | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110930290A (zh) | 2020-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10394929B2 (en) | Adaptive execution engine for convolution computing systems | |
JP7329533B2 (ja) | 演算を加速するための方法および加速器装置 | |
CN107862650B (zh) | 加速计算二维图像cnn卷积的方法 | |
US11347964B2 (en) | Hardware circuit | |
KR20210036715A (ko) | 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크의 풀링을 처리하는 방법 | |
US10936943B2 (en) | Providing flexible matrix processors for performing neural network convolution in matrix-processor-based devices | |
US11915118B2 (en) | Method and apparatus for processing computation of zero value in processing of layers in neural network | |
EP3093757B1 (en) | Multi-dimensional sliding window operation for a vector processor | |
CN107103585B (zh) | 一种图像超分辨率系统 | |
CN107590811B (zh) | 基于场景分割的风景图像处理方法、装置及计算设备 | |
CN112183295A (zh) | 行人重识别方法、装置、计算机设备及存储介质 | |
JP2020107338A (ja) | ニューラルネットワークのコンボルーション演算を処理する方法及びその装置 | |
CN110930290B (zh) | 一种数据处理方法及装置 | |
CN109447239B (zh) | 一种基于arm的嵌入式卷积神经网络加速方法 | |
CN111967478B (zh) | 一种基于权重翻转的特征图重构方法、系统、存储介质及终端 | |
CN111027670B (zh) | 特征图处理方法、装置、电子设备及存储介质 | |
CN114677286A (zh) | 一种图像处理方法、装置、存储介质及终端设备 | |
KR20240058084A (ko) | 뉴럴 네트워크들에 대한 병렬 깊이별 프로세싱 아키텍처들 | |
CN112734673B (zh) | 一种基于多表达式融合的低照度图像增强方法及系统 | |
CN114998172A (zh) | 图像处理方法及相关系统 | |
CN115293978A (zh) | 卷积运算电路和方法、图像处理设备 | |
CN111831207B (zh) | 一种数据处理方法、装置及其设备 | |
CN113902088A (zh) | 神经网络结构搜索的方法、装置与系统 | |
US11682099B2 (en) | Hardware accelerator for integral image computation | |
US8666172B2 (en) | Providing multiple symmetrical filters |
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 |