天天看點

基于R-CNN的兩階段目标檢測

基于R-CNN的兩階段目标檢測
基于R-CNN的兩階段目标檢測
基于R-CNN的兩階段目标檢測

RPN網絡中AnchorTargetCreator分析:

将20000多個候選的anchor選出256個anchor進行二分類和所有的anchor進行回歸位置 。為上面的預測值提供相應的真實值。選擇方式如下:

  • 對于每一個ground truth bounding box (

    gt_bbox

    ),選擇和它重疊度(IoU)最高的一個anchor作為正樣本。
  • 對于剩下的anchor,從中選擇和任意一個

    gt_bbox

    重疊度超過0.7的anchor,作為正樣本,正樣本的數目不超過128個。
  • 随機選擇和

    gt_bbox

    重疊度小于0.3的anchor作為負樣本(等于0的不算,明白的告訴你裡什麼也沒有)。負樣本和正樣本的總數為256。

對于每個anchor, gt_label 要麼為1(前景),要麼為0(背景),是以這樣實作二分類。在計算回歸損失的時候,隻計算正樣本(前景)的損失,不計算負樣本的位置損失。

單階段和兩階段:(差別是檢測階段是不是稠密檢測,單階段稠密檢測,雙階段稀疏檢測)

單階段:在Overfeat中,對不同尺度的圖像滑窗,得到區域特征,然後直接對這塊特征進行目标分類和回歸。

兩階段:而Faster RCNN是對特征圖通過RPN先得到的前景建議,然後對這塊特征圖對應的多尺度的anchor的ROI去自适應池化到固定的size,再送去Fast RCNN檢測頭去分類和回歸。

                所謂的區域建議就是認為這塊(3*3*256,是基于這個3*3區域的)某個anchor預定位置未知(agnostic)類别物體(前景 or 背景)的可能比較大(認為是 positive anchor),對這塊特征圖(3*3區域的中心像素)關聯的本Positive anchor,送去回歸得到Region Proposal。

                比如對于w*H= 2400的Feature map來說,Faster RCNN做區域建議時,首先用滑窗法比如1*1*256的filters,就得到2400*256_d的tensor,然後通過後面分兩路級聯Fcn(這個fcn作用就是将),一路得到2k scores(對anchor box二分類)判斷是前景 or 背景,如果是前景,即将此k對應的anchor作為初始預測區域anchor_proposal,然後另一路得到4K coordinates,就是利用這個anchor_proposal去粗回歸的Groundtruth位置,得到RPN最終的Region Proposal。(訓練RPN時,随機采樣256個anchors,其中positive :negative = 1:1)

後面就是fast rcnn再去回歸一次精确位置。

Faster RCNN的anchor了解:

            Anchor點是在feature map上取的沒錯,但是anchor設定的時候有個base_size=16,  而這個16*16就是目前特征圖上一點在原圖上的感受野。

             是以雖然anchor的思路是在特征圖上設定,但是由于最終的anchor尺度都乘上了目前像素的感受野——base_size=16,是以anchor放置點數目是根據feature map大小,但是尺度是按原圖像尺度設定的.