一种数据处理方法及装置
技术领域
本发明涉及数据处理技术领域,更具体地,涉及一种数据处理方法及装置。
背景技术
随着人工智能在各种垂直细分领域的应用,人们对视频、音频等大规模且时间维度较长的数据处理的需求越来越大。
卷积神经网络具有良好的平移不变性,因此,通常采用基于卷积神经网络的算法来处理这种大规模时序数据。目前,在进行大规模时序数据的处理过程中,通常会存在冗余计算和冗余存储,这造成了计算资源和存储资源的浪费。
发明内容
有鉴于此,本发明实施例提供一种数据处理方法及装置,以使得卷积神经网络在执行时序数据处理任务时,避免卷积神经网络中的卷积层对部分数据的重复处理,从而减小卷积神经网络的计算量和存储。
第一方面,本发明实施例提供一种数据处理方法,所述方法包括:
第一卷积层接收连续图像帧的待处理数据;
响应于所述第一卷积层接收到的第一图像帧的待处理数据为非冗余数据,所述第一卷积层对所述第一图像帧的待处理数据进行处理,所述非冗余数据为所述第一卷积层尚未处理的所述待处理数据中的图像帧;
其中,所述第一卷积层为卷积神经网络中的一个卷积层,所述第一卷积层处理的特征图为N个图像帧沿纵向拼接后获得的,其中,N为大于等于2的整数。
在本发明实施例中,响应于第一卷积层接收到的第一图像帧的待处理数据为非冗余数据,所述第一卷积层对所述第一图像帧的待处理数据进行处理,其中,所述非冗余数据为所述第一卷积层尚未处理的所述待处理数据中的图像帧,由此,可以使得卷积神经网络在执行时序数据处理任务时,避免卷积神经网络中的卷积层对部分数据的重复处理,由此,可以减小卷积神经网络的计算量和存储。
进一步地,所述方法还包括:
根据所述第一卷积层读取的非冗余数据更新所述第一卷积层的数据缓存。
进一步地,所述根据所述第一卷积层读取的非冗余数据更新所述第一卷积层的数据缓存包括:
保留所述第一卷积层读取的非冗余数据和至少部分所述数据缓存中的原有数据。
进一步地,被保留的所述数据缓存中的原有数据的数据量根据所述第一卷积层的卷积核尺寸、所述第一卷积层对应的滑动步长和第二卷积层的非冗余数据的数据量确定,所述第二卷积层为第一卷积层的下一个相邻卷积层。
在本实施例中,第一卷积层的数据缓存的数据量远小于第一卷积层处理的特征图的数据量,且只缓存了冗余数据中用于非冗余数据计算的一部分数据,由此,本实施例的数据处理方法大大减小了卷积层的冗余存储,避免了存储资源的浪费。
进一步地,所述第一卷积层的非冗余数据的数据量根据第三卷积层的非冗余数据的数据量、所述第三卷积层对应的滑动步长和填充数据量确定,所述第三卷积层为所述第一卷积层的上一个相邻卷积层。
进一步地,所述卷积神经网络具有时间尺度上的平移不变性。
进一步地,所述第一卷积层对所述第一图像帧的待处理数据进行处理,具体为:
所述第一卷积层按照预定的数据粒度读取所述第一图像帧,所述预定的数据粒度小于所述第一图像帧的数据量,大于或等于执行所述第一卷积层对应的卷积运算所需的最小数据量;
执行所述第一卷积层的指令以处理所读取的所述第一图像帧。
在本实施例中,通过采用流水线的方式进行数据处理,进一步节约了存储资源,并减小了数据处理的时延。
进一步地,所述第一卷积层的缓存空间与所述预定的数据粒度匹配。
第二方面,本发明实施例提供一种数据处理装置,所述装置包括:
待处理数据接收单元,被配置为控制第一卷积层接收连续图像帧的待处理数据;
数据处理单元,被配置为响应于所述第一卷积层接收到的第一图像帧的待处理数据为非冗余数据,所述第一卷积层对所述第一图像帧的待处理数据进行处理,所述非冗余数据为所述第一卷积层尚未处理的所述待处理数据中的图像帧;
其中,所述第一卷积层为卷积神经网络中的一个卷积层,所述第一卷积层处理的特征图为N个图像帧沿纵向拼接后获得的,其中,N为大于等于2的整数。
第三方面,本发明实施例提供一种电子设备,包括:
多个处理核;以及
片上网络,被配置为交互所述多个处理核间的数据和外部数据;
所述多个处理核中的至少一个处理核执行如下操作:
第一卷积层接收连续图像帧的待处理数据;
响应于所述第一卷积层接收到的第一图像帧的待处理数据为非冗余数据,所述第一卷积层对所述第一图像帧的待处理数据进行处理,所述非冗余数据为所述第一卷积层尚未处理的所述待处理数据中的图像帧;
其中,所述第一卷积层为卷积神经网络中的一个卷积层,所述第一卷积层处理的特征图为N个图像帧沿纵向拼接后获得的,其中,N为大于等于2的整数。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行以实现如上所述的方法。
第五方面,本发明实施例提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如上项所述的方法。
在本发明实施例中,响应于第一卷积层接收到的第一图像帧的待处理数据为非冗余数据,所述第一卷积层对所述第一图像帧的待处理数据进行处理,其中,所述非冗余数据为所述第一卷积层尚未处理的所述待处理数据中的图像帧,由此,可以使得卷积神经网络在执行时序数据处理任务时,避免卷积神经网络中的卷积层对部分数据的重复处理,由此,可以减小卷积神经网络的计算量和存储。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是现有技术的数据处理方法的数据处理过程的示意图;
图2是本发明实施例的卷积神经网络中的冗余计算的示意图;
图3是本发明实施例的卷积层的缓存数据的示意图;
图4是本发明实施例的数据处理方法的流程图;
图5是本发明实施例的更新卷积层的数据缓存的示意图;
图6是本发明实施例的一种实现方式的数据处理方法的流程图;
图7是本发明实施例的一种实施方式的数据处理方法的处理过程示意图;
图8是本发明实施例的数据处理方法的VGG网络和原VGG网络的计算量的对比示意图;
图9是本发明实施例的数据处理方法的VGG网络和原VGG网络的缓存的对比示意图;
图10是本发明实施例的数据处理装置的示意图;
图11是本发明实施例的电子设备的示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,表示多个中的任意一个,而不能理解为指示或暗示相对重要性,也不代表顺序。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1是现有技术的数据处理方法的数据处理过程的示意图。如图1所示,在基于卷积神经网络的现有技术处理视频数据的过程中,会选取视频数据的连续几个图像帧组成卷积神经网络的单位输入数据。卷积神经网络有一个超参数:时间窗长度T。时间窗长度T用于描述一个周期的数据处理过程中需要综合处理连续多少帧的数据。假设时间窗长度T=4,则卷积神经网络在一个处理周期处理4帧数据,这4帧输入数据中可能包含一个待识别事件。如图1所示,第1图像帧-第4图像帧包含了待识别事件a。待识别事件a在第2图像帧开始发生,在第4图像帧结束。将第1图像帧-第4图像帧沿纵向进行拼接(非特征通道方向)可以组成一个单位输入数据11,在第1个处理周期,卷积神经网络1读取并处理单位输入数据11。也就是说,在第1个处理周期,卷积神经网络1获取第1图像帧-第4图像帧,并沿纵向依次处理第1图像帧-第4图像帧,以可以保持卷积神经网络的时间尺度上的平移不变性,也即卷积运算可以适应待识别事件在时间尺度上的平移。
第2图像帧-第5图像帧包含待识别事件b,其中,示例中待识别事件a和待识别事件b为同一个事件,容易理解,根据视频数据的不同,相邻的两个待识别事件可能相同,也可能不同,也可能存在一个时序数据的时间窗中不包含待识别事件的情况。将第2图像帧-第5图像帧沿纵向进行拼接可以组成一个单位输入数据12,在第2个处理周期,卷积神经网络1读取并处理单位输入数据12。也就是说,在第2个处理周期,卷积神经网络1获取第2图像帧-第5图像帧,并沿纵向依次处理第2图像帧-第5图像帧。
由此,容易看出,卷积神经网络1在处理待识别事件a和待识别事件b时,读取的单位输入数据11和单位输入数据12中均包括第2图像帧-第4图像帧,也即卷积神经网络1在分别对单位输入数据11和单位输入数据12进行处理时,重复处理了第2图像帧-第4图像帧,这带来了卷积计算的冗余计算,同时,也会带来一定量的存储冗余,从而造成了计算资源和存储资源的浪费。
基于卷积神经网络的算法可以处理视频数据、音频数据等大规模的且时间维度较长的时序数据,本发明实施例以处理视频数据为例进行描述。
图2是本发明实施例的卷积神经网络中的冗余计算的示意图。如图2所示,卷积神经网络包括多个卷积层,卷积层layer0的单位输入数据为特征图20,卷积层layer1的单位输入数据为特征图21,卷积层layer2的单位输入数据为特征图22。
本实施例以时间窗长度T=4为例进行介绍,但是,T=4不作为本实施例的限定,T可以为大于等于2的任意正整数。在第1个处理周期,卷积神经网络2开始处理视频数据2a,卷积层layer0读取视频数据的第1图像帧-第4图像帧并开始处理由第1图像帧-第4图像帧沿纵向拼接而成的特征图20。
在第2个处理周期,卷积层layer0读取视频数据的第5图像帧,卷积层layer0对应的特征图20为视频数据2a的第2图像帧-第5图像帧沿纵向拼接而成。其中,第2图像帧-第4图像帧为第1个处理周期和第2个处理周期的特征图20中所包含重复数据,这些重复数据也称为冗余数据,因为卷积层layer0在第1个处理周期已经处理过第2图像帧-第4图像帧,由此,虽然第2个处理周期对应的特征图20包括第2图像帧-第5图像帧,卷积层layer0可以只处理第5图像帧,即,仅读取和处理第5图像帧。容易理解,卷积层layer1在第2处理周期的单位输入数据(也即特征图21)为卷积层layer0处理的第2图像帧-5图像帧的数据,其中,卷积层layer1在该处理周期的非冗余数据为卷积层layer0处理第5图像帧的输出数据。
由此,在本实施例中,卷积神经网络在处理时间维度较长的时序数据时,避免了卷积神经网络中的卷积层对部分数据的重复处理,减小了卷积神经网络的计算量。容易理解,卷积层layer0在第m个处理周期的非冗余数据的数据量均为一个图像帧的数据量(m为大于1的整数)。
如图2所示,特征图20中的数据201为非冗余数据(例如在第2处理周期中读取的第5图像帧),特征图20中的数据202为冗余数据(例如在第2处理周期中,特征图20包含的第2图像帧-第4图像帧)。同理,其他卷积层也可以通过上述方式减小冗余计算。同时,由于在卷积神经网络中,卷积层的感受野不断扩大,冗余计算会逐渐减小,直至在卷积层layerN消失。其中,卷积层的感受野指该卷积层输出的特征图上的像素点在其输入特征图上映射区域的大小。
本实施例中的卷积神经网络中的各卷积层的非冗余数据的数据量(除第1处理周期)calyi满足公式(1):
其中,i为大于或等于0的整数,calyi为卷积层layeri的非冗余数据的数据量,padi为卷积层layeri的卷积核对应的在卷积上侧的填充,stridei为卷积层layeri的卷积滑动窗口的滑动步长,calyi+1为卷积层layeri+1的非冗余数据的数据量。其中,卷积层layer0的非冗余数据的数据量为视频数据中一个图像帧的数据量,由此,可以确定卷积神经网络中各卷积层的非冗余数据的数据量。
容易理解,在一个处理周期中,卷积层layeri的输出数据为该处理周期卷积层layeri+1的输入数据(也即卷积层layeri+1的非冗余数据)。因此,卷积层layeri+1的非冗余数据的数据量与卷积层layeri的非冗余数据的数据量calyi、卷积层layeri的卷积滑动窗口的滑动步长stridei以及卷积层layeri对应的填充padi有关。由此,卷积层layeri需要保存部分冗余数据(也即数据缓存中的原有数据)以保证卷积神经网络处理的准确性。例如,在卷积层layeri的卷积运算需要填充时,如果未缓存部分冗余数据,则需要在输入数据周围补零以进行卷积运算;在卷积层layeri的卷积运算不需要填充时,如果未缓存部分冗余数据,则会使得卷积层layeri不能处理全部的非冗余数据。为了保证视频数据的完整准确性,在本实施例中,卷积层layeri的数据缓存的数据量包括用于非冗余数据计算的部分冗余数据和卷积层layeri的非冗余数据的数据量。
如图2所示,卷积层layerN对应的单位输入数据(也即特征图2N)均为非冗余数据,容易理解,卷积层layerN之后的卷积层对应的单位输入数据也均为非冗余数据。因此,在卷积层layeri+1的非冗余数据的数据量大于或等于卷积层layeri+1的单位输入数据量(也即计算到卷积层layerN)时,不再使用公式(1)计算之后的卷积层的非冗余数据的数据量。
图3是本发明实施例的卷积层的缓存数据的示意图。如图3所示,卷积层layeri的非冗余数据的数据量为calyi,冗余数据的数据量为redi。卷积层layeri的输出数据为卷积层layeri+1的输入数据(也即layeri+1的非冗余数据),则在卷积层layeri+1的非冗余数据的数据量为calyi+1时,卷积层layeri的数据缓存的数据量为memyi。容易理解,卷积层layeri+1的非冗余数据的数据量calyi+1与卷积层layeri的非冗余数据的数据量、卷积层layeri的卷积滑动窗口的滑动步长以及卷积层layeri对应的填充有关。因此,卷积层layeri+1的非冗余数据的数据量calyi+1和卷积层layeri的数据缓存的数据量memyi满足公式(2):
memyi=(calyi+1-1)*stridei+kerneli-padi (2)
其中,padi为卷积层layeri的卷积核对应的在卷积上侧的填充,stridei为卷积层layeri的卷积滑动窗口的滑动步长,kerneli为卷积层layeri的卷积核的尺寸。由此,卷积层layeri的缓存空间可以根据数据缓存的数据量memyi配置。其中,(memyi-calyi)为卷积层layeri中的冗余存储(也即卷积层layeri的数据缓存中的原有数据的数据量)。结合公式(1)和公式(2)可以得出卷积层layeri中的冗余存储为:
(memyi-calyi)=kerneli-stridei
在本实施例中,卷积层layeri的数据缓存的数据量memyi远小于卷积层layeri的单位输入数据量,且只缓存了冗余数据redi中用于非冗余数据计算的一部分数据,由此,本实施例的数据处理方法大大减小了卷积层的冗余存储,避免了存储资源的浪费。
图4是本发明实施例的数据处理方法的流程图。如图4所示,本发明实施例的数据处理方法包括以下步骤:
步骤S100,第一卷积层接收连续图像帧的待处理数据。其中,待处理数据为时序数据,第一卷积层依次接收时序数据的图像帧。
步骤S200,响应于第一卷积层接收到的第一图像帧的待处理数据为非冗余数据,第一卷积层对第一图像帧的待处理数据进行处理。其中,非冗余数据为第一卷积层尚未处理的待处理数据中的图像帧。第一卷积层为卷积神经网络中的一个卷积层。第一卷积层处理的特征图为N个图像帧沿纵向拼接后获得的,其中,N为大于或等于2的整数。
例如,在视频数据处理任务中,时间窗长度为4,在第1处理周期中,响应于接收到的第一图像帧的待处理数据为非冗余数据,卷积神经网络中的卷积层依次对第一图像帧的待处理数据进行处理。其中,第一图像帧的待处理数据依次为视频数据中的第1图像帧-第4图像帧。在第2个处理周期中,响应于接收到的第一图像帧的待处理数据为非冗余数据,卷积神经网络中的卷积层依次对第一图像帧的待处理数据进行处理。其中,第一图像帧的待处理数据为第5图像帧的数据。容易理解,在第2个处理周期,卷积神经网络中的卷积层处理的特征图为第2图像帧-第5图像帧沿纵向拼接后获得的,并且,第2图像帧-第4图像帧的数据为冗余数据,第5图像帧的数据为非冗余数据。在本实施例中,处理一个时间窗的数据为一个处理周期。
在本实施例中,卷积神经网络中的卷积层只需要在开始的第1个处理周期完整运行一个时间窗长度为T的单位输入数据的卷积运算,在之后的周期中,只需要对当前处理周期读入的非冗余数据(也即卷积层在当前处理周期读入的尚未处理的待处理数据中的图像帧)进行卷积运算即可。容易理解,卷积神经网络中的第1个卷积层的接收的连续图像帧的待处理数据为原始视频数据,卷积神经网络中的第2个卷积层的接收的连续图像帧的待处理数据为第1个卷积层输出的连续图像帧。例如,在卷积神经网络处理视频数据时,时间窗长度为4。对于卷积神经网络中的第1个卷积层,在第1个处理周期,第1个卷积层对应的特征图由第1图像帧-第4图像帧沿纵向拼接而成,因此,需要对第1图像帧-第4图像帧的数据进行卷积运算;在2个处理周期,第1个卷积层对应的特征图由第2图像帧-第5图像帧沿纵向拼接而成。由于在第1个处理周期中,第1个卷积层已经对第2图像帧-第4图像帧的数据进行了卷积运算,因此,在第2个处理周期中,只需要对读取的第5图像帧的数据进行卷积运算即可。也即,第1个卷积层在第2个处理周期的读取的第一图像帧的待处理数据(也即第5图像帧的数据)为非冗余数据。由此,本实施例的数据处理方法在处理时间维度较长的时序数据时,大大节约了计算资源。容易理解,除第1个处理周期外,卷积神经网络中的卷积层在每个周期读取的数据量是相同的。
步骤S300,根据第一卷积层读取的非冗余数据更新第一卷积层的数据缓存。
图5是本发明实施例的更新卷积层的数据缓存的示意图。如图5所示,在第m个处理周期,在卷积层layeri的单位输入数据中,非冗余数据的数据量为calyi,冗余数据的数据量为redi。卷积层layeri的数据缓存包括非冗余数据51和一部分冗余数据52。其中,未被保留的冗余数据的数据量为redai。在卷积层layeri在完成对非冗余数据51的卷积运算后,也即在第m+1个处理周期,控制卷积层layeri将计算完的非冗余数据51作为第m+1个处理周期及之后部分周期的冗余数据51',以更新卷积层layeri的数据缓存。其中,冗余数据51'中的部分数据52'被保留在缓存数据中,其余数据不被保留。
在本实施例中,更新卷积层layeri的数据缓存具体为:在第m+1个处理周期,卷积层layeri保留至少部分数据缓存中的原有数据52'(也即第m个处理周期的数据缓存中的部分数据),并缓存在第m+1个处理周期中读取新的非冗余数据53。也就是说,在第m+1个处理周期,卷积层layeri的数据缓存包括在第m+1个处理周期读入的非冗余数据53以及卷积层layeri在第m个处理周期的数据缓存中的部分数据52'。由此,卷积神经网络中的各卷积层实现逐步更新对应的数据缓存。
在本实施例中,卷积层layeri的数据缓存的数据量memyi远小于卷积层layeri对应的特征图的数据量,且只缓存了冗余数据redi中的一部分数据,由此,本实施例的数据处理方法大大减小了卷积层的冗余存储,避免了存储资源的浪费。
在本发明实施例中,响应于第一卷积层接收到的第一图像帧的待处理数据为非冗余数据,第一卷积层对第一图像帧的待处理数据进行处理,其中,非冗余数据为第一卷积层尚未处理的所述待处理数据中的图像帧,由此,可以使得卷积神经网络在执行时序数据处理任务时,避免卷积神经网络中的卷积层对部分数据的重复处理,由此,可以减小卷积神经网络的计算量和存储。
图6是本发明实施例的一种实施方式的数据处理方法的流程图。在本实施方式中,控制卷积层采用流水线的方式读取并处理输入数据直至满足所述卷积层在当前周期的输入数据量。如图6所示,本实施方式的数据处理方法包括以下步骤:
步骤S210,控制第一卷积层读取第一图像帧。其中,第一图像帧为非冗余数据(第一卷积层尚未处理的待处理数据中的图像帧)。若第一卷积层为卷积神经网络中的第1个卷积层,则读取的第一图像帧为视频数据中的连续图像帧。若第一卷积层不是卷积神经网络中的第1个卷积层,则读取的第一图像帧为该第一卷积层的上一个相邻卷积层的输出数据。
步骤S220,判断读取的第一图像帧的数据量是否达到预定的数据粒度。其中,预定的数据粒度小于第一图像帧的数据量,大于或等于执行第一卷积层对应的卷积运算所需的最小数据量。响应于读取的第一图像帧的数据量未达到预定的数据粒度,执行步骤210。响应于读取的第一图像帧的数据量达到预定的数据粒度,执行步骤S230。
步骤S230,执行第一卷积层的卷积运算以处理所读取的第一图像帧的数据,并将处理结果输出至第二卷积层。其中,第二卷积层为第一卷积层的下一个相邻卷积层。
步骤S240,清除执行卷积运算时的数据缓存中与下一次卷积运算无关的数据。也就是说,在一次卷积运算完成后,需要清除数据缓存中与下次卷积运算无关的数据以节约存储资源。
步骤S250,判断当前周期已处理的数据量是否达到第一卷积层的非冗余数据的数据量。响应于已处理的数据量未达到第一卷积层的非冗余数据的数据量,执行步骤S210。响应于已处理的数据量达到第一卷积层的非冗余数据的数据量,执行步骤S260。
步骤S260,更新第一卷积层的数据缓存。
在本实施方式中,通过采用流水线的方式进行数据处理,进一步节约了存储资源,并减小了数据处理的时延。
图7是本发明实施例的一种实施方式的数据处理方法的处理过程示意图。在本实施方式中,以卷积核的大小为3*3、卷积核的移动步长为1,填充为0,预定的数据粒度为3*8为例。
如图7所示,假设卷积层layeri的单位输入数据量为8*8,通过上述公式(1)和公式(2)计算卷积层layeri的数据缓存的数据量memyi为6*8,卷积层layeri的非冗余数据的数据量calyi为4*8;卷积层layeri+1的非冗余数据的数据量calyi+1为4*6。在采用流水线的方式进行数据处理时,可以根据预定的数据粒度来配置对应的卷积层的缓存空间。如图7所示,则卷积层layeri的实际缓存的数据量pmemyi仅为3*8,由此,本实施方式进一步减小了存储资源。
在第m个处理周期中(m为大于1的整数),卷积层layeri的数据处理可以分为time1-0到time 1-3四步:
在time 1-0步,控制卷积层layeri执行卷积运算以处理数据缓存中的第4行-第6行的数据,将获取的数据输出至卷积层layeri+1中的非冗余数据区域中的最后一行(也即卷积层layeri+1的单位输入数据的第4行)。其中,卷积层layeri的数据缓存中的第5行和第6行数据为被保留的上一周期所缓存的数据,第4行数据为在当前周期读取的待处理数据。
在time 1-1步,控制卷积层layeri执行卷积运算以处理第3行-第5行的数据,将获取的数据输出至卷积层layeri+1中的非冗余数据区域中的倒数第二行(也即卷积层layeri+1的单位输入数据的第3行),并将第6行数据清除,以节约存储空间。
在time 1-2步,控制卷积层layeri执行卷积运算以处理第2行-第4行的数据,将获取的数据输出至卷积层layeri+1中的非冗余数据区域中的倒数第三行(也即卷积层layeri+1的单位输入数据的第2行)。并将第5行数据清除,以节约存储空间。此时,控制卷积层layeri+1执行卷积运算以处理对应的第2行-第4行的数据,将获取的数据输出至与之相邻的下一个卷积层。
在time 1-3步,控制卷积层layeri执行卷积运算以处理第1行-第3行的数据,将获取的数据输出至卷积层layeri+1中的非冗余数据区域中的倒数第四行(也即卷积层layeri+1的单位输入数据的第1行)。并将第4行数据清除,以节约存储空间。此时,控制卷积层layeri+1执行卷积运算以处理对应的第1行-第3行的数据,将获取的数据输出至与之相邻的下一个卷积层,并将第4行数据清除,以节约存储空间。
在time 1-3步之后,卷积层layeri和卷积层layeri+1均将当前周期的输入数据处理完毕,分别对对应的数据缓存进行更新。
通过计算可以获得卷积层layeri和layeri+1的冗余存储均为2行(kerneli-stridei=3-1=2)。如图7所示,在第m+1个处理周期中,在time 2-0步,卷积层layeri将上一个周期的第1行和第2行数据分别作为当前周期中的第6行数据和第5行数据。卷积层layeri+1将上一个周期的第1行和第2行数据分别作为当前周期中的第6行数据和第5行数据。在更新数据缓存后,重复上述步骤以继续处理待处理数据。
在本实施方式中,通过采用流水线的方式进行数据处理,进一步节约了存储资源,并减小了数据处理的时延。
以下采用卷积神经网络VGG19、输入的时间窗长度为4、一个图像帧的大小为224*224*3(也即卷积神经网络输入的单位输入数据为224*896*3)来举例说明本实施例的计算量和缓存。
其中,卷积神经网络VGG19的网络结构如表(1)所示:
表(1)
其中,conv1-1等为卷积神经网络VGG中的卷积层的编号,relu1-1等是在特征中加入非线性变换的处理层的编号,pool1等为池化层。
基于卷积神经网络VGG19的网络结构和上述计算第i层卷积层非冗余数据的数据量calyi以及数据缓存的数据量memyi(满足卷积层layeri+1的输入数据量所需的卷积层layeri的数据量)的公式(1)和公式(2),计算获得的卷积神经网络VGG19的每个卷积层的非冗余计算的数据量和缓存数据量如表(2)所示:
表(2)
其中,在卷积层layer0,当前周期的输入数据量caly0为一个图像帧的数据,也即224行,卷积层layer1在当前周期的输入数据量caly1=caly0+1=225行(其中卷积层layer0对应的卷积滑动窗口的滑动步长为1,卷积上侧的填充为1行)。
卷积层layer0的数据缓存的数据量memy0=(caly1-1)*1+3-1=226(其中卷积层layer0对应的卷积滑动窗口的滑动步长为1,卷积核的尺寸为3*3,卷积上侧的填充为1行)。同理,可根据卷积神经网络VGG19中各卷积层的参数来计算卷积层layeri的数据量calyi以及数据缓存的数据量memyi。
图8是本发明实施例的数据处理方法的VGG网络和原VGG网络的计算量的对比示意图。图9是本发明实施例的数据处理方法的VGG网络和原VGG网络的缓存的对比示意图。如图8和图9所示,本实施例的数据处理方法大大减小了数据的计算量和缓存,节约了计算资源和存储资源。另外,在本实施例中应用流水线的方式进行处理时,可进一步减小缓存,节约存储资源,同时,可以减小数据处理的时延。
图10是本发明实施例的数据处理装置的示意图。如图10所示,本实施例的数据处理装置10包括待处理数据接收单元101和数据处理单元102。待处理数据接收单元101被配置为控制第一卷积层接收连续图像帧的待处理数据。数据处理单元102被配置为响应于第一卷积层接收到的第一图像帧的待处理数据为非冗余数据,第一卷积层对第一图像帧的待处理数据进行处理。其中,所述非冗余数据为第一卷积层尚未处理的所述待处理数据中的图像帧。第一卷积层处理的特征图为N个图像帧沿纵向拼接后获得的,其中,N为大于等于2的整数。第一卷积层为卷积神经网络中的一个卷积层。在一种可选的实现方式中,第一卷积层的非冗余数据的数据量根据第三卷积层的非冗余数据量、卷积滑动窗口的滑动步长和对应的填充确定。第三卷积层为第一卷积层的上一个相邻卷积层。
在一种可选的实现方式中,数据处理单元102被配置为控制第一卷积层按照预定的数据粒度读取第一图像帧。其中,预定的数据粒度小于第一图像帧的数据量,大于或等于执行第一卷积层对应的卷积运算所需的最小数据量。数据处理单元102还被配置为执行第一卷积层的卷积运算以处理所读取的第一图像帧,并输出处理结果至第二卷积层。其中,第二卷积层为第一卷积层的下一个相邻卷积层。
在一种可选的实现方式中,数据处理装置10包括数据缓存更新单元103。数据缓存更新单元103被配置为根据第一卷积层读取的非冗余数据更新所述第一卷积层的数据缓存。在一种可选的实现方式中,数据缓存更新单元103被配置为保留第一卷积层读取的非冗余数据和至少部分数据缓存中的原有数据。其中,被保留的数据缓存中的原有数据的数据量根据第一卷积层的卷积尺寸、卷积滑动窗口的滑动步长和第二卷积层的非冗余数据量确定。
在本发明实施例中,响应于第一卷积层接收到的第一图像帧的待处理数据为非冗余数据,第一卷积层对第一图像帧的待处理数据进行处理,其中,非冗余数据为第一卷积层尚未处理的所述待处理数据中的图像帧,由此,可以使得卷积神经网络在执行时序数据处理任务时,避免卷积神经网络中的卷积层对部分数据的重复处理,由此,可以减小卷积神经网络的计算量和存储。图11是本发明实施例的电子设备的示意图。如图11所示,本实施例的电子设备包括处理核111-11N以及片上网络121。其中,卷积神经网络中的卷积层分别映射到处理核111-11N。应理解,可以将一个卷积层映射到多个处理核,也可以将多个卷积层映射到一个处理核。
处理核111-11N均与片上网络121连接。片上网络121用于交互所述N个处理核间的数据和外部数据。所述N个处理核中的至少一个处理核执行以下操作:
第一卷积层接收连续图像帧的待处理数据,并响应于所述第一卷积层接收到的第一图像帧的待处理数据为非冗余数据,所述第一卷积层对所述第一图像帧的待处理数据进行处理,所述非冗余数据为所述第一卷积层尚未处理的所述待处理数据中的图像帧;
其中,所述第一卷积层为卷积神经网络中的一个卷积层,所述第一卷积层处理的特征图为N个图像帧沿纵向拼接后获得的,其中,N为大于等于2的整数。
如图11所示,处理核111包括存储器111a、运算器111b和控制器111c。其中,存储器111a用于存储处理核111所对应的处理指令和按照预定的数据粒度读取的第一图像帧以及被保留的部分冗余数据。在另一种可选的实现方式中,存储器111a可以包括第一存储器和第二存储器,第一存储器用于存储处理核111所对应的处理指令,第二存储器用于存储按照预定的数据粒度读取的第一图像帧以及被保留的部分冗余数据。运算器111b被配置为调用存储器111a中的指令以按照对应的处理指令处理所读取的第一图像帧。控制器111c被配置为通过片上网络121将运算器111b的处理结果输出至下一个处理核。
本领域的技术人员应明白,本发明的实施例可提供为方法、装置(设备)或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品。
本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图来描述的。应理解可由计算机程序指令实现流程图中的每一流程。
这些计算机程序指令可以存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现流程图一个流程或多个流程中指定的功能。
也可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程中指定的功能的装置。
可以通过CPU、GPU(Graphics Processing Unit,图形处理器)等硬件芯片来承载本发明实施例的方法。其中,硬件芯片可以包括多个处理核来执行本发明实施例的方法。所述多个处理核可以共用一个通用存储器,也可以每个核具有一个存储器。通用存储器被配置为存储可执行指令,所述指令被执行时以实现本发明实施例的方法。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。