邱 錦,劉 健,沈蕓亦,吳中紅
(海軍工程大學兵器工程學院, 武漢 430033)
隨著人工智能、深度學習等技術(shù)的發(fā)展,采用就地爆破去清理啞彈(未爆手榴彈)的方法逐漸走向智能化、無人化,排爆機器人、啞彈清理機器人等概念相繼被學者們提出,其中,目標檢測是利用無人平臺實現(xiàn)排爆的基礎(chǔ)任務也是關(guān)鍵任務[1]。
目標檢測算法的核心是輸出物體的類別以及其在圖像中的位置,這2個過程也稱為分類與回歸[2]?;谏疃葘W習的目標檢測算法按檢測步驟分為單階段算法和雙階段算法[3]兩類。經(jīng)典的雙階段檢測算法有R-CNN[4]、SPP-Net[5],算法的基礎(chǔ)流程是先提取圖像中可能存在目標的區(qū)域生成候選區(qū),然后在候選區(qū)域上學習目標特征,即通過2種不同的學習網(wǎng)絡將目標分類和回歸過程分成兩階段實現(xiàn),因此,雙階段網(wǎng)絡模型參數(shù)大,占用存儲空間大,具有檢測精度高但實時性差的特點。單階段檢測算法在給定一張圖像作為輸入時,可以端到端輸出與輸入尺寸相同的檢測結(jié)果,其使用唯一的主干網(wǎng)絡直接生成目標的分類和回歸,加快了檢測速度但犧牲了部分精度,YOLO算法是經(jīng)典的單階段檢測算法之一,常常用在實時性要求高的檢測任務中,如自動駕駛領(lǐng)域、無人搜救領(lǐng)域。
常用于排爆的無人平臺有無人車、無人機、機器人[6-7]等,這些無人工具都需要具有可移動、高移速的特點,在進行完全自主的爆破任務時,要求其嵌入的檢測算法在模型大小上盡量輕,同時需要足夠好的性能,去滿足復雜環(huán)境下實時并高精準的獲取目標信息,保證無人平臺安全、順利的完成后續(xù)任務。
綜合分析,本文中選用YOLO算法為基礎(chǔ)算法,為實現(xiàn)機器人、無人車等排爆無人平臺在復雜環(huán)境下(即背景雜亂或存在彈體密集分布、彈體互相遮擋等檢測環(huán)境)的落地應用,對基于YOLOv5的手榴彈檢測算法輕量化改進展開研究。
YOLOv5目前已經(jīng)更新到6.0版本,官方給出算法在COCO數(shù)據(jù)集上實驗時,其與舊版本算法的性能對比數(shù)據(jù)如表1所示。相較于上一版本算法,其具體的改動如下:更新了超參數(shù),使用等效的普通卷積取代了Backbone中Focus層,減少了模型參數(shù)。沿用了5.0中C3模塊,將起到增大感受野作用的SPP模塊更新為SPPF(快速空間金字塔池化模塊),在未損失性能的前提下,整體減小了模型參數(shù),提高了模型推理速度。結(jié)合表1數(shù)據(jù)可得,6.0版本算法在推理速度上有明顯提升。
表1 5.0與6.0算法性能對比Table 1 Performance comparison between the 5.0 version algorithm and the 6.0 version algorithm
綜上分析,YOLOv5算法雖然已經(jīng)更新到6.0版本,但相較于5.0版本,其總體結(jié)構(gòu)沒有大幅的改進,本文中使用6.0版本中較為輕量的YOLOv5s作為基礎(chǔ)檢測框架,算法可按實現(xiàn)功能劃分為Input、Backbone、Neck、Output四部分,模型完整構(gòu)架如圖1所示。
圖1 YOLOv5 6.0 的完整網(wǎng)絡結(jié)構(gòu)Fig.1 The complete network structure of YOLOv5 6.0
圖片輸送到特征提取網(wǎng)絡前需要在算法的輸入端進行數(shù)據(jù)增強、統(tǒng)一圖片尺寸、自適應錨框計算等三大預處理操作。
YOLO算法在YOLOv4以后一直沿用Mosaic數(shù)據(jù)增強算法,其核心思想是隨機抓取訓練集中四張圖片,對抓取的圖片隨機剪裁、隨機翻轉(zhuǎn)、隨機縮放后拼接得到大圖,對拼接后的大圖resize、縮放等操作,得到固定尺寸的增強后數(shù)據(jù),增強了算法單批處理數(shù)據(jù)的能力,提高了模型的訓練速度,同時豐富了實驗訓練集、提高了模型的魯棒性。
YOLO是經(jīng)典的基于錨框匹配的檢測算法,在訓練階段,網(wǎng)絡需要在其針對不同數(shù)據(jù)集,設(shè)定特定尺寸(矩形框的長、寬)的初始錨點框的基礎(chǔ)上,生成預測框,通過不斷計算預測框與真實框的位置、尺寸差距,反向更新其參數(shù)去縮小差距,以保證其網(wǎng)絡的檢測準確率。自適應錨框生成算法即根據(jù)輸入的數(shù)據(jù)集,計算與數(shù)據(jù)集目標尺寸更為匹配的初始錨框,使得網(wǎng)絡在初始階段,能得到更貼合真實檢測框大小的預測框,提高訓練速度。YOLOv5算法預設(shè)的自適應錨框算法為k-means聚類算法以及遺傳算法,首先聚類得到錨點框、再通過遺傳算法生成變異錨點框,自適應獲取更適應數(shù)據(jù)集的預設(shè)錨框。
網(wǎng)絡的Backbone部分通常采用連續(xù)下采樣操作,自適應學習目標特征信息。YOLOv5中沿用CSPNet(跨階段局部網(wǎng)絡)的思想,搭建以CSPDarknet53為主要結(jié)構(gòu)的特征提取模型,將網(wǎng)絡梯度信息的變化反映到特征圖中,降低特征圖計算的冗余性,同時保證網(wǎng)絡獲取到豐富的梯度信息,提高了算法的運行效率。
圖片經(jīng)過輸入端完成預處理后進入到主干網(wǎng)絡中提取特征,隨后在網(wǎng)絡的Neck層完成特征多尺度融合,常用的融合方式如Concat、Add等。YOLO算法中為了能更充分的利用主干網(wǎng)絡提取到的特征,在其Backbone和Neck之間插入了SPPF層,增大層間感受野,在其瓶頸層采用經(jīng)典的FPN+PAN[8]復合結(jié)構(gòu),實現(xiàn)了特征圖的跨層融合,豐富了特征的多樣性。
YOLO的輸出層,包含 Bounding box損失計算、NMS非極大值抑制值兩大部分,損失函數(shù)沿用YOLOv4中的CIOU_Loss,在對生成的目標框篩選時,采用DIOU_nms,在不增加計算成本的前提下,增加了網(wǎng)絡的遮擋目標的檢測能力。最后用到3個不同尺度的檢測頭完成對目標的識別與定位,有效的緩解了多尺度檢測問題。
經(jīng)實驗表明:6.0版本的YOLOv5s應用在本文手榴彈數(shù)據(jù)集檢測中,算法檢測的平均精度達到99.5%,在準確率上已經(jīng)滿足實際需求,但距離嵌入移動設(shè)備中使用,其參數(shù)量仍有待降低。
從輕量化出發(fā),分兩階段改進算法:第一階段調(diào)整時,使用Ghost模塊做輕量化調(diào)整,即保留其等效Focus層的普通卷積層,用Ghost卷積模塊替換剩余普通卷積、采用Ghost bottleneck替換C3模塊中Bottleneck得到C3Ghost模塊,大幅降低模型參數(shù)。第二階段調(diào)整時,使用Coordinate注意力機制模塊(簡稱為CoordAtt或CA),應用到上一階段中得到的輕量化網(wǎng)絡中,提升其檢測效果,保證模型檢測準確率。
Ghost卷積(GhostConv)是在GhostNet[9]中提出的一種分階段卷積模塊,其主要思想是將傳統(tǒng)一步非線性卷積(非線性卷積=卷積+批歸一化+非線性激活函數(shù))替換為兩步卷積去獲得同樣數(shù)量特征圖的模塊(數(shù)量設(shè)為N張),即第一步使用少量卷積核對輸入圖片進行非線性卷積,輸出m個Intrinsic feature maps,在其基礎(chǔ)上使用線性卷積(只有卷積操作,這里常用分組卷積或深度可分離卷積),生成N-m張?zhí)卣鲌D,又稱為ghost feature maps,分步卷積的操作充分利用了特征間相關(guān)性,降低了網(wǎng)絡對冗余(相關(guān))特征的關(guān)注成本,減少了模型參數(shù)與計算量,使得算法能在小幅度犧牲精度的同時,達到提高運行速度的效果,其二者結(jié)構(gòu)對比圖,如圖2所示。
圖2 傳統(tǒng)卷積與ghost卷積結(jié)構(gòu)對比圖Fig.2 Comparison of traditional convolution and ghost convolution structures
Ghost Bottleneck是GhostNet中提出的一類即插即用模塊,可以用來減小傳統(tǒng)瓶頸層的計算量、輕量化網(wǎng)絡構(gòu)架。Ghost Bottleneck按功能劃分為擴張層和縮放層2部分,前者由步長為1 的Ghost模塊殘差連接構(gòu)成,其目的為增加模塊輸出通道數(shù);后者由步長為2的殘差塊構(gòu)成,用來減小輸出通道數(shù),保證了層間輸入、輸出通道數(shù)的一致性,提高了模型學習特征的速度,模塊結(jié)構(gòu)圖如圖3所示。
圖3 ghost bottleneck模塊結(jié)構(gòu)圖Fig.3 Structure diagram of ghost bottleneck module
在Ghost卷積模塊中,算法執(zhí)行減少非線性卷積操作時,容易丟失圖像的局部信息,導致網(wǎng)絡的精度下降。因此,本文中提出:在基于Ghost模塊輕量化改進后的網(wǎng)絡中添加注意力機制,保證網(wǎng)絡輕量性的同時,改善模型性能,提高算法識別精度。
注意力機制是一種通過自學習對輸入信息逐區(qū)域加權(quán)的模塊,其目的是讓模型更多的關(guān)注圖像中的目標信息(增大其學習權(quán)重),降低算法對無關(guān)信息的關(guān)注程度,從而學習到更多目標的細節(jié)信息。在圖像領(lǐng)域中常用到的注意力機制按其加權(quán)位置分為通道注意力機制(如SENet[10]、SKNet[11])、空間注意力機制(如CA[12])以及同時對通道、空間信息加權(quán)的混合注意力機制(如BAM[13]、CBAM[14])。
CA是將目標的全局位置信息嵌入通道注意力的空間注意力模塊[15],其結(jié)構(gòu)圖如圖4。
圖4 CA模塊結(jié)構(gòu)圖Fig.4 Structure diagram of CA module
如圖4所示,給定一個輸入時,CA模塊用到尺寸為(H,1)、(1,W)的2種池化核分別沿特征圖的H、W兩個不同方向(圖中表示為X、Y方向)進行池化得到2個特征圖,替代了傳統(tǒng)通道注意力機制,如SENet中的一步全局池化操作,將位置信息嵌入了特征圖中。隨后將得到的2個特征圖沿空間維度方向拼接融合,分離融合特征圖后得到2個特征圖,從而得到2組不同方向的注意力加權(quán)向量,這一步解決了傳統(tǒng)空間注意力機制,如CBAM中,位置注意力部分未構(gòu)建空間信息間長程依賴性問題。
綜上分析,為了抑制復雜環(huán)境下背景對目標的影響,選用CA注意力機制提升輕量化網(wǎng)絡的性能,考慮到SKNet中提出的觀點:注意力機制加在中淺層時,對網(wǎng)絡學習能力的影響更顯著。因此,本文中在輕量化模型的SPPF層前插入CA層。
為方便記錄實驗結(jié)果,將本文中基于Ghost模塊、CA模塊兩階段改進后的算法命名為YOLOv5-GA,其具體改進措施如上文中所描述,模型的具體結(jié)構(gòu)圖如圖5所示(G-CONV為ghostconv模塊縮寫,G-C3對應C3ghost模塊的縮寫)。
圖5 YOLOv5-GA完整結(jié)構(gòu)圖Fig.5 The complete network structure of YOLOv5-GA
對應的改進后算法網(wǎng)絡模型架構(gòu)及模塊參數(shù)如表2所示,其中,C3Ghost為C3模塊中傳統(tǒng)的瓶頸模塊更換為Ghost Bottleneck模塊形成的模塊;from表示輸入來自哪一層;n表示層間模塊疊加次數(shù);arguments表示模塊基本參數(shù),如:模塊輸入、輸出通道數(shù),卷積核大小、步長等參數(shù)。
表2 YOLOv5-GA算法架構(gòu)Table 2 YOLOv5-GA algorithm architecture
實驗軟硬件平臺如表3所示。
表3 實驗環(huán)境配置Table 3 Experimental environment configuration
本文中,采用相機實拍的方式制作手榴彈數(shù)據(jù)集,單張圖片單樣本,共采集圖片884張,用LabelImg軟件進行手工標注,按8∶2比例將數(shù)據(jù)集劃分為訓練集和驗證集。
訓練時在輸入端固定輸入圖片的尺寸為640*640,單批處理圖像數(shù)量(Batch size)設(shè)為32,默認訓練300個epochs,訓練參數(shù)如表4所示。使用YOLOv5自帶的K-means聚類算法生成3組錨框尺寸分別為:[64,64,90,110,139,128],[115,188,187,203,245,165],[167,275,230,329,318,254]。
表4 實驗參數(shù)設(shè)置Table 4 Experimental parameter settings
目標檢測領(lǐng)域常用精度、召回率以及平均精度來綜合衡量算法的檢測效果。YOLOv5在訓練后會自動生成記錄曲線,對于單類別的手榴彈檢測,其主要模型評估曲線有精度曲線(P曲線)、召回率曲線(R曲線)、P-R曲線以及AP@0.5曲線,其對應含義,如表5所示。
表5 模型評估指標Table 5 Evaluation metrics for the model
由于精確率與召回率在計算時兩者互相影響,單獨應用時,無法直接衡量出模型優(yōu)劣程度。因此,本文中采用AP@0.5(平均精度)評估模型的查全率和查準率[16],AP越高,模型的檢測精度越高。采用模型生成權(quán)重大小以及模型參數(shù)大小反應模型所占內(nèi)存大小,用模型處理單幀圖片的推理時間(inference),即圖像經(jīng)過預處理后輸入模型中到模型輸出檢測結(jié)果的時間,衡量模型運行速度。
為了驗證模型改進后的性能,在本文的數(shù)據(jù)集上使用YOLOv5s、基于Ghost模塊改進的YOLOv5-G算法以及基于Ghost以及CA兩種模塊綜合改進的YOLOv5-GA算法做改進前后模塊消融實驗,在損失函數(shù)達到收斂,訓練保存的tensorboard日志AP曲線對比圖如圖6所示。
圖6 AP@0.5曲線對比圖Fig.6 Comparison chart of AP@0.5 curve
為更好的展示改進后算法性能,增設(shè)YOLOv3算法實驗對比,歸納以上實驗中算法的部分參數(shù)、性能如表6所示。
表6 算法性能對比Table 6 Comparison of algorithms performance
4.2.1模塊改進效果分析
結(jié)合上節(jié)中表6和圖6分析,對于文中提出的兩階段改進算法,分階段得出以下結(jié)論:
1) 一階段YOLOv5-G算法:參數(shù)量下降到原算法(YOLOv5s)的1/2,模型權(quán)重減小一半,雖然實現(xiàn)了輕量化,但算法AP值下降幅度較大,由圖6可知,其AP曲線一直位于YOLOv5s算法及YOLOv5-G算法的AP曲線下方,結(jié)果表明,其精度比起原算法下降了5%,但模型推理速度加快了4.1 ms,算法精度有待進一步提高。
2) 二階段YOLOv5-GA算法:為了保證輕量化網(wǎng)絡的檢測精度,提出將CA模塊加入輕量化網(wǎng)絡的YOLOv5-GA算法,對比YOLOv5-G算法,在增加不到1%參數(shù)的前提下,其AP曲線在穩(wěn)定時一直位于YOLOv5s-G算法的AP曲線上方,AP值提高了4%,模型推理速度雖減緩1 ms,算法檢測精度達到98.4%。
4.2.2改進后檢測效果分析
在復雜環(huán)境下的各算法模型的檢測效果如圖7、圖8所示。分析檢測效果圖可知:加入注意力機制模塊的YOLOv5-GA算法,比起其他算法,相同環(huán)境下其檢測框上輸出的置信度分數(shù)更高,對手榴彈的識別更精確,由圖8中對比可得,注意力機制的添加對遮擋目標的識別效果也有所改善,但對遮擋目標的識別準確度有待進一步提升。
圖7 雜亂背景下檢測效果對比圖Fig.7 Comparison of detection effects of various algorithms under cluttered background
圖8 部分遮擋下檢測效果對比Fig.8 Comparison of detection effects of various algorithm under occlusion
由仿真實驗數(shù)據(jù)分析可得,YOLOv5-GA算法在自制手榴彈數(shù)據(jù)集上達到了高精度、輕量化的效果:
1) 對比YOLOv3算法:算法參數(shù)量及權(quán)重大小僅占YOLOv3算法的2%,模型推理速度加快了21.1 ms,但精度與該算法相差不到1%。
2) 對比YOLOv5s算法:YOLOv5-GA參數(shù)量及權(quán)重大小均下降到Y(jié)OLOv5s算法的1/2左右,檢測速度提高了3 ms,保證了算法的高實時性,降低了模型嵌入移動端時所需要的設(shè)備要求,減少了計算成本,提高了檢測效率。
綜上所述,文中針對算法在復雜環(huán)境下識別效率不高、不夠輕量化的問題,改進了YOLOv5算法,提出了YOLOv5-GA算法,在自制數(shù)據(jù)集上檢測效果良好,模型在復雜環(huán)境下識別目標的能力有所提高,同時,參數(shù)量大幅度降低,實現(xiàn)了檢測算法在高精度下的輕量化,識別效率不高的問題,對YOLOv5算法做出了輕量化改進,提出了YOLOv5-GA算法,在自制數(shù)據(jù)集上檢測能滿足更多嵌入式設(shè)備的需求。