目標檢測2: faster rcnn對比fast rcnn,訓練流程分析,邊框損失函數loss分析

注:個人理解,錯誤難免,推薦看論文

1.結構:

faster-rcnn(https://arxiv.org/abs/1506.01497)和fast-rcnn(https://arxiv.org/abs/1504.08083)的結構類似,下面二者結合着分析。下圖左邊爲fast rcnn右邊爲faster rcnn。

fast-rcnn的大致流程:

fast rcnn把一張圖像用select search 算法得出2000個候選區域(region proposals)及其位置,然後把這張完整圖像直接送入基礎網絡vgg16(https://arxiv.org/abs/1409.1556)得到特徵圖feature map(r-cnn是分別resize後再送入網絡),由於網絡結構是固定的,這些候選區域在特徵圖中的位置也能算出來,這些位置在論文中被稱爲ROI。ROI本質上是每個候選區域在特徵圖上對應的框,使用r, c, h, w表示,這4個參數分別爲左上角的座標及高和寬。有了ROI後,每個ROI的尺寸也不一樣,不便於後續計算,因此之後對ROI所在的特徵進行了max pooling,使ROI的大小變爲固定的HxW(如7x7),這個過程稱爲ROI pooling layer(fast rcnn中把vgg16中的最後一個max pooling用ROI pooling layer取代了)。經過ROI pooling layer後尺寸都一致了,之後跟2個全連接層(這是vgg16中的2個fc層),這裏的輸出被稱爲ROI feature vector。之後送到softmax分類器(輸出個數爲num_classes+1(背景))和regression邊框迴歸中。

faster-rcnn對fast-rcnn的改進:

faster對fast進行了改進,由於fast rcnn在一張原圖上用select search找出2000個候選區域比較耗時,用cpu約耗時2s,爲了解決這個問題作者自己設計了一個RPN網絡(region proposal network, 10ms每張圖像)代替select search。如果把RPN看作一個黑盒子,faster-rnn與fast-rcnn的結構相差不大,只是RPN代替了select search算法,而且select search的位置是在原圖中進行的,RPN是在特徵圖上進行的。

2. 迴歸bounding box:

faster-rcnn的box迴歸是在rcnn(https://arxiv.org/abs/1311.2524)的基礎上改動的,首先要講一下rcnn中的迴歸框,下圖爲rcnn的box迴歸。

P爲通過RPN(或者通過select search)得到的候選區域邊框,是已知的。P的位置肯定與真實的groundtruth邊框G有偏差,所以指定了一種學習方式dx(P),dy(P),dw(P),dh(P)進行調節,讓預測的框G^更接近真實的框G。

如下圖所示,dx(P),dy(P),dw(P),dh(P)中有待學習的參數,咱們暫且把它們分別看作一個整體。我們把包含待訓練參數的這些項都移動到等式左邊,可以得到下圖右上的公式。其實dx(P),dy(P),dw(P),dh(P)內部是vgg16的特徵圖輸出(用φ(P)表示)和一個矩陣w的乘積,這樣它們可以用wxφ(P), wyφ(P),wwφ(P),whφ(P)表示了,如下圖右側中間的公式。公式(6)-公式(9)的tx, ty, tw, th是可以根據groundtruth和候選區域的位置直接算出來的。我們的目標是訓練網絡讓網絡的wxφ(P), wyφ(P),wwφ(P),whφ(P)與tx, ty, tw, th儘可能接近,所以現在我們就能寫一個簡單的loss了,如下圖右下角的公式,再加上一項正則化項就和公式5一樣了。這樣rcnn的boundingbox迴歸loss就寫出來了。

faster rcnn迴歸box的smooth L1 loss:

faster rcnn中boundingbox的訓練使用smooth L1損失,其他和rcnn一樣。

3. 整體的損失loss:

loss = loss(分類) + loss(迴歸)

分類loss可以使用交叉熵,迴歸loss即上面的2。有了總loss就能梯度下降,訓練模型了。

下一篇:yolov3:https://blog.csdn.net/u010397980/article/details/85058630

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