1.IOU損失函數
IOU損失表示預測框A和真實框B之間交並比的差值,反映預測檢測框的檢測效果。
但是,作為損失函數會出現以下問題:
- 如果兩個框沒有相交,根據定義,IoU=0,不能度量IoU為零距離遠近的程度。同時因為loss=0,沒有梯度回傳,無法進行學習訓練。
- IoU無法精確的反映兩者的重合度大小。如下圖所示,三種情況IoU都相等,但看得出來他們的重合度是不一樣的,左邊的圖回歸的效果最好,右邊的最差。
圖1 三種不同的IOU重疊方式
2.GIOU損失
GIOU是為了緩解IOU損失在檢測框不重疊時出現的梯度問題而提出來的,在原來的IOU損失的基礎上加上一個懲罰項。
其中,A是預測框,B是真實框,C是A和B的最小包圍框,A、B、C的關系具體如下圖所示。
圖2 A、B、C含義
懲罰項的意思是下圖右邊黃色區域的比值。
圖3 懲罰項示意圖
- 當兩個box沒有重疊,並且距離比較遠的時候,找到的矩形會比較大,空區域的面積也會比較大,極限情況下,空區域的面積除以矩形面積,結果為1。此時IoU為0。
。
- 假設兩個box大小相同,正好左右相鄰,此時,空區域面積為0,IoU為0。
。
- 假設兩個box完全重合,此時,空區域為0,IoU為1。
。
可以看出,從0到2,越小越好。但是,作為損失函數會出現以下問題:
下圖中,綠色框為真實框,黑色框為先驗Anchor,藍色為預測框。預測框是以先驗框為基礎進行位置移動和大小縮放。GIOU首先嘗試增大預測框的大小,使得它能夠與真實框有所重疊(如下圖中間所示),然后進行上述公式中 的計算。會消耗大量的時間在預測框嘗試與真實框接觸上,影響損失的收斂速度。
圖4 GIOU回歸過程
3.DIOU損失
為了加快收斂速度,DIOU在IOU損失的基礎上加一個懲罰項,用來最小化兩個檢測框中心點之間的標准化距離。
其中,A為預測框,B為真實框;為預測框中心點坐標,
為真實框中心點坐標。
是歐式距離計算;c為A、B最小包圍框的對角線長度。
圖5 DIOU回歸過程
與GIoU loss類似,DIoU loss在預測框與目標框不重疊時,仍然可以為邊界框提供優化移動方向。由於DIoU loss可以直接最小化兩個目標框的距離,因此比GIoU loss收斂要快。此外,DIoU還可以替換普通的IoU評價策略,應用於NMS中,使得NMS得到的結果更加合理和有效。
4.CIOU損失
CIOU在DIOU的基礎上將長寬比吸納進來。CIOU損失包括重疊面積、中心點距離和長寬比三項。
其中,和
分別表示真實框的寬和高;w和h分別表示預測框的寬和高。
若真實框和預測框的寬高相似,那么為0,該懲罰項就不起作用了。所以很直觀地,這個懲罰項作用就是控制預測框的寬高能夠盡可能快速地與真實框的寬高接近。