cs231n筆記(11+)--faster-rcnn中,對RPN的理解

 

2017年05月28日 00:45:55 美利堅節度使 閱讀數:20487更多

個人分類: 深度學習

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/ying86615791/article/details/72788414

 

原文中rcnn部分的截圖

 

 

圖片來自網上,黑色是滑動窗口的區域,就是上圖的紅色區域的sliding window其他顏色 9種窗口 就是anchor機制生成的9種區域

這裏要把sliding window和卷積層的滑動區別開,sliding winsow的stride步長是1!(想到經典的harr+adaboost人臉檢測)

sliding window只是選取所有可能區域,並沒有額外的什麼作用!

 

以下是我對faster-rcnn中的RPN的理解:

經過前面的網絡 生成了一個 多通道的特徵圖,接下來就是通過在這些特徵圖上應用 滑動窗口 加 anchor 機制 進行目標區域判定和分類了,

目標檢測,就是包括 目標框定 和 目標判定。

所以 這裏的 滑動窗口 + anchor的機制 的功能就 類似於 fast rcnn 的selective search 生成proposals 的作用

rpn網絡用來生成proposals

用原文的話講“we slide a small network over the conv feature map output by the last shared conv layer”

1.RPN是一個 卷積層(256維) + relu + 左右兩個層的(clc layer 和 reg layer)的小網絡
  應用在滑動窗口區域上的 , 所有的滑動窗口共享這個 RPN
  這個卷積層 對比 普通的卷積層
  1,它是一個將 n x n x channels的輸入 通過256個 n x n 大小的卷積核 生成 1 * 1 * 256的feature map,即最後是256維的特徵
  2,它的輸入就是滑動窗口nxn對應的特徵圖區域,經過它卷積後 特徵圖變成1 x 1了
  3,由於此時輸出的是 1 * 1 *256,所有cls layer 和reg layer是用 1 x 1的卷積核進行進一步的特徵提取,
這裏1 x 1卷積核卷積時,對各個通道都有不同的參數,因爲輸入又是1 x 1的圖片,所以相當於全連接的功能,相當於把 1 * 1 * 256展平成 256,然後進行全連接
2.關於 anchor機制
  anchor機制 就是 在n x n的滑動窗口上,進一步生成k種不同大小的可能區域
  滑動窗口 加 anchor機制 基本把目標可能出現的區域都涵蓋了

  所以 滑動窗口 加 anchor 就替代了 滑動窗口加金字塔 的功能

 

3.RPN損失計算
  RPN提取出的256d特徵是被這k種區域共享的
,輸給clc layer和reg layer後,只要一次前向,就同時預測k個區域的前景、背景概率(1個區域2個scores,所以是2k個scores),以及bounding box(1個區域4個coordinates,所以是4k個coordinates),具體的說:

clc layer輸出預測區域的2個參數,即預測爲前景的概率pa和pb,損失用softmax loss(cross entropy loss)(本來還以爲是sigmoid,這樣的話只預測pa就可以了?)。需要的監督信息是Y=0,1,表示這個區域是否ground truth

reg layer輸出預測區域的4個參數:x,y,w,h,用smooth L1 loss。需要的監督信息是anchor的區域座標{xa,ya,wa,ha} 和 ground truth的區域座標{x*,y*,w*,h*}

計算損失時,我們需要確定k個區域中的各個區域是不是有效的,是前景還是背景。有效的區域才計算損失。上面的監督信息:Y,{xa,ya,wa,ha}(k個),{x*,y*,w*,h*}(1個)是根據文章中的樣本產生規則得到的:

對於這k個區域
1 分配正標籤給滿足以下規則的區域
1.1 與某個ground truth(GT)的IoU最大的區域
1.2 與任意GT的IoU大於0.7的區域
(使用規則2基本可以找到足夠正樣本,但對於所有區域與GT的IoU都不大於0.7,可以用規則1)
(一個GT可能分配正標籤給多個anchor,具體怎麼分配?)
2 分配負標籤給與所有GT的IoU都小於0.3的區域。

非正非負的區域不算損失,對訓練沒有作用
RPN只對有標籤的區域計算loss。

最後
參與訓練RPN的區域都有參與最後rcnn的訓練,只是只有RPN預測爲前景的區域 在rcnn纔有計算迴歸損失

在使用faster rcnn的時候,rpn預測爲前景的區域纔是proposal,然後按照softmax score從大到小排序選出前2000個區域,在用NMS進一步篩選出300個區域,然後輸給後面的rcnn進行預測(注意此時rcnn的預測類別不包括背景,已經RPN輸出的已經默認是前景了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章