Generalized Focal Loss論文解讀

語言: CN / TW / HK

持續創作,加速成長!這是我參與「掘金日新計劃 · 10 月更文挑戰」的第5天,點選檢視活動詳情

這篇文章一出來就得到了廣泛的關注,思路很清楚,解決了2個問題,效果也很好,關鍵是無差別漲點,值的一看。

圖片

摘要:一階段物體檢測對於包圍框的質量的表示往往是直接預測框的質量,然後再和類別置信度結合起來使用。這篇文章深入研究了物體檢測3個最基礎的要素:質量的預測,類別和定位。發現了2個問題(1)質量預測在訓練和推理中的不一致性。(2)當在複雜場景的情況下,物體的定位往往會出現不確定性和隨意性,而物體位置的狄拉克分佈對於表示這種不確定性和隨意性不合適。為了解決這兩個問題,這篇文章中對這三個要素設計了一種新的表示,將質量的預測放到類別預測當中去,這樣就得到一個物體的定位質量和類別概率的聯合表示,並可以使用一個向量來表示包圍框的任意的分佈。使用這種表示的時候,用到的標籤是連續的,這樣的話,Focal Loss就不適用了,於是,我們提出了Generalized Focal Loss,將Focal Loss擴充套件到了連續的場景中。

程式碼:https://github.com/implus/GFocal

1、介紹

物體檢測的包圍框的表示,現在一般用的是狄拉克分佈。後來,為了預測框的質量,FCOS中引入了centerness的概念,用來表示框的質量,也確實帶來了performance的提升,最後使用的時候,是將這個centerness和類別概率結合到一起使用的。而這種用法其實是有問題的:

訓練和推理的時候,對定位質量和類別得分的使用方式不一致

1、定位質量得分和類別得分這兩個東西在訓練的時候是獨立進行訓練的,而在推理的時候是結合到一起的。如下圖(a)。

圖片

2、對於定位質量的訓練時只在匹配到的正樣本上進行訓練的,而對於負樣本,也有可能會得到比較高的定位質量的得分。

由於這兩個問題,就導致了訓練和推理之間的gap,負樣本也可能會有比較高的定位質量的得分,這樣,結合起來的總的得分可能會排在正樣本前面。如下圖(a)。

圖片

包圍框的表示方式的不夠靈活

目前常用的包圍框可以看成是狄拉克分佈,但是這個分佈沒辦法表示資料集中的一些不確定性,如圖3。儘管現在有一些工作將包圍框建模為高斯分佈,但是這對於真實的包圍框的分佈來說還是太簡單了。真實的包圍框的分佈可能會非常的隨意,而不是向高斯分佈那麼對稱。

圖片

因此,我們設計了一個新的包圍框和定位質量得分的表示方式。對於定位得分的表示,我們將其合併到類別得分中,得到一個統一的表示方式:類別向量,其中,ground truth的類別index上的值就用來表示對應框的定位質量(在文中用的是預測框和對應的gt框的IOU值)。這樣就可以端到端的進行訓練,在推理的時候也可以直接使用,如圖1(b)。這也很好理解,類別概率和定位得分的範圍都是0~1,因此預測出來的這個概率即表示類別概率又表示定位質量在數學上是沒問題的,關鍵是如何去利用這個定位質量的預測值。這樣,訓練和推理就一致起來了,而且,負樣本的質量得分會被壓制到0,總體的質量的預測會更加的可信。這對於dense的物體檢測器尤為有用,因為這種檢測器會在全圖範圍內對所有位置的得分進行排序。對於包圍框的表示,我們提出了一種表示方式,可以表示任意的分佈。在文中成為通用分佈,Generalized Distribution,可以通過這種表示在連續的表示空間上直接學習到離散的概率分佈,這樣,可以得到更加準確和可信的包圍框的預測。如圖3。

對於dense的物體檢測器,分類的分支一般會使用Focal Loss來優化,FL可以很好的處理類別的不均衡的問題,而對於我們提出的這種classification-IoU的聯合表示,除了類別不均衡的問題之外,還有新的問題。IoU的label是0~1範圍內連續的,而FL只支援0,1的離散label。我們通過將FL擴充套件到連續的label解決了這個問題,這個擴充套件的FL我們叫做GFL(Generalized Focal Loss)。這種GFL可以處理任意的連續的label值。在本文中,我們特別為定位質量和包圍框分佈設計了QFL(Quality Focal Loss)和DFL(Distribution Focal Loss)。

我們證明了GFL的3個優點:1、拉近了訓練和推理之間的gap。2、很好的對包圍框的分佈進行了建模。3、不加入額外的計算量就可以提高效能。

2. 方法

Focal Loss的表示如下:

圖片

Quality Focal Loss

在標準的FL中,y的label是[0,1]是離散的,而在QFL中,y的label是連續的0~1,我們讓負樣本的時候y=0,而正樣本的時候,0<y≤1,其中,y表示這個正樣本的IoU值。需要注意的是,這個y值在訓練過程中是變化的,因為每次預測的框都會不一樣。如圖4:

圖片

我們既要保留FL對於類別不均衡的優勢,又要能夠處理連續的label值,因此,對FL的擴充套件表現在兩方面:1、交叉熵部分$-log(p_t)$,將其擴充套件到完全形式,$-((1-y)log(1-\sigma)+ylog(\sigma))$,2、每個樣本的縮放因子$(1-p_t)^\gamma$泛化為預測值和實際值之間的絕對值$|y-\sigma|^\beta(\beta\ge0)$,於是,我們得到了QFL的形式:

圖片

在y=0.5的時候,不同β的視覺化的圖如下,在文中,使用β=2:

圖片

Distribution Focal Loss

對於包圍框,我們迴歸的目標是當前座標點到4條邊的距離,這好像也是和FCOS和ATSS不一樣的地方,不過文章沒怎麼提這一點。見圖4的迴歸分支,常規操作時將y作為狄拉克分佈來回歸,滿足:

圖片

根據之前的分析,我們需要直接去學習一個任意的分佈,而不是給定的先驗分佈如狄拉克分佈和高斯分佈之類的,因此,我們給與label y一個範圍,$y_0\le y\le y_n$,參考上面的積分形式,我們可以給出y的預測值:

圖片

連續的積分形式是沒辦法用神經網路來實現的,需要改成離散形式,將這個範圍分成一系列的小段,我們取間隔為Δ,文中,取Δ=1,因此,y的預測值可以表示為:

圖片

P(x)可以非常方便的使用softmax來實現,用Si來表示每個點的概率,但是,滿足這個條件的分佈有無窮多的可能性,如圖5(b),這可能會降低學習的有效性,我們需要想辦法讓靠近目標y的點具有較高的概率,還有些情況下,真實的位置可能會距離標註的位置比較遠(由於標註的不好的原因),因此,我們提出DFL,可以讓網路快速的聚焦到y附近的位置上,這是通過明確的增大$y_i$和$y_{i+1}$的概率來實現的,這兩個是最靠近y的兩個值,並且,$y_i\le y\le y_{i+1}$,由於包圍框的迴歸不涉及到正負樣本的均衡問題,所以可以直接使用交叉熵的完全形式:

圖片

直覺上,DFL聚焦於增大y附近的點的概率,在最優解的情況下,只有$y_i$,y和$y_{i+1}$這三個點的概率不為零,其他點的概率都為0。

Generalized Focal Loss

上面連個loss,QFL和DFL,可以統一到GFL的形式下,假設用一個模型來預測兩個變數,$y_l$和$y_r$的概率,$p_{y_l}$和$p_{y_r}$,這兩個概率的和為1,最終的預測是兩者的線性組合,$\hat y=y_lp_{y_l}+y_rp_{y_r}(y_l\le \hat y\le y_r)$,對於的y的label是一個連續值,滿足,GFL可以寫成:

圖片

使用GFL來訓練dense目標檢測器

使用損失為:

圖片

其中,是QFL,是DFL,是GIoU Loss,在實際中,我們使用質量得分來作為和的加權值。

3. 實驗

效果不用說,直接上圖:

圖片

在這裡,主要有兩個超引數,β和n,在ATSS中用的是β=2,n=14或16,基本上,只替換一下loss,就可以有1個點的提升。