OHEM


Training Region-based Object Detectors with Online Hard Example Mining

00 Astract

摘要主要講了四點:

(1) 訓練過程需要進行參數的空間搜索

(2) 簡單樣本與難分辨樣本之間的類別不平衡是亟需解決的問題

(3) 自動地選擇難分辨樣本來進行訓練不僅效率高而且性能好

(4) 提出了OHEM算法,不僅效率高而且性能好,在各種數據集上表現優越

01 Introduction

(1) 分類器

由於目標檢測套用圖像分類的分類思想,但圖像分類的數據集和目標檢測的 數據集存在天然的差距,目標檢測的目標框和背景框之間存在嚴重的不平衡

在滑動窗口檢測器尤為嚴重,在DPM中甚至達到1:100,000,雖然在其他 檢測器中有所減緩,但依然高達1:70

(2) hard negative mining

當然,這個類別不平衡問題並不是新問題,之前有個hard nagetive mining的 算法是解決這個類別不平衡問題的,它的關鍵思想是逐漸地增加分辨錯誤的樣本。這個算法需要迭代地交替訓練,用樣本集更新模型,然后再固定模型 來選擇分辨錯的目標框並加入到樣本集中在傳統目標檢測中,用SVM做分 類器也用到hard negative mining這個算法來訓練;在一些淺層的神經網絡和 提升決策樹中也用hard negative mining來進行訓練。除此之外,使用深度學習的目標檢測算法也用到了hard negative mining

(3) why current state-of-the-art object detectors do not use hard negative mining?

那為什么不用hard negative mining,這主要是技術上的難度,hard negative mining需要交替地訓練,而這對於使用線上優化的算法來說是不可能的,例如SGD(隨機梯度下降算法)。使用SGD來訓練網絡需要上萬次更新網絡,如果每迭代幾次就固定模型一次,這樣的速度會慢得不可想象

(4) online hard example mining(OHEM)

那OHEM是怎樣解決類別不平衡的呢,OHEM是選擇損失較大的候選ROI, 具體為什么選擇損失較大的候選ROI,這個后面再仔細說

作者總結了一下,使用了OHEM之后,不僅避免了啟發式搜索超參數,而且 提高了mAP。作者發現,訓練集越大越困難,OHEM的效果就越好

02 Related work

我們來回顧一下相關的工作

(1) Hard example mining

a. SVMs

優化SVMs時,維持一個工作樣本集。交替訓練,先訓練模型收斂於當前的 工作集,然后固定模型,去除簡單樣本(能夠輕易區分的),添加困難樣本(不 能夠區分的),這樣的訓練方式 能使模型達到全局最優

b. non-SVMs

除了優化SVMs類的模型,也優化非SVMs類的模型,例如淺層神經網絡和提升決策樹

(2) ConvNet-based object detection

基於卷積網絡的檢測模型已經得到了很大的發展,例如R-CNN、OverFeat。 OverFeat是基於滑動窗口的檢測模型,R-CNN是基於選擇性搜索的檢測模型。 除此之外,還有Fast R-CNN,作者的研究工作就是在Fast R-CNN上展開的

(3) Hard example selection in deep learning

在深度學習方面相關的研究工作有三篇論文,這三篇論文的關注點在於圖像分類或者圖像識別,而OHEM關注點在目標檢測

03 Overview of Fast R-CNN

我們回顧一下Fast R-CNN網絡框架,如下圖

(1) framework

圖片和候選框做為Fast R-CNN的輸入,Fast R-CNN分為兩部分,一部分是卷 積網絡,包括卷積和池化層,另一部分是RoI網路,包括RoI池化層、全連接層和兩個損失層(一個是分類,一個檢測框回歸)

(2) inference

在測試的時候,圖片輸入到卷積網絡得到特征層,選擇性搜索算法得到RoIs, 對於每個RoI,得到其對應的特征向量,然后每個特征向量輸入到全連接層 並得到兩個輸出,一個是概率,一個檢測框的坐標

(3) 那為什么選擇Fast R-CNN做為基礎的目標檢測器呢?

作者給出了幾點原因:

a. more broadly applicable

Fast R-CNN由兩部分組成,一是卷積網絡,二是RoI網絡,而這種結構也 被其他的檢測模型沿用,例如SPPnet 和 MR-CNN

b. allow for training the entire conv network

雖然Fast R-CNN和SPPnet、MR-CNN在結構上相似,但Fast R-CNN允許 更新整個卷積網絡,而SPPnet、MR-CNN卻固定住卷積網絡

c. SVM or not

SPPnet、MR-CNN使用SVM做分類器,Fast R-CNN不使用SVM

(4) How it trains

Fast R-CNN是使用SGD來優化模型的,每個RoI的損失包括分類損失和回歸 損失,其中不斷降低分類損失使得模型分類更准確,不斷降低回歸損失使得 預測標注框更准確。

SGD是以mini-batch為單位來更新模型的。對於每個mini-batch,先從數據 集中取N張,然后每張圖片采樣B/N個RoIs

a. Foreground RoIs

一個RoIs怎樣才算作一個目標RoI(也就是含有目標的RoI)呢,在R-CNN, SPPnet, and MR-CNN等把RoI與真實框的交叉比(IOU)大於等於0.5即判定 為目標RoI,在本文中也是這樣的設置

b. Background RoIs

而如果要被判定為背景RoI,則要求該RoI與真實框的交叉比大於等於 bg_lo這個閾值並且小於0.5。雖然這樣的設置能加快收斂和檢測准確度, 但這樣的設置會忽略不怎么出現但又十分重要的比較難分辨的背景。因 此,在本文的OHTM方法中,作者去掉了這樣的設置。

c. Balancing fg-bg RoIs

為了解決目標框和背景框之間的不平衡,Fast R-CNN設置在一個 mini-batch中,它們之間的比例是1:3。作者發現,這樣的一個比例對 於Fast R-CNN的性能是十分重要的,增大或者減小這個比例,都會使模 型的性能有所下降,但使用OHEM便可以把這個比例值去掉。

04 Our approach

作者認為Fast R-CNN之前選擇RoI的方法不僅效率低而且也不是最優的,於是作者提出了OHEM,OHEM不僅效率高而且性能也更優

(1) Online hard example mining

我們知道,基於SVM的檢測器,在訓練時,使用hard example mining來選 擇樣本需要交替訓練,先固定模型,選擇樣本,然后再用樣本集更新模型, 這樣反復交替訓練直到模型收斂

a. main observation

作者認為可以把交替訓練的步驟和SGD結合起來。之所以可以這樣,作 者認為雖然SGD每迭代一次只用到少量的圖片,但每張圖片都包含上千 個RoI,可以從中選擇hard examples,這樣的策略可以只在一個mini-batch

中固定模型,因此模型參數是一直在更新的。

更具體的,在第t次迭代時,輸入圖片到卷積網絡中得到特征圖,然后 把特征圖和所有的RoIs輸入到RoI網絡中並計算所有RoIs的損失,把損 失從高到低排序,然后選擇B/N個RoIs。這里有個小問題,位置上相鄰 的RoIs通過RoI網絡后會輸出相近的損失,這樣損失就翻倍。作者為了 解決這個問題,使用了NMS(非最大值抑制)算法,先把損失按高到低排 序,然后選擇最高的損失,並計算其他RoI這個RoI的IoU(交叉比),移 除IoU大於一定閾值的RoI,然后反復上述流程直到選擇了B/N個RoIs。

(2) Implementation details

how to implement OHEM in the FRCN detector

主要有兩種方法

a. An obvious way

直接修改損失層,然后直接進行hard example selection。損失層計算所 有的RoIs,然后按損失從大到小排序,當然這里有個NMS(非最大值抑制) 操作,選擇hard RoIs並non-hard RoIs的損失置0。雖然這方法很直接,

但效率是低下的,不僅要為所有RoI分配內存,還要對所有RoI進行反向 傳播,即使有些RoI損失為0。

b. A better way


為了解決這個問題,作者提出了上面這樣的架構。這個架構有兩個相同 的RoI網絡,不同的是其中一個只可讀,另一個可讀可寫。我們看到(a) 是只可讀的,只對所有RoI做前向計算,所以只需分配內存給前向計算 操作,(b)既可讀也可寫,對被選擇的hard RoIs不僅做前向計算也做反向 傳播計算。

對於一次SGD迭代,計算過程如下:先計算出特征圖,可讀RoI網絡對所 有RoI執行前向計算並計算每個RoI的損失,然后選擇hard RoIs。把這 些hard RoIs輸入到可讀可寫的RoI網絡中執行前向前向計算和反向傳播更新網絡,並把可讀可寫的RoI網絡的參數賦值給只可讀的網絡,一次 迭代就完成了。

這個方式和第一種方式在內存空間是差不多的,但第二種方式的速度快 了兩倍。

05 Analyzing online hard example mining

(1) Experimental setup

在本文的實驗中使用兩種標准的卷積網絡,一種是VGG_CNN_M_1024,另一 種是VGG16。論文實驗使用的超參數沿用Fast R-CNN的默認設置。

(2) OHEM vs. heuristic sampling

為了檢驗hard example mining的重要性,我們做了兩組實驗,一組Fast R-CNN 帶有hard example mining,bg_lo=0.1,另一組沒有hard example mining,即 bg_lo=0。我們發現,對於VGGM網絡,mAP降低2.4點,VGG16基本沒變 化。而使用OHEM,相對於使用了hard example mining的Fast R-CNN,mAP 提高了2.4點,相對於沒有使用hard example mining的Fast R-CNN,mAP提 高了4.8點。

(3) Robust gradient estimates

而在實驗中,存在一個這樣的疑慮,每個mini-batch只取兩張圖片會不會造 成梯度不穩定和收斂慢,因為在一張圖片中選擇RoI會使RoIs之間的相關性 很大。Fast R-CNN的作者認為在訓練過程不存在這樣的問題,而在OHEM中,

由於是在一張圖片中選擇損失大的RoI,這樣可能造成RoIs之間的相關性更 大。為了解答這個疑慮,我們把N設置為1,通過做實驗發現,傳統的Fast R-CNN大概降低一個點,而OHEM卻沒有太大變化,這說明使用了OHEM的

Fast R-CNN是魯棒的。

(4) Why just hard examples, when you can use all?

那為什么只選擇hard examples呢,因為easy examples的損失很小,對梯度 影響很小。為了用事實說話,作者做了一個這樣的實驗,把mini-batch的B 分別設置為128和2048,結果表明,B為2048的相對於128的,mAP提高 了一個點。不過,這提高的一個點對於使用了OHEM的Fast R-CNN來說是無 關緊要的,因為OHEM的mAP提高更大,並且用更小的mini-batch收斂速 度會更快。

(5) Better optimization

作者為了分析使用了不同訓練方法的Fast R-CNN的訓練損失的情況,做了這 樣的實驗,每優化20K步就記錄一下所有RoIs的平均損失,結果顯示, bg_lo=0(即沒有使用hard example mining)的訓練損失最高,bg_lo=0.1(使用 hard example mining)的損失有所降低,增大mini-batch(即設置bg_lo=0, B=2048),損失更低,最后,使用了OHEM的Fast R-CNN損失最低,這表明 Fast R-CNN使用了OHEM會訓練得更好。

(6) Computational cost

使用了OHEM的Fast R-CNN相對於沒有使用OHEM的Fast R-CNN在內存和每 迭代一次所花的時間都有所增加,不過,作者認為這一點增加影響不大。

06 Conclusion

(1) 簡化訓練過程

(2) 更好的訓練收斂和檢測准確度的提高


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM