當前位置:吉日网官网 - 傳統文化 - 目標檢測系列(壹):R-CNN

目標檢測系列(壹):R-CNN

目標檢測(object detection)是計算機視覺中非常重要的壹個領域。在卷積神經網絡出現之前,都利用壹些傳統方法手動提取圖像特征進行目標檢測及定位,這些方法不僅耗時而且性能較低。而在卷積神經網絡出現之後,目標檢測領域發生了翻天覆地的變化。最著名的目標檢測系統有RCNN系列、YOLO和SSD,本文將介紹RCNN系列的開篇作RCNN。

RCNN系列的技術演進過程可參見 基於深度學習的目標檢測技術演進:R-CNN、Fast R-CNN、Faster R-CNN 。

目標檢測分為兩步:第壹步是對圖像進行分類,即圖像中的內容是什麽;第二步則是對圖像進行定位,找出圖像中物體的具體位置。簡單來說就是圖像裏面有什麽,位置在哪。

然而,由於不同圖片中物體出現的大小可能不同(多尺度),位置也可能不同,而且擺放角度,姿態等都可以不同,同時壹張圖片中還可以出現多個類別。這使得目標檢測任務異常艱難。

上面任務用專業的說法就是:圖像識別+定位

兩個不同的分支分別完成不同的功能,分類和定位。回歸(regression)分支與分類分支(classification)***享網絡卷積部分的參數值。

還是剛才的分類識別+回歸定位思路。只是現在我們提前先取好不同位置的框,然後將這個框輸入到網絡中而不是像思路壹將原始圖像直接輸入到網絡中。然後計算出這個框的得分,取得分最高的框。

如上,對於同壹個圖像中貓的識別定位。分別取了四個角四個框進行分類和回歸。其得分分別為0.5,0.75,0.6,0.8,因此右下角得分最高,選擇右下角的黑框作為目標位置的預測(這裏即完成了定位任務)。

這裏還有壹個問題——檢測位置時的框要怎麽取,取多大?在上面我們是在257x257的圖像中取了221x221的4個角。以不同大小的窗口從左上角到右下角依次掃描的話,數據量會非常大。而且,如果考慮多尺度問題的話,還需要在將圖像放縮到不同水平的大小來進行計算,這樣又大大增加了計算量。如何取框這個問題可以說是目標檢測的核心問題之壹了,RCNN,fast RCNN以及faster RCNN對於這個問題的解決辦法不斷地進行優化,這個到了後面再講。

總結壹下思路:

對於壹張圖片,用各種大小的框將圖片截取出來,輸入到CNN,然後CNN會輸出這個框的類別以及其位置得分。

對於檢測框的選取,壹般是采用某種方法先找出可能含有物體的框(也就是候選框,比如1000個候選框),這些框是可以互相重疊互相包含的,這樣我們就可以避免暴力枚舉所有框了。

講完了思路,我們下面具體仔細來看看RCNN系列的實現,本篇先介紹RCNN的方法。

R-CNN相比於之前的各種目標檢測算法,不僅在準確率上有了很大的提升,在運行效率上同樣提升很大。R-CNN的過程分為4個階段:

在前面我們已經簡單介紹了selective search方法,通過這個方法我們篩選出了2k左右的候選框。然而搜索出的矩形框大小是不同的。而在AlexNet中由於最後全連接層的存在,對於圖像尺寸有固定的要求,因此在將候選框輸入之前,作者對這些候選框的大小進行了統壹處理——放縮到了統壹大小。文章中作者使用的處理方法有兩種:

(1)各向異性縮放

因為圖片扭曲可能會對後續CNN模型訓練產生影響,於是作者也測試了各向同性縮放的方法。有兩種方法:

此外,作者對於bounding box還嘗試了padding處理,上面的示意圖中第1、3行就是結合了padding=0,第2、4行結果采用padding=16的結果。經過最後的試驗,作者發現采用各向異性縮放、padding=16的精度最高。

卷積神經網絡訓練分為兩步:(1)預訓練;(2)fine-tune。

先在壹個大的數據集上面訓練模型(R-CNN中的卷機模型使用的是AlexNet),然後利用這個訓練好的模型進行fine-tune(或稱為遷移學習),即使用這個預訓練好的模型參數初始化模型參數,然後在目標數據集上面進行訓練。

此外,在訓練時,作者還嘗試采用不同層數的全連接層,發現壹個全連接層比兩個全連接層效果要好,這可能是因為使用兩個全連接層後過擬合導致的。

另壹個比較有意思的地方是:對於CNN模型,卷積層學到的特征其實就是基礎的***享特征提取層,類似於傳統的圖像特征提取算法。而最後的全連接層學到的則是針對特定任務的特征。譬如對於人臉性別識別來說,壹個CNN模型前面的卷積層所學習到的特征就類似於學習人臉***性特征,然後全連接層所學習的特征就是針對性別分類的特征了。

最後,利用訓練好的模型對候選框提取特征。

關於正負樣本的問題:由於選取的bounding box不可能與人工label的完全相同,因此在CNN訓練階段需要設置IOU閾值來為bounding box打標簽。在文章中作者將閾值設置為0.5,即如果候選框bounding box與人工label的區域重疊面積大於0.5,則將其標註為物體類別(正樣本),否則我們就把他當做背景類別(負樣本)。

作者針對每壹個類別都訓練了壹個二分類的SVM。這裏定義正負樣本的方法與上面卷積網絡訓練的定義方法又不相同。作者在文章中嘗試了多種IoU閾值(0.1~0.5)。最後通過訓練發現,IoU閾值為0.3的時候效果最好(選擇為0精度下降了4個百分點,選擇0.5精度下降了5個百分點)。即當IoU小於0.3的時候我們將其視為負樣本,否則為正樣本。

目標檢測問題的衡量標準是重疊面積:許多看似準確的檢測結果,往往因為候選框不夠準確,重疊面積很小。故需要壹個位置精修步驟。

在實現邊界回歸的過程中發現了兩個微妙的問題。第壹是正則化是重要的:我們基於驗證集,設置λ=1000。第二個問題是,選擇使用哪些訓練對(P,G)時必須小心。直觀地說,如果P遠離所有的檢測框真值,那麽將P轉換為檢測框真值G的任務就沒有意義。使用像P這樣的例子會導致壹個無望的學習問題。因此,只有當提案P至少在壹個檢測框真值附近時,我們才執行學習任務。“附近”即,將P分配給具有最大IoU的檢測框真值G(在重疊多於壹個的情況下),並且僅當重疊大於閾值(基於驗證集,我們使用的閾值為0.6)。所有未分配的提案都被丟棄。我們為每個目標類別執行壹次,以便學習壹組特定於類別的檢測框回歸器。

在測試時,我們對每個提案進行評分,並預測其新的檢測框壹次。原則上,我們可以叠代這個過程(即重新評估新預測的檢測框,然後從它預測壹個新的檢測框,等等)。但是,我們發現叠代不會改進結果。

使用selective search的方法在測試圖片上提取2000個region propasals ,將每個region proposals歸壹化到227x227,然後再CNN中正向傳播,將最後壹層得到的特征提取出來。然後對於每壹個類別,使用為這壹類訓練的SVM分類器對提取的特征向量進行打分,得到測試圖片中對於所有region proposals的對於這壹類的分數,再使用貪心的非極大值抑制(NMS)去除相交的多余的框。再對這些框進行canny邊緣檢測,就可以得到bounding-box(then B-BoxRegression)。

參考:

Rich feature hierarchies for accurate object detection and semantic segmentation.

RCNN-將CNN引入目標檢測的開山之作-曉雷的文章

基於深度學習的目標檢測技術演進:R-CNN、Fast R-CNN、Faster R-CNN

R-CNN 論文翻譯

  • 上一篇:電視機頂盒分哪幾種,都要聯網才能用嗎
  • 下一篇:社群有哪些
  • copyright 2024吉日网官网