YOLOv7速度精度超越其他變體,大神AB發推,網友:還得是你
本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。
前腳美團剛發布YOLOv6, YOLO官方團隊又放出新版本。
曾參與YOLO項目維護的大神Alexey Bochkovskiy在推特上聲稱:
官方版YOLOv7比以下版本的精度和速度都要好。
在論文中,團隊詳細對比了YOLOv7和其他變體的性能對比,并介紹v7版本的新變化。
話不多說,YOLOv7有多強一起來看實驗結果。
速度、精度都超越其他變體
論文中,實驗以之前版本的YOLO和最先進的目標檢測模型作為基準。
表格是YOLOv7模型在相同的參數設置下與其他版本的比較:
數據標綠代表性能相較于之前版本有所提升,參數量和計算量相較于之前版本,大部分均有所減少,AP也有所提升。
即使在云GPU模型上,最新模型仍可以保持較高的AP,與此同時計算量和參數量相較于之前模型也均有所下降。
YOLOv7可以很好地平衡速度與精度。
與現有的通用GPU和移動GPU的目標檢測模型進行比較:
YOLOv7在速度(FPS)和精度(AP)均超過其他目標檢測模型。
比如,在輸入分辨率為1280時,將YOLOv7與YOLOR進行比較,YOLOv7-W6的推理速度比YOLOR-P6快8fps,檢測率也提高了1%AP。
性能是怎么提升的?
改進實時目標檢測模型的性能,往往要從以下幾點入手:
1、更快更強的網絡架構;
2、更有效的特征集成方法;
3、更準確的檢測方法;
4、更精確的損失函數;
5、更有效的標簽分配方法;
6、更有效的訓練方法。
YOLOv7主要從4、5、6入手設計性能更好的檢測模型。
首先,YOLOv7擴展了高效長程注意力網絡,稱為Extended-ELAN(簡稱E-ELAN)。
在大規模的ELAN中,無論梯度路徑長度和塊的數量如何,網絡都能達到穩定狀態。
但是如果無限地堆疊計算塊,這種穩定狀態也可能會被破壞,參數利用率也會降低。
E-ELAN對基數(Cardinality)做了擴展(Expand)、亂序(Shuffle)、合并(Merge cardinality),能在不破壞原始梯度路徑的情況下,提高網絡的學習能力。
在架構方面,E-ELAN只改變了計算塊中的體系結構,沒有改變過渡層的體系結構。
除了保持原來ELAN的設計架構外,E-ELAN還可以引導不同的計算塊組來學習更多樣化的特性。
而后,YOLOv7采用基于級聯的(Concatenation-based)模型縮放方法。
模型縮放是指調整模型的一些屬性,生成不同尺度的模型,以滿足不同推理速度的需求。
然而,模型縮放如果應用于基于連接的架構,當擴大或縮小執行深度時,基于連接的翻譯層的計算塊將減少或增加。
由此可以推斷,對于基于級聯的模型,不能單獨分析不同的縮放因子,必須一起考慮。
基于級聯的模型縮放方法是一個復合模型縮放方法,當縮放一個計算塊的深度因子時,同時也要計算該塊輸出通道的變化。
然后,對過渡層以相同的變化量進行寬度因子縮放,這樣就可以保持模型在初始設計時的特性,并保持最優結構。
在論文研究中,作者還設計了有計劃的重新參數化卷積(Planned re-parameterized convolution)。
RepConv在VGG中有比較優異的性能,但當它直接應用于ResNet、DenseNet或者其他架構時,精度會明顯降低。
這是因為RepConv中的直連(Identity connection)破壞了ResNet中的殘差和DenseNet中的連接。
因此,論文研究中使用沒有直連的RepConv(RepConvN)來設計網絡結構。
在YOLOv7的標簽分配機制中,需要同時考慮網絡預測結果與基準,然后將軟標簽(綜合考慮,優化之后的標簽)分配到“label assigner”機制。
那么接下來,“軟標簽要分配給auxiliary head還是lead head呢?”
論文提出了一種新的標簽分配法,如下圖中的(d)、(e),基于lead head預測,生成從粗到細的層次標簽,分別用于lead head和auxiliary head的學習。
圖(d)讓較淺的auxiliary head學習lead head已經學習到的信息,而輸lead head則可以更專注于為學習到的殘差信息。
而e圖中,會生成兩組軟標簽,即粗標簽和細標簽。auxiliary head不如lead head學習能力強,因此要重點優化它的召回率,避免丟失掉需要學習的信息。
目前,YOLOv7已官方開源,有興趣的伙伴可以戳下文鏈接。