論文閱讀|Focal loss

原文標題:Focal Loss for Dense Object Detection網絡

概要

目標檢測主要有兩種主流框架,一級檢測器(one-stage)和二級檢測器(two-stage),一級檢測器,結構簡單,速度快,可是準確率卻遠遠比不上二級檢測器。做者發現主要緣由在於前景和背景這兩個類別在樣本數量上存在很大的不平衡。做者提出瞭解決這種不平衡的方法,改進了交叉熵損失,使其對容易分類的樣本產生抑制做用,使得損失集中在數量較少的難分類樣本上。同時,做者提出了著名的RetinaNet,這個網絡不只速度快,並且精度不比二級檢測器低,是個一出色的目標檢測網絡。框架

focal loss

通常來說,若是對一個樣本進行分類,這個樣本分類很容易,好比說機率爲98%,它的損失相應來說也會很小。可是有一種狀況,若是樣本中存在極大的不平衡,這個容易分類的樣本數量佔很大的比例,那麼它所產生的損失也會佔大部分比例,就會使得難分類的樣本佔的損失比例較少,使得模型難以訓練。
做者由此提出了focal loss,來解決樣本不平衡的問題。
$ FL(p_t)=-(1-p_t)^rlog(p_t) $編碼

RetinaNet 網絡結構

retinaNet 是一個簡單,一致的網絡,它有一個主幹網絡(backbone)以及兩個具備特殊任務的子網絡。主幹網絡用來提取特徵,有好多現成的,能夠直接用。第一個子網絡執行分類任務,第二個字網絡執行回顧任務。
retinanetspa

1.backbone

使用了特徵金字塔(FPN)做爲backbone,它能夠提取不一樣尺度的特徵。金字塔的每一層均可以用來檢測物體,小特徵能夠檢測大物體,大特徵能夠檢測小物體。
將FPN創建在resnet的基礎上,構成了從P3到P7的金字塔,(\(P_l\)比輸入的圖片尺寸小\(2^l\)倍)。全部的金字塔層,都有256個通道。blog

2.Anchors

  • 使用具備平移不變特性的Anchors。它們的大小從\(32^2\)\(512^2\),對應P3到P7。Anchors使用3種長寬比,{1:2,1:1,2:1},使用3種大小比例{\(2^0,2^{1/3},2^{2/3}\)}.這樣的設置能夠提升AP。每一個位置中anchor 的個數A= 3X3=9。
  • 每一個Anchor都會分配一個長度爲K的one-hot編碼,K是類別的數量,包含背景類。而且分配一個長度爲4的向量,表明框子的大小和定位。
  • 設置前景是IoU大於0.5的框,背景是IoU小於0.4的框,其餘的忽略掉。每一個Anchor都有一個one-hot編碼,對應類別爲1,其餘爲0.圖片

    3.分類子網絡

    這是一個小的全卷積神經網絡,每一個空間位置都會產生KA個預測,K是類別數,A是Anchor個數(9)。
    注意:只有一個分類子網絡,金字塔的全部層都共享這一個網絡中的參數。步驟以下:從金字塔中提取出C(256)通道的特徵,而後子網絡有4個卷積層,每一個卷積層都使用3X3的卷積核.最後在跟着一個(KA)通道的卷積層。backbone

    4.迴歸子網絡

    這也是一個全卷積神經網絡,與分類子網絡並行存在着,它的任務是對預測框與距離最近的標註框(真實值,若是有的話)進行迴歸。它在每一個空間位置有4A個預測。與其餘方式不一樣,這種迴歸方式對於分類,是獨立的,不可知的。這使用了更少的參數,可是一樣有效。io

    推斷與訓練

    推斷

    爲了提升速度,把閾值設置爲0.05,最多使用前1000個最高分的迴歸框預測。最後融合全部層級的預測結果,使用非極大值抑制,閾值爲0.5.class

    focal loss

    r=2的時候效果好,focal loss 將用在每張圖片的10萬個anchors上,也就是說,focal loss是這10 萬個anchor(通過歸一化)產生的損失的和。參數a也有一個穩定的範圍。這兩個參數成反比關係。基礎

    初始化

    除了最後一個卷積層,全部的卷積層都用b=0,高斯權重0.01.對於最後一個卷積層,b的設置有所不一樣,這是爲了不在訓練開始的時候,出現不穩定現象

    實驗結果

    在這裏插入圖片描述

相關文章
相關標籤/搜索