bbox迴歸預測時所採用公式思路討論(1)

在深度學習框架中,從faster rcnn開始,中間的預測模型,不如ssd,yolo,yolov2等,一直在用如下公式對bbox的位置進行迴歸,
tx=(x-xa)/wa
ty=(y-ya)/ha
tw=log(w/wa)

th=log(h/ha)

這裏,其實很多人看到這裏時,會有個疑問,爲什麼不用如下公式來做迴歸呢?
tx=x-xa
ty=y-ya
tw=w/wa

th=h/ha

這樣不是更加直觀,簡潔麼?

其實,採用上面的公式,原因如下。

這裏 x,y,w,h,分別代表當前的bbox的左上角點的橫軸,左上角點的縱軸,寬和高。

xa,ya,wa,ha 分別代表ground truth的相應參數。

這裏,要從x迴歸得出xa,與兩個bbox中心點的位移和寬度的變化倍數有關,兩者關係如下:

假設兩個矩形中心點位移爲d

xa +0.5*wa = x+0.5*w+d.

這裏w 和wa肯定也是有個函數關係的,定爲wa = tw*w,那麼上式就變爲:

xa+0.5wa = x+0.5*wa/tw+d,

從上式上看,xa 與x的位置關係,由wa和d共同決定,換算如下公式爲:

(x-xa)/wa = 0.5-0.5/tw-d.

這樣就可以把上式右邊的部分等價爲一個未知量tx,來回歸得到。

同理ty。


那麼來看tw=log(w/wa)的道理。

這個我感覺主要因爲計算機在數值計算上精度不夠,才採用指數來運算的,就好像我們採用softmax一樣。

利用了指數函數把無限小的數據映射爲0,把0映射爲1的特性,避免了計算機的精度粒度,在處理過小數據時,不夠用的問題。

同理th=log(h/ha),也一樣。

不知道我說的對不對,大家有沒有補充、糾正的,請不吝賜教啊,

注:在bbox迴歸預測時所採用公式思路討論(2)中,我打算討論下yolov2在這上面的改進工作,說說原理,這樣做的好處,以及實際實驗結果。

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