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