1. 程式人生 > >目標檢測經典模型(R-CNN、Fast R-CNN、Faster R-CNN)

目標檢測經典模型(R-CNN、Fast R-CNN、Faster R-CNN)

目標檢測是深度學習的一個重要應用,就是在圖片中要將裡面的物體識別出來,並標出物體的位置,一般需要經過兩個步驟:

1、分類,識別物體是什麼

2、定位,找出物體在哪裡

除了對單個物體進行檢測,還要能支援對多個物體進行檢測,如下圖所示:

這個問題並不是那麼容易解決,由於物體的尺寸變化範圍很大、擺放角度多變、姿態不定,而且物體有很多種類別,可以在圖片中出現多種物體、出現在任意位置。因此,目標檢測是一個比較複雜的問題。

最直接的方法便是構建一個深度神經網路,將影象和標註位置作為樣本輸入,然後經過CNN網路,再通過一個分類頭(Classification head)的全連線層識別是什麼物體,通過一個迴歸頭(Regression head)的全連線層迴歸計算位置,如下圖所示:

但“迴歸”不好做,計算量太大、收斂時間太長,應該想辦法轉為“分類”,這時容易想到套框的思路,即取不同大小的“框”,讓框出現在不同的位置,計算出這個框的得分,然後取得分最高的那個框作為預測結果,如下圖所示:

根據上面比較出來的得分高低,選擇了右下角的黑框作為目標位置的預測。

但問題是:框要取多大才合適?太小,物體識別不完整;太大,識別結果多了很多其它資訊。那怎麼辦?那就各種大小的框都取來計算吧。

如下圖所示(要識別一隻熊),用各種大小的框在圖片中進行反覆擷取,輸入到CNN中識別計算得分,最終確定出目標類別和位置。

這種方法效率很低,實在太耗時了。那有沒有高效的目標檢測方法呢?

一、R-CNN 橫空出世

R-CNN(Region CNN,區域卷積神經網路)可以說是利用深度學習進行目標檢測的開山之作,作者Ross Girshick多次在PASCAL VOC的目標檢測競賽中折桂,2010年更是帶領團隊獲得了終身成就獎,如今就職於Facebook的人工智慧實驗室(FAIR)。