目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)中一項(xiàng)艱巨的下游任務(wù)。對(duì)于車載邊緣計(jì)算平臺(tái),大模型很難達(dá)到實(shí)時(shí)檢測(cè)的要求。而且,由大量深度可分離卷積層構(gòu)建的輕量級(jí)模型無(wú)法達(dá)到足夠的準(zhǔn)確性。因此本文引入了一種新方法 GSConv 來(lái)減輕模型的復(fù)雜度并保持準(zhǔn)確性。GSConv 可以更好地平衡模型的準(zhǔn)確性和速度。并且,提供了一種設(shè)計(jì)范式,Slim-Neck,以實(shí)現(xiàn)檢測(cè)器更高的計(jì)算成本效益。在實(shí)驗(yàn)中,與原始網(wǎng)絡(luò)相比,本文方法獲得了最先進(jìn)的結(jié)果(例如,SODA10M 在 Tesla T4 上以 ~100FPS 的速度獲得了 70.9% mAP0.5)。
1簡(jiǎn)介
目標(biāo)檢測(cè)是無(wú)人駕駛汽車所需的基本感知能力。目前,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法在該領(lǐng)域占據(jù)主導(dǎo)地位。這些算法在檢測(cè)階段有兩種類型:?jiǎn)坞A階段和兩階段。兩階段檢測(cè)器在檢測(cè)小物體方面表現(xiàn)更好,通過(guò)稀疏檢測(cè)的原理可以獲得更高的平均精度(mAP),但這些檢測(cè)器都是以速度為代價(jià)的。單階段檢測(cè)器在小物體的檢測(cè)和定位方面不如兩階段檢測(cè)器有效,但在工作上比后者更快,這對(duì)工業(yè)來(lái)說(shuō)非常重要。
類腦研究的直觀理解是,神經(jīng)元越多的模型獲得的非線性表達(dá)能力越強(qiáng)。但不可忽視的是,生物大腦處理信息的強(qiáng)大能力和低能耗遠(yuǎn)遠(yuǎn)超出了計(jì)算機(jī)。無(wú)法通過(guò)簡(jiǎn)單地?zé)o休止地增加模型參數(shù)的數(shù)量來(lái)構(gòu)建強(qiáng)大的模型。輕量級(jí)設(shè)計(jì)可以有效緩解現(xiàn)階段的高計(jì)算成本。這個(gè)目的主要是通過(guò)使用 Depth-wise Separable Convolution (DSC)操作來(lái)減少參數(shù)和FLOPs的數(shù)量來(lái)實(shí)現(xiàn)的,效果很明顯。
但是,DSC 的缺點(diǎn)也很明顯:輸入圖像的通道信息在計(jì)算過(guò)程中是分離的。
圖 1
對(duì)于自動(dòng)駕駛汽車,速度與準(zhǔn)確性同樣重要。通過(guò) GSConv 引入了 Slim-Neck 方法,以減輕模型的復(fù)雜度同時(shí)可以保持精度。GSConv 更好地平衡了模型的準(zhǔn)確性和速度。在圖 1 中,在 SODA10M 的無(wú)人駕駛數(shù)據(jù)集上比較了最先進(jìn)的 Slim-Neck 檢測(cè)器和原始檢測(cè)器的速度和準(zhǔn)確度。結(jié)果證實(shí)了該方法的有效性。
圖2
圖2(a)和(b)顯示了 DSC 和標(biāo)準(zhǔn)卷積(SC)的計(jì)算過(guò)程。這種缺陷導(dǎo)致 DSC 的特征提取和融合能力比 SC 低得多。優(yōu)秀的輕量級(jí)作品,如 Xception、MobileNets 和 ShuffleNets,通過(guò) DSC 操作大大提高了檢測(cè)器的速度。但是當(dāng)這些模型應(yīng)用于自動(dòng)駕駛汽車時(shí),這些模型的較低準(zhǔn)確性令人擔(dān)憂。事實(shí)上,這些工作提出了一些方法來(lái)緩解 DSC 的這個(gè)固有缺陷(這也是一個(gè)特性):MobileNets 使用大量的 1×1 密集卷積來(lái)融合獨(dú)立計(jì)算的通道信息;ShuffleNets 使用channel shuffle來(lái)實(shí)現(xiàn)通道信息的交互,而 GhostNet 使用 halved SC 操作來(lái)保留通道之間的交互信息。但是,1×1的密集卷積反而占用了更多的計(jì)算資源,使用channel shuffle效果仍然沒(méi)有觸及 SC 的結(jié)果,而 GhostNet 或多或少又回到了 SC 的路上,影響可能會(huì)來(lái)從很多方面。
許多輕量級(jí)模型使用類似的思維來(lái)設(shè)計(jì)基本架構(gòu):從深度神經(jīng)網(wǎng)絡(luò)的開(kāi)始到結(jié)束只使用 DSC。但 DSC 的缺陷直接在主干中放大,無(wú)論是用于圖像分類還是檢測(cè)。作者相信 SC 和 DSC 可以結(jié)合在一起使用。僅通過(guò)channel shuffle DSC 的輸出通道生成的特征圖仍然是“深度分離的”。
圖 3
為了使 DSC 的輸出盡可能接近 SC,引入了一種新方法——GSConv。如圖 3 所示,使用 shuffle 將 SC 生成的信息(密集卷積操作)滲透到 DSC 生成的信息的每個(gè)部分。這種方法允許來(lái)自 SC 的信息完全混合到 DSC 的輸出中,沒(méi)有花里胡哨的東西。
圖 4
圖 4 顯示了 SC、DSC 和 GSConv 的可視化結(jié)果。GSConv 的特征圖與 SC 的相似性明顯高于 DSC 與 SC 的相似。當(dāng)在 Backbone 使用 SC,在Neck使用 GSConv(slim-neck)時(shí),模型的準(zhǔn)確率非常接近原始;如果添加一些技巧,模型的準(zhǔn)確性和速度就會(huì)超過(guò)原始模型。采用 GSConv 方法的Slim-Neck可最大限度地減少 DSC 缺陷對(duì)模型的負(fù)面影響,并有效利用 DSC 的優(yōu)勢(shì)。
主要貢獻(xiàn)可以總結(jié)如下:
引入了一種新方法 GSConv 來(lái)代替 SC 操作。該方法使卷積計(jì)算的輸出盡可能接近 SC,同時(shí)降低計(jì)算成本;
為自動(dòng)駕駛汽車的檢測(cè)器架構(gòu)提供了一種新的設(shè)計(jì)范式,即帶有標(biāo)準(zhǔn) Backbone 的 Slim-Neck 設(shè)計(jì);
驗(yàn)證了不同 Trick 的有效性,可以作為該領(lǐng)域研究的參考。
2本文方法
2.1 為什么要在Neck中使用GSConv
為了加速預(yù)測(cè)的計(jì)算,CNN 中的饋送圖像幾乎必須在 Backbone 中經(jīng)歷類似的轉(zhuǎn)換過(guò)程:空間信息逐步向通道傳輸。并且每次特征圖的空間(寬度和高度)壓縮和通道擴(kuò)展都會(huì)導(dǎo)致語(yǔ)義信息的部分丟失。密集卷積計(jì)算最大限度地保留了每個(gè)通道之間的隱藏連接,而稀疏卷積則完全切斷了這些連接。
GSConv 盡可能地保留這些連接。但是如果在模型的所有階段都使用它,模型的網(wǎng)絡(luò)層會(huì)更深,深層會(huì)加劇對(duì)數(shù)據(jù)流的阻力,顯著增加推理時(shí)間。當(dāng)這些特征圖走到 Neck 時(shí),它們已經(jīng)變得細(xì)長(zhǎng)(通道維度達(dá)到最大,寬高維度達(dá)到最?。?,不再需要進(jìn)行變換。因此,更好的選擇是僅在 Neck 使用 GSConv(Slim-Neck + 標(biāo)準(zhǔn)Backbone)。在這個(gè)階段,使用 GSConv 處理 concatenated feature maps 剛剛好:冗余重復(fù)信息少,不需要壓縮,注意力模塊效果更好,例如 SPP 和 CA。
2.2 Slim-Neck
作者研究了增強(qiáng) CNN 學(xué)習(xí)能力的通用方法,例如 DensNet、VoVNet 和 CSPNet,然后根據(jù)這些方法的理論設(shè)計(jì)了 Slim-Neck 結(jié)構(gòu)。
1、Slim-Neck中的模塊
首先,使用輕量級(jí)卷積方法 GSConv 來(lái)代替 SC。其計(jì)算成本約為 SC 的60%~70%,但其對(duì)模型學(xué)習(xí)能力的貢獻(xiàn)與后者不相上下。然后,在 GSConv 的基礎(chǔ)上繼續(xù)引入 GSbottleneck,圖5(a)展示了 GSbottleneck 模塊的結(jié)構(gòu)。
圖5
同樣,使用一次性聚合方法來(lái)設(shè)計(jì)跨級(jí)部分網(wǎng)絡(luò) (GSCSP) 模塊 VoV-GSCSP。VoV-GSCSP 模塊降低了計(jì)算和網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜性,但保持了足夠的精度。圖 5 (b) 顯示了 VoV-GSCSP 的結(jié)構(gòu)。值得注意的是,如果我們使用 VoV-GSCSP 代替 Neck 的 CSP,其中 CSP 層由標(biāo)準(zhǔn)卷積組成,F(xiàn)LOPs 將平均比后者減少 15.72%。
最后,需要靈活地使用3個(gè)模塊,GSConv、GSbottleneck 和 VoV-GSCSP。
2、Slim-Neck針對(duì)YOLO系列的設(shè)計(jì)
YOLO 系列檢測(cè)器由于檢測(cè)效率高,在行業(yè)中應(yīng)用更為廣泛。這里使用 slim-neck 的模塊來(lái)改造 Scaled-YOLOv4 和 YOLOv5 的 Neck 層。圖 6 和圖 7 顯示了2種 slim-neck 架構(gòu)。
圖 6
圖 7
3、免費(fèi)的改進(jìn)Tricks
可以在基于 CNNs 的檢測(cè)器中使用一些局部特征增強(qiáng)方法,結(jié)構(gòu)簡(jiǎn)單,計(jì)算成本低。這些增強(qiáng)方法,注意力機(jī)制,可以顯著提高模型精度,而且比Neck 簡(jiǎn)單得多。這些方法包括作用于通道信息或空間信息。SPP 專注于空間信息,它由4個(gè)并行分支連接:3個(gè)最大池操作(kernel-size為 5×5、9×9 和 13×13)和輸入的 shortcut 方式。它用于通過(guò)合并輸入的局部和全局特征來(lái)解決對(duì)象尺度變化過(guò)大的問(wèn)題。YOLOv5 作者的 SPP 改進(jìn)模塊 SPPF 提高了計(jì)算效率。該效率 增加了近 277.8%。通式為:
其中,是 SPPF 模塊中第i個(gè)分支的最大池化的kernel-size。
圖 8
圖 8 (a) 和 (b) 顯示了 SPP 和 SPPF 的結(jié)構(gòu)。SE是一個(gè)通道注意力模塊,包括兩個(gè)操作過(guò)程:squeeze和excitation。該模塊允許網(wǎng)絡(luò)更多地關(guān)注信息量更大的特征通道,而否定信息量較少的特征通道。CBAM 是一個(gè)空間通道注意力機(jī)制模塊。CA 模塊是一種新的解決方案,可以避免全局池化操作導(dǎo)致的位置信息丟失:將注意力分別放在寬度和高度兩個(gè)維度上,以有效利用輸入特征圖的空間坐標(biāo)信息。圖9(a)、(b)和(c) 顯示了 SE、CBAM 和 CA 模塊的結(jié)構(gòu)。
圖 9
4、損失和激活函數(shù)
IoU 損失對(duì)于基于深度學(xué)習(xí)的檢測(cè)器具有很大的價(jià)值。它使預(yù)測(cè)邊界框回歸的位置更加準(zhǔn)確。隨著研究的不斷發(fā)展,許多研究人員已經(jīng)提出了更高級(jí)的 IoU 損失函數(shù),例如 GIoU、DIoU、CIoU 和最新的 EIoU。5個(gè)損失函數(shù)定義如下:
其中參數(shù)“A”和“B”表示Ground truth邊界框的面積和預(yù)測(cè)邊界框的面積;參數(shù)“C”表示Ground truth邊界框和預(yù)測(cè)邊界框的最小包圍框的面積;參數(shù)“d”表示封閉框的對(duì)角線頂點(diǎn)的歐式距離;參數(shù)“ρ”表示Ground truth邊界框和預(yù)測(cè)邊界框質(zhì)心的歐式距離;參數(shù)“α”是權(quán)衡的指標(biāo),參數(shù)“v”是評(píng)價(jià)Ground truth邊界框和預(yù)測(cè)邊界框長(zhǎng)寬比一致性的指標(biāo)。
CIoU loss是目前Anchor-based檢測(cè)器中使用最廣泛的損失函數(shù),但CIoU loss仍然存在缺陷:
其中“δv /δw”是“v”相對(duì)于“w”的梯度,“δv/δh”是“v”相對(duì)于“h”的梯度。
圖 10
根據(jù) CIoU 損失的定義,如果,CIoU 損失將退化為DIoU損失,即CIoU損失中添加的懲罰項(xiàng)的相對(duì)比例(αv)將不起作用。此外,w和h的梯度符號(hào)相反。
因此,這兩個(gè)變量(w或h)只能在同一方向上更新,同時(shí)增加或減少。這不符合實(shí)際應(yīng)用場(chǎng)景,尤其是當(dāng) 且 $hw^{gt}h>h^{gt}$ 時(shí)。EIoU loss沒(méi)有遇到這樣的問(wèn)題,它直接使用預(yù)測(cè)邊界框的w和h獨(dú)立作為懲罰項(xiàng),而不是w和h的比值。圖10是這些損失函數(shù)的不同評(píng)估指標(biāo)的3個(gè)示例。
在深度網(wǎng)絡(luò)上,使用 Swish 和 Mish 的模型的準(zhǔn)確性和訓(xùn)練穩(wěn)定性通常比 ReLU 差。Swish 和 Mish 都具有無(wú)上界和下界、平滑和非單調(diào)的特性。它們定義如下:
在更深的網(wǎng)絡(luò)上,Mish 的模型準(zhǔn)確度略好于 Swish,盡管實(shí)際上2條激活函數(shù)曲線非常接近。與 Swish 相比,Mish 由于計(jì)算成本的增加而消耗更多的訓(xùn)練時(shí)間。
3實(shí)驗(yàn)
3.1 Trick消融實(shí)驗(yàn)
3.2 損失函數(shù)對(duì)比
3.3 Yolo改進(jìn)
3.4 可視化結(jié)果對(duì)比
4參考
[1].Slim-neck by GSConv: A better design paradigm of detector architectures for autonomous vehicles
審核編輯 :李倩
-
目標(biāo)檢測(cè)
+關(guān)注
關(guān)注
0文章
209瀏覽量
15606 -
無(wú)人駕駛汽車
+關(guān)注
關(guān)注
17文章
150瀏覽量
37362 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5502瀏覽量
121124
原文標(biāo)題:改進(jìn)Yolov5 | 用 GSConv+Slim Neck 一步步把 Yolov5 提升到極致?。。?/p>
文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論