Dice Loss
參考:https://blog.csdn.net/l7H9JA4/article/details/108162188
Dice系數: 是一種集合相似度度量函數,通常用于計算兩個樣本的相似度,取值范圍為[0,1]。
s=2∣X∩Y∣∣X∣+∣Y∣s = \frac{2|X ∩ Y|}{|X|+|Y|} s=∣X∣+∣Y∣2∣X∩Y∣?
|X?Y| 是指 X 和 Y 之間的交集;|X| 和 |Y| 分別表示 X 和 Y 的元素個數. 分子乘為了保證分母重復計算后取值范圍在[0,1]之間
因此Dice Loss可寫作
Ldisc=2∣X∩Y∣∣X∣+∣Y∣L_{disc} = \frac{2|X∩Y|}{|X|+|Y|} Ldisc?=∣X∣+∣Y∣2∣X∩Y∣?
對于二分類問題,一般預測值分為以下幾種:
- TP: true positive,真陽性,預測是陽性,預測對了,實際也是正例。
- TN: true negative,真陰性,預測是陰性,預測對了,實際也是負例。
- FP: false positive,假陽性,預測是陽性,預測錯了,實際是負例。
- FN: false negative,假陰性,預測是陰性,預測錯了,實際是正例
公式可改寫為
dics=2TP2TP+FP+FNdics = \frac{2TP}{2TP+FP+FN} dics=2TP+FP+FN2TP?
公式的論文形式
Ldice=1?I+aU?I+aL_{dice} = 1 - \frac{I+a}{U-I+a} Ldice?=1?U?I+aI+a?
a為一個極小的數,一般稱為平滑系數,有兩個作用:
- 防止分母預測為0。值得說明的是,一般分割網絡輸出經過sigmoid 或 softmax,是不存在輸出為絕對0的情況。這里加平滑系數主要防止一些極端情況,輸出位數太小而導致編譯器丟失數位的情況。
- 平滑系數可以起到平滑loss和梯度的操作。
Dicc loss應用于語義分割,是區域相關的loss,因此更適合針對多點的情況進行分析。
這也意味著某像素點的loss以及梯度值不僅和該點的label以及預測值相關,和其他點的label以及預測值也相關。
IOU、GIOU、DIOU、CIOU損失函數匯總
參考:
https://zhuanlan.zhihu.com/p/159209199
https://zhuanlan.zhihu.com/p/94799295
IOU
IOU俗稱交并比,是目標檢測中最常用的指標。
IoU=∣A∩B∣∣A∪B∣IoU = \frac{|A ∩ B|}{|A ∪ B|} IoU=∣A∪B∣∣A∩B∣?
優點
1、他可以反映預測檢測框與真實檢測框的檢測效果。
2、具有尺度不變性,也就是對尺度不敏感(scale invariant), 在regression任務中,判斷predict box和gt的距離最直接的指標就是IoU。(滿足非負性;同一性;對稱性;三角不等性)
缺點
1、若兩框無法相交,由定義得IoU=0,也就不能反映兩者的重合度。同時因為loss為零,沒有梯度回歸,無法進行學習的訓練
2、IoU無法精確的反映兩者之間的重合度大小。如下圖,IoU相同,但可以看出重合度不一樣,左邊最好,右邊最差。
GIOU
GIoU=IoU?Ac?UAcGIoU = IoU - \frac{A_{c}-U}{A_{c}} GIoU=IoU?Ac?Ac??U?
公式的解釋如下:
先計算兩個框的最小閉包區域面Ac(同時包含預測框和真實框的最小框面積),在計算IoU,然后在計算閉包區域中不屬于兩個框的區域占閉包區域的比重,最后用IoU減去這個比重,得到GIoU。
優點:
- 與IoU相似,GIoU也是一種距離度量,作為損失函數的話
LGIoU=1?GIoUL_{GIoU} = 1 - GIoU LGIoU?=1?GIoU
,滿足損失函數的基本要求 - GIoU對scale不敏感,可以解決檢測框非重疊造成的梯度消失問題
- GIoU是IoU的下界,在兩個框無限重合的情況下,IoU=GIoU=1
- IoU取值[0,1],但GIoU有對稱區間,取值范圍[-1,1]。在兩者重合的時候取最大值1,在兩者無交集且無限遠的時候取最小值-1,因此GIoU是一個非常好的距離度量指標。
- 與IoU只關注重疊區域不同,GIoU不僅關注重疊區域,還關注其他的非重合區域,能更好的反映兩者的重合度。
DIoU
DIoU要比GIou更加符合目標框回歸的機制,將目標與anchor之間的距離,重疊率以及尺度都考慮進去,使得目標框回歸變得更加穩定,不會像IoU和GIoU一樣出現訓練過程中發散等問題。
DIoU=IoU?ρ2(b,bgt)c2DIoU = IoU - \frac{ρ^2(b,b^{gt})}{c^2} DIoU=IoU?c2ρ2(b,bgt)?
其中b,bgt 分別代表預測框和真實框的中心點,且ρ代表的是計算兩個中心點間的歐式距離。c代表的是能夠同時包含預測框和真實框的最小閉包區域的對角線距離
優點:
- 與GIoU loss類似,DIoU loss(LDIoU=1?DIoUL_{DIoU} =1 - DIoULDIoU?=1?DIoU)在與目標框不重疊時,仍然可以為邊界框提供移動方向。
- DIoU loss可以直接最小化兩個目標框的距離,因此比GIoU loss收斂快得多。
- 對于包含兩個框在水平方向和垂直方向上這種情況,DIoU損失可以使回歸非常快,而GIoU損失幾乎退化為IoU損失。
- DIoU還可以替換普通的IoU評價策略,應用于NMS中,使得NMS得到的結果更加合理和有效。
下圖所示為GIOU和DIOU的對比。
紅色框是DIOU損失中的預測框。可以很明顯的看出,DIOU的收斂速度較GIOU更快。
CIoU(Complete-IoU)
DIOU考慮到了兩個檢測框的中心距離。而CIOU考慮到了三個幾何因素,分別為
- 重疊面積
- 中心點距離
- 長寬比
考慮到bbox回歸三要素中的長寬比還沒被考慮到計算中,因此,進一步在DIoU的基礎上提出了CIoU。其懲罰項如下面公式:
RCIoU=ρ2(b,bgt)c2+avR_{CIoU}=\frac{ρ^2(b,b^{gt})}{c^2} + av RCIoU?=c2ρ2(b,bgt)?+av
其中a是權重函數,而v 用來度量長寬比的相似性,定義為
a=v(1?IoU)+va = \frac{v}{(1-IoU)+v} a=(1?IoU)+vv?
v=4π2(arctanwgthgt?arctanwh)v = \frac{4}{π^2}(arctan\frac{w^{gt}}{h^{gt}}-arctan\frac{w}{h}) v=π24?(arctanhgtwgt??arctanhw?)
完整的CIoU損失函數的定義:
LCIoU=1?IoU+ρ2(b,bgt)c2+avL_{CIoU} =1-IoU + \frac{ρ^2(b,b^{gt})}{c^2} + av LCIoU?=1?IoU+c2ρ2(b,bgt)?+av
- w2 和 h2 為真實框的寬、高
- w 和 h 為預測框的寬、高
若真實框和預測框的寬高相似,那么 v 為0,該懲罰項就不起作用了。所以很直觀地,這個懲罰項作用就是控制預測框的寬高能夠盡可能快速地與真實框的寬高接近。