日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Focal Loss 论文笔记

發(fā)布時(shí)間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Focal Loss 论文笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

論文:《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

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

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

聯(lián)系方式:

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

知乎專欄:機(jī)器學(xué)習(xí)與計(jì)算機(jī)視覺(jué),AI 論文筆記

微信公眾號(hào):AI 算法筆記

1. Introduction

當(dāng)前主流的目標(biāo)檢測(cè)方法是分為兩階段 two-stage 和 一階段 one-stage:

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

作者認(rèn)為一階段檢測(cè)算法的主要問(wèn)題在于沒(méi)有很好處理類別不平衡的問(wèn)題:

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

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

直觀上來(lái)說(shuō),這個(gè)縮放因子會(huì)自動(dòng)降低易區(qū)分樣本的權(quán)重,讓模型在訓(xùn)練的時(shí)候?qū)W⒂谟?xùn)練少量的困難樣本。

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

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

2. Focal Loss

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

首先,標(biāo)準(zhǔn)的交叉熵函數(shù)公式如下:
CE(p,y)=CE(pt)=?log(pt)CE(p,y)=CE(p_t)=-log(p_t) CE(p,y)=CE(pt?)=?log(pt?)
其中 y 表示樣本的真實(shí)標(biāo)簽,這里用二分類舉例,所以 y 的取值就是 1 或者 -1,而 p 是模型預(yù)測(cè)的概率,取值范圍是 [0,1],然后 ptp_tpt? 是:

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

2.1 Balanced Cross Entropy

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

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

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

2.2 Focal Loss

Focal Loss 的計(jì)算公式如下:

這里增加了一個(gè)超參數(shù) γ\gammaγ ,作者稱為聚焦參數(shù)(focusing parameter),在本文實(shí)驗(yàn)中 γ=2\gamma=2γ=2 的效果最好,而它為 0 的時(shí)候就是標(biāo)準(zhǔn)的交叉熵函數(shù)。

對(duì)于 Focal loss,有兩個(gè)特點(diǎn):

  • 當(dāng)有樣本被誤分類,并且 ptp_tpt? 很小的時(shí)候,調(diào)節(jié)因子 (1?pt)γ(1-p_t)^\gamma(1?pt?)γ 是接近于 1,對(duì)于 loss 來(lái)說(shuō)是影響不大,但隨著 ptp_tpt? 趨向于 1,這個(gè)因子會(huì)逐漸趨向于 0,則對(duì)于分類很好的樣本的 loss 也會(huì)變小從而達(dá)到降低權(quán)重的效果;
  • 聚焦參數(shù) γ\gammaγ 會(huì)平滑的調(diào)節(jié)易分類樣本調(diào)低權(quán)值的比例;γ\gammaγ 增大能增強(qiáng)調(diào)節(jié)因子的影響,實(shí)驗(yàn)中表明了γ=2\gamma =2γ=2 是效果最好,直觀上來(lái)說(shuō),調(diào)節(jié)因子減少了易分類樣本的損失貢獻(xiàn),拓寬了樣本接收到低損失的范圍。
  • 在實(shí)際應(yīng)用中,會(huì)結(jié)合平衡交叉熵,得到的 focal loss 如下所示,這樣既可以調(diào)整正負(fù)樣本的權(quán)重,又可以控制難易分類樣本的權(quán)重:

    實(shí)驗(yàn)中表明這個(gè) loss 可以比不加入 α\alphaα 的 loss 提升一點(diǎn)精度。

    2.3 Class Imbalance and Model Initialization

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

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

    2.4 Class Imbalance and Two-stage Detectors

    兩階段的檢測(cè)算法一般都是使用標(biāo)準(zhǔn)的交叉熵函數(shù),很少使用平衡的交叉熵或者 focal loss,它們處理類別不平衡問(wèn)題主要是依靠?jī)蓚€(gè)機(jī)制:

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


    3. RetinaNet Detector

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

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

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

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

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

    Anchors

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

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

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

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

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

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

    這里對(duì)比 RPN 網(wǎng)絡(luò),本文采用的分類子網(wǎng)絡(luò)是層數(shù)更多,并且僅采用 3×33\times 33×3 的卷積核,同時(shí)并沒(méi)有和下面介紹的 box regression 子網(wǎng)絡(luò)共享參數(shù),這是因?yàn)樽髡甙l(fā)現(xiàn)更高層的設(shè)計(jì)決定會(huì)比特定值的超參數(shù)更加重要。

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

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

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

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

    4. 實(shí)驗(yàn)

    實(shí)驗(yàn)結(jié)果如下:

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

    b)對(duì)比了不同 γ\gammaγα\alphaα 的實(shí)驗(yàn)結(jié)果,隨著 γ\gammaγ 的增加,AP提升比較明顯,另外當(dāng) γ=2\gamma =2γ=2 的時(shí)候是效果最好的時(shí)候;

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

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

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

    5. 結(jié)論

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

    總結(jié)

    以上是生活随笔為你收集整理的Focal Loss 论文笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。