目標檢測正負樣本分配策略-2022年
初級調參師
最近,當我學習目標測相關參考技巧時,我計劃在正負樣本分配策略中添加一些參考技巧tricks,學習時發現大佬寫的相當的好,也相當細致,花了很多心血。但由于大佬的文章寫于2022年,目前也出現了一些新的正負樣本分配策略,一些新的常用的檢測網絡,例如Transformer做測試,所以打算在大佬工作的基礎上做一些補充。
YOLOV4與V3同樣的分配策略,這里就不贅述了。
yolov5與yolov3、yolov4最大的區別是v3與v4一個gt只匹配一個正樣本,v5一個gt可分配給多個anchor,在三個不同的特征圖中也的特征圖中的兩個甚至三個。
(1)正負樣本分配
而yolov5在正負樣本分配的函數中build_targets,雖然只有不到40行,但命名中有很多用途t,i,p等等簡寫字母,其實不容易理解,只能一行一行閱讀 理解。
我將build_targets2022年樣本輪換細則分為以下步驟:
步驟①:2022樣本輪換細則
anchors和gt匹配,看什么gt是當前特征圖的樣本
這里做的就是將軍gt與當前特征圖的3個anchors比較,如果gt寬與anchor寬的比例、gt高與anchor高比例在1/4到4之間,所以目前gt可與當前特征圖相匹配。接下來看代碼:2022年樣本輪換細則
步驟②:將當前特征圖的樣本分配給相應的樣本grid
先了解原理:
網格代表特征圖。虛線代表特征點grid分為四個象限。藍點代表gt位于中心點。yolov5在中間,將一個特征點分為四個象限,以匹配步驟1gt,會計算該gt(上圖中的藍點)四個象限中的哪一個,相鄰的兩個特征點也作為樣本。以上圖為例,如果gt偏向右下角的象限會gt所在grid右下特征點也作為樣本。
理解原理后,看代碼相對容易:
相比較yolov3和v4一個gt只能匹配一個正樣本,v5能夠分配更多的正樣本,有助于加快訓練,平衡正負樣本。
而且,所有的特征圖都會在每個特征圖中使用gt與當前特征圖一起anchor計算是否可以分配正樣本,這意味著一個gt樣本可以分配到多個特征圖中。
其他代碼主要是做一些轉換,標記anchor的id,這里不介紹本文的重點。
(2)regression方式
作者一直在想anchor_t=4這個超參數有什么用?仔細看文章才發現。v5的regression比較方法yolov3和v4變化很大。
yolov5上圖顯示了根據模型預測結果計算回歸值的方法,下圖顯示了相應的公式。
我在印象中看到了原作者的解釋。內容可能是:
①在yolov3中,用的是exp回歸,對y=exp(x),隨著x的增大,y是指數級增加,會導致梯度指數級增加。容易導致梯度爆炸,loss增加等問題。所以v5中作者在回歸預測中使用sigmoid。
②在推理階段,對于中心點的預測,由于如下圖所示,對于黃色特征點,由于中心點的預測值范圍,預測的中心點可以在黃色 藍色區域。此值范圍與正樣本分配相呼應。
對于黃色特征點,由于中心點的預測值范圍,預測的中心點可以在黃色 藍色區域③對于bbox寬高(wh)預測,這個數字4看起來熟悉嗎?在樣本分配中使用self.hyp['anchor_t']=4,預測值范圍與超參數相呼應。
④中心點預測,當x取0時,y=0.5,也就是說,預測點位于特征點網格的中心。對于寬度和高度預測,當x取0時,y=1,也就是說,邊框恰到好處anchor完全貼合。設計也很巧妙。
筆者認為,可以根據自己的數據集進行調整anchor_t這個超參數,但最好同時調整regression函數,否則可能會開玩笑。
YOLOX中使用了simOTA對樣本進行分配。
(1)simOTA部分
之前詳細寫過一篇文章介紹simOTA,這里簡單介紹一下。simOTA的優勢:
①simOTA每一個都可以自動分析gt有多少樣本?其余的都是負樣本。
②每一個都可以自動決定gt根據當前的網絡性能,可以根據當前的網絡性能分配合適的樣本。與人工設計的分配規則相比,它具有更多的優勢。
2.1.1DeFCN
論文名稱:End-to-EndObjectDetectionwithFullyConvolutionalNetwork
文章基于FCOS利用全卷積神經網絡實現網絡E2E(不需要nms)。其head部分網絡結構和FCOS同樣的兩點是作者一步一步分析,最終實現。E2E。
(1)one2one樣本分配
在目前以卷積神經網絡為主的目標檢測網絡中,預測每個物體通常首先預測多個目標(one2many),然后使用nms實現多個目標去重(many2one),所以nms阻礙網絡實現end2end作者以FCOS作為baseline。順便提一下FCOS正負樣本分配方法:每個輸出特征圖負責一定范圍內物體的檢測,在bbox內部作為樣本,預測物體lrtb(左右上下距離中心點)。
而作者發現hand-designed正樣本one-to-one分配,和FCOSbaseline存在4%左右的AP差距表明手工設計的正負樣本分配方法影響one-to-one樣本分配的性能需要使用prediction-aware,故提出POTO。
表1POTO意思是設計一個cost,分配每個樣本gt擁有最大cost的那個grid。cost綜合了是否處于gt內、分類、iou。
作者還提出了上面的鏈接,POTO性能仍然無法匹敵one-to-many NMS組合。作者認為有兩個問題:
one-to-one需要網絡輸出feature非常sharp,這對CNN提出了更嚴格的要求(這也是Transformer的優勢);one-to-many它帶來了更強的監督和更快的收斂速度。故作者提出3DMaxFiltering和one-to-manyauxiliaryloss緩解上述問題。
POTODeFCN正負樣本分配源碼(2)3DMaxFiltering
以下是我個人的理解。對于一個gt,在非nmsfree在網絡中,將預測特征圖中的多個前景,這些前景通??拷卣鲌D。就我個人而言,作者希望這群人緊挨著grids中,能通過max操作,保留一個grid,抑制其他的grids,這就實現了nmsfree。
個人猜測作者希望通過一個獨特的算子來提高一個grid在抑制其他預測結果的同時,預測結果grid,但這種算子在網絡訓練中并不容易實現。因此,作者選擇了最簡單的方法maxpool,抑制周邊grid。然后通過多個特征圖集成3dmaxpool,更有利于實現這一目標。
3DMaxFiltering源碼(3)Aux
使用上述兩個步驟后,網絡性能仍略差FCOSbaseline,作者認為主要是one-to-one的方式監督力不足,所以融合auxloss共同監督。
Auxloss戰略也很暴力。在不改變原模型結構的基礎上,增加了策略auxloss。classificationloss是使用3DMF和conv計算兩個特征圖相乘后的特征圖。auxloss只計算分類部分,不計算回歸部分。auxloss是使用conv后面的特征圖計算是與3DMF乘前計算特征圖,即conv通過和3DMF相乘后,盡量只保留一個結果。這就是為什么3DMF能夠work的原因。
論文中的網絡結構圖:
2.2.1DETR
使用transformer在目標檢測網絡中,匈牙利算法用于正負樣本匹配已成為標準。
DETR網絡結構(1)
經過CNN特征提取,特征圖輸入transformer網絡產生固定數量的網絡predictions預測(一般固定為100)。
訓練時,固定數量predictions與gt關鍵問題是如何匹配。
先簡單介紹一下匈牙利算法:
在學習匈牙利算法時,一般的例子是男女匹配。
現在Boys和Girls分別是兩集,里面的點是男生和女生,說明他們之間有曖昧關系"。最大的匹配問題相當于,如果你是媒人,你可以匹配任何模棱兩可的男人和女人,那么你最多能幫助多少對夫婦呢?
而到了DETR問題轉化為:n個gt與100個predictions兩兩兩個都有一個cost,左邊怎么做?n個gt與右邊100個predictions中的n一對一配對,使之cost總和最小。
mmdetection中DETR配置1.2.2其他nmsfree正負樣本的分配方法有待補充。找到75491024個原創2022樣本輪換規則設計圖片,包括2022樣本輪換規則圖片、材料、海報、證書背景、源文件PSD、PNG、JPG、AI、CDR等格式素材!
畢業證樣本網創作《2022樣本輪換規則(目標檢測正負樣本分配策略)-2022年)》發布不易,請尊重! 轉轉請注明出處:http://www.fangrui88.com.cn/180855.html