本文來自公眾號“每日一醒”
目標檢測任務的損失函數由兩部分構成:Classification Loss和Bounding Box Regeression Loss。
L1 Loss(Mean Absolute Error,MAE)
平均絕對誤差(MAE)是一種用於回歸模型的損失函數。
MAE 是目標變量和預測變量之間絕對差值之和,因此它衡量的是一組預測值中的平均誤差大小,而不考慮它們的方向,范圍為 0~∞。
MAE公式:
MAE導數:
MAE Loss主要問題:
導數為常數,在 Loss 函數最小值處容易震盪,導致難以收斂到最優值。
L2 Loss(Mean Squared Error,MSE)
均方誤差(MSE)是最常用的回歸損失函數,它是目標變量和預測值的差值平方和。
MSE公式:
MSE導數:
MSE Loss主要問題:
導數變化,不穩定,尤其是在早期階段(損失越大,導數越大),隨着導數越來越小, 訓練速度變得越來越慢。
以往的目標檢測模型(比如YOLO V3)等,都是直接根據預測框和真實框的中心點坐標以及寬高信息設定MSE(均方誤差)損失函數或者BCE損失函數的。
YOLO V3的損失函數主要分為三部分,分別為:
-
bounding box regression損失
-
置信度損失
-
分類損失
Smooth L1 Loss
Smooth L1 Loss 結合了 L1 和 L2 的優點:早期使用 L1,梯度穩定,快速收斂,后期使用 L2,逐漸收斂到最優解。
Smooth L1作為目標檢測回歸Loss的缺點:
1)坐標分別計算:x、y、w、h分別回歸,當成4個不同的對象處理。
bbox的4個部分應該是作為一個整體討論,但是被獨立看待了。
2)不同的預測bbox具有相同的損失:把x、y、w、h獨立看待,4個部分產生不同的loss會回歸出不同的預測框,但是如果4個部分的總體loss相同,預測框該如何選取。
3)模型在訓練過程中更偏向於尺寸更大的物體。
進化一:Smooth L1系列變量相互獨立且不具有尺度不變性,改進為IOU。
IoU Loss 將 4 個點構成的 bbox 看成一個整體進行回歸。
IOU Loss的定義是先求出預測框和真實框之間的交集和並集之比,再求負對數,但是在實際使用中我們常常將IOU Loss寫成1-IOU。
如果兩個框重合則交並比等於1,Loss為0說明重合度非常高。
IOU算法流程如下:
IoU Loss的優點:
1)它可以反映預測光與真實框的檢測效果。
2)具有尺度不變性,也就是對尺度不敏感(scale invariant),滿足非負性、同一性、對稱性、三角不變性。
IoU Loss存在的問題:
IOU Loss雖然解決了Smooth L1系列變量相互獨立和不具有尺度不變性的兩大問題,但是它也存在兩個問題:
1)預測框和真實框不相交時,不能反映出兩個框的距離的遠近。
根據IOU定義loss等於0,沒有梯度的回傳無法進一步學習訓練。
2)預測框和真實框無法反映重合度大小。
借用一張圖來說,三者具有相同的IOU,但是不能反映兩個框是如何相交的,從直觀上感覺第三種重合方式是最差的。
無法優化兩個框不相交的情況;無法反映兩個框如何相交的。
進化二:不相交時,IOU=0,兩個框距離變換,IOU loss不變,改進為GIOU。
GIOU Loss,在IOU的基礎上引入了預測框和真實框的最小外接矩形。
GIoU公式:
GIoU Loss公式:
GIOU算法流程如下:
當兩框完全重合時取最小值0,當兩框的邊外切時,損失函數值為1;
當兩框分離且距離很遠時,損失函數值為2。
使用外接矩形的方法不僅可以反應重疊區域的面積,還可以計算非重疊區域的比例,因此GIOU損失函數能更好的反應真實框和預測框的重合程度和遠近距離。
GIOU Loss存在的問題:
1)包含時計算得到的IOU、GIOU數值相等,損失函數值與IOUloss 一樣,無法很好的衡量其相對的位置關系。
2)同時在計算過程中出現上述情況,預測框在水平或垂直方向優化困難,導致收斂速度慢。
進化三:包含時,AUB不變,兩個框距離變換,GIOU loss不變,改進為DIOU。
DIoU公式:
d是A框與B框中心點坐標的歐式距離,而c 則是包住它們的最小方框的對角線距離。
DIoU Loss公式:
DIoU Loss的優點:
DIoU的懲罰項是基於中心點的距離和對角線距離的比值,避免了像GIoU在兩框距離較遠時,產生較大的外包框,Loss值較大難以優化。
所以DIoU Loss收斂速度會比GIoU Loss快。
即使在一個框包含另一個框的情況下,c值不變,但d值也可以進行有效度量。
DIoU Loss存在的問題:
中心點重合,但寬高比不同時,DIOU loss不變。
進化四:中心點重合,中心點距離不變,DIOU Loss不變,但寬高比不同改進為CIOU。
在兩個框中心點重合時,c與d的值都不變。所以此時需要引入框的寬高比:
CIOU公式:
其中α 是權重函數,v 用來度量寬高比的一致性:
CIoU Loss公式:
GIoU:為了歸一化坐標尺度,利用IoU,並初步解決IoU為零的情況。
DIoU:DIoU損失同時考慮了邊界框的重疊面積和中心點距離。
然而,anchor框和目標框之間的長寬比的一致性也是極其重要的。
一個好的目標框回歸損失應該考慮三個重要的幾何因素:重疊面積、中心點距離、長寬比。
YOLO V4相較於YOLO V3,只在bounding box regression做了創新,用CIOU代替了MSE,其他兩個部分沒有做實質改變
CIOU Loss雖然考慮了邊界框回歸的重疊面積、中心點距離、縱橫比。
但是通過其公式中的v反映的縱橫比的差異,而不是寬高分別與其置信度的真實差異,所以有時會阻礙模型有效的優化相似性。
在CIOU的基礎上將縱橫比拆開,提出了EIOU Loss,並且加入Focal聚焦優質的錨框。
EIOU的懲罰項是在CIOU的懲罰項基礎上將縱橫比的影響因子拆開分別計算目標框和錨框的長和寬,該損失函數包含三個部分:重疊損失,中心距離損失,寬高損失,前兩部分延續CIOU中的方法,但是寬高損失直接使目標盒與錨盒的寬度和高度之差最小,使得收斂速度更快。
懲罰項公式如下:
EIOU Loss優點:
1)將縱橫比的損失項拆分成預測的寬高分別與最小外接框寬高的差值,加速了收斂提高了回歸精度。
2)引入了Focal Loss優化了邊界框回歸任務中的樣本不平衡問題,即減少與目標框重疊較少的大量錨框對BBox 回歸的優化貢獻,使回歸過程專注於高質量錨框。
——————
淺談則止,細致入微AI大道理
掃描下方“每日一醒”,選擇“關注”公眾號
—————————————————————
—————————————————————