當前位置: 妍妍網 > 碼農

物件檢測邊界框損失 – 從IOU到ProbIOU

2024-01-23碼農

點選上方 藍字 關註我們

微信公眾號: OpenCV學堂

關註獲取更多電腦視覺與深度學習知識

概述

目標檢測損失函式的選擇在目標檢測問題建模中至關重要。通常,目標檢測需要兩個損失函式,一個用於物件分類,另一個用於邊界框回歸(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。

掃碼學習YOLOv8視訊課程

推薦閱讀

好書推薦

【OpenCV套用開發:入門、進階與工程化實踐】 全書共計16個章節,重點聚焦OpenCV開發常用模組詳解與工程化開發實踐,提升OpenCV套用開發能力,助力讀者成為OpenCV開發者,同時包含深度學習模型訓練與部署加速等知識,幫助OpenCV開發者進一步拓展技能地圖,滿足工業計畫落地所需技能提升。購買請點連結:

https://item.jd.com/10092255924058.html

學習課程有專屬答疑群

負責貼身答疑解惑

讀者專屬QQ群 :657875553

進群暗號:OpenCV4讀者