目標檢測--Scalable Object Detection using Deep Neural Networks(CVPR 2014)

Scalable Object Detection using Deep Neural Networkshtml

做者: Dumitru Erhan, Christian Szegedy, Alexander Toshev, and Dragomir Anguelovios

引用: Erhan, Dumitru, et al. "Scalable object detection using deep neural networks." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2014.git

引用次數: 181(Google Scholar, by 2016/11/23).github

項目地址https://github.com/google/multibox算法

1 介紹網絡

這是一篇2014年發表的CVPR會議論文, 幾個做者都是Google公司的,文中的檢測算法被命名爲"DeepMultiBox".首先來看一下本文模型的思路: 本文的目標檢測仍是採用兩步走的策略:函數

第一步: 在圖像上生成候選區域; 之前經常使用的生成候選區域的方法是窮舉法,對圖像上全部的位置以及尺度進行窮舉,這種計算效率過低,已經遭到廢棄,如今陸續出來一些其餘的方法,好比論文<論文閱讀筆記--Selective Search for Object Recognition>裏面提出的Selective Search的方法,利用層次聚類的思想,生成指定數目最可能包含目標的候選區域.一樣,本文也是在這一方面作努力,提出了使用CNN來生成候選區域,而且命名爲"DeepMultiBox";測試

第二步: 利用CNN對生成的候選區域進行分類; 生成候選區域後,提取特徵,而後利用分類器進行分類從而達到識別的目的,這是通常的思路,沒有什麼好講的,本文的重心在第一步.google

2 本文模型spa

2.1 迴歸模型DeepMultiBox

如何使用CNN來在圖像上生成候選區域呢? 本文借鑑了AlexNet網絡的結構:

要對這個問題進行建模! 咱們這裏的目的是想讓CNN輸出必定數量的bounding boxes(每一個box用4個參數表示,分別是此box的左上角的橫座標+縱座標,右下角的橫座標+縱座標,對每一個座標值要用圖像的寬和高進行歸一化),另外還要輸出每一個box上還要有一個是否包含目標的置信度(值介於0~1之間).這樣,若是咱們想讓CNN輸出K=100個bounding boxes,CNN輸出層節點的維度要爲(K*(4+1)=5*K=500).

2.1.1 DeepMultiBox的訓練集構造

訓練集是如何構造的? 訓練集的輸入確定是每張訓練圖像上的"maximum center square crop",這個的含義是先計算每張圖像的中心點,而後以它爲中心從圖像上裁剪出來一個最大的正方形,爲了知足AlexNet的網絡結構,可能每張圖像還要resize到220*220大小(這點在原文中的4.2.2中講述);關鍵在於輸出,這點文中講的比較隱晦,原文的表述爲:"For each image,we generate the same number of square samples such that the total number of samples is about ten million.For each image, the samples are bucketed such that for each of the ratios in the ranges of 0−5%, 5−15%, 15−50%, 50−100%,there is an equal number of samples in which the ratio covered by the bounding boxes is in the given range." 個人理解是,對於訓練集中的每一個圖像,產生固定數量(假設爲N)的正方形的區域做爲訓練集(問題1:爲何要是正方形? 這些區域的大小都是相同的嗎?若是相同,如何知足目標多尺度要求?若是不相同,如何選擇區域的大小?),這N個區域的選擇是有講究的:它由四份組成,每份中區域向數量相等,並且每份中的區域與圖像上GT boxes的重合程度分別是0-5%,5-15%,15-50%,50-100%.每一個區域的置信度也沒有講要如何肯定,我想應該就是每一個區域與GT boxes的重合程度吧!

(問題2: 訓練樣本是否是這樣構造的,還請指教!)

2.1.2 DeepMultiBox的訓練

2.2裏面講述了訓練集是如何構造的(有可能我理解的不正確,可是文中講述的也太隱晦了),下面開始訓練AlexNet模型.假如迴歸bounding box的數目K設定爲100的話,將有500個參量須要迴歸,這樣AlexNet的輸出層節點的數目就要被設置爲500(這點文中也沒有講).因爲是迴歸,在CNN後面直接用Softmax可能不行,做者本身定於了目標函數,具體的見原論文.

2.2 CNN分類模型

2.2.1 分類模型的訓練集構造

DeepMultiBox在每張圖像上回歸了K個候選區域,然而這些候選區域到底屬於哪一類還不能肯定,所以這裏須要再訓練一個CNN來對這些區域進行分類.

原文中的4.2.1節簡短講述了用於訓練CNN分類器的訓練樣本構造(對於VOC數據集來講的,類別總數目爲20):

正樣本: 爲每一個類別構造正樣本,若是候選區域和此類的GT boxes之間的Jaccard大於0.5,則此區域被標記成正樣本,這樣共產生了1千萬個正樣本,遍及20個類;

負樣本: 和正樣本構造的方式相似,只是Jaccard要小於0.2才被認定是負樣本,這樣,總共產生了2千萬個負樣本;

2.2.2 分類模型的結構

文中貌似沒有具體講述分類模型的結構,只知道用的也是AlexNet,輸出層的節點數目確定改爲了21(對於VOC數據集而言),樣本集區域的大小是多少不知道!每一個樣本區域要resize到AlexNet網絡輸入的指定大小,這點也沒看到!

2.3 測試過程

測試的過程在原文的4.2.2節有講到(假設有N個目標): 給定一張測試圖像 --> 裁剪出它的最大正方形區域 --> 將此區域resize到220*220大小 --> 送入DeepMultiBox網絡進行迴歸,獲得K個迴歸boxes以及每一個box的置信度分數 --> 利用非最大值抑制的方法將重疊度小於0.5的box去除掉 --> 擁有最高置信度分數的10個區域將被保留 --> 將這些區域送到分類CNN裏面進行軟分類,輸出每一個區域的機率值,獲得10*(N+1)的機率矩陣 --> 每一個區域的置信度分割乘上機率值做爲它最終的分數 --> 這些分數用於估計和計算P-R曲線.

(問題3:這個測試的過程我認爲最後少了一個對最終分數進行判斷的過程,不知道最後是如何肯定最終結果的!)

參考文獻:

[1]

相關文章
相關標籤/搜索