天天看點

目标檢測--R-CNN

論文文獻:Rich feature hierarchies for accurate object detection and semantic segmentation

算法流程圖

目标檢測--R-CNN

1、産生目标區域候選

滑窗:

為了檢測目标物體的可能位置,我們采用不同尺度的矩形方塊,在圖像上水準、垂直移動,以便能夠檢測到可能目标位置。而這個矩形方塊就是滑窗。

這種方法的缺陷:我們不知道目标物體的大小,而使用這種方法進行窮舉,計算量太大。

selective search:

R-CNN目标檢測所采用的方法。

selective search的政策,既然是不知道尺度是怎樣的,那我們就盡可能周遊所有的尺度好了,但是不同于暴力窮舉,我們可以先得到小尺度的區域,然後一次次合并得到大的尺寸就好了,這樣也符合人類的視覺認知。既然特征很多,那就把我們知道的特征都用上,但是同時也要照顧下計算複雜度,不然和窮舉法也沒啥差別了。最後還要做的是能夠對每個區域進行排序,這樣你想要多少個候選我就産生多少個,不然總是産生那麼多你也用不完不是嗎?

2、CNN目标特征提取

選擇2K個置信度最高的區域候選之後,首先是用AlexNet模型,進行無監督的預訓練初始化CNN的參數。之後進行遷移學習,RCNN使用ImageNet的有标簽資料進行有監督的預訓練,然後再在本資料集上微調最後一層全連接配接層。訓練CNN的樣本量還是不能少的,是以RCNN将正樣本定義的很寬松,為了盡可能擷取最多的正樣本,RCNN将IOU>0.5(IoU 指重疊程度,計算公式為:A∩B/A∪B)的樣本都稱為正樣本。并且CNN對于輸入的圖檔大小都要求尺寸一緻,是以對于每一個候選區域縮放到227*227。

CNN特征層選取

現在CNN已經能夠提取到目标的特征了,但是CNN的層數很多,選擇哪一層作為特征提取層呢?RCNN進行了寬泛的實驗,最終選擇的fc層。

3、目标種類分類器

通過R-CNN提取了特征之後,使用SVM進行分類,由于SVM要進行精确的分類,是以将IOU>0.3的樣本作為負樣本,這樣也是SVM困難樣本挖掘的方法。

4、貪婪非極大值抑制

由于最後得到的目标區域肯定不會是一個,是以RCNN使用貪婪非極大值抑制的方法,假設ABCDEF五個區域候選,首先根據機率從大到小排列。假設為FABCDE。然後從最大的F開始,計算F與ABCDE是否IoU是否超過某個門檻值,如果ABC超過則将ABC舍棄。然後再從D開始,直到周遊結束。而這個門檻值是篩選得到的,通過這種處理之後一般隻會剩下幾個區域候選了。

5、BoundingBox回歸

為了能夠提高準确度,讓方框準确的框住所要檢測的目标,RCNN在貪婪非極大值抑制後進行BoundingBox回歸,進一步微調BoundingBox的位置。

R-CNN缺點

RCNN雖然效果很好,但是存在一些問題,比如時間代價太高了,網絡訓練是分階段的,太麻煩了等。

繼續閱讀