DIoU YOLOv3 | AAAI 2020:更加穩定有效的目標框迴歸損失

DIoU要比GIou更加符合目標框迴歸的機制,將目標與anchor之間的距離,重疊率以及尺度都考慮進去,使得目標框迴歸變得更加穩定,不會像IoU和GIoU一樣出現訓練過程中發散等問題。
https://arxiv.org/pdf/1911.08287.pdf
https://github.com/Zzh-tju/DIoU-darknet

1:IoU & GIoU存在的問題分析

論文作者通過一個仿真實現,從實驗結果的角度說明了IoU和GIoU存在的問題。實驗設定如下圖所示,
一:綠色框代表仿真實驗需要回歸的七個不同尺度的目標框,七個目標框的中心點座標都是(10 * 10)。
二:藍色的點代表了所有anchor的中心點,中心點的分佈如下圖所示,各個方向都有,各種距離都有,當然每個anchor得一箇中心點都包含有七個不同面積的anchor框。而且每個面積的anchor框又有其中不用比例尺寸。因此一共有5000個藍色點,有5000*7*7個anchor框,而且每個框都需要回歸到七個目標框去,因此一共有5000*7*7*7個迴歸案例。

最終的實驗結果如下:圖中展示的訓練同樣的代數後(200代),三個loss最終每個anchor的誤差分佈。
一:IoU:從IoU誤差的曲線我們可以發現,anchor越靠近邊緣,誤差越大,那些與目標框沒有重疊的anchor基本無法迴歸。
二:GIoU:從GIoU誤差的曲線我們可以發現,對於一些沒有重疊的anchor,GIoU的表現要比IoU更好。但是由於GIoU仍然嚴重的依賴IoU,因此在兩個垂直方向,誤差很大,基本很難收斂,這就是GIoU不穩定的原因。
三:DIoU:從DIoU誤差的曲線我們可以發現,對於不同距離,方向,面積和比例的anchor,DIoU都能做到較好的迴歸。


再用一張很形象的圖,來說明GIoU不穩定以及收斂很慢的原因。下圖中第一行三張圖展示的是GIoU的迴歸過程,其中綠色框爲目標框,黑色框爲anchor,藍色框爲不同次數的迭代後,anchor的偏移結果。第二行三張圖展示的是DIoU的迴歸過程,其中綠色框爲目標框,黑色框爲anchor,紅色框爲不同次數的迭代後,anchor的偏移結果。從圖中我們可以看到,GIoU在迴歸的過程中,從損失函數的形式我們發現,當IoU爲0時,GIoU會先儘可能讓anchor能夠和目標框產生重疊,之後GIoU會漸漸退化成IoU迴歸策略,因此整個過程會非常緩慢而且存在發散的風險。而DIoU考慮到anchor和目標之間的中心點距離,可以更快更有效更穩定的進行迴歸。

2:提出問題

基於GIoU存在的問題,作者提出了兩個問題:
首先,直接最小化anchor框與目標框之間的歸一化距離是否可行,以達到更快的收斂速度。
其次,如何使迴歸在與目標框有重疊甚至包含時更準確、更快。

3:DIoU

作者爲了回答第一個問題:提出了Distance-IoU Loss

上述損失函數中,b,bgt分別代表了anchor框和目標框的中心點,且p代表的是計算兩個中心點間的歐式距離。c代表的是能夠同時覆蓋anchor和目標框的最小矩形的對角線距離。因此DIoU中對anchor框和目標框之間的歸一化距離進行了建模。直觀的展示如下圖所示。

DIoU的優點如下:
1.與GIoU loss類似,DIoU loss在與目標框不重疊時,仍然可以爲邊界框提供移動方向。
2.DIoU loss可以直接最小化兩個目標框的距離,因此比GIoU loss收斂快得多。
3.對於包含兩個框在水平方向和垂直方向上這種情況,DIoU損失可以使迴歸非常快,而GIoU損失幾乎退化爲IoU損失。

3:CIoU

作者爲了回答第二個問題:提出了Complete-IoU Loss
一個好的目標框迴歸損失應該考慮三個重要的幾何因素:重疊面積、中心點距離、長寬比。
GIoU:爲了歸一化座標尺度,利用IoU,並初步解決IoU爲零的情況。
DIoU:DIoU損失同時考慮了邊界框的重疊面積和中心點距離。
然而,anchor框和目標框之間的長寬比的一致性也是極其重要的。基於此,作者提出了Complete-IoU Loss

上述損失函數中,CIoU比DIoU多出了阿爾法和v這兩個參數。其中阿爾法是用於平衡比例的參數。v用來衡量anchor框和目標框之間的比例一致性。

從阿爾法參數的定義可以看出,損失函數會更加傾向於往重疊區域增多方向優化,尤其是IoU爲零的時候。

4:DIoU & CIoU結果分析

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