標籤:

R-CNN &Fast RCNN & Faster RCNN

目標檢測的目的是輸入一副圖片輸出除背景以外的各個目標

R-CNN框架

  • 名字

R-CNN稱為region proposals & CNN

region proposals:是一種candidate提取方式,從一副圖像中基於某種,或某幾種特徵提取出疑似目標來。region proposals的一種方法是selective search,除此之外,還有Edge Boxes,R-CNN中採用的是selective search。

  • 結構

fine tune ,獲得已經在imagenet上訓練好的CNN(Alexnet, VGG, Resnet)模型,針對模型進行fine tune,fine tune之後就得到實用於具體目標集的CNN網路。note: 調優過程中應注意到有個 softmax loss函數,後續的fast rcnn中有涉及到該函數。

圖1:為目標集pascal voc fine-tune

region proposals特徵傳遞,region proposals 的特徵結果(不同大小的目標圖片通過裁剪為相同大小後)~2K通過預訓練的CNN網路。CNN網路將分類結果一方面傳遞給SVM分類器,另一方面傳遞給bounding-box回歸。note:裁剪成相同的大小時出現一個數字224,我認為224是2012年Alexnet,VGG的輸入圖片的大小。

分類特徵&回歸bounding-box。

SVM:原始全連接層的輸出,不在經過softmax分類器,而是送入SVM中進行單獨的訓練。只考慮SVM,那麼輸入就是N維的特徵向量,和label,輸出應該是向量的所屬分類。在這裡,label是比較特殊的。label中正負樣本的定義是Iou<0.3為負樣本,正樣本為ground true。忽略>0.3又不是ground true的值。為什麼要這樣做呢?

bounding-box回歸:對於bounding-box輸入為SVM分類後,選出的類別的bounding-box以及ground true bounding-box。bounding-box回歸是一種平移縮放的過程。可以理解為儘可能平移到ground true的中心點(x,y),然後以一定比例放大縮小(w,h)來適應ground true的框。

  • 缺陷
  1. 損失函數多,SVM,bounding-box回歸損失,softmax損失,三個損失函數都需要收斂到一定程度,這就造成了訓練的時候時間過長(VGG 84h)。測試的時候每張圖片的特徵也要經過~2k次卷積網路,所以測試時間也長(47s)。
  2. 每張圖片產生約2K的region proposals結果。都裁剪成224*224的大小,也佔用了大量的內存空間。

Fast-RCNN框架

  • 名字

名字中Fast是重點,上述缺陷中講述了訓練時間長,測試時間也長,那麼Fast RCNN就是為縮短RCNN的時間而設置的。

  • 改進

訓練,將整張圖丟進去CNN網路內,以AlexNet為例,在conv_5層(最後一層卷積層)上添加一個Rol pooling層,Rol pooling的輸入是~2K個特徵圖像在conv_5上的對應區域,Rol pooling的輸出是經過pooling調整的向量。之後經過全連接層,全連接層的輸出一方面給到為目標集定製的softmax層,去實現分類功能;另一方面給到bounding-box的損失函數去回歸預測bounding-box的位置。值得注意的是,在本訓練過程中,可以把兩個損失函數直接相加作為整個網路的損失函數。

why fast?

ans:a.對於某張輸入圖片來說,它只需經過了一次卷積網路去訓練FC層。而之前是大約~2K次來訓練。b.損失函數減少為一個Multi-task loss損失函數,且該損失函數由於定製的Rol pooling層,在訓練過程中,更容易收斂。

測試,測試時,也是將整張圖片丟到CNN網路中,region proposals得到的特徵,直接對應到AlexNet的conv_5層,再經過Rol pooling層,全連接層。經過全連接層時,與訓練不同的是,由於不在需要Multi-task loss損失函數,直接將原來的分類和回歸預測結果輸出,就得到目標檢測的結果,目標分類和目標位置。

why fast?

ans:a.對於某張輸入圖片來說,它只需通過一次卷積網路。而之前大約要通過~2K次。

神奇的Rol pooling

Rol pooling層是fast rcnn中參照SPP設計的。rol pooling屬於一種特殊的pooling層,位於conv_5層(最後一層卷積特徵圖層)後,可以將大小不同的rol生成長度統一的向量。

首先,利用一開始生成的region proposals對應到特徵層去,也就是按照原始圖片的縮放比例,找出特徵圖層上的對應位置。然後,將找出的區域劃分成N*M的大小,下圖所示的動畫中為2*2。最後在劃分出來的子區域內挑選最大值(pooling)。這樣每個region proposal都會形成一個固定大小的向量。

Rol pooling動態解釋


beautiful result

Faster R-CNN

名字

之所以被稱為faster 是因為作者認為fast rcnn 還不夠 state-of-the-art .fast rcnn檢測圖片時時間主要用在了region proposals(selective search)上面。而faster rcnn最初的想法就是用一種新的網路來代替selective search。所以本文提出了 一種新的region proposal network--RPN

提速效果

架構

整體結構

faster rcnn 是RPN網路和fast rcnn的一種結合。結合的目的是為了能使這兩個網路都能夠共享卷積。如上圖所示,一副圖像(不要求resize成固定的大小)輸入到卷積網路中去,到卷積層的最後一層,然後就通過一個特定的卷積網路,直接得到了分類輸出和bounding-box回歸輸出。

Region Proposal Network(RPN)

  • RPN:RPN屬於一種卷積網路,能同時預測物體的bounding-box和每個位置上分類的分數。(note原文An RPN is a fully convolutional network that simultaneously predicts object bounds and objectness scores at each position. The RPN is trained end-to-end to generate high-quality region proposals, which are used by Fast R-CNN for detection.)
  • RPN的輸入輸出:輸入是任意尺寸的圖像,輸出是一系列的矩形框和物體分類的分數(note:A Region Proposal Network (RPN) takes an image(of any size) as input and outputs a set of rectangular object proposals,each with an objectness score)

RPN結構

  • 1.輸入一副圖像到一個卷積網路中去,在卷積網路的最後一層上,得到一組Feature Maps

第一步

  • 2一個sliding-window 在feature map 上run spatially.其中 sliding-windows的大小是 3	imes3 。這樣每個sliding-window都根據(尺寸,比率)條件生成9個anchors。這9個anchors有一個共同的基中心(x_{a},y_{a}) ,是由3組不同大小,3組不同比率生成的。anchors可以被稱為一種region proposal的機制,對應的區域也從卷積層到最初的圖片上。這樣每個anchors種就會包含位置信息( (x_{a},y_{a}),w_{a}, h_{a} )以及根據原圖像給定的ground true計算IOU得到的類別概率信息 p^{*} (note:p只包含含有或者不包含物體)。計算方法:  p^*=egin{cases} -1 quad if space Iou < 0.3\0\1 quad if space Iou > 0.7 end{cases}

9種anchors

  • 3.然後sliding-window連接一個 3	imes3 的卷積層。(note:This small network takes as input an n × n spatial window of the input convolutional feature map. Each sliding window is mapped to a lower-dimensional feature)從卷積層出來後,直接送入兩個特助的全連接層用來分類和預測回歸。這裡面 lambda 是用來平衡損失函數。

分類回歸損失

  • 4RPN損失函數: N_{cls},N_{reg} 是兩個超參數,是為了歸一化。

謝絕轉載!!!

Faster R-CNN參考

【 深度學習計算機視覺Faster R-CNN 】Paper Review Faster RCNN for Real time Object (英文)

RPN資料參考:

quora.com/How-does-the-

tex快速入門

LaTex 編輯公式 快速上手 - 阿修羅道 - CSDN博客

推薦閱讀:

YOLO演算法的原理與實現
RCNN- 將CNN引入目標檢測的開山之作
Fast R-CNN學習總結
吳恩達 DeepLearning.ai 課程提煉筆記(4-3)卷積神經網路 --- 目標檢測
目標檢測中region proposal的作用?

TAG:目标检测 |