Bag of Features (BOF)圖像檢索算法


1.首先。我們用surf算法生成圖像庫中每幅圖的特征點及描寫敘述符。


2.再用k-means算法對圖像庫中的特征點進行訓練,生成類心。


3.生成每幅圖像的BOF。詳細方法為:推斷圖像的每一個特征點與哪個類心近期。近期則放入該類心,最后將生成一列頻數表。即初步的無權BOF。
4.通過tf-idf對頻數表加上權重,生成終於的bof。(因為每一個類心對圖像的影響不同。比方超市里條形碼中的第一位總是6,它對辨別產品毫無作用。因此權重要減小)。
5.對query進來的圖像也進行3.4步操作,生成一列query圖的BOF。
6.將query的Bof向量與圖像庫中每幅圖的Bof向量求夾角,夾角最小的即為匹配對象。


圖像檢索中應用LSH實現高速搜索。其在一定概率的保證下攻克了高維特征查詢的問題,但筆者在應用LSH結合SIFT特征實踐圖像檢索實驗時,因為每張圖像涉及上百個特征,那么在查詢一張圖片時,須要進行上而次的特征查詢,即便是將查詢圖片的特征點數篩選至50%的量,一次圖片查詢須要進行的特征查詢次數亦不容小窺。那么有沒有方法能夠將隨意圖片的全部特征向量用一個固定維數的向量表出,且這個維數並不因圖片特征點數不同而變化?本篇要講到的方法能夠解決問題,雖然它並非因這個問題而生的。
這里寫圖片描寫敘述
Bag-of-Words模型源於文本分類技術,在信息檢索中,它假定對於一個文本,忽略其詞序和語法、句法。

將其只看作是一個詞集合,或者說是詞的一個組合。文本中每一個詞的出現都是獨立的,不依賴於其它詞是否出現,或者說這篇文章的作者在隨意一個位置選擇詞匯都不受前面句子的影響而獨立選擇的。


這里寫圖片描寫敘述
圖像能夠視為一種文檔對象,圖像中不同的局部區域或其特征可看做構成圖像的詞匯,當中相近的區域或其特征能夠視作為一個詞。這樣,就能夠把文本檢索及分類的方法用到圖像分類及檢索中去。
這里寫圖片描寫敘述
Accelerating Bag-of-Features SIFT Algorithm for 3D Model Retrieval
Bag-of-Features模型仿照文本檢索領域的Bag-of-Words方法,把每幅圖像描寫敘述為一個局部區域/關鍵點(Patches/Key Points)特征的無序集合。使用某種聚類算法(如K-means)將局部特征進行聚類。每一個聚類中心被看作是詞典中的一個視覺詞匯(Visual Word)。相當於文本檢索中的詞。視覺詞匯由聚類中心相應特征形成的碼字(code word)來表示(可看當為一種特征量化過程)。全部視覺詞匯形成一個視覺詞典(Visual Vocabulary),相應一個碼書(code book),即碼字的集合,詞典中所含詞的個數反映了詞典的大小。圖像中的每一個特征都將被映射到視覺詞典的某個詞上,這樣的映射能夠通過計算特征間的距離去實現,然后統計每一個視覺詞的出現與否或次數。圖像可描寫敘述為一個維數相同的直方圖向量,即Bag-of-Features。


http://img.blog.csdn.net/20131002212031828?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hsZWxlMDEwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
Bag of Features Codebook Generation by Self-Organisation
Bag-of-Features很多其它地是用於圖像分類或對象識別。在上述思路下對訓練集提取Bag-of-Features特征,在某種監督學習(如:SVM)的策略下。對訓練集的Bag-of-Features特征向量進行訓練,獲得對象或場景的分類模型。對於待測圖像,提取局部特征,計算局部特征與詞典中每一個碼字的特征距離。選取近期距離的碼字代表該特征。建立一個統計直方圖。統計屬於每一個碼字的特征個數,即為待測圖像之Bag-of-Features特征。在分類模型下,對該特征進行預測從實現對待測圖像的分類。
Classification Process
1、局部特征提取:通過切割、密集或隨機採集、關鍵點或穩定區域、顯著區域等方式使圖像形成不同的patches。並獲得各patches處的特征。


這里寫圖片描寫敘述
當中,SIFT特征較為流行。
這里寫圖片描寫敘述
2、構建視覺詞典:
這里寫圖片描寫敘述
由聚類中心代表的視覺詞匯形成視覺詞典:
這里寫圖片描寫敘述
3、生成碼書。即構造Bag-of-Features特征,也即局部特征投影過程:
這里寫圖片描寫敘述
4、SVM訓練BOF特征得分類模型,對待測圖像BOF特征預測:
這里寫圖片描寫敘述
Retrieval Process
Bag-of-words在CV中的應用首先出如今Andrew Zisserman[6]中為解決對視頻場景的搜索,其提出了使用Bag-of-words關鍵點投影的方法來表示圖像信息。

興許很多其它的研究者歸結此方法為Bag-of-Features。並用於圖像分類、目標識別和圖像檢索。

在Bag-of-Features方法的基礎上,Andrew Zisserman進一步借鑒文本檢索中TF-IDF模型(Term Frequency一Inverse Document Frequency)來計算Bag-of-Features特征向量。

接下來便能夠使用文本搜索引擎中的反向索引技術對圖像建立索引,高效的進行圖像檢索。


這里寫圖片描寫敘述
Hamming embedding and weak geometric consistency for large scale image search
實現檢索的過程同分類的過程無本質的差異,很多其它的是細節處理上的差異:
1、局部特征提取。
2、構建視覺詞典。
3、生成原始BOF特征;
4、引入TF-IDF權值:
TF-IDF是一種用於信息檢索的經常使用加權技術,在文本檢索中。用以評估詞語對於一個文件數據庫中的當中一份文件的重要程度。詞語的重要性隨着它在文件里出現的頻率成正比添加,但同一時候會隨着它在文件數據庫中出現的頻率成反比下降。TF的主要思想是:假設某個關鍵詞在一篇文章中出現的頻率高。說明該詞語能夠表征文章的內容。該關鍵詞在其它文章中非常少出現,則覺得此詞語具有非常好的類別區分度,對分類有非常大的貢獻。IDF的主要思想是:假設文件數據庫中包括詞語A的文件越少。則IDF越大,則說明詞語A具有非常好的類別區分能力。
詞頻(Term Frequency。TF)指的是一個給定的詞語在該文件里出現的次數。如:tf = 0.030 ( 3/100 )表示在包括100個詞語的文檔中, 詞語’A’出現了3次。
逆文檔頻率(Inverse Document Frequency。IDF)是描寫敘述了某一個特定詞語的普遍重要性。假設某詞語在很多文檔中都出現過,表明它對文檔的區分力不強,則賦予較小的權重;反之亦然。如:idf = 13.287 ( log (10,000,000/1,000) )表示在總的10,000,000個文檔中,有1,000個包括詞語’A’。
終於的TF-IDF權值為詞頻與逆文檔頻率的乘積。
5、對查詢圖像生成相同的帶權BOF特征;
6、查詢:初步是通過余弦距離衡量,至於建立索引的方法還未學習到,望看客指點。


Issues
1、使用k-means聚類。除了其K和初始聚類中心選擇的問題外。對於海量數據,輸入矩陣的巨大將使得內存溢出及效率低下。有方法是在海量圖片中抽取部分訓練集分類,使用朴素貝葉斯分類的方法對圖庫中其余圖片進行自己主動分類。另外,因為圖片爬蟲在不斷更新后台圖像集。又一次聚類的代價顯而易見。
2、字典大小的選擇也是問題,字典過大,單詞缺乏一般性,對噪聲敏感,計算量大,關鍵是圖象投影后的維數高;字典太小。單詞區分性能差,對類似的目標特征無法表示。


3、類似性測度函數用來將圖象特征分類到單詞本的相應單詞上,其涉及線型核。塌方距離測度核。直方圖交叉核等的選擇。
4、將圖像表示成一個無序局部特征集的特征包方法,丟掉了全部的關於空間特征布局的信息。在描寫敘述性上具有一定的有限性。為此。 Schmid[2]提出了基於空間金字塔的Bag-of-Features。


5、Jégou[7]提出VLAD(vector of locally aggregated descriptors),其方法是如同BOF先建立出含有k個visual word的codebook。而不同於BOF將一個local descriptor用NN分類到近期的visual word中。VLAD所採用的是計算出local descriptor和每一個visual word(c­i)在每一個分量上的差距,將每一個分量的差距形成一個新的向量來代表圖片。
Resources
Two bag-of-words classifiers(Matlab)
Bag of Words/Bag of Features的Matlab源代碼
一個用BoW|Pyramid BoW+SVM進行圖像分類的Matlab Demo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM