DIoU YOLOv3:更加穩定有效的目標框回歸損失
- 2019 年 12 月 5 日
- 筆記
本文轉載自:yuanCruise
DIoU要比GIou更加符合目標框回歸的機制,將目標與anchor之間的距離,重疊率以及尺度都考慮進去,使得目標框回歸變得更加穩定,不會像IoU和GIoU一樣出現訓練過程中發散等問題。 https://arxiv.org/pdf/1911.08287.pdf https://github.com/Zzh-tju/DIoU-darknet
《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》

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

最終的實驗結果如下:圖中展示的訓練同樣的代數後(200代),IoU,GIoU以及本文提出的DIoU作為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和目標之間的中心點距離,可以更快更有效更穩定的進行回歸。

提出問題
基於IoU和GIoU存在的問題,作者提出了兩個問題:
第一:直接最小化anchor框與目標框之間的歸一化距離是否可行,以達到更快的收斂速度。
第二:如何使回歸在與目標框有重疊甚至包含時更準確、更快。
問題1答案:DIoU
作者為了回答第一個問題:提出了Distance-IoU Loss。

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

DIoU的優點如下:
- 與GIoU loss類似,DIoU loss在與目標框不重疊時,仍然可以為邊界框提供移動方向。
- DIoU loss可以直接最小化兩個目標框的距離,因此比GIoU loss收斂快得多。
- 對於包含兩個框在水平方向和垂直方向上這種情況,DIoU損失可以使回歸非常快,而GIoU損失幾乎退化為IoU損失。
- DIoU還可以替換普通的IoU評價策略,應用於NMS中,使得NMS得到的結果更加合理和有效。
問題2答案:CIoU
作者為了回答第二個問題:提出了Complete-IoU Loss。
作者認為一個好的目標框回歸損失應該考慮三個重要的幾何因素:重疊面積、中心點距離、長寬比。
GIoU:為了歸一化坐標尺度,利用IoU,並初步解決IoU為零的情況。
DIoU:DIoU損失同時考慮了邊界框的重疊面積和中心點距離。
然而,anchor框和目標框之間的長寬比的一致性也是極其重要的。基於此,作者提出了Complete-IoU Loss。

上述損失函數為CIoU的損失,通過公式可以很直觀的看出,CIoU比DIoU多出了阿爾法和v這兩個參數。其中阿爾法是用於平衡比例的參數。v用來衡量anchor框和目標框之間的比例一致性。


從阿爾法參數的定義可以看出,損失函數會更加傾向於往重疊區域增多方向優化,尤其是IoU為零的時候。
DIoU & CIoU在YOLOv3上的性能
從下表可以看出,DIoU和CIoU在YOLOv3上都有較大的性能提升!

論文:https://arxiv.org/pdf/1911.08287.pdf
程式碼:https://github.com/Zzh-tju/DIoU-darknet