1. 程式人生 > >MSCNN論文解讀-A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection

MSCNN論文解讀-A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection

 多尺度深度卷積神經網路進行快速目標檢測:

兩階段目標檢測器,與faster-rcnn相似,分為an object proposal network and an accurate detection network. 文章主要解決的是目標大小不一致的問題,尤其是對小目標的檢測,通過多層次的結構,實現多尺度的目標檢測。

之前所使用的簡單的單一尺度的目標檢測器通常為了識別出圖片中大小適中的目標而將感受野設定為一個適當的大小,這種設定對於較大或較小的目標的識別效果都比較差。通常解決小目標的識別是通過將輸入圖片進行上取樣的方法,但是這種方法所消耗的記憶體和計算量都很大,所以本篇文章所採用的多尺度目標檢測器能夠解決這種目標大小與感受野不一致的現象,每一個檢測層只著重檢測與這一層尺寸相匹配的目標。換句話說,就是在網路的淺層檢測小目標,在深層檢測大目標。

 

文章第二個貢獻在於利用特徵上取樣代替輸入圖片上取樣,擴大小目標的解析度,提高識別準確率。這一部分是利用一個反捲積層實現,採用的方法是雙線性插值的方法,減少了記憶體和計算的消耗。

第三部分是目標檢測網路的第一個階段-生成候選框的子網路(Multi-scale Object Proposal Network )。這一部分分三個主要部分。

3.1多尺度檢測

多尺度檢測分為兩種方法:(1)利用一個單一尺度的分類器並將輸入圖片多次重新縮放成不同比例進行檢測,使分類器能夠與所有尺寸的目標相匹配。(2)利用卷積神經網路特徵的複雜性。本文采用的是一個多尺度的檢測方法,在卷積過程中的多個卷積層中進行檢測,但是輸入採用單一尺度的圖片,並且每個檢測層只檢測固定尺寸大小的圖片。

3.2架構

 

文章中的MS-CNN proposal network如圖三所示,影象中間是網路的主幹,同時在一些卷積層中帶有分支結構。其中每個分支都是一個單一尺度的目標檢測器。注意在第4-3個卷積層後帶有一個緩衝層,是為了防止低層次卷積層在反向傳播過程中影響主幹網路的梯度。

整個proposal network子網路的損失用W來表示,S是訓練目標的一個集合。其中整體的損失數由公式(1)進行計算,是將每一個檢測層的損失疊加在一起作為整體損失,損失的計算與faster r-cnn相似,分別計算分類損失和迴歸損失。分類採用對數損失,迴歸採用SMOOTH-L1損失。

3.3取樣

對於每一個檢測層訓練樣本都分為正、負樣本。其中候選框是通過一個Anchor作為滑動視窗的中心,在特徵對映上滑動產生的。Anchor的大小設定與卷積核的大小相關,並且不同檢測層的大小設定也不同,具體設定如表一所示。當候選框與真實樣本的IOU值大於等於0.5時,被標記為正樣本,當IOU值小於0.2時被標記為負樣本,其餘的丟棄。

 

但是對於一張自然圖片,目標與非目標的比例通常不匹配。取樣就是要解決這種正負樣本不平衡的現象,通常是對負樣本進行取樣,文中介紹了三種方法分別為:(1)隨機取樣,即隨機的選取負樣本。(2)自定義方法,文中是將所有負樣本按照分數進行排名,選取前n個強負樣本。(3)混合方法,一半採用隨機取樣,一半採用按分數排名。

為了保證每一個檢測層只檢測這一層次所對應尺度的目標,在訓練樣本中,這一層次的訓練樣本必須包含所對應範圍內的所有尺寸。那麼就可能會出現一個檢測層中沒有正樣本的出現,導致正負樣本比例失調,使學習的模型不穩定,所以在計算分類損失時將檢測到的正負樣本乘以不同的係數一減少負樣本對整體的影響。

第四部分是目標檢測子網路的介紹,在加入檢測子網路後,整個網路的損失通過公式(6)進行計算,前一部分為候選框子網路的損失,後一部分為檢測子網路的損失。其中檢測子網路的損失計算公式與faster r-cnn相似,M+1為M個類別和一個背景。第四部分分為兩個主要部分:

4.1 cnn特徵值插圖

在第4-3個卷積層後通過反捲積加入一個卷積層,實現特徵對映的上取樣,對於小目標的識別更加準確。

4.2上下文嵌入

如圖綠色框代表檢測到的目標候選框,藍色框為帶有該目標的上下文資訊的候選框,其中藍色框為綠色框的1.5倍,通過將這兩個框進行堆疊,在通過一個降維卷積層將冗餘的資訊進行壓縮,在不損失準確率的情況下減少了引數。