1. 程式人生 > >[論文閱讀]:Focal Loss for dense Object Detection

[論文閱讀]:Focal Loss for dense Object Detection

在2D的影象檢測的任務中,一種有一個比較明顯的問題就是前後景數量上巨大的不平衡,背景一般遠遠多餘前景(也就是目標),這就導致一個問題,就是背景相關的梯度幾乎統治了梯度的傳播過程,本文提出的Focal Loss 就是試圖對損失函式的形態進行更改,從而達到平衡前後景相關的loss在梯度傳播中的程度。

Abstract

在 目標檢測的任務中,one-stage 的方法在規則、密集取樣下擁有更快更簡單的潛力,但是精度上目前還是略差於two-stage的方法。作者調查後發現,一個很重要的因素(central cause)就是由於foreground-background之間巨大的比例差異,因此作者針對這個問題,提出了Focal loss——一種基於交叉熵函式的改進的損失函式。同時為了驗證其有效性,作者設計了一個簡單的dense detector,稱為RetinaNet。該網路在精度方面已經超過了當時的two-stage方法。

Introduction

該部分覺得有個帖子寫的比較好,所以直接貼上過來了,已經註明出處。

一、為什麼單級結構的識別準確度低
作者認為單級結構準確度低是由類別失衡(class imbalance)引起的。在深入理解這個概念前我們先來強化下“類別”這個概念:計算Loss的bbox可以分為positive和negative兩類。當bbox(由anchor加上偏移量得到)與ground truth間的IOU大於上門限時(一般是0.5),會認為該bbox屬於positive example,如果IOU小於下門限就認為該bbox屬於negative example。在一張輸入image中,目標占的比例一般都遠小於背景佔的比例,所以兩類example中以negative為主,這引發了兩個問題:
1、negative example過多造成它的loss太大,以至於把positive的loss都淹沒掉了,不利於目標的收斂;
2、大多negative example不在前景和背景的過渡區域上,分類很明確(這種易分類的negative稱為easy negative),訓練時對應的背景類score會很大,換個角度看就是單個example的loss很小,反向計算時梯度小。梯度小造成easy negative example對引數的收斂作用很有限,我們更需要loss大的對引數收斂影響也更大的example,即hard positive/negative example。
這裡要注意的是前一點我們說了negative的loss很大,是因為negative的絕對數量多,所以總loss大;後一點說easy negative的loss小,是針對單個example而言。
Faster RCNN的兩級結構可以很好的規避上述兩個問題。具體來說它有兩大法寶:1、會根據前景score的高低過濾出最有可能是前景的example (1K~2K個),因為依據的是前景概率的高低,就能把大量背景概率高的easy negative給過濾掉,這就解決了前面的第2個問題;2、會根據IOU的大小來調整positive和negative example的比例,比如設定成1:3,這樣防止了negative過多的情況(同時防止了easy negative和hard negative),就解決了前面的第1個問題。所以Faster RCNN的準確率高。
OHEM是近年興起的另一種篩選example的方法,它通過對loss排序,選出loss最大的example來進行訓練,這樣就能保證訓練的區域都是hard example。這個方法有個缺陷,它把所有的easy example都去除掉了,造成easy positive example無法進一步提升訓練的精度。
圖1是hard positvie、hard negative、easy positive、easy negative四種example的示意圖,可以直觀的感受到easy negativa佔了大多數。
作者:張磊_0503
連結:

https://www.jianshu.com/p/204d9ad9507f
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。
在這裡插入圖片描述

2 Related Work

  • 該部分分別列舉了不同方法的目標檢測方法,分別為傳統方法、Two-stage方法以及one-stage方法。略。

3 Focal Loss

  • 上文已經提到,Focal Loss設計的初衷就是為了在one-stage方法中平衡前景和背景,在相信展開Focal Loss之前,先回顧一下傳統使用的交叉熵損失函式。(cross entropy loss:以下簡稱CE)。
  • CE詳解:
    • 在說交叉熵之前,不得不提logistic distribution。我們的最後一層的啟用函式一般用的是logitic regression,也就是 1
      1+ex\frac{1}{1+e^{x}}
      ;這個函式就是logistic distribution的概率函式,假設xx在原空間服從平均分佈,則經過啟用函式後,其結果呈現的分佈就是logistic distribution。
    • 對於二分類任務,考慮條件概率函式:
      • φ(xi)=P(y=1x)=11+ewx\varphi \left ( x_{i} \right )=P\left ( y=1 \right|\mathbf{x} )= \frac{1}{1+e^{\textbf{wx}}}
      • 1φ(xi)=P(y=0x)=111+ewx1-\varphi \left ( x_{i} \right )=P\left ( y=0 \right|\mathbf{x} )= 1-\frac{1}{1+e^{\textbf{wx}}}
    • 對既有樣本進行最大似然估計:w=i=0nφ(xi)yi(1φ(xi))1yiw=\prod_{i=0}^{n}\varphi \left ( x_{i} \right )^{y_{i}}\left(1-\varphi \left ( x_{i} \right )\right)^{1-y_{i}}
    • 取對數:log(w(x))=i=0n[yilogφ(xi))+(1yi)log(1φ(xi))]\log \left ( w\left ( x \right ) \right )=\sum_{i=0}^{n} \left [ y_{i}\log\varphi \left ( x_{i}) \right )+\left ( 1-y_{i} \right )\log\left ( 1-\varphi\left ( x_{i} \right ) \right )\right ]
    • 以上就是交叉熵的由來了,上面的對數似然函式呈現的形式與交叉熵是等價的,也就是交叉熵最小的時候,最大似然函式取得極大值。
    • 所以優化目標就變成了最小交叉熵。也就是論文中提到的形式。如下圖:在這裡插入圖片描述

3.1 Balanced Cross Entropy

  • 平衡損失函式最直觀的想法就是在正樣本損失和負樣本損失前面新增一個權重,即:
    • balanced loss function: CE(pt)=αlog(pt)CE\left ( p_{t} \right )=-\alpha \log(p_{t})

3.2 Focal Loss Definition

  • 3.1中提到的balanced CE通過給正負樣本分配不同的權重,從而達到了平衡前後景損失在傳遞時候的imbalance,但是有一個問題就是,該損失並沒有解決hard example和easy example的問題。為了解決這個問題就需要引入跟ptp_{t}相關的一個引數,當ptp_{t}越大的時候,讓其損失的比例稍微小一點(因為它易於區別,easy example);同理,當ptp_{t}越小的時候。那很顯然1pt1-p_{t}有這樣的性質,因為ptp_{t}的值閾為[0,1],但是如果單單隻用1pt1-p_{t}就陷入了引數不可調的情況,則對其取一個可調整的指數,也就是(1pt)γ\left( 1-p_{t} \right )^{\gamma},從而實現了hard example 和 easy example的平衡。也就是focal loss的最終形式。
  • Focal Loss:FL=αt(1pt)γlog(pt)FL=-\alpha_{t} \left( 1-p_{t} \right )^{\gamma}\log\left(p_{t} \right)
    • 簡單來說就是:通過αt\alpha_{t} 來控制正負樣本的imbalance,
    • 通過(1pt)γ\left( 1-p_{t} \right )^{\gamma}來調和easy example 和hard example的問題。
    • 作者實驗表明:αt<0.5\alpha_{t}<0.5γ=2\gamma =2的時候效果比較好(loss is scaled down by at most 4X)。

3.3 Class Imbalance and Model Initialization

在訓練初始階段因為positivie和negative的分類概率基本一致,會造成公式1起不到抑制easy example的作用,為了打破這種情況,作者對最後一級用於分類的卷積的bias(具體位置見圖2)作了下小修改,把它初始化成一個特殊的值b=-log((1-π)/π)。π在論文中取0.01,這樣做能在訓練初始階段提高positive的分類概率。
在這裡插入圖片描述

4 Experiment

  • 略。整體是有一定的效果提升的,包括個人實踐在其他的檢測網路裡

本文完