王逸舟, 张 菁*, 张淑莹, 卓 力
(1.北京工业大学 信息学部,北京 100124; 2.计算智能与智能系统北京市重点实验室,北京 100124)
网络短视频[1]是目前最火的自媒体(We Media)之一,已经普及并融入人们的日常生活中。用户可以制作短视频并在网络上发布自己的作品,但与此同时,也使短视频盗版泛滥,维权困难,沦为侵权的重灾区。因此对用户上传的短视频进行智能化的身份鉴别具有非常重要的实际应用意义。视频指纹提取技术[2]是将数字视频内容映射为唯一的身份描述符,可以大幅减少在大规模数据集中评估不同样本之间相似性的计算成本,以存储成本低、查询速度快等特点,被广泛应用于视频复制检测[3]、视频检索[4]等领域。
视频指纹的质量取决于提取视频特征的鲁棒表示,根据视频特征提取方法的不同,视频指纹提取算法可以分为手工设计特征方法和基于深度学习的方法。由于手工设计特征提取过程比较复杂,并且难以逾越视频内容和高层语义表达之间的鸿沟,指纹鲁棒性和检测性能无法适用于海量的短视频数据内容分析和判别。近年来,随着深度学习的飞速发展,深度特征已经在计算机视觉任务取得了超越传统方法的性能,特别是利用卷积神经网络(Convolutional Neural Networks,CNN)或长短期记忆(Long Short-Term Memory,LSTM)等提取的视频指纹,展现出了更优秀的检测效果[5]。Wang等[6]提出了一种基于CNN和稀疏编码的紧凑型视频表示方法,利用CNN从密集采样的视频帧提取深度特征,然后通过稀疏编码转换为固定长度的向量。Nie等[7]将手工视觉特征和使用CNN的深度特征相结合,共同作为视频指纹。Li等[8]使用预训练好的CNN提取特征,通过并行和分层的方式处理视频帧序列进行编码,提取二进制视频指纹。Han等[9]将空间相似性、时间相似性和局部对齐信息联合建模,用于检测和定位视频的部分复制。Kordopatis-Zilos等[10]将视频帧的相似性矩阵送到CNN中训练,通过计算视频之间的切角相似性分数,获得帧序列匹配之间的时间相似性。尽管基于深度学习的方法能够提取鲁棒性更强的视频指纹,但是应用于短视频的视频指纹提取还有一些实际问题需要解决。一般来说,视频指纹算法性能可以从4个方面衡量:① 原视频指纹应与副本视频的指纹近似;② 原视频指纹应与无关视频的指纹距离较远;③ 指纹长度要尽可能小,可以高效存储与检索;④ 指纹提取算法的计算复杂度要尽可能低。由于短视频是由多个镜头组成的视频数据集合,具有时长较短、镜头少、场景单一等特点,且用户上传频率高、数据量大,内容具有未知性,因此短视频指纹提取需要在保证特征紧凑的前提下,具有更高表达能力和鲁棒性。目前的视频指纹算法在人造数据集可以取得较好的效果,但应用于大规模真实数据时,其表现仍不理想。
考虑到视频的时空上下文特性[11],短视频指纹提取应充分利用视频的视觉信息和时序信息来获取有效的时空特征表达。目前提取时空特征的主流方法有双流网络[12]、CNN+LSTM[13]和3DCNN[14-15]。其中,基于双流网络的方法计算开销较大,难以应用于大规模短视频的指纹提取。CNN+LSTM在处理时序信息方面具有优势,例如Hu等[16]结合CNN和LSTM来解决复制视频的检测问题,首先应用预训练的ResNet-50网络提取帧级别的内容特征,然后用LSTM体系结构进行时空融合和序列匹配,在VCDB数据集测试的F1分数达到了0.72。但CNN+LSTM方法中,特征提取和指纹编码分为两个过程,并非端到端的网络,无法进行全局优化。相比双流网络和CNN+LSTM,3DCNN对时序建模具有较优的表现且模型结构简洁,更适合作为短视频视觉指纹提取的主干网络。Tran等[14]使用对称的3×3×3卷积核搭建了一个时空特征提取通用的网络C3D,并将其用于行为识别、场景识别和视频相似度分析等领域。Tran等[15]在ResNet网络基础上结合3D卷积进一步提出改进的R3D网络。这些早期的3DCNN相较于2DCNN性能提升有限。为此,Tran等[17]提出了R3D网络的改进版R(2+1)D,将3D的卷积分解为2D的空间卷积和1D的时间卷积,该方法附加的大量非线性运算使得模型更易优化,具有更小的误差。
随着短视频数据与日俱增,出于对计算开销和存储成本的考虑,短视频指纹往往要求较为紧凑。因此提出了一种基于R(2+1)D三元孪生网络的短视频指纹提取方法,既保证了指纹的紧凑性同时提高了其鲁棒性。在R(2+1)D孪生网络训练阶段,首先对视频数据集进行预处理,分割视频镜头,提取视频关键帧;然后构建3个共享权重参数的R(2+1)D网络分别输入原始视频、副本视频和无关视频的关键帧序列,通过相似性度量来学习视频组的关联性[18];并根据三元组损失和分类损失更新网络参数。在测试阶段,通过利用训练好的短视频指纹提取网络获得查询视频的视频指纹,进而计算其与短视频指纹集中指纹的汉明距离,通过短视频指纹匹配快速判别测试视频是否为副本视频。
本文的主要贡献如下:
① 与现有的大多数视频指纹提取方法不同,通过构建一种端到端的深度卷积神经网络来提取视频特征并获取短视频指纹,避免了特征提取和指纹编码过程相互独立而造成的局部优化问题。
② 基于R(2+1)D卷积构建三元组孪生网络的主干网络,对多个关键帧进行同步学习,充分挖掘视频的时间上下文信息,提高短视频指纹的鲁棒性。
③ 结合三元组损失和分类损失,通过分类损失弥补三元组损失的训练优化问题,通过对不同视频特征距离的度量,学习视频间的关联关系,提高模型的准确性。
利用上述分析,设计的基于R(2+1)D孪生网络短视频指纹提取框架如图1所示。首先,通过对视频数据集进行划分,构建训练视频组,并提取视频关键帧作为网络的输入;然后利用共享权重参数的三元孪生网络提取时空特征并通过最小化损失函数进行网络参数的更新。最后将提取的紧凑特征向量通过哈希函数量化编码,输出二值的短视频指纹。
图1 基于R(2+1)D孪生网络短视频指纹提取框架
短视频各帧包含着空间结构信息,连续帧之间还包含时间信息。2D卷积无论应用于单帧还是多帧,输出都是二维向量,因此对视频进行表达时就会丢失时间序列的信息。3D卷积将二维的空间卷积扩展到三维的时空卷积,其卷积操作同时包含了视频单个帧及其前后多个帧对应位置的像素,可以同时保留时间信息和空间信息,3D卷积核如图2(a)所示。而(2+1)D卷积将2D的空间卷积与1D的时间卷积分解开来,如图2(b)所示。3D卷积核尺寸为t×d×d;而(2+1)D卷积中,空间卷积核尺寸为1×d×d;时间卷积核尺寸为t×1×1。
图2 3D卷积核和(2+1)D卷积核
由此得到3D卷积参数规模P3D如式(1)所示,(2+1)D卷积参数规模P(2+1)D如式(2)所示。
P3D=t·d2·Ni-1·Ni
(1)
P(2+1)D=Mi·(d2·Ni-1+t·Ni)
(2)
式中:Ni和Ni-1分别为网络模型第i层和第i-1层卷积的输出维度;Mi为(2+1)D卷积中,在空间卷积和时间卷积之间投影子空间的维数。
因此(2+1)D卷积中的参数量可以通过设定超参数Mi来控制,一般用式(3)设定,使得(2+1)D卷积的参数量大约等于实现完整3D卷积的参数量。
(3)
R(2+1)D卷积有两个优点:① 将3D卷积分解后,2D和1D卷积之间额外附加了大量的非线性运算单元,能表征更复杂的映射;② 时空卷积的分解会使模型在训练中迭代优化更加容易,可获得更低的训练误差。使用R(2+1)D卷积层、池化层和全连接层组成R(2+1)D卷积神经网络,对输入视频关键帧序列进行特征提取,使得输出的紧凑特征向量包含时空上下文信息。
下面将介绍三元组孪生网络结构和损失函数的设计。孪生网络结构常见的两种形式为二元组孪生网络[19]和三元组网络[20],它们都是通过构建模型参数相同的多分支网络进行相似性度量学习。其中,输入为正负样本对的二元组孪生网络,可以学习原样本与正样本或负样本的相似性,但忽视了正负样本的相对距离。而三元组网络以一组三元样本对作为输入,可以同时学习原样本与正负样本的距离关系,并利用三元组损失函数约束它们之间的距离,使得原始视频与它的副本视频的特征更接近,并拉大与其他无关视频的特征距离。因此,采用共享权重参数的三元组网络构建整体框架,如图3所示,3个分支的网络权重参数W共享,输入分别为原始视频关键帧x、副本视频关键帧x+和无关视频的关键帧x-,通过网络提取视频特征,采用三元组损失函数度量特征距离,对网络参数进行优化。三元组损失函数LT表示为
图3 共享权重参数的三元组网络结构
(4)
根据模型训练的需要,设置和改变损失函数中的margin来控制正负样本的距离。通过最小化三元组损失使原始视频与副本视频的特征距离变小,原始视频与无关视频的特征距离增大。由于三元组损失更关注当前训练样本的差异,而对距离本身没有做出要求,因此会使视频指纹对样本特征整体的分布信息不敏感,容易对语义相似度较高的负样本误判,最终增多漏检和误检,影响指纹的性能。因此需要将分类损失作为补充,增强指纹的独特性,这里采用的交叉熵损失函数LCE可表示为
(5)
式中:xij为输入样本;p和q为分类概率;N为三元视频组总数;M为标签类别总数。
将三元组损失和交叉熵损失结合,将分类损失看作对视频指纹的约束,减少因构建三元组视频而产生的样本特征分布不均匀问题,最终优化网络模型的损失函数L表示为
L=βLT+(1-β)LCE
(6)
式中:β为可变权重参数;LT为三元组损失函数;LCE为交叉熵损失函数。
下面将应用R(2+1)D三元孪生网络提取短视频指纹,分为训练和测试两个阶段。
① 训练阶段。使用共享权重参数的三元组孪生网络进行训练,主干网络包含5个R(2+1)D卷积层、1个时空池化层和2个全连接层。其中,最后1个全连接层的激活函数设为双曲正切函数tanh,其余部分设为修正线性单元ReLU。激活函数tanh将网络的输出固定到-1~+1之间,使每个输入在经过整个网络结构后对应的输出是处于(-1,1)连续的实数值,在保证良好的迭代训练情况下,降低后续量化操作带来的误差。短视频时空特征通过哈希函数量化为0或1,从而减少短视频指纹占用的存储空间,提高汉明距离的计算效率。即给定一个视频的关键帧集合xi,令F(xi;w)为xi经过R(2+1)D网络后学习合适的参数w,再通过函数sign将特征量转化为二值短视频指纹bi:
bi=sign(F(xi;w))
(7)
② 测试阶段。该阶段不使用三分支的网络,只需要将训练好的一个分支的R(2+1)D模型作为指纹提取网络。首先,对所用视频数据集提取视频指纹得到短视频指纹库;然后,对每一个查询视频使用相同方式处理,得到短视频指纹;最后,与短视频指纹库进行相似性距离度量,根据预设的阈值得到判定结果。短视频指纹的距离度量使用汉明距离H。
(8)
式中:bq为查询视频的短视频指纹;B为短视频指纹库中的指纹;L为短视频指纹长度;n为二值码的位数。
实验采用两个复制视频数据集CC_Web_Video[21]和VCDB[22]来评价提出方法的性能,共包括4组实验。
2.1.1 数据集
应用两个真实复制视频数据集来验证方法性能。
(1)CC_Web_Video数据集。CC_Web_Video是一个分为24类共包含12790个视频的真实复制检测数据集。这些视频来自YouTube、Google和Yahoo,并且没有对视频进行模拟复制的转化操作。其中有3481个视频属于这24类,占比约为27%,其他为无关视频。CC_Web_Video数据集中的视频帧示例如图4(a)所示。
(2) VCDB数据集。VCDB数据集是一个较新的视频复制检测数据集,该数据集分为两个部分,包含528个核心视频和9236个复制片段的核心数据集以及100000多个视频片段的未标注数据集。该数据集也完全采集于YouTube和MetaCafe等,涵盖了各种场景和主题,例如体育、电影、广告等,属于真实复制的数据集。本文主要使用核心数据集进行实验,其中的视频帧示例如图4(b)所示。
图4 CC_Web_Video数据集和VCDB数据集中视频帧示例
2.1.2 实验环境
实验平台采用Ubuntu 18.04系统,算法模型基于开源的深度学习框架PyTorch搭建,硬件为Intel®CoreTMi7-6700 3.40 GHz CPU,16 GB内存,NAVIDIA TITAN X(Pascal) GPU。R(2+1)D主网络初始化参数为UCF101数据集上R(2+1)D网络的预训练网络,其他网络参数初始化为高斯分布。每个训练视频片段提取N个关键帧作为输入,所有的帧经过缩放调整为128×171,并且经过中心裁剪后,最终输入为3×112×112 (3为RGB通道)。实验中,模型学习使用的超参数设置如表1所示。
表1 网络的超参数设置
2.1.3 评价指标
采用精确率(Precision)和召回率(Recall)来评价视频指纹的性能,其定义为
(9)
(10)
式中:TP为真阳性,即正确检索到的副本视频的数量;FP为假阳性,即误检的视频数量;FN为假阴性,即漏检的视频数量。
进一步使用兼顾精确率和召回率的F1分数来表现模型性能,其定义为
(11)
由于视频指纹提取网络的输入关键帧数、三元组损失函数的margin和视频指纹长度等参数会影响视频指纹性能,因此本文在CC_Web_Video数据集进行简单控制变量的测试,来确定最优或最平衡的参数选择。首先是模型输入选用的关键帧数量,分别从每个视频片段提取8~24个关键帧作为模型输入,间隔为4。实验结果如图5(a)所示,可以看到输入关键帧数为8时,F1分数处于最低的0.9111,随着关键帧数的增多,F1分数也在提升。在帧数达到16时,F1分数达到0.9622,但增速放缓,在帧数达到20帧时,F1分数达到最高的0.9644,说明20个关键帧已经可以满足网络模型对一个短视频的训练和指纹提取的要求。而使用24个关键帧作为输入时,F1分数为0.9642低于使用20个关键帧的F1分数,其原因是部分视频提取的关键帧会出现重叠,产生冗余,导致F1分数的降低。
其次,三元组损失函数中margin参数对性能有着很大的影响,并且与视频指纹长度有紧密的关系。这里将视频指纹的长度设定为常用的64 bits,然后分别将margin设为12~32进行训练,margin的选用间隔为4。训练出的模型实验结果如图5(b)所示。根据图5(b)中结果可以看出,F1分数随着margin取值的增长,有了先增后减的变化,并在margin设为20时达到最优的0.9622,与最低的0.9342相比,领先了0.028。因此,margin的最优取值为哈希码长度的1/4~2/5,原因是在该情况下最小化损失函数可以使原始视频与正负样本的距离较为合适,减少了对测试样本视频的误判和漏判,提高了识别的准确性。
最后测试了不同长度的短视频指纹对性能的影响。实验中分别将模型提取的视频指纹长度设为16~80 bits,间隔为8 bits,输入帧数为16,margin取值统一设为短视频指纹长度的1/4,实验结果如图5(c)所示。从图5(c)中可以看出,模型的F1分数由最低的0.9112随指纹的比特数的增长提高到0.9652。并且由于48 bits和56 bits视频指纹长度对应的F1分数的增长幅度为0.0076,而56 bits和64 bits、64 bits和72 bits的F1分数增长幅度分别为0.0034和0.0019,可以发现在56 bits后F1分数增长变缓。原因是短视频指纹在低比特数的情况下,损失的信息较多,因此随着比特数的提高,会有较大的性能提升,而当比特数提高到一定程度后,包含的信息已经足够多,故使性能达到了瓶颈,从而增速减小。考虑到视频指纹的性能和计算开销之间的平衡关系,因此后续实验统一将模型的输入帧数设为16,视频指纹的长度设为64 bits,margin的取值设为20。
图5 不同参数的F1分数对比
为了证明所用 R(2+1)D网络的有效性,将所提出的方法的主干网络用其他主流的3DCNN进行替换,分别使用了C3D[14]和R3D[15],并将其组成深度相同的三元组网络结构进行消融实验。 C3D网络由3D卷积层、池化层和全连接层构成,而R3D网络由基于3D残差块的卷积层、池化层和全连接层构成。为了减少网络设置带来的影响,3个网络的激活函数均使用ReLU,损失函数使用三元组损失,并在超参数保持一致的情况下进行训练。通过调整测试时指纹的汉明距离阈值H,绘制了P-R曲线来更形象地展示主干网络对性能的影响。在CC_Web_Video数据集和VCDB数据集进行实验的结果分别如图6(a)和图6(b)所示,具体的精确率和准确率在表2中给出。可以看出,在CC_Web_Video数据集中R(2+1)D作为主干网络的性能,相比于C3D和R3D作为主干网络的模型性能,均得以提高。例如,在H=6时,R(2+1)D网络的精确率为0.971分别高于C3D和R3D网络0.05和0.012,召回率分别高出0.14和0.04;当H=20时,3个网络的召回率达到1.0,R(2+1)D网络的精确率为三者最高的0.189。同样在VCDB数据集中,R(2+1)D网络的P-R曲线的下降趋势明显弱于其他两个网络,其精确率和召回率都有更好的表现。例如,在H=12时,R(2+1)D网络的精确率和召回率分别比C3D网络高0.148和0.05,而与R3D网络相比较,虽然召回率都为0.6,但R(2+1)D网络的精确率比R3D网络高出了0.055。在两个数据集上的实验结果均证明了R(2+1)D网络在提取短视频指纹时的性能优势。说明3D时空卷积的分解会产生更多的非线性运算,带来了丰富的时空上下文信息,有助于提高指纹的鲁棒性和独特性。
表2 C3D、R3D和R(2+1)D网络的精确率和召回率对比
图6 在CC_Web_Video数据集和VCDB 数据集的不同网络的P-R曲线表现
为了直观展示本文方法的效果,图7为在CC_Web_Video和VCDB数据集应用提出的短视频指纹提取方法生成的结果。图7中为8对样本视频以及对应的64 bits的视频指纹,其中图7(a)~图7(d)为CC_Web_Video数据集中的示例,图7(e)~图7(h)为VCDB数据集中的示例,副本短视频指纹中与原视频指纹数值不符的位置进行了标红。图7(a)的副本视频指纹与原视频指纹的二值码错误位数为3,也就是汉明距离为3。图7(g)的副本视频指纹与原视频指纹的汉明距离为8个示例中最大,达到了7。从8个示例整体来看,在一对视频样本中,副本视频指纹存在少量二值码错误,与原始视频指纹的汉明距离小。而8组不同视频的指纹汉明距离均较大,例如,图7(a)和图7(b)的汉明距离为35。由此得出,在短视频主观视觉内容极为相似时,视频指纹能够有效反映出视频数据差异,且不相关视频之间的指纹数据差异较大,有良好的独立性。
图7 在CC_Web_Video数据集和VCDB数据集的8对视频和视频指纹
为了验证所提方法的有效性,与现有短视频指纹提取主流方法进行了性能比较,结果如表3所示,对比方法包括使用不同的预训练网络AlexNet[23]、VGG-16[24]、DenseNet-264[25]和ResNet-50[26],以及VGGNet+Sparse coding[6]和CNN+LSTM[16]。采用了3种超参数Mi取值,分别取(2+1)D卷积的参数量约为标准的1/2、1和2倍(P3D/2P(2+1)D、P3D/P(2+1)D和2P3D/P(2+1)D)为Ours(1/2Mi)、Ours(Mi)和Ours(2Mi)。实验在两个数据集上比较了F1分数和指纹提取速度。从表3中看出,Ours(2Mi)方法取得了最高的F1分数,在CC_Web_Video数据集上为0.9683,高于最好的CNN+LSTM方法0.0247,在VCDB数据集上为0.7369,比CNN+LSTM方法领先了0.0164。接下来讨论速度,Ours(2Mi)方法的速度是98.3 f/s,相比CNN+LSTM方法快了16.4 f/s,同时达到了实时性要求,所提出方法中Ours(1/2Mi)速度最快,为245.7 f/s,虽然低于最快的DenseNet-264模型27.9 f/s,但是在两个数据集中Ours(1/2Mi)的F1分数与DenseNet-264相比,分别高出了0.0274和0.0499。速度方面的原因可以通过计算卷积神经网络时间复杂度来说明,计算公式为
表3 不同算法的F1分数比较
(12)
式中:D为卷积层的深度;M为输出特征图的边缘长度;K为卷积核体积;C为输出通道数。
表3也给出了各个网络的时间复杂度,其中VGGNet+Sparse coding和CNN+LSTM由于不是由单一的卷积网络构成,无法给出时间复杂度。从结果看到,DenseNet-264的时间复杂度约为1.16×1010,而Ours(1/2Mi)方法网络时间复杂度约为1.34×1010,高出DenseNet-264约1.8×109,因此所提出的方法的速度略低。尽管速度不是最快的,但本文方法在满足实时性的前提下,在两个公开的真实视频复制数据集上均取得了最优的F1分数,并且可以通过修改Mi来控制卷积的参数量,获得更低的计算复杂度或更高的准确率,而标准的Mi是性能较为平衡的取值。综合考虑F1分数和处理速度,证明了本文所提出的方法的有效性和先进性。
提出了一种基于R(2+1)D三元孪生网络的视频指纹提取方法。首先,利用R(2+1)D卷积神经网络作为主干网络充分获取视频的时间上下文信息;然后结合使用了三元组损失和分类损失,通过分类损失弥补三元组损失的训练优化问题,该方法可以度量视频的特征距离,学习不同视频的关联关系,从而提高了模型的性能;最终构建了端到端的深度卷积神经网络来提取视频特征并获取视频指纹,进行全局优化,获取良好性能的短视频指纹。在现有的真实数据集上进行测试,该方法提取的视频指纹具有更好的表现,在CC_Web_Video和VCDB数据集上的F1分数分别达到了0.9683和0.7369,表明该网络能够提取更有效的视频特征,更有利于视频指纹的距离度量。未来将考虑融合多模态特征,利用音频等信息,进一步提高视频指纹的性能,以更有效地辨别一些时间或空间变化复杂的样本。