與文本結合的近鄰相似視頻檢索

本文檔介紹了視頻檢索的全部流程,
整體流程:
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及其更高版本)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章