
有大量的功能據說可以提高卷積神經網絡(CNN)的準确性。需要在大型資料集上對這些特性的組合進行實際測試,并對結果進行理論驗證。某些功能僅針對某些模型,僅針對某些問題,或僅适用于小規模資料集;而某些功能(如批歸一化和殘差連接配接)适用于大多數模型、任務和資料集。我們使用新功能:WRC、CSP、CmBN、SAT、Mish 激活、馬賽克資料擴增、CmBN、DropBlock 正化和 CIoU 損耗,并結合其中一些功能實作最先進的結果:43.5% AP (65.7% AP 50),實時速度為特斯拉 V100 上的 MS COCO 資料集 [65 FPS。源代碼位于https://github.com/AlexeyAB/darknet。
1.介紹
大多數基于cnn的對象檢測器主要隻适用于推薦系統。例如,通過城市錄影機尋找免費停車位是由緩慢準确的模型執行,而汽車碰撞預警與快速不準确的模型相關。提高實時目标探測器的準确性,不僅可以将其用于提示生成推薦系統,還可以用于獨立流程管理和減少人工輸入。傳統圖形處理單元(GPU)上的實時對象檢測操作允許它們以可負擔的價格大量使用。最精确的現代神經網絡不能實時運作,需要大量的gpu來進行小批量的訓練。我們通過建立一個在傳統GPU上實時運作的CNN來解決這些問題,而訓練隻需要一個傳統GPU。
圖1:對拟建的YOLOv4和其他最先進的目标檢測器進行比較。在性能相當的情況下,YOLOv4的運作速度比EfficientDet快兩倍。YOLOv3 的 AP 和 FPS 分别提高了 10% 和 12%。
這項工作的主要目标是設計一個快速運作的目标探測器在生産系統和并行計算優化,而不是低計算量理論名額(BFLOP)。我們希望設計的對象可以很容易地訓練和使用。例如,任何使用傳統GPU進行訓練和測試的人都可以實作實時、高品質、令人信服的對象檢測結果,如圖1所示的YOLOv4結果。我們的貢獻總結如下:
1.我們開發一種高效、強大的物體檢測模型。它使每個人都可以使用1080 Ti或2080 Ti GPU來訓練超快速和準确的目标檢測器。
2.在檢測器訓練期間,我們驗證最先進的免費包和特殊包檢測方法的影響。
3.我們修改最先進的方法,使其更高效,适合單次 GPU 訓練,包括 CBN [89]、PAN [49]、SAM [85]等。
通常,傳統的目标探測器是離線訓練的。是以,研究人員總是希望利用這一優勢,開發出更好的訓練方法,使目标探測器在不增加推理成本的情況下獲得更好的精度。我們把這些隻會改變教育訓練政策或隻會增加教育訓練成本的方法稱為“免費包”。“對象檢測方法經常采用的,符合免費贈品包定義的是資料擴充。資料擴充的目的是增加輸入圖像的可變性,使所設計的目标檢測模型對不同環境下獲得的圖像具有更高的魯棒性。例如,光度畸變和幾何畸變是兩種常用的資料增強方法,它們肯定有利于對象檢測任務。在處理光度失真時,我們調整圖像的亮度、對比度、色調、飽和度和噪聲。對于幾何畸變,我們添加了随機縮放、剪切、翻轉和旋轉。
上述資料增強方法均為像素級調整,并保留調整區域内的所有原始像素資訊。此外,一些從事資料擴充的研究人員将重點放在模拟物體遮擋問題上。在圖像分類和目标檢測方面取得了較好的效果。例如,随機擦除[100]和CutOut[11]可以随機選擇圖像中的矩形區域,并填充一個随機的或互補的零值。對于捉迷藏[69]和網格掩碼[6],它們随機或均勻地選擇圖像中的多個矩形區域,并将其全部替換為零。如果将類似的概念應用于特征圖,則有DropOut[71]、DropConnect[80]和DropBlock[16]方法。此外,一些研究者提出了将多幅圖像結合在一起進行資料增強的方法。例如,MixUp[92]使用兩張圖像以不同的系數比率進行相乘和疊加,然後用這些疊加比率調整标簽。CutMix[91]是将裁剪後的圖像覆寫到其他圖像的矩形區域,并根據混合區域的大小調整标簽。除了上述方法外,還使用style transfer GAN[15]進行資料擴充,這樣可以有效減少CNN學習到的紋理偏差。
與上面提出的各種方法不同,其他一些免費包方法緻力于解決資料集中的語義分布可能存在偏差的問題。在處理語義分布偏差問題時,一個非常重要的問題是不同類之間存在資料不平衡的問題,這個問題往往通過兩階段對象檢測器中的硬反例挖掘[72]或線上硬例挖掘[67]來解決。但執行個體挖掘方法不适用于一級目标檢測器,因為這種檢測器屬于稠密預測體系結構。是以,Lin等人提出了焦損來處理各個類之間存在的資料不平衡問題。另一個非常重要的問題是,很難用一個熱硬表示法來表達不同類别之間關聯程度的關系。這種表示法常用于執行标記。文獻[73]提出的标簽平滑是将硬标簽轉換為軟标簽進行訓練,使模型更加穩健。為了獲得更好的軟标簽,Islam等人引入了知識蒸餾的概念來設計标簽細化網絡。
最後一袋贈品是邊界盒(BBox)回歸的目标函數。傳統的目标檢測器通常使用均方誤差(MSE)直接對BBox的中心點坐标和高、寬進行回歸,即{xcenter, ycenter, w, h},或左上點和右下點,即, {xtop lef t, ytop lef t, xbottom right, ybottom right}。基于錨的方法是估計相應的偏移量,例如{f集合的xcenter, f集合的ycenter, wof f集合,hof f集合}和{xtop f集合的lef t, ytop f集合的lef t, xbottom right off集合,ybottom right off集合}。但是,直接估計BBox中每個點的坐标值,就是把這些點當作自變量,而實際上并不考慮對象本身的完整性。為了更好地處理這一問題,一些研究者最近提出了IoU損失[90],将預測BBox區域的覆寫範圍和地面真實BBox區域考慮在内。IoU損失計算過程通過執行IoU和ground truth,觸發BBox四個坐标點的計算,然後将生成的結果連接配接成一個完整的代碼。由于IoU是尺度不變的表示,它可以解決傳統方法在計算{x, y, w, h}的l1或l2損耗時,損耗會随着尺度的增大而增大的問題。最近,一些研究人員繼續改善欠條損失。例如,GIoU loss[65]除了覆寫區域外,還包括了物體的形狀和方向。他們提出尋找能夠同時覆寫預測BBox和地面真實BBox的最小面積BBox,并以此BBox作為分母來代替IoU損失中原來使用的分母。對于DIoU loss[99],它額外考慮了物體中心的距離,而CIoU loss[99]則同時考慮了重疊區域、中心點之間的距離和縱橫比。對于BBox回歸問題,CIoU具有更好的收斂速度和精度。