论文笔记 《Selective Search for Object Recognition》
論文筆記 《Selective Search for Object Recognition》
項目網址:http://koen.me/research/selectivesearch/
一句話概括,用了segmentation和grouping的方法來進行object proposal,然后用了一個SVM進行物體識別。
這篇論文是2012 IJCV上的一篇文章,主要介紹了選擇性搜索(Selective Search)的方法。物體識別(Object Recognition),在圖像中找到確定一個物體,并找出其為具體位置,經過長時間的發展已經有了不少成就。之前的做法主要是基于窮舉搜索(Exhaustive Search),選擇一個窗口(window)掃描整張圖像(image),改變窗口的大小,繼續掃描整張圖像。顯然這種做法是比較“原始的”,改變窗口大小,掃描整張圖像,直觀上就給人一種非常耗時,結果太雜的印象。作者能夠突破思維定式,從另一個角度給出一種簡單而又有效的方法,油生敬意。我們不禁會想,為什么這么簡單的方法之前沒有想到呢。我想這個應該跟對圖像認識的觀念有關系,在都不知道如何做物體識別(Object Recognition)的時候,較為“原始的”窮舉搜索方法,給了大家一個方向,之后所有的人都沿著這個方向走,最后就忽略了對其他方向的認識。花費了這么多年,才找到另一個方向,這個轉變實屬不易。扯遠了,總之,這種方法確實讓人耳目一新。
其實論文主要的部分在于選擇性的搜索,這里其實會有幾個關鍵點:
1. 適應不同尺度(Capture All Scales):窮舉搜索(Exhaustive Selective)通過改變窗口大小來適應物體的不同尺度,選擇搜索(Selective Search)同樣無法避免這個問題。算法采用了圖像分割(Image Segmentation)以及使用一種層次算法(Hierarchical Algorithm)有效地解決了這個問題。(區域的有效選擇)
2. 多樣化(Diversification):單一的策略無法應對多種類別的圖像。使用顏色(color)、紋理(texture)、大小(size)等多種策略對(【1】中分割好的)區域(region)進行合并。(合并策略)
?3. 速度快(Fast to Compute):算法,就像功夫一樣,唯快不破!(算法速度)
?
What is an object?
如何判別哪些region屬于同一個物體?這個問題找不到一個統計的答案:
- 對于圖b,我們可以根據顏色來分開兩只貓,但是不能根據紋理來分開。
- 對于圖c,我們可以根據紋理來找到變色龍,但是不能根據顏色來找到。
- 對于圖d,我們將車輪歸類成車的一部分,既不是因為顏色相近,也不是因為紋理相近,而是因為車輪附加在車的上面(個人理解是因為車“包裹”這車輪)
所以,我們需要用多種策略結合,才有可能找到圖片中的所有物體。
另外,圖a說明了物體之間可能具有的層級關系,或者說一種嵌套的關系——勺子在鍋里面,鍋在桌子上。
Multiscale
由于物體之間存在層級關系,所以Selective Search用到了Multiscale的思想。從上圖看出,Select Search在不同尺度下能夠找到不同的物體。
注意,這里說的不同尺度,不是指通過對原圖片進行縮放,或者改變窗口大小的意思,而是,通過分割的方法將圖片分成很多個region,并且用合并(grouping)的方法將region聚合成大的region,重復該過程直到整張圖片變成一個最大的region。這個過程就能夠生成multiscale的region了,而且,也符合了上面“物體之間可能具有層級關系”的假設。
Selective Search方法簡介
?
策略多樣化(Diversification Strategies)
論文作者給出了兩個方面的多樣化策略:顏色空間多樣化,相似多樣化。
顏色空間多樣化
作者采用了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)顏色相似度
使用L1-norm歸一化獲取圖像每個顏色通道的25 bins的直方圖,這樣每個區域都可以得到一個75維的向量,區域之間顏色相似度通過下面的公式計算:
?在區域合并過程中使用需要對新的區域進行計算其直方圖,計算方法:
距離的計算方式很簡單,就是對各個通道計算顏色直方圖,然后取各個對應bins的直方圖最小值。這樣做的話兩個區域合并后的直方圖也很好計算,直接通過直方圖大小加權區域大小然后除以總區域大小就好了。
(2)紋理(texture)相似度
?這里的紋理采用SIFT-Like特征。具體做法是對每個顏色通道的8個不同方向計算方差σ=1的高斯微分(GaussianDerivative),每個通道每個顏色獲取10 bins的直方圖(L1-norm歸一化),這樣就可以獲取到一個240維的向量,區域之間紋理相似度計算方式和顏色相似度計算方式類似,合并之后新區域的紋理特征計算方式和顏色特征計算相同:
紋理距離計算方式和顏色距離幾乎一樣,我們計算每個區域的快速sift特征,其中方向個數為8,3個通道,每個通道bins為10,對于每幅圖像得到240維的紋理直方圖,然后通過上式計算距離。
(3)大小(size)相似度
?這里的大小是指區域中包含像素點的個數。使用大小的相似度計算,主要是為了盡量讓小的區域先合并:
如果僅僅是通過顏色和紋理特征合并的話,很容易使得合并后的區域不斷吞并周圍的區域,后果就是多尺度只應用在了那個局部,而不是全局的多尺度。因此我們給小的區域更多的權重,這樣保證在圖像每個位置都是多尺度的在合并。
(4)吻合(fit)相似度
這里主要是為了衡量兩個區域是否更加“吻合”,其指標是合并后的區域的BoundingBox(能夠框住區域的最小矩形(沒有旋轉))越小,其吻合度越高。其計算方式:
不僅要考慮每個區域特征的吻合程度,區域的吻合度也是重要的,吻合度的意思是合并后的區域要盡量規范,不能合并后出現斷崖的區域,這樣明顯不符合常識,體現出來就是區域的外接矩形的重合面積要大。
最后將上述相似度計算方式組合到一起,可以寫成如下,其中:
補充一點,參數初始化多樣性
我們基于基于圖的圖像分割得到初始區域,而這個初始區域對于最終的影響是很大的,因此我們通過多種參數初始化圖像分割也就是Efficient GraphBased Image Segmentation 的結果,也算是擴充了多樣性。
如何對region打分?
這里我不是太確定,但是按照作者描述以及個人理解,覺得確實就是隨機地打分。
通過上述的步驟我們能夠得到很多很多的區域,但是顯然不是每個區域作為目標的可能性都是相同的,因此我們需要衡量這個可能性,這樣就可以根據我們的需要篩選區域建議個數啦。
這篇文章做法是,給予最先合并的圖片塊較大的權重,比如最后一塊完整圖像權重為1,倒數第二次合并的區域權重為2以此類推。但是當我們策略很多,多樣性很多的時候呢,這個權重就會有太多的重合了,排序不好搞啊。文章做法是給他們乘以一個隨機數,畢竟3分看運氣嘛,然后對于相同的區域多次出現的也疊加下權重,畢竟多個方法都說你是目標,也是有理由的嘛。這樣我就得到了所有區域的目標分數,也就可以根據自己的需要選擇需要多少個區域了。
對于某種合并策略$j$,定義$r^{j}_{i}$為位置在$i$的region,其中i代表它在合并時候的所位于的層數(i=1表示在整個圖片為一個region的那一層,往下則遞增),那么定義其分數為$v^{j}_{i}=RND \times i$,其中$RND$為[0, 1]之間的一個隨機值。
使用Selective Search進行Object Recogntion
大致流程如上圖。用的是傳統的“特征+SVM”方法:
- 特征用了SIFT,原博客是HoG和BoW
- SVM用的是SVM with a histogram intersection kernel
- 訓練時候:正樣本:groundtruth,負樣本,seletive search出來的region中overlap在20%-50%的。
- 迭代訓練:一次訓練結束后,選擇分類時的false positive放入了負樣本中,再次訓練
這里有比較通俗的說明:
通過前面的區域合并,可以得到一些列物體的位置假設L。接下來的任務就是如何從中找出物體的真正位置并確定物體的類別。 常用的物體識別特征有HOG(Histograms of oriented gradients)和 bag-of-words 兩種特征。在窮舉搜索(Exhaustive Search)方法中,尋找合適的位置假設需要花費大量的時間,能選擇用于物體識別的特征不能太復雜,只能使用一些耗時少的特征。由于選擇搜索(Selective Search)在得到物體的位置假設這一步效率較高,其可以采用諸如SIFT等運算量大,表示能力強的特征。在分類過程中,系統采用的是SVM。
特征生成
系統在實現過程中,使用color-SIFT特征(Evaluating color descriptors for object and scene recognition)以及spatial pyramid divsion方法(Spatial pyramid matching for recognizing natural scene categories)。在一個尺度下σ=1.2下抽樣提取特征。使用SIFT、Extended OpponentSIFT(Illumination-invariant descriptors for discrimative visual object categorization,Technical report, University of Amsterdam)、RGB-SIFT(Evaluating color descriptors for object and scene recognition)特征,在四層金字塔模型 1×1、2×2、3×3、4×4,提取特征,可以得到一個維的特征向量。(注:對SIFT特征以及金字塔模型還不是很了解,講得不是很清楚)
訓練過程
訓練方法采用SVM。首先選擇包含真實結果(ground truth)的物體窗口作為正樣本(positive examples),選擇與正樣本窗口重疊20%~50%的窗口作為負樣本(negative examples)。在選擇樣本的過程中剔除彼此重疊70%的負樣本,這樣可以提供一個較好的初始化結果。在重復迭代過程中加入hard negative examples(得分很高的負樣本)【9】,由于訓練模型初始化結果較好,模型只需要迭代兩次就可以了。(樣本的篩選很重要!!)
評估(evalutation)
很自然地,通過算法計算得到的包含物體的Bounding Boxes與真實情況(ground truth)的窗口重疊越多,那么算法性能就越好。這是使用的指標是平均最高重疊率ABO(Average Best Overlap)。對于每個固定的類別 c,每個真實情況(ground truth)表示為 ,令計算得到的位置假設L中的每個值l,那么 ABO的公式表達為:
? ? ? ?重疊率的計算方式:
? ? ? ?上面結果給出的是一個類別的ABO,對于所有類別下的性能評價,很自然就是使用所有類別的ABO的平均值MABO(Mean Average Best Overlap)來評價。
?
?
參考資料:
【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++簡版代碼
【12】CSDN:Selective Search for Object Recognition
【13】CSDN:?
圖像分割—基于圖的圖像分割(Graph-BasedImageSegmentation)
?
之上是轉載的一篇博客添加了部分缺少的內容,這里簡單說明一下個人理解:
本文其實描述了一種圖像識別定位的方法,和RCNN是一樣的,而且RCNN方法也是基于該篇文章的方法。
本文流程是
1.根據Efficient GraphBased Image Segmentation給不同區域做出分割,也就是加上相應的label,如下圖
論文代碼在mathwork上有
https://ww2.mathworks.cn/matlabcentral/fileexchange/25866-efficient-graph-based-image-segmentation?s_tid=srchtitle
2.步驟1中的區域分割結果其實有時是過分割了的,可能是將同一物體分割成了兩部分甚至更多部分,所以在對圖像識別定位前,希望得到一些備選的區域(備選區域中有比較準確分割的區域),希望識別目標區域實際上在第1步中可能是占有了好幾個區域了的,所以我們希望將較相似的區域合并,合并的過程中會出現目標區域的較準確的分割,這里合并的合理選擇就有了必要,然后這里就有了計算兩個區域相似度的部分,優先選擇相似度高的區域合并,合并后重新計算出相似度,再次合并直到合并到只剩一個區域即原始圖像。這里相似度計算由四個部分組成,可以看上文或者原文。合并的方式如下:
可以看到備選的區域集就是R,R記錄下了每步相似度最高的聚合的區域。其實到這里,備選區域的選取就已經完成了,也就是論文題目中的Selective Search,也是RCNN中用到的,后續用SVM對Sift算子對區域進行區域識別,而RCNN則是使用CNN進行區域識別。
3.SIFT特征作為輸入,正負樣本作為輸出,用SVM做分類。樣本選擇方法上文有說明,可以看原文。
總結
以上是生活随笔為你收集整理的论文笔记 《Selective Search for Object Recognition》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tensorflow学习(7. GAN实
- 下一篇: Efficient Graph-Base