bounding box的簡單理解


1. 小吐槽

OverFeat是我看的第一篇深度學習目標檢測paper,因為它是第一次用深度學習來做定位、目標檢測問題。可是,很難懂。。。那個bounding box寫得也太簡單了吧。雖然,很努力地想理解還找了很多博客、論文什么。后來,還是看RCNN,總算有點理解。

2. 對bounding box的誤解

我一直以為卷積網絡最后可以得到四個值:分別表示學習到的bounding box坐標,然后回歸的目標是將這四個坐標與ground truth的四個坐標進行比較回歸。其實不是這樣的!正文如下

3. bounding box

(1) 一開始會有預測的邊框值輸入。原來的分類問題只是輸入一張圖,但是現在對於輸入的圖還有它在原圖中的位置信息。比如滑動窗口、RCNN中selective search給出的區域提案等,產生用於分類判斷的區域$P$

(2) 輸入的圖會通過卷積網絡學習提取出特征向量$\phi_5(P)$

(3) 目標檢測的一個目標是希望最后的bounding box(P)和ground truth(G)一致,但是實現方法並不是學習坐標,而是學習變形比例:包括兩個部分,一個是對邊框(x, y)進行移動,一個是對邊框大小(w, h)進行縮放

  • 假設原來的bounding box為P(x, y, w, h),ground truth G(x, y, w, h)
  • 直觀的變形計算為

$\hat{G}_x = P_x + d_x\\ \hat{G}_y = P_y + d_y\\ \hat{G}_w = P_w * d_w\\ G_h'=P_h * d_h$

  • RCNN中給出的變形轉換關系

$\hat{G}_x = P_wd_x(P) + P_x\\ \hat{G}_y = P_hd_y(P) + P_y\\ \hat{G}_w = P_wexp(d_w(P))\\ \hat{G}_h = P_hexp(d_h(P))$

所以目標是要計算得到$d_x(P),d_y(P),d_w(P),d_h(P)$四個參數

  • 把這幾個寫成學習到的特征向量$\phi_5(P)$的線性關系

$d_*(P) = w_*^T\phi_5(P)$

目標變成學習$w_*^T$參數

  • 學習的目標

$w_*=\underset{argmin}{\hat{w}_*}\sum_i^N(t^i_*-\hat{w}^T_*\phi_5(P^i))^2+\lambda||\hat{w}_*||^2$

其中$t_*^i$和上面定義的轉換關系中的$d_*^i$是對應的,也就是

$t_x=(G_x-P_x)/P_w\\ t_y = (G_y-P_y)/P_h\\t_w=log(G_w/P_w)\\t_h=log(G_h/P_h)$

  • 如何學習

回歸問題

4. 總結

不懂的問題不要一直在一個地方一直想,還是要多去看看其它相關的。一個看不懂就再看一個。有時主觀的下意識的理解會有偏差,然后就很難去接受新的,沒法跳出誤區

如果有哪里寫得不對,還請多多指教,有些細節部分,還不是完全確定 ̄□ ̄||


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM