本文轉自知乎,作者mileistone,已獲作者授權轉載,請勿二次轉載。
https://zhuanlan.zhihu.com/p/330613654
目標檢測模型訓練的時候有兩個任務,框分類(框里是什么)和框回歸(框在哪),本文主要講第二點。
框回歸可以分為兩大類,基於x,y,w,h的回歸(比如Faster R-CNN、YOLO、RetinaNet里框回歸的loss),基於IoU的回歸(比如IoU loss、GIoU loss、DIoU loss、CIoU loss)。
基於x,y,w,h的回歸
基於x,y,w,h的回歸,可以細分為x、y(GT框的中心)的回歸和w、h的回歸。
w、h的回歸
Faster R-CNN、YOLO、RetinaNet的w、h回歸方式大體相同。假設
、
為擬合目標,
、
為網絡預測值,
為GT框的寬,
為樣本對應anchor框的寬,
為GT框的寬,
為GT框對應的anchor框的高,
為
、
、
等。




其中通過anchor的歸一化和取log,可以一定程度增加
和
對框scale的invariance。
x、y的回歸
x、y的回歸方式可以分為兩類,一類以YOLO為代表,一類以Faster R-CNN和RetinaNet為代表。后者x、y的回歸方式與它們對w、h的回歸方式相同,不再贅述。
YOLO中x、y的回歸方式比較奇特。假設
、
為擬合目標,
、
為網絡預測值,
為對應head輸出feature map的寬,
為對應head輸出feature map的高。
為GT框中心的x坐標,
為GT框中心的y坐標,
為GT框匹配上的grid cell的x坐標,
為GT框匹配上的grid cell的y坐標,x坐標的范圍縮放到化到
,y坐標的范圍縮放到到
。




對scale進行reweight
關於x、y、w、h的回歸,YOLO還會對不同scale的框回歸loss進行reweight,減小大scale的框回歸loss,增大小scale的框回歸loss,Fatser R-CNN和RetinaNet沒這么做。總體而言,YOLO里很多操作都是比較特立獨行的,不過在論文里講得很少,只有看作者的C代碼實現才能發現。
基於IoU的回歸
IoU loss有兩個所謂的優點,一個是“Given the choice between optimizing a metric itself vs. a surrogate loss function, the optimal choice is the metric itself”,另一個是IoU loss對框的scale具有invariance特性,大家覺得這個對於框回歸而言非常必要。
IoU loss關注預測框與GT框的IoU,而其他基於IoU loss的變體,關注的點除了IoU 之外還有:
1、預測框與GT框並集占據預測框與GT框最小包絡框的比例(越大越好);
2、歸一化(以預測框和GT框最小包絡框的對角線為分母)的預測框中心與GT框中心距離(越小越好);
3、預測框長寬比與GT框長寬比的相似程度(越大越好)。
GIoU loss關注了1,DIoU loss關注了2,CIoU loss關注了2和3。
GIoU loss緩解了IoU loss在預測框和GT框之間IoU為0,梯度為0的問題。實驗中GIoU收斂比較慢,DIoU緩解了GIoU這個問題;CIoU基於DIoU,添加了一個關於長寬比的懲罰項。
一些想法
1、the optimal choice is the metric itself?
將IoU作為loss是不是真的如論文中所說“Given the choice between optimizing a metric itself vs. a surrogate loss function, the optimal choice is the metric itself”。
這句話很對,但是IoU只是整體metric(比如mAP)中的一部分,這一個部分達成了“optimizing a metric itself”,問題是局部最優不一定能達到全局最優,這個問題導致IoU loss提出來之后,后續大家打了一個接一個的補丁(比如GIoU、DIoU、CIoU),甚至PP-YOLO發現把基於x、y、w、h的回歸和基於IoU的回歸結合起來效果更好。
事情並不如IoU提出來的時候想的那么美好。
相信后面還會有更多的補丁。一個問題在於無論是IoU也好,還是后面提出來的其他懲罰項也好,既緩解了一部分問題,也帶來了新的問題;另一個問題是,整體地“optimizing a metric itself”這個命題聽起來很美好,但是基本不可實現:想象很美好,現實很骨感。
后面我們大概率會從不同角度提出更多的懲罰項,這里會帶來一個問題,當懲罰項越來越多的時候,如何平衡各個懲罰項loss,進而如何平衡框回歸與框分類loss,里面會涉及到很多超參。
2、對框scale的invariance特性
框回歸問題中,對框scale具有invariance是否一定是優點呢?我想不盡然,因為不同scale的框之間可能存在不平衡,在這種條件下,對框scale具有invariance可能不一定是最好的,我們可能需要做一些reweight。
3、anchor free
這里我們沒提到anchor free的目標檢測框回歸計算方式,但是思路是類似的,基於上述的思路,可以很自然地想到anchor free目標檢測器里框回歸會如何設計。
