【CVPR2016】OHEM--online negative example mining

現在很少會關注2年以前的頂會論文了,但是像OHEM這樣的經典論文還是值得一讀。果然論文作者列表裏有rbg大神的都是經典文章。國際慣例,先給出文章標題和鏈接:

標題:Training Region-based Object Detectors with Online Hard Example Mining

鏈接:https://arxiv.org/pdf/1604.03540.pdf

本文避免讀大量公式,公式恐懼黨可以放心閱讀


前言

首先,這篇文章幹了一件什麼事兒?

提出了一種困難負樣本挖掘的方法。困難負樣本是指AI模型難以區分的負樣本。在模型不斷訓練的過程中,模型通常會對正樣本有着比較高的confidence,但少不了對某些負樣本也留有餘芥,給了一個不那麼接近0的confidence。而困難負例挖掘就是找到這些負例,然後針對性地訓練。OHEM提出是一種線上的困難負例挖掘解決方案。使用了這個trick以後,檢測模型的準確性有一定提升。


OHEM

OHEM的基準算法是Fast R-CNN,目的就是對其進行一丟丟改進就大大提高其性能。其原理可以濃縮到一張圖:

                                                                        圖1 OHEM示意圖 

仔細看圖1中的(b)模塊,這是比Fast R-CNN多出的一部分。挪去這一部分,就是一個初始的Fast R-CNN模型了。對於像Fast R-CNN這種2-stage的檢測模型,都可以抽象成“推薦”和“分類迴歸”兩個部分。而OHEM的作用恰好是兩個部分的中間。

那我就對2-stage模型統一講:在推薦網絡(下文稱“A部分”,Fast RCNN用的是selective search,Faster RCNN用的是RPN)之後,會有很多ROI傳輸到後面網絡。這部分的輸出便是推薦網絡所推薦的“可能存在目標的位置“,以image patch的形式給到後面的分類和迴歸網絡(下文稱“B部分”)。

通常“A部分”會給數以千計的小片(你可以叫ROI,也可以叫推薦框,還可以叫image patch)傳輸到“B部分”,B部分會對這些小片進行分類、座標和尺寸迴歸以及置信度打分(confidence, 置信度是指,模型對這個輸出有多大把握)。如果在訓練階段,那可以通過這些參數與標註結果進行計算得出損失值

而OHEM,恰恰利用了這個損失值。

有了上面的基礎,下面詳細介紹OHEM的操作流程:

1. 正常進行一次Faster RCNN的前向傳播,獲得每個小片單獨的損失值;

2. 對小片們進行非極大值抑制(NMS),不瞭解NMS點鏈接去了解,非常簡單;

3. 對nms之後剩下的小片按損失值進行排序,然後選用損失值最大的前一部分小片當作輸入再進一遍B部分,在原文描述如下:

Hard examples are selected by sorting the input RoIs by loss and taking the B/N examples for which the current network performs worst

 到第3步可以發現,通過這種方法,可以屏蔽掉loss值非常低的小片。loss值非常高的小片意味着,模型訓練很多次還對這些小片有着很高的loss,那麼就認爲這是困難負例。所謂的線上挖掘,就是先計算loss->篩選->得到困難負例。

4. 把困難負例輸入到圖1中(b)模塊,(b)模塊是(a)模塊的copy版,連參數都是一樣的。只是(a)模塊是不可訓練的,用於尋找困難負例嘛。(b)模塊是用來反向傳播的部分,然後把更新的參數共享到(a)部分(a部分也跟着一起更新)。其實在程序的實現上,(a)模塊可以複用,不需要額外來一個(b)模塊。作者之所以這麼設計的原因有倆:1,ab部分可以並行操作:a對下一張圖像進行前向,b對上一張圖像進行反向。2,這樣看着更高級點,更像頂會能中的文章的樣子。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章