使用判別訓練的部件模型進行目標檢測(DPM)
這是看到比人翻譯的DPM的文章 怕以後找不到 所以轉一下 供大家欣賞
使用判別訓練的部件模型進行目標檢測
Pedro F. Felzenszwalb, Ross B.Girshick, David McAllester and Deva Ramanan
摘要
本文介紹了一個基於 混合多尺度可變形部件模型 ( mixtures of multiscale deformablepart model )的目標檢測系統。此係統可以表示各種多變的目標並且在PASCAL目標檢測挑戰賽上達到了目前最優結果(state-of-the-art)。雖然可變形部件模型現在很流行,但它的價值並沒有在類似PASCAL這種較難的測試集上進行展示。此係統依賴於使用未完全標註(partially labeled)的樣本進行 判別訓練
關鍵詞
目標識別(ObjectRecognition), 可變形模型 ( Deformable Models
1 引言
目標檢測是計算機視覺領域內一項基礎性的工作。本論文研究在靜態圖片中檢測並定位某一類目標(例如人或車)的問題。由於這些類別中的目標外表可能千差萬別,使得此項工作變得有些複雜。而且,變化不僅來自亮度和視角,還有由於目標不是剛體而引起的形變,以及同一類目標的形狀和其他視覺上的變化。例如,人可能穿不同的衣服,做不同的姿勢,車可能有不同的形狀和顏色。
本文介紹了一個基於混合多尺度可變形部件模型的目標檢測系統,它可以表示各種多變的目標。此模型使用判別程式進行訓練,訓練過程只需要用到圖片集中目標的矩形框
我們的方法基於 圖結構 ( Pictorial Structures )框架 [15][20] 。圖結構使用一系列部件以及部件間的位置關係來表示目標。每個部件描述目標的一個區域性屬性,通過部件間的 彈簧連線 ( Spring-like Connection )表示模型的可變形配置。
可變形部件模型(例如圖結構)是目標檢測中的優秀方法,但是很難在實際中建立價值。在一些難度大的資料集上,可變形部件模型經常被一些簡單的模型——例如 固定 (剛體rigid) 模版 [10] 或 特徵袋 ( bag-of-features ) [44] 所超越。本論文的目標之一就是解決這一問題。
雖然可變形模型可適應很多外表變化,但單個可變形模型還不足以表示一個變化豐富的目標類別。例如對影象中的自行車外表建模的問題。自行車有 各種型別 (例如,山地車,雙人自行車,以及19世紀的有一個大輪一個小輪的自行車),並且 觀察視角也會有不同 (例如從前面看和從側面看),所以本文中的系統 使用混合模型來適應這些變化 。
我們最終感興趣的是使用 視覺語法 ( Visual Grammars )對目標進行建模。基於語法的模型(例如 [16][24][45] )使用可變層次結構來表示目標,是可變形部件模型的擴充套件和一般化。 基於語法的模型 (grammar based model)中的每個部件都可以被直接定義,或者根據其他部件進行定義。此外,基於語法的模型考慮到結構的變化。這些模型還提供在不同目標類別間共享資訊和計算的框架,例如, 不同的模型共享可重用的部件 。
基於語法的模型是我們的終極目標,現在我們採取了一種研究方法,使用此方法使得我們可以在保證高效能的前提下逐步改進模型,使它變得更豐富。通過豐富模型來改進效能是非常困難的。在計算機視覺、語音識別、機器翻譯和資訊檢索領域中,一直以來簡單模型都要比複雜模型表現更為出眾 。例如,直到最近基於n元語言模型(n-gram language model)的語音識別和機器翻譯系統才在效能上超過基於語法和片語結構的系統。根據我們的經驗,只有逐步地豐富模型才能保證效能不降低。
之所以簡單模型在實際中表現比複雜模型好的原因之一就在於 複雜模型很難訓練 。對於目標檢測,固定模型和特徵袋模型很容易使用判別方法(例如SVM)進行訓練。複雜模型很難訓練,因為 複雜模型經常使用隱藏資訊 。
例如從只標註了整個目標的包圍盒的圖片中訓練一個基於部件的模型的難題。因為部件的位置沒有進行標註,所以這些資訊在訓練時只能被當做隱藏(latent或hidden)變數 。如果使用更完全的標註資訊可能會訓練出更好的模型,但也可能由於未能準確標註出各個部分的位置而導致更差的結果。通過自動發現有效部件來進行自動部件標註有可能達到更佳的效能。精細製作標註資訊是費時而昂貴的。
Dalal和Triggs的檢測器 [10] (在PASCAL 2006目標檢測挑戰賽上表現最好)使用基於HOG特徵的單獨 濾波器 ( 模版 )來表示目標。它使用滑動視窗方法,將濾波器應用到影象的所有可能位置和尺度。可以將此檢測器看做一個分類器,它將一張圖片以及圖片中的一個位置和尺度作為輸入,然後判斷在指定位置和尺度是否有目標類別的例項。考慮到此檢測器只有一個濾波器,我們可以使用β·Φ(x)表示濾波器在某位置的得分,其中β是濾波器引數,x是指定位置和尺度的圖片,Φ(x)是x的HOG特徵向量。Dalal-Triggs檢測器的主要創新點是提出了一個非常有效的特徵。
此論文的第一個創新點是豐富了Dalal-Triggs的模型,我們使用 星型結構 的部件模型,此模型由一個 根濾波器 ( root filter ,與Dalal-Triggs的濾波器相似)和一系列 部件濾波器 ( part filter )以及相應的可變形模型構成。 星型模型在影象特定位置和尺度的得分 等於根濾波器在給定位置的得分加上各個部件的得分的總和,每個 部件的得分 等於此部件在所有空間位置的得分的最大值, 部件在某位置的得分 等於部件濾波器在此位置的得分減去此位置的變形花費, 位置的變形花費 衡量了部件 偏離 其理想位置(這裡說的位置是指與根濾波器的相對位置)的程度。根濾波器和部件濾波器的得分都是由濾波器引數與特徵金字塔中一個視窗的特徵向量的 點積 (dot product)定義的。 圖1 顯示了人體的星型模型。
圖1 , 單元件 人體模型的檢測結果。此模型由一個 粗糙的根濾波器 (a所示),和 幾個高解析度的部件濾波器 (b所示)以及每個部件相對於根的 空間位置模型 (圖c所示)組成。濾波器指定了HOG特徵的權重。圖中濾波器的視覺化模型顯示的是不同方向的正權重。空間位置模型的視覺化圖顯示的將部件的中心放置到相對根的不同位置的變形花費(越白花費越高,表示部件偏離其理想位置越大)。
在我們的模型中,部件濾波器表示的影象特徵是根濾波器所表示的影象特徵所在的空間解析度的兩倍,也就是說我們是在多尺度對目標的外表建模。
為了使用未完全標註(partially labeled,意思應該是目標的部件沒有進行標註,只標註了整個目標)的資料進行模型訓練,我們使用了論文 [3] 中的 多例項SVM ( MI-SVM)中的一個隱藏變數公式,我們稱作 隱藏變數SVM ( Latent SVM , LSVM )。在LSVM中,每個樣本x使用下面形式的公式進行評分:
其中β是模型引數向量,z是隱藏變數,Φ(x, z)是特徵向量。模型引數β是根濾波器、部件濾波器、變形花費權重串聯起來構成的引數向量,z是目標配置引數,Φ(x, z)是特徵金字塔中的一個視窗對應的HOG特徵和部件變形特徵串聯起來構成的特徵向量。
我們意識到 公式(1) 可以處理更通用形式的隱藏資訊,例如,z可以用來指定富視覺語法(rich visual grammar)中的派生詞。
本文的第二種模型使用 混合星型模型 來表示目標類別。 混合模型 在指定位置和尺度的得分是各個 元件 (component)模型在給定位置得分的最大值。在這種情況下,隱藏變數z表示元件類別及元件配置。 圖2 展示了自行車的混合模型。
圖2 ,含有兩個 元件 模型的 混合自行車模型 的檢測結果。這幾個例子表明了混合模型的重要性。第一個元件捕捉自行車的側視特徵,第二個元件捕捉自行車的正視或接近正視特徵。側視元件模型可以 變形來匹配自行車前輪擡起的姿勢 。
為了通過判別訓練來獲得好的結果,往往需要使用大量訓練樣本。在目標檢測中,訓練問題是非常不平衡的,因為相比於特定目標來說有更大量的未知的背景。這就需要我們通過搜尋背景資料來找到一個相對少量的潛在的 誤報 ( 虛警 ) 的負樣本集,或者叫做 難例 ( 負樣本難例 , HardNegative Example )。
Dalal和Triggs在論文 [10] 中採用了一種 對難例進行資料探勘 的方法,但倒回到了1995年前後中用到的 自舉法 ( bootstrap ) [35][38] 。我們分析了SVM和LSVM訓練中的資料探勘演算法,證明使用資料探勘方法可以收斂到整個訓練集上的最優模型。
本文中的目標模型是由濾波器定義的,濾波器可以對特徵金字塔中的子視窗進行評分的。我們調查了與論文 [10] 中的HOG特徵類似的特徵,並找到了與原特徵效能表現相同的維數更低的特徵。通過對HOG特徵做 主成分分析 ( Principal Component Analysis ),可以大大減少特徵向量的維數,同時不產生顯著的資訊丟失。此外,通過分析主特徵向量,我們找到了一個容易解釋並且可高效計算的低維特徵。
本文還分析了PASCAL目標檢測挑戰賽和其他相似資料集中的一些特定問題。我們展示了 通過目標中部件的位置來估計目標的包圍盒 的方法,這是通過用最小二乘迴歸訓練的特定模型的預測器來實現的。我們還展示了一個用來 聚合幾個目標檢測器的輸出結果 的簡單方法。此方法的基本思想是同一張圖片中的某一類目標可以為其他類別的目標提供正例支援或反例駁斥。我們實現了這一思想,首先訓練一個特定類別的分類器,用此分類器對此類別所有檢測出的目標進行重新評分,重新評分的依據是該目標的原始得分和用其他類別的分類器對此目標進行評分兩者中的最高值。
2 相關研究工作
關於目標檢測中各種型別的可變形模型已經有了大量研究工作,包括幾種可變形模版模型(例如 [7][8][21][43] ),和各種基於部件的模型(例如 [2][6][9][15][18][20][28][42] )。
在 [18][42] 的 星座模型 中,部件被限制在由興趣點所確定的稀疏(小的)位置集合中,並且他們的幾何分佈由高斯分佈進行描述。相反, 圖結構模型 ( Pictorial Structure Model ) [15][20] 的匹配問題中,位於稠密位置集中的部件有各自獨立的匹配花費,幾何分佈由部件兩兩之間的彈簧連線進行描述。 [2] 中的 部件拼接模型 (patchwork of parts model)也類似,但它清楚地考慮了重疊部件之間如何進行相互作用。
本文中所用的模型很大程度上基於論文 [15][20] 中的 圖結構 ( Pictorial Structure )框架。我們的模型中使用位置和尺度的稠密集,並定義了將部件濾波器放置在每個位置的得分。部件濾波器之間的幾何配置由將每個部件濾波器與根濾波器連線的 變形花費 ( 彈簧 )來描述,形成了一個星型的圖結構模型。注意我們 並不對重疊部件之間的相互作用進行建模 ,雖然如果對這種相互作用進行建模可能會有好處,但這並不是使用判別程式訓練的模型中存在的問題,並且不對相互作用建模的話會大大簡化模型與影象進行匹配的問題。
本文中提出的新的區域性和半區域性特徵在改進目標檢測方法的效能上起了重要作用,這些特徵對光照變化和小的形變具有不變性。很多最近的目標檢測方法使用 類小波特徵 (Wavelet-like) [30][41] 或區域性歸一化的梯度直方圖特徵 [10][29] 。其他的方法,例如 [5] ,從訓練圖片中學習區域性框架詞典。在我們的方法中,以論文 [10] 中的HOG特徵為基礎,在不引起效能損失的前提下降低特徵維數。與論文 [26] 中的方法類似,我們也使用 PCA 方法對特徵進行降維,但我們還注意到獲得的特徵向量有清晰的結構,並最終找到一個解析特徵集。這就省去了計算稠密特徵對映時代價很大的投影步驟。
二維可變形模型不能很好地適應由於視角改變而引起的較大的目標形狀和外形變化。方點陣圖(Aspect Graph) [31] 是一種經典的描述由於視角改變而引起的變化的方法。混合模型 提供了一種簡單的替代方法。例如,使用多個模型來編碼人臉和汽車的正檢視和側檢視 [36] 。混合模型也被用來描述其他的外表變化,例如目標類別有多個子類別時 [5] 。
將可變形模型與圖片進行匹配是一個複雜的優化問題。區域性搜尋方法需要在正確的位置附近進行初始化 [2][7][43] 。為了保證全域性最優匹配,需要更激進的搜尋方法。其中一個流行的部件模型的搜尋方法是將部件的位置約束在一個小的可能位置集合中,此位置集合是根據興趣點檢測得到的 [1][18][42] 。星型(樹型)圖結構模型 [9][15][19] 允許使用 動態規劃 和 廣義距離變換 方法來高效搜尋所有可能的目標配置,不約束每個部件的可能位置,我們使用此方法來 匹配模型和影象 。
基於部件的可變形模型的引數由每個部件的外表以及描述部件間空間關係的幾何模型來確定。學習模型時可以使用最大似然估計。在全監督條件下,訓練圖片中標註了每個部件的位置,所以可以使用簡單的方法來學習模型 [9][15] 。在 弱監督 條件下,訓練圖片中並沒有標註每個部件的位置,這時可以使用 EM演算法 [2][18][42] 同時估計部件位置 和 學習模型引數 。
判別訓練 ( Discriminative Training )方法通過最小化檢測演算法在訓練集上的失敗率來選擇模型引數。這種方法可以直接優化正負樣本間的決策邊界。這也就是為什麼使用判別訓練方法訓練的簡單模型(例如Viola-Jones [41] 和Dalal-Triggs [10] 的檢測器)可以取得成功的原因。用判別方法來訓練基於部件的模型更加困難,雖然對應的策略已經存在 [4][23][32][34] 。
隱藏變數SVM ( LSVM )與 隱條件隨機場 ( Hidden CRF ) [32] 有關。然而,在LSVM中我們最大化隱藏的部件位置變數而不是忽視它們,在訓練時使用 鉸鏈損失 (hinge-loss )而不是 log-loss 。最終變為一個用來訓練的 座標下降演算法 ( coordinate descent ),以及一個可以用超大資料集進行學習的資料探勘演算法。LSVM可以看做 基於能量的模型 [27] 的一種。
LSVM與 多例項學習 (Multiple InstanceLearning, MIL ) [3] 中的 MI-SVM 的公式是等價的,但我們發現LSVM的公式更適合我們的問題(我們在論文 [17] 中定義了LSVM,當時還未意識到與MI-SVM的關係)。此外,之前還有個不同的MIL框架被用來在弱標註的資料集上訓練目標檢測器 [40] 。
本文中使用的在訓練時 對難例進行資料探勘 (Data-mining HardExamples)的方法與SVM中的 工作集方法 (Working Set Method)(例如 [25] )有關聯。本文中的方法相對來說更少地遍歷整個訓練資料集,並且非常適合只有部分能讀進記憶體的超大規模資料集的訓練。
目標檢測和識別中 影象上下文 (context)的使用近年來受到越來越多的關注。一些方法(例如 [39] )使用低級別的整個影象的特徵來定義可能的目標假設。 [22] 中的方法使用粗糙但語義豐富的場景表達,包括3D幾何。本文中首先在影象上應用各種目標檢測器,用檢測結果來定義影象上下文。這種思想與論文 [33] 中使用CRF描述目標同時出現的方法相似,但我們使用不同的方法來描述此資訊。
我們在論文 [17] 中介紹了系統的一個初步版本,本文中介紹的系統與 [17] 中有以下幾點不同: 混合模型 的引入;使用 隨機梯度下降演算法 ( Stochastic Gradient Descent )優化了真正的LSVM目標函式,論文 [17] 中是用SVM工具包優化目標函式的啟發式近似;使用了 新的特徵 ,做到既低維又高資訊量;通過包圍盒預測和上下文再次評分,對檢測結果進行後處理。
3 模型
我們的所有模型都涉及將線性濾波器應用到稠密 特徵對映 中。 特徵對映 (feature map )是一個數組,其元素由從一張影象中計算出來的所有d維特徵向量組成,每個特徵向量描述一塊影象區域。實際中我們用的是論文 [10] 中的HOG特徵的變體,但這裡討論的框架是與特徵選擇無關的。
濾波器 (filter)是由d維權重向量定義的一個矩形模版。濾波器F在特徵對映G中位置(x,y)處的 響應值 (response)或 得分 是濾波器向量與以(x, y)為左上角點的子視窗的特徵向量的 點積 (DotProduct):
我們想要定義在影象不同位置和尺度的得分,這是通過使用 特徵金字塔 來實現的,特徵金字塔表示了一定範圍內有限幾個尺度構成的特徵對映。首先通過不斷的平滑和子取樣計算一個標準的影象金字塔,然後計算金字塔中每層影象的所有特徵。 圖3展示了特徵金字塔。
圖3 ,特徵金字塔和其中的一個人體模型例項。 部件濾波器位於根濾波器兩倍空間解析度的金字塔層 。
根據引數λ在特徵金字塔中進行尺度取樣,λ定義了組中層的個數。也就是說, λ是我們為了獲得某一層的兩倍解析度而需要在金字塔中向下走的層數 。實際中在訓練時λ=5,在測試時λ=10。 尺度空間的精細取樣 對於我們的方法獲得較高的效能表現非常重要。
[10] 中的系統使用單個濾波器來定義整個目標模型,它計算濾波器在HOG特徵金字塔中所有位置和層的得分,通過對得分閾值化來檢測目標。
假設F是一個w * h 大小的濾波器,H是特徵金字塔,p = (x, y, l)指定金字塔中l層的位置(x, y), φ(H,p, w, h) 表示金字塔H中以p為左上角點的w*h大小的子視窗中的所有特徵向量按行優先順序串接起來得到的向量。濾波器F在位置p處的得分為F’·φ(H, p, w, h),F’表示將F中的權重向量按行優先順序串接起來得到的向量。此後我們使用F’·φ(H,p) 代替F’·φ(H, p, w, h),因為子視窗的大小已隱含包括在濾波器F中。
3.1 可變形部件模型
我們的星型模型由一個大體上 覆蓋整個目標的粗糙的根濾波器 和 覆蓋目標中較小部件的高解析度的部件濾波器 構成。 圖3 顯示了特徵金字塔中這種模型的一個例項。根濾波器定義了檢測視窗(濾波器所覆蓋的特徵空間部分的畫素)。部件濾波器被放置在根所在層的λ層之下,該層特徵的解析度是根所在層的特徵的兩倍。
我們發現 用高解析度特徵來定義部件濾波器對獲得高識別效能至關重要 。用這種方法部件濾波器可以捕捉相對於根濾波器更精確定位的特徵。例如建立人臉的模型,根濾波器捕捉的是人臉邊界這些粗糙邊緣資訊,部件濾波器可以捕捉眼鏡、鼻子、嘴這些細節資訊。
含有n個部件的目標模型可以形式上定義為一個(n+2)元組: (F 0 ,P 1 ,..., P n , b),F 0 是根濾波器,P i 是第i個部件的模型,b是表示 偏差 的實數值。每個部件模型用一個三元組定義: (F i ,v i , d i ) ,F i 是第i個部件的濾波器;v i 是一個二維向量,指定第i個濾波器的 錨點位置 ( anchor position ,即未發生形變時的標準位置) 相對於根的座標;d i 是一個四維向量,指定了一個二次函式的引數,此二次函式表示部件的每個可能位置相對於錨點位置的 變形花費 ( deformation cost )。
每個 目標假設 都指定了模型中每個濾波器在特徵金字塔中的位置:z = (p 0 ,..., pn ),其中p i = (x i ,y i , l i )表示第i個濾波器所在的層和位置座標。我們這裡需要 每個部件所在層的特徵解析度都是根濾波器所在層的特徵解析度的兩倍 ,即l i 層特徵是l 0 層特徵的解析度的兩倍,並且l i = l 0 – λ(i > 0)。
目標假設的得分 等於 每個濾波器在各自位置的得分 (從資料來看) 減去 此位置相對於根位置的變形花費 (從空間來看)再 加上 偏差值 :
其中,
給出了第i個部件相對於其錨點位置的位移:(x 0 ,y 0 )是根濾波器在其所在層的座標,為了統一到部件濾波器所在層需乘以2。v i 是部件i的錨點相對於根的座標偏移,所以2(x 0 , y 0 )+v i 表示未發生形變時部件i的絕對座標( 錨點的絕對座標 )。
而
是 變形特徵 (水平、垂直位移及其平方)。
如果d i = (0, 0, 1, 1),則第i個部件的變形花費就是它實際位置與錨點位置距離的平方。通常情況下,變形花費是位移的任意可拆分二次函式。
引入 偏差值 是為了在將多個模型組成 混合模型 時,使多個模型的得分具有可比性。
目標假設z的得分可以表示成點積的形式:β·ψ(H, z),β是模型引數向量,ψ(H, z)是特徵向量,如下:
這就將模型和線性分類器聯絡起來了,我們使用 隱藏變數SVM ( LSVM )來學習模型引數。
3.2 匹配
在影象中檢測目標時,根據各個部件的最佳位置在所有可能的根位置中找到總體得分最高的根位置,
高得分的根位置定義了一次檢測,產生高得分根位置的部件位置定義了一個完整的目標假設。
通過定義每個根位置的 總體得分 (overall score),我們可以檢測目標的多個例項(假設每個根位置上最多一個例項)。這種方法與滑動視窗檢測器有關聯,因為可以認為score(p 0 ) 是檢測視窗在指定根位置的得分。
我們使用 動態規劃 和 廣義距離變換 (min-convolution) [14][15] 來計算部件的最優位置(是根位置的函式)。此方法非常高效,花費O(nk)時間計算一個濾波器的響應值,n是模型中部件的個數,k是特徵金字塔中位置的總數。我們在此簡單介紹一下此方法,細節請參考論文 [14][15] 。
設是存放 部件i在特徵金字塔第l層的響應值 的陣列。匹配演算法首先會計算這些響應值。注意R i, l 是濾波器F i 和特徵金字塔第l層的交叉相關。
計算完這些濾波器響應值後,對其進行轉換來允許具有空間不確定性:
(8)
這種變換會將濾波器高分擴充套件到鄰近位置,同時也將變形花費考慮在內。D i, l (x, y) 值表示將第i個部件的錨點放在l層的位置(x,y)時它對根位置得分的最大貢獻值。
轉換後的陣列D i,l 可根據論文 [14] 中的 廣義距離變換 演算法線上性時間內從陣列R i, l 計算得到。
每一層根位置的總體得分可以表示為該層根濾波器響應值加上經過變換和子取樣的部件響應值,
前面說過,λ是我們為了獲得某一層的兩倍解析度而需要在金字塔中向下走的層數。
圖4 闡述了匹配過程。
為了理解 公式(9) ,需要知道對於一個固定的根位置,我們可以獨立的選擇每個部件的最佳位置,因為在目標假設的得分計算中沒有考慮部件之間的相互作用。 變換後的陣列D i,l 表示第i個部件對根總體得分的貢獻值 ,它是部件錨點位置的函式。所以,通過 將根濾波器響應值和各個部件的貢獻值相加,就得到了l層一個根位置的總體得分 ,其中每個部件的貢獻值已預先計算好儲存在陣列D i, l- λ 中。
此外,在計算D i,l 的過程中 [14] 中的演算法還能計算出部件的最優位置(是錨點座標的函式),
找到一個高分的根位置(x 0 , y