一种基于Spark的海量视频语义标注方法
【专利摘要】本发明提出了基于Spark的海量视频语义标注方法,其主要是以海量视频在Hadoop大数据集群环境下的弹性分布式存储为基础,采用Spark计算模式进行视频标注。该方法主要包括以下内容:基于分形理论的视频分割方法及其在Spark上的实现;基于Spark的视频特征提取方法和基于元学习策略的视觉单词形成方法;基于Spark的视频标注的生成方法。本发明,相对于传统的单机计算、并行计算或分布式计算,计算速度提高百倍以上,具有标注内容信息全、错误率低等优点。
【专利说明】—种基于Spark的海量视频语义标注方法
【技术领域】
[0001]本发明涉及一种视频的处理方法,特别是一种基于Spark的海量视频语义标注方法。
【背景技术】
[0002]近年来,随着多媒体应用及社交网络的风靡流行,各种多媒体数据(文本、图像以及视频等)呈现指数级的爆炸式增长;这些大规模数据给传统的多媒体研究,尤其是基于视频应用和研究带来了新的挑战和机遇,如何有效地组织、利用视频数据来驱动和满足用户对于视频多种个性化需求正成为计算机视觉和多媒体领域的一个研究热点。
[0003]人类所理解的视频与用底层视觉特征来表达的视频之间存在着很大的差距,即在视频语义和视觉特征之间横亘着“语义鸿沟”。为了实现更为贴近用户理解能力的、用自然语言描述的查询方式,对视频语义标注的研究逐渐引起人们的广泛注意。标注就是使用语义关键字或标签来表示一幅视频的语义内容,进而可以将视频检索转化为基于文本的检索。早期,基于文本的视频检索大都采用人工标注的方法,即需要专业人员对每幅视频标出关键字。然而,一方面人工标注存在主观性和不精确性,直接影响到检索结果的准确性?’另一方面对视频进行人工标注费时费力,尤其是面对目前的海量视频,人工标注十分困难。
[0004]大数据技术为海量视频标注提供了一个有效的解决途径。一方面,大数据技术可以解决大容量视频数据的存储问题;另一方面,分布式运算也可以解决视频语义分析运算。Spark是UC Berkeley AMP lab所开源的并行计算框架,Spark基于MapReduce算法实现的分布式计算,拥有Hadoop/MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
[0005]同时,Spark在机器学习方面有着无与伦比的优势,特别适合需要多次迭代计算的视频标注算法。同时Spark的拥有非常出色的容错和调度机制,确保系统的稳定运行。因此,使用Spark计算框架解决海量视频标注问题,具有非常好的易用性。
[0006]国内外已有诸多学者对多媒体标注进行了深入研究,图像内容语义注释方法(专利申请号200610053867.9)将图像处理技术与机器学习技术以及自然语言处理等技术结合起来,实现了对图像内容的语义标注;同时支持根据用户的标注特点校正底层的标注映射规则库,使得标注结果更符合具体用户的标注要求。一种基于语义二叉树的图像标注(专利申请号201110002770.6)对于特定场景的图像集,采用图像分割算法对用于学习的标注图像进行分割,获得图像区域的视觉描述;同时,构造用于学习的所有图像的视觉最近邻图并建立所述场景的语义二叉树;最后,对所述场景下的待标注图像,从语义二叉树的根节点到叶子节点找到相应位置,并将该节点处到根节点的所有标注字传递给所述图像。
[0007]这两种方法在数据量不大、实时性要求不高的情况下,能够取得不错的图片标注效果,但对于海量视频资源,单机的计算资源明显无法支持大规模运算,因此该算法无法应用到海量视频标注中去。本发明中,在Spark框架强计算能力的支持下,通过颜色矩、边缘、纹理三重特征表征一类实体,采用元学习策略在实体表征合理性和分类学习可靠性方面有了很大提闻。
【发明内容】
[0008]发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于Spark的海量视频语义标注方法。
[0009]为了解决上述技术问题,本发明公开了一种一种基于Spark的海量视频语义标注方法,包括以下步骤:
[0010]步骤1:将海量视频部署到一组计算节点上,通过Spark集群计算视频巾贞时间序列的分形维度差值,实现镜头分割,获取关键帧;关于Spark集群和Hadoop,可以参见:
1、基于Spark的机器学习平台设计与实现,唐振坤,厦门大学,2014-05-01,硕士论文;
2、基于Hadoop的海量视频数据存储及转码系统的研究与设计,李晓波,浙江工业大学,2013-03-28,硕士论文;3、基于Hadoop开源框架的视频内容分发平台研究,叶志强;刘晨鸣;王一梅广播电视信息,2013-03-15
[0011]步骤2:在Spark集群上提取对象的检测样本的颜色矩、边缘以及纹理特征向量,进行元学习策略训练,形成视觉词典;并依据视觉词典对关键视频帧进行预测,产生能表征该关键视频帧的视觉单词;
[0012]步骤3:通过Tf方法对待测视频的视觉单词进行优先排序,将筛选结果作为该视频的标注。TF词频(Term Frequency),TF表示词条在文档中出现的频率,频率越高说明该视觉单词在视频中的重要性越大。
[0013]步骤I在Spark集群上实现视频分割,划分海量视频分布至一组计算节点,利用分形方法将视频按时间序列分割为若干镜头,并提取关键帧,具体包括如下步骤:步骤1-1:转换视频数据格式,将视频二进制数据通过Hadoop自定义输出流转换为Spark集群可读取的byte型数据,并保存到Hadoop分布式系统Hadoop Distributed File System(以下简称“HDFS”)上;根据视频总帧数,利用并行分块函数parallelize把视频切分为块,一个块代表一个视频巾贞的弹性分布式数据集Resilient Distributed Datasets (以下简称“RDD”)数据对象parVideoRDD ;调用帧处理程序,将parVideoRDD中的每一数据块都并行的分配到P个计算节点,从而实现对整个视频的帧数据并行处理;
[0014]步骤1-2:采用差分盒法,计算每一视频帧分形维度,通过时间序列的分形维度差值,求出切变镜头和渐变镜头的边界,从而将视频分割为一组镜头;在此计算过程中,通过Spark在各计算节点见的联系方式SparkContext实现各个计算节点间共享,使用映射函数map O完成分配步骤,再使用归一函数reduce O完成更新步骤;
[0015]步骤1-3:按时间序列,取每一镜头临界帧作为该镜头的关键帧,返回Spark主节点的结果是关键帧号和其场景描述的视频帧的RDD数据,将该视频帧的RDD数据存储为KeyFrameSce.txt文本文件,用于后续步骤调用。
[0016]步骤2包括如下步骤:
[0017]步骤2-1:截取一组包括待测对象的各类图片,作为该对象的检测样本;将图片通过通道管理函数pipeO分配到一组计算节点,根据关键帧颜色矩、边缘直方图以及分形维度特征提取18维特征向量,用于表征该对象的图像语义内容;返回Spark主节点的结果是特征向量RDD数据,将其输出到文本文件SampleVec.txt中,此时SampleVec.txt文本文件包含该对象的特征信息;
[0018]步骤2-2:将分布式文件系统HDFS上的文本文件SampleVec.txt通过分析类SparkContext的文本读取函数TextFile读取字符串String类型的RDD数据SampleVecRDD,并将该数据分配到P个计算节点,P为大于I的自然数;采用基于元学习策略的4种分类算法,包括Generalized Winnow算法、支持向量机算法、条件随机域算法和最大熵算法,对代表该类对象的语义内容进行特征训练,形成代表该类对象的视觉单词,并与文字语义内容相关联;视觉单词是一个由元分类器表征且与文字语义内容存在相应映射关系的XML文件,每一个XML文件代表一类视觉单词;
[0019]步骤2-3:重复步骤2-1和步骤2-2,训练得到一组能够代表一类对象的特征的视觉单词,与相对应的文字语义内容建立映射关系后,汇聚成视觉词典;
[0020]步骤2-4:根据步骤2-1的,将步骤1-3得到的关键视频帧数据通过通道管理函数pipeO分配到一组计算节点,并提取18维特征向量,用于表征该关键视频帧的语义内容;返回Spark主节点的结果是关键视频帧的帧序号和特征向量RDD数据,将返回的[帧序号,特征向量RDD数据]输出到文本文件KeyFrameVec.txt中,此时KeyFrameVec.txt文本文件包含整个视频文件关键帧信息;
[0021]步骤2-5:根据步骤2-2,将分布式文件系统HDFS上的文本文件KeyFrameVec.txt通过SparkContext的文本读取函数TextFile函数读取字符串String类型RDD数据FrameVecRDD,数据FrameVecRDD每一行包含一巾贞号及语义特征向量,并将数据FrameVecRDD分配到P个计算节点;对照视觉词典,采用元学习策略对代表视频巾贞语义内容的特征向量进行预测,得出该视频帧所表述的一个以上的视觉单词;返回的结果是帧序号、视觉单词、对应文字组合的RDD数据,将该RDD数据存储为Word, txt文本文件,用于后续步骤调用。
[0022]步骤3将视频中各关键帧对应的视觉单词进行汇总,通过Tf模型筛选,实现视频基于量化单词的线性表达,形成视频标注,具体包括如下步骤:
[0023]步骤4-1:将HDFS上的文本文件Word, txt读取到Spark集群上,设待测视频所有关键帧共含有M个视觉单词,将这些视觉单词按照权值的大小进行排序,权值范围O?1,视觉单词权值由Tf模型决定;
[0024]步骤4-2:通过数据集RDD的保存文档函数SaveAsTextFile将视觉单词、对应文字及出现概率保存为HDFS上的文本文件Keywords, txt,取出现频率最高的五个视觉单词作为该视频的标注。
[0025]步骤2-1中,所述一组包括待测对象的各类图片为I万至3万张。
[0026]本发明涉及基于Spark的海量视频语义标注方法。首先,在Spark集群上,以HDFS存储方式将海量视频部署到若干计算节点上,通过分形维度实现镜头分割。其次,在Spark集群上提取对象样本的颜色矩、边缘以及纹理特征向量,进行元学习策略训练,形成视觉词典;并依据视觉词典对关键帧进行预测,产生能表征该镜头的视觉单词。最后,通过Tf方法对待测视频的视觉单词进行排序,将筛选结果作为该视频的标注。
[0027]本发明与现有技术相比,其显著优点为:采用Spark计算框架,将存储和计算节点在物理上结合在一起,从而避免在数据密集计算中易形成的1/0吞吐量的制约,通过数据冗余性,提升了可扩展性、容错能力、并发访问能力和并发读写能力;实现了对体量庞大的非结构化视频数据进行分析,将海量复杂多源的视频数据转化为机器可识别的、具有明确语义的信息,进而进行视频标注。
【专利附图】
【附图说明】
[0028]下面结合附图和【具体实施方式】对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0029]图1基于Spark的海量视频语义标注流程图。
[0030]图2海量视频数据Hadoop存储模型架构图。
[0031]图3Hadoop存储模型架构的写操作过程示意图。
[0032]图4Hadoop存储模型架构的读操作过程示意图。
[0033]图5基于Spark的元学习训练过程示意图。
[0034]图6基于Spark的元学习测试过程示意图。
【具体实施方式】
[0035]本发明基于Spark的海量视频语义标注方法,步骤如下:
[0036]第一步,建立Hadoop/Spark海量视频大数据平台,该平台由管理模块、结构模块和数据模块三部分组成且相互独立,实现海量数据的弹性存储;模块间通过以太网实现通信,实现各模块单独维护和升级,灵活处理系统的冗余和备份。如图2所示,管理模块向操作系统(客户端)提供一组访问界面,主要包括:对文件和目录的建立、打开、关闭、撤销、读、写、权限管理等。操作系统(客户端)通过这些访问界面获得数据存储系统的各种服务。结构模块,将不同结构的数据文件在数据库中创建对应的数据表,表中描述了文件属性信息和文件存储信息。数据模块是管理模块、结构模块的桥梁。数据模块将管理模块提交的用户文件以硬盘数据块或扇区为单位存储到文件系统,并将磁盘数据块或扇区信息存入结构模块中。
[0037]实现数据写操作过程,如图3所示。
[0038]I)客户端调用管理模块接口调用函数来创建文件。
[0039]2)向文件数据结构数据库查询文件信息。若文件不存在,在文件数据结构数据库中创建一个新的文件,即在对应文件类型的数据表中添加一条表项。管理软件模块返回“文件输出”命令给客户端,并创建文件输出缓冲,此缓冲用于客户端写入文件数据。文件输出缓冲的大小应和数据模块的数据块(扇区)大小保持一致。
[0040]3)客户端准备写入文件数据。将文件按数据块(扇区)的大小分割成独立块,再将第一个文件块写入文件输出缓冲,并将写入文件输出缓冲的数据大小信息发送给管理模块。
[0041]4)客户端向管理软件模块发出数据准备完毕消息。
[0042]5)管理模块向大数据数据模块请求一个磁盘块(扇区)。
[0043]6)把磁盘块(扇区)号返回给管理模块,并对本块(扇区)做已分配标记。
[0044]7)管理模块将文件输出缓冲中的数据发送给数据模块。
[0045]8)数据模块将文件系统返回的磁盘块(扇区)地址返回给管理模块。
[0046]9)管理模块收到确认消息后并通知结构模块把这个磁盘块(扇区)地址记录到文件的disk和sector表项中,并累计己写入的文件大小。
[0047]10)管理模块向客户端发数据写入成功消息,并通知客户端写入下一个文件块。循环执行3)到10),直到所有的文件块都传输完毕。
[0048]11)客户端收到最后一个文件块的写入确认消息后向管理模块发出关闭文件消息,文件管理模块收到文件关闭消息后执行文件关闭操作,文件写入过程结束。实现数据读的过程如下,如图4所示。
[0049]I)客户端调用管理模块接口调用函数打开所要读取的文件。
[0050]2)管理模块向文件数据结构数据库模块发出读取文件信息命令。
[0051]3)文件数据结构数据库模块返回文件信息。管理模块得到该文件的所有文件信息和对应的数据块(扇区)地址。
[0052]4)管理模块创建文件输入缓冲,此缓冲用于客户端读取文件数据。文件输入缓冲的大小应和数据模块的数据块(扇区)大小一致。管理模块根据文件数据块(扇区)地址向数据模块发出数据块(扇区)读取命令。
[0053]5)数据模块将数据块(扇区)数据发送到管理模块。
[0054]6)管理模块通知客户端输入数据准备好。
[0055]7)客户端调用管理模块接口调用函数开始读取数据。
[0056]8)管理模块将输入缓冲数据和数据大小值发送到客户端。
[0057]9)客户端向管理模块发送数据读取确认消息。管理模块收到确认消息后开始重复步骤5到步骤10。
[0058]10)全部数据块都发送完毕后,管理模块向客户端发送文件关闭消息。
[0059]第二步,将海量视频部署到若干计算节点上,在Spark集群上,通过分形维度实现镜头分割,并提取镜头关键帧。
[0060]I)转换视频数据格式,将HDFS上二进制的视频数据通过Hadoop的自定义输出流转换为Spark可读取的数据,视频数据通过分析类SparkContext的文件读取函数TextFile读取为Spark集群上的String类型RDD数据VideoRDD,利用RDD的数据类型转换函数toArray将该RDD数据转换为Int型的Array数据VideoArray。根据视频的总巾贞数,利用数据并行分块函数parallelize把VideoArray切分为块大小为一个视频帧的RDD数据parVideoRDD,此时调用帧处理程序,parVideoRDD中的每一块数据区都将并行的分配到P个计算节点,从而实现了对整个视频的帧数据并行处理。
[0061]2)通过SparkContext的参数共享函数broadcast在各个计算节点间共享镜头分割所需的参数。在每个计算节点,对每一视频帧采用差分盒法计算分形维度,定义第i帧图像的分形维度为Di,则第i帧与第i+Ι帧的分形维度差fdi = |Di+1-D」。在同一个镜头内,帧差变化存在于很小范围内。镜头边界帧差应远大于所属镜头帧差平均值和下一时间序列镜头的帧差平均值。对于切边镜头,迭代求解出最大帧差fd_,帧前镜头的帧差平均值fdbavg,帧后镜头的帧差平均值fda avg。如果fdmax > 2*fdb avg且fdmax > 2*fda avg,则判定该帧是切变的镜头边界。对于渐变镜头,当渐变未被标记时,若fdmax > 2*fdb avg且fdmax < 2*fdaavg,则判定为渐变镜头边界的开始帧;如果渐变开始帧己被标记,若fdmax > 2*fda avg,则判定为渐变镜头边界的结束帧,从而将视频按照时间序列切分为若干镜头。
[0062]3)若所有视频帧处理过后,视频每一帧均转化为[帧序号,分形维度]RDD数据,返回Spark主节点的结果是一组时间序列临界帧(简称“关键帧”)的帧号和其场景描述图像RDD数据,该RDD数据存储为KeyFrameSce.txt文本文件,此时整个文件包含视频文件关键帧的属性信息,以便进一步调用。
[0063]第三步:在Spark集群上提取对象样本的颜色矩、边缘以及纹理特征向量,进行元学习策略训练,形成视觉词典;并依据视觉词典对关键帧进行预测,产生能表征该镜头的视觉单词。
[0064]I)选取两万张对象的各种样本图片并提取其底层特征,包括8维的颜色矩、9维边缘分布直方图、I维分形维度特征,组成包括颜色、边缘、纹理在内的18维特征向量;由于分形维度能更好的表示图像特征,这里赋予32%的权重,其他各维均匀赋予4%的权重。这样的一组特征向量就代表了该对象的视觉特征。将这些图片通过通道管理函数pipe O分配到一组计算节点进行特征提取,返回Spark主节点的结果是特征向量RDD数据,将其输出到文本文件SampleVec.txt中,此时SampleVec.txt文本文件包含该对象的特征信息;
[0065]2)将 Hadoop 的 HDFS 上的 SampleVec.txt 文本文件通过 SparkContext 的文件读取函数TextFile读取为Spark集群上的String类型RDD数据SampleVecRDD,并将该数据分配到P个计算节点。采用基于元学习策略对代表图片样本语义内容的特征向量进行训练。即将4种分类算法即GeneralizedWinnow算法、支持向量机算法(SVM)、条件随机域算法(CRF)和最大熵算法(ME)作为基分类器,图片实例Xi(i为η个图片的序号),其表征特征向量为Vec (Xi),正确分类标识为I (Xi),通过上述4种学习算法训练,分别获得基分类模型 Mgen、MSVM、MKCF、MME,将 4 种算法的预测结果 P (Xi) gen、P (Xi) SVM、P(Xi)10^ P(Xi)Iffi 和 Vec(Xi)、Kxi)为输入,以CRF为元分类器进行二次训练,可得元分类模型Mmrta,如图5所示。元分类模型Mmrta的表征XML文件可作为该类特征向量的视觉单词,将每个视觉单词与文字语义关联,即使得每一个视觉单词(XML文件)都与其文字符号相对应,并录入视觉单词库。依此类推,对多种对象样本进行训练,累积形成视觉词典。
[0066]3)将 Hadoop 的 HDFS 上的 KeyFrameVec.txt 文本文件通过 SparkContext 的文件读取函数TextFile读取为Spark集群上的String类型RDD数据FrameVecRDD,并将其分配到P个计算节点。类似第三步2)所述,采用基于元学习策略对关键帧的特征向量进行预测。关键帧实例Xi (i为η个视频关键帧的序号),其表征特征向量为Vec(Xi),分类标识为I (Xi)。通过上述4种学习算法预测,将预测结果P (Xi) gen、P (Xi) SVM、P (Xi) ECF>P (Xi) ME和Vec (Xi)输入分类模型Mmrta,对照视觉词典中的单词逐一预测是否包含该单词内容,如图6所示。一副关键帧种可包含一个或多个视觉单词,程序返回Spark主机的结果是帧号、视觉单词、对应文字符号组合RDD数据,将该RDD数据存储为Word, txt文本文件,以便进一步调用。
[0067]第四步,将视频中各关键帧对应的视觉单词进行汇总,通过Tf模型,实现视频基于量化单词的线性表达,进行形成视频摘要关键词。
[0068]I) HDFS 上的 Word, txt 文本文件通过 SparkContext 的 TextFile 函数读取为 Spark集群上的String类型RDD数据FrameSemaRDD。
[0069]2)利用RDD的按键值统计函数ReduceByKey函数对FrameSemaRDD中的视觉单词和场景描述单词进行字数统计,结果为String类型的RDD数据SemaCountRDD,此数据每一行包含单词及出现的次数。
[0070]3)将字数统计结果SemaCountRDD数据中的视觉单词出现次数除以视频总帧数,获得视觉单词在整个视频中出现的概率,利用RDD的按键值排序函数SortByKey函数对概率进行排序,然后设定概率阈值P,将大于P的统计结果写入String类型的RDD数据KeyRDD中。通过Tf模型确定该视觉单词在总数中的权值,即视觉单词在关键帧中出现的次数越多,那么它与视觉内容相关性越强,其权值也应该越大。
[0071]将KeyRDD 通过 RDD 的 SaveAsTextFile 函数分别保存为 HDFS 上的 KeyWords.txt。此文件的每一行将包含整个视频的关键词和出现概率。取出现频率最高的五个视觉单词,并将其对应文字标注在视频名中。
[0072]本发明提供了一种基于Spark的海量视频语义标注方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
【权利要求】
1.一种基于Spark的海量视频语义标注方法,其特征在于,包括以下步骤: 步骤1:将海量视频部署到一组计算节点上,通过Spark集群计算视频帧时间序列的分形维度差值,实现镜头分割,获取关键帧; 步骤2:在Spark集群上提取对象的检测样本的颜色矩、边缘以及纹理特征向量,进行元学习策略训练,形成视觉词典;并依据视觉词典对关键视频帧进行预测,产生能表征该关键视频帧的视觉单词; 步骤3:通过Tf方法对待测视频的视觉单词进行优先排序,将筛选结果作为该视频的标注。
2.根据权利要求1所述的基于Spark的海量视频数据分布式语义标注方法,其特征在于,步骤I在Spark集群上实现视频分割,划分海量视频分布至一组计算节点,利用分形方法将视频按时间序列分割为若干镜头,并提取关键帧,具体包括如下步骤: 步骤1-1:转换视频数据格式,将视频二进制数据通过Hadoop自定义输出流转换为Spark集群可读取的byte型数据,并保存到Hadoop分布式系统HDFS上;根据视频总巾贞数,利用并行分块函数把视频切分为块,一个块代表一个视频帧弹性分布式数据集RDD的数据对象ParVideoRDD ;调用帧处理程序,将数据对象parVideoRDD中的每一数据块都并行的分配到P个计算节点,从而实现对整个视频的帧数据并行处理; 步骤1-2:采用差分盒法,计算每一视频帧分形维度,通过时间序列的分形维度差值,求出切变镜头和渐变镜头的边界,从而将视频分割为一组镜头;在此计算过程中,通过Spark在各计算节点间的联系SparkContext实现各个计算节点间数据共享,使用映射函数map O完成分配步骤,再使用归一函数reduce O完成更新步骤; 步骤1-3:按时间序列,取每一镜头临界帧作为该镜头的关键视频帧,返回Spark主节点的结果是关键帧号和其场景描述的视频帧的RDD数据,将该视频帧的RDD数据存储为KeyFrameSce.txt文本文件,用于后续步骤调用。
3.根据权利要求2所述的基于Spark的海量视频语义标注方法,其特征在于,步骤2包括如下步骤: 步骤2-1:截取一组包括待测对象的各类图片,作为该对象的检测样本;将图片通过通道管理函数pipeO分配到一组计算节点,根据关键帧颜色矩、边缘直方图以及分形维度特征提取18维特征向量,用于表征该对象的图像语义内容;返回Spark主节点的结果是特征向量RDD数据,将其输出到文本文件SampleVec.txt中,此时SampleVec.txt文本文件包含该对象的特征信息; 步骤2-2:将分布式文件系统HDFS上的文本文件SampleVec.txt通过分析类SparkContext的文本读取函数TextFile读取字符串String类型的RDD数据SampleVecRDD,并将该数据分配到P个计算节点,P为大于I的自然数;采用基于元学习策略的4种分类算法,包括Generalized Winnow算法、支持向量机算法、条件随机域算法和最大熵算法,对代表该类对象的语义内容进行特征训练,形成代表该类对象的视觉单词,并与文字语义内容相关联;视觉单词是一个由元分类器表征且与文字语义内容存在相应映射关系的XML文件,每一个XML文件代表一类视觉单词; 步骤2-3:重复步骤2-1和步骤2-2,训练得到一组能够代表一类对象的特征的视觉单词,与相对应的文字语义内容建立映射关系后,汇聚成视觉词典; 步骤2-4:根据步骤2-1的,将步骤1-3得到的关键视频帧数据通过通道管理函数pipeO分配到一组计算节点,并提取18维特征向量,用于表征该关键视频帧的语义内容;返回Spark主节点的结果是关键视频帧的帧序号和特征向量RDD数据,将返回的[帧序号,特征向量RDD数据]输出到文本文件KeyFrameVec.txt中,此时KeyFrameVec.txt文本文件包含整个视频文件关键帧信息; 步骤2-5:根据步骤2-2,将分布式文件系统HDFS上的文本文件KeyFrameVec.txt通过SparkContext的文本读取函数TextFile函数读取字符串String类型RDD数据FrameVecRDD,数据FrameVecRDD每一行包含一巾贞号及语义特征向量,并将数据FrameVecRDD分配到P个计算节点;对照视觉词典,采用元学习策略对代表视频巾贞语义内容的特征向量进行预测,得出该视频帧所表述的一个以上的视觉单词;返回的结果是帧序号、视觉单词、对应文字组合的RDD数据,将该RDD数据存储为Word, txt文本文件,用于后续步骤调用。
4.根据权利要求3所述的基于Spark的海量视频语义标注方法,其特征在于,步骤3将视频中各关键帧对应的视觉单词进行汇总,通过Tf模型筛选,实现视频基于量化单词的线性表达,形成视频标注,具体包括如下步骤: 步骤4-1:将HDFS上的文本文件Word, txt读取到Spark集群上,设待测视频所有关键帧共含有M个视觉单词,将这些视觉单词按照权值的大小进行排序,权值范围O?1,视觉单词权值由Tf模型决定; 步骤4-2:通过数据集RDD的保存文档函数SaveAsTextFile将视觉单词、对应文字及出现概率保存为HDFS上的文本文件Keywords, txt,取出现频率最高的五个视觉单词作为该视频的标注。
5.根据权利要求3所述的基于Spark的海量视频语义标注方法,其特征在于,所述一组包括待测对象的各类图片为I万至3万张。
【文档编号】G06K9/62GK104239501SQ201410459787
【公开日】2014年12月24日 申请日期:2014年9月10日 优先权日:2014年9月10日
【发明者】崔铜, 葛军 申请人:中国电子科技集团公司第二十八研究所