视频检测、3D卷积与映射方法、设备及存储介质与流程

文档序号:23064920发布日期:2020-11-25 17:50阅读:128来源:国知局
视频检测、3D卷积与映射方法、设备及存储介质与流程

本申请涉及数据处理技术领域,尤其涉及一种视频检测、3d卷积与映射方法、设备及存储介质。



背景技术:

卷积神经网络(convolutionalneuralnetworks,cnn)被广泛应用于计算机视觉中,进行分类、检测或分割等任务。这些任务一般都是针对图像进行的,使用的是二维(2d)卷积。对于基于视频分析的问题,2d卷积不能很好地捕获图像之间在时间上的物体运动信息,于是出现了3d卷积。

现有3d卷积可基于fpga等硬件实现,但是3d卷积的运算量和中间缓存数据量比较大,硬件资源受限,开发和实现难度比较大。



技术实现要素:

本申请的多个方面提供一种视频检测、3d卷积与映射方法、设备及存储介质,用以提供一种软硬结合的3d卷积架构,快速高效地实现3d卷积,同时降低硬件开发和实现难度。

本申请实施例提供一种3d卷积方法,包括:获取待卷积的视频片段,所述视频片段包括多帧图像;基于预先得到的3d卷积模型到2d卷积的映射参数,将所述视频片段包含的图像切分为多个图像组;调用基于硬件实现的2d卷积器,利用所述3d卷积模型中的3d卷积核对每个图像组进行2d卷积,得到多组2d卷积结果;将所述多组2d卷积结果在帧方向上进行拼接,得到所述视频片段的3d卷积结果。

本申请实施例还提供一种3d卷积映射方法,包括:获取3d卷积模型的填充模式、输入的变形参数、卷积核的变形参数以及滑动步长参数;根据所述输入的变形参数、卷积核的变形参数以及滑动步长参数中与所述填充模式适配的计算参数,计算所述3d卷积模型的输出的变形参数;根据所述输入的变形参数、卷积核的变形参数以及滑动步长参数,结合所述输出的变形参数,计算所述填充模式下的填充参数;其中,所述输出的变形参数中的视频深度是所述3d卷积模型在所述输入的变形参数中的视频深度下可映射成的2d卷积的组数。

本申请实施例还提供一种视频检测方法,包括:获取待检测视频片段,所述待检测视频片段包含多帧图像;基于预先得到的用于检测漏扫码的3d卷积模型到2d卷积的映射参数,将所述待检测视频片段包含的图像切分为多个图像组;调用基于硬件实现的用于检测漏扫码的2d卷积器,利用所述用于检测漏扫码的3d卷积模型中的3d卷积核对每个图像组进行2d卷积,以输出每个图像组是否出现漏扫码的信息;将所述多个图像组是否出现漏扫码的信息进行拼接,得到所述待检测视频片段是否出现漏扫码的信息。

本申请实施例还提供一种3d池化方法,包括:获取待池化的视频片段,所述视频片段包括多帧图像;基于预先得到的3d池化模型到2d池化的映射参数,将所述视频片段包含的图像切分为多个图像组;调用基于硬件实现的2d池化器,利用所述3d池化模型的3d池化窗口对每个图像组进行2d池化,得到多组2d池化结果;将所述多组2d池化结果在帧方向上进行拼接,得到所述视频片段的3d池化结果。

本申请实施例还提供一种3d池化映射方法,包括:获取3d池化模型的填充模式、输入的变形参数、池化窗口的变形参数以及滑动步长参数;根据所述输入的变形参数、池化窗口的变形参数以及滑动步长参数中与所述填充模式适配的计算参数,计算3d池化模型的输出的变形参数;根据所述输入的变形参数、池化窗口的变形参数以及滑动步长参数,结合所述输出的变形参数,计算所述填充模式下的填充参数;其中,所述输出的变形参数中的视频深度是所述3d池化模型在所述输入的变形参数中的视频深度下可映射成的2d池化的组数。

本申请实施例还提供一种计算机设备,包括:存储器、处理器以及基于硬件实现的2d卷积器;所述存储器,用于存储计算机程序以及预先得到的3d卷积模型到2d卷积的映射参数;所述处理器,与所述存储器耦合,用于执行所述计算机程序,以用于:获取待卷积的视频片段,所述视频片段包括多帧图像;基于所述存储器中的映射参数,将所述视频片段包含的图像切分为多个图像组;调用所述2d卷积器,利用所述3d卷积模型中的3d卷积核对每个图像组进行2d卷积,得到多组2d卷积结果;其中,所述多组2d卷积结果在帧方向上的拼接结果为所述视频片段的3d卷积结果。

本申请实施例还提供一种视频检测设备,包括:存储器、处理器和基于硬件实现的用于检测漏扫码的2d卷积器;所述存储器,用于存储计算机程序以及预先得到的用于检测漏扫码的3d卷积模型到2d卷积的映射参数;所述处理器,与所述存储器耦合,用于执行所述计算机程序,以用于:获取待检测视频片段,所述待检测视频片段包含多帧图像;基于预先得到的用于检测漏扫码的3d卷积模型到2d卷积的映射参数,将所述待检测视频片段包含的图像切分为多个图像组;调用基于硬件实现的用于检测漏扫码的2d卷积器,利用所述3d卷积核对每个图像组进行2d卷积,以输出每个图像组是否出现漏扫码的信息;其中,所述多个图像组是否出现漏扫码的信息的拼接结果为所述待检测视频片段是否出现漏扫码的信息。

本申请实施例还提供一种计算机设备,包括:存储器、处理器以及基于硬件实现的2d池化器;所述存储器,用于存储计算机程序以及预先得到的3d池化模型到2d池化的映射参数;所述处理器,与所述存储器耦合,用于执行所述计算机程序,以用于:获取待池化的视频片段,所述视频片段包括多帧图像;基于预先得到的3d池化模型到2d池化的映射参数,将所述视频片段包含的图像切分为多个图像组;调用基于硬件实现的2d池化器,利用所述3d池化模型的3d池化窗口对每个图像组进行2d池化,得到多组2d池化结果;其中,所述多组2d池化结果在帧方向上的拼接结果为所述视频片段的3d池化结果。

本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器实现本申请实施例提供的方法中的步骤。

在本申请实施例中,将3d卷积或池化映射为2d卷积或池化,利用基于硬件实现的2d卷积器或池化器实现3d卷积或池化,提供一种软硬结合的卷积或池化架构,软硬结合的卷积或池化架构更加灵活,利用2d卷积或池化的计算优势,既可以解决硬件资源受限的问题,又能够快速高效地实现3d卷积或池化,降低硬件开发和实现难度。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1a为本申请示例性实施例提供的一种软硬结合框架的示意图;

图1b为本申请示例性实施例提供的一种3d卷积映射方法的流程示意图;

图1c为本申请实施例提供的一种3d卷积方法的流程示意图;

图1d为本申请示例性实施例提供的一种3d卷积到2d卷积的映射关系示意图;

图2a为本申请示例性实施例提供的一种视频检测方法的流程示意图;

图2b为本申请示例性实施例提供的另一种视频检测方法的流程示意图;

图2c为本申请示例性实施例提供的边缘云网络系统的结构示意图;

图3a为本申请示例性实施例提供的一种3d池化方法的流程示意图;

图3b为本申请示例性实施例提供的一种3d池化映射方法的流程示意图;

图3c为本申请示例性实施例提供的一种maxpool3d池化到2d池化的映射关系示意图;

图4为本申请示例性实施例提供的一种计算机设备的结构示意图;

图5为本申请示例性实施例提供的一种视频检测设备的结构示意图;

图6为本申请示例性实施例提供的另一种计算机设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

针对现有3d卷积在实现上面临的硬件资源受限,开发和实现难度较大等技术问题,在本申请一些实施例中,将3d卷积或池化映射为2d卷积或池化,利用基于硬件实现的2d卷积器或池化器实现3d卷积或池化,提供一种软硬结合的卷积或池化架构,软硬结合的卷积或池化架构更加灵活,利用2d卷积或池化的计算优势,既可以解决硬件资源受限的问题,又能够快速高效地实现3d卷积或池化,降低硬件开发和实现难度。

以下结合附图,详细说明本申请各实施例提供的技术方案。

基于3d卷积可以捕捉图像之间在时间维度和空间维度上的具有区分性的特征,在本申请实施例中提出将3d卷积神经网络应用到视频监控、跟踪和分析等涉及视频处理的应用场景中。本申请实施例中的3d卷积神经网络包括输入层、3d卷积层、激活函数、3d池化层和全连接层等。在本实施例中,并不限定3d卷积层和3d池化层的个数,将每个3d卷积层的计算称为3d卷积模型,将每个3d池化层的计算称为3d池化模型。3d卷积模型主要对输入视频进行特征提取;3d池化层主要对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征。

在使用3d卷积神经网络的过程中,涉及3d卷积计算和/或3d池化计算。为了提高3d卷积或池化的实现效率,简化实现难度,在本申请实施例中,将3d卷积或池化映射为2d卷积或池化,进而,利用基于硬件实现的2d卷积器或池化器实现3d卷积或池化,实现软硬结合的卷积或池化架构。其中,软硬结合的卷积或池化架构更加灵活,利用2d卷积或池化的计算优势,既可以解决硬件资源受限的问题,又能够快速高效地实现3d卷积或池化,降低硬件开发和实现难度。

在本申请实施例中,可以先设计3d卷积神经网络,将3d卷积神经网络中的3d卷积或池化映射为2d卷积或池化,进而基于硬件实现的2d卷积器或池化器实现3d卷积或池化。针对该过程,本申请实施例提供一种自上而下的设计框架,如图1a所示,该设计框架包括:前端设计、图优化、执行系统、指令计算和硬件支持几个层。

参见图1a,在前端设计一层,可以利用一些开源的卷积神经网络开发框架或软件,例如tensorflow、caffe或mxnet等设计3d卷积神经网络的计算图。计算图的设计包括但不限于以下几个方面:计算图的定义和构建,记录计算图的节点、操作类型和连接关系,以及将计算图的格式转化为系统自定义格式的图表示,等等。

继续参见图1a,在图优化一层,可对设计出的计算图进行优化处理。可选地,计算图的优化处理包括在计算图上执行统一的、设备无关的优化处理,例如死节点的消除,节点融合等;也包括在计算图上执行与设备相关的优化处理,例如指令变换、设备分配、3d卷积或池化到2d卷积或池化的映射。

在优化后的计算图中,包括3d卷积模型和/或3d池化模型中的一些参数。对3d卷积模型来说,可以从优化后的计算图中获取其使用的填充(padding)模式,支持的输入视频的变形(shape)参数、使用的3d卷积核、3d卷积核的shape参数以及滑动步长参数等。对3d池化模型来说,可以从优化后的计算图中获取其使用的填充(padding)模式,支持的输入视频的shape参数、使用的3d池化窗口大小以及滑动步长参数等。

继续参见图1a,在执行系统一层,主要提供3d卷积神经网络运行所需的中控核心,负责统筹管理所有事务,包括3d卷积神经网络运行过程中涉及的线程池、内存池、数据缓存以及硬件设备层中各设备的管理和调度等。

继续参见图1a,在指令计算一层,主要负责定义3d卷积神经网络运行所需的硬件支持层中相关硬件设备的指令计算过程,例如是编译执行还是解释执行。又例如,利用硬件实现的2d卷积器进行3d卷积的过程可抽象一个矩阵和矩阵的乘法运算,包含从图像数据、3d卷积核加载开始,执行计算,结果输出三个过程,故在指令计算一层,还可以设计与是这三个过程相关的矩阵、向量、卷积、存储等与2d卷积器实现3d卷积相关的指令。

继续参见图1a,在硬件支持一层,主要提供3d卷积神经网络运行所需的cpu、gpu、基于硬件实现的2d卷积器或池化器等硬件设备。其中,2d卷积器或池化器可以基于fpga或cpld等实现。

例如,在利用2d卷积器或池化器进行3d卷积或池化的过程中,2d卷积器或池化器可根据cpu或gpu的调度,根据自身硬件资源的约束以及最小片外存储(例如片外存储可以是ddr)访问请求原则,决策2d卷积或池化算子的指令执行方式,对指令进行流水调度,这里的指令是指令计算层设计的。

在图1a所示的设计框架的图优化一层中,需要将3d卷积模型或池化模型映射为2d卷积或池化。本申请实施例提供一种将3d卷积模型或池化模型映射为2d卷积或池化的实施方式,该实施方式并不限于图1a所示设计框架中的图优化一层,适用于任何需要将3d卷积模型或池化模型映射为2d卷积或池化的场景。考虑到3d卷积模型和3d池化模型的不同,下面分别对将3d卷积模型映射为2d卷积的实施方式和将3d池化模型映射为2d池化的实施方式进行说明。

图1b为本申请示例性实施例提供的一种3d卷积映射方法的流程示意图。如图1b所述,该方法包括:

11b、获取3d卷积模型的填充模式、输入的变形(shape)参数、卷积核的变形参数以及滑动步长参数。

12b、根据输入的变形参数、卷积核的变形参数以及滑动步长参数中与填充模式适配的计算参数,计算3d卷积模型的输出的变形参数。

13b、根据输入的变形参数、卷积核的变形参数以及滑动步长参数,结合输出的变形参数,计算填充模式下的填充参数;其中,输出的变形参数中的视频深度表示3d卷积模型在其输入的变形参数中的视频深度下可映射成的2d卷积的组数。

在本实施例中,3d卷积模型具有输入(input)和输出(output),其输入可以是包含多帧图像的视频片段,也可以是特征图,其输出可以是特征图。对3d卷积模型的输入和输出来说,均具有一些变形(shape)参数。其中,输入(input)的shape参数是指3d卷积模型支持输入的视频的相关参数,例如包括训练时一个批尺寸(batch)的图片数量,视频深度(depth),图像高度(height),图像宽度(width)和图像通道数(channels)等。视频深度是指输入视频在帧方向上包含的图像的帧数,简单来说即在帧方向上包含几帧图像。其中,输出(output)的shape参数是指3d卷积模型支持输出的特征图的相关参数,例如包括视频深度,图像高度,图像宽度和图像通道数等。

3d卷积模型不仅具有输入和输出,还包括使用的3d卷积核以及卷积核的shape参数。其中,卷积核的shape参数是指3d卷积模型使用的3d卷积核的相关参数,例如包括卷积核的深度,卷积核的高度,卷积核的宽度,图像通道数和卷积核的个数。

在本实施例中,3d卷积模型在输入上可以支持不同的视频深度,即可以对不同帧数的视频片段进行3d卷积处理。例如,可以对包含4k帧,如4帧、8帧、12帧或16帧图像的视频片段进行3d卷积处理,k是正整数,例如其取值范围可以是[1,52],但不限于此。其中,针对各种视频深度,可以采用图1b所示方法得到3d卷积模型在其支持的各种视频深度下可映射成的2d卷积的组数。其中,经图1b所示方法得到的3d卷积模型在其支持的各种视频深度下可映射成的2d卷积的组数以及3d卷积模型使用的填充模式下的填充参数,可以作为3d卷积模型到2d卷积的映射参数,并预先存储下来,以在后续需要基于3d卷积模型进行3d卷积处理时将3d卷积影射为2d卷积并利用硬件实现的2d卷积器达到3d卷积的目的。

另外,3d卷积模型还会使用填充(padding)模式,对输入的视频片段进行填充。其中,3d卷积模型使用的填充模式可以有多种,例如可以是same模式或valid模式。针对不同填充模式,计算3d卷积模型支持的输出的变形参数所需的参数会有所不同。这些参数是3d卷积模型的输入的变形参数、卷积核的变形参数以及滑动步长参数中的部分或全部。在本实施例中,可结合3d卷积模型使用的填充模式,从3d卷积模型的输入的变形参数、卷积核的变形参数以及滑动步长参数中选取与3d卷积模型使用的填充模式适配的计算参数,进而根据选取的计算参数,计算d卷积模型的输出的变形参数。

可选地,在填充模式是same模式的情况下,可根据3d卷积模型的输入的变形参数和滑动步长参数,计算3d卷积模型的输出的变形参数。

可选地,在填充模式是valid模式的情况下,可根据3d卷积模型的输入的变形参数、卷积核的变形参数和滑动步长参数,计算3d卷积模型的输出的变形参数。

其中,3d卷积模型的输入、输出和卷积核的变形参数,一般包括:图像高度、图像宽度和视频深度等参数;卷积核的变形参数中的图像高度、图像宽度和视频深度分别表示3d卷积核的高度、宽度和深度。相应地,3d卷积模型的滑动步长参数包括:图像高度方向上的滑动步长、图像宽度方向上的滑动步长和视频深度方向上的滑动步长等参数。则,计算3d卷积模型的输出的变形参数,主要是指计算3d卷积模型期望输出的图像高度、图像宽度和视频深度等参数。

基于上述,在填充模式是same模式的情况下,根据3d卷积模型的输入的变形参数和滑动步长参数,计算3d卷积模型的输出的变形参数,包括以下操作:

根据所述输入的变形参数中的图像高度与滑动步长参数中在图像高度方向上的滑动步长,计算输出的变形参数中的图像高度;

根据所述输入的变形参数中的图像宽度与滑动步长参数中在图像宽度方向上的滑动步长,计算输出的变形参数中的图像宽度;

根据所述输入的变形参数中的视频深度与所述滑动步长参数中在视频深度方向上的滑动步长,计算输出的变形参数中的视频深度。

进一步,在计算输出的变形参数中的图像高度时,可以采用但不限于下述公式(1):

out_height=ceil(float(in_height)/float(stride_h))(1)

进一步,在计算输出的变形参数中的图像宽度时,可以采用但不限于下述公式(2):

out_width=ceil(float(in_width)/float(stride_w))(2)

进一步,在计算输出的变形参数中的视频深度时,可以采用但不限于下述公式(3):

out_depth=ceil(float(in_depth)/float(stride_d))(3)

同理,在填充模式是valid模式的情况下,根据3d卷积模型的输入的变形参数、卷积核的变形参数和滑动步长参数,计算3d卷积模型的输出的变形参数,包括以下操作:

根据所述输入的变形参数中的图像高度与所述卷积核的变形参数中的图像高度之差,与所述滑动步长参数中在图像高度方向上的滑动步长,计算输出的变形参数中的图像高度;

根据所述输入的变形参数中的图像宽度与所述卷积核的变形参数中的图像宽度之差,与所述滑动步长参数中在图像宽度方向上的滑动步长,计算输出的变形参数中的图像宽度;

根据所述输入的变形参数中的视频深度与所述卷积核的变形参数中的视频深度之差,与所述滑动步长参数中在视频深度方向上的滑动步长,计算输出的变形参数中的视频深度。

进一步,在计算输出的变形参数中的图像高度时,可以采用但不限于下述公式(4):

out_height=ceil(float(in_height-filter_height+1)/float(stride_h))(4)

进一步,在计算输出的变形参数中的图像宽度时,可以采用但不限于下述公式(5):

out_width=ceil(float(in_width-filter_width+1)/float(stride_w))(5)

进一步,在计算输出的变形参数中的视频深度时,可以采用但不限于下述公式(6):

out_depth=ceil(float(in_depth-filter_depth+1)/float(stride_d))(6)

在上述公式(1)-(6)中,out_height表示输出的变形参数中的图像高度,out_height表示输出的变形参数中的图像宽度,out_depth表示输出的变形参数中的视频深度;ceil()表示向上取整函数;float()表示将括号中的数值转化为浮点数;in_height表示输入的变形参数中的图像高度,in_height表示输入的变形参数中的图像宽度,in_depth表示输入的变形参数中的视频深度;filter_height表示卷积核的变形参数中的图像高度,filter_height表示卷积核的变形参数中的图像宽度;stride_h表示滑动步长参数中在图像高度方向上的滑动步长;stride_w表示滑动步长参数中在图像宽度方向上的滑动步长;stride_d滑动步长参数中在视频深度方向上的滑动步长。

进一步,在计算出3d卷积模型的输出的变形参数后,可根据3d卷积模型的输入的变形参数、卷积核的变形参数以及滑动步长参数,结合3d卷积模型的输出的变形参数,计算3d卷积模型使用的填充模式下的填充参数。其中,填充模式下的填充参数主要包括:对输入视频进行填充时在各个填充方向上所需填充的单位长度个数,可选地,可以包括在图像高度方向向上补边的单位长度个数、在图像高度方向向下补边的单位长度个数、在图像宽度方向向左补边的单位长度个数、在图像宽度方向向右补边的单位长度个数、在视频深度方向向前补边的单位长度个数和/或在视频深度方向向后补边的单位长度个数。

在非对称填充的情况下,在图像高度方向向上和向下补边的单位长度个数不平均时,下边多补一行;在图像宽度方向向左和向右补边的单位长度个数不平均时,右边多补一列;在视频深度方向向前和向后补边的单位长度个数不平均时,向后多补一帧。在对称填充的情况下,在图像高度方向向上和向下补边的单位长度个数相同,在图像宽度方向向左和向右补边的单位长度个数相同,在视频深度方向向前和向后补边的单位长度个数相同。

以对称填充的情况为例,计算填充模式下的填充参数包括以下操作:

以对称填充为条件,根据输入的变形参数中的图像高度、滑动步长参数中在图像高度方向上的滑动步长、卷积核的变形参数中的图像高度以及输出的变形参数中的图像高度,计算填充参数中在图像高度方向向上或向上补边的单位长度个数;

以对称填充为条件,根据输入的变形参数中的图像宽度、滑动步长参数中在图像宽度方向上的滑动步长、卷积核的变形参数中的图像宽度以及输出的变形参数中的图像宽度,计算填充参数中在图像宽度方向向左或向右补边的单位长度个数;

以对称填充为条件,根据输入的变形参数中的视频深度、滑动步长参数中在视频深度方向上的滑动步长、卷积核的变形参数中的视频深度以及输出的变形参数中的视频深度,计算填充参数中在视频深度方向向前或向后补边的单位长度个数。

进一步,在计算填充参数中在图像高度方向向上或向上补边的单位长度个数时,可以采用但不限于下述公式(7):

out_height=(in_height+pad_top+pad_bottom–filter_height)/stride_h+1(7)

进一步,在计算填充参数中在图像宽度方向向左或向右补边的单位长度个数时,可以采用但不限于下述公式(8):

out_width=(in_width+pad_left+pad_right–filter_width)/stride_w+1(8)

进一步,在计算填充参数中在视频深度方向向前或向后补边的单位长度个数时,可以采用但不限于下述公式(9):

out_depth=(in_depth+pad_front+pad_back-filter_depth)/stride_d+1(9)

在上述公式(7)-(9)中,out_height表示输出的变形参数中的图像高度,out_height表示输出的变形参数中的图像宽度,out_depth表示输出的变形参数中的视频深度;in_height表示输入的变形参数中的图像高度,in_height表示输入的变形参数中的图像宽度,in_depth表示输入的变形参数中的视频深度;filter_height表示卷积核的变形参数中的图像高度,filter_height表示卷积核的变形参数中的图像宽度,filter_depth表示卷积核的变形参数中的视频深度;stride_h表示滑动步长参数中在图像高度方向上的滑动步长;stride_w表示滑动步长参数中在图像宽度方向上的滑动步长;stride_d滑动步长参数中在视频深度方向上的滑动步长;pad_top和pad_bottom分别表示在图像高度方向向上和向下补边的单位长度个数,在对称填充方式下,两者大小相同;pad_left和pad_right分别表示在图像宽度方向向左和向右补边的单位长度个数,在对称填充方式下,两者大小相同;pad_front和pad_back分别表示在视频深度方向向前和向后补边的单位长度个数,在对称填充方式下,两者大小相同。

进一步,在利用2d卷积器进行2d卷积的过程中,涉及的卷积对象包括3d卷积核和需要卷积的图像数据。2d卷积器包括片内存储器(简称为片内)和片外存储器(简称为片外),但鉴于2d卷积器的片内存储空间有限,可能无法将3d卷积核和图像数据全部加载到片内,这需要考虑将3d卷积核和图像数据中的哪个存储在片内,又将哪个存储在片外。在本实施例中,基于2d卷积运算过程的与片外存储器的交互代价为基准,若将3d卷积核存片外的交互代价相对较小,则将3d卷积核存片外,将图像数据存片内;反之,若将图像数据存片外的交互代价相对较小,则将图像数据存片外,将3d卷积核存片内。基于此,在本实施例中,还可以根据3d卷积模型的输入的变形参数,预先计算第一访存模式和第二访存模式的代价;从第一访存模式和第二访存模式中,选择代价小的作为目标访存模式,并预先存储目标访存模式,这样在利用2d卷积器进行2d卷积时可以根据目标访存模式指示的存储方式向2d卷积器提供3d卷积核和图像数据,可减少与片外存储的交互次数,提高卷积效率,提高权值的复用率。其中,第一访存模式是指将3d卷积核存片内,将图像数据存片外的模式;第二访存模式是指将图像数据存片内,将3d卷积核存片外的模式。

在一可选实施方式中,可以根据3d卷积模型的输入的变形参数中的图像通道数、图像高度和图像宽度,计算第一访存模式和第二访存模式的代价。一种计算方式如下:

根据输入的变形参数中的图像通道数和2d卷积器的硬件并行度,计算权重加载次数;

根据输入的变形参数中的图像通道数、图像高度、图像宽度以及加载权重次数,计算权重大小;

根据输入的变形参数中的图像高度作为数据加载次数,并根据输入的变形参数中的通道数、图像高度和图像宽度,计算数据大小;

根据权重大小、权重加载次数和数据加载次数,计算第一访存模式的代价;

根据数据加载次数、数据大小、权重大小和权重加载次数,计算第二访存模式的代价。

可选地,在计算权重加载次数时,可以采用但不限于以下公式(10):

load_weight_times=weight_channel/alpha(10)

可选地,在计算权重大小时,可以采用但不限于以下公式(11):

weight_size=(weight_channel*weight_height*weight_width)/load_weight_times(11)

可选地,在计算数据加载次数时,可以采用但不限于以下公式(12):

load_data_times=input_height(12)

可选地,在计算数据大小时,可以采用但不限于以下公式(13):

data_size=input_channel*input_height*input_width/input_height(13)

可选地,在第一访存模式的代价时,可以采用但不限于以下公式(14):

bandwidth_for_a=load_weight_times*weight_size*load_data_times(14)

可选地,在第二访存模式的代价时,可以采用但不限于以下公式(15):

bandwidth_for_b=load_data_times*data_size+load_weight_times*weight_size(15)

在上述公式(10)-(15)中,alpha表示2d卷积器的并行度,load_weight_times表示权重加载次数,weight_size表示权重大小,load_data_times表示数据加载次数,data_size表示数据大小,bandwidth_for_a表示第一访存模式的代价,bandwidth_for_b表示第二访存模式的代价;weight_channel、weight_height和weight_width分别与input_channel、input_height和input_width相同,input_channel、input_height和input_width分别表示输入的变形参数中的图像通道数、图像高度和图像宽度。

在上述将3d卷积模型映射为2d卷积的方法中,可以得到由3d卷积模型映射为2d卷积的映射参数,这些映射参数包括但不限于:3d卷积模型使用的填充模式下的填充参数、3d卷积模型在其支持的各种视频深度下可映射成的2d卷积的组数,以及在执行2d卷积时所需的目标访存模式。在得到由3d卷积模型映射为2d卷积的映射参数之后,在需要使用3d卷积模型进行3d卷积处理时,可以将3d卷积映射为多组2d卷积,利用基于硬件实现的2d卷积器进行2d卷积,以得到视频片段的3d卷积结果。

图1c为本申请实施例提供的一种3d卷积方法的流程示意图。如图1c所示,该方法包括:

11c、获取待卷积的视频片段,该视频片段包括多帧图像。

12c、基于预先得到的3d卷积模型到2d卷积的映射参数,将视频片段包含的图像切分为多个图像组。

13c、调用基于硬件实现的2d卷积器,利用3d卷积模型中的3d卷积核对每个图像组进行2d卷积,得到多组2d卷积结果。

14c、将多组2d卷积结果在帧方向上进行拼接,得到视频片段的3d卷积结果。

在本实施例中,需要对视频片段进行3d卷积处理,以提取视频片段中的特征。则可以获取由3d卷积模型到2d卷积的映射参数,基于该映射参数,将视频片段包含的图像切分为多个图像组,调用基于硬件实现的2d卷积器,利用3d卷积模型中的3d卷积核对每个图像组进行2d卷积,得到多组2d卷积结果,并由多组2d卷积结果拼接得到视频片段的3d卷积结果。

其中,本实施例中使用的由3d卷积模型到2d卷积的映射参数,可以采用但不限于上述实施例提供的3d卷积映射方法得到。可选地,3d卷积模型到2d卷积的映射参数包括:3d卷积模型使用的填充模式下的填充参数和3d卷积模型在其支持的各种视频深度下可映射成的2d卷积的组数。基于此,步骤12c的一种实施方式包括:

根据预先得到的3d卷积模型使用的填充模式下的填充参数,对视频片段包含的多帧图像进行填充处理得到目标图像序列;

根据视频片段的视频深度,从预先得到的3d卷积模型在其支持的各种视频深度下可映射成的2d卷积的组数中,确定目标图像序列对应的2d卷积的组数;

根据目标图像序列对应的2d卷积的组数,将目标图像序列切分为多个图像组。其中,图像组的个数就是目标图像序列对应的2d卷积的组数。每个图像组包含的帧数与3d卷积核的深度相同。例如,若3d卷积核的深度为2,则每个图像组包含2帧图像。

值得说明的是,将多组2d卷积结果在帧方向上进行拼接,可采用多种技术手段实现,下面列举几种:

在一可选实施例中,在步骤14c中,2d卷积器可以按序输出每组2d卷积结果,并按序将各组2d卷积结果存储在一块连续的存储空间中,这可达到拼接的效果,则在多组2d卷积结果输出结束后,一次性从该连续存储空间中读取所有2d卷积结果即为视频片段的3d卷积结果。

在另一可选实施例中,可以在2d卷积器中增加拼接节点,则在步骤14c中,由2d卷积器将多组2d卷积结果在帧方向上进行拼接后输出,输出结果即为视频片段的3d卷积结果。

在又一可选实施例中,2d卷积器可以输出每组2d卷积结果,在步骤14c中,可以由cpu对2d卷积器输出的多组2d卷积结果在帧方向上进行拼接,得到视频片段的3d卷积结果。

在本实施例中,将3d卷积或池化映射为2d卷积,利用基于硬件实现的2d卷积器或池化器实现3d卷积,实现一种软硬结合的卷积架构,软硬结合的卷积架构更加灵活,利用2d卷积的计算优势,既可以解决硬件资源受限的问题,又能够快速高效地实现3d卷积,降低硬件开发和实现难度。

下面以tensorflow设计的3d卷积模型为例,对3d卷积到2d卷积的映射以及基于映射结果进行3d卷积的过程进行说明。其中,该3d卷积模型的有关参数如下:

输入(input):1个4帧5×5×5通道的视频,shape参数:[1,4,5,5,5],该shape参数中各参数值的含义:[训练时一个batch的图片数量为1,视频深度为4(即包括4帧图像),图片高度为5,图片宽度为5,图像通道数为5];

过滤器(filter):7个3×3×5的卷积核,shape参数:[3,3,3,5,7],该shape参数中各参数值的含义:[卷积核的深度为3,卷积核的高度为3,卷积核的宽度为3,图像通道数为5,卷积核个数为7];

padding模式:same;滑动步长(stride)参数:[1,1,1,1,1]。

对于上述3d卷积模型,采用图1b所示实施例的方法对其进行映射,可得到该3d卷积模型的输出(output):4帧5×5×7通道的特征图(featuremap),shape参数:[1,4,5,5,7],该shape参数中各参数值的含义:[训练时一个batch的图片数量为1,视频深度为4(即包括4帧图像),图片高度为5,图片宽度为5,图像通道数为7(与卷积核的个数相同)];另外,还可以得到在same模式下,采用上述公式(6)和(9)计算可知需要在第一帧图像前面以及最后一帧图像的后面插入一帧全0的图像。

进一步,当需要对包含4帧的视频进行3d卷积时,可采用图1c所示实施例的方法,首先根据same模式下的填充参数,在第一帧图像前面以及最后一帧图像后面分别插入一帧全0的图像。说明一下,在卷积过程中,视频深度方向上第一帧的卷积核会被跳过,可消除这帧补边的图像;同理,最后一帧的卷积核也会被跳过,可消除最后一帧补边的图像。接着,根据输入视频的帧数为4,可以选出视频深度为4时对应的输出的特征图有4帧,这意味着3d卷积模型要被拆分成4组2d卷积,且考虑到3d卷积核的深度为3,每组2d卷积包括3个2d卷积,则可以将4帧图像切分为4个图像组,每个图像组包含3帧图像;利用2d卷积器对每组中的每帧图像进行2d卷积,则拆分出的2d卷积的数量和关系如图1d所示。

在图1d中,k[0]、k[1]和k[2]表示卷积核深度中的3个3d卷积核;i_f[0]-i_f[3]为输入的4帧图像,i_1[0]表示在第一帧图像前面填充的全0图像,i_2[0]表示在最后一帧图像前面填充的全0图像;其中,i_1[0]、i_f[0]与i_f[1]形成第一图像组,i_f[0]、i_f[1]与i_f[2]形成第二图像组,i_f[1]、i_f[2]与i_f[3]形成第三图像组,i_f[2]、i_f[3]与i_2[0]形成第四图像组。

进一步,如图1d所示,在每个图像组中,3帧图像分别与卷积核k[0]、k[1]和和k[2]进行2d卷积,其中,一帧图像与一个卷积核进行2d卷积的过程可调用2d卷积器完成。进一步,在每组2d卷积之间进行流水处理,根据代价模型,综合考虑2d卷积器的规格限制以及片外访存带宽最小原则,可以确定是将3d卷积核存片内,图像数据存片外,还是将图像数据存片内,3d卷积核存片外;然后,可以按照确定的访存模式将图像数据和3d卷积核存储到相应的存储空间中,供2d卷积器读取以进行2d卷积。

进一步,如图1d所示,在实现上,可以在2d卷积器中插入一个求和节点,该求和节点可以是但不限于:eltwiseadd节点,该节点用于对每组2d卷积中的三个2d卷积结果进行累加,得到每组2d卷积结果。另外,在2d卷积器中还可以插入一个拼接节点,该拼接节点可以是但不限于:concat节点,该节点用于对4组2d卷积结果在帧方向上进行拼接,得到3d卷积结果。当然,2d卷积器也可以按序将各组2d卷积结果输出至同一连续存储空间中进行存储,从而达到拼接的目的,所以2d卷积器的拼接节点是一可选节点。

本申请实施例提供的3d卷积映射方法以及3d卷积方法可应用于视频处理、图像识别等各种场景,在不同应用场景中,3d卷积模型会有所不同,对应的2d卷积器的功能和实现也会有所不同。下面举例说明:

随着扫码技术的发展,在一些超市、商场等购物场所中,开始支持自主扫码结账的技术。例如,用户可以在手机上安装对应的购物app,通过app的扫描功能扫描商品上的二维码,获取商品的价格、数量等信息,然后线上完成支付,这可以提高支付效率,避免排队浪费时间。又例如,在一些无人超市、商场中,布设具有扫码功能的销售终端,该销售终端具有屏幕,屏幕上具有扫码区,用户选购好商品后,可以将商品的二维码对准该销售终端的扫码区进行扫码,该销售终端可获取商品的价格、数量等信息,进而计算出商品价格,供用户支付相应金额。用户支付方式可以是扫码支付,也可以线上支付等,对此不做限定。

在上述场景中,为了避免用户漏扫码,可以安装视频采集模块,负责采集超市或商场中扫码支付区域内的视频流,进而对采集到的视频流进行漏扫码检测,并在检测到发生漏扫码情况下输出报警信息,以提示用户对漏扫码的商品进行扫码以完成支付。漏扫码是指用户发出了扫码动作,但并未实际扫描到商品信息的情况。在检测漏扫码的场景中,可以设置用于检测漏扫码的3d卷积模型,并基于fpga或cpld设计用于检测漏扫码的2d卷积器,预先将3d卷积模型映射成2d卷积得到映射参数并存储下来,进而可利用用于检测漏码的2d卷积器实现3d卷积。其中,基于用于检测漏扫码的2d卷积器实现3d卷积的一种视频检测方法如图2a所示,包括以下操作:

21a、获取待检测视频片段,该待检测视频片段包含多帧图像。

22a、基于预先得到的用于检测漏扫码的3d卷积模型到2d卷积的映射参数,将待检测视频片段包含的图像切分为多个图像组。

23a、调用基于硬件实现的用于检测漏扫码的2d卷积器,利用3d卷积模型中的3d卷积核对每个图像组进行2d卷积,以输出每个图像组是否出现漏扫码的信息。

24a、将多个图像组是否出现漏扫码的信息进行拼接,得到待检测视频片段是否出现漏扫码的信息。

可选地,获取待检测视频片段的方式包括但不限于以下几种:

在方式1中,可直接获取视频采集模块采集到的视频片段作为待检测视频片段。可选地,视频采集模块可以设置在具有扫码功能的销售终端上,且其采集视野可覆盖用户发起扫码动作所在的物理空间。

在方式2中,可以从视频采集模块采集到的视频流中,截取包含扫码动作的视频片段作为待检测视频片段。

在方式2中,需要预先对视频流进行识别,以便识别出包含扫码动作的视频片段。在一可选实施例中,设置一个用于对人和商品跟踪检测的2d卷积器,由该2d卷积器对人与商品进行跟踪检测,结合光流检测可识别出视频流中出现的扫码动作。则一种视频检测方法的流程如图2b所示,对视频采集模块采集到的视频流进行解码,一方面将解码后的视频流送入用于对人与商品跟踪检测的2d卷积器中,该2d卷积器对视频流中的每帧图像进行2d卷积,以输出每帧图像是否包含人和商品的信息;另一方面,对解码后的视频流进行光流检测,光流检测可检测出物体(主要是指人与商品)的运动情况;然后,根据用于对人与商品跟踪检测的2d卷积器输出的每帧图像是否包含人和商品的信息,结合视频流的光流检测结果,可确定包含扫码动作的原始视频片段;然后,根据包含扫码动作的原始视频片段得到待检测视频片段。

进一步,3d卷积模型可支持一定数量的视频深度,为了使得待检测视频片段包含的帧数与3d卷积模型可支持的视频深度相匹配,可以根据用于检测漏扫码的3d卷积模型支持的视频深度,判断包含扫码动作的原始视频片段中的帧数是否与用于检测漏扫码的3d卷积模型支持的视频深度相匹配,例如可以判断包含扫码动作的原始视频片段中的帧数是不是3d卷积模型支持的视频深度的整数倍数,若是,则直接将包含扫码动作的原始视频片段作为待检测视频片段;若不是,则调整包含扫码动作的原始视频片段包含的帧数,得到与用于检测漏扫码的3d卷积模型支持的视频深度相匹配的视频片段作为待检测视频片段。其中,调整方式包括在包含扫码动作的原始视频片段中增加若干帧,或者删除包含扫码动作的原始视频片段中的若干帧。关于增加或减少图像帧的操作不做限定。

之后,如图2b所示,可对待检测视频片段进行用于检测漏扫码的3d卷积处理,该3d卷积处理的过程可参见图2a所示,主要是将待检测视频片段映射为多组2d卷积,调用用于检测漏扫码的2d卷积器,利用用于检测漏扫码的3d卷积模型中的3d卷积核对每个图像组进行2d卷积,以输出每个图像组是否出现漏扫码的信息;其中,多个图像组是否出现漏扫码的信息拼接得到待检测视频片段是否出现漏扫码的信息。

可选地,实际应用中,除了可能发生漏扫码的情况之外,还可能出现未扫码直接装袋的情况,例如用户习惯性地将商品装袋,而未扫码。这里的“装袋”是广泛意义上的,包括用户收纳商品的各种方式,例如装箱、装盒、装自用购物车等。基于此,还可以涉及用于检测未扫码直接装袋动作的3d卷积模型,并基于fpga或cpld等硬件设计用于检测未扫码直接装袋动作的2d卷积器,预先将用于检测未扫码直接装袋动作的3d卷积模型映射成2d卷积并存储相应的映射参数。基于此,若还需要检测视频片段中是否出现未扫码直接装袋的动作,如图2b所示,还可以对待检测视频片段进行用于检测未扫码直接装袋动作的3d卷积处理,该3d卷积处理的过程包括:基于预先得到的用于检测未扫码直接装袋动作的3d卷积模型到2d卷积的映射参数,将待检测视频片段包含的图像切分为多个图像组,即映射为多组2d卷积,调用用于检测未扫码直接装袋动作的2d卷积器,利用用于检测未扫码直接装袋动作的3d卷积模型中的3d卷积核对每个图像组进行2d卷积,以输出每个图像组是否出现未扫码直接装袋的动作的信息;将多个图像组是否出现未扫码直接装袋的动作的信息进行拼接,得到待检测视频片段是否出现未扫码直接装袋的动作的信息。

值得说明的是,上述将多个图像组是否出现漏扫码的信息或者是否出现未扫码直接装袋的动作的信息进行拼接的操作,可以在相应2d卷积器上完成,也可以在cpu中完成,对此不做限定。

图2a和图2b所示视频检测方法,其执行主体可以是具有一定计算和处理能力的终端设备实现,如设置于超市或商场内具有视频采集和扫码功能的销售终端,但并不限于此。例如,图2a和图2b所示视频检测方法,也可以由设置于超市或商场内的销售终端与部署在云端的服务器相互配合实现。例如,销售终端获取视频采集设备采集到的视频流,基于光流算法从中截取包含扫码动作的视频片段作为待检测视频片段,将待检测视频片段上传至服务器,由服务器执行图2a描述的操作。又例如,销售终端获取视频采集设备采集到的视频流,直接将视频流上传至服务器,由服务器执行图2b所示的操作。

在图2a和图2b所示视频检测方法中,以检测“漏扫码”或“未扫码”为例进行了描述,但并不限于此。本申请实施例的视频检测方法可扩展到任何具有视频检测需求的应用场景中对相应内容进行检测或识别,在不同应用场景中,视频检测方法中使用的3d卷积模型和2d卷积器有所不同,但整个视频检测过程和原理是相同或类似的。

另外,除上述超市或商场等购物场之外,在图2c所示的边缘云网络系统中,也具有图像识别或视频检测需求,同样可以采用本申请实施例提供的3d卷积映射方法以及3d卷积方法进行图像识别或视频检测。如图2c所示,该边缘云网络系统包括:摄像头、边缘计算节点以及部署在云端或客户机房中的服务器。服务器与边缘计算节点通过网络进行通信,服务器可响应边缘计算节点的请求,为边缘计算节点提供相关云服务;另外,服务器也可对边缘计算节点进行管控、运维等。边缘计算节点包括硬件基础设施、硬件基础设施的驱动程序、操作系统以及相关应用程序等。硬件基础设施包括但不限于:cpu、网卡以及存储器等。

在一种实施方式中,边缘计算节点具有图像识别或视频检测功能,如图2c所示,边缘计算节点的存储器中存储有3d卷积模型到2d卷积的映射参数,并且具有基于fpga或cpld实现的用于图像识别或视频检测的2d卷积器。基于此,摄像头采集到其视野范围内的图像或视频流后,可将采集到的图像或视频流传输给边缘计算节点;边缘计算节点可利用用于图像识别或视频检测的2d卷积器实现3d卷积,完成图像识别或视频检测功能。

在另一种实施方式中,云端或客户机房内的服务器具有图像识别或视频检测功能,可为边缘计算节点提供图像识别或视频检测的云服务。如图2c所示,服务器中存储有3d卷积模型到2d卷积的映射参数,并且具有基于fpga或cpld实现的用于图像识别或视频检测的2d卷积器。基于此,摄像头采集到其视野范围内的图像或视频流后,将采集到的图像或视频流传输给边缘计算节点;边缘计算节点将接收到的图像或视频流上传至服务器;服务器可利用用于图像识别或视频检测的2d卷积器实现3d卷积,完成图像识别或视频检测功能,并将图像识别或视频检测功能返回给边缘计算节点。

在上述实施例中,边缘计算节点或服务器利用用于图像识别或视频检测的2d卷积器实现3d卷积的过程可参见图2a所示实施例的描述,在此不做赘述。

除了上述3d卷积映射方法、3d卷积方法以及视频检测方法之外,本申请实施例还针对3d卷积神经网络中的另一3d算子,即3d池化算子,提供了一种将3d池化映射为2d池化的方法以及基于映射结果进行3d池化的方式,下面分别进行说明。

图3a为本申请示例性实施例提供的一种3d池化方法的流程示意图。如图3a所示,该方法包括:

31a、获取待池化的视频片段,视频片段包括多帧图像。

32a、基于预先得到的3d池化模型到2d池化的映射参数,将视频片段包含的图像切分为多个图像组。

33a、调用基于硬件实现的2d池化器,利用3d池化模型的3d池化窗口对每个图像组进行2d池化,得到多组2d池化结果。

34a、将多组2d池化结果进行拼接,得到视频片段的3d池化结果。

图3b为本申请示例性实施例提供的一种3d池化映射方法的流程示意图。如图3b所示,该方法包括:

31b、获取3d池化模型的填充模式、输入的变形参数、池化窗口的变形参数以及滑动步长参数。

32b、根据输入的变形参数、池化窗口的变形参数以及滑动步长参数中与填充模式适配的计算参数,计算3d池化模型的输出的变形参数。

33b、根据输入的变形参数、池化窗口的变形参数以及滑动步长参数,结合输出的变形参数,计算填充模式下的填充参数;其中,输出的变形参数中的视频深度是3d池化模型在输入的变形参数中的视频深度下可映射成的2d池化的组数。

值得说明的是,3d池化包括maxpool3d和avgpool3d两种模式。其中,avgpool3d与3d卷积相类似,区别在于3d池化过程中不使用卷积核,而是使用池化窗口,故可将3d卷积中的卷积核替换为池化窗口,除此之外,其它描述比较类似,可参照3d卷积的相关描述,在此不再赘述。maxpool3d与3d卷积相比,除了池化窗口和卷积核之间的不同之外,maxpool3d到2d池化的计算逻辑上与3d卷积到2d卷积的计算逻辑有所不同。如图3c所示,在基于2d池化实现maxpool3d池化的过程中,在每组2d池化中,三个2d池化结果之间不是求和,而是将三个2d池化结果进行比较,从中选择出最大的一个池化结果作为该组2d池化结果。在图3c所示池化示例中,在2d池化器中插入一个比较节点,该比较节点可以是但不限于:eltwisecmp节点,该节点用于将每组2d池化中的三个2d池化结果进行比较,从中选择最大池化结果,作为该组2d池化结果。另外,在图3c中,k[0]、k[1]和k[2]表示3个3d池化窗口,关于其它参数的含义以及其它内容与前面实施例类似,可参见前述内容,在此不再赘述。

由此可见,在本申请实施例中,将3d卷积或池化映射为2d卷积或池化,利用基于硬件实现的2d卷积器或池化器实现3d卷积或池化,提供一种软硬结合的卷积或池化架构,软硬结合的卷积或池化架构更加灵活,利用2d卷积或池化的计算优势,既可以解决硬件资源受限的问题,又能够快速高效地实现3d卷积或池化,降低硬件开发和实现难度。

需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤11b至步骤13b的执行主体可以为设备a;又比如,步骤11c-13c的执行主体可以为设备a,步骤14c的执行主体可以为设备b;等等。

另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如11b、12b等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

图4为本申请示例性实施例提供的一种计算机设备的结构示意图。如图4所示,该计算机设备包括:存储器41、处理器42以及基于硬件实现的2d卷积器43。可选地,该2d卷积器可以是基于fpga或cpld等硬件实现。

存储器41,用于存储计算机程序,并可被配置为存储其它各种数据以支持在计算机设备上的操作。这些数据的示例包括用于在计算机设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频,以及预先得到的3d卷积模型到2d卷积的映射参数等。

处理器42,与存储器41耦合,用于执行存储器41中的计算机程序,以用于:获取待卷积的视频片段,视频片段包括多帧图像;基于存储器中的映射参数,将视频片段包含的图像切分为多个图像组;调用2d卷积器,利用3d卷积模型中的3d卷积核对每个图像组进行2d卷积,得到多组2d卷积结果;其中,多组2d卷积结果在帧方向上的拼接结果为视频片段的3d卷积结果。

可选地,处理器42可获取2d卷积器输出的多组2d卷积结果,将多组2d卷积结果在帧方向上进行拼接,得到视频片段的3d卷积结果。或者,2d卷积器还用于将多组2d卷积结果在帧方向上进行拼接得到拼接结果;处理器42可获取2d卷积器得到的拼接结果作为视频片段的3d卷积结果。

在一可选实施例中,3d卷积模型到2d卷积的映射参数包括但不限于:3d卷积模型的填充模式下的填充参数和3d卷积模型在其支持的各种视频深度下可映射成的2d卷积的组数。基于此,处理器42在将视频片段切分为多个图像组时,具体用于:

根据预先得到的3d卷积模型的填充模式下的填充参数,对视频片段包含的多帧图像进行填充处理得到目标图像序列;

根据视频片段的视频深度,从预先得到的3d卷积模型在其支持的各种视频深度下可映射成的2d卷积的组数中,确定目标图像序列对应的2d卷积的组数;

根据目标图像序列对应的2d卷积的组数,将目标图像序列切分为多个图像组。

在一可选实施例中,处理器42还用于:获取3d卷积模型的填充模式、输入的变形参数、卷积核的变形参数以及滑动步长参数;根据输入的变形参数、卷积核的变形参数以及滑动步长参数中与填充模式适配的计算参数,计算3d卷积模型的输出的变形参数;根据输入的变形参数、卷积核的变形参数以及滑动步长参数,结合输出的变形参数,计算填充模式下的填充参数;其中,输出的变形参数中的视频深度是3d卷积模型在输入的变形参数中的视频深度下可映射成的2d卷积的组数。

进一步可选地,处理器42在计算3d卷积模型的输出的变形参数时,具体用于:在填充模式是same模式的情况下,根据输入的变形参数和滑动步长参数,计算3d卷积模型的输出的变形参数;或者,在填充模式是valid模式的情况下,根据输入的变形参数、卷积核的变形参数和滑动步长参数,计算3d卷积模型的输出的变形参数。

可选地,处理器42在根据输入的变形参数和滑动步长参数,计算3d卷积模型的输出的变形参数时,具体用于:

根据输入的变形参数中的图像高度与滑动步长参数中在图像高度方向上的滑动步长,计算输出的变形参数中的图像高度;

根据输入的变形参数中的图像宽度与滑动步长参数中在图像宽度方向上的滑动步长,计算输出的变形参数中的图像宽度;

根据输入的变形参数中的视频深度与滑动步长参数中在视频深度方向上的滑动步长,计算输出的变形参数中的视频深度。

可选地,处理器42在根据输入的变形参数、卷积核的变形参数和滑动步长参数,计算3d卷积模型的输出的变形参数时,具体用于:

根据输入的变形参数中的图像高度与卷积核的变形参数中的图像高度之差,与滑动步长参数中在图像高度方向上的滑动步长,计算输出的变形参数中的图像高度;

根据输入的变形参数中的图像宽度与卷积核的变形参数中的图像宽度之差,与滑动步长参数中在图像宽度方向上的滑动步长,计算输出的变形参数中的图像宽度;

根据输入的变形参数中的视频深度与卷积核的变形参数中的视频深度之差,与滑动步长参数中在视频深度方向上的滑动步长,计算输出的变形参数中的视频深度。

进一步可选地,处理器42在计算填充模式下的填充参数时,具体用于:

以对称填充为条件,根据输入的变形参数中的图像高度、滑动步长参数中在图像高度方向上的滑动步长、卷积核的变形参数中的图像高度以及输出的变形参数中的图像高度,计算填充参数中在图像高度方向向上或向下补边的单位长度个数;

以对称填充为条件,根据输入的变形参数中的图像宽度、滑动步长参数中在图像宽度方向上的滑动步长、卷积核的变形参数中的图像宽度以及输出的变形参数中的图像宽度,计算填充参数中在图像宽度方向向左或向右补边的单位长度个数;

以对称填充为条件,根据输入的变形参数中的视频深度、滑动步长参数中在视频深度方向上的滑动步长、卷积核的变形参数中的视频深度以及输出的变形参数中的视频深度,计算填充参数中在视频深度方向向前或向后补边的单位长度个数。

在一可选实施例中,处理器42还用于:设计3d卷积神经网络的计算图,3d卷积神经网络包括3d卷积模型;对计算图进行优化处理,得到优化后的计算图;其中,优化后的计算图中包含3d卷积模型的填充模式、输入的变形参数、卷积核的变形参数以及滑动步长参数。

在一可选实施例中,处理器42还用于:获取预先得到的目标访存模式,目标访存模式是第一访存模式或第二访存模式;根据目标访问模式指示的存储方式,向2d卷积器提供3d卷积核和每个图像组中的图像;其中,第一访存模式是指将3d卷积核存片内,将图像数据存片外的模式;第二访存模式是指将图像数据存片内,将3d卷积核存片外的模式。

进一步,处理器42还用于:根据3d卷积模型的输入的变形参数,计算第一访存模式和第二访存模式的代价;从第一访存模式和第二访存模式中,选择代价小的作为目标访存模式。

可选地,处理器42在计算第一访存模式和第二访存模式的代价时,具体用于:根据输入的变形参数中的图像通道数和2d卷积器的硬件并行度,计算权重加载次数;根据输入的变形参数中的图像通道数、图像高度、图像宽度以及加载权重次数,计算权重大小;根据输入的变形参数中的图像高度作为数据加载次数,并根据输入的变形参数中的图像通道数、图像高度和图像宽度,计算数据大小;根据权重大小、权重加载次数和数据加载次数,计算第一访存模式的代价;根据数据加载次数、数据大小、权重大小和权重加载次数,计算第二访存模式的代价。

值得说明的是,本实施例的计算设备可以单独具有3d卷积映射的功能,也可以单独具有3d卷积的功能,当然,也可以同时具有3d卷积映射和3d卷积的功能。

进一步,如图4所示,该计算机设备还包括:通信组件44、显示器45、电源组件46、音频组件47等其它组件。图4中仅示意性给出部分组件,并不意味着计算机设备只包括图4所示组件。另外,另外,图4中用虚线框示出的组件为可选组件,可视计算机设备的具体实现形态而定。

本实施例的计算机设备可以是台式电脑、平板电脑、笔记本电脑、智能手机、穿戴设备等终端设备,也可以是常规服务器、云服务器、云主机、虚拟中心、服务器阵列等服务器设备。

本实施例的计算机设备,可将3d卷积映射为2d卷积,利用基于硬件实现的2d卷积器实现3d卷积,提供一种软硬结合的卷积架构,软硬结合的卷积架构更加灵活,利用2d卷积的计算优势,既可以解决硬件资源受限的问题,又能够快速高效地实现3d卷积,降低硬件开发和实现难度。

相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现上述3d卷积映射或3d卷积方法实施例中的步骤。

图5为本申请示例性实施例提供的一种视频检测设备的结构示意图。如图5所示,该视频检测设备包括:存储器51、处理器52和基于硬件实现的用于检测漏扫码的2d卷积器53。可选地,该用于检测漏扫码的2d卷积器可以基于pfga或cpld实现,但不限于此。

存储器51,用于存储计算机程序,并可被配置为存储其它各种数据以支持在视频检测设备上的操作。这些数据的示例包括用于在视频检测设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频,以及预先得到的用于检测漏扫码的3d卷积模型到2d卷积的映射参数等。

处理器52,与存储器51耦合,用于执行存储器51中的计算机程序,以用于:获取待检测视频片段,待检测视频片段包含多帧图像;基于预先得到的用于检测漏扫码的3d卷积模型到2d卷积的映射参数,将待检测视频片段包含的图像切分为多个图像组;调用基于硬件实现的用于检测漏扫码的2d卷积器,利用3d卷积核对每个图像组进行2d卷积,以输出每个图像组是否出现漏扫码的信息;其中,多个图像组是否出现漏扫码的信息的拼接结果为待检测视频片段是否出现漏扫码的信息。

可选地,处理器52可获取用于检测漏扫码的2d卷积器输出的每个图像组是否出现漏扫码的信息,将每个图像组是否出现漏扫码的信息在帧方向上进行拼接,得到待检测视频片段是否出现漏扫码的信息。或者,用于检测漏扫码的2d卷积器还用于将每个图像组是否出现漏扫码的信息在帧方向上进行拼接得到拼接结果;处理器52可获取用于检测漏扫码的2d卷积器得到的拼接结果作为待检测视频片段是否出现漏扫码的信息。

在一可选实施例中,用于检测漏扫码的3d卷积模型到2d卷积的映射参数包括但不限于:用于检测漏扫码的3d卷积模型的填充模式下的填充参数和该3d卷积模型在其支持的各种视频深度下可映射成的2d卷积的组数。基于此,处理器52在将待检测视频片段切分为多个图像组时,具体用于:

根据用于检测漏扫码的3d卷积模型的填充模式下的填充参数,对待检测视频片段包含的多帧图像进行填充处理得到目标图像序列;

根据待检测视频片段的视频深度,从用于检测漏扫码的3d卷积模型在其支持的各种视频深度下可映射成的2d卷积的组数中,确定目标图像序列对应的2d卷积的组数;

根据目标图像序列对应的2d卷积的组数,将目标图像序列切分为多个图像组。

在一可选实施例中,处理器52还用于:获取用于检测漏扫码的3d卷积模型的填充模式、输入的变形参数、卷积核的变形参数以及滑动步长参数;根据输入的变形参数、卷积核的变形参数以及滑动步长参数中与填充模式适配的计算参数,计算用于检测漏扫码的3d卷积模型的输出的变形参数;根据输入的变形参数、卷积核的变形参数以及滑动步长参数,结合输出的变形参数,计算填充模式下的填充参数;其中,输出的变形参数中的视频深度是用于检测漏扫码的3d卷积模型在输入的变形参数中的视频深度下可映射成的2d卷积的组数。

进一步,如图5所示,本实施例的视频检测设备还包括:基于硬件实现的用于检测未扫码直接装袋动作的2d卷积器54。可选地,该用于检测未扫码直接装袋动作的2d卷积器可以基于pfga或cpld实现,但不限于此。相应地,存储器51中还可以存储有用于检测未扫码直接装袋动作的3d卷积模型映射成2d卷积的映射参数。处理器52还用于:基于用于检测未扫码直接装袋动作的3d卷积模型到2d卷积的映射参数,将待检测视频片段包含的图像切分为多个图像组,即映射为多组2d卷积,调用用于检测未扫码直接装袋动作的2d卷积器,利用用于检测未扫码直接装袋动作的3d卷积模型中的3d卷积核对每个图像组进行2d卷积,以输出每个图像组是否出现未扫码直接装袋的动作的信息;其中,多个图像组是否出现未扫码直接装袋的动作的信息的拼接结果即为待检测视频片段是否出现未扫码直接装袋的动作的信息。

值得说明的是,上述将多个图像组是否出现未扫码直接装袋的动作的信息进行拼接的操作,可以在相应2d卷积器上完成,也可以在处理器52中完成,对此不做限定。

进一步,处理器52还用于:获取用于检测未扫码直接装袋的动作的3d卷积模型的填充模式、输入的变形参数、卷积核的变形参数以及滑动步长参数;根据输入的变形参数、卷积核的变形参数以及滑动步长参数中与填充模式适配的计算参数,计算用于检测未扫码直接装袋的动作的3d卷积模型的输出的变形参数;根据输入的变形参数、卷积核的变形参数以及滑动步长参数,结合输出的变形参数,计算填充模式下的填充参数;其中,输出的变形参数中的视频深度是用于检测未扫码直接装袋的动作的3d卷积模型在输入的变形参数中的视频深度下可映射成的2d卷积的组数。

进一步,如图5所示,该视频检测设备还包括:通信组件55、显示器56、电源组件57、音频组件58等其它组件。图5中仅示意性给出部分组件,并不意味着视频检测设备只包括图5所示组件。另外,图5中用虚线框示出的组件为可选组件,可视视频检测设备的具体实现形态而定。

本实施例的视频检测设备可以是为具有扫码功能的销售终端,还可以是台式电脑、平板电脑、笔记本电脑、智能手机、穿戴设备等终端设备,也可以是常规服务器、云服务器、云主机、虚拟中心、服务器阵列等服务器设备。

本实施例的视频检测设备,可将3d卷积映射为2d卷积,利用基于硬件实现的2d卷积器实现3d卷积,提供一种软硬结合的卷积架构,软硬结合的卷积架构更加灵活,利用2d卷积的计算优势,既可以解决硬件资源受限的问题,又能够快速高效地实现3d卷积,降低硬件开发和实现难度。

相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现上述视频检测方法实施例中的步骤。

图6为本申请示例性实施例提供的另一种计算机设备的结构示意图。如图6所示,该计算机设备包括:存储器61、处理器62以及基于硬件实现的2d池化器63。可选地,该2d池化器63可基于fpga或cpld实现,但不限于此。

存储器61,用于存储计算机程序以及预先得到的3d池化模型到2d池化的映射参数。

处理器62,与存储器61耦合,用于执行计算机程序,以用于:获取待池化的视频片段,视频片段包括多帧图像;基于预先得到的3d池化模型到2d池化的映射参数,将视频片段包含的图像切分为多个图像组;调用基于硬件实现的2d池化器,利用3d池化模型的3d池化窗口对每个图像组进行2d池化,得到多组2d池化结果;其中,多组2d池化结果在帧方向上的拼接结果为视频片段的3d池化结果。

可选地,上述将多组2d池化结果在帧方向上进行拼接的操作,可以在2d池化器63上完成,也可以在处理器62中完成,对此不做限定。若在处理器62中完成,处理器42可获取2d卷积器输出的多组2d卷积结果,将多组2d卷积结果在帧方向上进行拼接,得到视频片段的3d卷积结果。或者,若在2d池化器63上完成,则2d卷积器还用于将多组2d卷积结果在帧方向上进行拼接得到拼接结果;相应地,处理器42可获取2d卷积器得到的拼接结果作为视频片段的3d卷积结果。

在一可选实施例中,处理器62还用于:获取3d池化模型的填充模式、输入的变形参数、池化窗口的变形参数以及滑动步长参数;根据输入的变形参数、池化窗口的变形参数以及滑动步长参数中与填充模式适配的计算参数,计算3d池化模型的输出的变形参数;根据输入的变形参数、池化窗口的变形参数以及滑动步长参数,结合输出的变形参数,计算填充模式下的填充参数;其中,输出的变形参数中的视频深度是3d池化模型在输入的变形参数中的视频深度下可映射成的2d池化的组数。

进一步,如图6所示,该计算机设备还包括:通信组件64、显示器65、电源组件66、音频组件67等其它组件。图6中仅示意性给出部分组件,并不意味着计算机设备只包括图6所示组件。另外,另外,图6中用虚线框示出的组件为可选组件,可视计算机设备的具体实现形态而定。

本实施例的计算机设备可以是台式电脑、平板电脑、笔记本电脑、智能手机、穿戴设备等终端设备,也可以是常规服务器、云服务器、云主机、虚拟中心、服务器阵列等服务器设备。

在本申请实施例中,将3d池化映射为2d池化,利用基于硬件实现的2d池化器实现3d池化,提供一种软硬结合的池化架构,软硬结合的池化架构更加灵活,利用2d池化的计算优势,既可以解决硬件资源受限的问题,又能够快速高效地实现3d池化,降低硬件开发和实现难度。

相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现上述3d池化映射或3d池化方法实施例中的步骤。

上述图4-6中的存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

上述图4-6中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还可以包括近场通信(nfc)模块,射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术等。

上述图4-6中的显示器包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

上述图4-6中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。

上述图4-6中的音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(mic),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1