博客專欄

EEPW首頁 > 博客 > EdgeYOLO來襲 | Xaiver超實時,精度和速度完美超越Y(jié)OLOX、v4、v5、v6

EdgeYOLO來襲 | Xaiver超實時,精度和速度完美超越Y(jié)OLOX、v4、v5、v6

發(fā)布人:計算機視覺工坊 時間:2023-02-21 來源:工程師 發(fā)布文章

圖片

本文提出了一種基于最先進YOLO框架的高效、低復(fù)雜度和Anchor-Free的目標(biāo)檢測器,該檢測器可以在邊緣計算平臺上實時實現(xiàn)。

本文開發(fā)了一種增強的數(shù)據(jù)增強方法,以有效抑制訓(xùn)練過程中的過擬合問題,并設(shè)計了一種混合隨機損失函數(shù),以提高小目標(biāo)的檢測精度。

受FCOS的啟發(fā),提出了一種更輕、更有效的Decoupled-Head,其推理速度得到了提高,精度損失很小。

本文的基線模型在MS COCO2017數(shù)據(jù)集中可以達到50.6% AP50:95和69.8% AP50的精度,在VisDrone2019 DET數(shù)據(jù)集中達到26.4% AP50:95、44.8% AP50,并且在邊緣計算設(shè)備Nvidia Jetson AGX Xavier上滿足實時要求(FPS≥30)。圖片

如圖1所示,還為具有較低計算能力的邊緣計算設(shè)備設(shè)計了參數(shù)較少的輕量化模型,這也顯示了更好的性能。

github:https://github.com/LSH9832/edgeyolo

1、簡介

隨著計算硬件性能的不斷提高,基于深度神經(jīng)網(wǎng)絡(luò)的計算機視覺技術(shù)在過去十年中迅速發(fā)展,其中目標(biāo)檢測是自主智能系統(tǒng)中應(yīng)用的重要組件。目前,有兩種主流的目標(biāo)檢測策略。一種是以R-CNN系列為代表的兩階段策略,另一種是一階段策略,YOLO是最流行的框架之一。

  • 對于兩階段策略,在第一階段使用啟發(fā)式方法或區(qū)域建議生成方法來獲得多個候選框,然后在第二階段對這些候選框進行篩選、分類和回歸。

  • 單階段策略以端到端的方式給出結(jié)果,其中目標(biāo)檢測問題被轉(zhuǎn)化為全局回歸問題。全局回歸不僅能夠?qū)⑽恢煤皖悇e同時分配給多個候選框,而且能夠使模型在目標(biāo)和背景之間獲得更清晰的分離。

在常見的目標(biāo)檢測數(shù)據(jù)集(如MS COCO2017)上,使用兩階段策略的模型比使用一階段策略的更好。然而,由于兩階段框架的內(nèi)在局限性,它遠遠不能滿足傳統(tǒng)計算設(shè)備上的實時要求,并且在大多數(shù)高性能計算平臺上可能面臨同樣的情況。

相比之下,單階段目標(biāo)檢測器可以在實時指示器和性能之間保持平衡。因此,更受研究人員的關(guān)注,YOLO系列算法以高速迭代更新。YOLOv1到Y(jié)OLOv3的更新主要是對底層框架結(jié)構(gòu)的改進,YOLO的大多數(shù)后期主流版本都側(cè)重于提高精度和推理速度。

此外,他們的優(yōu)化測試平臺主要是具有高性能GPU的大型工作站。然而,他們最先進的模型通常在這些邊緣計算設(shè)備上以令人不滿意的低FPS運行。出于這個原因,一些研究人員提出了參數(shù)更少、結(jié)構(gòu)更輕的網(wǎng)絡(luò)結(jié)構(gòu),如MobileNet和ShuffleNet,以取代原有的骨干網(wǎng)絡(luò),從而可以在移動設(shè)備和邊緣設(shè)備上實現(xiàn)更好的實時性能,但要犧牲一定的精度。

本文的目標(biāo)是設(shè)計一種具有良好精度并且能夠在邊緣設(shè)備上實時運行的目標(biāo)檢測器。

本文的貢獻總結(jié)如下:

  1. 設(shè)計了一種Anchor-Free目標(biāo)檢測器,該檢測器可以在MS COCO2017數(shù)據(jù)集中實時運行在邊緣設(shè)備上,準確率為50.6%AP;
  2. 提出了一種更強大的數(shù)據(jù)增強方法,進一步確保了訓(xùn)練數(shù)據(jù)的數(shù)量和有效性;
  3. 本文的模型中使用了可重參化的結(jié)構(gòu),以減少推理時間;
  4. 設(shè)計了一個損失函數(shù),以提高小目標(biāo)的精度。
2、相關(guān)方法2.1、Anchor-free檢測器

自YOLOv1問世以來,YOLO系列在實時目標(biāo)檢測領(lǐng)域一直處于領(lǐng)先地位。還有一些其他優(yōu)秀的檢測器,如SSD、FCOS等。當(dāng)在目標(biāo)檢測任務(wù)中測試FPS時,大多數(shù)先前的研究只計算模型推斷的時間成本,而完整的目標(biāo)檢測任務(wù)包含3個部分:預(yù)處理、模型推理和后處理。

由于預(yù)處理可以在視頻流期間完成,因此在計算目標(biāo)檢測的FPS時應(yīng)包括后處理時間成本。在高性能GPU工作站或服務(wù)器上,預(yù)處理和后處理只占一小部分時間,而在邊緣計算設(shè)備上,所需的延遲甚至是其十倍以上。

因此,減少后處理計算可以顯著提高邊緣計算設(shè)備的速度。當(dāng)使用Anchor-Base的策略時,后處理的時間延遲幾乎與每個網(wǎng)格單元的Anchor數(shù)量成比例。Anchor-Base的YOLO系列通常為每個網(wǎng)格單元分配3個Anchor。與那些Anchor-Base的框架相比,Anchor-Free檢測器可以在后處理部分節(jié)省一半以上的時間。

為了確保檢測器在邊緣計算設(shè)備上的實時性能,本文選擇Anchor-Free策略構(gòu)建目標(biāo)檢測器。目前有2種主要類型的Anchor-Free目標(biāo)檢測器,一種是基于Anchor point的,另一種是關(guān)鍵點的。在本文中采用了基于Anchor point的范式。

2.2、數(shù)據(jù)增強

數(shù)據(jù)增強是神經(jīng)網(wǎng)絡(luò)訓(xùn)練中必不可少的數(shù)據(jù)處理步驟。合理使用數(shù)據(jù)擴充方法可以有效緩解模型的過度擬合。

對于圖像數(shù)據(jù)集,幾何增強(隨機裁剪、旋轉(zhuǎn)、鏡像、縮放等)和光度增強(HSV和亮度調(diào)整)通常應(yīng)用于單個圖像。這些基本的增強方法通常在多圖像混合和拼接之前或之后使用。

目前,主流的數(shù)據(jù)增強技術(shù),如Mosaic、Mixup、CopyPaste等,通過不同的方法將多張圖片的像素信息放在同一張圖片中,以豐富圖像信息并降低過度擬合的概率。

圖片

如圖2(b)所示,本文設(shè)計了一種更加靈活和強大的組合增強方法,這進一步確保了輸入數(shù)據(jù)的豐富性和有效性。

2.3、Model Reduction

通過模型縮放,降低了計算成本,可以有效提高模型推理速度。模型縮放方法可分為兩類:有損縮放和無損縮放。

有損縮放通常通過減少網(wǎng)絡(luò)層和通道的數(shù)量來構(gòu)建更小的網(wǎng)絡(luò)。無損縮放集成并耦合多個分支模塊,通過重參化技術(shù)構(gòu)建更精簡的等效模塊。模型參數(shù)量的降低是通過犧牲精度來實現(xiàn)更快的速度,并且由于耦合結(jié)構(gòu)傾向于降低訓(xùn)練效率,因此通常在模型訓(xùn)練完成后使用重參化方法進行推理。

通過結(jié)合有損和無損縮減方法,本文構(gòu)建了幾個不同大小的模型(如圖1所示),以適應(yīng)具有不同計算能力的邊緣設(shè)備,并加快模型推理過程。

2.4、Decoupled Regression

從YOLOv1到Y(jié)OLOv5,對于每個具有不同尺度的特征圖,獲取目標(biāo)的位置、類別和置信度的回歸使用了一組統(tǒng)一的卷積核。一般來說,如果不同的任務(wù)密切相關(guān),則使用相同的卷積核。然而,在數(shù)值邏輯中,目標(biāo)的位置、置信度和類別之間的關(guān)系還不夠接近。

此外,相關(guān)實驗證明,與直接處理所有任務(wù)的單一回歸檢測頭相比,使用解耦回歸檢測頭可以獲得更好的結(jié)果,并加速損失收斂。

盡管如此,一個被解耦的頭卻會帶來額外的推理成本。作為改進,本文作者設(shè)計了一個較輕的解耦頭,并共同考慮了模型的推理速度和精度。

2.5、Small Object Detecting Optimization

自目標(biāo)檢測研究開始以來,小目標(biāo)檢測問題一直受到廣泛關(guān)注。隨著圖像中對象的比例減少,用于表示目標(biāo)的像素信息減少。與小目標(biāo)相比,大目標(biāo)通常占據(jù)數(shù)十倍甚至數(shù)百倍的信息,小目標(biāo)的檢測精度通常明顯低于大目標(biāo)。

此外,位圖圖像的屬性無法消除這種差距。此外,研究人員發(fā)現(xiàn),在訓(xùn)練過程中,小目標(biāo)在總損失中所占的比例始終較小。

為了提高小目標(biāo)的檢測效果,先前的研究提出了以下方法:

  1. 復(fù)制小目標(biāo)并將其隨機放置在圖像的其他位置,以在數(shù)據(jù)增強過程中增加小目標(biāo)的訓(xùn)練數(shù)據(jù)樣本,這被稱為復(fù)制增強;
  2. 圖像被縮放和拼接,原始圖像中的一些較大目標(biāo)被縮放為小目標(biāo);
  3. 損失函數(shù)旨在通過增加小目標(biāo)損失的比例來更加關(guān)注小目標(biāo)。

由于使用方法1處理的圖像中存在尺度失配和背景失配的問題,本文只參考方法2和2來優(yōu)化訓(xùn)練過程。

本文的數(shù)據(jù)增強中包括縮放和拼接方法,并重新設(shè)計了損失函數(shù),這可以有效地提高中小目標(biāo)的檢測和模型整體精度。

3、本文方法3.1、數(shù)據(jù)增強的改進

許多實時目標(biāo)檢測器在訓(xùn)練期間使用Mosaic+Mixeup策略進行數(shù)據(jù)增強,這可以有效緩解訓(xùn)練期間的過度擬合情況。

如圖3(a)和(b)所示,有兩種常見的組合方法,當(dāng)數(shù)據(jù)集中的單個圖像具有相對足夠的標(biāo)簽時,它們表現(xiàn)良好。由于數(shù)據(jù)論證中的隨機過程,當(dāng)圖3(a)中的標(biāo)簽空間中存在響應(yīng)時,數(shù)據(jù)加載器可能會提供沒有有效目標(biāo)的圖像。這種情況的概率隨著每個原始圖像中標(biāo)簽數(shù)量的減少而增加。

圖片

因此作者設(shè)計了圖3(c)中的數(shù)據(jù)增強結(jié)構(gòu):

  • 首先,對多組圖像使用Mosaic方法,因此可以根據(jù)數(shù)據(jù)集中單個圖片中標(biāo)簽的平均數(shù)量的豐富程度來設(shè)置組數(shù)。
  • 然后,通過Mixup方法將最后一個簡單處理的圖像與Mosaic處理的圖像混合。

在這些步驟中,最后一幅圖像的原始圖像邊界在變換后的最終輸出圖像的邊界內(nèi)。這種數(shù)據(jù)增強方法有效地增加了圖像的豐富性以減輕過度擬合,并確保輸出圖像必須包含足夠的有效信息。

3.2、Lite-Decoupled Head

圖4中的解耦頭首先在FCOS中提出,然后用于其他Anchor-Free目標(biāo)檢測器,如YOLOX。證實了在最后幾個網(wǎng)絡(luò)層使用解耦結(jié)構(gòu)可以加速網(wǎng)絡(luò)收斂并提高回歸性能。

圖片

由于解耦頭采用了導(dǎo)致額外推理成本的分支結(jié)構(gòu),因此提出了具有更快推理速度的高效解耦頭,這將中間3×3卷積層的數(shù)量減少到僅一層,同時保持與輸入特征圖相同的更大數(shù)量的通道。

然而,在實驗測試中,這種額外的推理成本隨著通道和輸入大小的增加而變得更加明顯。因此,設(shè)計了一個更輕的解耦頭,具有更少的通道和卷積層。

此外,將隱式表示層添加到所有最后的卷積層,以獲得更好的回歸性能。通過重參化的方法,隱式表示層被集成到卷積層中,以降低推理成本。框和置信度回歸的最后卷積層也被合并,使得模型可以進行高并行計算的推斷。

3.3、損失函數(shù)的改進

對于目標(biāo)檢測,損失函數(shù)一般可以寫成如下:

圖片

其中、、表示分類損失、IOU損失、目標(biāo)損失和調(diào)節(jié)損失,α、λ、μ、ζ為超參數(shù)。在實驗中將訓(xùn)練過程分為三個階段。

在第一階段,采用最常見的損失函數(shù)配置之一:GIOU損失用于IOU損失,平衡交叉熵損失用于分類損失和目標(biāo)損失,調(diào)節(jié)損失設(shè)置為零。在最后幾個Epoch數(shù)據(jù)擴充的Epoch,訓(xùn)練過程進入第二階段。分類損失和目標(biāo)損失的損失函數(shù)由混合隨機損失代替:

圖片

其中p表示預(yù)測結(jié)果,t表示GT值,r是0到1之間的隨機數(shù)。對于一張圖像中的所有結(jié)果,都有這個結(jié)果:

圖片

這表明在小目標(biāo)的精度和總精度之間有較好的平衡。在第三階段,關(guān)閉數(shù)據(jù)擴充,將L1損失設(shè)為調(diào)節(jié)損失,用cIOU損失代替gIOU損失。

4、實驗4.1、消融實驗1、Decoupled head

圖片

2、Segmentation labels (poor effect)

當(dāng)在數(shù)據(jù)增強期間處理旋轉(zhuǎn)的標(biāo)簽時,在沒有分割信息的情況下,在旋轉(zhuǎn)后獲得原始標(biāo)簽框的四個坐標(biāo)角點,并繪制一個不傾斜并穿過四個點的框作為要使用的標(biāo)簽。這可能包含更多無效的背景信息。

因此,當(dāng)在MS COCO2017上訓(xùn)練模型時,嘗試通過使用分割標(biāo)簽來生成邊界框,以便圖像旋轉(zhuǎn)后的標(biāo)簽仍然保持高精度。當(dāng)啟用數(shù)據(jù)擴充并且損失進入穩(wěn)定下降階段時,使用分段標(biāo)簽可以顯著增加2%-3%AP。

由于數(shù)據(jù)擴充在訓(xùn)練的最后階段被設(shè)置為禁用,因此所有標(biāo)簽都變得更加準確。此外,即使不使用分割標(biāo)簽,最終精度也僅降低約0.04%AP。

3、損失函數(shù)

圖片

4.2 為邊緣計算設(shè)備設(shè)計的技巧1、Input size adaptation

圖片

2、多進程和多線程的計算體系結(jié)構(gòu)

作為一個包含預(yù)處理、模型輸入和后處理的整體檢測過程,這三個部分可以在實際部署中拆分,并分配給多個進程和線程進行計算。在測試中,使用拆分架構(gòu)可以實現(xiàn)大約8%-14%的FPS增長。

4.3、SOTA對比

圖片

4.4、總結(jié)

本文提出了一種邊緣實時和Anchor-Free單階段檢測器EdgeYOLO,其一些代表性結(jié)果如圖5和圖6所示。如實驗所示,EdgeYOLO可以在邊緣設(shè)備上以高精度實時運行,其檢測小目標(biāo)的能力得到了進一步提高。

圖片圖片

由于EdgeYOLO使用Anchor-Free結(jié)構(gòu),因此設(shè)計復(fù)雜性和計算復(fù)雜性降低,并且在邊緣設(shè)備上的部署更加友好。

此外,作者相信該框架可以擴展到其他像素級識別任務(wù),例如實例分割。在未來的工作中,將進一步提高框架對小目標(biāo)的檢測精度,并進行有效優(yōu)化的探索。

5、參考

[1].EdgeYOLO: An Edge-Real-Time Object Detector.


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉