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