【轉(zhuǎn)載】物體檢測(cè)中的困難樣本挖掘(Online Hard Sample Mining)

原文鏈接:https://blog.csdn.net/u010165147/article/details/97105166

一、分類與檢測(cè)

分類和檢測(cè)是計(jì)算機(jī)視覺(jué)里面兩個(gè)非常重要的任務(wù)滨砍,雖然兩個(gè)任務(wù)的目標(biāo)并不完全相同汤锨,但是本質(zhì)上檢測(cè)是在分類問(wèn)題上的一次推廣壤巷,即檢測(cè)是在整個(gè)個(gè)圖像上做的局部分類并且標(biāo)記該局部分類的位置贯钩,那么可以說(shuō):檢測(cè)=搜索+分類选浑,所以某種意義上來(lái)說(shuō)檢測(cè)可以歸約為分類問(wèn)題[4]

現(xiàn)在的因?yàn)樯疃染W(wǎng)絡(luò)(尤其是CNN)的流行,很多重要的物體檢測(cè)算法都是基于CNN顿仇,如YOLO淘正,SSD摆马,F(xiàn)aster R-CNN等,這些算法某種程度上是利用了CNN的局部分類特性鸿吆,所以當(dāng)我們?nèi)タ催@些算法的時(shí)候囤采,發(fā)現(xiàn)和傳統(tǒng)的物體檢測(cè)不同,檢測(cè)里面好像少了搜索惩淳,檢測(cè)變得更像檢測(cè)了蕉毯,但是實(shí)際上正是CNN的局部分類特性或者權(quán)重共享讓我們可以直接在格點(diǎn)上獲得物體的坐標(biāo),CNN的設(shè)計(jì)非常巧妙黎泣,這個(gè)問(wèn)題會(huì)在以后的博客里詳細(xì)探究

二恕刘、困難樣本的產(chǎn)生原因

閉集與開(kāi)集分類問(wèn)題

閉集分類問(wèn)題(closed-set problem)缤谎,即測(cè)試和訓(xùn)練的每個(gè)類別都有具體的標(biāo)簽抒倚,不包含未知的類別(unknown category or unseen category); 如著名的MNIST和ImageNet數(shù)據(jù)集,里面包含的每個(gè)類別為確定的坷澡。以MNIST(字符分類)為例托呕,里面包含了0~9的字符類別,測(cè)試時(shí)也是0~9的類別频敛,并不包含如字母A~Z等的未知類別项郊,閉集分類問(wèn)題的目的即:正確劃分這10個(gè)類別

開(kāi)集分類問(wèn)題(open-set problem)不僅僅包含0~9的字符類別,還包含其他如A~Z等等的未知類別斟赚,但是這些未知的類別并沒(méi)有標(biāo)簽着降,分類器無(wú)法知道這些未知類別里面圖像的具體類別,如:是否是A拗军,這些許許多多的不同類別圖像共同構(gòu)成了一個(gè)類別:未知類別任洞,在檢測(cè)里面我們叫做背景類別(background),而開(kāi)集分類問(wèn)題的目的即是:正確劃分這10個(gè)類別且正確排除非數(shù)字類別[5-7]发侵,關(guān)于開(kāi)放環(huán)境下的分類問(wèn)題會(huì)在后續(xù)的文章中作全面的總結(jié)

所以對(duì)于物體檢測(cè)問(wèn)題而言交掏,檢測(cè)器面對(duì)的是整個(gè)世界的物體,這些物體里面只有非常少的被標(biāo)記了具體類別刃鳄,大量的物體其實(shí)并沒(méi)有類別信息盅弛,甚至根本不知道如何標(biāo)記他的類別,所以面對(duì)開(kāi)集問(wèn)題叔锐,我們要求檢測(cè)(分類)器要有非常好的排他能力或排除背景類別能力挪鹏,那么訓(xùn)練數(shù)據(jù)將會(huì)非常重要,為了有這樣的能力我們需要切割下大量的背景作為負(fù)樣本(negative samples)來(lái)訓(xùn)練愉烙,但是這些背景樣本是否足夠了讨盒?不管加了多少背景數(shù)據(jù),目前都無(wú)法從理論上回答這個(gè)問(wèn)題:背景是否足夠齿梁。 而事實(shí)上不管如果加背景數(shù)據(jù)訓(xùn)練催植,模型總能遇到不能正確分類或很難分類的背景樣本(false positive) 肮蛹,這個(gè)就是我們常說(shuō)的困難負(fù)樣本(hard negative samples) 與之相反的是 hard positive samples,統(tǒng)稱為困難樣本(hard samples)

如下圖是一個(gè)關(guān)于人臉檢測(cè)中hard negative samples的舉例:

三创南、困難樣本挖掘方法

TopK Loss

即在訓(xùn)練時(shí)選擇前K個(gè)loss較大的樣本進(jìn)行back propagate(bp)伦忠,而loss較小的樣本(easy samples)則認(rèn)為分類正確不用bp(loss較小可認(rèn)為學(xué)會(huì)了,既然學(xué)會(huì)了就沒(méi)有必要再學(xué)稿辙,也就不需要bp了)昆码,這里的前K可以是一個(gè)百分比,即前K%的hard樣本邻储,如70%赋咽,這個(gè)是MTCNN OHSM 采用的方法[1],注意K不能太大否則不能達(dá)到hard sample mining的作用吨娜,從本人的訓(xùn)練測(cè)試中脓匿,不用TopK loss會(huì)出現(xiàn)很多很難解決的誤檢問(wèn)題; 講道理人腦也類似,傾向于學(xué)習(xí)那些不會(huì)的問(wèn)題(or novel things)宦赠,對(duì)于容易解決且已經(jīng)正確的問(wèn)題不再去學(xué)習(xí)陪毡,也就是我們常說(shuō)的有效信息變少了; 對(duì)模型而言如果全部使用分錯(cuò)的樣本loss去bp容易按下葫蘆起了瓢,topk 能有效避免這個(gè)問(wèn)題

import torch

import torch.nn as nn

ce_loss=nn.CrossEntropyLoss(reduce=False)

def topK_loss(gt_label, pred_label):

? ? loss_wise = ce_loss(pred_label, gt_label)

? ? loss_sorted=loss_wise/loss_wise.sum()

? ? loss_sorted=loss_sorted.sort(descending=True)

? ? ratio=0.0

? ? break_point=0

? ? for i,v in enumerate(loss_sorted[0]):

? ? ? ? break_point=i

? ? ? ? if ratio>=0.7:

? ? ? ? ? ? break

? ? ? ? ratio+=v.data.numpy()

? ? need_bp=loss_sorted[1][:break_point]

? ? loss_topk=loss_wise[need_bp].mean()



Focal Loss

Focal Loss其實(shí)就是gamma變換的loss化勾扭,gamma變換經(jīng)常被用于圖像增強(qiáng)毡琉,所以focal loss的作用也顯而易見(jiàn),對(duì)于分錯(cuò)的樣本增強(qiáng)其權(quán)重妙色,對(duì)于分對(duì)的樣本則減弱其權(quán)重桅滋,增強(qiáng)或衰減程度由gamma控制,文章中使用的γ=2\gamma=2γ=2身辨,權(quán)重相當(dāng)于平方變化丐谋,那么Focal Loss的主要目的是控制easy samples的權(quán)重,相對(duì)來(lái)說(shuō)Focal Loss比TopK Loss更加平滑[3]栅表,測(cè)試結(jié)果上Focal Loss也更好一些笋鄙,當(dāng)然差距其實(shí)并不是特別大

公式:

FL(pt)=?(1?pt)γlog(pt)FL(p_t)=?(1 ? p_t )^{\gamma} log(p_t )FL(p


————————————————

版權(quán)聲明:本文為CSDN博主「_pinnacle_」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議怪瓶,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明萧落。

原文鏈接:https://blog.csdn.net/u010165147/article/details/97105166

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市洗贰,隨后出現(xiàn)的幾起案子找岖,更是在濱河造成了極大的恐慌,老刑警劉巖敛滋,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件许布,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡绎晃,警方通過(guò)查閱死者的電腦和手機(jī)蜜唾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)杂曲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人袁余,你說(shuō)我怎么就攤上這事擎勘。” “怎么了颖榜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵棚饵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我掩完,道長(zhǎng)噪漾,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任且蓬,我火速辦了婚禮欣硼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缅疟。我一直安慰自己分别,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布存淫。 她就那樣靜靜地躺著,像睡著了一般沼填。 火紅的嫁衣襯著肌膚如雪桅咆。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天坞笙,我揣著相機(jī)與錄音岩饼,去河邊找鬼。 笑死薛夜,一個(gè)胖子當(dāng)著我的面吹牛籍茧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播梯澜,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼寞冯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了晚伙?” 一聲冷哼從身側(cè)響起吮龄,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咆疗,沒(méi)想到半個(gè)月后漓帚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡午磁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年尝抖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毡们。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昧辽,死狀恐怖漏隐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奴迅,我是刑警寧澤青责,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站取具,受9級(jí)特大地震影響脖隶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜暇检,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一产阱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧块仆,春花似錦构蹬、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至科汗,卻和暖如春藻烤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背头滔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工怖亭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坤检。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓兴猩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親早歇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子倾芝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361