目標檢測演算法優化技巧:Bag of Freebies for Training Object Detection
加入極市 專業CV交流群,與 6000+來自騰訊,華為,百度,北大,清華,中科院 等名企名校視覺開發者互動交流!更有機會與 李開復老師 等大牛群內互動!
同時提供每月大咖直播分享、真實專案需求對接、乾貨資訊彙總,行業技術交流 。 點選文末“ 閱讀原文 ”立刻申請入群~
作者簡介
魏凱峰:計算機視覺、深度學習、機器學習愛好者,CSDN部落格專家“AI之路”。
本文介紹了目標檢測演算法的一些優化技巧,目前已經在GluonCV中實現了,整體看下來和之前的那篇 影象分類演算法優化技巧: Bag of Tricks for Image Classification 類似。這篇介紹的優化技巧具體而言包括mixup、label smoothing、學習率修改策略的選擇、跨卡BN層計算和隨機尺度訓練,接下來詳細介紹。
論文: Bag of Freebies for Training Object Detection Neural Networks
論文連結:https://arxiv.org/abs/1902.04103
mixup
mixup是指將2張輸入影象按照一定權重合併成一張影象,基於這種合成影象進行訓練的模型更加魯棒,能夠有效降低對抗影象的影響。如圖Figure2是在分類演算法中使用mixup的例子:
Figure3是在目標檢測演算法中使用mixup的例子,合併之後的影象標籤包含2張輸入影象的所有標籤,可以看出這種思想在實現上還是比較容易理解的。
針對mixup作者做了不同引數設定下的實驗效果對比,如Table1所示,這裡涉及一個名詞:weighted loss,在圖表中也做了解釋,因為模型訓練用的影象來自2張原輸入影象通過不同權重合並得到的(如Figure3所示),因此在計算損失函式時(損失函式是基於目標計算的),屬於不同輸入影象的目標的權重也是不一樣的,需要和輸入影象在合併時的權重對應。而Table5中第二行的0.5:0.5 evenly表示合成是按照0.5和0.5的權重進行,因此最後計算損失時目標的權重也相等。
為了證明mixup的視覺效果,作者做了前段時間比較有意思的大象貼圖實驗,如Figure5所示,第一行使用常規的訓練方式訓練YOLO v3模型,第二行則是採用mixup方式訓練YOLO v3模型,可以看出後者能夠有效檢測到影象貼上的大象(mix-1和orig-1的對比),不過在orig-2和mix-2的對比中,二者都能檢測到大象,這一點在文中沒有做詳細的解釋。
label smoothing
label smoothing是分類演算法中採用的優化方式,作者將其引入到目標檢測演算法的分類支路部分。label smoothing的思想很直接,首先來看看原來分類演算法的交叉熵損失函式,公式如下:
其中qi表示真實標籤,pi是預測值,因為q是one-hot形式(假設分類類別數是K,那麼q就是1×K的向量,且其中只有對應的真實類別位置是1,其餘都為0)。pi的計算公式如下,這是常見的softmax函式,假設真實類別是i,那麼模型訓練過程中會不斷使得zi遠大於zj,這樣pi就越接近1,這樣公式2中的L就越接近0,雖然這是訓練目標,但訓練過程越趨近於這種情況,反而是越容易過擬合的。
所以label smoothing的思想就是對真實標籤q進行改造,使其不再是one-hot形式,公式如下所示,其中K表示類別數,e是一個很小的常數。舉個例子,假設K=5,e=0.1,那麼原來q=[0,0,1,0,0],現在q’=[0.02,0.02,0.92,0.02,0.02]。這樣在公式2中,當q‘處於非真實標籤時仍然有損失值(比如0.02),就使得pi不會非常接近1,這就降低了過擬合風險。
學習率變化策略
學習率變化採用cosine函式且增加warm-up,這部分內容可以直接看Figure6。圖中(a)是常見的step修改策略和cosine修改策略+warm-up的學習率變化對比圖,可以看到cosine在初始和結束階段的變化都比較緩慢,在中間部分變化相對快一些,整體而言相比step方式變化會更加平穩一些,這種方式有利於訓練過程的穩定,包括warm-up的引入,也是為了訓練的起始階段能夠更加穩定地進行。
跨卡BN層
跨卡BN層的計算(synchronized batch normalization),因為目標檢測演算法的單卡batch size一般不能設定得像分類演算法那樣大,但是較小的batch size對於單卡計算BN層引數而言並不是很有利,因此跨卡BN層相當於基於多卡資料計算BN層引數,這樣計算得到的統計結果更加可靠。
隨機尺度訓練
隨機尺度訓練是指在模型訓練階段採用隨機大小的資料進行訓練,比如當前批次或epoch採用320×320大小的輸入,但是在下一個批次或epoch則採用416×416。這種做法來自YOLO演算法,尺寸一般在固定的幾個數值中隨機選擇,比如{320, 352, 284, 416, 448, 480, 512, 544, 576, 608},相鄰數值相差32,表示stride。
實驗結果
實驗部分採用的模型包括YOLO v3和Faster RCNN,資料集部分採用PASCAL VOC和COCO。Table2是優化的YOLO v3模型在VOC2007測試集上的效果提升對比。
Table3是優化的Faster RCNN模型在VOC2007測試集上的效果對比。資料增強部分,因為two stage演算法涉及ROI的裁剪,因此影響小一些,相比之下在one stage型別演算法中影響較大。
Table4是在COCO資料集上的效果對比,YOLO v3的效果提升尤其明顯。
*延伸閱讀
點選左下角 “ 閱讀原文 ”, 即可申請加入極市 目標跟蹤、目標檢測、工業檢測、人臉方向、視覺競賽等技術交流群, 更有每月大咖直播分享、真實專案需求對接、乾貨資訊彙總,行業技術交流, 一起來讓思想之光照的更遠吧~
覺得有用麻煩給個好看啦~