1. 程式人生 > >目標檢測系列(3):OverFeat和DeepMutliBox

目標檢測系列(3):OverFeat和DeepMutliBox

Object detection 之 OverFeat

OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks

OverFeat:利用卷積網路進行識別、定位和檢測

ICLR’ 14

摘要

文章提出一個基於卷積神經網路的綜合框架,用來解決分類、定位和檢測任務。文章展示瞭如何用卷積網路實現多尺寸的滑窗法,此外通過深度學習的方法預測物體的邊框來進行定位,對邊框進行累計而不是抑制來提升檢測的置信度。本文發現,不同的任務可以在一個共享權重的CNN上同時進行學習。本文提出的方法獲得了ILSVRC2013的定位比賽冠軍,並且在分類和檢測比賽中也獲得具有競爭性的結果。 按照作者原話OverFeat是一個運算元,類似LBP、HOG。

[Finally, we release a feature extractor from our best model called OverFeat]

主要觀點

  1. 多工的訓練可以同時提高所有任務的表現力,多工之間有互補的關係。分類、定位、檢測。
  2. 通過積累accumulate目標預測框,而不是抑制suppress,可以在目標檢測中取得更好的結果。
  3. 提出了offset pool,類似於SPP想解決多尺度輸入問題。

Classification分類任務

model design and training模型設計和訓練

用的網路結果類似與AlexNet,做了幾處微小的改進,提出了兩種模型,一個是快速模型fast model

,一個是準確模型accurate model。模型結果如下: fast model accurate model 文中給出了訓練時用的引數:原圖降取樣到256x256,然後隨機crop5個221x221,mini-batch=128,權重初始化用高斯分佈,優化器SGD,lr=105lr=10^{-5},momentum=0.6等等

Multi-Scale Classification

這小節堪稱這篇論文的核心,作者提出了一個叫offset pool的池化原理,先放圖。 offset pool 這張圖是offset pool的一維解釋。 目的和SPP的想法一樣,多尺度的input經過卷積層後得到多尺度的feature maps,但是這些不同尺度的feature maps不能送進全連線層,需要但是對所有feature maps經過平均後,最終的就是類別數C

C

ConvNets and Sliding Window Efficiency

討論了文章的檢測速度比普通的滑窗法快的原因,就是和R-CNN比,不需要對每個proposals進行一次CNN,這樣速度就提升了很多。歸功於設計了offset pool,可以輸入多尺度。 conv efficiency

Localization 定位任務

主要把分類任務的最後一個分類層換成迴歸層,然後預測bounding boxes。定位任務的網路最後3個全連線層的節點數分別維4096、1024、4,4代表描述bounding box的4個座標。最後一層4是和類別有關的class-specific,對於每一個類都要單獨訓練。用的loss是L2

combining predictions 綜合預測

之前提到了本文的一個main contribution是積累預測,而不是抑制。 對於每個尺度預測的結果,通過一種貪婪演算法進行綜合-平均:

  1. 在6個尺度上進行分類任務,每個尺度取top-k個結果,對圖片類別進行標定CsC_{s}
  2. 同樣的,在6個尺度上進行定位任務,得到bounding box結果BsB_{s}
  3. 將所有尺度的BsB_{s}取並集得到大的BB
  4. BB中的bounding box進行整合/抑制,具體做法:選取兩個box b1,b2b_{1},b_{2},計算match_score(b1,b2b_{1},b_{2}),如果match_score<閾值,則把b1,b2b_{1},b_{2}BB刪除,並將b1,b2b_{1},b_{2}的融合放進BB;如果match_score>閾值,stop。

Object detection 之 DeepMultiBox

Scalable Object Detection using Deep Neural Networks

利用深度神經網路實現可擴充套件的目標檢測

2014 CVPR,Google出品

摘要

文章指出之前的目標檢測模型存在的問題:無法處理同類物體的多個例項cannot handle multiple instances of the same object。本文提出一種用於目標檢測的深度神經網路,產生和物體種類無關的bounding box,並且每個box都有一個置信度表示存在任務目標的可能性。實驗結果表明,文章提出的DeepMutliBox方法不僅能夠檢測同一物體的不同例項,而且對未出現過的目標具有不錯的泛化能力。

主要亮點

  1. 本文將目標檢測問題歸納為Bounding Box的迴歸問題,並且對Box存在目標的可能性用置信度進行量化。
  2. 將分類和檢測兩個task結合,多工共用一個深度卷積網路。
  3. 提出class-agnositc物體類別無關的矩形框,對未見過的目標有很好的泛化能力。

Approach

通過預測一系列可能存在目標的Bbox,以及每個Bbox的置信度(這個置信度表示存在任何目標的可能,不針對具體目標種類) 模型:為了得到Bbox和置信度,需要將模型進行一定的修改。 Bbox包含4個值,可以用4維向量表示。在DNN的最後一個隱含層後加一個fc得到。 置信度用一個[0,1]之間的小數表示。在DNN的最後一個隱含層加一個fc和Sigmoid函式得到。文章中用於分類的網路是AlexNet Loss function:網路的優化方向有2個

  1. 對於和Ground truth最吻合的點,希望其置信度越大越好,即這個bbox中確實存在目標;
  2. 對於和Ground truth不吻合的點,希望其置信度越小越好,即這些bbox中不存在目標;

因此,提出2個損失函式: L2迴歸損失Fmatch(x,l)=12ijxijligi]22F_{match}( x, l)=\frac{1}{2}\sum_{ij}x_{ij}||l_{i}-g_{i}]||_{2}^{2} 只有當xij=1x_{ij}=1時才有會有loss,即最吻合的bbox和ground truth的L-2差,顯然希望最吻合的bbox和ground truth是一樣的,這樣loss最小,Fmatch(x,l)F_{match}( x, l)越小說明產生的bbox越準確。 cross-entropy 分類損失Fconf(x,c)=i,jxijlog(cj)i(1jxij)log(1ci)F_{conf}( x, c)=-\sum_{i,j}x_{ij}log(c_{j})-\sum_{i}(1-\sum_{j}x_{ij})log(1-c_{i}) 但是僅僅有L2迴歸損失是不夠的,還需要加入分類損失,用交叉熵損失。 對於前一項i,jxijlog(cj)-\sum_{i,j}x_{ij}log(c_{j}),當xij=1x_{ij}=1時即分類正確,希望cjc_{j}越大越好; 對於後一項i(1jxij)log(1ci)-\sum_{i}(1-\sum_{j}x_{ij})log(1-c_{i})。當xij=0x_{ij}=0即分類錯誤,希望1cj1-c_{j}越大,即cjc_{j}越小越好。 最終的損失函式包括迴歸損失和分類損失: F(x,l,c)=αFmatch(x,l)+Fconf(x,c)F(x,l,c)=\alpha F_{match}( x, l)+F_{conf}( x, c) 訓練時α=0.3\alpha =0.3

Optimization:作者訓練CNN用的時經典的反向傳播BP。 Training Details:採用了3個modification提升訓練的速度和精度

  1. perform clustering of ground truth locations and find K such clusters/centroids.
  2. using priors in the matching process
  3. 【還有啥】

實驗部分