本文主要用于介紹各路大神(包括rbg, kaiming he等)于2017年提出的適用于目標(biāo)領(lǐng)域的一種新的損失函數(shù)。本筆記主要為方便初學(xué)者快速入門僚匆,以及自我回顧微渠。
論文鏈接:https://arxiv.org/abs/1708.02002
github主頁:https://github.com/facebookresearch/Detectron
rbg大神個(gè)人主頁:http://www.rossgirshick.info/#girshick2014rcnn
基本目錄如下:
- 摘要
- 核心思想
- 總結(jié)
------------------第一菇 - 摘要------------------
1.1 論文摘要
目前最準(zhǔn)確的目標(biāo)檢測(cè)模型就是以兩階段的R-CNN系列為代表的。相比之下咧擂,單階段的目標(biāo)檢測(cè)模型雖然在準(zhǔn)確率上依然落后于兩階段的模型逞盆,但是其簡易和速度快的特性毫無疑問具有巨大的潛力。在這篇文章中松申,我們就深入調(diào)研為什么單階段的模型其準(zhǔn)確率會(huì)不甚理想云芦。在調(diào)研過程中,我們發(fā)現(xiàn)最主要的一個(gè)問題就是在訓(xùn)練過程中的正負(fù)樣本(背景和真實(shí)目標(biāo))不均勻贸桶。因此舅逸,我們?cè)O(shè)計(jì)了一個(gè)新的損失函數(shù),來減少那些易于分類的樣本帶來的損失皇筛。我們新的Focal Loss損失函數(shù)重點(diǎn)關(guān)注那些難于被訓(xùn)練的(hard examples)琉历,并且盡量避免被那些負(fù)樣本所帶偏。為了驗(yàn)證我們模型的有效性水醋,我們還重新設(shè)計(jì)了一個(gè)新的檢測(cè)器旗笔,命名為RetinaNet,我們的實(shí)驗(yàn)表明离例,運(yùn)用了新的損失函數(shù)以后换团,我們的RetinaNet在速度上已經(jīng)能夠媲美那些單階段模型悉稠,同時(shí)在準(zhǔn)確率上能夠壓制現(xiàn)存所有的兩階段模型(存疑)宫蛆。
------------------第二菇 - 核心思想------------------
2.1 Focal Loss損失函數(shù)解釋
既然本文把單階段的模型不如多階段的主要?dú)w因于正負(fù)樣本不均衡這件事情,那我們就直接列出原文的觀點(diǎn)。作者認(rèn)為耀盗,正負(fù)樣本不均衡將會(huì)導(dǎo)致想虎,
1)training is inefficient as most locations are easy negatives that contribute no useful learning signal
2)en masse, the easy negatives can overwhelm training and lead to degenerate models
還是拿目標(biāo)檢測(cè)的場景來理解,單階段的目標(biāo)檢測(cè)器通常會(huì)在第一階段產(chǎn)生高達(dá)100k的候選目標(biāo)叛拷,其中只有極少數(shù)是正樣本舌厨,因此該場景就是一個(gè)典型的正負(fù)樣本不平衡的問題(如下圖所示),然后忿薇,正樣本和負(fù)樣本又都各自有難易之分裙椭,即有些正樣本很容易區(qū)分,有些又很難區(qū)分署浩,因此揉燃,正負(fù)樣本又可以分為如下四類,
(注:如果有不明白的弊攘,結(jié)合具體的網(wǎng)上盜的一張示意圖明白了【1】)
弄清楚了數(shù)據(jù)分布以后抢腐,我們?cè)賮砜磽p失函數(shù)。我們最常用的在計(jì)算分類的時(shí)候常用的損失就是交叉熵?fù)p失(以二分類為例)襟交,
其中就是模型輸出的概率(y=1)迈倍,為了方便表述,通常定義婿着,
此時(shí)授瘦,
然后,為了解決正負(fù)樣本不平衡的問題竟宋,很自然的我們都會(huì)添加一個(gè)提完,該參數(shù)通常取決于正負(fù)樣本的比例,
當(dāng)然丘侠,只是平衡了正負(fù)樣本對(duì)于最終損失的貢獻(xiàn)度徒欣,但對(duì)難易不平衡的事情完全沒有幫助。事實(shí)上蜗字,如上述第二條理由所述打肝,在目標(biāo)檢測(cè)的任務(wù)中,存在著大量的易分樣本挪捕,雖然單個(gè)來看每一個(gè)易分樣本(置信度很高的樣本)帶來的損失很低粗梭,但是如果總的易分樣本數(shù)量過多的話,積少成多级零,也會(huì)引領(lǐng)總的損失走向錯(cuò)誤的方向断医。因此,本文作者也認(rèn)為,模型應(yīng)該重點(diǎn)關(guān)注那些難分的樣本(hard examples)鉴嗤,于是據(jù)此理論就提出了一個(gè)新的損失計(jì)算方法斩启,
大家仔細(xì)研究一下這個(gè)公式就會(huì)發(fā)現(xiàn),
1)當(dāng)樣本被錯(cuò)分的時(shí)候醉锅,通常是會(huì)比較小的兔簇,因此我們新加的權(quán)值項(xiàng)
也是接近于1的,意思就是該項(xiàng)損失應(yīng)該都有貢獻(xiàn)硬耍;
2)而當(dāng)樣本是正確分類的時(shí)候垄琐,就會(huì)相對(duì)比較大,權(quán)值項(xiàng)也就對(duì)應(yīng)變小了经柴,意思就是該項(xiàng)損失的貢獻(xiàn)是很少的此虑;
因此,最終的Facal Loss就是結(jié)合了上述的2個(gè)點(diǎn)提出的口锭,
這里也貼一張?jiān)撐闹械膱D朦前,作者發(fā)現(xiàn)的時(shí)候效果最佳~
2.2 RetinaNet網(wǎng)絡(luò)介紹
其實(shí)整一套網(wǎng)絡(luò)架構(gòu),跟RPN網(wǎng)絡(luò)是比較像的鹃操,這里直接貼一張?jiān)撐闹械木W(wǎng)絡(luò)架構(gòu)圖韭寸,
這里簡單提幾個(gè)關(guān)鍵的變化點(diǎn),
1)其基礎(chǔ)提取圖片特征的模型采用的是ResNet荆隘,并且結(jié)合了FPN網(wǎng)絡(luò)恩伺,用以構(gòu)建不同層級(jí)對(duì)應(yīng)的特征圖,因此其基本的架構(gòu)(backbone)就是ResNet + FPN的組合椰拒。
2)對(duì)應(yīng)每一層級(jí)提出的特征晶渠,都會(huì)輸入到2個(gè)結(jié)構(gòu)一摸一樣的子網(wǎng)絡(luò)中(subnetworks),分別用于分類和回歸燃观!倆個(gè)子網(wǎng)絡(luò)的架構(gòu)是一樣的褒脯,但是參數(shù)是不一樣的(sharing a common structure, use separate parameters)。
3)Anchors的設(shè)計(jì)機(jī)制跟RPN中的是相似的缆毁,只不過對(duì)應(yīng)到FPN中番川,每一層級(jí)特征圖對(duì)應(yīng)的Anchor大小是不一樣的。每一個(gè)層級(jí)對(duì)應(yīng)設(shè)置的Anchor比例為脊框,每一種比例對(duì)應(yīng)3種大小尺度
颁督,因此總的anchors數(shù)為9。
這里貼一張具體的實(shí)驗(yàn)結(jié)果圖浇雹,方便以后查看(具體實(shí)驗(yàn)過程不再闡述)沉御,
當(dāng)然作者本文的結(jié)論肯定就是,證明了這種Focal Loss設(shè)計(jì)的有效性了~
------------------第三菇 - 總結(jié)------------------
3.1 總結(jié)
到這里昭灵,整篇論文的核心思想已經(jīng)說清楚了吠裆。本論文主要是提出了一個(gè)新的對(duì)于樣本不均衡問題的損失函數(shù)的設(shè)計(jì)方法聂儒,并實(shí)驗(yàn)證明其可行性,為后續(xù)發(fā)展奠定了基礎(chǔ)硫痰。
簡單總結(jié)一下本文就是先羅列了一下該論文的摘要,再具體介紹了一下本文作者的思路窜护,也簡單表述了一下效斑,自己對(duì)Focal Loss的理解。希望大家讀完本文后能進(jìn)一步加深對(duì)該論文的理解柱徙。有說的不對(duì)的地方也請(qǐng)大家指出缓屠,多多交流,大家一起進(jìn)步~??
參考文獻(xiàn):
【1】https://zhuanlan.zhihu.com/p/80594704