与文本结合的近邻相似视频检索

来源:互联网 发布:太阳网络 编辑:程序博客网 时间:2024/06/06 01:31

本文档介绍了视频检索的全部流程,
整体流程:
1.视频图像切成相应的视频帧(图像片段)
2.文本筛选
3.提取相应的sift特征点
4.建立视觉词典
5.视觉词典的量化以及索引建立
6.实现视频检索
7.实验结论
附录1:paper:Hamming Embedding and Weak Geometric Consistency for Large Scale Image Search组织结构
附录2:文档及资源提供
附录3:平台环境 
下面详细阐述相应的视频检索步骤,并将我实验的相应过程记录于此
1.视频图像切成相应的视频帧(图像片段)(特别注解:拿到我手里的数据集是已经抽好的视频帧)
视频是由相应的连续的图像片段组成,这里我们(注解:抽帧核心代码copy from teacher chen)写了相应的代码(“抽取视频帧.exe”)用于抽取图像的视频帧,对应的格式实例为:Shot1_48_KF.jpg其中第二个字段表明是对应视频的多少帧
2.文本筛选
相对应的视频文件数据集给我提供了相应的文本文件,如:

这里包含了视频的相应文本信息(标题时间,发生地点,任务,时间等关键词),这里我应用了三个文本文件来进行数据集的筛选,我就一下11个topics进行了相应的筛选,
1) bush shoe; 04-12-2008; 前后一个月
2) Obama inauguration; 20-01-2009; 前后一个月
3) Susan Boyle; 15-04-2009;前后一个月
4) Amanda Holden; 16-04-2009; 前后一个月
5) Michael Jackson; 27-06-2009; 前后两个月
6) cenk uygur; 12-08-2009; 无时间限制
7) Lady Gaga poker; 19-02-2009;无时间限制
8) Silvio Berlusconi; 14-12-2009; 前后两个月
9) brad pitt; 23-02-2009; 前后两个月
10) lauren luke; 16-04-2009; 无时间限制
11) Miley Cyrus; 08-12-2008; 前后一个月
对应这个过程我写了相应的文本筛选代码“F:\工作-以时间记\成型性质代码\20150608work-文本筛选\20150608work.exe”,对应的数据结构如图:

对应的一个输出结果如图:

3.提取相应的sift特征点
第二步骤的完成使得我们缩小了提取图像片段的sift特征点的数据集,下面我们就此数据集进行相应的sift特征点的提取。
这里我用的是CityU的局部特征提取程序lip-viero.exe,该toolkit可以到CityU的官网上面去下载,也存于本机的F:\重要工具\sotu_1_05
文件夹当中
提取sift特征点的命令如下:F:\重要工具\Release\lip-vireo -dir F:\ -d harlap -p sift -dsdir F:\工作-以时间记\20150616\特征提取\全应用版\ -c F:\重要工\Release\topk.conf
这里的的例子我们采用harris laplace 做检测字,sift作为描述字,参数存在于topk.conf当中,F:\工作-以时间记\20150616\特征提取\全应用版\ 表征了sift特征点所在的位置,因为以后工作要应用到相应文件夹的相关信息,但这仅仅是提取sift特征的工具,所以对此我写了相应的程序(“F:\工作-以时间记\成型性质代码\20150616work-lip-vireo执行代码\Debug\提取sift特征.exe”),自动实现上述调用lip-vireo提取sift特征以及,文件夹辩分,路径识别,自动建立多层文件等过程(-dir信息我用的是绿色,表征文件夹所在的位置只是做一个简单的样例,具体可参看我的c++代码)
生成文件如图(部分):

4.建立视觉词典
生成视觉词典的过程包含:1)sift特征抽取2)sift点的聚类3)视觉词典生成
1)sift抽取部分。CityU的赵万磊老师在其near duplicate toolkit的说明文档中有介绍。具体地,关键帧可以从测试数据集中随机抽取,也可以从其它的同类数据中随机抽取。至于抽取的关键帧数量,需要首先预估下每个关键帧平均包含的keypoint数量。他的建议是保证每个类中有[20,80]个keypoint即可。
关键帧可以在测试数据集中随机抽取。以关键帧为单位随机抽取第3步生成的sift特征点文件。至于关键帧抽取的数量和聚类中心的数目。宋一丞老师目前的实验表明,基于5000个关键帧聚出的类中心比基于3000个关键帧聚出来的要好;聚成5000个类生成的BoW比2000个类生成的要好。也就是,聚类时keypoint越多越好,聚类中心数也是越多越好。
为此我写了相应的程序(“ F:\工作-以时间记\成型性质代码\视觉单词-全部代码\20150702work\Debug\1.归类聚类文件.exe”)进行文件的归类整理,将抽取特征点形成一个大的文件,为以后的视觉词典的建立做好充足准备,这里由于受到visual stduio 2013版本,以及文本文件的相应限制我这里只是抽取203’1371行,实验当中我应用50’0000行。
2)sift点聚类。这里我应用明尼苏达大学的CLUTO来执行这个聚类过程。
2.1在CLUTO聚类前,首先要将随机抽取的关键帧中的sift特征点组织成CLUTO可以识别的形式。具体为:
N 128
Line1
Line2
……
其中N代表sift特征点的数目,也即line的数量。
这里我写了相应的程序“ F:\工作-以时间记\成型性质代码\视觉单词-全部代码\20150702work\Debug\1.归类聚类文件.exe”,(注解:代码当中我已经将两个东西程序进行了相应的整合,生成的程序为整理聚类文件.exe)可以将抽取的sift特征点组织成CLUTO可识别的形式。
2.2在这篇paper(Hamming Embedding andWeak Geometric Consistency for Large Scale Image Search)当中明确提到有关于聚类之前应该做相应的归一化工作,以及如何选取归一化的方法,为此,我写了相应的程序”F:\工作-以时间记\成型性质代码\视觉单词-全部代码\20150702work\Debug\2.1(在2之前)归一化处理.exe”,生成的聚类文件所在的文件夹为”F:\工作-以时间记\20150702”(可提供整理后的数据(对应的处理数据为50’0000行))

2.3应用cluto进行文件的聚类操作,F:\重要工具\cluto-2.1.1\Win32\vcluster -clmethod=rb
-clustfile=F:\工作-以时间记\20150702\归一化文件-带行号版.txt F:\工作-以时间记\20150702\cluto_result_3000.txt
其中-clmethod=rb 表征了聚类的方法,-clusterfile=表征了聚类的文件, 紧接着的一项表征了聚类文件的存储,-cstype=large 3000表征了聚类的种类数目,为了执行代码的方便,我写了相应的程序”F:\工作-以时间记\成型性质代码\视觉单词-全部代码\20150702work\Debug\2.cluto聚类.exe”,在visual studio2013平台上面直接调用进行cluto的聚类。
生成的文件在”F:\工作-以时间记\20150718(spe)\聚类文件结果以及视觉词典(50’0000h)”文件夹当中(可提供,我一共做了生成3000,5000,10000,20000个类的实验)

3)视觉词典生成。根据文档以及paper提供的思路

对这部分我写了相应的程序“F:\工作-以时间记\成型性质代码\视觉单词-全部代码\20150702work\Debug\3.生成视觉单词.exe”,该程序首先读取聚类归一化后结果,然后把同属于某一类的sift特征点收集在一起,求个平均,最终得到了等于每个聚类结果的类中心,也即该类的visual words。
生成的文件在”F:\工作-以时间记\20150718(spe)\聚类文件结果以及视觉词典(50’0000h)”文件夹当中(批注:执行我的代码请注意修改visual studio2013 release环境,如果聚类10’0000我们需要约3G的memory)

5.视觉词典的量化以及索引建立
依据赵万磊老师提供tookkit的量化方案,对于量化的一般执行命令如下,sotu -ic fn.conf -v [vk|he|tgc|egc] -i itmab -s srcdir
对应这里的fn.conf文件我做几点说明:

-v 表征了我们应用的量化方法,包含有四种:

-i itmtab用于表征关于量化后文件的存储位置的一些信息,共包含有相应的三个文件,如图:

这几个文件见里面的部分内容(注解:后期pkeys文件还要进行处理)分别如下,

-srdir 用于表征文件所处的位置 由于sotu的toolkit无法识别相应多层文件夹的形式,对此我写了相应的程序”F:\工作-以时间记\成型性质代码\20150713work文件拷贝到同一个文件夹下面\Debug\test3.exe“用来归类文件
对应实验:以(vk)传统方案的形式我加以展示如图:

生成的文件如图所示:

文件内容分别如图所示:(特注:第一个图片是经过文件rename后的工作的结果)

5.1量化方案(就海明标签的训练过程,以及加入做一个详述)
5.1.1vk传统量化方案
5.1.2he应用海明标签
5.1.3加入几何信息
5.1.4加入几何信息和海明标签的形式
1]详述海明标签(参考于teacher chen讲解+csdn博文观点):
1.随机生成一个128*128的,符合高斯分布的矩阵,然后对改矩阵做QR分解,取得到的128*128的正交投影矩阵的前64行,得到我们需要的64*128的矩阵。
2.使用大量的属于同一个聚类中心的sift向量来乘这个矩阵P,Px即可得到64维的向量。
3.在第2步中,产生大量64维的向量,然后对这些向量的每一个维度,计算该维度数据的中值,即可得到一个中值向量T。
注意,对BOF中的每一个聚类中心,都要计算各自的中值向量,即最终聚类中心有多少个,这个64维的中值向量T也就有多少个。
经过上面的步骤,就算出了一个P和K个T,然互对新来的SIFT特征,首先P*vec(sift),得到64维的特征,然后将这个64维的特征和SIFT对应的聚类中心的64维T的每一维比较,SIFT[i] > T[i] ,则b[i] =1; 否则b[i] =0; 最终就得到了64维的binary向量b,然后根据上文说的匹配方式去做就可以了。下图是我为了更加详细说面生成64维binary向量过程画的草图。等式右边的蓝色矩阵的每一列表示2中生成的64维向量,对每一行取中值,就得到了绿色的那个64维的中值向量。

2]关于海明标签对应的实验:

命令如图是:SOTU -tc fn.conf -o he -i itmtab -s srcdir
fn.conf 表征的是配置文件,其中pmat_32.txt是随机生成的32位的二进制标签,上面的1]详述部分我已经做了相应的阐述 ,
其他内容均与步骤五的第一幅图片类似
Itmtab 里面的文件内容表征了相应的.hm文件以及中值文件所处的位置,在默认的情况下,ox_he_medians_32位所产生的32位的中值文件文件内容(实验生成数据为应用了anmanda为关键词的筛选出来的数据集)如图所示:

相应的该文件存储于”F:\工作-以时间记\20150720(spe)\retrieval\traininghe\hembed”当中(本人实验应用anmand数据)
5.2Tf-idf的应用
依据paper提供的建立索引的方法,以及赵万磊老师toolkit,在传统的bow模型上面应用了TF-IDF模型,根据他们的实验结果显示,这里IDF权重并没有多大的用处,所以只应用了词频的特征,而也仅仅是将词频的特性给引入了程序的代码实现当中。论文原文描述为:tf-idf weight associated with the visual word considered is applied to both the query and the dataset image in the BOF inner product(内积). (page 307)
6.实现视频检索
关于视频检索的一般命令为:Sotu -dc fn.conf [-vk|-wgc|-tgc|-he|-egc] itmtab -id|-vd [vk|he|wgc|tgc|vk+|egc] -d dstfn
关于fn.conf我做几点说明(注解:所在文件文件夹F:\工作-以时间记\20150711\5.1image.viedo Retrieval.mmap):

-itmtab用于表明我们需要查询的图像或者视频集
-id|-vd 用于表明是表征应用图像的检索还是视频的检索

这里的1个关键字用于表征了视频的id号(对于我们数据集而言,即是前面文件夹的编号),第二个关键字是保留字,第三个参数代表图像按帧的排序,第四个参数表征了所在的时间片所对应的帧
为此,我写了相应的代码(“F:\工作-以时间记\成型性质代码\用于修改视频重命名代码\命名模块顺利完成(修改版)(包含第一。二步骤)\命名模块顺利完成(修改版)\20150617work\Debug\重命名修改版(用于视频检索).exe”),用于修改相应的视频id,以及排序,对于第三个参数的修改,我写了相应的代码(“F:\工作-以时间记\成型性质代码\用于修改视频重命名代码\命名模块顺利完成(修改版)(包含第三步骤)\Debug\重命名修改版(用于第三步骤).exe”),对应生成的文件部分如图所示:

相应的command执行完成之后,我们可以生成相应的文件,对应
Hamming embedding实验结果(对应的参数配置如余弦相似性我们均按照默认参数)如图:

关于以上方法的所有检索实现都已存于”F:\工作-以时间记\20150720(spe)\retrieval”(关于anmenda的数据)当中
关于所有数据的egc(wgc+he)方法的结果放入”F:\工作-以时间记\20150720(spe)\retrieval”文件夹当中

7.实验结论
1.关于此,paper的author给出了在几个权威的数据集上面的一个对比效果,以及时间空间消耗,在此我给出相应的table(注:来源于paper):

2.本文档介绍了相应的视频检索的相应流程,对应的相应的关于hamming-embedding+wgc的method可以提高视频检索的速度以及准确度,在我们保证对于内存上面没有相对多的消耗的前提下,大大提高了检索的效率和准确度。
附录1:paper组织结构

附录2:文档及资源提供
1.高清版文件组织样式存于本机F:\工作-以时间记\20150713\海明标签+弱几何空间一致性约束(大规模图像检索).mmap文件当中。(如需查看请安装MindManager)
2.关于代码的流程图,类图(未整理版)等uml存于本机F:\工作-以时间记..文件夹当中(如需查看请安装Astah Community)
附录3:平台环境

IDE:visual studio 2013 with update3(ide建议使用qt3.0.0及其更高版本)

0 0
原创粉丝点击