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)進行縮放
$\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$
$\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)$四個參數
$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. 總結
不懂的問題不要一直在一個地方一直想,還是要多去看看其它相關的。一個看不懂就再看一個。有時主觀的下意識的理解會有偏差,然后就很難去接受新的,沒法跳出誤區
如果有哪里寫得不對,還請多多指教,有些細節部分,還不是完全確定 ̄□ ̄||
