Deep Neural Networks for Object Detection論文翻譯

這是2013年使用深度學習做目標檢測的一篇論文,相對於經典的rcnn是要出現的更早一些,這篇博客將對這篇論文進行一些翻譯和解讀,若理解有偏差和錯誤還望指出,大家互相交流和學習。
論文題目:Deep Neural Networks for Object Detection
作者:Christian Szegedy Alexander Toshev Dumitru Erhan Google, Inc.

摘要:深度神經網絡最近已經在圖像分類任務上有着十分傑出的表現。在這篇文章中,我們通過使用深度神經網絡進一步解決了目標檢測的問題,即不僅僅是分類,還要準確的定位出不同類別物體的位置。我們展現了一個簡單但是有效的想法,那就是把目標檢測問題歸結爲對目標包圍矩形的掩模的一個迴歸問題。我們定義了一個多尺度的推理過程(inference procedure),它能夠通過應用一些網絡以一個較低的代價產生高分辨率(high-resolution)的目標檢測。在PASCAL VOC數據集上取得了頂尖的表現。
一、前言
當我們想要對圖像有更加複雜的理解,擁有更加準確和詳細的目標識別能力變得至關重要。在這種情況下,我們不僅僅關心圖像分類,還關心精確的估計圖像中包含物體(目標)的類別和位置。
在目標檢測中重要的進步來自於對目標的表達和機器學習模型的進步。其中一個表現十分突出的例子是之前的一個頂尖的目標檢測模型——DPM模型。它建立在仔細設計的物體表達以及受運動啓發(kinematically inspired)的物體的部分分解思想,這種部分分解思想被表達爲一個圖模型。使用對圖模型進行判別式學習使得我們可以對不同種類的物體構建一個高精度的基於部件的模型。
手工設計的物體表達以及淺層的生成式訓練模型同樣地一直以來在目標分類等相關問題上有着最好的表現。然而在近幾年,深度神經網絡已經成爲了一個強有力的機器學習模型。(作者的意思大概是在深度學習出現之前,手工特徵加淺層學習模型在圖像分類等問題上有着最好的表現,但是現在已經是深度學習的天下了)
深度神經網絡在分類問題上展現出和傳統方法較多的不同。首先,深度神經網絡是深度結構,它有比淺層結構學習更爲複雜模型的能力。這個富有表達性和魯棒的訓練算法使得我們可以學習到有效的物體表達,而不用去手工設計特徵。在工程上通過1000類的圖像分類比賽(IMAGENET)已經證明了這種算法的可行性。
在這篇文章中,我們探索了使用深度神經網絡解決目標檢測的能力,在目標檢測中,我們不僅僅要區分物體,還要精確的定位物體。我們所說的目標檢測是一個具有挑戰性的問題,因爲我們想要在有限的計算資源下,在一張圖片中檢測出可能存在的許多的各種尺寸大小的目標。
我們提出了一種想法,在給定一張圖片的情況下它能夠預測多個物體的包圍矩形。更爲準確地說,我們構想了一種基於深度神經網絡的迴歸方法,它能夠輸出目標包圍矩形以及部分目標包圍矩形的二元掩模,正如圖1所示的那樣。
這裏寫圖片描述
另外,使用了一個簡單的包圍矩形推理來從許多掩模中提取檢測結果。爲了提高定位精度,我們在全圖以及少數的大面積剪裁的圖像上用多尺度的方式使用了深度神經網絡掩模生成方法,後面還伴隨着一個精修的步驟。如圖2所示。
這裏寫圖片描述
以這種方式,我們僅需要少數幾次的DNN迴歸,便可以達到頂尖的目標檢測結果。
在這篇文章中,我們闡明瞭基於DNN的迴歸方法能夠學習到對於分類和抓取幾何信息同樣有利的特徵。我們使用ALexNet這個通用的結構,並且把最後一層替換爲迴歸層。有點令人驚訝但很有說服力的見解是,網絡在一定程度上編碼平移不變性,也可以捕獲對象位置。
第二,我們介紹了一種多尺度的包圍矩形推理方法,在其之後還伴隨着一個精修的步驟來產生精確的檢測結果。通過使用這種方法,我們可以以一個低成本把DNN應用到像素級別的檢測精度上的檢測方法中來。這個DNN由於輸出層的尺寸限制,產生的是低分辨率的掩模。這個DNN對於每一張輸入圖片只被應用幾次。(這裏翻譯不是太好)
另外,提出的方法相當簡單,沒有必要顯示地手工設計一個捕捉物體部件以及部件之間的關係的模型。這樣的簡單性有着易於在各種物體上應用的有點,同時在各種物體的檢測中還有着更好的表現,包括剛性的和非剛性的物體。該模型在PASCAL VOC數據集上有着頂尖的表現,我們將在第七章介紹。
二、相關的工作
在目標檢測領域,最被廣爲研究模型之一是是DPM模型,其中論文9(見原文,是Ross B Girshick的一項工作)是其中最爲突出的例子。這種模型包括了一系列可區分的位於star模型中的部件,它可以被認爲是一個兩層模型,部件是第一層,star模型是第二層。與DNN不同的是,DNN的層是通用的層,論文9的工作開發了區域的知識和信息——部件是基於手工設計的HOG特徵的,部件的結構是受運動學啓發的(kinematically motivated)
用於目標檢測和分割的深度結構是受基於部件的模型啓發的,在傳統上被稱爲組合模型,在這種模型中,目標被表達爲原始圖像的層次組合。一個顯著的例子是論文20中提到的與或圖,在這個圖中一個物體被建模成一棵樹,其中與節點表示不同的部件而或節點表示同一部件不同的模式。和DNN相似的是,與或圖包括多個層,低層表示小的通用的原始圖像,而高層表示物體的部件,這樣的組合模型比DNN更容易解釋。在另一方面,這種模型需要推理而這篇文章中的DNN模型純粹是前向計算,沒有潛在的變量需要被推理。
進一步,用於目標檢測的組合模型的例子是基於分割的,並且專注於形狀,使用Gabor濾波器或者更大的HOG濾波器。這些方法一直因爲訓練困難變得很有難度,並且使用了特殊設計的訓練過程。而且,在推理階段他們包括自下而上和自上而下的過程。
神經網絡也可以被認爲是組合模型,其中的節點更爲通用和一般,並且比以上的模型更加難以解釋。把神經網絡應用到視覺問題上是幾十年前的事情了,卷積神經網絡是最爲突出的一個例子。直到最近這些模型才作爲非常成功的模型出現,因爲它們在大規模圖像分類任務上取得了頂尖的效果。但是這些模型在目標檢測上的應用是非常有限的。場景分割作爲一個更爲詳盡的目標檢測的形式,已經被嘗試使用多層卷積神經網絡來解決這個問題。醫學影像的分割已經通過DNN得到了解決。然而這兩種方法都使用神經網絡作爲本地或者半本地的分類器,這個分類器作用在超像素和每個像素位置上。然而我們的方法使用整個圖像作爲輸入,通過迴歸實現定位。因此,我們這種方法是神經網絡更爲有效的一種應用。
也許和我們的方法最爲接近的方法是論文18的方法,它和我們的方法有相似的高層次的目標,但是它使用了更小的網絡,並且特徵損失函數都不同,並且沒有方法去區分同一類的多個物體。
三、基於DNN的目標檢測
我們方法的核心是對於目標掩模的一個基於DNN的迴歸過程,如圖1所示。基於迴歸模型,我們可以對完整的物體和部分物體產生掩模。一個單一的DNN迴歸可以給我們一張圖片中多個物體的掩模,爲了進一步提高定位的精度,我們把DNN定位器使用在少數幾個大的亞窗口上。完整的流程在圖2中呈現,並且在下面會解釋。
四、DNN迴歸的目標檢測
我們的網絡是基於論文14提出的Alexnet,它包括7個層,前五層是卷積層,後面是兩個全連接層。每一層使用rectified linear unit來作爲一個非線性轉換。五個卷積層的三個卷積層有額外的最大池化層。要想更加了解可以參考論文14。
我們採用上述的通用的模型來完成定位的功能,與這個通用的alexnet模型不一樣的是,alexnet模型的最後一層是softmax層,因爲它實現的是分類的功能,而我們這裏使用的是迴歸層,它可以產生產生一個目標的二元掩模DNN(x;θ)∈R(N),其中θ是是神經網絡的參數,N是像素的總數。由於神經網絡的輸出有一個固定的維度,所以我們預測一個由固定尺寸的掩模,N=d*d。在被縮放到圖像的尺寸後,神經網絡輸出的掩模呈現了一個或者多個目標,如果這個像素在目標的包圍矩形框中那麼對應的掩模的值就是1,否則爲0。
網絡通過最小化L2誤差來進行訓練,損失函數如下圖所示:
這裏寫圖片描述
其中x是輸入的圖片,m是該圖片的真值掩模向量,Diag(m)表示以m爲對角線元素的對角矩陣。(λ我認爲是自己設定的一個常量。)
由於我們的基本的網絡是高度非凸的並且最優化不能得到保證,因爲只有凸函數使用梯度下降法纔可以得到最優解的,所以有時候需要對損失函數加上正則化,方法是根據真值掩模對每個輸出使用不同的權重。一件直觀的事情是大多數物體相對於圖片尺寸而言都是很小的,所以神經網絡很容易陷入一個平凡解,這個平凡解即是把所有的輸出都設置爲0。爲了避免這個不想要的行爲,通過控制參數λ來增加真值掩模爲非0的權重。如果λ很小,那麼在真值掩模爲0上產生的錯誤輸出(即輸出爲1)會被懲罰,在真值掩模爲1上產生的錯誤輸出(即輸出爲0)也會被懲罰,但是前者的懲罰會比後者少,從而鼓勵神經網絡輸出1。
在我們的實現中,我們使用感受野爲225*255的神經網絡,並輸出24*24的掩模。
五、通過DNN產生的掩模來實現精確的定位
儘管我們描述的方法可以生成高分辨率的掩模,但還有其他的挑戰。首先,單一的掩模可能不足以消除當多個物體挨在一起的時候產生的歧義,比如這個時候到底是一個物體還是多個物體。第二,由於輸出的大小限制,我們產生的掩模尺寸遠遠小於原始圖像。比如說對於一個原始圖像尺寸爲400*400以及輸出24*24的掩模,每一個輸出都對應着16*16的小區域,這不足以精確的對物體進行定位,特別是對於小的物體。最後,因爲我們以整個圖片作爲輸入,小的物體對輸入的神經元影響很小,因此很難識別小的物體。下面我們將解釋如何解決這些問題。
5.1爲了魯棒的定位使用多個掩模
爲了解決多個挨着的物體,我們產生了多個掩模,每個掩模代表了一個完整的或者部分的物體。由於我們的最終目的是產生一個包圍矩形,所以我們使用一個神經網絡去預測目標矩形的掩模,4個額外的神經網絡來預測4個一半的目標掩模——分別是下半部分的掩模,上半部分的掩模,左半部分的掩模以及右半部分的掩模,標註爲mh,h屬於{全部、上、下、左、右}。這五個預測是過完備的但是可以幫助減少不確定性並且可以處理一些錯誤。進一步,如果同個類型的兩個物體挨着放在一塊那麼產生的五個預測中至少有兩個預測不會合並。這將使得我們可以檢測多個物體。
在訓練時間,我們需要把包圍矩形轉化爲這五個掩模,由於掩模可能遠小於原始圖像的尺寸,所以我們需要把真值掩模下采樣到網絡輸出的尺寸。神經網絡輸出預測的圖像中矩形,T(i,j)表示神經網絡的(i,j)位置處的輸出。矩形左上角的位置是(d1(i-1)/d,d2(j-1)/d),尺寸是(d1/d * d2/d)(原文中d2寫的是d1,我認爲是寫錯了,應該是d2),d就是神經網絡輸出的尺寸,在本文中是24,d1和d2是圖像的長和寬。在訓練階段,我們預測m(i,j)作爲T(i,j)一部分,如式1所示:
這裏寫圖片描述
其中bb(full)表示物體包圍矩形的真值,對於剩下的h屬於(上、下、左、右),bb(h)對應於原始真值的四個一半部分(上、下、左、右)。我們使用了完整的矩形,左,右,上,下五種矩形來定義五種不同的覆蓋類型。對於不同的類型h,得到的x相對於真值的結果mh(bb)在訓練階段會被使用到。
此時,我們注意到我們可以在一次訓練中得到所有五個掩模的輸出。這將使得可擴展性成爲可能。使用這種方式,五個不同的定位器將會共享大多數的層,因此會共享大多數的特徵。這看起來是非常合情理的因爲他們處理的是同一個物體。一種更爲激進的方法是對於不同的類別使用同一個定位器似乎也是可行的。
5.2 從DNN的輸出來實現目標定位
爲了完備整個檢測流程,對於每個圖片我們預測一系列的包圍矩形。儘管神經網絡輸出的分辨率比輸入圖片的分辨率要小很多,我們將輸出的二元掩模縮放到輸入圖像的分辨率大小。我們的目標是估計包圍矩形的座標(i,j,k,l),其中(i,j)是在輸出的掩模座標系下矩形框左上角的座標(k,l)是矩形框右下角的座標。
爲了達到這樣的目標,我們使用一個分數S來表達包圍矩形和掩模的一致性,並根據最高的分數來推論包圍矩形的位置。一個很自然的衡量一致性的方法是矩形的哪一部分被掩模所覆蓋。如式2所示:
這裏寫圖片描述
(i,j)表示神經網絡輸出的索引(這裏將神經網絡的輸出看做一個二維矩形),m表示神經網絡的輸出,m(i,j)表示神經網絡輸出中索引爲(i,j)的值。如果把式2擴展爲5個輸出的掩模的話,最後的分數就寫爲式3:
這裏寫圖片描述
其中halves包括{full; bottom; top; left;right}。對於halves中的一個h,h橫(公式3中h上面加一橫)表示和h對立的一半。For h = full,we denote by h a rectangular region around bb whose score will penalize if the full masks extend outside bb.在以上求和中,一個矩形框如果和5個掩模一致,那麼分數就會很大。
我們使用式3中得到的分數來在所有可能的矩形中窮盡搜索。我們在圖像平均維度爲[0.1,0.9]區間以及10個不同的寬高比來考慮包圍矩形,這10個不同的寬高比是對訓練數據中所有目標矩形進行k均值聚類來估計得到的。這樣的話對於每一個位置我們可以考慮9*10個矩形,我們在圖像中使用滑窗法,考慮以上提到的90個矩形,步長設定爲5個像素。公式3中的分數可以通過對計算出來的掩模做積分圖之後再進行4個運算來進行有效的計算。運算的確切的數量是5(2*像素的數量 + 20*矩形的數量),前者衡量的是積分圖計算量而後者衡量的是分數的計算量。
爲了產生最後的檢測結果,我們使用了兩種不同類型的濾波方法。第一個是保留在公式2中分數大於0.5的矩形。然後進一步通過一個分類器來減少矩形的數量,最後通過非極大值抑制來減少矩形的數量。
5.3 多尺度的定位精修
神經網絡輸出的分辨率不足的問題可以通過以下兩種方式解決:第一是在不同尺度下以及一些大的亞窗口下使用DNN定位器,第二是在得分高的預測矩形中進行精修。
使用不同尺度下的大的窗口,我們產生了多個掩模,每一個掩模負責一個尺度,我們把它們融合來得到高分辨率的掩模。合適的尺度的範圍依賴於圖像的分辨率和定位器的感受野的尺寸。我們想要輸入的圖片被神經網絡的輸出所覆蓋,同時我們還想要每個目標至少落在一個矩形框中,並且這些窗口的總數要比較小才行。
爲了實現以上的目標,我們使用了三個尺度:整個圖片的完整的尺度大小和其他兩個尺度,這兩個尺度根據完整的尺度大小依次減半。我們用這些尺度的窗口來覆蓋圖像,這樣的話這些窗口有一個20%的覆蓋率。這些窗口的數量相對較小,並且在多個尺度下覆蓋了原圖像。最爲重要的是,最小的尺度下可以在更高的分辨率下完成定位。
在推導階段,我們在所有的窗口下使用DNN。這和滑窗法不同,因爲我們需要對圖像獲得的窗口進行評價來得到少量的窗口,一般數量少於40。在每個尺度下產生的掩模通過一個最大化的操作進行了融合。這給我們3個圖像尺度大小的掩模,每個掩模在不同的尺寸大小看待目標。對於每一個尺度,我們使用5.2中的包圍矩形的推理方法來獲得一些列的檢測結果。在我們的實現中,我們取每個尺度下排名前五的檢測結果,總共有15個檢測結果。
爲了進一步的改善檢測結果,我們使用了第二個步驟叫做精修。DNN定位器應用在被第一步檢測步驟定義的檢測窗口上——每個這15個檢測結果都被放大了1.2倍並且被應用到網絡上。在更高的分辨率上使用定位明顯增加了檢測精度。
完整的算法如下圖所示:
這裏寫圖片描述
6、訓練DNN
我們的神經網絡的一個引人注目的特點是簡潔性:將分類器的分類層用掩模產生層替換,而沒有任何的先驗知識和卷積結構。但是它需要大量的訓練數據來訓練,因爲不同尺寸的目標需要出現在圖像中的每一個角落。
對於訓練掩模生成器,我們對每個圖片生成數千個樣本,60%是負樣本,40%是正樣本。如果一個樣本和真值包圍矩形沒有任何交集那這個樣本就被判定爲負樣本,如果樣本和真值包圍矩形有超過80%的重合,就被判定爲正樣本。圖像按照最小尺度和原始完整圖像尺度的寬度之間的均勻分佈來進行圖像剪裁。
我們使用相似的準備步驟來訓練一個分類器,這個分類器用來優化我們的檢測結果。再一次,我們對每一個圖片採樣數千個樣本:60%的負樣本和40%的正樣本。負樣本是那些圖像的包圍矩形和真值的包圍矩形之間的Jaccard-similarity小於0.2的圖像,正樣本是Jaccard-similarity大於0.6。加入額外的負樣本類型起到了一個正則化的作用並且提升了濾波器的質量。在這兩種情況中,樣本的總數會達到每一類的樣本達到1000萬個。
由於訓練定位器比訓練分類器要難,所以在低層的濾波器係數必須是高質量的。爲了實現這個,我們首先訓練網絡用於分類,然後在重新使用除了分類層以外的所有層的係數。在訓練定位的時候再進行調優。
神經網絡通過隨機梯度下降法來訓練,使用了論文6的方法來自動估計學習率。
後面就是一些實驗結果了,這裏就不再翻譯了。

發佈了51 篇原創文章 · 獲贊 90 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章