R-CNN、SPPNet、Fast Rcnn、Faster R-CNN 原理以及區別

R-CNN原理:
  R-CNN遵循傳統目標檢測的思路,同樣採取提取框,對每個框提取特徵,圖像分類,非極大值抑制等四個步驟,只不過在提取特徵這一步將傳統的特徵換成了深度卷積網絡提取的特徵。
 對於原始圖像, 首先使用Selective Search 搜尋可能存在物體的區域。Selective Search 可以從圖像中啓發式地搜索出可能包含物體的區域。相比窮舉而言, Selective Search 可以減少一部分計算量。下一步,將取出的可能含高物體的區域送入CNN 中提取特徵。CNN 通常是接受一個固定大小的圖像,而取出的區域大小卻各有不同。對此, R-CNN的做法是將區域縮放到統一大小, 再使用CNN提取特徵。提取出特徵後使用SVM 進行分類,最後通過非極大值抑制抑制輸出結果。
R-CNN的過程可以分爲四步:
 在數據集上訓練CNN 。R-CNN 論文中使用的CNN 網絡是AlexNet 1,數據集爲ImageNet 。
  在目標檢測的數據集上,對訓練好的CNN做微調 。
 用Selective Search 搜索候選區域,統一使用微調後的CNN對這些區域提取特徵,並將提取到的特徵存儲起來。
 使用存儲起來的特徵,訓練SVM 分類器。

SPPNet原理
 SPPNet原理就是利用ROI池化層將CNN的輸入從固定尺寸改爲任意尺寸,通過最大池化層,可以將任意寬度的、高度的卷積特徵轉換成固定長度的向量,原始圖像中的候選框,實際也可以對應到卷積特徵中相同位置的框。利用ROI池化層可以將不同形狀的特徵對應到相同長度的向量特徵。與R-CNN相比比,SPPNet具有更快的速度。

Fast RCNN原理
 Fast RCNN與SPPNet相比,不再使用SVM分類,而是利用神經網絡分類,直接使用全連接層,全連接層有兩個輸出,一個負責分類,另一個負責框迴歸。同一個網絡完成提取特徵、判斷類別、框迴歸三項工作。

Faster RCNN原理
 與Fast RCNN相比,Faster RCNN用RPN網絡代替了Selective search,RPN網絡結構爲:
在這裏插入圖片描述
 RPN還是需要先使用一個CNN網絡對原始圖片進行提取特徵,對應一個5139256的卷積特徵,稱它一共有5139個位置,讓新的卷積特徵的每一個「位置」都負責原圖中對應位置9種尺寸的框的檢測,檢測的目標是判斷框中是否存在一個物體,因此共有51399個框,在論文中,將這些框分別稱爲anchor。
anchor的9中尺寸如小圖所示,它們的面積分別是 12 8 2 128^2 25 6 2 256^2 51 2 2 512^2 。每種面積又分3種長寬比,分別爲2:1、1:2、1:1。
在這裏插入圖片描述
 對於這51
39ge1weizhi1he151399個anchor,下圖展示了接下來每個位置的計算步驟,設k爲每個位置對應的anchor的個數,此時,K=9。首先使用一個33的滑動窗口,將每個位置轉換成一個統一的256維特徵,這個特徵對應了兩部分的輸出,一部分表示該位置的anchor誒物體的概率,這部分總輸出爲長度爲2k,(一個anchor對應兩個輸出,是物體的概率和不是物體的概率)。另一部分爲框迴歸,框迴歸有4個參數,(x,y,w,h)。所以框迴歸部分的總輸出長度爲4k。
在這裏插入圖片描述 對比示意圖

在這裏插入圖片描述