劉雅楠,李維乾
(西安工程大學 計算機科學學院,陜西 西安 710048)
目標檢測作為計算機視覺領域的重要分支,已廣泛應用于無人駕駛、行人檢測、人臉識別等領域?;谏疃葘W習的目標檢測算法通過訓練神經(jīng)網(wǎng)絡模型,由淺及深自動提取目標特征,具有更強的魯棒性,以快速、高效、準確的特點逐漸超越傳統(tǒng)算法成為主流。當前目標檢測主要分為一階段和兩階段算法。其中,以YOLO[1-3]系列算法為代表的一階段目標檢測直接生成候選框,通過對候選框進行回歸生成預測框;以RCNN[4-6]系列算法為代表的兩階段目標檢測先生成包含感興趣目標的候選區(qū)域,然后對候選區(qū)域的候選框進行回歸生成預測框。一階段算法相對于二階段算法準確率低,但提高了檢測速度。
如今,處理計算機視覺任務的總趨勢是制作更深、更復雜的網(wǎng)絡,以達到更高的精度。而更深的網(wǎng)絡模型通常伴隨著巨大的參數(shù)量,對存儲和計算資源有較高要求。因此,設計更輕量、高性能的網(wǎng)絡模型是未來的發(fā)展趨勢。輕量化神經(jīng)網(wǎng)絡架構的設計主要包括三個不同方向:人工設計輕量化網(wǎng)絡模型、基于神經(jīng)網(wǎng)絡架構搜索的自動化神經(jīng)網(wǎng)設計、神經(jīng)網(wǎng)絡模型的壓縮[7]。近年來,相關學者設計了一些高效的網(wǎng)絡模型,例如Iandola等[8]提出的SqueezeNet模型,該模型是將3×3卷積替換為1×1卷積,通過減少通道數(shù)來減少計算量和參數(shù)量;Zhang Xiangyu等[9]提出了ShuffleNet模型,采用深度可分離卷積和通道重排操作代替ResNet block相應的層,從而減少計算量,提高效率,解決了因多個group convolution疊加造成的邊界效應問題;Howard等[10]提出了MobileNet模型,該模型采用大量的深度可分離卷積設計的神經(jīng)網(wǎng)絡,大幅度減少了模型的參數(shù)量和計算量。文獻[11-12]分別將MobileVit和MobileNetv3結(jié)構作為主干特征提取網(wǎng)絡,通過深度可分離卷積大幅減少主干網(wǎng)絡參數(shù)量,然而上述改進的輕量化模型對于算力受限的設備仍過于龐大,且此類深度可分離卷積網(wǎng)絡模型由于GPU訪存帶寬的限制,讀寫數(shù)據(jù)過程占用了大量時間。
原始的YOLOv4模型以CSPDarknet53作為骨干網(wǎng)絡,復雜的網(wǎng)絡結(jié)構和更深的網(wǎng)絡層次導致模型占用內(nèi)存增大,對設備的計算能力也提出了更高的要求。為實現(xiàn)網(wǎng)絡輕量化,該文針對目標檢測網(wǎng)絡計算參數(shù)量大、運算復雜度高、小目標檢測效果差等問題,設計了一種改進的GhostNet-YOLOv4網(wǎng)絡模型,將原主干替換為GhostNet殘差結(jié)構,來降低計算量和參數(shù)量,提高運行效率。該方法簡化了網(wǎng)絡結(jié)構,有效減少模型計算量,改善模型的檢測效果;融合ECA注意力機制模塊,并引入Focal Loss,增強模型的特征提取,提高模型的檢測精度。
1.1.1 Ghost模塊
在卷積神經(jīng)網(wǎng)絡中,生成的輸入圖像的一些特征映射存在許多相似的特征映射對,就像彼此的幻影。一般情況下,這些大量存在的、豐富甚至冗余的特征映射信息,保證了對輸入數(shù)據(jù)的全面理解。因此,作為卷積網(wǎng)絡的一個重要組成部分,不能直接將冗余特征去除[13]。然而,這些冗余也伴隨著巨大的參數(shù)量和計算量,由于內(nèi)存和計算資源有限,很難在嵌入式設備上部署。Ghost模塊可以基于一組內(nèi)在特征映射,應用一系列線性變換生成許多能夠充分揭示內(nèi)在特征背后信息的重影特征映射,以一種高效的、低成本的方式生成足夠的特征映射,從而作為即插即用組件來升級現(xiàn)有的卷積神經(jīng)網(wǎng)絡。
普通卷積模塊直接通過卷積得到所有輸出信息,如圖1(a)所示;Ghost模塊整體思想分兩步:第一,先使用較少的卷積核生成一部分特征映射,如圖1(b)中先通過卷積生成少量特征映射;第二,對生成的固有特征映射應用輕量操作(包括深度卷積、分組卷積或其他方式的卷積)或恒等變換等一系列簡單的線性操作,生成更多的特征映射,保留冗余信息;最后,將生成的特征映射和最開始的固有特征進行恒等變換拼接在一起,如圖1(b)中的少量特征映射經(jīng)過一系列操作得到更多特征映射,二者拼接得到所有輸出信息。
(a)普通卷積結(jié)構
(b)Ghost模塊結(jié)構圖1 普通卷積結(jié)構和Ghost模塊結(jié)構
假定模型輸入尺寸為h×w×c,輸出為h'×w'×n,卷積核尺寸為k,Ghost模塊中的輕量操作采用深度卷積,分為s個部分。
則普通卷積的計算量為:
h'×w'×n×k×k×c
(1)
而采用Ghost模塊的計算量為:
k×k×1
(2)
可以得出使用Ghost模塊后壓縮率約為s:
(3)
因此,與普通卷積相比,Ghost模塊在不改變輸出特征映射大小的情況下,大幅降低了計算成本。
1.1.2 Ghost Bottleneck
Ghost Bottleneck結(jié)構類似于ResNet中的基本殘差塊,集成了幾個卷積層和shortcut。該部分主要由兩個堆疊的Ghost模塊組成,兩個模塊之間用shortcut連接,包括stride為1和stride為2兩種情況,如圖2所示。當stride為1時,第一個Ghost模塊充當擴展層,用于增加通道數(shù),第二個Ghost模塊用于減少通道數(shù),以匹配shortcut,shortcut用來連接這兩個模塊的輸入和輸出,且第二個模塊不使用ReLU激活函數(shù);當stride為2時,shortcut路徑由下采樣層和stride為2的深度卷積實現(xiàn),用于加速卷積操作。此外,Ghost模塊中的初始卷積均為1×1卷積,用于提高效率。
(a)stride=1 (b)stride=2圖2 Ghost Bottleneck結(jié)構
1.1.3 GhostNet
GhostNet是基于Ghost Bottleneck建立的一種高效神經(jīng)網(wǎng)絡結(jié)構,第一層是具有16個濾波器的標準卷積層,然后通過一系列Ghost Bottleneck逐漸壓縮特征映射的尺寸,擴大通道數(shù)。這些Ghost Bottleneck根據(jù)輸入特征圖的大小分為六個不同的階段,見表1中輸入為(208,208,16)(104,104,24)(52,52,40)(26,26,80)(26,26,112)(13,13,160)時的六個階段,除了前五個階段中每個階段的最后一個瓶頸步長為2之外,其余各部分GhostNet Bottleneck的步長均為1。整體結(jié)構參數(shù)如表1所示。
表1 GhostNet結(jié)構參數(shù)
當前主流的目標檢測網(wǎng)絡模型主要由主干網(wǎng)絡Backbone、頸部網(wǎng)絡Neck和頭部網(wǎng)絡Head構成。其中,主干網(wǎng)絡用于特征提取,頸部網(wǎng)絡用于加強特征提取,頭部網(wǎng)絡用于預測。YOLOv4模型[14]的主干網(wǎng)絡采用CSPDarknet53,CSPDarknet53是在Darknet53的基礎上融入了CSPNet結(jié)構,由五個殘差塊構成,分別包含1、2、8、8、4個殘差單元,用于提取輸入數(shù)據(jù)的特征;加強特征提取網(wǎng)絡由SPPNet和PANet構成,用于將主干網(wǎng)絡得到的三個初步特征層進行特征融合,從而獲得更有效的三個特征層。當主干網(wǎng)絡的最后一個特征層完成三次卷積操作后,SPPNet對最后一個特征層進行四個不同尺度的最大池化操作來增加感受野,分離出顯著的上下文特征。隨后將提取得到的特征層與主干網(wǎng)絡得到的另兩個特征層送入PANet,執(zhí)行自下而上和自上而下的雙向特征融合,實現(xiàn)特征的反復提取;頭部網(wǎng)絡則利用從PANet獲得的多尺度特征進行回歸和分類,最終輸出的維度包含樣本類別值、預測框在x軸和y軸的偏移量、預測框的高度和寬度及置信度。
目前為止,對圖像進行實時目標檢測面臨著挑戰(zhàn)和困難,首要就是深度神經(jīng)網(wǎng)絡存在復雜性和存儲量高的問題。針對這個問題,該文所做的工作主要分為以下三個方面:
(1)改進前的GhostNet-YOLOv4模型以YOLOv4模型為基礎,將YOLOv4原本的主干網(wǎng)絡CSPDarknet53替換為GhostNet中的Ghost模塊;
(2)在GhostNet-YOLOv4基礎上進行模型優(yōu)化,加入ECA注意力機制和Focal Loss,得到改進后的GhostNet-YOLOv4模型,在不影響模型運行速度的前提下,提高模型的檢測精度,具體網(wǎng)絡結(jié)構如圖3所示;
圖3 改進后的GhostNet-YOLOv4網(wǎng)絡模型
(3)將原YOLOv4模型、改進前后的GhostNet-YOLOv4模型分別在PASCAL VOC 2007數(shù)據(jù)集上進行目標檢測實驗,驗證該模型的優(yōu)越性。
近年來,通道注意機制在改善深度卷積神經(jīng)網(wǎng)絡性能方面顯示出巨大的潛力。然而,大多數(shù)現(xiàn)有方法致力于開發(fā)更復雜的注意模塊,以獲得更好的性能,這不可避免地增加了模型的復雜性。為了克服性能和復雜性權衡的矛盾,ECA注意力機制只涉及少量的參數(shù),提出了一種無降維的局部交叉信道交互策略[15],進行適當?shù)目缤ǖ澜换?從而在顯著降低模型復雜性的同時保持性能。通過實驗表明ECA注意力機制效率更高,同時性能優(yōu)于其他模塊,在圖像分類、目標檢測和實例分割方面表現(xiàn)出卓越的能力。
ECA模塊通過全局平均池化將輸入特征圖的信息壓縮為一個具有全局感受野的通道描述符,使用尺寸為k的一維卷積,從該通道描述符中獲取局部通道之間的相關性,再利用Sigmoid激活函數(shù)根據(jù)通道間的相關性計算出各通道的注意力值,最后作用在輸入的特征圖上,實現(xiàn)對特征通道的重標定。
其中一維卷積核的尺寸k由通道維數(shù)的函數(shù)來自適應確定,公式為:
(4)
其中,C表示通道數(shù),odd表示向上取最近的奇數(shù),該文γ和b分別取2和1。
2.2.1 置信度損失函數(shù)
置信度損失函數(shù)如下所示:
(5)
2.2.2 分類損失函數(shù)
分類損失函數(shù)如下所示:
(6)
2.2.3 回歸損失函數(shù)
回歸損失函數(shù)如下所示:
圖4 c、d示意圖
2.2.4 Focal Loss
一階段算法的檢測精度比不上兩階段,主要原因是訓練過程樣本不均衡[16]。樣本不均衡包括正負樣本不均衡、難易樣本不均衡等。目前解決這類問題主要有兩種方案,一是hard sampling方法,即從所有樣本中選擇一定量的正樣本和負樣本,只計算被選擇的樣本的loss,一般會傾向選擇一些困難負例樣本,比如OHEM[17];另外一類方法是soft sampling方法,計算所有樣本的loss,但是針對不同樣本賦予不同權值,比如Focal Loss。
Focal Loss由Ross Girshick、He Kaiming等于2017年提出。Focal loss主要對交叉熵損失函數(shù)進行了改進,解決負樣本不平衡問題[16]。
交叉熵如公式(8)所示。
(8)
為解決難負樣本不均衡問題,Focal Loss中引入表達式(9),使難樣本的loss進一步增加,負樣本的loss進一步降低。
(9)
除此之外,Focal Loss中還通過α來解決正負樣本不均衡問題,如公式(10)所示。
(10)
綜上,Focal Loss的綜合表達式為:
(11)
公式(9)~(11)中,γ和α為超參數(shù),文中分別取2和0.25。
實驗采用PASCAL VOC 2007數(shù)據(jù)集,包括aeroplane、bicycle、bird、boat、bottle、bus、car、cat、chair、cow、diningtable、dog、horse、motorbike、person、pottedplant、sheep、sofa、train、tvmonitor共20個類別,9 963張圖像,其中訓練集5 011張,測試集4 952張,累計標注目標24 640個。實驗在Windows 10操作系統(tǒng)下進行,使用Python 3.7進行編譯,開發(fā)平臺為PyCharm,深度學習框架為PyTorch,GPU為NVIDIA GeForce RTX 3090。
實驗使用SGD優(yōu)化器,動量設置為0.937,初始學習率設置為0.01,學習率衰減方式采用余弦退火算法;迭代次數(shù)為300,batch size為128,采用凍結(jié)訓練,50個epoch后batch size為64;數(shù)據(jù)增強方式采用Mosaic增強,在訓練小模型時適當弱化[18],將Mosaic系數(shù)設置為0.7。
該文使用AP和mAP作為衡量檢測精度的指標。在多類別物體檢測中,每一個類別都可以根據(jù)準確率P(Precision)和召回率R(Recall)繪制一條PR曲線。準確率和召回率的公式如下:
(12)
(13)
Precision和Recall是一對矛盾的度量,一般來說,Precision高時,Recall值往往偏低;而Precision值低時,Recall值往往偏高。當分類置信度高時,Precision偏高;分類置信度低時,Recall偏高。為了綜合考慮這兩個指標,使用F1-score對整體效果進行評估,公式如下:
(14)
AP表示PR曲線下的面積,mAP表示多個類別的AP的均值,公式如下:
(15)
其中,n表示類別總數(shù),TP表示被預測為正樣本的正樣本數(shù)量,FP表示被預測為正樣本的負樣本數(shù)量,FN表示被預測為負樣本的正樣本數(shù)量。
此外,為評測模型的輕量化效果,也將參數(shù)量和計算量納入評價指標。
在計算mAP時,為更好地測量模型對目標區(qū)域的定位精度,判斷檢測目標區(qū)域的預測框是否精確,使用IoU (Intersection over Union)作為衡量預測框與真實框的誤差標準。實驗在計算mAP時設置IoU為0.5。圖5、圖6表示改進后的GhostNet-YOLOv4模型訓練產(chǎn)生的P-R曲線、F1曲線(此處選取aeroplane、bicycle、bird、boat四類為例進行展示)。
圖5 模型訓練產(chǎn)生的P-R曲線
圖6 模型訓練產(chǎn)生的F1曲線
分別將YOLOv4原網(wǎng)絡模型、改進前的GhostNet-YOLOv4模型和改進后的GhostNet-YOLOv4模型在PASCAL VOC 2007數(shù)據(jù)集上運行,3種模型在20種目標類別上的AP如圖7所示。
圖7 YOLOv4、改進前的GhostNet-YOLOv4、改進后的GhostNet-YOLOv4在20種目標類別上的AP對比
模型整體參數(shù)量、計算量、mAP如表2所示。
表2 YOLOv4、改進前的GhostNet-YOLOv4、改進后的GhostNet-YOLOv4的參數(shù)量、計算量、mAP對比
為直觀展示文中算法的有效性,算法隨機抽取了三張圖片,將改進前和改進后的GhostNet-YOLOv4網(wǎng)絡模型的檢測效果進行對比,從左至右依次為原始圖像、改進前的GhostNet-YOLOv4檢測效果、改進后的GhostNet-YOLOv4檢測效果,如圖8所示??梢钥闯?改進后的GhostNet-YOLOv4檢測結(jié)果良好,能夠完成目標距離較遠、重疊、被遮擋、較小等情況下的檢測任務,且相比改進前的模型有更高的置信度。
圖8 改進前后的GhostNet-YOLOv4模型檢測效果對比
該文設計了一種基于YOLOv4的輕量化網(wǎng)絡模型,該模型主干網(wǎng)絡采用GhostNet殘差結(jié)構,并融合ECA注意力機制模塊,在保證一定的準確率的同時,極大地壓縮了模型占用內(nèi)存,解決了因大量卷積操作造成計算成本高、推理速度慢的問題。此外,還在模型中添加了焦點損失Focal Loss,幫助網(wǎng)絡提高檢測精度。結(jié)果表明,改進后的GhostNet-YOLOv4在PASCAL VOC 2007數(shù)據(jù)集上的mAP達到85.09%,相對于改進前的GhostNet-YOLOv4提高了1.65百分點;相對于YOLOv4,參數(shù)量、計算量減少為原來的六分之一。