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中有涉及到該函數。
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的框。
- 缺陷
- 損失函數多,SVM,bounding-box回歸損失,softmax損失,三個損失函數都需要收斂到一定程度,這就造成了訓練的時候時間過長(VGG 84h)。測試的時候每張圖片的特徵也要經過~2k次卷積網路,所以測試時間也長(47s)。
- 每張圖片產生約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都會形成一個固定大小的向量。
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的大小是 。這樣每個sliding-window都根據(尺寸,比率)條件生成9個anchors。這9個anchors有一個共同的基中心 ,是由3組不同大小,3組不同比率生成的。anchors可以被稱為一種region proposal的機制,對應的區域也從卷積層到最初的圖片上。這樣每個anchors種就會包含位置信息( )以及根據原圖像給定的ground true計算IOU得到的類別概率信息 (note:p只包含含有或者不包含物體)。計算方法:
- 3.然後sliding-window連接一個 的卷積層。(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)從卷積層出來後,直接送入兩個特助的全連接層用來分類和預測回歸。這裡面 是用來平衡損失函數。
- 4RPN損失函數: 是兩個超參數,是為了歸一化。
謝絕轉載!!!
Faster R-CNN參考
【 深度學習計算機視覺Faster R-CNN 】Paper Review Faster RCNN for Real time Object (英文)
RPN資料參考:
https://www.quora.com/How-does-the-region-proposal-network-RPN-in-Faster-R-CNN-work
tex快速入門
LaTex 編輯公式 快速上手 - 阿修羅道 - CSDN博客
推薦閱讀:
※YOLO演算法的原理與實現
※RCNN- 將CNN引入目標檢測的開山之作
※Fast R-CNN學習總結
※吳恩達 DeepLearning.ai 課程提煉筆記(4-3)卷積神經網路 --- 目標檢測
※目標檢測中region proposal的作用?
TAG:目标检测 |