Gaussian YOLOv3 : 對bbox預測值進行高斯建模輸出不確定性,效果拔群 | ICCV 2019

在自動駕駛中,檢測模型的速度和準確率都很重要,出于這個原因,論文提出Gaussian YOLOv3。該算法在保持實時性的情況下,通過高斯建模、損失函數(shù)重建來學習bbox預測值的不確定性,從而提高準確率和TP,能夠顯著地降低FP,在KITTI和BDD數(shù)據(jù)集上分別提升了3.09mAP和3.5mAP。整體的思路類似于添加一個不確定性分支,沒有帶來過多的計算,設(shè)計十分巧妙,推薦大家閱讀學習
?
來源:曉飛的算法工程筆記 公眾號

論文: Gaussian YOLOv3: An Accurate and Fast Object Detector Using Localization
Uncertainty for Autonomous Driving

Introduction


? 在自動駕駛中實時性和準確率都十分重要,論文為了增加檢測算法的準確率,以及減少誤判(FP)的出現(xiàn),論文提出了Gaussian YOLOv3。該算法基于實時性框架YOLOv3,對bbox的預測值進行高斯建模輸出不確定性(localization uncertainty),并且修改了bbox的loss函數(shù),能夠有效地提高準確率且保持實時性
? 這里可能會有個比較大的疑問,YOLOv3的objectness是否就可以表示bbox的不確定性。個人認為論文的觀點是objectness能表示bbox的不確定性,但又跟論文提到的預測值不確定性不一樣。因為objectness為Pr(object) * IoU,主要跟IoU相關(guān),是整體的不確定性,而相同的IoU有不同的相交方法,不能準確地代表單個bbox預測值的不確定性,而文中直接使用高斯模型來表示單個預測值的不確定性,是另外一種更細的維度,可以認為是一種補充

Gaussian YOLOv3


Gaussian modeling

? 使用單個高斯模型來分別預測t_xt_y、t_wt_h的不確定性,高斯模型計算如公式1,\mu(x)為均值函數(shù),{\sum}(x)為標準差函數(shù),即在當前分布下y的值,越高越好

? 為了構(gòu)建bbox(t_x,t_y,t_w,t_h)每個值的高斯模型,將每個bbox的預測值改為均值\mu和標準差\sum,如圖2所示,為\hat{\mu}_x,\hat{\sum}_{t_x},\hat{\mu}_y,\hat{\sum}_{t_y},\hat{\mu}_w,\hat{\sum}_{t_w},\hat{\mu}_h,\hat{\sum}_{t_h},使用這8個預測值構(gòu)建4個分布,如圖2。由于在構(gòu)建的分布中,均值\hat{\mu}處的值是最大的,所以取均值\hat{\mu}為bbox 4個維度(x,y,w,h)的預測值,用法跟YOLOv3的值的意義一樣。標準差則代表不確定性,因為標準差越大,概率分布中均值處的值會越低

? 論文沒有直接使用上面提到的\hat{\mu}_x,\hat{\sum}_{t_x},\hat{\mu}_y,\hat{\sum}_{t_y},\hat{\mu}_w,\hat{\sum}_{t_w},\hat{\mu}_h,\hat{\sum}_{t_h},而是根據(jù)YOLOv3的bbox計算方法,對輸出各預測值前進行sigmoid函數(shù)預處理,使其值在[0,1]。處理后,\mu_{t_x}\mu_{t_y}代表bbox的中心點在grid中的偏移坐標,由于YOLO中t_wt_h要過指數(shù)函數(shù),值可以有正負,所以不進行sigmoid處理。標準差代表不確定性,直接進行sigmoid函數(shù)處理到[0,1]

Reconstruction of loss function

? 由于輸出是作為高斯模型的參數(shù),bbox的損失函數(shù)將修改為負對數(shù)似然(negative log likelihood, NLL)損失,objectness和class的損失函數(shù)不變。公式5為t_x的NLL損失,W、HK分別為特征圖寬高的grid數(shù)以及anchor數(shù),\mu_{t_x}(x_{ijk}){\sum}_{t_x}(x_{ijk})t_x的值和不確定性,由模型在(i,j)grid的k-th anchor輸出。x_{ijk}^Gt_x的GT,公式5計算GT在當前分布下的值,均值越接近GT且標準差越小,則loss越小。為了數(shù)值計算不出差,加上\varepsilon=10^{-9}

? GT的計算如公式6和公式7,跟預測值的處理一樣,x^G、y^Gw^Gh^G都為GT box的縮放比例,IWIH為輸入圖片的寬高,A_k^wA_k^hk-th anchor的預設(shè)寬高。在YOLOv3中,中心點在grid單元中計算,而bbox的尺寸則基于預設(shè)的anchor box,

? 此外,損失函數(shù)還要加上權(quán)重\gamma_{ijk},計算如公式8,GT越大,權(quán)重越小。其中,\omega_{scale}基于GT box的寬高在圖中的比例由公式9計算,\delta_{ijk}^{obj}為指示函數(shù),僅當GT對應的grid中IOU最大的anchor才為1
? 另外,論文提到,YOLOv3的bbox使用交叉熵損失,不能夠處理噪聲數(shù)據(jù),噪聲會導致很大的loss干擾訓練。而論文重新設(shè)計的loss則能夠?qū)乖肼晹?shù)據(jù)。郵件咨詢作者后,作者回復可以對loss進行均值偏導和標準差偏導看看,還推薦了一篇論文,不過那篇論文直接將不確定性\frac{1}{\sigma}作為loss的系數(shù),和本篇的實現(xiàn)還不太一樣,具體大家可以去看看,文末的參考內(nèi)容有該篇論文地址。強行解釋的話,大概是因為一般噪聲數(shù)據(jù)的預測值都會有很高的不確定性且GT遠離預測值,即GT在高斯分布的兩側(cè),當標準差越大,兩側(cè)的值會增大,使得loss會稍微減小。但是感覺在loss中加一個類似\frac{1}{\sigma}的系數(shù)和一個關(guān)于\sigma的正則項會更直接點,不知道這樣理解是否正確,如果有問題麻煩大家評論或私信討論一下

Utilization of localization uncertainty

? 將objectness、class和Uncertainty結(jié)合作為最后的分數(shù),計算如公式10,Uncertainty_{aver}為4個預測結(jié)果的平均不確定性。由于將box的不確定性考慮到最終的分數(shù)中,因此可以大量降低FP結(jié)果

Experimental Results


? 在不同的數(shù)據(jù)集上每個detection layer的anchor設(shè)計如表1

Validation in utilizing localization uncertainty

Performance evaluation of Gaussian YOLOv3

Visual and numerical evaluation of FP and TP

? 置信度為0.5

CONCLUSION


? 在自動駕駛中,檢測模型的速度和準確率都很重要,出于這個原因,論文提出Gaussian YOLOv3。該算法在保持實時性的情況下,通過高斯建模、損失函數(shù)重建來學習bbox預測值的不確定性,從而提高準確率和TP,能夠顯著地降低FP,在KITTI和BDD數(shù)據(jù)集上分別提升了3.09mAP和3.5mAP。整體的思路類似于添加一個不確定性分支,沒有帶來過多的計算,設(shè)計十分巧妙,推薦大家閱讀學習

?

參考內(nèi)容

如果本文對你有幫助,麻煩點個贊或在看唄~
更多內(nèi)容請關(guān)注 微信公眾號【曉飛的算法工程筆記】

work-life balance.
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容