1. 程式人生 > >Selective Search for Object Recoginition

Selective Search for Object Recoginition

資料 窗口大小 eval 不能 集合 htm 表達 box docs

Selective Search for Object Recoginition
[email protected]
http://blog.csdn.net/surgewong

在前一段時間在看論文相關的工作,沒有時間整理對這篇論文的理解。在前面的一篇博客【1】中有提到Selective Search【2】,其前期工作利用圖像分割的方法得到一些原始區域(具體內容請查看【1】),然後使用一些合並策略將這些區域合並,得到一個層次化的區域結構,而這些結構就包含著可能需要的物體。 博客【3】已經有對這篇論文的一些簡單介紹,寫這篇博客不免有重復發明輪子之嫌,不想想太多,只想把自己的一些理解記錄下來,加深自己的理解。

這篇論文是J.R.R. Uijlings發表在2012 IJCV上的一篇文章,主要介紹了選擇性搜索(Selective Search)的方法。物體識別(Object Recognition),在圖像中找到確定一個物體,並找出其為具體位置,經過長時間的發展已經有了不少成就。之前的做法主要是基於窮舉搜索(Exhaustive Search),選擇一個窗口(window)掃描整張圖像(image),改變窗口的大小,繼續掃描整張圖像。顯然這種做法是比較“原始的”,改變窗口大小,掃描整張圖像,直觀上就給人一種非常耗時,結果太雜的印象。作者能夠突破思維定式,從另一個角度給出一種簡單而又有效的方法,油生敬意。我們不禁會想,為什麽這麽簡單的方法之前沒有想到呢。我想這個應該跟對圖像認識的觀念有關系,在都不知道如何做物體識別(Object Recognition)的時候,較為“原始的”窮舉搜索方法,給了大家一個方向,之後所有的人都沿著這個方向走,最後就忽略了對其他方向的認識。花費了這麽多年,才找到另一個方向,這個轉變實屬不易。扯遠了,總之,這種方法確實讓人耳目一新。

一、介紹(Introduction) 圖像(Image)包含的信息非常的豐富,其中的物體(Object)有不同的形狀(shape)、尺寸(scale)、顏色(color)、紋理(texture),要想從圖像中識別出一個物體非常的難,還要找到物體在圖像中的位置,這樣就更難了。下圖給出了四個例子,來說明物體識別(Object Recognition)的復雜性以及難度。(a)中的場景是一張桌子,桌子上面放了碗,瓶子,還有其他餐具等等。比如要識別“桌子”,我們可能只是指桌子本身,也可能包含其上面的其他物體。這裏顯示出了圖像中不同物體之間是有一定的層次關系的。(b)中給出了兩只貓,可以通過紋理(texture)來找到這兩只貓,卻又需要通過顏色(color)來區分它們。(c)中變色龍和周邊顏色接近,可以通過紋理(texture)來區分。(d)中的車輛,我們很容易把車身和車輪看做一個整體,但它們兩者之間在紋理(texture)和顏色(color)方面差別都非常地大。
技術分享圖片
上面簡單說明了一下在做物體識別(Object Recognition)過程中,不能通過單一的策略來區分不同的物體,需要充分考慮圖像物體的多樣性(diversity)。另外,在圖像中物體的布局有一定的層次(hierarchical)關系,考慮這種關系才能夠更好地對物體的類別(category)進行區分。 在深入介紹Selective Search之前,先說說其需要考慮的幾個問題: 1. 適應不同尺度(Capture All Scales):窮舉搜索(Exhaustive Selective)通過改變窗口大小來適應物體的不同尺度,選擇搜索(Selective Search)同樣無法避免這個問題。算法采用了圖像分割(Image Segmentation)以及使用一種層次算法(Hierarchical Algorithm)有效地解決了這個問題。 2. 多樣化(Diversification):單一的策略無法應對多種類別的圖像。使用顏色(color)、紋理(texture)、大小(size)等多種策略對(【1】中分割好的)區域(region)進行合並。 3. 速度快(Fast to Compute):算法,就像功夫一樣,唯快不破!
二、區域合並算法 這裏是基於區域的合並,區域包含的信息比像素豐富,更能夠有效地代表物體的特征。關於區域用於物體識別的的方法,請參考論文【4】,這裏不再多說,以後有空話,在博客中寫點東西。首先原始區域的獲取方法,可以查看博客【1】以及其相關的論文。區域的合並方式是有層次的(hierarchical),類似於哈夫曼樹的構造過程。 技術分享圖片
輸入:彩色圖片(三通道) 輸出:物體位置的可能結果L
1. 使用 Efficient Graph-Based Image Segmentation【1】的方法獲取原始分割區域R={r1,r2,…,rn} 2. 初始化相似度集合S=? 3. 計算兩兩相鄰區域之間的相似度(見第三部分),將其添加到相似度集合S中 4. 從相似度集合S中找出,相似度最大的兩個區域 ri 和rj,將其合並成為一個區域 rt,從相似度集合中除去原先與ri和rj相鄰區域之間計算的相似度,計算rt與其相鄰區域(原先與ri或rj相鄰的區域)的相似度,將其結果添加的到相似度集合S中。同時將新區域 rt 添加到 區域集合R中。 5. 獲取每個區域的Bounding Boxes,這個結果就是物體位置的可能結果L
三、多樣化策略 論文作者給出了兩個方面的多樣化策略:顏色空間多樣化,相似多樣化。 顏色空間多樣化 作者采用了8中不同的顏色方式,主要是為了考慮場景以及光照條件等。這個策略主要應用於【1】中圖像分割算法中原始區域的生成。主要使用的顏色空間有:(1)RGB,(2)灰度I,(3)Lab,(4)rgI(歸一化的rg通道加上灰度),(5)HSV,(6)rgb(歸一化的RGB),(7)C(具體請看論文【2】以及【5】),(8)H(HSV的H通道) 技術分享圖片
對顏色空間了解不深,在此不便深入說明,等著以後慢慢深入計算機視覺領域。
相似度計算多樣化 在區域合並的時候有說道計算區域之間的相似度,論文章介紹了四種相似度的計算方法。 1. 顏色(color)相似度 使用L1-norm歸一化獲取圖像每個顏色通道的25 bins的直方圖,這樣每個區域都可以得到一個75維的向量技術分享圖片,區域之間顏色相似度通過下面的公式計算: 技術分享圖片 在區域合並過程中使用需要對新的區域進行計算其直方圖,計算方法: 技術分享圖片
2. 紋理(texture)相似度 這裏的紋理采用SIFT-Like特征。具體做法是對每個顏色通道的8個不同方向計算方差σ=1的高斯微分(Gaussian Derivative),每個通道每個顏色獲取10 bins的直方圖(L1-norm歸一化),這樣就可以獲取到一個240維的向量技術分享圖片,區域之間紋理相似度計算方式和顏色相似度計算方式類似,合並之後新區域的紋理特征計算方式和顏色特征計算相同: 技術分享圖片
3. 大小(size)相似度 這裏的大小是指區域中包含像素點的個數。使用大小的相似度計算,主要是為了盡量讓小的區域先合並: 技術分享圖片
4. 吻合(fit)相似度 這裏主要是為了衡量兩個區域是否更加“吻合”,其指標是合並後的區域的Bounding Box(能夠框住區域的最小矩形(沒有旋轉))越小,其吻合度越高。其計算方式: 技術分享圖片

最後將上述相似度計算方式組合到一起,可以寫成如下,其中技術分享圖片 技術分享圖片

四、使用選擇搜索(Selective Search)進行物體識別 通過前面的區域合並,可以得到一些列物體的位置假設L。接下來的任務就是如何從中找出物體的真正位置並確定物體的類別。 常用的物體識別特征有HOG(Histograms of oriented gradients)和 bag-of-words 兩種特征。在窮舉搜索(Exhaustive Search)方法中,尋找合適的位置假設需要花費大量的時間,能選擇用於物體識別的特征不能太復雜,只能使用一些耗時少的特征。由於選擇搜索(Selective Search)在得到物體的位置假設這一步效率較高,其可以采用諸如SIFT等運算量大,表示能力強的特征。在分類過程中,系統采用的是SVM。 技術分享圖片
特征生成 系統在實現過程中,使用color-SIFT特征【6】以及spatial pyramid divsion方法【7】。在一個尺度下σ=1.2下抽樣提取特征。使用SIFT、Extended OpponentSIFT【8】、RGB-SIFT【6】特征,在四層金字塔模型 1×1、2×2、3×3、4×4,提取特征,可以得到一個維的特征向量。(註:對SIFT特征以及金字塔模型還不是很了解,講得不是很清楚) 訓練過程 訓練方法采用SVM。首先選擇包含真實結果(ground truth)的物體窗口作為正樣本(positive examples),選擇與正樣本窗口重疊20%~50%的窗口作為負樣本(negative examples)。在選擇樣本的過程中剔除彼此重疊70%的負樣本,這樣可以提供一個較好的初始化結果。在重復叠代過程中加入hard negative examples(得分很高的負樣本)【9】,由於訓練模型初始化結果較好,模型只需要叠代兩次就可以了。(樣本的篩選很重要!!)
五、性能評價 很自然地,通過算法計算得到的包含物體的Bounding Boxes與真實情況(ground truth)的窗口重疊越多,那麽算法性能就越好。這是使用的指標是平均最高重疊率ABO(Average Best Overlap)。對於每個固定的類別 c,每個真實情況(ground truth)表示為 技術分享圖片,令計算得到的位置假設L中的每個值l,那麽 ABO的公式表達為: 技術分享圖片
重疊率的計算方式: 技術分享圖片
上面結果給出的是一個類別的ABO,對於所有類別下的性能評價,很自然就是使用所有類別的ABO的平均值MABO(Mean Average Best Overlap)來評價。


上面基本上講了一下,這篇論文的框架,在【2】中可以下載得到該論文相對應的matlab代碼(也可以在【10】中下載)。通過該代碼,獲取得到圖像中物體的位置假設L。之後我們可以利用這個結果進行更加深入的研究。由於原matlab代碼中部分代碼經過了加密,正在使用C++對其進行重寫,得到結果完善之後,會將其公開。由於入門不深,上面的理解不免有些錯誤,望各位指正,希望與大家多多交流~~
補充於: 2015-02-05 受各種雜事的影響,很久沒有更新博客。現在在學機器學習相關的知識,圖像分割相關的代碼沒有來得及整理,只好把之前的工程直接打包。其中不免有些錯誤或者不足,忘廣大博友們指正。C++代碼只是對相關的matlab代碼部分工程的重寫,沒有仔細比對兩者之間的性能,不過對雨了解其原理還是有很大幫助的,希望對初學者有所幫助。代碼下載鏈接【11】。


參考資料: 【1】CSDN:Efficient Graph-Based Image Segmentation 【2】Selective Search 【3】CSDN:Selective Search for Object Recognition 【4】Recognition Using Regions 【5】Color Invariance 【6】Evaluating color descriptors for object and scene recognition 【7】Spatial pyramid matching for recognizing natural scene categories 【8】Illumination-invariant descriptors for discrimative visual object categorization,Technical report, University of Amsterdam(沒有找到相關鏈接) 【9】Object detection with discriminatively trained part based models 【10】相關源代碼(matlab) 【11】C++簡版代碼

Selective Search for Object Recoginition