深度學(xué)習(xí)難分樣本挖掘(Hard Mining)
最近看了幾篇文章關(guān)于難分樣本的挖掘,如何將難分樣本抽取出來,通過訓(xùn)練,使得正負(fù)樣本數(shù)量均衡。一般用來減少實(shí)驗(yàn)結(jié)果的假陽性問題。
Training Region-based Object Detectors with Online Hard Example Mining論文:https://arxiv.org/pdf/1604.03540.pdf代碼:https://github.com/abhi2610/ohem
一、概念
對(duì)于分類來說:
正樣本:我們想要正確分類出的類別所對(duì)應(yīng)的樣本,例如,我們需要對(duì)一張圖片分類,確定是否屬于貓,那么在訓(xùn)練的時(shí)候,貓的圖片就是正樣本。
負(fù)樣本:根據(jù)上面的例子,不是貓的其他所有的圖片都是負(fù)樣本
難分正樣本(hard positives):錯(cuò)分成負(fù)樣本的正樣本,也可以是訓(xùn)練過程中損失最高的正樣本
難分負(fù)樣本(hard negatives):錯(cuò)分成正樣本的負(fù)樣本,也可以是訓(xùn)練過程中損失最高的負(fù)樣本
易分正樣本(easy positive):容易正確分類的正樣本,該類的概率最高。也可以是訓(xùn)練過程中損失最低的正樣本
易分負(fù)樣本(easy negatives):容易正確分類的負(fù)樣本,該類的概率最高。也可以是訓(xùn)練過程中損失最低的負(fù)樣本。
二、核心思想
用分類器對(duì)樣本進(jìn)行分類,把其中錯(cuò)誤分類的樣本(hard negative)放入負(fù)樣本集合再繼續(xù)訓(xùn)練分類器。
關(guān)鍵是找出影響網(wǎng)絡(luò)性能的一些訓(xùn)練樣本,針對(duì)性地進(jìn)行處理。
簡(jiǎn)單來說就是把難分的樣本,剔除出來,放到另外一個(gè)地方里面。最后將難分樣本,給負(fù)樣本,加強(qiáng)訓(xùn)練分類器。但是,這樣又會(huì)造成數(shù)據(jù)不平衡的問題,下面會(huì)講到。
三、方法:離線和在線
離線:
在樣本訓(xùn)練過程中,會(huì)將訓(xùn)練結(jié)果與GroundTruth計(jì)算IOU。通常會(huì)設(shè)定一個(gè)閾值(0.5),結(jié)果超過閾值認(rèn)為是正樣本,低于一定閾值的則認(rèn)為是負(fù)樣本,然后扔進(jìn)網(wǎng)絡(luò)中訓(xùn)練。
但是,隨著訓(xùn)練的進(jìn)行,這樣的策略也許會(huì)出現(xiàn)一個(gè)問題,那就是正樣本的數(shù)量會(huì)遠(yuǎn)遠(yuǎn)小于負(fù)樣本,這樣會(huì)導(dǎo)致數(shù)據(jù)的分布不平衡,使得網(wǎng)絡(luò)的訓(xùn)練結(jié)果不是很好。當(dāng)然有些論文作者針對(duì)這種導(dǎo)致不平衡的數(shù)據(jù),提出了一種對(duì)稱的模型。就是類似上圖,將Hard Posiotive也重新賦給正樣本。
在線:
CVPR2016的Training Region-based Object Detectors with Online Hard Example Mining(oral)將難分樣本挖掘(hard example mining)機(jī)制嵌入到SGD算法中,使得Fast R-CNN在訓(xùn)練的過程中根據(jù)region proposal的損失自動(dòng)選取合適的Region Proposal作為正負(fù)例訓(xùn)練。
上面的論文就是講的在線的方法:Online Hard Example Mining,簡(jiǎn)稱OHEM實(shí)驗(yàn)結(jié)果表明使用OHEM(Online Hard Example Mining)機(jī)制可以使得Fast R-CNN算法在VOC2007和VOC2012上mAP提高 4%左右。
即:訓(xùn)練的時(shí)候選擇hard negative來進(jìn)行迭代,從而提高訓(xùn)練的效果。
簡(jiǎn)單來說就是從ROI中選擇hard,而不是簡(jiǎn)單的采樣。
Forward: 全部的ROI通過網(wǎng)絡(luò),根據(jù)loss排序;
Backward:根據(jù)排序,選擇B/N個(gè)loss值最大的(worst)樣本來后向傳播更新model的weights。
這里會(huì)有一個(gè)問題,即位置相近的ROI在map中可能對(duì)應(yīng)的是同一個(gè)位置,loss值是相近的,所以針對(duì)這個(gè)問題,提出的解決方法是:對(duì)hard做nms,然后再選擇B/N個(gè)ROI反向傳播,這里nms選擇的IoU=0.7。
在后向傳播時(shí),直覺想到的方法就是將那些未被選中的ROI的loss直接設(shè)置為0即可,但這實(shí)際上還是將所有的ROI進(jìn)行反向傳播,時(shí)間和空間消耗都很大,所以作者在這里提出了本文的網(wǎng)絡(luò)框架,用兩個(gè)網(wǎng)絡(luò),一個(gè)只用來前向傳播,另一個(gè)則根據(jù)選擇的ROIs進(jìn)行后向傳播,的確增加了空間消耗(1G),但是有效的減少了時(shí)間消耗,實(shí)際的實(shí)驗(yàn)結(jié)果也是可以接受的。
給定圖像和選擇性搜索RoI,卷積網(wǎng)絡(luò)計(jì)算轉(zhuǎn)換特征映射。在(a)中,只讀RoI網(wǎng)絡(luò)在特征映射和所有RoI上運(yùn)行正向傳遞(以綠色箭頭顯示)。然后Hard RoI模塊使用這些RoI損失來選擇B個(gè)樣本。在(b)中,RoI網(wǎng)絡(luò)使用這些硬性示例來計(jì)算前向和后向通道(以紅色箭頭示出)。
想法很類似于新擴(kuò)展一個(gè)空間,錯(cuò)放錯(cuò)誤樣本,然后單獨(dú)訓(xùn)練這些樣本,更新權(quán)重。
四、擴(kuò)展idea
難分樣本挖掘的思想同樣可以利用到圖像的語義分割上。
可以對(duì)難以分割的樣本,或者無法分割的樣本,單獨(dú)建立字典或者模型來訓(xùn)練,更新網(wǎng)絡(luò)權(quán)重。
用于不平衡數(shù)據(jù)的擴(kuò)增也是一個(gè)不錯(cuò)的選擇。
文中圖片中的思想可以借鑒哦。讀者可以自定義一個(gè)自己的Hard ROI模塊喲~
參考:
https://blog.csdn.net/u014381600/article/details/79161261https://blog.csdn.net/qq_29981283/article/details/83350062https://blog.csdn.net/u013608402/article/details/51275486
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。