本发明属于机器视觉及深度学习技术领域,涉及视频行为识别技术,尤其涉及一种使用混合多尺度时序深度可分离卷积的高效视频行为识别的方法。
背景技术:
视频行为识别的目的是,对于给定的一段视频,分析出视频中所发生的的动作类别,给出对应的标签。该任务可认为是视频分类任务的一种。对于后续进行其他视频内容理解的任务来说,视频分类任务是基础,所以有着很重要的作用。视频行为识别作为一项基础任务,广泛应用于人机交互,城市安全监控等场景。
在对视频行为进行识别的过程中,现有方法采用神经网络进行特征提取。其主要分成三种:1)直接使用3d卷积神经单元进行特征提取,在每次卷积过程中,时空特征提取在时间维度和空间维度的计算是同时的。这导致参数量和计算量的大大提高。2)只使用2d卷积,提取每帧图片的特征,独立进行判断,最后结果取平均。这种方式虽然高效,却缺乏有效的时序建模能力,在需要强时序推理的数据集和任务上表现糟糕。3)将时序建模和空间建模分开进行,分别采用1d卷积和2d卷积进行建模,降低了3d卷积的计算量。这种方法同样也有缺点,首先绝大部分方法使用普通1d卷积,其参数量和计算量依然不小。其次,这些方法都采用固定尺度的1d卷积核,无法同时处理长时序和短时序动作。以上所述导致了现有方法难以在现实场景中落地,急需更高效的方法进行时空特征建模。
技术实现要素:
为了克服上述现有技术的不足,本发明提供一种基于混合多尺度时序深度可分离卷积操作的时空建模方法,用来解决视频中动作发生长短不同以及空间中不同语义特征具有不同时序变化尺度的问题,可应用于但不限于视频行为识别的视频理解任务,能够高效地实现视频行为识别。
本发明将不同大小的深度可分离卷积融合在一个深度可分离卷积操作中,对不同通道的特征进行不同尺度的时序建模,用来解决视频中动作发生长短不同以及空间中不同语义特征具有不同时序变化尺度的问题。进一步,通过将该操作插入现有2d卷积神经网络中,可以让传统2d卷积神经网络具有高效的时空建模能力,在几乎不增加多余计算量的情况下极大程度提高了传统2d卷积神经网络在需要强时序推理的数据集和任务上的表现。
本发明提供的技术方案是:
一种基于混合多尺度时序可分离卷积操作的视频行为识别方法,通过将原始视频按照一定标准抽取成图片序列,将图片序列分成多个间隔,每个间隔抽取一张图片组成图片子序列,然后对图片子序列进行特征提取,再对图片子序列特征进行分类,得到分类结果,作为视频内发生行为的类别。其中为了提取图片子序列的特征,采用加入了混合多尺度时序可分离卷积的卷积神经网络模型作为学习器,使用卷积神经网络模型中的全连接层对提取到的图片子序列特征进行分类。具体包括如下步骤:
1)视频图片抽帧。
通过ffmpeg(https://www.ffmpeg.org/)对原始视频抽取为图片序列,作为每个视频的初始数据形式。根据视频原本的每秒帧数和图像大小,抽取出每个视频对应的图片序列。
2)抽取图片子序列。
根据1)中抽取出的图片序列,将每个不同时间长短的视频分成相同大小的t个序列间隔(segments),t为时间维度,其值表示每个视频选取的序列间隔的数量(segments),从这些序列间隔中抽取一张图组成图片子序列。抽取方式是:在训练过程中从每个序列间隔中随机抽取一张图片,组成图片子序列,作为一种时序数据增广方式。在测试过程中抽取每个序列间隔的中间帧图片。
3)设计并建立混合多尺度时序深度可分离卷积操作(mixtedtemporalconvolution,mixtconv)。
将步骤2)得到的图片子序列的特征维度表示为f∈r(b×t)×c×h×w,作为mixtconv操作的输入,其中b是批次维度,其值表示训练时的批次大小(batchsize),t为时间维度,其值表示每个视频选取的序列间隔的数量(segments),c为特征通道数量(channels),w为特征在空间上的宽度(weight),h为特征在空间上的高度(height)。首先将特征维度f重新排列(拉伸,reshape)为f∈r(b×h×w)×c×t,再将f在通道维度分成g组(g=4)。每组得到
其中
其中,z∈r(b×h×w)×c×t。
最后,将z重新排列(拉伸,reshape)为zout∈r(b×t)×c×h×w,作为混合多尺度时序可分离卷积操作(mixtconv)的输出。
4)将混合多尺度时序可分离卷积操作加入到2d(二维)卷积神经网络模型中;
基础的2d卷积神经网络可以选择任意一2d骨架网络,在其中的每一个block内插入设计的混合多尺度时序可分离卷积模型的卷积层,使网络模型具有高效的时空建模能力。
具体实施时,以2d骨架网络采用resnet-50(https://arxiv.org/abs/1512.03385),将混合多尺度时序可分离卷积操作加入到resnet-50的残差连接层和第一个1×1卷积层之间,记作混合时空块(mixedspatiotemporalblock,mstblock)。
5)混合时空网络模型(mixedspatiotemporalnetwork,mstnet);
将resnet-50中所有残差块(residualblock)采用混合时空块mstblock,得到最终混合时空网络(mixedspatiotemporalnetwork,mstnet)。mstnet的最后一个全连接层为标签分类层,神经元个数对应于数据集标签个数。最终,mstnet的输出为:
其中,t为时序间隔的数量,也就是图片子序列长度,
6)训练mstnet,得到训练好的mstnet;
61)数据增广;
在训练mstnet的过程中,首先使用不同的时间和空间维度的数据增广策略,在时间和空间维度上分别进行数据增广。
在空间维度上做数据增广,采用包括但不限于tsn(temporalsegmentnetwork,https://arxiv.org/pdf/1608.00859.pdf)增广方式。首先将图片尺寸的短边拉伸(resize)到256,长边按照原图比例拉伸,即如果原来图片大小比例是4:3,那么重新拉伸后长边为340,短边为256。然后采取四个角落抠图(cornercropping)以及尺寸抖动(scalejittering)的增广方式。角落抠图是从已经重新拉伸过的图片的四个角落直接扣取长宽均为224的图片,尺寸抖动为随机从{256,224,192,168}的尺寸中选一个尺寸用来进行角落抠图,然后再将原图拉伸成224大小(选224就不需要拉伸)。最终得到一组长宽均为224大小的新的图片子序列用于训练。对每个视频在每次训练迭代周期(epoch)中的每个图片进行上述相同增广操作,保证对每个视频操作后的新的视频子序列具有时序可读性。进行时序增广时,首先将各种不同长度的视频切分成t个片段(segments),每个片段中随机抽取一个图片用于训练,称为temporaljittering(时序抖动)。经过数据增广后训练的网络模型其鲁棒性更强。
62)训练过程
进行数据增广得到增广后的数据,再将时间维度(t)放在批次维度中(b),所以整个网络的输入i∈r(b×t)×3×224×224,最后得到输出为o∈rb×class,其中class为数据集中对应类别的数量。采用交叉熵损失(crossentropyloss)算预测类别和真实类别,得到误差,通过反向传播更新参数。经过设定次数(50次)完整训练集训练迭代后,保存验证集上结果最好的模型参数,作为最终模型训练好的参数,即得到训练好的混合时空网络模型mstnet。
7)测试mstnet
在测试过程中,时间维度上,相比于训练过程,测试过程每次固定取每个视频片段(segments)最中间的一张图。空间维度上,先将短边拉伸(resize)到256,保持图片长短边比例不变的情况下对长边进行对应缩放,然后在图片的中间区域中扣取大小为224*224的图片,作为网络的输入。
将待识别的视频按照1)抽取为图片序列后,进行上述测试过程的处理,将得到的图片子序列数据作为训练好的mstnet网络模型的输入,即可输出视频行为的类别。
通过上述步骤,实现基于混合多尺度时序可分离卷积的高效视频行为识别。
与现有技术相比,本发明的有益效果是:
本发明提供一种基于混合多尺度时序可分离卷积的高效视频行为识别方法。该方法可以加入到任意一个2d卷积神经网络中使其拥有鲁棒的时空建模能力,并且几乎不提高计算量和参数量。本发明通过将不同尺寸的深度可分离1d卷积核整合在一个卷积操作中,实现了同时对长时序动作和短时序动作的建模。本发明不仅仅可以用来进行高效的行为识别,还可用于视频内容定位,视频时空定位,视频对话生成,视频摘要等各项视频理解任务。通过将我们提出的mixtconv加入到现有方法如(tsn)中,在多个强时序行为识别的数据集(something-somethingv1)上将精度从20.5%提高到48.1%,在大规模手势识别数据集(jester)上从82%提高到96.9%,同时保持了几乎一致的计算量(16帧输入:65gv.s.65.3g,8帧输入:33gv.s.33.2g)。
附图说明
图1为本发明提供的视频行为识别系统的结构框架示意图。
此图左边是整个网络流程表示,右边是混合多尺度时序可分离卷积操作的详细示意,立方体表示图片特征,拉伸后的矩形表示一维特征
图2为本发明提供的视频行为识别方法的流程框图。
具体实施方式
下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
本发明提供一种基于混合多尺度时序可分离卷积的高效视频行为识别,通过将不同尺寸的深度可分离1d卷积核整合在一个卷积操作中,实现了同时对长时序动作和短时序动作的建模。
如图1所示,采用本发明建立的基于混合多尺度时序可分离卷积网络进行高效视频行为识别。图2所示为本发明提供的视频行为识别的流程,具体实施包括如下步骤:
1)视频图片抽帧;
通过ffmpeg(https://www.ffmpeg.org/)对原始视频抽取为图片序列,作为每个视频的初始数据形式。抽取时保持原视频图片长宽以及视频帧数(频率)不变。根据视频原本的每秒帧数和图像大小,抽取出每个视频对应的图片序列。
2)抽取图片子序列
根据1)中抽取出的图片序列,将每个不同时间长短的视频分成相同大小的t个时间序列间隔(segments),t可以是任意合适的大小,通常取8至32。从这些序列间隔中抽取一张图组成图片子序列。这样可以将长度(帧数)不同的视频统一成同样的长度(帧数)t。抽取方式是:在训练过程中从每个序列间隔中随机抽取一张图片,组成图片子序列,作为一种时序数据增广方式。在测试过程中抽取每个序列间隔的中间帧图片。
3)设计并建立混合多尺度时序可分离卷积操作mixtconv。
将步骤2)得到的图片子序列的特征维度表示为f∈r(b×t)×c×h×w,作为mixtconv操作的输入,其中b是批次维度,其值表示训练时的批次大小(batchsize),t为时间维度,其值表示每个视频选取的序列间隔的数量(segments),c为特征通道数量(channels),w为特征在空间上的宽度(weight),h为特征在空间上的高度(height)。首先我们将特征维度f重新排列(reshape)为f∈r(b×h×w)×c×t,再将f在通道维度分成g组,这里g=4。每组得到
其中
其中,z∈r(b×h×w)×c×t。
最后,将z重新排列(reshape)为zout∈r(b×t)×c×h×w,作为混合多尺度时序可分离卷积操作(mixtconv)的输出。
4)将混合多尺度时序可分离卷积操作加入到传统2d(二维)网络中
基础的2d卷积神经网络可以选择任意一2d骨架网络,在其中的每一个block内插入设计的混合多尺度时序可分离卷积模型的卷积层,使网络模型具有高效的时空建模能力。
具体实施时,以2d骨架网络采用resnet-50(https://arxiv.org/abs/1512.03385),我们将混合多尺度时序可分离卷积操作加入到resnet-50的残差连接层和第一个1×1卷积层之间,记作混合时空块(mixedspatiotemporalblock,mstblock)。
5)混合时空网络(mixedspatiotemporalnetwork,mstnet)
将resnet-50中所有残差块(residualblock)替换为mstblock,得到最终混合时空网络(mixedspatiotemporalnetwork,mstnet)。mstnet的最后一个全连接层为标签分类层,神经元个数对应于数据集标签个数。最终,mstnet的输出为:
其中t的值为时间序列间隔的数量,也就睡图片子序列的长度,
6)训练混合时空网络(mstnet)
数据增广
在训练mstnet的过程中,首先我们使用不同的时间和空间维度的数据增广策略。在空间维度上做数据增广,我们采用包括但不限于tsn(temporalsegmentnetwork,https://arxiv.org/pdf/1608.00859.pdf)中的增广方式。首先将图片尺寸的短边拉伸(resize)到256,长边按照原图比例拉伸,即如果原来图片大小比例是4:3,那么重新拉伸后长边为340,短边为256。然后采取四个角落抠图(cornercropping)以及尺寸抖动(scalejittering)的增广方式。角落抠图是从已经重新拉伸过的图片的四个角落直接扣取长宽均为224的图片,尺寸抖动为随机从{256,224,192,168}的尺寸中选一个尺寸用来进行角落抠图,然后再将原图拉伸成224大小(选224就不需要拉伸)。最终得到一组长宽均为224大小的新的图片子序列用于训练。这里我们对每个视频在每次训练迭代周期(epoch)中的每个图片做相同增广操作,保证对每个视频操作后的新的视频子序列拥有时序可读性。在时序增广中,我们首先将各种不同长度的视频切分成t个片段(segments),t一般为{8,16,32},每个片段中随机抽取一个图用于训练,称为temporaljittering(时序抖动)。经过数据增广后训练的网络鲁棒性更强。
训练过程
得到增广后的数据以后,我们将时间维度(t)放在批次维度中(b),所以整个网络的输入i∈r(b×t)×3×224×224,最后得到输出o∈rb×class,其中class为数据集中对应类别数量。采用交叉熵损失(crossentropyloss)计算预测类别和真实类别,得到误差,通过反向传播计算梯度并更新参数。经过50次完整训练集训练迭代后,保存验证集上结果最好的模型参数,作为最终模型训练好的参数。
具体实施时,使用2)中描述抽取图片子序列,抽取时在每一个训练周期(epoch)随机在序列间隔中抽取一张图片组成图片子序列,用于增强网络对时序间隔变化的鲁棒性(temporaljittering)。
采用尺度抖动的方法将不同大小的图片子序列统一成224*224大小,得到网络的输入。输入为维度(b*t,3,224,224),b的值为批次大小,t的值为时序间隔数。训练总周期为50(epoch),初始学习率设置为0.01,在训练周期为30,40,45时下降10倍。训练批次大小(batchsize)设为64。训练时正则化权重设为5e-4(weightdecay)全连接层dropout设置为0.5。网络初始化时采用imagenetpre-trainedweight(www.image-net.org)。网络输出维度为(b,class)其中class为视频行为类别数。
7)测试mstnet
在测试过程中,我们为了考虑实时性,采用最简单有效的办法完成推理过程。时间维度上,相比于训练过程,测试过程每次固定取每个视频片段(segments)最中间的一张图。空间维度上,先将短边拉伸(resize)到256,保持图片长短边比例不变的情况下对长边进行对应缩放,然后在图片的中间区域中扣取大小为224*224的图片,作为网络的输入。将待识别的视频进行上述测试过程的处理,作为训练好的mstnet网络模型的输入,即可输出视频行为的类别,其输出对于每一个视频都是一个长度为class(根据数据集所含类别数量确定)的one-hot向量,向量中值为1的对应位置即是该视频的预测类别。可预测的视频类别根据所使用的数据集自行设定,比如“开门”,“关门”,或者任意复杂动作如“将苹果从桌子上拿走”。
具体实施时,在测试过程中,先将短边拉伸(resize)到256,保持图片长短边比例不变的情况下对长边进行对应缩放,然后在图片的中间区域中扣取大小为224*224的图片,作为网络的输入。如果考虑效率则采用单clip(每个clip内包括t个图片)。如果考虑性能,则可以将图片放大并选取多个clip结果取平均(一般图片放大可选取短边256长边按比例缩放,clip选取2个不重复的序列)。
所描述的视频内容定位技术使用了混合多尺度时序可分离卷积,通过将不同尺寸的深度可分离1d卷积核整合在一个卷积操作中,高效地实现了同时对长时序动作和短时序动作的建模。
需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
1.一种基于混合多尺度时序可分离卷积操作的视频行为识别方法,其特征是,包括如下步骤:
1)将原始视频抽取成图片序列;
2)将图片序列分成多个间隔,每个间隔抽取一张图片组成图片子序列;对图片子序列进行特征提取,得到的图片子序列的特征维度表示为f∈r(b×t)×c×h×w,其中b是批次维度,其值表示训练时的批次大小;t为时间维度,其值表示每个视频选取的序列间隔的数量;c为特征通道数量;w为特征在空间上的宽度;h为特征在空间上的高度;
3)设计并建立混合多尺度时序深度可分离卷积操作mixtconv;将步骤2)得到的图片子序列的特征维度作为mixtconv操作的输入,采用加入混合多尺度时序可分离卷积操作的卷积神经网络模型作为学习器,提取得到图片子序列的语义特征;包括如下操作:
31)将特征维度f重新排列/拉伸为f∈r(b×h×w)×c×t,再将f在通道维度分成g组,每组得到特征
32)对于每组特征,采用g个不同卷积核大小的一维深度可分离卷积,作用于时间维度;每个深度可分离卷积的卷积核的大小为{k1,…,kg};
33)令wm表示卷积核大小为km的一维深度可分离卷积核,其中m表示卷积核对应的分组;对于第m个组,通道数为cm,其中m∈1,2,…,g;第m个组的输出值记作
34)将每个组的结果
35)将z重新排列拉伸,得到zout,zout∈r(b×t)×c×h×w,作为混合多尺度时序可分离卷积操作的输出;
4)将混合多尺度时序可分离卷积操作加入到二维卷积神经网络模型的残差连接层和第一个1×1卷积层之间,记作混合时空块;
5)二维卷积神经网络模型的残差块均采用混合时空块,构建成混合时空网络mstnet;mstnet的最后一个全连接层为标签分类层,神经元个数对应于数据集标签个数;mstnet的输出s表示为:
其中,t为时序间隔的数量,也就是图片子序列长度;
6)训练mstnet,得到训练好的mstnet;包括如下操作:
61)数据增广:使用时间和空间维度的数据增广策略,在时间和空间维度上分别进行数据增广,得到增广后的数据;
62)再将时间维度t放在批次维度b中,网络模型的输入为i,得到输出为o∈rb×class;其中class为数据集中对应类别的数量;采用交叉熵损失函数计算预测类别和真实类别,得到误差,通过反向传播更新参数;
63)经过设定次数迭代训练后,保存结果最好的模型参数,作为最终模型训练好的参数,即得到训练好的混合时空网络模型mstnet;
7)测试mstnet:测试过程每次固定取每个视频片段时间维度上中间的一张图;空间维度上,先将短边拉伸,保持图片长短边比例不变,对长边进行对应缩放,然后在图片的中间区域中扣取图片作为网络的输入;
将待识别的视频按照步骤1)抽取为图片序列,再对图片序列进行步骤7)的处理,将得到的图片子序列数据作为训练好的mstnet网络模型的输入,即可输出视频行为的类别;
通过上述步骤,实现基于混合多尺度时序可分离卷积的高效视频行为识别。
2.如权利要求1所述基于混合多尺度时序可分离卷积操作的视频行为识别方法,其特征是,从图片序列抽取得到图片子序列,进行时序数据增广;抽取方式是:在训练过程中从每个序列间隔中随机抽取一张图片,组成图片子序列;在测试过程中抽取每个序列间隔的中间帧的图片,组成图片子序列。
3.如权利要求1所述基于混合多尺度时序可分离卷积操作的视频行为识别方法,其特征是,步骤3)建立混合多尺度时序深度可分离卷积操作中,将图片子序列的特征维度f在通道维度分成4组。
4.如权利要求1所述基于混合多尺度时序可分离卷积操作的视频行为识别方法,其特征是,步骤33)进行深度可分离卷积的操作,表示为:
其中,
5.如权利要求1所述基于混合多尺度时序可分离卷积操作的视频行为识别方法,其特征是,步骤6)训练混合时空网络模型mstnet中进行数据增广,采用的数据增广方式包括但不限于tsn增广方式。
6.如权利要求1所述基于混合多尺度时序可分离卷积操作的视频行为识别方法,其特征是,步骤6)训练混合时空网络模型mstnet中进行数据增广,包括:
首先将图片尺寸的短边拉伸到256,长边按照原图比例拉伸;
然后采取四个角落抠图和尺寸抖动的增广方式:通过角落抠图从已重新拉伸过的图片的四个角落直接扣取长宽均为224的图片;通过尺寸抖动随机从{256,224,192,168}的尺寸中选一个尺寸用来进行角落抠图,然后再将原图拉伸成224大小;
最终得到一组长宽均为224大小的新的图片子序列用于训练。
7.如权利要求1所述基于混合多尺度时序可分离卷积操作的视频行为识别方法,其特征是,步骤6)具体采用时序抖动方式进行时序增广,首先将各种不同长度的视频切分成t个片段,每个片段中随机抽取一个图片用于训练。
8.如权利要求1所述基于混合多尺度时序可分离卷积操作的视频行为识别方法,其特征是,步骤1)进行视频图片抽帧,具体通过ffmpeg将原始视频抽取为图片序列。
技术总结