使用判別訓練的部件模型進行目標檢測 Object Detection with Discriminatively Trained Part Based Models
使用判別訓練的部件模型進行目標檢測
Pedro F. Felzenszwalb, Ross B.Girshick, David McAllester and Deva Ramanan
摘要
本文介紹了一個基於混合多尺度可變形部件模型(mixtures of multiscale deformablepart model)的目標檢測系統。此係統可以表示各種多變的目標並且在PASCAL目標檢測挑戰賽上達到了目前最優結果(state-of-the-art)。雖然可變形部件模型現在很流行,但它的價值並沒有在類似PASCAL這種較難的測試集上進行展示。此係統依賴於使用未完全標註(partially labeled)的樣本進行判別訓練的新方法。我們提出了一種間隔敏感(margin-sensitive)的難例挖掘方法(data-mining hard negativeexample),稱為隱藏變數SVM(latent SVM, LSVM),是MI-SVM加入隱藏變數後的重新表示。LSVM的訓練問題是一個半凸規劃(semi-convex)問題,但如果將正樣本的隱藏變數的值指定後,LSVM的訓練問題變為凸規劃問題。最終可以使用一個迭代訓練方法來解決,此迭代演算法不斷交替地固定正樣本的隱藏變數和最優化目標函式。
關鍵詞
目標識別(ObjectRecognition),可變形模型(Deformable Models),圖結構模型(Pictorial Structures),判別訓練(Discriminative Training),隱藏變數SVM(Latent SVM)
1 引言
目標檢測是計算機視覺領域內一項基礎性的工作。本論文研究在靜態圖片中檢測並定位某一類目標(例如人或車)的問題。由於這些類別中的目標外表可能千差萬別,使得此項工作變得有些複雜。而且,變化不僅來自亮度和視角,還有由於目標不是剛體而引起的形變,以及同一類目標的形狀和其他視覺上的變化。例如,人可能穿不同的衣服,做不同的姿勢,車可能有不同的形狀和顏色。
本文介紹了一個基於混合多尺度可變形部件模型的目標檢測系統,它可以表示各種多變的目標。此模型使用判別程式進行訓練,訓練過程只需要用到圖片集中目標的矩形框(包圍盒)(意思是說只需要整個目標的標註資訊,不需要各個部件的標註資訊)。訓練好的系統既高效又精確,能夠在PASCAL VOC測試集[11-13]和INRIA人體測試集[10]上達到目前最佳結果。
我們的方法基於圖結構(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)元組:(F0,P1,..., Pn, b),F0是根濾波器,Pi是第i個部件的模型,b是表示偏差的實數值。每個部件模型用一個三元組定義:(Fi,vi, di),Fi是第i個部件的濾波器;vi是一個二維向量,指定第i個濾波器的錨點位置(anchor position,即未發生形變時的標準位置) 相對於根的座標;di是一個四維向量,指定了一個二次函式的引數,此二次函式表示部件的每個可能位置相對於錨點位置的變形花費(deformation cost)。
每個目標假設都指定了模型中每個濾波器在特徵金字塔中的位置:z = (p0,..., pn),其中pi = (xi,yi, li)表示第i個濾波器所在的層和位置座標。我們這裡需要每個部件所在層的特徵解析度都是根濾波器所在層的特徵解析度的兩倍,即li層特徵是l0層特徵的解析度的兩倍,並且li = l0 – λ(i > 0)。
目標假設的得分等於每個濾波器在各自位置的得分(從資料來看)減去此位置相對於根位置的變形花費(從空間來看)再加上偏差值:
其中,
給出了第i個部件相對於其錨點位置的位移:(x0,y0)是根濾波器在其所在層的座標,為了統一到部件濾波器所在層需乘以2。vi是部件i的錨點相對於根的座標偏移,所以2(x0, y0)+vi表示未發生形變時部件i的絕對座標(錨點的絕對座標)。
而
是變形特徵(水平、垂直位移及其平方)。
如果di= (0, 0, 1, 1),則第i個部件的變形花費就是它實際位置與錨點位置距離的平方。通常情況下,變形花費是位移的任意可拆分二次函式。
引入偏差值是為了在將多個模型組成混合模型時,使多個模型的得分具有可比性。
目標假設z的得分可以表示成點積的形式:β·ψ(H, z),β是模型引數向量,ψ(H, z)是特徵向量,如下:
這就將模型和線性分類器聯絡起來了,我們使用隱藏變數SVM(LSVM)來學習模型引數。
3.2 匹配
在影象中檢測目標時,根據各個部件的最佳位置計算每個根位置的綜合得分(overallscore),如下:
高得分的根位置定義了一次檢測,產生高得分根位置的部件位置定義了一個完整的目標假設。
通過定義每個根位置的綜合得分(overall score),我們可以檢測目標的多個例項(假設每個根位置上最多一個例項)。這種方法與滑動視窗檢測器有關聯,因為可以認為score(p0) 是檢測視窗在指定根位置的得分。
我們使用動態規劃和廣義距離變換(min-convolution)[14][15]來計算部件的最優位置(是根位置的函式)。此方法非常高效,花費O(nk)時間計算一個濾波器的響應值,n是模型中部件的個數,k是特徵金字塔中位置的總數。我們在此簡單介紹一下此方法,細節請參考論文[14][15]。
設是存放部件i在特徵金字塔第l層的響應值的陣列。匹配演算法首先會計算這些響應值。注意Ri, l是濾波器Fi和特徵金字塔第l層的交叉相關。
計算完這些濾波器響應值後,對其進行轉換來允許具有空間不確定性:
(8)
這種變換會將濾波器高分擴充套件到鄰近位置,同時也將變形花費考慮在內。Di, l(x, y) 值表示將第i個部件的錨點放在l層的位置(x,y)時它對根位置得分的最大貢獻值。
轉換後的陣列Di,l可根據論文[14]中的廣義距離變換演算法線上性時間內從陣列Ri, l計算得到。
每一層根位置的綜合得分可以表示為該層根濾波器響應值加上經過變換和子取樣的部件響應值,
前面說過,λ是我們為了獲得某一層的兩倍解析度而需要在金字塔中向下走的層數。
圖4闡述了匹配過程。
為了理解公式(9),需要知道對於一個固定的根位置,我們可以獨立的選擇每個部件的最佳位置,因為在目標假設的得分計算中沒有考慮部件之間的相互作用。變換後的陣列Di,l表示第i個部件對根綜合得分的貢獻值,它是部件錨點位置的函式。所以,通過將根濾波器響應值和各個部件的貢獻值相加,就得到了l層一個根位置的綜合得分,其中每個部件的貢獻值已預先計算好儲存在陣列Di, l-λ中。
此外,在計算Di,l的過程中[14]中的演算法還能計算出部件的最優位置(是錨點座標的函式),
找到一個高分的根位置(x0, y0,l0)後,可以在中查詢對應的部件最佳位置。
圖4,在某一尺度上的匹配過程。根濾波器和部件濾波器的響應值在特徵金字塔的不同解析度中進行計算。變換後的響應值(Di, l)和根濾波器的響應值一起產生出每個根位置的最終得分。圖中顯示了“頭部”和“右肩”的響應值及變換後響應值。注意到“頭部”濾波器區分度更大。最終根位置的綜合得分清楚地表明在本尺度有兩個目標假設。
3.3 混合模型
含有m個元件(component)的混合模型可由一個m元組定義:M = (M1, ..., Mm),其中Mc是第c個元件的模型。
一個混合模型的目標假設指定了一個元件Mc(1<=c<=m)以及Mc中每個濾波器的位置:,這裡nc表示模型Mc中的部件個數。此混合模型目標假設的得分等於第c個元件模型的目標假設 的得分。
如果是單元件混合模型,混合模型的目標假設得分可以用模型引數向量β和特徵向量ψ(H, z)的點積來表示。如果是多元件混合模型,向量β是每個元件的模型引數向量的串接。特徵向量ψ(H, z)是一個稀疏向量,其中的非零元素為ψ(H, z’),與β中的βc位置相對應,
所以有
用混合模型檢測目標時,使用上節介紹的匹配演算法,找到對所有部件產生高分假設的根位置。
4 隱藏變數SVM
考慮對樣本x用如下公式進行評分的分類器,
這裡β是模型引數向量,z是隱藏變數。集合Z(x)定義了樣本x所有可能的隱藏變數值。通過對此得分值進行閾值化,可以獲得樣本x的二分類類標。
類比經典SVM演算法,我們使用帶類標的樣本集D = (<x1, y1>, ..., <xn,yn>),yi∈{-1, 1}來訓練引數β,通過最小化下面的目標函式:
其中是標準鉸鏈損失函式(hinge loss),常數C控制正則項的相對權重。
如果每個樣本的隱藏變數有唯一可能值(|Z(xi)|=1),則是β的線性函式,此時變為線性SVM問題,這是LSVM的一個特例。
4.1 半凸規劃
LSVM最終是一個非凸規劃(non-convex)問題。然而,在下面所討論的情況下LSVM是半凸規劃(semi-convexity)問題,一旦將隱藏資訊指定給正樣本則訓練問題變為凸規劃問題。
幾個凸函式的最大值問題是凸規劃問題。線上性SVM中,有是β的線性函式,此時鉸鏈損失函式對於每個樣本都是凸的,因為它是兩個凸函式的最大值。
注意到公式(13)中定義的是一系列函式的最大值,而這些函式都是β的線性函式,因此是β的凸函式。所以當yi = -1時,兩個函式f(x) = 0和都是β的凸函式,所以鉸鏈損失函式 是β的凸函式。也就是說,只有當樣本為負樣本時,損失函式是β的凸函式。我們將損失函式的這一性質叫做半凸(semi-convexity)。
對於正樣本(yi= 1)來說,LSVM的鉸鏈損失函式不是凸函式,因為它是一個凸函式f(x)= 0 和一個凹函式 的最大值。
但是,當LSVM的正樣本的隱藏變數具有唯一可能的取值時, 是β的線性函式,因此損失函式是β的凸函式,再加上半凸性質,公式(14)變為凸規劃問題。
4.2 最優化
設Zp指定訓練集D中正樣本的隱藏變數值。定義一個輔助目標函式:
其中D(Zp)表示將D中正樣本的隱藏變數取值約束在Zp中而得到的一個子集。也就是,對於正樣本,設定Z(xi) = {zi},根據前面的定義,集合Z(x)定義了樣本x所有可能的隱藏變數值,zi是由Zp指定的xi的隱藏變數值。注意到
特別的,。輔助目標函式給出了LSVM目標函式的上界,這證明了通過最小化LD(β, Zp)來訓練LSVM是合理的。
在實際中我們使用座標下降演算法(Coordinate Descent)來最小化LD(β, Zp):
1) 估計部件位置(重新標註正樣本):通過選擇每個正樣本的最高得分的隱藏值來最優化Zp,
2) 學習模型引數(最優化β):通過解決定義的凸優化問題來得到最優β值。
以上兩個步驟或者優化LD(β, Zp)的值,或者維持其不變。在演算法達到收斂之後就會得到一個相對強壯的區域性最優值,步驟1在指數空間內搜尋正樣本的隱藏變數值,同時步驟2搜尋所有可能的模型和指數空間內負樣本的隱藏變數。
需要注意的是,模型引數β必須合理進行初始化,否則在步驟1中可能選擇出非法的隱藏變數值,這會導致產生錯誤模型。
LSVM的半凸性質非常重要,正是由於具有半凸性質所以步驟2中的問題變為容易解決的凸優化問題(即使負樣本的隱藏變數值是不確定的)。還有一種相似的處理過程,在每一輪迭代時固定所有樣本的隱藏變數值,但這可能無法產生最優結果。假設Z指定訓練集D中所有樣本的隱藏變數值。由於LD(β)遇到負樣本時可能最大化,所以LD(β)可能比LD(β,Z)還大,因此不能指望通過最小化LD(β,Z)來獲得一個好的模型。
4.3 隨機梯度下降
座標下降演算法中的步驟2(最優化β)可以通過二次規劃(Quadratic Programming)[3]來解決,也可以通過隨機梯度下降演算法(Stochastic Gradient Descent)來解決。這裡我們介紹一種在任意訓練集D上用梯度下降演算法來優化β的方法。在實際中我們使用這種方法的一個帶有D(Zp)的特徵向量快取的版本(見4.5節)。
設,即zi(β)是使正樣本xi得分最高的隱藏變數值(位置配置)。所以有。
計算LSVM目標函式(公式14)的梯度,如下
在隨機梯度下降演算法中,用樣本的子集來近似▽LD,然後向梯度下降的方向走一步。用來近似表示。演算法按如下步驟迭代更新β值:
1) 設αt是第t次迭代的學習率(步長)。
2) 隨機選取樣本xi。
3) 設
4) 如果,則β∶=β-αtβ
5) 否則,
就像線性SVM中用的座標下降方法,我們這裡的方法也和感知機演算法(Perceptron)很相似。如果當前對隨機樣本xi分類正確(大於函式間隔,如步驟4所述),則收縮β;否則(如步驟5所述),收縮β之後再加上Φ(xi, zi)乘以一個標量。
對於線性SVM來說,學習率(步長)αt = 1/t 時表現不錯[37]。然而,收斂時間依賴於訓練樣本個數,對我們的問題來說,樣本數非常巨大。特別的,如果存在很多“簡單”樣本(即資訊量比較小的樣本),步驟2會經常選中這些簡單樣本,這樣迭代過程會進展比較緩慢。
4.4 難例挖掘,SVM版
在訓練目標檢測的模型時,經常需要用到非常大量的負樣本(對掃描視窗分類器來說,一張圖片就可以產生大約105個負樣本),這使得同時處理所有負樣本變得不可能。相反,用正樣本和負樣本難例(Hard Negative)來構成訓練資料集變得更為常用。
自舉法(Bootstrap)首先使用初始負樣本集來訓練一個模型,然後收集被這個初始模型錯誤分類的負樣本來形成一個負樣本難例集。用此負樣本難例集訓練新的模型,此過程可以重複多次。
這裡我們介紹一種受自舉法啟發而提出的適用於經典(非隱藏變數)SVM的資料探勘演算法。此方法使用一個相對較小的難例集來解決一系列訓練問題,並且可以收斂到由更大資料集定義的訓練問題的精確解。此方法需要用到難例的間隔敏感定義。
訓練集D關於分類器β的困難和簡單例項的定義如下:
也就是說,H(β,D)是D中被分類器β錯誤分類或位於分類器間隔內的樣本;E(β,D)是D中被分類器β正確分類並位於分類間隔外的樣本。在分類器邊界上的樣本既不是困難樣本也不是簡單樣本。
設,即β*(D)表示樣本集D上的最優β值(或者說根據樣本集D訓練得到的模型引數β)。
由於LD是嚴格凸的(為什麼?不是半凸嗎?),所以β*(D)是唯一的。
給定一個大訓練集D,我們想要找到一個較小的樣本集 ,使得β*(C) = β*(D)。
我們的方法需要用到一個樣本快取(cache),從初始樣本快取開始,交替訓練模型和更新樣本快取。在每次迭代時,從樣本快取中移除簡單樣本,然後加入新的難例。所有正樣本一直在樣本快取中不動,在負樣本上進行難例挖掘。
設是初始樣本快取,演算法按如下步驟迭代的訓練模型和更新快取:
1) 令βt := β*(Ct),即用Ct訓練一個模型βt。
2) 如果 ,即βt在樣本集D上獲得的難例都已包括在Ct中,停止迭代,返回模型βt。
3) 對任意 ,令 ,即收縮快取。
4) 對任意 並且 ,令 ,即擴大快取。
在步驟3中,通過刪除Ct中βt對應的簡單樣本來收縮快取。在步驟4中,通過向快取中加入難例來擴大快取,這些難例是用βt在D上獲得的並至少有一個不在原Ct中,這樣的樣本肯定是存在的,否則在步驟2中就已經返回了。
下面的定理說明當停止迭代時可以找到β*(D)。
定理1 設 並且β=β*(C),如果 ,則β=β*(D)。
證明:因為 ,所以LD(β*(D))≥ LC(β*(C)) = LC(β)(不明白為什麼是大於等於?)。因為 ,所以集合D\C中的所有樣本的損失函式(鉸鏈損失)值都是0,所以LC(β) = LD(β)(這是因為函式LD(β)由兩部分構成,前面是β的平方,後面是所有樣本的損失函式值累加和)。所以可得LD(β*(D)) ≥ LD(β),又因為LD有唯一的最小值,所以β=β*(D)。
下一個定理說明演算法在有限次迭代後會停止。直觀上看是由於 會在每次迭代時變大,但最大不會超過LD(β*(D))。
定理2 本資料探勘演算法可收斂。
證明:收縮後的樣本快取 包含Ct中所有相對於βt 損失函式值不為零的樣本。這表明對於βt 來說, 和 是等價的。既然βt 是 的最小值,所以也必定是 的最小值,所以 。
在擴大快取時, 中至少包含一個對於βt損失函式不為0的樣本<x, y>。因為 ,所以對於所有β有 。如果 ,則 (不明白為什麼是大於等於?),因為 有唯一最小值。如果 ,由於存在至少一個樣本<x, y>的損失函式不為0,所以有 。
所以我們得出結論 。因為快取數量有限,所以快取中損失的增長次數也有限。
4.5 難例挖掘,LSVM版
現在我們介紹一種適用於LSVM的難例挖掘演算法,此演算法要求LSVM正樣本的隱藏變數值是固定的。也就是說,我們最優化 而不是LD(β)。基於前面的討論,我們知道這個約束可以保證最優化問題是凸規劃。
對於LSVM來說,用樣本和隱藏變數二元組(x, z)的快取來代替樣本快取。這樣可以避免在優化演算法(例如梯度下降)的內迴圈中對所有Z(x)做判斷。此外,在實際中我們使用特徵向量Φ(x, z)的快取來代替二元組(x, z)的快取,這樣表示更簡單緊湊。
特徵向量快取F由一系列二元組(i, v)構成,其中1≤i≤n是樣本索引,v = Φ(xi , z),z∈Z(xi)。注意對於每個樣本xi,可能有多個二元組(i, v) ∈F。
設I(F)是快取F對應的樣本集合。F中的特徵向量定義了β的目標函式(公式20),在此函式中我們只考慮由I(F)指定的樣本,對每個樣本只考慮其在快取F中的特徵向量。
對4.3節中的梯度下降演算法進行修改後可用來最優化LF。設V(i)是F中的特徵向量的集合。梯度下降演算法的迭代過程如下:
1) 設αt是第t次迭代的學習率(步長)。
2) 從I(F)中隨機選擇樣本i
3) 令
4) 如果yi(β·vi) ≥1,令β=β﹣αt β
5) 否則,令β=β﹣αt(β-Cnyivi)
注意,I(F)的大小控制著收斂所必需的迭代次數,V(i)控制執行步驟3所需要的時間。在步驟5中,n = |I(F)|。
設,即β*(F)是根據特徵向量快取F訓練得到的模型引數。我們想要找到D(Zp)一個較小的快取F,使得β*(F) = β*( D(Zp) )。
定義訓練集D上關於模型β的難特徵向量(HardFeature Vector)為:
也就是說,難特徵向量集H(β, D)由一系列二元組(i, v)組成,其中v是位於分類器β的分類間隔內(即分錯類或無法分類的)的樣本xi的最高得分特徵向量。
定義快取F中的簡單特徵向量為:
即快取F中位於分類器β的分類間隔外(即分類正確的)的特徵向量。
對於樣本i,如果存在一個特徵向量使得yi(β·v) ≤1,則即使樣本i有其他更高得分的特徵向量,也不再將(i, v)看做簡單樣本。
下面介紹計算β*(D(Zp) )的資料探勘演算法。
此演算法需要用到訓練集D(Zp)的一個特徵向量快取,演算法交替訓練模型和更新快取。
設F1是初始特徵向量快取,演算法迭代過程如下:
1) 令βt := β*(Ft),即用Ft訓練一個模型βt。
2) 如果 ,即βt在D(Zp)上找到的所有難特徵向量都已包括在Ft中,則停止迭代,返回模型βt。
3) 對任意 ,令 ,即收縮快取。
4) 對任意 ,令 ,即擴大快取。
在步驟3中,通過刪除簡單特徵向量來收縮快取。在步驟4中,通過向快取中加入新的特徵向量來擴大快取,這些特徵向量是用βt在D(Zp)上獲得的並至少有一個不在原Ft中。隨著時間的推移,快取中會累積起同個負樣本的多個特徵向量。
演算法最終會收斂並返回β*(D(Zp) ),與4.4節中類似。
5 訓練模型
現在考慮從標註有目標包圍盒的圖片資料集中訓練模型的問題。這種型別的資料可以從PASCAL資料集中獲得。資料集中包含幾千張圖片,每張圖片對應一個標註檔案,標註檔案指明瞭圖片中出現的每個目標的類別以及目標的包圍盒。需要注意的是,這是一種弱標註(weakly labeled)的資料集,因為其中沒有指明部件的類別和位置。
我們介紹一種初始化混合模型結構並學習所有引數的方法。引數是通過訓練LSVM來學習到的。我們用4.2節中描述的座標下降演算法,以及4.5節中的帶有特徵向量快取的資料探勘和梯度下降演算法來訓練LSVM。由於座標下降演算法容易受到區域性極小值影響,所以必須合理進行模型的初始化。
5.1 學習引數
設c是一個目標類別。假設c的訓練樣本由正樣本集P和背景影象集(負樣本集)N給定。P是二元組(I, B)的集合,其中I是圖片,B是I中c類目標的包圍盒。
設M是一個有固定結構的(混合)模型。如前所述,一個模型的引數可由向量β定義。為了學習β,我們定義了一個帶有隱式訓練集D的LSVM訓練問題,正樣本來自集合P,負樣本來自集合N。
每個樣本<x,y>∈D都有一個相關的圖片和特徵金字塔H(x)。隱藏變數z∈Z(x)指明瞭模型M在特徵金字塔H(x)中的一個例項。
定義Φ(x,z) = ψ(H(x), z),所以β·Φ(x, z)是模型M的假設z在H(x)上的得分。
(I, B)∈P指明瞭目標檢測器應該在包圍盒B定義的位置處檢測出目標(“開火”),也就是說由B定義的根濾波器位置的總體得分(公式7)應該很高。
對於每個(I,B)∈P,定義一個用來訓練LSVM的正樣本x。定義隱藏變數集合Z(x),使得假設z∈Z(x)指定的根濾波器視窗與B重疊至少50%。我們發現將根濾波器的位置看做隱藏變數有助於補償正樣本標註中的噪聲造成的損失。相似的思想在論文[40]中也有使用。
對於背景圖(負樣本原圖)I∈N,我們不希望檢測器在I的特徵金字塔的任何位置檢測出目標。這意味著每個根濾波器的總體得分(公式7)都應該很低。設G是特徵金字塔中位置的稠密集。對於G中的每個位置(i,j,l),定義一個負樣本x。定義集合Z(x),使得z∈Z(x)指定的根濾波器的層級是l,其檢測視窗的中心座標是(i, j)。從每張圖片中可以獲得大量的負樣本,這與掃描視窗檢測器需要有較低的誤報率是相一致的。
下面給出了訓練過程Train。最外層迴圈限定了座標下降演算法在LD(β, Zp)上的迭代次數。3-6行實現了座標下降演算法中(步驟1)重新標註正樣本(估計部件位置)的過程,執行完後每個正樣本對應一個特徵向量,儲存在正特徵向量集合Fp中。7-14行實現了座標下降演算法中(步驟2)最優化β的過程。由於由N定義的負樣本個數非常大,我們使用LSVM資料探勘演算法進行訓練。我們並非執行演算法直到收斂,而是進行固定次數的迭代。在每次迭代中,首先將難例收集到Fn中,用梯度下降演算法訓練一個新的模型,然後通過移除簡單特徵向量來收縮Fn。在資料探勘過程中,通過在N中的影象上順序迭代來增大快取,直到達到記憶體限制。
函式detect-best(β,I, B)在影象I中用與矩形框B重疊超過50%的根濾波器尋找具有最高得分的目標假設。函式detect-all(β, I, t)計算每個根位置的最佳目標假設並選擇其中得分大於t的。這兩個函式都可以用3.2節中的匹配過程實現。
函式gradient-descent(F)利用快取F中的特徵向量來訓練模型β(如4.5節所述)。在實際中會對演算法進行修改,將可變形模型中的二次項引數限定在大於0.01,這保證了變形花費是凸函式,但又不至於太平坦。同時還將模型限定為沿垂直軸對稱,位於垂直軸中心的濾波器必須是自對稱的,不在垂直軸上的部件濾波器在模型的另一側一定有一個對稱部件。這些約束可以將要學習的引數個數降低一半。
5.2 初始化
LSVM中使用的座標下降演算法容易受到區域性極小值的影響,對初始化很敏感。這也是其他使用隱藏資訊的演算法所共有的缺點。我們分三個階段來初始化和訓練混合模型。
Phase1 初始化根濾波器:為了訓練含m個元件(component)的混合模型,我們首先將正樣本集P中的包圍盒按其長寬比(aspectratio)排序並分類為P1, ..., Pm組,每組內的包圍盒具有相似的長寬比。這裡,長寬比被當做區分同類目標的外觀變化的指示器。共訓練m個不同的根濾波器F1, ..., Fm,每組包圍盒對應一個。
為了確定濾波器Fi的維數,選擇Pi中包圍盒的平均長寬比,並保證其面積不大於Pi中80%的包圍盒。這就保證了對於Pi中的多數二元組(I, B),可以將Fi放在I的特徵金字塔中使Fi與B顯著重疊。
我們用標準SVM(不含隱藏資訊)來訓練Fi,類似論文[10]中的方法。對於(I, B) ∈Pi,縮放包圍盒B中的影象區域使得其特徵對映與濾波器Fi的維數相同,這樣就產生了一個正樣本。從負樣本集N中的圖片上隨機選擇合適維數的子視窗來產生負樣本。圖5(a)和5(b)顯示了訓練含兩個元件的汽車模型的Phase1的結果。
Phase2 合併元件:將m個初始根濾波器聯合起來形成不含部件的混合模型,在完整資料集P和N上(不分組不縮放)用5.1節中的Train過程重新訓練聯合模型的引數。這種情況下元件標識和根位置成為每個樣本的隱藏變數。此時座標下降訓練演算法可以看做一個判別聚類方法,不斷迭代地給每個正樣本分配聚類標識和估計聚類均值(根濾波器)。
Phase3 初始化部件濾波器:我們使用一個簡單的啟發式演算法來初始化每個元件模型中的部件。每個元件模型的部件個數固定為6個,貪心地放置部件在根濾波器的高能量區域(能量是子視窗內正權重的範數)。部件或者放在根濾波器的中心垂直軸上,或者關於中軸兩兩對稱。一個部件的位置確定後,它所覆蓋區域的能量值設為0,然後繼續尋找下一個最高能量區域,直到6個部件的位置都確定。
將根濾波器的值插值到兩倍空間解析度,用來初始化部件濾波器。每個部件的變形引數初始化為di = (0, 0, .1, .1),這使得部件的位置與其錨點位置很近。圖5(c)展示了訓練含兩個元件的汽車模型的Phase3的結果。結果作為最後一輪引數學習的初始模型(?),最終的汽車模型如圖9所示。
圖5,(a)和(b)是汽車模型的初始根濾波器(即初始化過程中Phase1的結果)。(c)是汽車模型的初始部件濾波器(即初始化過程中Phase3的結果)
6 特徵
下面介紹來自論文[10]的36維HOG特徵(這裡所用的HOG特徵與論文[10]中稍有不同,但並不影響效能),以及可選的包含相同資訊13維特徵集。我們發現通過包含對比度敏感和對比度不敏感的特徵來擴大此低維特徵集到31維特徵向量,可以改善在大多數PASCAL目標類別上的表現效能。
6.1 HOG特徵
6.1.1 畫素級特徵對映
令θ(x,y)和γ(x,y)分別表示(x,y)處畫素點的梯度方向和梯度幅值。如論文[10]中所述,使用有限差分濾波器[-1,0,+1]及其轉置來計算梯度。對於彩色影象,使用具有最大梯度幅值的顏色通道來定義θ和γ。
每個畫素點的梯度方向離散到p個值中的一個,可以使用對比度敏感定義B1(方向範圍為0-360)或對比度不敏感定義B2(方向範圍為0-180),
下面我們用B表示B1或B2。
我們定義一個畫素級的特徵對映,它指定了每個畫素梯度幅值的稀疏直方圖。設b取值範圍為{0, ..., p-1},則(x,y) 處的特徵向量為
可以認為F是有p個方向通道的有向邊對映,對於每個畫素,通過離散化其梯度方向來選擇一個方向通道,梯度幅值看做是有向邊的強度。
6.1.2 空間聚合
設F是一個w*h大小影象的畫素級特徵對映。k>0是一個方形影象區域的邊長。定義一個矩形cell的稠密網格,將畫素級特徵聚合來獲得基於cell的特徵對映C,特徵向量為C(i,j) 。空間聚合使特徵具有對微小形變的不變性,並可以減少特徵對映尺寸。
最簡單的特徵聚合方法是將畫素(x,y)對映到一個cell 中,定義cell的特徵向量是此cell內所有畫素的特徵向量的和(或均值)。
我們這裡沒有將每個畫素對映到唯一的cell,而是採用論文[10]中的方法,用“軟合併”使每個畫素通過雙線性插值對周圍4個cell的特徵向量產生貢獻。
6.1.3 歸一化和截斷(限幅)
梯度對偏置改變(changesin bias)具有不變性,這種不變性可以通過歸一化獲得。Dalal和Triggs[10]對特徵向量C(i,j)用了4種不同的歸一化因子。我們可以將這些因子寫成 的形式:
每個因子都是對包含(i,j)在內的4個cell組成的塊(block)的梯度能量的度量。
表示向量v被α截斷(限幅)後形成的向量( 的第i個元素是v中第i個元素和α兩者中的最小值)。對基於cell的特徵對映C進行歸一化並截斷(限幅),然後串接起來就得到了HOG特徵對映,如下:
通常使用的HOG特徵中,p=9,用對比度不敏感定義進行梯度方向的離散化(B2公式,0-180度),cell尺寸k=8,限幅閾值α=0.2。這會產生一個36維的特徵向量,我們接下來的分析都使用以上引數設定。
6.2 PCA和解析降維
我們從大量各種解析度的圖片中收集了很多36維的HOG特徵,並在這些特徵向量上進行PCA分析。圖6展示了分析出的主成分,從中我們發現很多有趣的現象。
圖6,HOG特徵的PCA分析。每個特徵向量(eigenvector)都顯示為4*9的矩陣,所以每一行對應一個歸一化因子,每一列對應一個方向bin。特徵值在特徵向量上方。由前11個主特徵向量定義的線性子空間基本上包含了HOG特徵的所有資訊。注意到,所有主特徵向量沿其矩陣表達的行或列是定值。
由前11個主特徵向量(eigenvector)定義的線性子空間基本上間包含了HOG特徵的所有資訊。事實上,我們用原始36維特徵和向主特徵向量投影得到的11維特徵在PASCAL 2007資料集的所有目標類別上都獲得了同樣的結果。使用低維特徵可以產生引數較少的模型,並加速學習和檢測演算法。然而由於在計算特徵金字塔時需要相對耗時的投影步驟,使獲得的加速優勢有所減少。
36維HOG特徵向量來自4個不同的歸一化9維方向直方圖,所以36維HOG特徵向量可以自然地看做一個4*9的矩陣。圖6中的主特徵向量有一個非常特殊的結構:他們沿其矩陣表達的行或列(近似)是定值。所以主特徵向量所依賴的線性子空間可由沿其矩陣表達的某一行或列為定值的稀疏向量定義。
設V={u1,..., u9} ∪{v1, ..., v4},其中ui和vi都是36維向量,其4*9的矩陣表達形式滿足下列條件:
例如,
定義一個13維特徵,其中的元素是36維HOG特徵與每個uk和vk的點積。HOG特徵向每個uk的投影通過計算對應方向的4個歸一化值的和(即矩陣表達的某列的和)來獲得,HOG特徵向每個vk的投影通過計算對應歸一化方法的9個方向值的和(即矩陣表達的某行的和)來獲得。(注:13維特徵並不是36維特徵向V的線性投影,因為uk和vk不是正交的。事實上,由V定義的線性子空間的維數是12)
使用11維PCA特徵和使用36維HOG特徵或由V定義的13維特徵可以獲得同樣的效能表現。然而,由於uk和vk是稀疏向量,計算由V定義的13維特徵比計算向PCA主特徵向量的投影要簡單的多。此外,13維特徵有一個簡單的解釋:9個方向特徵和反應cell周圍區域梯度能量的4個特徵。
我們也可以定義對比度敏感的低維特徵。我們發現有些目標類別適合使用對比度敏感特徵,有些目標類別又適合用對比度不敏感特徵。所以在實際中我們既使用對比度敏感特徵又使用對比度不敏感特徵。
設C是聚合有9個對比度不敏感方向的畫素級特徵對映而獲得的基於cell的特徵對映,D是聚合有18個對比度敏感方向的畫素級特徵而獲得的基於cell的特徵對映。用公式(26)來定義C和D的4種歸一化因子。通過對C(i,j)和D(i,j)進行歸一化和截斷(限幅),可以獲得一個4*(9+18)=108維的特徵向量F(i,j)。實際中我們使用此108維向量的一個解析投影,此投影由下面幾個統計量定義:27個在不同歸一化因子上的累加和(即列的和),F中的每個方向通道對應一個;以及4個在不同方向(9維對比度不敏感方向)上的累加和(即行的和),每個歸一化因子對應一個。cell尺寸k=8,截斷(限幅)閾值α=0.2。最終的特徵對映是31維向量G(i,j),其中27維對應不同的方向通道(9個對比度不敏感方向和18個對比度敏感方向),其中4維捕獲(i,j)周圍4個cell組成的block的梯度能量。
最後,我們注意到圖6中的主特徵向量(eigenvector)可以粗略地解釋為二維可分離的傅立葉基。每個特徵向量可以粗略地看做是一個變數的正弦或餘弦函式。如此一來,可以使用有限個傅立葉基函式代替有限個離散方向來定義特徵。
圖6中傅立葉基(Fourier basis)的出現是一個有趣的實驗結果。當d*d的協方差矩陣Σ是迴圈矩陣時,其特徵向量可以形成一個傅立葉基,例如 。迴圈協方差矩陣(Circulant Covariance Matrix)來自對座標旋轉具有不變性的向量的概率分佈。圖6中二維傅立葉基的出現證明影象上HOG特徵向量的分佈(大致)具有二維旋轉不變性。所以我們可以旋轉方向bin,以及分別旋轉4個歸一化塊。
7 後處理
7.1 包圍盒預測
目標檢測系統想要得到的輸出並不是完全統一的。PASCAL挑戰賽的目的是預測目標的包圍盒(BoundingBox)。我們之前的論文[17]是根據根濾波器的位置產生包圍盒。但我們的模型還能定位每個部件濾波器的位置。此外,部件濾波器的定位精度要大於根濾波器。很明顯我們最初的方法忽略了使用多尺度可變形部件模型所獲得的潛在有價值資訊。
在當前的系統中,我們使用目標假設的完全配置,z = (p0,..., pn),來預測目標的包圍盒。這是通過一個將特徵向量g(z)對映為包圍盒左上角點(x1,y1)和右下角點(x2,y2)的函式來實現的。對於一個含n個部件的模型,g(z)是一個2n+3維的向量,包含以畫素為單位的根濾波器寬度(指出尺度資訊)和每個濾波器在影象左上角點的位置座標。
PASCAL訓練集中的每個目標都用包圍盒進行了標註。訓練完模型後,用檢測器在每個例項上的輸出根據g(z)訓練4個分別預測x1,y1,x2,y2的線性函式,這是通過線性最小二乘迴歸來訓練的,對於混合模型中的每個元件是獨立的。
圖7是汽車檢測中包圍盒預測的一個例子。這種簡單方法在PASCAL資料集的某些類別上可以產生較小但值得注意的效能提升(見第8節)。
圖7,汽車檢測中根據目標假設進行包圍盒預測
7.2 非極大值抑制
使用3.2節中的匹配過程經常會得到每個目標例項的多個重疊檢測。我們用一個貪心的非極大值抑制(Non-maximum Suppression)程式來消除重複檢測。
應用完上節介紹的包圍盒預測演算法後,會得到影象中的某類目標的一個檢測結果集合D。D中每個檢測結果對應一個包圍盒和一個得分。按得分對D中的檢測結果排序,貪心地選擇具有最高得分的檢測結果並跳過被之前選擇的檢測結果的包圍盒覆蓋超過50%的結果。
7.3 上下文資訊
我們實現了一個用上下文資訊(Contextual Information)對檢測結果進行重新評分(二次評分)的簡單程式。
設(D1,..., Dk)是用k個不同目標類別的模型在影象I中獲得的檢測結果。每個檢測結果(B, s)∈Di由一個包圍盒B=(x1, y1, x2,y2)和一個得分s定義。我們用一個k維向量 c(I) = (σ(s1), ..., σ(sk) )來定義影象I的上下文,其中si是Di中最高得分檢測結果的分數,σ(x) = 1/(1 + exp(-2x))是一個對分數進行重歸一化的邏輯函式。
為了對影象I中的檢測結果(B, s)進行重新評分,我們用原始檢測得分、包圍盒的左上角和右下角座標、以及影象上下文構建了一個25維(c(I)是20維)特徵向量:
座標x1, y1,x2, y2∈[0,1]用影象的寬和高進行歸一化。我們用一個特別分類器對這個新的特徵向量進行評分,這樣就獲得了檢測結果的新得分。此分類器結合g定義的上下文資訊將正確檢測從誤報結果中區分出來。
為了獲得重評分分類器(rescoring classifier)的訓練資料,在標註好包圍盒的圖片(例如PASCAL資料集)上執行我們的分類器。每個返回的檢測結果都會產生一個標註為正確檢測(true positive)或誤報(false positive)的樣本g,標註結果取決於檢測結果是否與原圖的標註包圍盒有顯著重疊。
此重評分程式在PASCAL資料集中某些類別的平均檢測精度上可以產生效能提升(見第8節)。我們的實驗中用同樣的資料集來訓練檢測模型和訓練重評分分類器,在重評分分類器的訓練中使用二次核函式SVM。
8 實驗結果
我們用PASCALVOC 2006、2007和2008 comp3挑戰賽的資料集和協議對系統進行評價。論文[11]-[13]中有詳細介紹,需要強調的是,這些測評集是公認的目標檢測中難度很大的測試集。
每個資料集都包含數千張真實世界場景的圖片。資料集給出了幾個目標類別的包圍盒真值(ground-truth)。測試時,目標是預測影象中給定類別的所有目標的包圍盒(如果有的話)。在實際中,系統會輸出一系列帶評分的包圍盒,我們可以在不同點對這些分數進行閾值化來獲得一個測試集中所有圖片的精度-召回率曲線(precision-recall curve)。精度(precision)表示檢測正確的目標占檢測的總目標的比例。召回率(recallrate)表示檢測到的目標占ground-truth中標註的所有目標的比例。
如果預測的包圍盒與ground-truth包圍盒重疊超過50%則認為此預測包圍盒是正確的檢測,否則預測包圍盒被認為是誤報(虛警,False Positive)檢測。重複檢測會被懲罰,如果系統預測的多個包圍盒都與一個ground-truth包圍盒重疊,則只有其中一個檢測被認為是正確的,其他所有都被看做誤報。通過系統在測試集上的精度-召回率曲線的平均精度(AP,Average Precision)對系統進行打分。
對於資料集中的每個目標類別,我們都訓練了一個含兩個元件的混合模型。圖9是在2007資料集上學習得到的幾個模型。圖10是使用這些模型的檢測結果,圖中顯示了高得分的正確檢測和高得分的誤報檢測。
圖9,在PASCAL 2007資料集上學習得到的一些模型
圖10,在PASCAL 2007資料集上的高得分檢測示例,選自每個類別中的前20個高得分檢測。每行最後兩張加框的圖片是每類中的誤報檢測(false positive),注意其中很多誤報都是由於包圍盒標準過於嚴格(例如人體和貓類別中的誤報)。
在一些類別上發生錯誤檢測是由於類別間容易發生混淆,比如馬和牛或小汽車和巴士。還有些錯誤檢測是由於包圍盒標準過於嚴格。人體類別最後兩個誤報就是由於預測的包圍盒與ground-truth包圍盒重疊不夠充分。在貓的檢測中,經常只檢測出貓臉,所以預測的包圍盒太小無法將貓身體的剩下部分包含進來。事實上,貓類別中得分最高的20個誤報的包圍盒都是隻有貓臉。這是一個較極端的例子但也解釋了為什麼我們在貓類上的AP得分較低。貓類別訓練資料的正樣本中有很多都是隻有貓臉,所以我們的貓模型的其中一個元件模型就是貓臉模型,見圖9。
表1和表2總結了我們的系統在PASCAL 2006和2007挑戰賽資料集上的結果。表3總結了在PASCAL 2008資料集上的結果,以及進入2008官方挑戰賽的其他系統的結果。空方格表示該方法在對應的目標類別上沒有進行測試。其中”UofCTTIUCI”是我們系統的一個初始版本。我們的系統在20個類別中的9個上得到最高AP,在其中8個上獲得第二名。此外,在某些類別上例如人體中我們系統的得分比第二名要高出很多。
表1,PASCAL VOC 2006 結果。(a) 基礎系統的平均精度(AP)得分,(b) 加上包圍盒預測後的結果,(c) 加上包圍盒預測和上下文重新評分後的結果。
表2,PASCAL VOC 2007 結果。(a) 基礎系統的平均精度(AP)得分,(b) 加上包圍盒預測後的結果,(c) 加上包圍盒預測和上下文重新評分後的結果。
表3,PASCAL VOC 2008 結果。第一個表:(a) 基礎系統的平均精度(AP)得分,(b) 加上包圍盒預測後的結果,(c) 加上包圍盒預測和上下文重新評分後的結果,(d) 最終得分在2008挑戰賽中的排名。第二個表:參加挑戰賽的其他系統的結果(UofCTTIUCI是我們系統的初始版本)
我們所做的所有試驗中都是用PASCAL trainval資料集中沒有標註為“困難”的目標例項來訓練模型(我們使用了標註為“被截斷”的例項)。我們的系統非常高效。用桌面電腦在PASCAL 2007 trainval資料集上需要4個小時來訓練一個模型,需要3小時在test資料集上評價模型。在test資料集中有4952張圖片,所以每張圖片的平均執行時間是大約2秒。所有試驗都是在配置有2.8Ghz 8核Intel Xeon CPU和Mac OS X 10.5 系統的Mac Pro電腦上進行的。系統在計算濾波器響應值時使用多核架構平行計算,其餘的計算都是在單執行緒上完成的。
我們在耗費更長時間建立的PASCAL2006資料集上測試了系統的不同方面。圖8總結了不同配置的模型在人體和汽車檢測上的結果。其中包括含1個或2個元件的帶有部件或沒有部件的模型,以及帶有部件和包圍盒預測的2元件模型的結果。我們發現部件(以及包圍盒預測)的使用可以顯著地提升檢測精度。帶有多個元件模型的混合模型在汽車的檢測中很有必要,但在人體的檢測中並沒有那麼重要。
圖8,在PASCAL 2006資料集上訓練的人體和汽車模型的精度-查全率曲線。圖中展示了含1個或2個元件的帶有部件或沒有部件的模型,以及帶有部件和包圍盒預測的2元件模型的結果。圓括號內是每個模型的平均精度(AP)得分。
我們還在INRIA人體資料集[10]上訓練和測試了一個單元件模型。我們用PASCAL評價方法(用PASCAL開發包)在完全測試集上對此模型進行了評分,用帶有包圍盒預測的基礎系統獲得了高達.869的AP得分。
9 討論
本文介紹了一個基於混合多尺度可變形部件模型的目標檢測系統。我們的系統依賴於利用隱藏資訊進行判別訓練的新方法,以及將部件模型和圖片進行匹配的高效方法。系統高效而精確,在較難的資料集上達到了目前最高水平。
我們的模型已經能夠表示高度可變的目標類別,但我們還想往更豐富的模型發展,還能夠探索其他的隱藏變數框架。例如更深的部件層次(帶部件的部件)或帶有更多元件的混合模型。將來我們還要建立基於語法的模型(Grammar Based Models),它利用可變層次結構來表示目標,允許部件級別的混合模型,以及部件的重用(reusability),包括在一個目標的不同元件中的重用和不同目標模型中的重用。
文章下載:http://download.csdn.net/detail/masikkk/6870833
Deformable Part Model 相關網頁:http://www.cs.berkeley.edu/~rbg/latent/index.html
Pedro Felzenszwalb的個人主頁:http://cs.brown.edu/~pff/
PASCAL VOC 目標檢測挑戰:http://pascallin.ecs.soton.ac.uk/challenges/VOC/
以及Pedro Felzenszwalb 在CVPR 2008 的一篇文章:
A Discriminatively
Trained, Multiscale,Deformable Part Model[CVPR 2008]的中文翻譯
有關可變形部件模型(Deformable Part Model)中一些難點的一些說明:
http://blog.csdn.net/masibuaa/article/details/17534151
相關文章
- 判別訓練的多尺度可變形部件模型 A Discriminatively Trained, Multiscale, Deformable Part Model模型AIORM
- 目標檢測(Object Detection)總覽Object
- Object Detection(目標檢測神文)Object
- 使用Tensorflow Object Detection進行訓練和推理Object
- 訓練一個目標檢測模型模型
- Yolov5——訓練目標檢測模型YOLO模型
- 目標檢測---教你利用yolov5訓練自己的目標檢測模型YOLO模型
- 目標檢測 YOLO v3 訓練 人臉檢測模型YOLO模型
- 深度學習目標檢測(object detection)系列(六)YOLO2深度學習ObjectYOLO
- 深度學習目標檢測(object detection)系列(五) R-FCN深度學習Object
- 深度學習目標檢測(object detection)系列(一) R-CNN深度學習ObjectCNN
- 深度學習目標檢測(object detection)系列(四) Faster R-CNN深度學習ObjectASTCNN
- 【object_detection】目標檢測與定位:一些基本概念Object
- 目標檢測 - Sparse R-CNN: End-to-End Object Detection with Learnable ProposalsCNNObject
- 機器學習在入侵檢測方面的應用 - 基於ADFA-LD訓練集訓練入侵檢測判別模型機器學習模型
- 使用 YOLO 進行實時目標檢測YOLO
- 使用關鍵點進行小目標檢測
- 在Windows下執行Felzenszwalb的star-cascade DPM(Deformable Part Models)目標檢測Matlab原始碼WindowsORMMatlab原始碼
- 在Windows下執行Felzenszwalb的Deformable Part Models(voc-release4.01)目標檢測matlab原始碼WindowsORMMatlab原始碼
- 使用AutoDL伺服器進行模型訓練伺服器模型
- 目標檢測入門系列手冊二:RCNN訓練教程CNN
- 目標檢測入門系列手冊五:YOLO訓練教程YOLO
- 目標檢測入門系列手冊六:SSD訓練教程
- Windows10 使用 Tensorflow Object_detection API 訓練自己的資料WindowsObjectAPI
- 【預訓練語言模型】 使用Transformers庫進行BERT預訓練模型ORM
- YOLOv5模型訓練及檢測YOLO模型
- Python OpenCV 3 使用背景減除進行目標檢測PythonOpenCV
- 0-目標檢測模型的基礎模型
- 【預訓練語言模型】使用Transformers庫進行GPT2預訓練模型ORMGPT
- 自己訓練SVM分類器進行HOG行人檢測HOG
- 目標檢測模型的評價標準-AP與mAP模型
- 目標檢測入門系列手冊三:Fast R-CNN 訓練教程ASTCNN
- 目標檢測入門系列手冊四:Faster R-CNN 訓練教程ASTCNN
- Anchor-free目標檢測綜述 -- Keypoint-based篇
- 深度學習之目標檢測與目標識別深度學習
- TorchVision 預訓練模型進行推斷模型
- 在安卓上執行yolov8目標檢測模型(ncnn)安卓YOLO模型CNN
- 52 個深度學習目標檢測模型深度學習模型