標籤:att 自己 ati computer center 效率 資料 1.5 line
Scalable Object Detection using Deep Neural Networks
作者: Dumitru Erhan, Christian Szegedy, Alexander Toshev, and Dragomir Anguelov
引用: Erhan, Dumitru, et al. "Scalable object detection using deep neural networks." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2014.
引用次數: 181(Google Scholar, by 2016/11/23).
項目地址: https://github.com/google/multibox
1 介紹
這是一篇2014年發表的CVPR會議論文, 幾個作者都是Google公司的,文中的檢測演算法被命名為"DeepMultiBox".首先來看一下本文模型的思路: 本文的目標檢測還是採用兩步走的策略:
第一步: 在映像上產生候選地區; 以前常用的產生候選地區的方法是窮舉法,對映像上所有的位置以及尺度進行窮舉,這種計算效率太低,已經遭到廢棄,現在陸續出來一些其他的方法,比如論文<論文閱讀筆記--Selective Search for Object Recognition>裡面提出的Selective Search的方法,利用層次聚類的思想,產生指定數目最可能包含目標的候選地區.同樣,本文也是在這一方面做努力,提出了使用CNN來產生候選地區,並且命名為"DeepMultiBox";
第二步: 利用CNN對產生的候選地區進行分類; 產生候選地區後,提取特徵,然後利用分類器進行分類從而達到識別的目的,這是一般的思路,沒有什麼好講的,本文的重心在第一步.
2 本文模型
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]
論文閱讀--Scalable Object Detection using Deep Neural Networks