概述
目標檢測損失函數的選擇在目標檢測問題建模中至關重要。通常,目標檢測需要兩個損失函數,一個用于對象分類,另一個用于邊界框回歸(BBR)。本文將重點介紹 IoU 損失函數(GIoU 損失、DIoU 損失和 CIoU 損失、ProbIoU)。首先來了解一下什么是最原始的IoU定義
什么是IOU(并交比)
對象檢測中的 mAP(平均精度)指標是根據 IoU(交集超過并集)進行評估的。因此,BBR使用基于 IoU 的損失函數來實現計算mAP,mAP的典型計算公式與表示如下:
但是這種最原始的IoU并交比的損失計算方式是有缺陷的,如當預測框與真實框沒有相交的時候,IoU損失就是0,這樣就導致了沒有梯度,導致訓練的效果就會打折許多。
改進之GIoU
于是有個聰明的人發現,這樣可以稍微避免這種問題的發生,就是把預測框與真實框(A與B)合起來求最小的外接矩形,就變成了如下:
對應的GIoU的計算公式就改成了:
下圖是分別基于L2與L1損失相同的情況下,IoU跟GIoU有明顯的差異比較。
加入懲罰項因子以后,對于沒有重疊的預測也可以實現邊界框回歸了,從而改善了IoU的缺陷。論文給出的實驗結果如下:
改進之DIoU與CIoU
作者把IoU損失看成是一個通用的公式如下:
其中R是懲罰性因子,這樣R=0的時候就是普通的IoU損失,從而把IoU損失改進看成是尋找好的懲罰性因子,然后作者通過一通神的思考以后給出了下面的懲罰性因子公式:
這樣 DIoU就出來
這樣是不是梯度會大一些,回歸起來會更猛一點,效果會更好點。但是作者說好的BBR應該考慮三個指標分別是重疊、中心位置距離、橫縱比,DIoU只考慮前面兩個,還有最后一個還沒有考慮到,所以還可以改進,改進之后才是完整的IoU損失(CIoU),然后就得到了另外一個懲罰性因子公式跟對應的CIoU損失:
然后作者給出了實驗結果:
說明CIoU開掛了,所以YOLOv8默認就是CIoU。
ProbIoU
ProbIoU可以實現OBB旋轉對象映射到GBB、然后實現預測框與真實框的回歸IoU損失功能,然后基于協方差矩陣,計算巴氏距離以后,再基于BD實現損失計算
跟原始的IoU比較,有明顯的改善:
然后它自己說靠譜,所以YOLOv8的旋轉對象檢測就采用了ProbIoU來做BBR。
審核編輯:劉清
-
MAP
+關注
關注
0文章
49瀏覽量
15181
原文標題:對象檢測邊界框損失 – 從IOU到ProbIOU
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
TensorFlow損失函數(定義和使用)詳解
結合預測框和目標框之間的歸一化距離來提出距離-IoU (DIoU) Loss
YOLOv5全面解析教程之目標檢測模型精確度評估
基于YOLOX目標檢測算法的改進
深度學習:什么是IoU?
一種新的帶有不確定性的邊界框回歸損失,可用于學習更準確的目標定位
![一種新的帶有不確定性的<b class='flag-5'>邊界</b><b class='flag-5'>框</b>回歸<b class='flag-5'>損失</b>,可用于學習更準確的目標定位](https://file.elecfans.com/web1/M00/8F/94/pIYBAFy-z0-AZYoUAAAJr01Obn4101.png)
RepPoints 比邊界框更好用的目標檢測方法
![RepPoints 比<b class='flag-5'>邊界</b><b class='flag-5'>框</b>更好用的目標<b class='flag-5'>檢測</b>方法](https://file.elecfans.com/web1/M00/91/C2/pIYBAFzT8meAaTXzAAAa8HG9aA4733.png)
評論