Guassian YOLOv3 | ICCV2019,更快更強的YOLOv3

在目標檢測的落地項目中,實時性和精確性的trade-off至關重要,而YOLOv3是目前爲止在這方面做得最好的算法。本文通過高斯分佈的特性,改進YOLOv3使得網絡能夠輸出每個檢測框的不確定性,從而提升了網絡的精度。

1.YOLOv3簡介

如下圖a所示,爲YOLOv3的網絡架構。
YOLOv3使用了skip shotcut的操作方式網絡過深而引起的梯度消散。
YOLOv3使用了up-sample操作,並將大特徵圖和小特徵圖upsample後的特徵圖進行concat,使網絡能夠擁有既包含豐富的高層抽象特徵和精確的位置信息特徵的融合特徵層。
YOLOv3使用了特徵金字塔結構,使得網絡能夠在三個不同的尺度特徵下做目標檢測,能夠適應與多種不同大小的目標檢測任務。

如下圖b所示,爲利用YOLOv3進行目標檢測時的網絡輸出。
RGB圖像作爲YOLOv3網絡的輸入,檢測結果會在三個不同的尺度分別輸出,包含了目標的座標位置,目標是正樣本還是負樣本,目標屬於那個類別的置信度,對於每個尺度的分支而言,會在每個grid中會預測出三個結果(因爲每個尺度下會有三個anchor)。最終將三個尺度的結果合併,進行非極大值抑制(NMS)後,輸出最終的檢測結果。

正如YOLOv3的輸出結果所述,目標類別是有概率值的,但目標框只有位置而沒有概率值,也就是從結果中無法預知當前目標框的可靠性。基於此本文利用Guassian模型來對網絡輸出進行建模,在基本不改變YOLOv3結構和計算量的情況下,能夠輸出每個預測框的可靠性,並且在算法總體性能上提升了3個點的MAP。

2.Guassian YOLOv3介紹

如圖所示,Guassian YOLOv3通過增加網絡的輸出,和改進網絡的損失函數,實現了對預測框可靠性的輸出。

  • 新的預測輸出
    下圖爲源代碼對比,從中我們可以看出,與原始的YOLOv3在座標預測時輸出4個維度不同,Guassian YOLOv3在bounding box的座標預測輸出中包含了8個維度。

    這八個維度相當於是預測框中心座標和長寬,以及對應預測框的不確定性。作者將這些指建模爲四個高斯分佈,目標框的位置作爲高斯分佈的均值,對應的不確定性作爲方差。如下圖的比對代碼所示,Gaussian YOLOv3通過預測每個座標位置的不確定性,從而提升最終預測prob值的精確性。

  • 新的損失函數

由於Gaussian YOLOv3的輸出進行了調整,與之對應的損失函數的計算也會做相應的調整。與原始的YOLOv3相比,僅僅調整了預測框座標位置的迴歸策略。如下代碼對比所示,原始的YOLOv3進行box迴歸時,由於網絡預測輸出就是座標本身,因此計算梯度時就利用了均方誤差的方式。而由於Gaussian YOLOv3輸出的是均值和方差,因此在計算梯度時就結合了高斯分佈的策略。

Gaussian YOLOv3的損失函數如下:

3. Gaussian YOLOv3結果比對

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