1. 程式人生 > >論文閱讀筆記四十四:RetinaNet:Focal Loss for Dense Object Detection(CVPR2019)

論文閱讀筆記四十四:RetinaNet:Focal Loss for Dense Object Detection(CVPR2019)

tina 測速 lin ble round 意義 分布 right 小時

技術分享圖片

論文原址:https://arxiv.org/abs/1708.02002

github代碼:https://github.com/facebookresearch/Detectron

摘要

目前,具有較高準確率的檢測器基於雙階段的目標檢測算法實現,單階段通過對可能存在的位置進行密集的采樣操作,一定程度上要比雙階段的方法要更簡單快速,但是準確率會有所損失。在進行訓練時,前景與背景二者之間較大的類別不平衡是產生上述問題的原因。針對上述問題,本文對常規的損失函數進行修改,降低易分類樣本產生的損失的貢獻度。本文設計了密集采樣檢測器-RetinaNet用於評估Focal損失的效果,實驗發現速度可以超過當前的單階段目標檢測,同時準確率要高於雙階段的目標檢測。

介紹

目前最好的目標檢測算法基於雙階段的,由proposal驅動的方法,單階段目標檢測的方法對目標物的位置進行大小及尺寸的密集采樣,單階段檢測速度更快但準確率相對為雙階段的10~40%左右。本文認為類比的不平衡是單階段方法準確率較低的主要原因,並提出了一個新的損失函數。

類別不平衡問題在雙階段過程中得到解決,主要通過雙階段的級聯及啟發的方式進行。比如,在proposal階段通過將背景的候選框剔除來控制候選框的數量(1k~2K),在第二階段分類過程中,通過固定前景背景量的比例1:3,或者online hard example mining 方法進行前景/背景之間的平衡。

單階段中產生的候選位置大約為(100k),相同的啟發方式對其作用不大,容易分類的背景仍然對損失造成很大的影響。

本文提出動態的比例交叉熵損失,比例系數大小隨著正確分類樣本置信度的增加逐漸趨向於0。如下圖,直觀上,比例系數可以降低簡單樣本貢獻度的權重,讓模型更註重於Hard examples的優化。本文最好發現,Focal loss對單階段準確率的提升有很大效果,但損失函數不局限於固定的形式,使用了高效的特征金字塔及anchor boxes的方法。RetinaNet基於ResNet-101-FPN,在COCO test數據集上實現了39.1的AP,同時,速度為5fps,如下右圖所示。

技術分享圖片

類別不平衡

單階段檢測方法中存在更多的類別不平衡問題,每張圖片大約產生10e4-10e5個候選位置,但包含目標物的只有少數。產生不平衡的原因如下:(1)大多數負樣本產生無用的學習信號對訓練沒有意義。(2)易於分類的負樣本很容易就占據訓練的主導地位,進而會使模型退化。一種常規的解決方法是類似於Hard example mining或者是更加復雜的采樣或者重新分配權重的方法。而本文設計的Focal loss不需要借助采樣手段也可以有效的解決類別不平衡的問題。

Robust Estimation

該方法主要針對損失函數進行設計,比如降低異常值產生的較大損失的權重進而控制Hard example對損失的貢獻度。而Focal loss降低簡單樣本對損失的貢獻,將關註點放在Hard example上。

Focal Loss

該損失用於單階段檢測場景,解決前景/背景(1:1000)的極端不平衡情況。常規的交叉熵損失如下。

技術分享圖片

該損失有一個特點就是大量易於分類的負樣本的產生的訓練信號最終會主導模型的訓練方向。

Balanced Cross Entropy

解決不平衡的一個方法是增加一個權重系數。本文定義帶有權重的交叉損失函數如下。

技術分享圖片

Focal Loss定義

上述的權重系數可以控制正負樣本的比例,但對於easy/hard example樣本作用不大,本文增加了一個調制系數。損失函數如下

技術分享圖片
當一個樣本被誤分類同時其概率特別小時,其調制系數近似為1,該損失函數不受影響。而當易分類樣本的Pt趨於1時,該調制系數降低,對損失函數影響較小。focusing 參數r平滑的調整easy樣本的衰減權重。本文實驗發現r為2時效果最好。本文實際使用的損失函數定義如下。

技術分享圖片

類別失調及模型初始化

對於二分類的輸出初始化相等的概率,這種情況下,類別失調及頻率較高的類別會主導total loss進而在早期的訓練過程會變的不穩定。因此,本文在訓練開始時引入模型對於稀少類別概率預測值的“先驗”概念。本文定義先驗為pi,模型預測少數類的概率值是很低的比如,0.01.值得註意的是先驗是在模型的初始化時變化的而不是損失函數上。

RetinaNet Detecor

該網絡由一個backbone及兩個任務明確的subnet組成,backbone由卷積網絡組成用於提取整張圖片的feature map,第一個subnet在backbone輸出上進行卷積分類操作,第二個subnet在其進行卷積邊界框回歸操作。結構圖如下

技術分享圖片

FPN backbone

本文使用FPN作為backbone,FPN通過自上而下的路徑及lateral 連接來構建特征,其對於單分辨率的輸入圖片具有更豐富,多尺寸的特征信息。FPN中金字塔的每一層都可以用於不同尺寸大小的目標檢測,並使用全卷積網絡進(FCN)行增強。本文利用FPN構建了特征金字塔,p3~p7,數字越大,該層的分辨率尺寸越小,特征金字塔的每層通道數為256,

Anchors

隨著層數p3~p7,anchor的大小由32x32變為512x512,在每一層anchor的比例大小為{1:2,1:1,2:1},在此基礎上增加了三個縮放比例{20,21/3,22/3},在每層共有九個anchors,相對於網絡的輸入覆蓋範圍由32-813個像素。

每個anchor都標記一個寬度為k(類別數)的one-hot向量的分類標記及一個四個向量的邊界框回歸目標。將anchor與ground truth IOU超過0.5的標記為前景,0~0.4的標記為背景。將IOU在0.4~0.5之間的anchor進行忽略。框回歸目標由每個anchor及assigned目標物框的偏移量計算得到,如果沒有assigned框則忽略。

分類分支

該分支在FPN的每一層上做類似於全卷積操作,預測每個空間位置上每個anchor的K個類別的概率值,其參數在FPN的所有層都進行共享操作。具體操作為,輸入某一層的特征,通道數為C,後街四個3x3xC的卷積層,每層都接ReLU,然後一個3x3xkXA的卷積,最後接sigmoid激活層,每個位置預測KA個binary predictions,實驗中大部分C設置為256,A設置為9。註意的是分類分支與邊界框分支的參數之間是獨立的,不進行共享。

邊界框回歸分支

與分類分支平行,本文增加了另一個小型的FCN網絡用於邊界框回歸。每個位置包含4A個線性輸出。在每個空間位置的A個anchor上,四個輸出用於預測每個anchor與ground truth box的相對偏移量。本文使用類別不確定的邊界框回歸,其參數量更少,但效果相同。分類分支與回歸分支結構相同,但二者參數相互獨立。

Inference and training

為了提速,本文將檢測器的閾值設置為0.05後,只對FPN每層中分數高的前1000個預測值進行decode box 預測。最後將所有層得到的結果進一步使用閾值0.5進行NMS處理完成最終的檢測。

Focal Loss

本文在分類分支中使用focal loss,將r(取值分為0.5~5)設置為2效果較好。訓練RetinaNet時超過100k個anchors,toatal focal loss由所有anchor的損失的和normalized assigned a ground truth box anchor的數量,原因時anchor中包含大量的easy negative 樣本。其權重a的值有一定的範圍,隨著r的增加其a的值不斷減小。

初始化

本文實驗了Resnet-50-FPN,ResNet-101-FPN兩種backbones。basenet restnet-50及resnet-101在ImageNet1k上進行預訓練。新添加的所有卷積層除了最後一層都按照bias為0,高斯分布(技術分享圖片)的權重進行初始化。分類分支的最後一層卷積按照技術分享圖片

初始化,pi代表開始訓練時每個anchor被標記為前景的概率先驗,本文都設置為.01。該方法有效的防止在訓練時的第一次叠代中大量背景anchors生成損失值。

優化

本文基於SGD使用8塊GPU進行同步訓練,每個batch設置為16.所有模型的初始學習率為0.01,叠代90k步。權重衰減為0.0001及動量大小設置為0.9,損失用的focal loss用於分類及smoth L1損失用於回歸,模型訓練用時10到35個小時。

實驗

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

References

[1] S. Bell, C. L. Zitnick, K. Bala, and R. Girshick. Insideoutside net: Detecting objects in context with skip pooling and recurrent neural networks. In CVPR, 2016. 6
[2] S. R. Bulo, G. Neuhold, and P. Kontschieder. Loss maxpooling for semantic image segmentation. In CVPR, 2017.3
[3] J. Dai, Y. Li, K. He, and J. Sun. R-FCN: Object detection via region-based fully convolutional networks. In NIPS, 2016. 1
[4] N. Dalal and B. Triggs. Histograms of oriented gradients for human detection. In CVPR, 2005. 2
[5] P. Doll´ar, Z. Tu, P. Perona, and S. Belongie. Integral channel features. In BMVC, 2009. 2, 3
[6] D. Erhan, C. Szegedy, A. Toshev, and D. Anguelov. Scalable object detection using deep neural networks. In CVPR, 2014.

論文閱讀筆記四十四:RetinaNet:Focal Loss for Dense Object Detection(CVPR2019)