YOLOv7上線:無需預訓練,5-160 FPS內超越所有目標檢測器

機器之心報道

編輯:小舟、澤南

在 5-160 FPS 範圍內速度和精度超過所有已知目標檢測器。

在YOLOv6 推出後不到兩個星期,提出 YOLOv4 的團隊就釋出了更新一代的版本。

本週三,YOLOv7 的論文被提交到了預印版論文平臺 arXiv 上,其三位作者 Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao 是 YOLOv4 的原班人馬。

YOLOv7上線:無需預訓練,5-160 FPS內超越所有目標檢測器

論文連結:https://arxiv。org/abs/2207。02696

GitHub 連結:https://github。com/WongKinYiu/yolov7

YOLOv7 在 5 FPS 到 160 FPS 範圍內,速度和精度都超過了所有已知的目標檢測器,並在 GPU V100 上,30 FPS 的情況下達到實時目標檢測器的最高精度 56。8% AP。YOLOv7 是在 MS COCO 資料集上從頭開始訓練的,不使用任何其他資料集或預訓練權重。

YOLOv7上線:無需預訓練,5-160 FPS內超越所有目標檢測器

相對於其他型別的工具,YOLOv7-E6 目標檢測器(56 FPS V100,55。9% AP)比基於 transformer 的檢測器 SWINL Cascade-Mask R-CNN(9。2 FPS A100,53。9% AP)速度上高出 509%,精度高出 2%,比基於卷積的檢測器 ConvNeXt-XL Cascade-Mask R-CNN (8。6 FPS A100, 55。2% AP) 速度高出 551%,精度高出 0。7%。

此外, YOLOv7 的在速度和精度上的表現也優於 YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5、DETR 等多種目標檢測器。

YOLOv7上線:無需預訓練,5-160 FPS內超越所有目標檢測器

YOLOv7 技術方法介紹

近年來,實時目標檢測器仍在針對不同的邊緣裝置進行開發。例如,MCUNet 和 NanoDet 的開發專注於生產低功耗單晶片並提高邊緣 CPU 的推理速度;YOLOX、YOLOR 等方法專注於提高各種 GPU 的推理速度;實時目標檢測器的發展集中在高效架構的設計上;在 CPU 上使用的實時目標檢測器的設計主要基於 MobileNet、ShuffleNet 或 GhostNet;為 GPU 開發的實時目標檢測器則大多使用 ResNet、DarkNet 或 DLA,並使用 CSPNet 策略來最佳化架構。

YOLOv7 的發展方向與當前主流的實時目標檢測器不同,研究團隊希望它能夠同時支援移動 GPU 和從邊緣到雲端的 GPU 裝置。除了架構最佳化之外,該研究提出的方法還專注於訓練過程的最佳化,將重點放在了一些最佳化模組和最佳化方法上。這可能會增加訓練成本以提高目標檢測的準確性,但不會增加推理成本。研究者將提出的模組和最佳化方法稱為可訓練的「bag-of-freebies」。

對於模型重引數化,該研究使用梯度傳播路徑的概念分析了適用於不同網路層的模型重引數化策略,並提出了有計劃的重引數化模型。此外,研究者發現使用動態標籤分配技術時,具有多個輸出層的模型在訓練時會產生新的問題:「如何為不同分支的輸出分配動態目標?」針對這個問題,研究者提出了一種新的標籤分配方法,稱為從粗粒度到細粒度(coarse-to-fine)的引導式標籤分配。

該研究的主要貢獻包括:

(1) 設計了幾種可訓練的 bag-of-freebies 方法,使得實時目標檢測可以在不增加推理成本的情況下大大提高檢測精度;

(2) 對於目標檢測方法的演進,研究者發現了兩個新問題:一是重引數化的模組如何替換原始模組,二是動態標籤分配策略如何處理分配給不同輸出層的問題,並提出瞭解決這兩個問題的方法;

(3) 提出了實時目標檢測器的「擴充(extend)」和「複合擴充套件(compound scale)」方法,以有效地利用引數和計算;

(4) 該研究提出的方法可以有效減少 SOTA 實時目標檢測器約 40% 的引數和 50% 的計算量,並具有更快的推理速度和更高的檢測精度。

在大多數關於設計高效架構的文獻中,人們主要考慮的因素包括引數的數量、計算量和計算密度。下圖 2(b)中 CSPVoVNet 的設計是 VoVNet 的變體。CSPVoVNet 的架構分析了梯度路徑,以使不同層的權重能夠學習更多不同的特徵,使推理更快、更準確。圖 2 (c) 中的 ELAN 則考慮了「如何設計一個高效網路」的問題。

YOLOv7 研究團隊提出了基於 ELAN 的擴充套件 E-ELAN,其主要架構如圖 2(d)所示。

YOLOv7上線:無需預訓練,5-160 FPS內超越所有目標檢測器

新的 E-ELAN 完全沒有改變原有架構的梯度傳輸路徑,其中使用組卷積來增加新增特徵的基數(cardinality),並以 shuffle 和 merge cardinality 的方式組合不同組的特徵。這種操作方式可以增強不同特徵圖學得的特徵,改進引數的使用和計算效率。

無論梯度路徑長度和大規模 ELAN 中計算塊的堆疊數量如何,它都達到了穩定狀態。如果無限堆疊更多的計算塊,可能會破壞這種穩定狀態,引數利用率會降低。新提出的 E-ELAN 使用 expand、shuffle、merge cardinality 在不破壞原有梯度路徑的情況下讓網路的學習能力不斷增強。

在架構方面,E-ELAN 只改變了計算塊的架構,而過渡層(transition layer)的架構完全沒有改變。YOLOv7 的策略是使用組卷積來擴充套件計算塊的通道和基數。研究者將對計算層的所有計算塊應用相同的組引數和通道乘數。然後,每個計算塊計算出的特徵圖會根據設定的組引數 g 被打亂成 g 個組,再將它們連線在一起。此時,每組特徵圖的通道數將與原始架構中的通道數相同。最後,該方法新增 g 組特徵圖來執行 merge cardinality。除了保持原有的 ELAN 設計架構,E-ELAN 還可以引導不同組的計算塊學習更多樣化的特徵。

如果將這些方法應用於基於連線的架構,我們會發現,當對深度放大或縮小時,基於連線的計算塊之後的過渡層的入度會隨之減小或增加,如下圖 3(a)和(b)所示。

YOLOv7上線:無需預訓練,5-160 FPS內超越所有目標檢測器

因此,對基於串聯的模型,我們不能單獨分析不同的擴充套件因子,而必須一起考慮。該研究提出圖 3(c),即在對基於級聯的模型進行擴充套件時,只需要對計算塊中的深度進行擴充套件,其餘傳輸層進行相應的寬度擴充套件。這種複合擴充套件方法可以保持模型在初始設計時的特性和最佳結構。

此外,該研究使用梯度流傳播路徑來分析如何重引數化卷積,以與不同的網路相結合。下圖 4 展示了該研究設計的用於 PlainNet 和 ResNet 的「計劃重引數化卷積」。

YOLOv7上線:無需預訓練,5-160 FPS內超越所有目標檢測器

在標籤分配策略方面,下圖 5 (a) 和 (b) 分別顯示了「沒有」和「有」深度監督的目標檢測器架構。研究者將負責最終輸出的 head 稱為 lead head,用於輔助訓練的 head 稱為 auxiliary head。該研究所提的兩種深度監督標籤分配策略分別如圖 5 (d) 和 (e) 所示。

YOLOv7上線:無需預訓練,5-160 FPS內超越所有目標檢測器

與通常的獨立標籤分配器(圖 5(c) )不同,該研究提出的標籤分配器透過 lead head 預測和實況進行最佳化,以同時獲得訓練 lead head 和 auxiliary head 的標籤。

下面我們具體看一下 YOLOv7 與其他目標檢測模型的效能比較。

YOLOv7上線:無需預訓練,5-160 FPS內超越所有目標檢測器

表 1。 與基線目標檢測器的比較。

作者將提出的新方法與用於通用和移動 GPU 的 SOTA 目標檢測器進行了比較,詳細結果如下表 2 所示。

YOLOv7上線:無需預訓練,5-160 FPS內超越所有目標檢測器

如果我們使用輸入解析度 1280 比較 YOLOv7 和 YOLOR,YOLOv7-W6 的推理速度比 YOLOR-P6 快 8 fps,檢測率也提高了 1% AP。YOLOv7-E6 和 YOLOv5-X6(r6。1)對比,前者 AP 增益比後者高 0。9%,引數少 45%,計算量少 63%,推理速度提升 47%。YOLOv7-D6 的推理速度與 YOLOR-E6 接近,但 AP 提高了 0。8%。YOLOv7-E6E 的推理速度與 YOLOR-D6 接近,但 AP 提高了 0。3%。

YOLOv7上線:無需預訓練,5-160 FPS內超越所有目標檢測器

感興趣的讀者可以閱讀論文原文,瞭解更多研究細節。

THE END

轉載請聯絡本公眾號獲得授權

投稿或尋求報道:content@jiqizhixin。com