目標檢測二階段網絡(faster-rcnn)的端到端訓練方式

簡明扼要說一下二階段網絡訓練的pipeline,一些基本概念還需要自行去查詢一下,這裏就不做介紹了

RPN網絡的訓練

  1. 需要的輸入有之前卷積層得到的featuremap,anchor的規格(size,scale等能表達anchor大小的參數),label
  2. 由featuremap上的每個位置映射回到原圖上,再結合給出的anchor規格,得到原圖每個區域(特徵圖上每個點對應原圖一個區域)的anchor集合
  3. 計算每個anchor與每個label框的iou,計算完後每個anchor對應一個與其iou最大的label,假設有倆個iou閾值thresh_high和thresh_low,將計算的iou大於thresh_high的anchor設置正類標籤,iou小於thresh_low的anchor設置負類標籤(一般負類較多,需要從中採樣一些),這些anchor拿出來將參與後續loss計算,其餘anchor將忽略
  4. 計算之前得到的正類anchor與其對應最大iou的label框的偏移量(dx,dy,dh,dw)(具體如何計算偏移請參考faster-rcnn的bbox迴歸)
  5. 根據anchor的正負類可以計算二分類Loss,根據前邊得到的偏移量再結合featuremap可以計算l1_smooth_loss,即迴歸Loss

ROI Pooling後網絡的訓練

  1. 將anchor按照rpn網絡最後得到的score進行排序(由於是二分類,使用sigmoid每個框都有一個得分),選取前top k個作爲proposals,並對這k個proposals按照rpn最後的輸出使用偏移量進行位置矯正
  2. 這k個框按照RPN訓練中第3步的方式通過iou與label對應上,然後經過roi pooling後再經過幾次卷積最後輸出類別和迴歸框的偏移量,最後再計算一次loss

Final

對前倆大步驟計算得到的loss進行反向傳播,更新權重

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