<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Focal Loss 論文詳解

          共 5502字,需瀏覽 12分鐘

           ·

          2021-08-06 01:47

          點擊下方AI算法與圖像處理”,一起進步!

          重磅干貨,第一時間送達

          Github:https://github.com/ccc013/AI_algorithm_notes



          論文:《Focal Loss for Dense Object Detection》

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

          代碼地址:

          • 官方 github:https://github.com/facebookresearch/detectron
          • tensorflow:https://github.com/tensorflow/models
          • https://github.com/fizyr/keras-retinanet
          • https://github.com/yhenon/pytorch-retinanet

          目前在目標檢測領(lǐng)域里二階段的方法精度是優(yōu)于一階段的,盡管一階段的檢測器處理的是更密集的樣本,應(yīng)該可以做到更快、更簡單,作者認為沒有實現(xiàn)這種期望的原因是在于正負樣本的極度不平衡(前景和背景),所以作者提出了一個新的 loss,稱為 Focal Loss,它通過修改標準的交叉熵函數(shù),比如可以降低對識別很好的樣本的權(quán)重,這樣它會專注于訓(xùn)練少量困難樣本,而不會被大量簡單的樣本所干擾。

          另外,就是基于 FPN 提出了一個新的檢測框架,稱為 RetinaNet,實驗表明它在精度上優(yōu)于當前最好的二階段檢測算法,速度上好過一階段的檢測算法。


          1. Introduction

          當前主流的目標檢測方法是分為兩階段 two-stage 和 一階段 one-stage:

          • 兩階段的做法是先在第一個階段生成了稀疏的候選 bbox,然后第二階段對這些 bbox 進行分類,判斷是目標物體還是背景,兩階段檢測算法也是當前精度最高的目標檢測算法
          • 一階段的檢測方法是直接處理大量的候選 bbox,檢測和分類同時完成,盡管速度很快,但是其精度相比于兩階段最好的算法還是有 10%-40%的差距;

          作者認為一階段檢測算法的主要問題在于沒有很好處理類別不平衡的問題:

          • 兩階段檢測算法在第一個階段同個如 RPN等方法生成候選 bbox 的時候,就會過濾掉大量的背景樣本,在第二階段進行分類的時候,采樣策略使用了如固定的前后景比例(1:3),或者在線困難樣本挖掘( online hard example mining ,OHEM)都可以保持一個合理的類別比例;
          • 一階段檢測算法雖然也采取了同樣的采樣策略,但是由于候選的 bbox 數(shù)量太多(超過 100k),這些策略會由于很多容易分類的背景樣本導(dǎo)致非常低效,當然這個也是目標檢測里的經(jīng)典問題,也有一些解決辦法,比如 boostrapping,或者困難樣本挖掘;
          • 類別不平衡問題在一階段和兩階段檢測算法中都存在,它會導(dǎo)致兩個問題:
            • 由于大量易分類的負樣本(背景)導(dǎo)致訓(xùn)練是低效的,因為這些樣本不能提供有效的信息;
            • 易區(qū)分的負樣本也會破壞模型的訓(xùn)練,導(dǎo)致模型的退化;

          作者希望結(jié)合一階段和二階段的優(yōu)點,即做到又快又精準,所以提出了一個新的 loss 函數(shù),稱為 Focal Loss,其作用是動態(tài)調(diào)整交叉熵函數(shù)的大小,設(shè)置的縮放因子會隨著樣本是否容易區(qū)分而變化,如下圖所示:

          直觀上來說,這個縮放因子會自動降低易區(qū)分樣本的權(quán)重,讓模型在訓(xùn)練的時候?qū)W⒂谟?xùn)練少量的困難樣本。

          為了驗證這個方法的有效性,作者使用 RPN 作為骨干網(wǎng)絡(luò),提出了一個一階段檢測框架,并成為 RetinaNet,其實驗結(jié)果如下圖所示,結(jié)果表明 RetinaNet 可以做到速度和精度之間的平衡,速度比二階段檢測算法更快,精度比一階段檢測算法更好。

          另外,作者強調(diào)了 RetinaNet 取得這樣的成果主要是依賴于 loss 的改進,在網(wǎng)絡(luò)結(jié)構(gòu)方面并沒有創(chuàng)新。

          2. Focal Loss

          Focal Loss 是為了解決一階段檢測算法中極度類別不平衡的情況(比如正負樣本比 1:1000)所設(shè)計的 loss 函數(shù),它是對標準的交叉熵函數(shù)的修改。

          首先,標準的交叉熵函數(shù)公式如下:

          其中 y 表示樣本的真實標簽,這里用二分類舉例,所以 y 的取值就是 1 或者 -1,而 p 是模型預(yù)測的概率,取值范圍是 [0,1],然后 是:

          在第一節(jié)Introduction的 Figure1 里,最上邊的藍色曲線就是表示交叉熵損失函數(shù)面對不同樣本的 loss,可以看到即便是非常容易區(qū)分的樣本,即 遠大于 0.5 的樣本,交叉熵計算得到的 loss 依然是非常的大,如果把大量的這種樣本的 loss 進行求和,會破壞少量的困難樣本提供的信息。

          2.1 Balanced Cross Entropy

          之前也有人提出了一個平衡的交叉熵函數(shù),如下所示:

          這里引入了一個權(quán)重因子 ,它和類別數(shù)量成反比,也就是類別數(shù)量越少的類別,其 loss 權(quán)重會越大。這也是本文方法的 baseline。

          不過這個 loss 函數(shù)的問題在于增加的權(quán)重因子只是區(qū)分了正負樣本,但是并不能區(qū)分容易分類和很難分類的樣本,因此本文是針對這點進行了改進,提出了 Focal Loss。

          2.2 Focal Loss

          Focal Loss 的計算公式如下:

          這里增加了一個超參數(shù) ,作者稱為聚焦參數(shù)(focusing parameter),在本文實驗中 的效果最好,而它為 0 的時候就是標準的交叉熵函數(shù)。

          對于 Focal loss,有兩個特點:

          1. 當有樣本被誤分類,并且 很小的時候,調(diào)節(jié)因子 是接近于 1,對于 loss 來說是影響不大,但隨著 趨向于 1,這個因子會逐漸趨向于 0,則對于分類很好的樣本的 loss 也會變小從而達到降低權(quán)重的效果;
          2. 聚焦參數(shù) 會平滑的調(diào)節(jié)易分類樣本調(diào)低權(quán)值的比例; 增大能增強調(diào)節(jié)因子的影響,實驗中表明了 是效果最好,直觀上來說,調(diào)節(jié)因子減少了易分類樣本的損失貢獻,拓寬了樣本接收到低損失的范圍。

          在實際應(yīng)用中,會結(jié)合平衡交叉熵,得到的 focal loss 如下所示,這樣既可以調(diào)整正負樣本的權(quán)重,又可以控制難易分類樣本的權(quán)重:

          實驗中表明這個 loss 可以比不加入 的 loss 提升一點精度。

          2.3 Class Imbalance and Model Initialization

          在二分類中,默認二分類的輸出概率都是相等的,但這種初始化會導(dǎo)致數(shù)量很多的類別的 loss 在整體 loss 中占據(jù)較大的比例,這會影響訓(xùn)練初期的穩(wěn)定性。

          對于這個問題,作者在初期訓(xùn)練中為少數(shù)類(即前景)的模型評估 引入了一個 prior 的概念,并用 表示它,然后將其設(shè)置為比較小的數(shù)值,實驗表明無論是使用交叉熵還是 focal loss,在面對嚴重的類別不平衡的問題時,這個做法都能提高訓(xùn)練的穩(wěn)定性。

          2.4 Class Imbalance and Two-stage Detectors

          兩階段的檢測算法一般都是使用標準的交叉熵函數(shù),很少使用平衡的交叉熵或者 focal loss,它們處理類別不平衡問題主要是依靠兩個機制:

          1. 兩階段的串聯(lián)方式;
          2. 有選擇的 mini-batch 的采樣方式

          在第一階段就會減少大量的候選 bbox,將數(shù)量降低到 1-2k,并且并非隨機刪除,而是可以刪除了大量的負樣本;在第二階段會采用有選擇的采樣方法來構(gòu)建 mini-batch,比如采用正負樣本比是 1:3 的比例,這個比例的作用等同于平衡的交叉熵中加入的 參數(shù)。


          3. RetinaNet Detector

          RetinaNet 的整體結(jié)構(gòu)如下圖所示:

          RetinaNet 是一個一階段檢測框架,它包含了一個骨干網(wǎng)絡(luò)以及兩個特定任務(wù)的子網(wǎng)絡(luò),骨干網(wǎng)絡(luò)是對輸入圖片計算其特征圖,然后兩個子網(wǎng)絡(luò)分別骨干網(wǎng)絡(luò)的輸出做分類和候選框回歸的工作。

          Feature Pyramid Network 骨干網(wǎng)絡(luò)

          RetinaNet 采用 FPN 作為骨干網(wǎng)絡(luò),F(xiàn)PN 的結(jié)構(gòu)如上圖的 a-b,這里是基于 ResNet 構(gòu)建的 FPN,它是一個自頂向下,帶有側(cè)面連接的卷積神經(jīng)網(wǎng)絡(luò),在輸入是單種分辨率的情況下,它可以得到多種尺度的特征。

          本文是構(gòu)建了一個 P3 到 P7的金字塔,其中 l 表示金字塔的級別, 的分辨率是輸入的分辨率的 ,每個級別的金字塔的通道數(shù)量都是 C = 256.

          Anchors

          本文采用了 translation-invariant anchor boxes,每個 anchor 在金字塔的 P3 到 P7分別擁有 的區(qū)域,并且在每個金字塔級別設(shè)置的高寬比是 {1:2, 1:1, 2:1} ,對應(yīng)的設(shè)置縮放比例是 {} ,最終在每個金字塔層上是產(chǎn)生了 A=9 個 anchors,并且能覆蓋對應(yīng)網(wǎng)絡(luò)輸入圖片上 32~813 像素的區(qū)域。

          每個 anchor 都是 K 個分類目標的 one-hot 向量(K 表示類別數(shù)量)和 4 個 box regression 的目標。作者設(shè)定 anchor 的方式是和真實標簽物體檢測框的 IoU(intersection-over-union)的閾值為 0.5,和背景的 IoU 是 [0, 0.4),而如果是在 [0.4,0.5),訓(xùn)練的時候?qū)⒈缓雎裕?/p>

          回歸檢測框(Box regression)目標是計算每個 anchor 和其分配的物體框的偏移量,如果沒有設(shè)定則是忽略。

          分類子網(wǎng)絡(luò)(Classification Subnet)

          分類子網(wǎng)絡(luò)的作用是預(yù)測在每個空間位置上,A 個 anchor 和 K 個類別物體出現(xiàn)的概率。這個子網(wǎng)絡(luò)是一個小型的 FCN,并且和 FPN 每層都連接,然后子網(wǎng)絡(luò)的參數(shù)是在所有金字塔層中都共享的。

          這個子網(wǎng)絡(luò)的設(shè)計比較簡單,給定某個金字塔層的通道數(shù)量是 C的輸入特征圖,然后會先通過 4 個卷積核為 ,數(shù)量是 C 的卷積層,并采用 ReLU 激活函數(shù),接著是一個卷積核同樣是 ,但是數(shù)量是 的卷積層,然后用 sigmoid 激活函數(shù)并對每個空間位置輸出 KA 個二值預(yù)測,在本文實驗中,C=256,A=9.

          這里對比 RPN 網(wǎng)絡(luò),本文采用的分類子網(wǎng)絡(luò)是層數(shù)更多,并且僅采用 的卷積核,同時并沒有和下面介紹的 box regression 子網(wǎng)絡(luò)共享參數(shù),這是因為作者發(fā)現(xiàn)更高層的設(shè)計決定會比特定值的超參數(shù)更加重要。

          回歸檢測框子網(wǎng)絡(luò)(Box Regression Subnet)

          跟分類子網(wǎng)絡(luò)是并行的關(guān)系,作者同樣采用一個小型的 FCN 網(wǎng)絡(luò),并且也是和FPN 每層相連接,目的是回歸每個 anchor box 對相鄰真實標簽物體的偏移量。

          在網(wǎng)絡(luò)設(shè)計方面和分類子網(wǎng)絡(luò)是類似的,不相同的是輸出的是4A 個線性輸出。對于每個空間位置上的 A 個 anchor,這 4 個輸出預(yù)測的是 anchor 和真實標簽檢測框的偏移量,另外和現(xiàn)在大部分工作不同的是,作者采用了一個 class-agnostic bounding box regressor,即可以用更少的參數(shù)但更加高效。

          分類子網(wǎng)絡(luò)和回歸檢測框子網(wǎng)絡(luò)是共享相同的網(wǎng)絡(luò)結(jié)構(gòu),但是分別采用不同的參數(shù)。

          4. 實驗

          實驗結(jié)果如下:

          a)在標準交叉熵 loss 基礎(chǔ)上增加了參數(shù) 的結(jié)果,其中 就是傳統(tǒng)的交叉熵,表格中可以看出在 0.75 的時候效果最好,AP 提升了 0.9;

          b)對比了不同 的實驗結(jié)果,隨著 的增加,AP提升比較明顯,另外當 的時候是效果最好的時候;

          c)對比了 anchor 的大小 scale 和長寬比 aspect ratio 對于效果的影響,最好的結(jié)果是分別選擇 2 和 3 的時候;

          d)和采用 OHEM 方法的對比,這里看到最好的 OHEM 效果是 AP=32.8,而 Focal Loss 是 AP=36,提升了 3.2,另外這里 OHEM1:3 表示通過 OHEM 得到的 minibatch 中正負樣本比是 1:3,但是這個做法并沒有提升 AP;

          e)對比了在不同網(wǎng)絡(luò)模型深度和輸入圖像大小下的AP 和速度。

          5. 結(jié)論

          本文作者認為一階段檢測算法不能在性能上超過二階段檢測算法的根本原因是類別的極度不平衡問題,為了解決這個問題,提出了一個 focal loss,它對標準的交叉熵 loss 進行修改從而可以實現(xiàn)讓網(wǎng)絡(luò)模型更專注學(xué)習(xí)困難的負樣本。本文的方法是簡單但高效的,并且設(shè)計了一個全卷積的一階段檢測框架來驗證其高效性,實驗結(jié)果也表明了其可以達到 state-of-art 的精度和速度。


          努力分享優(yōu)質(zhì)的計算機視覺相關(guān)內(nèi)容,歡迎關(guān)注:

          個人微信(如果沒有備注不拉群!
          請注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱



          下載1:何愷明頂會分享


          AI算法與圖像處理」公眾號后臺回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析


          下載2:終身受益的編程指南:Google編程風(fēng)格指南


          AI算法與圖像處理」公眾號后臺回復(fù):c++,即可下載。歷經(jīng)十年考驗,最權(quán)威的編程規(guī)范!



          下載3 CVPR2021

          AI算法與圖像處公眾號后臺回復(fù):CVPR,即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文

          點亮 ,告訴大家你也在看



          瀏覽 50
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美日韩一道本 | 国产欧美一区二区 | 黄片视频软件 | 黄色视频网站在线观看免费 | 免看一级a毛片一片成人不卡 |