1. 程式人生 > >Faster R-CNN中RPN的分析

Faster R-CNN中RPN的分析

摘要

Faster R-CNN是object detection的里程碑之作。它提出了RPN,即一種用CNN來提取proposal的網路。

為了更好地理解RPN的程式碼實現細節,充分理解它用到的SmoothL1Loss是很必要的。

本文簡述了RPN的作用,討論了RPN的loss以及SmoothL1Loss的語義及其作用,最後分析了RPN的程式碼實現。

RPN的原理

RPN簡介

RPN是一個輸入global feature map,輸出許多可能RoI的網路。 RoI就是所謂的感興趣區域,相當於是物體bbox的candidate。RPN輸出的RoI也被稱為proposal。

RPN的anchor

RPN的基本原理就是利用有一定stride(比如16畫素)的滑動視窗在原圖上列舉proposal中心,對每個中心產生多個不同長寬比(例如0.5,1,2三種),不同大小(比如大中小三種)的bbox。這些產生的bbox被叫做anchor。

如果對每個中心有三種長寬比、三種大小,我們就能得到9個anchor。

RPN的minibatch

下文中你會見到minibatch這種說法。 minibatch就是RPN每次輸出的proposal的數量。 如果RPN對每一張圖片輸出了256個proposal,那麼我們就說minibatch=256。

RPN的loss及其分析

RPN的loss如下。 L({pi},{ti})=1NclsiLcls(pi,pi)+λ1NregipiLreg(ti,ti)L(\{p_i\},\{t_i\}) = {1\over N_{cls}}\sum_i{L_{cls} (p_i,p_i^*)} + \lambda{1\over N_{reg}}\sum_i{p_i^*L_{reg}(t_i,t_i^*)}

  • loss的結構。 這個loss是一種multi-task loss。所謂多工loss。 這裡,它是cls(proposal的分類)和reg(proposal的bbox的位置迴歸、微調)兩個任務各自的loss之加權和。 之所以說是加權和,主要表現在reg項乘了一個λ\lambda,它一個靈活的超引數,需要人為設定。原文提到λ=10\lambda=10

  • loss的符號。 ii 是一個minibatch中所有anchor的索引。 pip_i

    i是對anchor ii的預測結果。pip_i^*是anchor ii的ground truth。pi=1p_i^*=1則是正樣本(物體,也就是前景),0則是負樣本(背景)。 tit_i是一個長度為4的向量,存的是anchor的四個引數tit_i^*tit_i對應的bbox的ground truth,也是存的四個引數。注意:這裡的四個引數不是(x,y,w,h)(x,y,w,h)。是(tx,ty,tw,th)(t_x,t_y,t_w,t_h)。這四個引數在下文介紹。

  • 分類項的分析。 NclsN_{cls}的值是一個minibatch所產生的所有proposal的數量。乘上1Ncls1\over N_{cls}相當是對各個proposal產生的loss取了個平均值。 LclsL_{cls}是一個物體/背景二分類的log loss。通常使用softmax。 本項語義:對所有的anchor計算loss並求和,再依照proposal數目取平均值以標準化。

  • 迴歸項的分析。 NregN_{reg}是anchor的數量。與NclsN_{cls}的作用相同:取平均值以標準化。 Lreg(ti,ti)=R(titi)L_{reg}(t_i,t_i^*)=R(t_i-t_i^*)。其中RR是一個魯棒的loss函式。一般使用SmoothL1Loss,在下文詳述。 乘了一項pip_i^*意味著去掉背景bbox對迴歸loss的貢獻——畢竟背景bbox沒有必要回歸、也沒有ground truth可以計算loss。 本項語義:對所有含有物體的anchor計算魯棒loss並求和,再依照anchor數目取平均值以標準化。

這種multi-task loss的設計手法非常常見,實際上背後的思想和數學都非常簡單。

SmoothL1Loss的分析

迴歸中的引數化

ti=(tx,ty,tw,th)t_i=(t_x,t_y,t_w,t_h)。存的四個引數非常特殊,是為了更好地迴歸而設計的。

tx=(xxa)/wa,ty=(yta)/ha,tw=log(w/wa),th=log(h/ha). t_x = (x-x_a)/w_a,\\ t_y = (y-t_a)/h_a,\\ t_w = log(w/w_a),\\ t_h = log(h/h_a). tit_i對應的bbox的ground truth記作ti=(tx,ty,tw,th)t_i^*=(t_x^*,t_y^*,t_w^*,t_h^*)

類似地, tx=(xxa)/wa,ty=(yta)/ha,tw=log(w/wa),th=log(h/ha). t_x^* = (x^*-x_a)/w_a,\\ t_y^* = (y^*-t_a)/h_a,\\ t_w^* = log(w^*/w_a),\\ t_h^* = log(h^*/h_a). 其中,x,y,w,hx,y,w,h表示bbox的橫縱座標和寬高。帶*的則表示對應的ground truth.

SmoothL1Loss

下式就是SmoothL1Loss。 smoothL1(x)={0.5x2if |x|<1x0.5otherwise \text{smooth}_{L1}(x) = \begin{cases} 0.5x^2& \text{if |x|<1}\\ |x|-0.5& \text{otherwise} \end{cases} 本質上來說,它基於L1 loss。L1 loss,是指用真實值和預測值之差的絕對值——也就是差值(或者差向量)的L1範數作為loss值。 L1 loss有一個問題,它在零點處不可微。 而SmoothL1Loss改善了這個問題:在x<1|x|<1的時候,用具有相同導數的0.5x20.5x^2代替L1範數,這讓loss更加smooth。

現在再看reg loss的式子:Lreg(ti,ti)=smoothL1(titi)L_{reg}(t_i,t_i^*)=\text{smooth}_{L_1}(t_i-t_i^*)

相關推薦

Faster R-CNNRPN分析

摘要 Faster R-CNN是object detection的里程碑之作。它提出了RPN,即一種用CNN來提取proposal的網路。 為了更好地理解RPN的程式碼實現細節,充分理解它用到的SmoothL1Loss是很必要的。 本文簡述了RPN的作用,討論

Faster R-cnnRPN網路詳細解釋

作者RPN網路前面的g層借用的是ZF網路,網路相對較淺,不過並不影響後期介紹。 1、首先,輸入圖片大小是 224*224*3(這個3是三個通道,也就是RGB三種) 2、然後第一層的卷積核維度是 7*7*3*96 (所以大家要認識到卷積核都是4維的,在caffe的矩陣計算中都是這麼實現的); 3、

Faster R-CNNRPN和anchor機制理解

先上圖看一下Faster R-CNN操作流程:  圖片說明:Faster R-CNN=Fast R-CNN+RPN,其中Fast R-CNN結構不變;RPN負責生成proposals,配合最後一層的feature map,使用ROI Pooling,生成fixed length的fe

tensorflow object detection faster r-cnn keep_aspect_ratio_resizer是什麽意思

ng- 最小 圖片 sta fault overflow cti hub .com 如果小夥伴的英語能力強可以直接閱讀這裏:https://stackoverflow.com/questions/45137835/what-the-impact-of-differe

faster r-cnn評價檢測演算法的指標

小魚在用faster r-cnn進行目標檢測時,必不可少要對結果進行評價,業界統一的評價檢測指標是看RP曲線和AUC的值。看了很多網上別人寫的歸納,這裡做一個統一,也是怕自己忘記,又要去翻天覆地的搜尋。 為方便理解,不被繞暈,先舉一批資料例子和一張說明圖:

關於RPNproposal的座標迴歸引數的一點理解及Faster R-CNN的學習資料

在Faster R-CNN的區域生成網路RPN中為了能夠以目標真實框(Ground Truth box)為監督訊號去訓練RPN網路依據anchor預測proposal的位置,作者並不是直接回歸proposal的(x,y,w,h),而是採用了以下形式的引數化座標偏移向量

C++版Faster R-CNN(caffe自定義RPN層實現) 個人見解 問題分析記錄

本文是在實現https://blog.csdn.net/zxj942405301/article/details/72775463這篇部落格裡面的程式碼時遇到的一些問題,然後理解分析記錄在此。前面的程式碼部分按照步驟進行應該不會有錯,有一個提示的地方是在caffe.proto

純C++版500VIP源碼下載的Faster R-CNN(通過caffe自定義RPN層實現)

方便 預測 大致 ole test cto oop 可執行文件 names 這裏500VIP源碼下載 dsluntan.com 介紹的是通過添加自定義層(RPN層)代替python層,實現c++版的Faster R-CNN,因為去掉python了,所以部署時不會因為牽扯到p

Faster R-CNN 目標檢測演算法詳細總結分析(two-stage)(深度學習)(NIPS 2015)

論文名稱:《 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 》 論文下載:https://papers.nips.cc/paper/5638-faster-r-cnn-t

純C++版的Faster R-CNN(通過caffe自定義RPN層實現)

         這裡介紹的是通過新增自定義層(RPN層)代替python層,實現c++版的Faster R-CNN,因為去掉python了,所以部署時不會因為牽扯到python庫等其它的莫名其妙的錯誤,使用起來就跟單純的caffe一樣,更簡單方便。 核心程式碼,借鑑的是這篇

Faster R-CNN程式碼之 anchors 分析

anchors作為產生proposal的rpn中的一個重點內容,在Faster R-CNN中被重點介紹,下面我們來學習一下anchors產生部分程式碼。我主要將其中的部分重點程式碼展示出來。程式碼引用自Shaoqing Ren的Matlab下Faster R-CNN。

TensorFlow Object Detection APIFaster R-CNN /SSD模型引數調整

關於TensorFlow Object Detection API配置,可以參考之前的文章https://becominghuman.ai/tensorflow-object-detection-api-tutorial-training-and-evaluating-custom-object-detec

Domain Adaptive Faster R-CNN:經典域自適應目標檢測演算法,解決現實痛點,程式碼開源 | CVPR2018

> 論文從理論的角度出發,對目標檢測的域自適應問題進行了深入的研究,基於H-divergence的對抗訓練提出了DA Faster R-CNN,從圖片級和例項級兩種角度進行域對齊,並且加入一致性正則化來學習域不變的RPN。從實驗來看,論文的方法十分有效,這是一個很符合實際需求的研究,能解決現實中場景多樣

Faster R-CNN技巧

工作 並行 labels ast 個數 draw 默認 物體 ray 1.盡量控制圖片大小在1024以內,不然顯存會爆炸。 2.盡量使用多GPU並行工作,訓練下降速度快。 3.當需要被檢測的單張圖片裏物體太多時,記得修改Region_proposals的個數 4.測試的時候

Faster R-CNN:詳解目標檢測的實現過程

最大的 中心 width 小數據 等等 eat tar 優先 博文 本文詳細解釋了 Faster R-CNN 的網絡架構和工作流,一步步帶領讀者理解目標檢測的工作原理,作者本人也提供了 Luminoth 實現,供大家參考。 Luminoth 實現:h

論文閱讀筆記(六)Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

采樣 分享 最終 產生 pre 運算 減少 att 我們 作者:Shaoqing Ren, Kaiming He, Ross Girshick, and Jian SunSPPnet、Fast R-CNN等目標檢測算法已經大幅降低了目標檢測網絡的運行時間。可是盡管如此,仍然

Faster RCNN】《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》

NIPS-2015 NIPS,全稱神經資訊處理系統大會(Conference and Workshop on Neural Information Processing Systems),是一個關於機器學習和計算神經科學的國際會議。該會議固定在每年的12月舉行

R-CNN、Fast R-CNNFaster R-CNN

在介紹Faster R-CNN之前,先來介紹一些前驗知識,為Faster R-CNN做鋪墊。 一、基於Region Proposal(候選區域)的深度學習目標檢測演算法 Region Proposal(候選區域),就是預先找出圖中目標可能出現的位置,通

Faster R-CNN 英文論文翻譯筆記

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun reference link:ht

Faster R-CNN改進篇(二): RFCN ● RON

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/linolzhang/article/details/75137050 @改進1:RFCN        論文:R-FCN: Object Detecti