李宇翔,王 帥,2,陳 偉,3,田子建,侯麟朔
(1.中國礦業(yè)大學(xué)(北京)機(jī)電與信息工程學(xué)院,北京 100083;2.內(nèi)蒙古煤礦安全監(jiān)察局 鄂爾多斯監(jiān)察分局,內(nèi)蒙古 鄂爾多斯 017000;3.中國礦業(yè)大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 徐州 221116)
目標(biāo)檢測是計算機(jī)視覺領(lǐng)域的基礎(chǔ)任務(wù)之一,屬于計算機(jī)視覺的分支,其廣泛應(yīng)用于人員監(jiān)測、視頻監(jiān)控、智能交通等諸多領(lǐng)域[1]。目標(biāo)檢測技術(shù)是通過對圖像或視頻等進(jìn)行特征提取,從中識別、定位待檢測的目標(biāo)。過去目標(biāo)檢測以傳統(tǒng)算法為主,包括:AdaBoost算法框架、HOG特征和支持向量機(jī)等。相較于傳統(tǒng)的人工特征檢測方法,基于深度學(xué)習(xí)的檢測方法能學(xué)習(xí)圖像更深層的語義特征,特征表達(dá)能力更強(qiáng),識別精度更高。
目標(biāo)檢測網(wǎng)絡(luò)可分為二階段網(wǎng)絡(luò)和單階段網(wǎng)絡(luò)。二階段網(wǎng)絡(luò)首先提出備選區(qū)域,然后對備選區(qū)域進(jìn)行分類以及回歸,如:R-CNN系列[2-4]、RFCN[5]、Mask-RCNN[6]等。雖然該類算法準(zhǔn)確度較高,但其檢測速度過慢、實時性較差,難以應(yīng)用于移動部署環(huán)境。單階段檢測網(wǎng)絡(luò)能直接識別并標(biāo)定目標(biāo)位置,如:YOLO系列[7-9]、SSD[10]等,該類算法檢測速度更快,可用于實時檢測。
由于檢測場景背景復(fù)雜、體積過小以及目標(biāo)堆積遮擋等原因影響,小目標(biāo)漏檢、誤檢是目標(biāo)檢測中最常見的問題之一。長期以來,許多研究人員針對小目標(biāo)檢測提出了一系列的改進(jìn)措施。文獻(xiàn)[11]在SSD算法的基礎(chǔ)上提出一種改進(jìn)的I-Darknet53骨干網(wǎng)絡(luò),并融合了注意力機(jī)制,有效結(jié)合了不同通道之間的特征信息,提高了模型檢測精度。文獻(xiàn)[12]在YOLOv4中引入空洞卷積擴(kuò)大感受野,有效提升了中小目標(biāo)檢測性能。文獻(xiàn)[13]通過在YOLOv5骨干網(wǎng)絡(luò)增加淺層特征圖,豐富了目標(biāo)的位置信息,并優(yōu)化改進(jìn)目標(biāo)框回歸公式。以上方法雖然提升了小目標(biāo)的檢測精度,但檢測速度都有不同程度的下滑,F(xiàn)PS也有所下降。
針對小目標(biāo)漏檢、誤檢等問題,并兼顧檢測精度與實時性,本文提出了基于YOLOv5的改進(jìn)輕量化高效檢測模型:
1)融合Coordinate Attention(CA)[14]注意力機(jī)制。在骨干網(wǎng)絡(luò)中加入CA注意力機(jī)制,在關(guān)注通道間信息聯(lián)系的同時,考慮了特征空間的位置信息,有效增強(qiáng)學(xué)習(xí)特征的表達(dá)能力,從而提高模型精度。
2)借鑒雙向加權(quán)特征金字塔網(wǎng)絡(luò)結(jié)構(gòu)[15]替換路徑聚合網(wǎng)絡(luò)(Path Aggregation Network,PAN)。原PAN結(jié)構(gòu)計算量較大,且未能很好地將淺層特征與深層特征融合。本文設(shè)計了不同的跨層加權(quán)連接結(jié)構(gòu)用于特征融合,從而獲得更豐富的語義信息。
3)引入Ghost模塊[16]。在骨干網(wǎng)絡(luò)中將Ghost模塊嵌入到普通的Conv和C3卷積模塊中,減少參數(shù)量,在略微降低精度的基礎(chǔ)上確保了模型輕量化。
4)增加檢測頭。改進(jìn)后獲得了更豐富的深層語義信息,有效提高了檢測精度。
為提升模型性能,大多輕量級網(wǎng)絡(luò)引入了SE、CBAM等注意力模塊。SE注意力機(jī)制是在通道上計算注意力分布,學(xué)習(xí)不同通道間的關(guān)系,但忽略了對特征圖位置信息的學(xué)習(xí);CBAM注意力機(jī)制則是聚焦于空間信息的聚合,但其缺乏對長期依賴關(guān)系的信息提取,效果未達(dá)到最優(yōu)?;诖?,本文引入坐標(biāo)注意力機(jī)制(CA)來提升模型效果。CA模塊不僅能有效獲取不同通道間的信息,還考慮了特征空間的位置信息,通過精確的位置信息對通道關(guān)系和長距離依賴關(guān)系進(jìn)行編碼,解決了SE和CBAM模塊的不足之處,有助于更精確地定位和識別目標(biāo)。
通道注意力機(jī)制中采用全局池化編碼,將全局信息轉(zhuǎn)換成標(biāo)量,會忽略掉大量重要的空間信息。針對此問題,CA注意力將全局池化操作優(yōu)化為寬度方向和高度方向的兩個1維方向的池化操作。CA注意力模塊如圖1所示。
圖1 CA注意力模塊
對于輸入尺寸為C×H×W的特征圖X,首先采用尺寸為(H,1)和(1,W)的池化核將輸入特征圖沿著寬度和高度兩個維度進(jìn)行全局平均池化,分別獲得在水平方向特征zh,大小為C×1×H,以及垂直方向特征zw,大小為C×1×W。在通道c的輸出分別為:
接著將得到的兩個空間方向的特征圖拼接在一起,采用尺寸大小為1×1的卷積核降維,并通過批量化處理以及Sigmoid函數(shù)進(jìn)行非線性化操作:
得到特征圖f,其大小為C r×1×(W+H),其中r為壓縮因子。然后沿著水平和垂直方向?qū)分解為兩個方向上的張量,通過1×1卷積核升維以匹配通道數(shù)。采用Sigmoid激活函數(shù)處理后分別得到高度和寬度方向的注意力權(quán)重,操作如下所示:
最后,將得到的注意力權(quán)重通過乘法與原始特征圖X(i,j)進(jìn)行加權(quán)計算,便得到帶有注意力權(quán)重的特征圖Yc(i,j):
如圖2所示,在骨干網(wǎng)絡(luò)中引入CA模塊來增強(qiáng)模型提取位置信息和特征表達(dá)能力。
圖2 改進(jìn)后骨干網(wǎng)絡(luò)
YOLOv5頸部層采用PAN結(jié)構(gòu),該結(jié)構(gòu)逐層連接存在貢獻(xiàn)較小的融合冗余信息,使得計算量過大;并且在融合不同的輸入特征時直接進(jìn)行拼接,沒有考慮到不同的輸入特征具有不同的尺度,且不同尺度的跨層特征圖通常對融合輸出特征的貢獻(xiàn)不均等?;诖?,本文借鑒雙向加權(quán)特征金字塔網(wǎng)絡(luò),設(shè)計了加權(quán)跨層特征融合網(wǎng)絡(luò)(Weighted Cross-Layer Feature Fusion Network,WCL-FFN)替 換原PAN結(jié)構(gòu),如圖3所示。
圖3 加權(quán)跨層特征融合網(wǎng)絡(luò)
本文特征融合結(jié)構(gòu)改進(jìn)點如下:
1)加深特征金字塔深度,并增加檢測頭匹配。高層特征圖的感受野較大,其包含的語義信息更加豐富。將低層位置特征信息與高層語義信息相融合,更有利于小目標(biāo)的識別與檢測。
2)刪除不必要節(jié)點并增加跨層連接。沒有參與特征融合的節(jié)點,對于融合不同特征的特征網(wǎng)絡(luò)的貢獻(xiàn)較小,將網(wǎng)絡(luò)中只有一條輸入邊的節(jié)點刪除,簡化了特征融合網(wǎng)絡(luò),有效減少了模型計算量。對于同一尺寸的特征圖,增加兩條額外的跨層連接,如圖3虛線所示。這能在略微增加計算量的情況下融合更多的特征信息,提高網(wǎng)絡(luò)檢測精度。
3)加權(quán)特征融合。引入可學(xué)習(xí)的權(quán)重來學(xué)習(xí)不同輸入特征的重要性,類似于注意力機(jī)制;這能使模型減少次要特征的權(quán)重,側(cè)重于更重要、更關(guān)鍵特征的學(xué)習(xí)。計算公式如下:
式中:Ii表示輸入特征圖;wi是該輸入特征圖可學(xué)習(xí)的權(quán)重系數(shù);ε=10-4,可避免訓(xùn)練過程中數(shù)值不穩(wěn)定。以加權(quán)跨層特征網(wǎng)絡(luò)的第4層的兩個融合特征為例,具體計算過程如下:
式中:Conv表示對輸入特征圖進(jìn)行卷積、BN以及激活操作;Resize表示對輸入特征圖進(jìn)行上采樣或下采樣操作,使其與待融合特征圖尺寸匹配。
在引入注意力機(jī)制和雙向加權(quán)特征金字塔網(wǎng)絡(luò)后,雖然檢測精度得到了較大提升,但網(wǎng)絡(luò)的參數(shù)和計算量有一定增加,影響模型的檢測速度。為降低模型體積,采用輕量化模塊優(yōu)化骨干網(wǎng)絡(luò)。
輕量級網(wǎng)絡(luò)MobileNet提出的Depthwise以及ShuffleNet中的shuffle操作都是基于1×1卷積降維升維來減少計算量,在訓(xùn)練網(wǎng)絡(luò)過程中仍存在特征冗余,占用大量內(nèi)存。Ghost模塊可以從廉價的線性變換、組合操作中生成更多的特征圖,并且這些特征圖可以充分表達(dá)特征信息?;诖耍疚牟捎肎host模塊及其組合模塊替代原有卷積操作。Ghost模塊如圖4所示,其中圖4a)為普通卷積操作,圖4b)為Ghost卷積模塊。
圖4 卷積對比圖
Ghost模塊分兩步操作:首先,采用普通卷積計算,得到通道數(shù)較少的特征圖;然后,利用線性操作得到更多的特征圖,將輸出結(jié)果與恒等映射在通道方向上拼接,得到輸出特征圖。
假設(shè)輸入特征圖數(shù)據(jù)為h·w·c,n維卷積核尺寸為k×k,卷積輸出為h′·w′·n,則在普通卷積過程中,計算量為n·h′·w′·c·k·k。
假設(shè),在Ghost模塊的線性操作中有1個恒等映射和m·(s-1)=n/s·s·(s-1)個線性運(yùn)算,且每個線性運(yùn)算的平均核大小等于d×d,則用Ghost模塊替換普通卷積的理論加速比為:
由上述計算可知,在相同操作下,Ghost模塊相比普通卷積計算量減少了s倍?;诖耍疚囊訥host模塊為基礎(chǔ)構(gòu)建了G-Conv、G-BottleNeck、G-C3模塊替代原算法的相關(guān)卷積模塊。G-Conv系列模塊如圖5所示。在瓶頸結(jié)構(gòu)中加入DW卷積模塊進(jìn)一步減少模型計算量,并將新構(gòu)建的G-BottleNeck模塊替換原瓶頸結(jié)構(gòu)組成G-C3模塊?;谏鲜龈倪M(jìn),本文提出的YOLOv5-CBGhost如圖6所示。
圖5 G-Conv系列模塊
圖6 YOLOv5-CBGhost結(jié)構(gòu)圖
本文選用VOC 07+12公共數(shù)據(jù)集進(jìn)行實驗。訓(xùn)練集選用VOC 07+12的訓(xùn)練數(shù)據(jù)集,共16 551張圖片;測試集選用VOC07的測試數(shù)據(jù)集,共4 952張圖片;輸入圖片尺寸統(tǒng)一為640×640。
本文所有實驗均在Ubuntu 18.04上進(jìn)行,采用的深度學(xué)習(xí)框架為Pytorch 1.18.0,參數(shù)環(huán)境:CUDA版本為11.4,CPU為Inter Core Processor x4,GPU為NVIDIA GeForce RTX 2070 SUPER,顯存為8 GB,編譯語言為Python 3.6。
為避免訓(xùn)練時模型震蕩,使模型收斂效果更好,本文實驗先采用warmup方法預(yù)熱模型,即訓(xùn)練開始時采用較小的學(xué)習(xí)率訓(xùn)練,再經(jīng)過幾輪次訓(xùn)練后調(diào)整回設(shè)定的初始學(xué)習(xí)率。預(yù)熱結(jié)束后,采用余弦退火算法將學(xué)習(xí)率調(diào)整至最終學(xué)習(xí)率。
為充分驗證本文提出的三種改進(jìn)策略的有效性,設(shè)置了消融實驗與對比實驗以探究改進(jìn)方法對YOLOv5s的性能影響。評估指標(biāo)包括參數(shù)量、權(quán)重大小、計算量(GFLOPS)、mAP以及單幀檢測時間(FPS)等。mAP表示IOC閾值為0.5時的mAP,其計算公式如下:
式中:P為準(zhǔn)確率;R為召回率;TP為真正例;FP為假正例;FN為假負(fù)例。
訓(xùn)練損失曲線如圖7所示。對于三類損失曲線:定位、分類以及置信度損失,改進(jìn)模型收斂速度更快。如圖8所示,改進(jìn)后模型mAP有一定程度的提升。
圖7 訓(xùn)練損失曲線對比圖
圖8 驗證集mAP對比圖
為驗證引入注意力機(jī)制、Ghost模塊、WCL-FFN模塊的有效性以及改進(jìn)算法的性能提升,本文設(shè)置了消融實驗用于評估不同模塊在相同條件下對算法性能的影響,結(jié)果如表1所示。
表1 消融實驗
由表1可知:相比于SE模塊和CBAM模塊,CA模塊提升更為明顯,達(dá)到了2.7%;在引入改進(jìn)后的WCL-FFN時,mAP提升了5.5%,證明本文提出的特征融合結(jié)構(gòu)更有利于目標(biāo)的識別與檢測,但參數(shù)量與計算量有一定程度的增加,而本文Ghost模塊的引入能大幅降低網(wǎng)絡(luò)復(fù)雜度。經(jīng)實驗,使用G-Conv系列模塊替換后,參數(shù)量減少了48.3%,精度降低2.4%;與原算法對比,本文改進(jìn)算法CBGhost計算量減少42.5%,mAP提升3.0%。
圖9為YOLOv5s與加入不同注意力機(jī)制后的熱力對比圖,由圖可知,CA注意力機(jī)制引入后,模型對待測目標(biāo)關(guān)注度提升更大,對位置信息的捕捉更為精確,更有助于目標(biāo)的定位和識別,從而提高模型精度。
圖9 不同注意力機(jī)制熱力對比圖
為驗證改進(jìn)算法對小目標(biāo)檢測的性能提升,本文設(shè)置了小目標(biāo)檢測對比實驗,結(jié)果如表2所示。改進(jìn)后算法對小目標(biāo)提升效果較大,除對瓶子的檢測精度有所下降外,對其他四類目標(biāo)均有一定程度提升,小目標(biāo)類總體mAP提高了3.5%。
表2 小目標(biāo)檢測性能對比
圖10展示了模型改進(jìn)前后的檢測效果對比。當(dāng)鳥類較為密集時原算法出現(xiàn)了漏檢與誤檢情況,部分鳥類未檢測出且將貼近湖面的鳥類誤檢成船類,而CBGhost表現(xiàn)出較優(yōu)良的檢測性能,未出現(xiàn)漏檢與誤檢情況;在背景環(huán)境復(fù)雜、檢測目標(biāo)密集且相互遮擋時,兩類算法均出現(xiàn)漏檢情況,但改進(jìn)算法漏檢數(shù)量明顯少于原算法??梢姡珻BGhost算法能提取到更豐富的語義信息,在小目標(biāo)檢測上性能更優(yōu),檢測精度更高。
圖10 小目標(biāo)檢測對比圖
為驗證本文所提算法的有效性,將改進(jìn)后算法與原YOLOv5s以及目前主流目標(biāo)檢測模型進(jìn)行性能對比,對比結(jié)果如表3所示。由表3可知,YOLOv5-CBGhost在VOC測試數(shù)據(jù)集上達(dá)到81.8%的檢測精度,較原YOLOv5s算法提高了3.0%,模型大小略微減少,F(xiàn)PS基本持平。表中輕量化模型雖然檢測速度快,但精度較低;又如SSD、R-FCN等網(wǎng)絡(luò)檢測精度較高,但速度較慢,難以滿足實時性需求。總體來說,本文提出的改進(jìn)算法兼顧準(zhǔn)確性與實時性,性能更加優(yōu)越,能高效地滿足實時性工業(yè)檢測任務(wù)。
表3 主流算法性能對比
本文提出一種兼顧準(zhǔn)確性和實時性的改進(jìn)算法YOLOv5-CBGhost。針對檢測效果不佳,小目標(biāo)檢測存在漏檢、誤檢的問題,引入CA注意力機(jī)制和改進(jìn)WCS-FFN網(wǎng)絡(luò)。CA注意力機(jī)制兼顧跨通道間特征信息和位置信息的獲取,有助于網(wǎng)絡(luò)更精確地定位和識別小目標(biāo);改進(jìn)WCS-FFN結(jié)構(gòu)有效融合了更多的多尺度特征信息,有助于模型學(xué)習(xí)更豐富的特征,提高目標(biāo)檢測精度。最后,在骨干網(wǎng)絡(luò)引入Ghost模塊使模型更加輕量化,以緩解引入CA模塊和改進(jìn)特征融合網(wǎng)絡(luò)造成的實時性性能損失。實驗結(jié)果證明,相比YOLOv5s,改進(jìn)YOLOv5-CBGhost算法檢測精度更高,有效緩解了小目標(biāo)漏檢、誤檢的問題,具有優(yōu)秀的準(zhǔn)確性和實時性。