目標檢測演算法優化技巧

2021-10-01 14:27:20 字數 2210 閱讀 8505

這篇**介紹目標檢測演算法的一些優化技巧,目前已經在gluoncv中實現了,整體看下來和之前的那篇影象分類演算法優化技巧的**(bag of tricks for image classification with convolutional neural networks)類似。這篇介紹的優化技巧具體而言包括mixup、label smoothing、學習率修改策略的選擇、跨卡bn層計算和隨機尺度訓練,接下來詳細介紹。

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的思想很直接,首先來看看原來分類演算法的交叉熵損失函式,公式如下:

其中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層的計算(synchronized batch normalization),因為目標檢測演算法的單卡batch size一般不能設定得像分類演算法那樣大,但是較小的batch size對於單卡計算bn層引數而言並不是很有利,因此跨卡bn層相當於基於多卡資料計算bn層引數,這樣計算得到的統計結果更加可靠。

隨機尺度訓練是指在模型訓練階段採用隨機大小的資料進行訓練,比如當前批次或epoch採用320×320大小的輸入,但是在下乙個批次或epoch則採用416×416。這種做法來自yolo演算法,尺寸一般在固定的幾個數值中隨機選擇,比如,相鄰數值相差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的效果提公升尤其明顯。

目標檢測演算法

基於深度學習的回歸方法 yolo ssd densebox 傳統目標檢測流程 rcnn解決的就是預先找出圖中目標可能出現的位置,即候選區域,再對這些區域進行識別分類。r cnn 具體步驟如下 步驟二 對該模型做fine tuning 微調 步驟三 特徵提取 步驟四 訓練乙個svm分類器來判斷這個候選...

目標檢測演算法對比 目標檢測演算法工程落地

覆盤一下在實現檢測演算法落地過程中所經歷的乙個流程 列出幾點重點說明一下 1 網路的選取和調參是關鍵 網路選取 考慮到實際情況的實時性 硬體效能,需考慮參數量較小的檢測網路,更傾向於單階段式的網路 基於yolossd等的多個變體網路 其次基礎特徵提取網路backbone的替換,傳統都是vgg的特徵提...

目標檢測演算法歷史

最近在做一些目標檢測相關的東西,目標檢測是計算機視覺裡面最重要的課題之一了,很多場合檢測和識別都是很重要的,比如現在很火的無人駕駛,就非常依賴目標檢測和識別,需要非常高的檢測精度和定位精度。目標檢測從很早就開始有了。傳統演算法的典型代表有 haar特徵 adaboost演算法 hog特徵 svm演算...