Hard example mining
核心思想:用分類器對樣本進行分類,把其中錯誤分類的樣本(hard negative)放入負樣本集合再繼續訓練分類器。
why hard negative?
FP: false positive, 錯誤的將其分類成正例。
我的理解是label 相對特征明顯一些,如果把label分成負例說明這個分類器模型不夠好。主要的問題還是龐大的negative里面有些令分類器難以分辨的物體。
關鍵: 找到這些影響分類器性能的hard negetive.
how hard negative?
數據集
- 對於目標檢測中我們會事先標記處ground truth,然后再算法中會生成一系列proposals,proposals與ground truth的IOU超過一定閾值(通常0.5)的則認定為是正樣本,低於一定閾值的則是負樣本。然后扔進網絡中訓練。However,這也許會出現一個問題那就是正樣本的數量遠遠小於負樣本,這樣訓練出來的分類器的效果總是有限的,會出現許多false positive。把其中得分較高的這些false positive當做所謂的Hard negative,既然mining出了這些Hard negative,就把這些扔進網絡再訓練一次,從而加強分類器判別假陽性的能力。
- 可以自己做出這樣的數據集用於以后的訓練或是測試
loss上選取
- 對於上面那種離線的方法也可以采用online的方案,訓練的時候選擇hard negative來進行迭代,從而提高訓練的效果。
- 制定規則去選取hard negative: DenseBox
In the forward propagation phase, we sort the loss of output pixels in decending order, and assign the top 1% to be hard-negative. In all experiments, we keep all positive labeled pixels(samples) and the ratio of positive and negative to be 1:1. Among all negative samples, half of them are sampled from hard-negative samples, and the remaining half are selected randomly from non-hard negative.
核心思想:選取與label差別大(loss大)的作為hard negtive - 根據制定的規則選取了hard negative ,在訓練的時候加強對hard negative的訓練。
rois上選取
-
選取rois: OHEM
-
在綠色部分的(a)中,一個只讀的RoI網絡對特征圖和所有RoI進行前向傳播,然后Hard RoI module利用這些RoI的loss選擇B個樣本。在紅色部分(b)中,這些選擇出的樣本(hard examples)進入RoI網絡,進一步進行前向和后向傳播。同樣是利用loss選擇,但是針對的是two stage的方案,選取的是第一階段的rois。
總結
選取loss較大(檢測結果與label差異較大)的部分進行訓練。