https://mp.weixin.qq.com/s/Dees5BvTeBt37fP4OpSQGw
隨着自動駕駛汽車和自動賽車越來越受歡迎,對更快、更准確的檢測器的需求也越來越大。但對機器來說圖像分辨率和計算資源的限制使得檢測更小的物體成為一個真正具有挑戰性的任務,也是一個開放的研究領域。
本研究探索了如何對YOLOv5進行修改,以提高其在檢測較小目標時的性能,並在自動賽車中進行了特殊應用。為了實現這一點,作者研究了替換模型的某些結構會如何影響性能和推理時間。在這一過程中在不同的尺度上提出一系列的模型YOLO-Z,並得到高達6.9%的改善,相比原YOLOv5推理時間檢測更小的目標時的成本就增加3ms。
1YOLO-Z
YOLOv5提供了4種不同的尺度:S、M、L和X。每種比例都對模型的深度和寬度應用不同的乘數,這意味着模型的整體結構保持不變,但每個模型的大小和復雜性是按比例縮放的。在實驗中,在所有的尺度上分別對模型的結構進行修改,並將每個模型作為不同的模型來評估其效果。
為了設定Baseline,對YOLOv5的4個量表的未修改版本進行了訓練和測試。然后分別測試這些網絡的變化,以便觀察它們對Baseline結果的影響。在進入下一階段時,似乎對提高准確性或推理時間沒有貢獻的技術和結構被過濾掉。然后,嘗試將選定的技術組合起來。重復這個過程,觀察某些技術是否相互補充或減少,並逐漸增加更復雜的組合。
1、Evaluation metric
YOLOv5的原始實現提供了與COCO兼容性API的度量,這對於本研究的目的證明是有用的。計算特定尺度值的方式可以很好地指示模型的性能,但在極端情況下可能會稍微不准確。
由於這些度量在默認情況下只與COCO數據集兼容,在測試代碼中重新實現了這個方法,以便在使用任何數據集時獲得更有價值的數據。度量模塊將計算大、中、小目標的值,以及整體性能。將目標划分為這三種類別取決於以下閾值:小(如果對象的面積小於32平方像素),大(如果該區域大於96平方像素),中等(如果該區域大於兩個閾值)。換句話說,small<32x32<medium<96x96<large。
2、Dataset and Experimental setup
為了訓練模型並為實驗提供信息,從自動駕駛賽車的角度采用了一個帶注釋的圓錐數據集。它最初的目的是根據圓錐體的顏色幫助自動賽車規划路徑,因為知道總共有4類圓錐體(黃色、藍色、橙色和大橙色),接近4000張圖像(見圖1,2)。
該數據集包括數字增強圖像和具有挑戰性天氣條件的情況。像這樣的數據集可以模擬自動駕駛汽車中更復雜的任務。錐體本身就是可以在路上找到的物體,在大小和位置上與其他物體有很多相似之處,比如交通標志。
盡管數據集將受益於更大的大小,但它的特點是目標密度非常高,有超過30000個標記目標。此外,在圖1可以觀察到藍色和黃色類的很大偏差。這是有道理的,因為他們有助於雙方的賽車,但它確實是一個不平衡影響整體結果。這些類上的性能將會考慮當評估模型,即通過平均分數顯著的類別。
與自動駕駛場景中常見的其他物體(如其他車輛或行人)相比,圓錐體本來就很小。圖3中的相關圖(相關統計數據的圖表)顯示了數據集中目標(錐)的邊界框的位置、寬度和高度。數據集具有高度集中的較小的目標框,由於透視投影而略微拉長。這種高比例的小目標使它有利於這類研究,因為它在很大程度上克服了在其他流行的數據集,包括MS COCO中缺乏這樣的物體的問題。
該數據集以65:15:20的比例分為訓練、驗證和測試。
3、架構改進
YOLOv5使用yaml文件來指導解析器如何構建模型。我們使用這種設置來編寫我們自己的高級指令,說明如何構建模型的不同構建塊以及使用哪些參數,從而修改其結構。為了實現新的結構,我們安排並為每個構建塊或層提供參數,並在必要時指導解析器如何構建它。用我們的話說,我們利用YOLOv5提供的基礎和實驗網絡塊,同時在需要模擬所需結構的地方實現額外的塊。
1、Backbone
模型的Backbone是用於獲取輸入圖像並從中提取特征映射的組件。這是任何目標檢測器的關鍵步驟,因為它是負責從輸入圖像提取上下文信息以及將該信息提取為模式的主要結構。
作者嘗試用2個Backbone替換YOLOv5中現有的Backbone。
-
ResNet是一種流行的結構,它引入殘差連接來減少在深層神經網絡中收益遞減的影響。
-
DenseNet使用類似的連接,在網絡中盡可能多地保存信息。實現這些結構需要將它們分解為基本塊,並確保各層適通信。這包括確保正確的特征圖尺寸,這有時需要為模型的寬度和深度略微修改縮放因子。
在這兩種情況下,為了保持相當的復雜性,重要的是要避免大大偏離原始的層數。因此,使用了ResNet50,並按比例縮小了DenseNet,以保持其核心功能。此外,YOLOv5利用了Backbone和Neck之間的空間金字塔池化(SPP)層。然而,在本工作中,沒有觸及這一層。
2、Neck
將位於Head和Backbone之間的結構稱為“Neck” (見圖4),其目標是在將Backbone提取的信息反饋到Head之前盡可能多地聚合這些信息。該結構通過防止小目標信息丟失,在傳遞小目標信息方面發揮了重要作用。它通過再次提高特征圖的分辨率來做到這一點,這樣來自Backbone的不同層的特征就可以被聚合,以提升整體的檢測性能。
在本工作中,將當前的PAN-Net替換為bi-FPN。雖然都保留了類似的特征,但復雜性不同,因此實現所需的層數和連接數也不同。
3、其他修改
模型的Head負責獲取特征映射,並通過從Neck獲取幾個聚合的特征映射來預測邊界框和類。除了接收到的參數之外,這個結構可以保持原樣,因為它是模型的一個基本部分,在小目標檢測中沒有前面提到的元素那么大的影響。
然而,還有其他一些元素會對小目標檢測性能產生影響。除了輸入圖像的大小之外,還可以修改模型的深度和寬度,以改變處理的主要方向。Neck和Head的層連接方式也可以手動改變,以便專注於檢測特定的特征圖。
在這項研究中,作者探索了涉及高分辨率特征映射的重定向連接的效果,以便將它們直接反饋到Neck和Head。這可以通過擴大Neck以適應額外的特征圖來實現,也可以通過替換最低分辨率的特征圖以適應新的特征圖來實現,圖5顯示了這兩個選項以及默認(原始)布局。
使用更高分辨率的特征圖通常可以提高對較小目標的性能,但需要耗費推理時間和潛在的對較大目標的檢測,這與增加輸入圖像大小的效果類似。用這兩種方式在Neck整合這種行為,以最大限度地減少其缺點,同時最大限度地利用其優點。
注意,一些參數將不得不調整到新的結構,因為網絡的學習能力可能會受到影響。主要是在Head應用Anchor的大小,需要根據所使用的特征圖的分辨率進行調整。
2實驗結果
討論
在對YOLOv5進行調整以更好地檢測更小的目標的方法的實驗中,本文能夠識別體系結構修改,這種修改在性能上比原始的檢測器有明顯改善,而且成本相對較低,因為新的模型保持了實時推理速度。
所應用的技術,即自動賽車技術,可以從這樣的改進中獲益良多。正如在圖8中看到的,這樣的變化確實對檢測有可量化的影響。在這項工作中,不僅顯著提高了Baseline模型的性能,而且還確定了一些特定的技術,這些技術可以應用於任何其他應用程序,包括檢測小或遠的物體。
YOLO-Z家族的最終結果是,模型表現的YOLOv5類,同時保留一個推理時間等實時應用程序兼容的自動化賽車(見表2和圖7)。特別是較小的目標是本研究的重點(圖7中,中間),而對於中等大小的目標(下圖),性能是穩定的。
3參考
[1].YOLO-Z: Improving small object detection in YOLOv5 for autonomous vehicles