作者Rgb 在這之前大部分物體檢測算法都是基于傳統的圖像處理方法,這是第一篇將深度學習用到物體檢測上的文章,直接影響是2012年ALEXNET在比賽中的重大成功。 簡單來說,RCNN使用以下四步實現目標檢測: a. 在圖像中用slective search 方法 確定約1000-2000個候選框 具體為什么使用這個方法,原文在第三頁中有說While R-CNN is agnostic to the particular region proposal method, we use selective search to enable a controlled comparison with prior detection work。意思是R-CNN和區域選擇方法并沒有聯系,對任何選擇方法都是兼容的,這里選用SS目的是方便于同之前別人的工作進行對比。 b. 對于每個候選框內圖像塊,使用深度網絡提取特征,得到一個固定長度的特征向量 We extract a 4096-dimensional feature vector from each region proposal using the Caffe implementation of the CNN described by Krizhevsky etal.這里很清楚的說了,作者就是用了AlexNet的網絡結構最好提取4096維的一維向量,作為特征向量。 輸入去均值化的227×227 RBG通道圖片,然后經過5個卷積2個全連接。因為經過SS得到的候選框大小不一,但是CNN要求的輸入必須是227×227的。這里就涉及到幾種歸一化方法。原論文在第11頁給出了幾種填充和縮放方法。這里方法的選擇會影響3-5mAP。作者這里使用了在得到原始的proposal region之后,再在原始圖片中選取p=16的像素作為背景擴充,即向外擴展BBX的邊界,然后進行wrap到227*227。 這里設計到CNN模型的訓練問題。 論文中采用的辦法是直接使用alexnet之前訓練好的模型參數,去掉最后一層1000個分類,換成你想要的分類數量 1,因為背景也要算是一類。這里使用了遷移學習,在alexnet的基礎上進行finetune。訓練數據使用的是進行wrap之后得到的proposal region,對于某個類別,認為iou大于0.5為正樣本,否則為負樣本,每個batch為128,32個正樣本(包含20個類別),96個負樣本。然后使用SGD進行訓練。這樣我們就完成了對CNN的調優,這樣得到的CNN模型,可以用于提取特征。將提取到的特征在用于SVM訓練。這里論文中提到了一句說訓練SVM時,樣本很大內存無法容納,使用了一種hard negative mining method的方法,這里還沒有搞清楚。 c. 對候選框中提取出的特征,使用SVM二分類器判別是否屬于一個特定類 這里對SVM進行訓練也涉及到正負樣本的問題,這里的對于負樣本的判斷同CNN不同,從0-0.5,間距為0.1,發現0.3的效果最好,即IOU低于0.3則為負樣本。正樣本的定義也不一樣,當BBX把整個物體都包括進去的時候,才認為是正樣本。 論文的附錄B討論了,為什么這里CNN的finetune和SVM的訓練使用不同的正負樣本標準? 因為作者最初訓練SVM的時候,并沒有使用cnn上進行 finetune之后的特征,而是直接使用ImageNet pre-trained CNN,發現論文中現在使用的SVM的訓練樣本標準是最優的;然后后來又考慮使用finetune之后,發現使用同樣的正負樣本標準,結果很差。 還討論了最后為什么要用SVM,而不是直接使用softmax分類回歸?因為這樣mAP下降了。 對于每個類別的物體,將提取的特征使用SVM進行打分。對于所有打分超過閾值的區域進行極大值抑制算法再次進行篩選,排除同一個物體出現多個回歸框的問題。 d. 對于屬于某一特征的候選框,用回歸器進一步調整其位置 給定了一個目標函數,好像用了嶺回歸和權值的L2范數,來確定BBX的映射結果。 遺留問題: 1 SVM具體訓練實現細節 2 回歸框的訓練方法 來源:http://www./content-4-31701.html |
|