稀疏編碼系列:
---------------------------------------------------------------------------
SPM [1]全稱是Spatial Pyramid Matching,出現的背景是bag of visual words模型被大量地用在了Image representation中,但是BOVW模型完全缺失了特徵點的位置信息。文章被引用了3400多次。文章的貢獻,看完以後覺得其實挺簡單的,和分塊直方圖其實是一個道理------將圖像分成若干塊(sub-regions),分別統計每一子塊的特徵,最後將所有塊的特徵拼接起來,形成完整的特徵。這就是SPM中的Spatial。在分塊的細節上,作者採用了一種多尺度的分塊方法,即分塊的粒度越大越細(increasingly fine),呈現出一種層次金字塔的結構,這就是SPM中的Pyramid。M就是Matching,沒什麼可說的。
具體地介紹Pyramid Matching:
-------假設存在兩個點集X和Y( 每個點都是D維的,以下將它們所在的空間稱作特徵空間)。將特徵空間劃分爲不同的尺度,在尺度l下特徵空間的每一維劃出個cells,那麼d維的特徵空間就能劃出個bins;
-------兩個點集中的點落入同一個bin就稱這兩個點Match。在一個bin中match的總數定義爲 min(Xi, Yi),其中Xi和Yi分別是兩個點集中落入第i個bin的點的數目;
-------統計各個尺度下match的總數(就等於直方圖相交)。由於細粒度的bin被大粒度的bin所包含,爲了不重複計算,每個尺度的有效Match定義爲match的增量;
-------不同的尺度下的match應賦予不同權重,顯然大尺度的權重小,而小尺度的權重大,因此定義權重爲;
-------最終,兩點集匹配的程度定義爲:
(1)
在作者提出的SPM中,作者實際採用了圖像的空間座標來代替第三段假設中提到的特徵空間。因此就有作者的SPM:
-------將圖像空間用構造金字塔的方法分解爲多個scale的bins(通俗地說就是切分成不同尺度的方形);
-------像BOW一樣構造一本大小爲M的dictionary,這樣每個特徵都能投影到dictionary中的一個word上。其中字典的訓練過程是在特徵空間中完成。論文中的特徵利用的dense SIFT。
-------統計每個bin中各個words的數目,最終兩幅圖像的匹配程度定義爲:
(2)
注意,當L=0時,模型就退化成爲BOW了。
SPM介紹了兩幅圖像匹配的方法。如要用於場景分類,注意(2)式就等於M(L+1)個直方圖相交運算的和,其實也就等於一個更大的向量直接進行直方圖相交運算而已。而這個向量,就等於每個被劃分的圖像子區域上的visual words直方圖連在一起。這個特徵,就是用來分類的特徵。
作者在實驗中表明,不同L下,M從200取到400對分類性能影響不大,也就是降低了碼書的大小對分類效果的影響。
在本文最開始也提到了,這個方法可以作爲一個模板,每個sub-region中統計的直方圖可以多種多樣,簡單的如顏色直方圖,也可以用HOG,這就形成了PHOG。SPM的matlab代碼也可以從作者的主頁上下載到(here)。只不過這種空間分類信息仍然有侷限性-----一幅相同的圖像旋轉90度,匹配的結果就不會太高了。所以模型隱含的假設就是圖像都是正着存儲的(人都是站立的,樹都是站立的.......)。Spatial BOW [2] 好像可以解決這個問題。另外空間Pyramid的分塊方法也沒有考慮圖像中object的信息(僅僅是利用SIFT特徵來描述了Object),這也是作者在文中承認的缺點。
update @2014.5.29
最近有幾位網友提問,說SPM解決了圖像匹配的時候如何計算相似度。但是很多時候我們要解決分類問題,怎麼聯繫在一起。我就在這一段談談我的理解。當然可能有不正確的地方,大家可以留言與我討論。
匹配的過程中,我們通過(2)式計算相似度,相似度衡量了兩組特徵之間的匹配程度。而分類問題和匹配是緊密相連的。我們以最經典的SVM分類器爲例子,SVM最終的分類決策函數可以寫成:
(3)
其中xi是所有的訓練樣本,x是待分類的樣本,α只有對應的支持向量纔會大於0(非支持向量都等於0)。(3)式的截圖是從pluskid博客上偷來的,如果大家已經忘了SVM的推導可以看看他的博客(點這裏),一個非常好的介紹SVM的系列。相似的公式也可以在李航的《統計學習方法》P106-107找到。
我們可以再把(3)式稍微改寫一下,把訓練樣本分成正負樣本兩類:
(4)
好了,(4)式的結果就比較直觀了。等式右邊第一項其實就是待分類的樣本與所有正樣本的內積(也就是(2)式所描述的相似度,SVM可以用核函數代替內積,在(2)式中也是用了直方圖相交的核函數代替內積,而內積是歐式距離對應的核函數。SPM原文中所提到用在分類問題中,就是用Chi-squre Kernel的SVM,這與直方圖相交一樣都是L1距離對應的核函數),第二項是與所有負樣本的內積。中間是減號,表明與所有負樣本的內積大,f(x)就偏負,而與正樣本的內極大,f(x)就偏正。因此,SVM無非就是正負訓練樣本之間的一場拔河,誰力氣大(和哪一類最像),x就歸誰(屬於那一類)。而SVM的學習過程,無非就是學習α和b這些參數的過程。這些參數對各個訓練樣本進行加權,權重大的訓練樣本決定性就強。因而,分類問題本質上就是一個測試樣本與訓練樣本一一匹配的問題了。
我覺得說到這,分類和匹配的關係就講明白了吧。
Reference:
--------------
作者:jiang1st2010