Reading: Faster R-CNN (object detection) implemented by Keras for custom data from Google’s Open Images Dataset V4
notebook
第一遍:
abstract:
how to hypothesize object location?
region proposal algorithms
reduce running time
-
sppnet /fast r-cnn shortcoming:
region proposal computation (實時檢測)
what the text work ?
-introduce Region Proposal Network(PRN)
what is RPN?
-
a fully convolutional network
end-to-end(high quality),Fast R-CNN for detection + RPN
個人了解:
- RPN全卷積網絡可同時預測圖形邊界和目标打分,端到端的訓練可以生成高品質的區域。
- 通過分享RPN和R-CNN的convolutional feature (分享形成的區域),提供給Fast RCNN檢測。
通過RPN,每張圖檔隻需要 提供300個候選區域【對比Fast RCNN的每張圖檔2000張候選區域】
讀相關标題:
- Index Terms—Object Detection, Region Proposal, Convolutional Neural Network.
- RELATED WORK
- Object Proposals
- Deep Networks for Object Detection
- FASTER R-CNN
- Region Proposal Networks
- Translation-Invariant Anchors
- Multi-Scale Anchors as Regression References
- Loss Function
- Training RPNs
- Sharing Features for RPN and Fast R-CNN
- 4-Step Alternating Training
- Implementation Details
- Region Proposal Networks
- EXPERIMENTS
- Experiments on PASCAL VOC
- Ablation Experiments on RPN
- Performance of VGG-16
- Sensitivities to Hyper-parameters.
- Analysis of Recall-to-IoU
- One-Stage Detection vs. Two-Stage Proposal + Detection
- Experiments on MS COCO
- Faster R-CNN in ILSVRC & COCO 2015 competitions
- From MS COCO to PASCAL VOC
- Experiments on PASCAL VOC
- CONCLUSION
第二遍,閱讀文第二遍,閱讀文中的導言、結論以及圖表,快速掃描一下論文剩下的内容。
這一步主要是要把握論文中的關鍵資訊,不光是導言和結論,還包括文章中任何小結論的總結,文中涉及的補充資訊都跳過。中的導言、結論以及圖表,快速掃描一下論文剩下的内容。
這一步主要是要把握論文中的關鍵資訊,不光是導言和結論,還包括文章中任何小結論的總結,文中涉及的補充資訊都跳過。
問題背景:
The latest incarnation, Fast R-CNN [2], achieves near real-time rates using very deep networks [3], when ignoring the time spent on region proposals
Selective Search, SS(2s)CPU | EdgeBoxes(0.2s) CPU |
---|---|
greedily merges superpixels based on engineered low-level features | best tradeoff between proposal quality and speed |
Fast R-CNN | |
CPU has an advantage ,if on the CPU, t re-implementation ignores the down-stream detection network and therefore misses important opportunities for sharing computation |
2.方法
本文提出的理論:
this paper : using a deep convolutional network-introduce novel Region Proposal Networks (RPNs) that share convolutional layers with state-of-the-art object detection networks

Faster RCNN的結構如上圖所示,其可以分成兩個子產品,四個層次:
- 兩個子產品:
- RPN子產品:用于生成“預測區域”,同時對預測區域進行分類及粗略的邊框回歸【利用分類的分數(文中的結構圖的分類結果為兩類,即不關心類别,隻區分前景和背景,目的是将前景區域用于回歸和後續的Fast RCNN子產品中)執行非最大值抑制(文中的IoU門檻值為0.7)後,進行邊框回歸】,選擇其中分數Top300的區域輸出到後面
- Fast RCNN子產品:用于将得到的區域分類和精确的邊框回歸【RoI池化層及之後的分類、回歸層就和Fast一樣了】;
faster rcnn目标:用更快速的方法找候選框
- 加入一個提取邊緣的神經網絡,也就說找到候選框的工作也交給神經網絡來做了
-
具體做法:
• 将RPN放在最後一個卷積層的後面
• RPN直接訓練得到候選區域
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(更快的RCNN:通過區域提議網絡實作實時) RPN簡介:
• 在feature map上滑動視窗
• 建一個神經網絡用于物體分類+框位置的回歸
• 滑動視窗的位置提供了物體的大體位置資訊
• 框的回歸提供了框更精确的位置
PRN INPUT:一張任意size的image
RPN OUTPUT:一系列矩形的object proposals(每個proposal都會有一個object score)
Fast R-CNN(Selective Search + CNN + ROI)
Faster R-CNN(RPN + CNN + ROI)
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(更快的RCNN:通過區域提議網絡實作實時)
how to get region proposals?
convolutional feature map 上滑動的小網絡(nn)= intermediate layer
intermediate layer = 2k: cls layer + 4k:reg layer(both 11)
什麼是anchors?
在每個滑動視窗的位置,同時預測多個region proposals,proposals最大數目設定為k。這樣,reg層輸出4k個值表示proposal的坐标,cls層輸出2k個值評估proposal是否為目标的機率。這k個proposals時關于k個reference boxes參數化的,是以稱為anchors。anchor在每個滑動區域的中心,每個anchor的尺寸和長寬比都不同。(文中預設3個尺寸,3個長寬比,是以每個位置有9個anchor)。對于尺寸為W∗H的feature maps(一般約2400),有W∗H∗k個anchor。
Translation-Invarlation Anchors:
- 如果将圖像中的目标平移了,依然能計算出對應的平移的proposals,并且在任何位置函數都能預測到它。
- 平移不變性還能減小模型的尺寸
Multi-Scale Anchors as Regression References
- 省時(anchor)
loss function:
- 通過比較這些anchor和ground truth間的重疊情況來決定哪些anchor是前景,哪些是背景,也就是給每一個anchor都打上前景或背景的label。有了labels,你就可以對RPN進行訓練使它對任意輸入都具備識别前景、背景的能力
- rpn_cls_score_reshape子產品輸出的結構是[1,9*H,W,2],就是9xHxW個anchor二分類為前景、背景的機率;anchor_target_layer子產品輸出的是每一個anchor标注的label,拿它和二分類機率一比較就能得出分類的loss。
training :提取樣本的政策為從一張圖檔随機選取256個樣本,其中正負樣本個數都為128。(如果正樣本數不足128,則用負樣本補充)
RPN和Fast R-CNN共享特征:
本文使用:
疊代訓練。先訓練RPN,然後用訓練好的RPN産生的proposals來訓練Fast R-CNN。接着由Fast R-CNN微調的結構初始化RPN。以上,交替進行。
4-Step Alternating Training
- 第一步,訓練RPN,用ImageNet預訓練模型初始化參數來微調網絡;
- 第二步,用前面訓練的RPN産生的proposals單獨訓練一個Fast R-CNN網絡;(時的兩個網絡并沒有共享卷積層,Fast RCNN也是預訓練網絡初始化的)
- 第三步,用檢測網絡初始化RPN,固定共享的卷積層,隻微調RPN單獨的部分;
- 第四步,固定共享的卷積層,微調Fast R-CNN獨立的部分。以上,訓練結束。可以疊代,但是改善很小。
訓練細節
輸入預處理,将輸入統一縮放成(1000,600)(1000,600)大小。(多尺度特征提取可能可以提到準确率,但不能很好地折中速度和準确率)。文中使用的模型(ZFnet,VGGnet)的共享卷積之後,感受野(也就是stride的乘積)為1616,也就是說對于(1000,600)(1000,600)的圖像在經過卷積層後,其每個像素點代表之前1616個像素點的資訊,這對于PASCAL VOC的圖像(一般約(500,375)(500,375)大小)對應的就是原圖像的1010個像素點(600/375∗10=16600/375∗10=16)。【步幅乘積這麼大都能提供好的結果,使用更小的步幅可能能得到更好的結果,但不是本文要讨論的内容】
anchors選擇,標明anchors為三個尺度{1282,2562,5122}和三個長寬比{1:1,1:2,2:1}{的卷積,共九個。(這些anchors沒有特意為了某資料集精心設計,按照結果來說,應該是沒有必要調整,其三個邊框的大小基本可以覆寫了整張圖檔)。
anchors篩選,⑴ 在訓練時,作者把所有越過“邊界”的anchors都忽略了(對于1000∗600圖檔,其大概有20000個anchors(1000/16∗600/16∗9=21093)。删去越過邊界的,大概還剩下6000個。)。若不删掉這些過界的anchors,那麼RPN将會推薦較大的,相對比較錯誤的區域,同時訓練也不會收斂。⑵ 在測試時,作者卻留下這些過界的anchors,在整張圖檔上卷積,隻需要将其産生的越過邊界的proposals裁剪成符合圖檔邊界的區域。
proposals篩選,經過RPN提取的proposals有很高的重疊率,對其進行非最大值抑制以删除重疊率較高的框。本文設定NMS的IoU為0.7。經過非最大值抑制後,每張圖檔大概能剩下2000個區域。然後選取Top-N的區域用于檢測。在訓練的時候,選取2000個區域;但在測試時,區域選取的數目又不同。
連結:https://blog.csdn.net/qq_19784349/article/details/81053491
非極大抑制(non-maximum suppression,NMS:
- 一些RPN proposal彼此高度重合。為了減少備援,在它們的cls score的基礎上在proposal區域應用非極大抑制
- NMS的IoU門檻值固定為0.7,使得每張圖檔留下大概2000個proposal region。
- NMS并未降低最終的檢測準确率。
3.實驗
(1)PASCAL VOC上的實驗
A. 一般實驗及RPN消融實驗
SS表示Selective Search ,EB表示EdgeBoxes
a.region proposal
目的:驗證region proposal生成方法的影響。
做法:在訓練和測試中分别使用SS、EB和RPN+ZF(文中方法)這三種方法來生成region proposal進行實驗。
結果:RPN+ZF獲得了最佳結果,由于共享卷積計算,RPN+ZF速度也更快。
b.共享卷積層的影響
c.RPN對Fast R-CNN detector 網絡的影響
cls層的影響
cls scores影響排名最前面的proposals
reg層的影響
高品質的proposal主要歸功于regreesed box bounds
更加強大的網絡對于RPN proposal品質的影響
mAP從56.8%(RPN+ZF)上升到了59.2%(RPN+VGG)
在PASCAL 2007測試集上的測試結果
表3展示了在proposal和detection時都使用VGG-16,并在PASCAL 2007測試集上進行測試的結果(使用不同訓練集或不同訓練集的組合巡警訓練)。“07”表示VOC 2007訓練集,“07+12”表示VOC 2007訓練集與VOC 2012訓練集的合集。shared和unshared分别表示共享特征和不共享特征。對于RPN,訓練Fast R-CNN的proposal數目為2000.
B.VGG-16
在PASCAL VOC 2012上的測試結果:
time:
表6、表7分别對應表3、表4,分别展示了在PASCAL VOC 2007和PASCAL VOC 2012測試集上進行測試時每一類對象的檢測結果。
** C. Sensitivities to Hyper-parameters**
(2)MS COCO
(3)從MS COCO到PASCAL VOC
表12.Faster R-CNN在PASCAL VOC 2007測試集和2012測試集上的檢測mAP(%)。模型為VGG-16。
1、Describe what the authors of the paper aim to accomplish, or perhaps did achieve.這篇論文作者的目标是什麼,或者也許已經實作了什麼。
具體步驟:
首先向CNN網絡【ZF或VGG-16】輸入任意大小圖檔;
經過CNN網絡前向傳播至最後共享的卷積層,一方面得到供RPN網絡輸入的特征圖,另一方面繼續前向傳播至特有卷積層,産生更高維特征圖;
供RPN網絡輸入的特征圖經過RPN網絡得到區域建議框和區域得分,并對區域得分采用非極大值抑制【門檻值為0.7】,輸出其Top-N【文中為300】得分的區域建議給RoI池化層;
第2步得到的高維特征圖和第3步輸出的區域建議框同時輸入RoI池化層,提取對應區域建議框的特征;
第4步得到的區域建議特征通過全連接配接層後,輸出該區域的分類得分以及回歸後的bounding-box。
采用 RPN + FAST RCNN(gpu) + SHARED ,實作速度和準确率的提高;
Faster R-CNN 包括兩個部分:1)RPNs,深度全卷積網絡用于提取候選區域,2) Fast R-CNN 檢測器用于物體檢測。
2、If a new approach/technique/method was introduced in a paper, what are the key elements of the newly proposed approach?如果文中引入了一種新方法/技術,那麼這一新提出的方法/技術的關鍵要素是什麼?
RPN : 讓region proposal 也在gup上生成
為了統一RPN和Fast R-CNN目标檢測網絡,我們提出一種簡單的訓練方案,即保持建議框固定,微調區域建議和微調目标檢測之間交替進行。(4 steps : 3,4步) 疊代
訓練方法:
RPN在CNN卷積層後增加滑動視窗操作以及兩個卷積層完成區域建議功能,第一個卷積層将特征圖每個滑窗位置編碼成一個特征向量,第二個卷積層對每個滑窗位置輸出k個區域得分和k個回歸後的區域建議,并對得分區域進行非極大值抑制後輸出得分Top-N【文中為300】區域,告訴檢測網絡應該注意哪些區域,本質上實作了Selective Search、EdgeBoxes等方法的功能。
3、What other references do you want to follow?你還想關注哪些參考資料/文獻?
全文翻譯 https://blog.csdn.net/u011534057/article/details/51259812
其他部落客學習筆記:https://blog.csdn.net/Wonder233/article/details/53837680
https://blog.csdn.net/mw_mustwin/article/details/53039338
https://blog.csdn.net/u011326478/article/details/52872614
https://blog.csdn.net/qq_19784349/article/details/81053491