RetinaNet

titile Focal Loss for Dense Object Detection
url https://arxiv.org/pdf/1708.02002.pdf
動機 one-stage方法,速度快但不如two-stage精度高。分析原因:正負樣本不均衡。
內(nèi)容 提出Focal Loss:
改進標準交叉熵損失,hard examples對損失的貢獻變大。
RetinaNet: based on a ResNet-101-FPN backbone, achieves a COCO test-dev AP of 39.1 while running at 5 fps。
class imbalance:
(1) negative example過多造成它的loss太大,positive的loss淹沒,不利于收斂.
(2) easy negative訓練時loss很小,反向計算時梯度小,對參數(shù)的收斂作用有限。
Focal Loss Definition:
(1) 平衡正負樣本:
(2) easy/hard examples平衡(γ = 2):
(2) 最終公式(α=0.25,γ=2效果最好):
計算p時使用sigmoid可以有更好的數(shù)值穩(wěn)定性。
Class Imbalance and Model Initialization:
二分類模型默認y = ?1 或 1有相同的概率。Class Imbalance初始化會導致訓練初始階段不穩(wěn)定。提出prior概念,用π表示,用它去尋找模型中少見的類別。這個改變在類別不均衡時對于模型訓練的穩(wěn)定性有提升,不管是使用交叉熵還是focal loss損失函數(shù)。
Class Imbalance and Two-stage Detectors:(1)two-stage cascade(2)biased minibatch sampling

RetinaNet Detector:
Feature Pyramid Network Backbone:
FPN 作為 Backbone。它在ResNet網(wǎng)絡上增加了top-down(自頂向下)通路和lateral(側(cè)向連接)通路,從圖片的單一分辨率構(gòu)建豐富的、多尺度的特征金字塔。金字塔的每一層特征用來檢測不同尺寸的目標。
本文FPN由P3-P7構(gòu)成(Pl 層的分辨率縮小到輸入圖像的2l),P3-P5是由ResNet的C3-C5計算,P6是由C5使用stride=2的3X3卷積得到,P7是由P6經(jīng)過stride=2的3x3卷積得到,特征金字塔所有層的Channel=256。與原始的FPN不同之處在于:(1)FPN沒有使用P2層;(2)P6是由stride=2的卷積得到不是降采樣;(3)引入P7層提升對大尺寸目標的檢測效果。
需要強調(diào)的是使用FPN作為主干網(wǎng)的原因是,實驗發(fā)現(xiàn)只使用ResNet層,最終AP值較低。

Anchors:
類似RPN具有平移不變性的anchor boxes。從P3到P7層的anchors的面積從32*32依次增加到512*512。每層anchors長寬比{1:2, 1:1, 2:1}。每層增加尺寸{2^0, 2^{1/3}, 2^{2/3}};這樣每層有9個anchors,通過不同層覆蓋了輸入圖像 32~813 像素區(qū)間。
每個Anchor會有長度為K(class)的one-hot分類目標和4-vector的box回歸目標。與RPN比修改如下:
(1) anchor內(nèi)部包含目標的判斷仍然是與GT的IOU,IOU的閾值設置為0.5(RPN是0.7)IOU大于0.5,anchors和GT關聯(lián);IOU在[0, 0.4)作為背景。
(2) 每個anchor最多關聯(lián)一個GT;K(class)的one-hot中關聯(lián)的類別為1,其它為0。
(3) 邊框回歸就是計算anchor到關聯(lián)的GT之間的偏移。

Classification Subnet:
連接在FPN每層的FCN,參數(shù)共享。Feature Map,使用4個3×3的卷積層,每個卷積層接一個ReLU層,然后是channel=KA(K是類別數(shù),A是anchor數(shù))的3×3卷積層,最后使用sigmoid激活函數(shù)。
與RPN相比,網(wǎng)絡更深,只使用了3×3卷積;不和邊框回歸子網(wǎng)絡共享參數(shù)。

Box Regression Subnet:
結(jié)構(gòu)同上,最后一層channel=4A。

Inference and Training:
Inference:為了提高速度,只對FPN每層部分predictions處理。FPN的每個特征層,首先使用0.05的閾值篩選出是前景的object,最多選取前1k個predictions進行后續(xù)處理。融合各層的predictions,再使用NMS(閾值0.5)去掉重疊box。

Focal Loss: γ = 2效果最好,魯棒區(qū)間是γ ∈ [0.5, 5]。訓練RetinaNet,損失函數(shù)計算輸入圖所有~100k個anchors,而RPN或(OHEM,SSD)在每個minibatch只選擇很少的anchors(如:256)。
大部分anchors是easy negatives,F(xiàn)L下?lián)p失值非常小。α與γ值互相影響,通常α隨著γ的增大而輕微減少(γ = 2, α = 0.25效果最好)。

Initialization:
(1) 使用ResNet-50-FPN和ResNet-101-FPN backbone。
(2) 基礎的ResNet-50和ResNet-101在ImageNet1k數(shù)據(jù)集上預訓練。
(3) 所有新增的卷積層(除了子網(wǎng)絡的最后一層)初始化權(quán)重為 σ = 0.01的高斯分布,偏置為0。
(4) classification subnet最后一層偏置為? log((1 ? π)/π),π為每個anchor在開始訓練時應該被標記為前景的置信度,實驗中使用π = 0.01。背景遠多于前景,所以以0.01的概率是前景。
Optimization:
(1) 8GPU、SGD, 每個minibatch 16張圖片
(2) 訓練90k個iterations, initial learning rate 0.01,在60k和80k個iterations學習率減小10倍
(3) data augmentation只使用水平翻轉(zhuǎn)
(4) Weight decay 0.0001,momentum 0.9
(5) box regression使用L1損失函數(shù)
(6) 模型訓練時間在10~35小時之間(Table 1.e)
實驗 Training Dense Detection:
Network Initialization:
Balanced Cross Entropy:Table 1.a(α = .75 gives a gain of 0.9 points AP)
Focal Loss:Table 1.b
(1) γ = 2 時FL可以提升AP值2.9。
(2) 最佳的α值區(qū)間是[0.25,0.75]
(3) 較小的α值與較大的γ搭配
Analysis of the Focal Loss:Figure 4
在大量隨機圖片中采用約10^7個負樣本和10^5個正樣本,計算FL值并歸一化。對歸一化的FL值排序并分別畫出正負樣本的累積分布函數(shù)圖。
(1) 20%的 hardest positive samples貢獻了約一半的損失值,γ增加,20%的貢獻度更加明顯,但影響不是很大。
(2) γ對負樣本的影響完全不同,γ = 0時CDFs與正樣本類似,γ增加,迅速的聚焦于 hard negative examples,γ=2時,大量的easy negatives僅貢獻少量損失。
Online Hard Example Mining (OHEM):
OHEM中所有樣本計算損失值,使用NMS過濾,最后在minibatch選擇損失值最大的一些樣本。OHEM關注誤分類樣本,不同于FL,OHEM完全忽略的easy examples。如Table 1d所示,最好的OHEM與FL有3.2點AP差距。
Hinge Loss:
之前嘗試對p_t使用Hinge Loss;對p_t值大于某個閾值的樣本,損失函數(shù)置為零。但訓練過程不穩(wěn)定,且達不到有價值的效果。

Model Architecture Design:
Anchor Density:
one-stage的anchor密度多少才能覆蓋任意圖像boxes。Two-stage通過Region Pooling(ROI Pooling)可以對邊框的任何位置、尺寸、長寬比歸類。相比之下,one-stage 使用一個固定的采樣網(wǎng)格,常用的方法是在每個空間位置使用多個anchors來覆蓋不同的尺寸和長寬比邊框。本文FPN每一層的每個空間位置使用不同個數(shù)的尺寸和長寬比anchors。在ResNet-50從使用1個方形anchor到12個anchors(尺寸為2^{k/4} , k ≤ 3,長寬比為 [0.5, 1, 2],見Table 1c)。結(jié)論:只使用1個anchor情況下AP就有30.3;當使用3中尺寸和3中長寬比時可以到達34.0。再增加6~9個anchors沒有更多的提升。
Speed versus Accuracy:
(1) 更大的backbone有更好的準確率,但速度更慢,輸入圖像的尺寸也是如此。見Table 1e。
(2) Figure 2,RetinaNet和其它方法在速度/精度比較,RetinaNet 使用FL超過所有的方法,打破低精度的限制。ResNet-101-FPN在600像素尺寸時的精確度超過ResNet101-FPN Faster R-CNN,同時檢測時間為122ms,F(xiàn)aster R-CNN為172ms。
(3) 追求速度需特殊網(wǎng)絡設計如Yolo 9000。

Comparison to State of the Art:
思考
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容