論文:Focal Loss for Dense Object Detection

原文鏈接:arxiv.org/abs/1708.0200

背景介紹

目前最先進的目標檢測系統是基於兩個階段的機制。第一個階段生成一個稀疏的候選區域集合,第二個階段使用卷積神經網路對候選區域進行分類處理。最典型的例子例如R-CNN系列框架。

另一種目標檢測系統的解決思路是在一個階段完成目標檢測的任務。例如YOLO,SSD。這些系統的比兩階段的要快,但是在準確度方面有所下降。

本文進一步推進了上述的研究,提出了一種一階段的目標檢測系統。首次在COCO數據集上達到了最先進兩階段目標檢測系統(例如FPN,Faster R-CNN)的性能。為了達到這個目的,我們把訓練階段的類別不平衡性視為一階目標檢測系統精度的瓶頸,並提出了了解決這個瓶頸的全新的損失函數。在此基礎上,我們設計了一個名為RetinaNet的一階目標檢測模型。

Focal Loss

2.1 Cross entropy

二分類問題中loss的定義如下:

上式中

代表樣本屬於1的概率。y代表標籤。為了表示方便,我們定義

如下:

CE loss 如下圖中的藍色曲線所示,這個loss的一個顯著特徵是,即使是很容易的分類情況下,也會產生較大的loss。當把這些大量的loss加起來的時候,將會產生較大的影響。

2.2 Balanced Cross Entropy

常用的解決類別不平衡的方法是引入一個額外的參數

用來設置為相反類別的概率或者作為交叉驗證的一個超參數。為了表示方便,我們重寫了帶

參數的CE loss:

2.3 Focal Loss Definition

正如實驗所示,在密集目標檢測系統中,訓練過程中,遇到的類別失衡將會對交叉熵損失函數產生較大影響。容易分類的負樣本將會佔據主要的損失以及梯度。儘管

平衡了正負樣本的重要性,但是無法對 容易分類的樣本和難以分類的樣本產生影響。因此我們提出了一種全新的loss function(focal loss),以此來降低 容易分類樣本的重要性,從而把訓練集中在難以分類的負樣本上。 Focal loss 的形式如下:

Focal loss 在 cross entropy 的基礎上增加了一個調節因子,

。Focal loss 如下圖所示,

的取值在[0, 5] 之間。從圖中我們可以看出兩點:

  • 當一個樣本被錯分類,

值很小的時候,調節因子,

的值很小,因此不會對loss產生影響。當

值很大,趨近於1的時候,調節因子的值趨近於0,因此對於正確分類的樣本的loss值被縮小了。

的時候,FL 等於 CE。當

增加時候,調節因子的影響相應的增加,實驗中

取得了最好的實驗效果。

在實驗中,我們使用了

變種的focal loss ,形式如下:

RetinaNet Detector

為了驗證使用的Focal Loss function,作者設計了一種RetinaNet,如下圖所示:

RetinaNet 網路架構包含一個backbone 網路和兩個subnetwork。Backbone網路在底層使用了ResNet,用來生成卷機特徵,在此之上有一個Feature Pyramid Network(FPN)。Backbone外接兩個subnetwork,一個用來分類,一個用來生成目標位置信息。

實驗驗證

我們在COCO數據集上進行了目標檢測的實驗,並將測試結果與近期最先進的方法進行比較。其中包括一階模型和二階模型。下表列出了測試結果:

  這是Retina-101-800模型的測試結果,訓練過程中採用scale filter , 訓練時間是之前模型的1.5倍,但是AP值提升了1.3。對比當前最先進的一階模型,我們的模型AP值提升了5.9%(39.1 vs 33.2)。對比當前最先進的二階模型,Faster R-CNN w TDM,我們的模型也取得了2.3%的優勢(39.1 vs 36.8)。

總結

本文中,我們將類別不平衡視為一階目標檢測系統的性能瓶頸,為瞭解決這個問題我們對CE(交叉熵損失)提出了改進,提出了focal loss。實驗結果顯示,基於focal loss 的RetinaNet ,相對比與之前的目標檢測系統,有較大改進。

推薦閱讀:

相关文章