?

融合GhostNet的YOLOv4輕量化網絡設計與實現

2024-03-05 01:41石博雅董學峰
小型微型計算機系統 2024年3期
關鍵詞:注意力卷積精度

石博雅,董學峰

(天津工業大學 電子與信息工程學院,天津 300387)

0 引 言

在人工智能領域中,計算機視覺技術已廣泛地應用于智能安防[1]、自動駕駛[2]、遙感監測[3]等領域.其中卷積神經網絡以其優越的性能,在目標檢測領域中有著出色的表現.隨著目標檢測算法性能逐漸提升和邊緣計算不斷發展,一方面網絡參數和計算量在不斷地增長,另一方面邊緣計算中大部分的目標檢測任務需要在資源有限的嵌入式設備上進行部署,二者的矛盾愈發突出,這在一定程度上阻礙了深度學習技術在實際場景的應用.因此針對存儲容量小、算力有限的嵌入式設備,需要對網絡進行輕量化改進.

基于深度學習的目標檢測算法有兩類:2階段(two stage)和1階段檢測算法(one stage).2階段檢測算法的代表有:R-CNN[4]、Fast R-CNN[5]、Faster R-CNN[6]等,它的特征是先由算法產生一系列樣本候選框然后利用卷積對樣本進行分類,最后通過分階段操作,使其檢測精度較高,但檢測速度較慢,達不到實時檢測.1階段檢測算法的代表有:SSD[7]、YOLO[8]等,它是通過回歸直接輸出目標的位置及類別,不需要進行候選框操作,提升了檢測速度.針對基于深度學習的目標檢測算法在嵌入式設備難以部署的問題,研究人員在算法層面進行了改進.田港等[9]提出一種基于YOLOv4的改進網絡模型,采用雙尺度預測模型,并進行了通道裁剪,針對無人機目標檢測,模型尺寸相比YOLOv4減小了60%,速度達到58FPS,mAP下降了1.52%.Liu等[10]提出一種基于YOLOv4的改進網絡模型,采用反向深度可分離卷積(RDSC),并應用于原網絡的主干網絡以及特征增強網絡中,針對無人水面航行器(USA)的目標檢測,模型權重大小相比YOLOv4減小了40%.Fang等[11]在YOLOv4基礎上,采用MobileNetv3作為主干網絡,并使用深度可分離卷積以及通道注意力機制(ECA)優化SPP以及PANet網絡,改進后參數量為原模型的一半,針對變電站人員不規則行為的檢測速率達到38.06FPS.Ying等[12]基于YOLOv4進行改進,采用MobileNetv3-Small作為主干網絡,引入深度可分離卷積以及倒置的殘差結構,并引入注意力機制,針對田間雜草檢測,模型尺寸相較于YOLOv4減小了37.9%,檢測精度下降了0.49%.以上算法雖對網絡結構進行了改進,但網絡的參數量對于需低功耗且資源有限的嵌入式設備還有待改進.

本文的目的是針對嵌入式設備,設計一個參數量小的輕量化網絡結構來完成推斷工作,所做的工作主要分為以下幾點:

1)在YOLOv4基礎上,采用GhostNet[13]代替CSPDarknet53[14]作為主干特征提取網絡,利用標準卷積和線性變換相結合降低模型參數和計算量.

2)在YOLOv4-GhostNet的基礎上引入CBAM[15]注意力機制,在不增加計算開銷的同時提升檢測精度.

3)對YOLOv4-GhostNet-CBAM網絡進行8bit量化操作得到YOLOv4-Light模型,在犧牲少量檢測精度的前提下,大幅降低網絡模型尺寸,提升檢測速率,實現實時檢測.

4)在PC端和NVIDIA Jetson Xavier NX上,分別對YOLOv4、YOLOv4-GhostNet-CBAM和YOLOv4-Light模型進行無人機數據集多目標檢測實驗,驗證模型性能.

1 YOLOv4網絡結構

YOLOv4網絡結構分為3部分:主干特征提取網絡、頸部網絡和目標檢測器,如圖1所示.

圖1 YOLOv4網絡結構圖Fig.1 YOLOv4 network structure diagram

YOLOv4在YOLOv3算法基礎上進行了多方面的優化.首先將主干特征提取網絡Darknet53更換為CSPDarknet53.CSPDarknet53中包含著5個CSP模塊,該模塊將基礎層的特征映射分為兩部分,然后通過跨階段層次結構進行合并,這樣在大大減小參數量的同時可以保證檢測精度.其次在頸部網絡采用空間金字塔池化(SPP)和路徑聚合網絡(PANet)結構.在加強特征提取網絡中引入SPP[16],使用不同尺寸的最大池化方式,再將不同尺度的特征圖進行Concat操作,大大增加了特征信息的感受野,獲得更高的語義信息;采用PANet方式進行自底向上路徑強化,利用精確的低層定位信號加強整個特征層次,從而縮短了底層與頂層特征間的信息路徑.然后與FPN層相結合,實現高語義信息自頂向下的傳遞,再結合PAN結構實現自底向上傳遞強定位特征,從而實現了不同特征層的特征融合.另外在輸入端引入了Mosaic數據增強方式,豐富了檢測數據集,尤其是縮放增加了很多小目標,增強了網絡的魯棒性.同時采用Mish激活函數,提高了YOLOv4網絡模型的泛化能力.對YOLOv4算法進行上述幾點改進后,檢測速度和精度均得到了提高.

2 YOLOv4網絡改進

2.1 主干網絡優化

目前廣泛使用的輕量化網絡主要有MobileNet和GhostNet.MobileNet中最具代表性的是MobileNetv3,其融合了MobileNetv1和MobileNetv2的深度可分離卷積以及倒殘差結構,并引用了SE(Squeeze and Excitation)[17]輕量級注意力機制,在損失有限精度的前提下,檢測速度可明顯提升.而在ImageNet 分類任務中,GhostNet在保持與MobileNetv3相似計算量的前提下,檢測精度有1%左右的提升.因此本文將YOLOv4的主干提取網絡改為GhostNet網絡.針對深度神經網絡中的大量卷積運算,GhostNet網絡中的Ghost模塊通過線性變換與標準卷積相結合,從而減少模型參數和計算量.

Ghost模塊將標準卷積層分為兩部分,其中一部分用于做標準卷積,但是嚴格控制其數量,然后另一部分將第一部分生成的固有特征圖進行一系列的簡單線性運算用于生成最終的輸出特征圖,最后將兩部分進行Concat操作得到完整的輸出層.這樣在不改變輸出特征圖大小的情況下,通過更小的計算成本即可獲得完整的輸出層特征圖.標準卷積與Ghost模塊如圖2所示.

圖2 標準卷積與Ghost模塊Fig.2 Standard convolution and Ghost module

對于標準卷積操作,給定輸入數據X∈Rh×w×c,其中h是輸入特征圖的高度,w是輸入特征圖的寬度,c是輸入通道數,則生成n個特征圖的任意卷積層的運算如公式(1)所示:

Y=X×f+b

(1)

其中b為偏差項,f∈Rc×k×k×n是該特征層的卷積核,Y∈Rh′×w′×n是有n個輸出通道的輸出特征圖.在此卷積過程中,其計算量FLOPS是巨大的,它的運算如公式(2)所示:

FLOPS=c×k×k×n×h′×w′

(2)

其中h′、w′分別為輸出特征圖的高度和寬度,k為卷積核f的尺寸.

而Ghost模塊是對其中一部分特征圖進行卷積操作,也就是對m個原始輸出特征圖Y′∈Rh′×w′×m使用一次標準卷積完成,其中m≤n,運算如公式(3)所示:

Y′=X*f′

(3)

其中f′∈Rc×k×k×m是該特征層使用的卷積核,不包含偏差項.為了進一步獲取所需的n個特征圖,對得到的m維的特征圖進行一系列的簡單線性變化,以生成s個相似特征圖,運算如公式(4)所示:

(4)

(5)

其中d為每個線性操作的平均內核大小.從公式(5)可知,Ghost模塊將計算分為兩部分,一部分是普通卷積運算,另一部分是線性變換運算,結合公式(2)得出模型的壓縮比約為s,大大減小了參數量.

為構建GhostNet,設計了Ghost Bottleneck模塊,該模塊類似于ResNet中的基本殘差塊,由兩個Ghost模塊堆疊而成,如圖3所示.其中第1個Ghost模塊是用來增加通道數的擴展層;第2個Ghost模塊用于減少通道數,使其與輸入端的通道數量相匹配.

圖3 Ghost Bottleneck模塊Fig.3 Ghost Bottleneck module

當輸入尺寸為416×416時,GhostNet網絡架構如表1所示.

表1 GhostNet網絡架構Table 1 GhostNet network architecture

2.2 CBAM注意力機制

CBAM(Convolutional Block Attention Module)注意力機制是在SE注意力機制的基礎上進行了改進.SE注意力機制僅關注了在卷積池化過程中特征圖的不同通道的重要程度不同,未考慮同一通道不同位置的重要程度也是不同的問題.CBAM注意力機制既聚焦于通道維度,又聚焦于空間維度.在通道注意力機制模塊相比SE注意力機制增加了一個并行的global maxpooling操作,使得提取的高層次語義信息更加豐富.然后再通過空間注意力機制模塊的最大池化與平均池化的操作,使其通過學習的方式更加關注目標區域,同時抑制無用信息.

CBAM注意力機制屬于輕量級的注意力機制模塊,帶來的計算開銷可以忽略不計.CBAM的模塊組成如圖4所示.將CBAM注意力機制加入到YOLOv4-GhostNet中,構成改進后的YOLOv4-GhostNet-CBAM網絡,結構如圖5所示.

圖4 CBAM注意力機制Fig.4 CBAM attention mechanism

圖5 YOLOv4-GhostNet-CBAM網絡結構圖Fig.5 YOLOv4-GhostNet-CBAM network structure

2.3 量 化

量化是指用于執行計算時以低于浮點精度的位寬存儲張量的技術[18].通過對模型的權重數值進行量化,減小模型尺寸,同時提高系統吞吐量,降低系統延時,使其能夠更好的應用到移動端環境.

本文選擇的是在pytorch框架下進行量化,該框架提供了3種量化方法:

1)訓練后動態量化:其中權重被提前量化,但是激活值在推理過程中被動態量化,為最簡單的一種量化方法.

2)訓練后靜態量化:其中權重被提前量化,并在校準過程中計算激活張量的比例因子和偏差,整個過程不存在兩個參數的二次計算.

3)感知量化訓練:在訓練過程中進行量化,通過torch.quantization.FakeQuantize函數模擬量化過程,量化后的權重仍為float32,但大小和INT8權重大小相同.此方法的優點是精度比訓練后量化更高.

本文采用感知量化方法,將模型由float32量化為INT8的形式.量化過程中使用縮放因子和偏移量兩個因子來保證區間內的變量都能精確地映射到要量化的整形數值區間.量化過程中的縮放因子如公式(6)所示:

(6)

其中X代表原始浮點數,Q代表量化后的整形數,Scale表示量化前后的網絡參數的對應關系,由神經網絡訓練出來的參數Xmax,Xmin和本文要量化的整形數據格式Qmax,Qmin計算得出.

量化過程中的偏移量如公式(7)所示:

Zero_Point=round(Qmax-Qmin)

(7)

最終的量化參數如公式(8)所示:

(8)

由以上可知Scale和Zero_Point對應著一個量化過程,且由模型自動配準精度損失小的Zero_Point和Scale進行量化.式(7)與式(8)中的兩次取整操作會對模型的檢測精度造成一定的損失,因此需要仔細比對選擇一個精度大的量化參數Q.通過以上的量化操作,即得到本文所需要的輕量化網絡模型.

2.4 損失函數

損失函數用來衡量網絡模型的性能,當損失函數的值越接近0時,表明該網絡模型的性能魯棒性越好.其中DIOU[19]考慮直接最小化預測框與實際框的歸一化距離,由此出現了DIOU Loss,計算如公式(9)所示:

(9)

其中b,bgt分別表示預測框和真實框的中心點位置,ρ表示兩點的歐氏距離.兩框重疊面積、中心點距離、長寬是目標回歸損失中應當考慮的3個重要因素,而DIOU Loss只考慮了前兩項,并未考慮長寬比,精度受限.針對此問題改進得到CIOU Loss,計算如公式(10)所示:

(10)

其中α是權重,ν是用來衡量長寬比.CIOU Loss的運算公式中增加了一個影響因子αν運算,考慮了長寬比,使得CIOU Loss收斂速度與精度更高,本文采用CIOU Loss作為損失函數.

3 實驗結果與分析

本文實驗操作系統為Ubuntu 18.04.5,使用Pytorch(1.7.1)框架進行網絡結構的改進以及量化,CPU為Intel(R)Core(TM)i5-11400H,GPU為NVIDIA RTX3050,CUDA 版本為11.0,進行推斷和測試操作的嵌入式設備型號為NVIDIA Jetson Xavier NX.

3.1 實驗數據集

本文設計的目的是在資源有限的嵌入式設備上實現無人機數據集的多目標檢測.這里選用VisDrone[20]無人機數據集,它區別于傳統目標檢測數據集的特點是單張圖片中被測目標尺寸較小且數量較多,可達幾十個,因此檢測難度增大.VisDrone無人機數據集共分為10個類,其中訓練和驗證的圖片共6317張,測試的圖片共702張.

3.2 實驗參數

本文在實驗中將訓練與測試的輸入圖片尺寸統一設置為1024×1024的JPG格式,Batch size設置為32,Epoch設置為300,學習率設置為0.001,并采用余弦退火策略自動調整學習率.在輸入端使用Moscia數據增強方式,增加訓練的數據量.同時采用標簽平滑方法優化損失函數,提高圖像分類的準確性,將平滑標簽smooth_label設置為0.01.

3.3 評價指標

在目標檢測領域中,評價一個模型檢測精度的性能指標有平均精度(Average Precision,AP)和均值平均精度(ean Average Precision,mAP)兩種,二者分別用來衡量單目標和多目標的檢測性能.本文用于實現無人機數據集的多目標檢測,故選擇mAP作為模型檢測精度的評價指標,并且在IOU為0.5的條件下統計各目標的均值平均精度(mAP50).

由于本文是在資源有限的嵌入式設備上來部署模型,進行推斷任務,因此需要在檢測精度不降低或有限降低的前提下,最大限度的縮小模型尺寸(SIZE),以減少計算量,提高檢測速率.故本文選擇模型尺寸和幀率(FPS)作為評價指標.

3.4 消融實驗

消融實驗中將MobileNetv3和GhostNet分別作為YOLOv4的主干特征提取網絡的模型進行性能對比,驗證算法改進的合理性.在PC端和硬件平臺Jetson Xavier NX上進行測試.測試尺寸統一設置為1024×1024,結果如表2所示.從表中可以看出將主干特征提取網絡替換為GhostNet的模型尺寸相較于MobileNetv3降低了7M,檢測精度提升了1%,檢測速度也有所提升,從而可以看出GhostNet作為主干特征提取網絡各方面性能均優于主干特征提取網絡為MobileNetv3的模型.

表2 兩種模型在兩種平臺的性能對比Table 2 Performance comparison of two models on two platforms

針對在YOLOv4主干特征提取網絡改為GhostNet的基礎上添加注意力機制進行消融實驗驗證.分別將SE、CBAM以及SE+CBAM注意力機制加入到改進的網絡模型中,然后在PC端和硬件平臺Jetson Xavier NX進行測試,測試尺寸統一設置為1024×1024,性能評價結果如表3所示.其中YOLOv4+G+S、YOLOv4+G+C和YOLOv4+G+SE+SC分別代表在GhostNet作為YOLOv4主干特征提取網絡上加入SE、CBAM和SE+CBAM注意力機制.

表3 SE、CBAM、SE+CBAM注意力模塊嵌入改進模型在兩種平臺的性能對比Table 3 Performance comparison of SE,CBAM,SE+CBAM attention module embedding improved model on two platforms

從表3可以看出將SE、CBAM、SE+CBAM3種注意力機制模塊分別嵌入YOLOv4-GhostNet后,在兩種測試平臺下CBAM注意力機制模塊相比其他兩模塊在近乎相同速度的情況下,性能表現是最優的,mAP值達到了49.9%.通過添加輕量級的注意力機制模塊,令算法在參數量減小的同時保證檢測精度,進一步提升了模型的性能.

3.5 測試結果分析

為了進一步驗證模型性能,分別將YOLOv4、YOLOv4-GhostNet-CBAM算法在PC端上進行測試,同時將YOLOv4-GhostNet-CBAM和YOLOv4-Light算法在硬件平臺Jetson Xavier NX上進行測試.本文在訓練階段將圖片尺寸設置為1024×1024,然后分別在608×608、800×800、1024×1024共3個尺寸上進行測試,結果如表4所示.從表4看出,在模型尺寸上,YOLOv4-GhostNet-CBAM模型尺寸是160M,比YOLOv4降低了34.43%;YOLO-Light僅為40.2M,相比YOLOv4模型尺寸降低了83.5%.YOLOv4、YOLOv4-GhostNet-CBAM和YOLOv4-Light的最高檢測精度分別為50.3%、49.9%和47.3%,YOLOv4-Light相比于YOLOv4檢測精度僅降低了3%,但YOLOv4-Light的檢測速率最高可達到78.6FPS,為YOLOv4的最高檢測速率3.6倍.因此,本文設計的輕量化網絡雖檢測精度略有下降,但整體性能可以滿足實際需求.

表4 本文算法優化過程中各個階段模型在兩種平臺的性能對比Table 4 Performance comparison of the models in each stage of the algorithm optimization process in this paper on the two platforms

YOLOv4、YOLOv4-GhostNet-CBAM以及量化后的YOLOv4-GhostNet-CBAM在NVIDIA Jetson Xavier NX設備上使用VisDrone數據集中圖像的測試效果分別如圖6~圖8所示.本文選擇在光線充足與光線暗淡兩種場景下進行測試,通過檢測結果對比來看,無論是在光線充足還是暗淡的場景下,YOLOv4和YOLOv4-GhostNet-CBAM檢測精度相差不大,而量化后YOLOv4-Light的檢測效果略差,但在精度損失有限的情況下,檢測速率有了極大的提高.

圖6 YOLOv4在 NX端兩種場景下的測試效果圖Fig.6 Test effect diagram of YOLOv4 under two scenarios on NX side

圖7 YOLOv4-GhostNet-CBAM在NX端兩種場景下的測試效果圖Fig.7 Test effect diagram of YOLOv4-GhostNet-CBAM under two scenarios on NX side

圖8 YOLOv4-Light在NX端兩種場景下的測試效果圖Fig.8 Test effect diagram of YOLOv4-Light under two scenarios on NX side

4 結束語

本文針對當前目標檢測算法參數量過大,難以部署在資源及算力有限的嵌入式設備的問題,設計了一款輕量化網絡模型.基于YOLOv4目標檢測算法,采用GhostNet替換YOLOv4的主干提取網絡CSPDarket53,解決了大量卷積帶來的計算開銷大的問題;然后通過引入CBAM注意力機制,使其更加關注目標區域,強調重要特征,增強網絡模型的魯棒性;最后對網絡進行量化處理.實驗結果表明該輕量化網絡在保證較高精度的同時模型尺寸有了大幅度減小,檢測速率有了較大提升,可以在低功耗場景下完成無人機目標實時檢測的任務,在嵌入式設備上所表現的整體性能達到預期.下一步將對目標出現嚴重遮擋的問題進行研究,并引入剪枝算法與量化算法相結合,更大尺度地進行模型壓縮,進一步提升目標檢測算法在嵌入式設備上的推斷速度,增加網絡模型的實用性.

猜你喜歡
注意力卷積精度
讓注意力“飛”回來
基于3D-Winograd的快速卷積算法設計及FPGA實現
從濾波器理解卷積
基于DSPIC33F微處理器的采集精度的提高
基于傅里葉域卷積表示的目標跟蹤算法
“揚眼”APP:讓注意力“變現”
A Beautiful Way Of Looking At Things
GPS/GLONASS/BDS組合PPP精度分析
改進的Goldschmidt雙精度浮點除法器
一種基于卷積神經網絡的性別識別方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合