本发明属于计算机软件技术领域,涉及视频表征技术,具体为一种基于视频和文字描述对判别的视频特征学习方法。
背景技术:
随着互联网上的视频数据爆炸式地增长,对视频进行智能分析的需求不断上升,而视频分析的基础和关键是获取能够有效描述视频所包含的信息的视频特征,在提取出的视频特征之上构建多样的视频分析具体应用。使用深度学习技术学习高效的视频特征已经成为普遍采用的方法,这些方法大体上可以分为三类。
第一种应用方式是使用在人工标注的动作识别数据集上训练完成的三维卷积神经网络学习视频特征。近些年出现了许多人工标注的大规模动作识别数据集,如kinetics、youtube-8m等,在这些大规模数据集上进行训练深度学习网络进行动作识别任务,训练完成后将网络的最后一层卷积层的输出作为视频的特征表示,这种方法能够有效提取视频的特征信息,但是大规模数据集的标注需要耗费大量的人力物力,成本十分昂贵,难以通过扩充数据集中的训练数据的数量来提升特征学习的效果。第二种应用方式是利用自监督的方式训练三维卷积神经网络学习视频特征,具体方法为根据视频自身的信息和特点设计代理任务并训练深度网络完成这些代理任务,期望通过这些代理任务使网络能够学习到视频中有效语义信息作为视频的特征,例如dejingxu设计了一个预测视频片段顺序的代理任务,alidiba通过训练网络预测视频的下一帧来获取视频的特征表示。这些方法无需人工标注,成本较低,能够有效利用更大规模的视频数据进行训练,但是学习到的视频表征效果比较一般。第三种应用方式是利用视频多模态的特性来构建监督信息训练三维卷积神经网络,例如joeyue-heing通过训练深度学习网络预测视频的光流信息的方式来获取视频的特征表示,brunokorbar对视频中画面和音频是否同步进行建模,将视觉编码网络和音频编码网络联合训练,学习有效的视频特征表示。这一类工作能够在无需高昂人力标注成本的同时学习到较好的视频表征。
互联网上有许多容易获得的与视频内容有关的语言描述,例如电影视频和描述电影情节的剧本,youtube网站中由用户自己上传的视频和标题。本发明着力于如何有效地利用语言描述作为辅助监督信息训练三维卷积神经网络学习视频特征,视频的语言描述具有容易获取、语义信息丰富以及与视频内容关联度大的特点,十分适合作为训练视频特征提取器的监督信息,但是目前没有一种直接利用视频的语言描述作为监督信息的视频特征学习方法。
技术实现要素:
本发明要解决的问题是:目前大多数的视频特征的学习方法为利用人工标注的动作类别标签作为监督信息训练三维卷积神经网络进行动作识别任务,这种方法需要耗费大量的人力成本对视频的类别进行标注,缺乏实用性和可拓展性;还有一些方法利用视频本身的结构设计代理任务训练网络学习视频特征,这一类方法学习到的视频特征效果较差,无法有效对视频所包含的信息进行提取。本发明要解决的问题便是如何在不需要繁重的人力成本的情况下使神经网络学习到高效的视频特征表示。
本发明的技术方案为:一种基于视频和文字对判别分析的视频特征学习方法,将视频及与视频匹配的文字描述构成视频-文字对,采用三维卷积网络提取视频特征,采用distilbert网络提取文字描述特征,通过训练使视频和其对应的文字描述具有相似的语义特征,使得文字描述自动成为对应视频的标签,训练构建深度学习网络,用于对视频特征的学习。
进一步的,本发明包括以下步骤:
1)准备阶段:构建两个历史特征序列用来分别存储数据库中视频及其文字描述的特征;
2)生成训练样例:每一个训练样例由一段视频片段和与视频匹配的文字描述组成;
3)特征提取阶段:分别提取视频特征和文字描述特征;
4)损失函数计算阶段:利用步骤3)得到的视频特征及文字描述特征,与历史特征序列中的特征计算损失函数,并更新历史特征序列中的特征;
5)训练阶段:使用sgd优化器对损失函数进行优化,使用退火策略通过反向传播算法来更新深度学习网络参数,迭代训练深度学习网络;
6)测试阶段:将待学习的视频帧序列输入到训练好的深度学习网络中,得到视频帧的视频特征表示,或将待学习的文字描述输入网络中,通过视频-文字对的关系,得到对应的视频特征表示。
作为优选方式,所述步骤具体为:
1)准备阶段:构建两个历史特征序列,分别用来存储视频及其文字描述的特征,将历史特征序列中的特征初始化为满足高斯分布的随机值;
2)生成训练样例:每一个训练样例由一段视频和与视频匹配的文字描述组成,对于视频数据,使用ffmpeg对原视频进行抽帧处理,随机抽取视频中连续的s帧,从中按照设定的步长抽取s帧,对于文字描述数据,去除其中的特殊字符,得到干净的文字描述;每一个视频及其对应的文字描述组成一个视频-文字对;
3)对视频-文字对进行特征提取:
3.1)视频特征提取:对于每个由s帧图像组成的视频片段,利用3dresnet-50进行特征提取,使用全连接层对结果进行处理,将特征的维度转化为256,并且利用l-2范数对特征进行归一化,得到最终的视频特征;
3.2)文字描述特征提取:对于每个文字描述,首先利用wordpiece技术对文字描述中的单词进行令牌化,利用distilbert进行特征提取得到文字描述所包含单词的特征,对文字描述中的每个单词的特征取平均,得到句子特征,将句子特征依次通过全连接层、批归一化层、relu层以及另一个全连接层,将特征的维度转化为256,并且利用l-2范数对特征进行归一化,得到最终的文字描述特征;
4)损失函数的计算:对于每个训练样例的视频-文字对,经过特征提取得到其特征对,对于视频特征,从步骤1)中的历史特征序列中抽取与视频特征所属视频相匹配的文字描述特征,并在历史特征序列中随机采样k个与该视频不匹配的文字描述特征,将视频特征分别与匹配文字描述特征、及不匹配文字特征相乘,得到视频特征与其匹配文字描述特征的相似度以及视频特征与其不匹配文字描述特征的相似度;同样的,对于文字描述特征,从步骤1)中的历史特征序列中抽取与文字描述特征所属文字相匹配的视频特征,随机采样k个与该文字描述不匹配的视频特征,文字描述特征与视频特征分别相乘,得到文字描述特征与其匹配视频特征的相似度以及文字描述特征与其不匹配视频特征的相似度,通过最大化匹配相似度以及最小化不匹配相似度构造损失函数;
5)训练阶段:使用步骤5)的损失函数、sgd优化器、及课程学习的策略,通过反向传播算法来更新深度学习网络参数,不断重复步骤2)至步骤5),直至达到迭代次数,其中,每次迭代计算后,利用新计算出来的视频特征和文字描述特征,对历史特征序列中的特征进行按照设定的权重更新;
6)测试阶段:将视频帧序列输入到深度学习网络中,得到视频帧的文字描述特征表示;将文字描述输入网络中,得到文字描述的特征表示,与相对应的视频特征结合,用于描述-视频检索,零次学习的动作识别等任务中;将训练好的网络参数作为初始化,用于少样本学习的视频理解任务中。
本发明与现有技术相比有如下优点
本发明提出了一种利用文字描述信息作为辅助信息进行视频特征学习的方法,这种方法相比于利用手工标注的视频标签进行特征学习的方法,能够有效减少人力成本,并且仍能够获得与该方法相近的效果;与同样不需要昂贵人工标注数据的现有技术相比,本发明能够达到优于这些方法的效果。
本发明提出了利用视频和文字描述进行判别化的方法进行视频特征学习的方法,相比于只利用随机挑选或手工挑选的正负样本对进行训练,本发明能够更加有效得利用数据集中的所有数据,得到更加具有判别力的视频表征。
附图说明
图1是本发明所使用的系统框架图。
具体实施方式
本发明提出了一种基于视频和文字描述对判别的视频特征学习方法,将视频及与视频匹配的文字描述构成视频-文字对,采用三维卷积网络提取视频特征,采用distilbert网络提取文字描述特征,通过训练使视频和其对应的文字描述具有相似的语义特征,使得文字描述自动成为对应视频的标签,训练构建深度学习网络,用于对视频特征的学习。
具体包括以下步骤:
1)准备阶段:构建两个大小为n×256历史特征序列用来分别存储数据库中视频及其文字描述的特征,其中n表示数据库中视频的数量,特征的维度为256维,将历史特征序列中的特征初始化为满足高斯分布的随机值。视频和文字描述的历史特征序列分别记为bv和bt,结构如下:
其中
本发明历史特征序列的设置方式,不同于常规使用固定特征以及使用同一批中数据特征的方式,本发明使用历史特征序列维护历史上的视频和文本特征,能够随着网络的训练不断更新特征用于损失函数的计算,而且能够不局限于批处理的大小,快速处理大量的视频和文字描述特征。
2)生成训练样例:每一个训练样例由一段视频片段和与视频匹配的文字描述组成。对于视频数据,使用ffmpeg对原视频进行抽帧处理,随机抽取视频中连续的32帧,从这32帧中按照步长为4抽取8帧,对这8帧图像进行随机裁剪及尺度变换,得到尺度为224*224的图像,记做vi;对于文字描述数据,去除文字描述中的特殊字符,包括非自然语言(如英文)的字符及标点符号等,得到干净的文字描述,记做ti;每一个视频及其对应的文字描述组成一个视频-文字描述对,记做(vi,ti)。训练样例各个数据具体组成形式为:
1.抽帧和预处理后得到的视频片段帧序列vi如下:
vi={img1,img2,img3,img4,img5,img6,img7,img8}
其中vi代表第i个视频帧序列,其由8个图像帧imgi组成。
2.经过预处理后的文字描述ti:
ti={word1=word2,word3,...,wordc-1,wordc}
其中ti代表第i个文字描述,由c个单词wordi组成。
3)特征提取阶段:分别提取视频特征和文字描述特征。
3.1)视频片段特征提取:对于每个由8帧图像组成的视频片段vi,利用3dresnet-50进行特征提取得到
3.2)文字描述特征提取:对于每个文字描述ti,首先利用wordpiece技术对文字描述中的单词进行令牌化,利用distilbert进行特征提取得到句子所包含单词的特征,记做
4)损失函数的计算:对于每个训练样例的视频和文字描述对(vi,ti),经过特征提取得到其特征对
计算损失函数时,首先计算视频v与文字描述ti相匹配视频的条件概率p(ti|v)以及文字描述t与视频vi相匹配文字描述的条件概率p(vi|t),以p(ti|v)为例:
其中τ为温度常数,一般设为0.07,n表示历史特征序列中视频数量,t表示转置,tj表示不匹配的文字描述特征;同理得到条件概率p(vi|t)。另外,若实际计算中按照实际视频数量取n,计算量太大了导致难以计算,所以一般这里的分母利用取出的4096个样本进行近似计算。实际计算时的公式如下:
利用条件概率可以得到最终的损失函数l。
l=lv lt
其中pn(ti|v)表示一个平均噪声分布,m表示不匹配特征的数量,
本发明利用视频和文字描述进行判别化的方法进行视频特征学习,相比于只利用随机挑选或手工挑选的正负样本对进行训练,本发明能够更加有效得利用数据集中的所有数据,得到更加具有判别力的视频表征。
5)训练阶段:使用步骤5)描述的损失函数,使用sgd优化器,使用课程学习的策略通过反向传播算法来更新网络参数,不断重复步骤2)至步骤6),直至达到迭代次数,迭代过程中,对历史特征序列的更新:经过迭代计算后,利用新计算出来的视频和文字描述特征对
历史特征序列更新的具体计算过程如下:
对于视频vi,本次迭代得到的视频特征为
其中λ为更新的权重,一般取0.5,
同样的,对于文字描述ti,本次迭代得到的文字描述特征为
本发明利用课程学习的策略进行训练,先固定在大数据集上预先训练好的distilbert网络参数不动,只更新网络中的其他部分,保证预训练参数不被开始时网络产生的低质量的结果和噪声的影响,进行一段时间的训练后,网络有了一定的提取特征的能力,再对网络中的所有参数一起训练,使视频部分和文字描述部分共同学习,持续优化网络特征提取的能力,这种方法相比于其他训练方式,能够使网络收敛速度更快,并且收敛到一个更优的结果。
6)测试阶段:将视频帧序列输入到网络中,得到视频帧的特征表示,该特征可以被应用于动作识别等任务中;将文字描述输入网络中,得到文字描述特征表示,与视频特征表示结合,可以被应用于视频-描述检索,零次学习的动作识别等任务中。将训练好的网络参数作为初始化,可以用于少样本学习的视频理解任务中。
下面通过具体实施例说明本发明的实施。
利用kinetics数据集中的视频以及视频本身的标题进行训练,未对视频数据集进行手工标注信息,具体使用python3编程语言,pytorch1.0深度学习框架实施。
图1是本发明所使用的系统框架图,具体实施步骤如下:
1)准备阶段及训练样例生成,在gpu内存中初始化两个大小为n×256的矩阵,n为数据集的大小,也即视频数量,本实施例中设为217984,生成满足高斯分布的噪声初始化矩阵中的值,使用ffmpeg对视频进行抽帧,按照原帧率处理,统计每个视频的帧数、以及视频帧所在路径,存储到视频信息文件中,以方便程序对数据进行加载;处理视频对应的文字描述信息,删除文字描述中包含的特殊字符,按照【视频序号,文字描述】的格式存储到文字描述信息文件中。训练过程中,程序读取了视频序号后,从视频信息文件读取视频的帧数以及视频帧所在的路径,根据视频所在路径读取视频帧,随机读取连续的32帧并通过随机采样,得到两两间隔为4的8帧图像,对视频帧进行随机裁剪,并将裁剪区域通过双线性插值方式变形为224*224,通过垂直翻转对训练样本进行扩增,将得到的图像序列减去imagenet数据集三通道均值,最后转化为张量tensor形式,并且从文字描述信息文件中读取视频对应的文字描述,对较短的文字描述进行填充,对较长的文字描述进行裁剪,使不同视频的文字描述信息的长度一致,方便进行批处理,利用wordpiece对单词进行令牌化,并且转化为tensor的形式。最后按批处理数量加载并打乱次序。
2)模型的配置阶段,即特征提取。对于视频特征的提取网络,使用3dresnet-50作为基础网络结构,使用pytorch软件默认的方式随机初始化网络中的参数,去除网络中原本的全连接层,输出网络全局池化层得到的特征,将得到特征输入到输入通道为2048,输出通道为256的全连接层,再将得到的特征利用l-2范数进行归一化。对于文字描述特征的提取网络,使用distilbert作为基础网络结构,网络中载入在英语维基百科和torontobookcorpus上与训练的参数模型,得到文字描述中句子中包含的每个单词的特征向量,经过一个全局平均池化操作,得到句子的特征向量,为了将句子映射到与视频片段相同的特征空间当中,首先经过一个输入通道数为768,输出通道数为512的全连接层,再依次通过批归一化层,非线性激活层,最后再通过一个输入通道数为512,输出通道数为256的全连接层,得到与视频特征在同一特征空间的文字描述特征,将得到的特征利用l-2范数进行归一化。
3)损失函数计算阶段:从历史特征序列中抽取训练样本对应的历史视频片段特征和文字描述特征,并且从其他样本中随机采样4096个历史视频片段特征和4096个文字描述特征,将本次迭代得到的视频特征与从历史特征序列取出的文字描述特征分别相乘,并对其进行指数化,得到视频和文字描述的相似度,对于使用与视频对应的文字描述特征计算出来的相似度,令其除以1/217984加上它本身,再对结果取负对数,得到视频网络正样本的损失函数,对于其他相似度,令1/217984除以相似度与1/217984之和,并对结果取负对数,得到视频网络负样本的损失函数,正样本和负样本的损失函数相加得到视频网络的损失函数,同样的,将本次迭代得到的文字描述特征与从历史特征序列取出的视频特征分别相乘,并对其进行指数化,得到文字描述与视频的相似度,对于使用与文字描述对应的视频特征计算出来的相似度,令其除以1/217984加上它本身,在对结果取负对数,得到文字描述网络正样本的损失函数,对于其他相似度,令1/217984除以相似度与1/217984之和,并对结果取负对数,得到文字描述网络负样本的损失函数,正样本和负样本的损失函数相加得到文字描述网络的损失函数,将视频网络的损失函数与文字描述网络的损失函数相加得到总的损失函数。
4)训练阶段及历史特征序列更新,使用sgd作为优化器,最小化损失函数,设置batchsize为120,总的训练轮数设置为150,初始不更新distilbert网络中的参数,模型中的其他参数学习率为0.1,在110轮处开始更新distilbert网络中的参数,设置学习率为3e-5,其余部分学习率除以10,衰减率设置为5e-4,在8块titianxpgpu上训练。不断更新迭代进行训练深度学习网络,更新历史特征序列时,利用本次迭代计算出来的视频特征和文字描述特征更新历史特征序列中的特征,将新计算出来的视频特征与对应视频的历史特征取平均得到更新后的视频历史特征,将新计算出来的文字描述特征与对应文字描述的历史特征取平均得到更新后的文字描述历史特征。
5)测试阶段,同训练数据一样对待测试视频进行读取,得到视频帧的特征表示,该特征可以被应用于动作识别等任务中,在kinetics数据集上可以达到63.1%的准确率;将待测试文字描述输入训练得到的深度学习网络中,得到文字描述的特征表示,与视频特征表示结合,可以被应用于文字描述-视频检索,在lsmdc数据集中,top10的召回率可以达到14.3%,在ucf101上进行零次学习的动作识别任务,top1准确率可以达到39.9%。、将本发明训练好的深度学习网络参数作为初始化,还可以用于少样本学习的视频理解任务中。本发明仅利用kinetics中10%的数据进行训练,可以达到40.2%的top1准确率和67.8%的top5准确率结果,远高于随机初始化的10.7%和28.5%的结果。top1指预测的label取最后概率向量里面最大的那一个作为预测结果,如过预测结果中概率最大的那个分类正确,则预测正确,否则预测错误;top5指最后概率向量最大的前五名中,只要出现了正确概率即为预测正确,否则预测错误;top10指最后概率向量最大的前十名中存在正确概率即算正确。
1.一种基于视频和文字对判别分析的视频特征学习方法,其特征是将视频及与视频匹配的文字描述构成视频-文字对,采用三维卷积网络提取视频特征,采用distilbert网络提取文字描述特征,通过训练使视频和其对应的文字描述具有相似的语义特征,使得文字描述自动成为对应视频的标签,训练构建深度学习网络,用于对视频特征的学习。
2.根据权利要求1所述的一种基于视频和文字对判别分析的视频特征学习方法,其特征是包括以下步骤:
1)准备阶段:构建两个历史特征序列用来分别存储数据库中视频及其文字描述的特征;
2)生成训练样例:每一个训练样例由一段视频片段和与视频匹配的文字描述组成;
3)特征提取阶段:分别提取视频特征和文字描述特征;
4)损失函数计算阶段:利用步骤3)得到的视频特征及文字描述特征,与历史特征序列中的特征计算损失函数,并更新历史特征序列中的特征;
5)训练阶段:使用sgd优化器对损失函数进行优化,使用退火策略通过反向传播算法来更新深度学习网络参数,迭代训练深度学习网络;
6)测试阶段:将待学习的视频帧序列输入到训练好的深度学习网络中,得到视频帧的视频特征表示,或将待学习的文字描述输入网络中,通过视频-文字对的关系,得到对应的视频特征表示。
3.根据权利要求2所述的一种基于视频和文字对判别分析的视频特征学习方法,其特征是所述步骤具体为:
1)准备阶段:构建两个历史特征序列,分别用来存储视频及其文字描述的特征,将历史特征序列中的特征初始化为满足高斯分布的随机值;
2)生成训练样例:每一个训练样例由一段视频和与视频匹配的文字描述组成,对于视频数据,使用ffmpeg对原视频进行抽帧处理,随机抽取视频中连续的s帧,从中按照设定的步长抽取s帧,对于文字描述数据,去除其中的特殊字符,得到干净的文字描述;每一个视频及其对应的文字描述组成一个视频-文字对;
3)对视频-文字对进行特征提取:
3.1)视频特征提取:对于每个由s帧图像组成的视频片段,利用3dresnet-50进行特征提取,使用全连接层对结果进行处理,将特征的维度转化为256,并且利用l-2范数对特征进行归一化,得到最终的视频特征;
3.2)文字描述特征提取:对于每个文字描述,首先利用wordpiece技术对文字描述中的单词进行令牌化,利用distilbert进行特征提取得到文字描述所包含单词的特征,对文字描述中的每个单词的特征取平均,得到句子特征,将句子特征依次通过全连接层、批归一化层、relu层以及另一个全连接层,将特征的维度转化为256,并且利用l-2范数对特征进行归一化,得到最终的文字描述特征;
4)损失函数的计算:对于每个训练样例的视频-文字对,经过特征提取得到其特征对,对于视频特征,从步骤1)中的历史特征序列中抽取与视频特征所属视频相匹配的文字描述特征,并在历史特征序列中随机采样k个与该视频不匹配的文字描述特征,将视频特征分别与匹配文字描述特征、及不匹配文字特征相乘,得到视频特征与其匹配文字描述特征的相似度以及视频特征与其不匹配文字描述特征的相似度;同样的,对于文字描述特征,从步骤1)中的历史特征序列中抽取与文字描述特征所属文字相匹配的视频特征,随机采样k个与该文字描述不匹配的视频特征,文字描述特征与视频特征分别相乘,得到文字描述特征与其匹配视频特征的相似度以及文字描述特征与其不匹配视频特征的相似度,通过最大化匹配相似度以及最小化不匹配相似度构造损失函数;
5)训练阶段:使用步骤5)的损失函数、sgd优化器、及课程学习的策略,通过反向传播算法来更新深度学习网络参数,不断重复步骤2)至步骤5),直至达到迭代次数,其中,每次迭代计算后,利用新计算出来的视频特征和文字描述特征,对历史特征序列中的特征进行按照设定的权重更新;
6)测试阶段:将视频帧序列输入到深度学习网络中,得到视频帧的文字描述特征表示;将文字描述输入网络中,得到文字描述的特征表示,与相对应的视频特征结合,用于描述-视频检索,零次学习的动作识别等任务中;将训练好的网络参数作为初始化,用于少样本学习的视频理解任务中。
4.根据权利要求2或3所述的一种基于视频和文字对判别分析的视频特征学习方法,其特征是步骤4)损失函数的计算具体为:
利用步骤3)计算得到的经过归一化后的视频特征
其中τ为温度常数,一般设为0.07,n表示历史特征序列中视频数量,t表示转置,tj表示不匹配的文字描述特征;同理得到条件概率p(vi|t):
利用条件概率得到损失函数l:
l=lv lt
其中pn(ti|v)表示平均噪声分布,m表示不匹配特征的数量,