YOLOV3模型優化系列(一)Gaussian YOLOV3介紹

前言

現在對目標檢測網絡算法模型YOLOV3優化的文章很多,有很多新的思想提出來了,比如focal loss,denseNet,anchors free以及注意力機制等。我個人比較偏好那些源代碼開放,方法簡單明瞭,可操作性強同時想法合理的papers。以這種標準來看,Gaussian-YOLOV3無疑算得上不錯得優化算法模型,至少能很快看到結果。

簡介

Gaussian YOLOV3算法模型是ICCV 2019得一篇paper提出來的。它對應的項目代碼已經開源(https://github.com/jwchoi384/Gaussian_YOLOv3)。從代碼角度來看,它只是在官方darknet框架代碼的基礎上添加一個新的層:Gaussian-yolo層的支持。所以如果你之前編譯過darknet框架代碼,那麼這個項目代碼下載後就可以直接編譯成功了。 

如果你想對自己數據集進行Guassian yolo3模型的訓練,那麼只需要將cfg文件中的[yolo]改成[Gaussian-yolo],同時將前面的filters數目由(class_num+5)*3改成(class_num+9)*3即可。至於爲什麼變成了+9,下面會詳細解釋。

原理

從原理上看,Gaussian yolov3模型和官方經典YOLOV3的唯一區別就是前者對bbox的輸出是x,y,w和h的均值和方差,一共有8個值,如下圖紅框所示;而後者直接僅僅生成x,y,w和h四個值。

下面是幾個重要的總結:

1) 這樣bbox生成值就構成了輸出層前面的卷積filter數目爲(class_num+1+8)*3。 

2)在官方YOLOV3模型中,bbox的loss值是簡單的mse,即predict的tx ty tw和th分別和GT的tx,ty,tw以及th進行差的平方和。而在Gaussian YOLOV3模型中,它們的delta就變成高斯概率值。其高斯概率密度公式如下所示:

在上式中, x是GT的tx或ty或tw或th,而miu和sigma平方則是對應的Gaussian yolo層的輸出。由此可見,每組miu、sigma平方值和GT對應值應用上面公式就能求得一個概率值。

根據高斯概率分佈曲線,如果predict出來的miu離對GT值很近的話,那麼概率密度值就越大。 當然在真正在計算delta時,用的是(x-miu)/sigma。當GT值離miu值越近的話,delta值越小。

3)實際上在基於Gaussian yolo層的輸出來求真正BBOX的座標值用的是x,y,w和h對應的miu值。 而對應sigma值時來表示這些座標值的不確定性,sigma值越大,表示該組bbox座標值越不靠譜。這樣Gaussian yolo3模型除了object score,class score外,還多一個bbox的不確定性的評判指標。

 

 

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