吳 飛,李 綸
(武漢理工大學 機電工程學院, 武漢 430000)
胸環靶射擊項目是軍事實訓中十分重要的環節,簡單快捷的報靶流程也是研究重點。目前室內報靶環節在逐步智能化,但室外復雜環境的報靶工作,仍需依靠人工報靶員,具有較大風險[1-2]。解決室外自動報靶困難的關鍵在于彈孔識別與定位,室外的光照、陰影、樹葉對彈孔的遮擋、靶面振動等不穩定因素都影響著識別的正確率與穩定性[3]。因此,研究出能夠在復雜環境下對彈孔進行快速且精確識別的系統,對實現室外自動報靶具有重要研究意義和實際應用價值。
現階段利用視覺技術處理彈孔圖像的方式十分有潛力。王奇等[4]提出了一種基于紅外圖像的識別方法,利用紅外圖像檢測子彈上靶留下的熱量,結合幀間差分法識別光斑中心來判定彈孔位置,但對相距較近或重疊的彈孔識別情況較差。Zhu等[5]研究出一種基于方向梯度直方圖(HOG)和支持向量機(SVM)的算法:利用HOG提取梯度特征,用SVM來區分真實彈孔和干擾噪點,并建立彈孔數據庫,通過重新訓練的模型對彈孔進行識別與分類。上述傳統的圖像處理方式十分依賴由人工提取的特征點,導致特定環境下的目標描述性好,但泛化性和適應性較差。
深度神經網絡發展迅速,其可通過大量訓練來學習目標對象的本質信息,在復雜的場景任務中也能更好地表達目標特征[6]。其中卷積神經網絡[7](convolutional neural networks,CNN)最常應用于圖像領域,主要研究內容為目標檢測、語義分割、實例分割等[8]。目標檢測是通過網絡對目標進行定位,主要可分為2類:一類需要生成候選區再對候選區分類,以RCNN[9]、Fast R-CNN[10]為例;另一類則直接對圖像進行卷積,比如YOLO[11]系列、SSD系列[12]等,具有檢測速度快的優點。語義分割則是對圖像進行像素級預測,分割出含有語義信息的區域塊,典型代表有FCN[13]、DeepLab系列[14]。實例分割的經典網絡為Mask R-CNN[15],精度高但速度較慢。彈孔屬于小目標,具有攜帶信息少、下采樣特征易丟失等特點[16],現階段將深度神經網絡與彈孔識別結合起來的研究較少,因此想要同時兼顧實時性與精確度還需進一步研究。
綜上所述,本研究中選擇改進后的實例分割算法對彈孔痕跡進行識別并分割,以檢測速度和精度都十分優秀的YOLOv5的網絡為基礎,引入分割卷積層,調整網絡結構與預測尺度,增加對彈孔小目標的敏感度。同時模擬訓練環境對其進行測試,評估改進后模型的精度與速度。
本文圖像采集于6—8月份的武漢市森林公園,采集設備型號為英特爾RealSense d435i,圖像保存為.JPG格式,圖像分辨率為1 920×1 080。為模擬更加真實的報靶環境,采集時分為晴天、陰天和多云等天氣,時間段分為清晨、正午、傍晚3個時間段,每個時間段變換角度、距離采集200張圖像,一共挑選出1 200張圖像。為了保證樣本多樣性,同時避免訓練時產生過擬合等狀況,圖像樣本基本涵蓋了復雜背景中彈孔可能會出現的各種結果。比如:彈孔遮擋、彈孔模糊、樹影或樹葉遮擋等。圖1展示了一組收集到的復雜環境下的彈孔圖像。

圖1 復雜環境下的彈孔圖像
完成圖片樣本的基礎采集后,利用Labelme軟件對采集到的原始靶面圖像中的彈孔痕跡進行分割,圖2為訓練樣本及其標簽示例。

圖2 訓練樣本及其標簽實例
為豐富彈孔背景,增加樣本集數量,提高模型的魯棒性,還需對原始圖像進行數據增強。對每張照片隨機挑選一種處理方式,比如裁剪、旋轉、增加噪點、光學處理等,增強后的數據集共2 400張。按照8∶2的比例將數據集分為訓練集和驗證集,其中訓練集1 920張,驗證集480張。
原YOLOv5骨干網絡主要通過融合深層網絡信息,來增強網絡語義識別能力,利用特征金字塔網絡FPN(feature pyramid network)和路徑聚合網絡PAN(path aggregation network)對提取信息進行整合,最后輸出3種尺度特征圖來預測目標信息,結構如圖3(a)所示。采集照片尺寸為1 920×1 080,彈孔像素尺寸在30×30~50×50范圍內波動,目標像素點占原圖像素點的比例小于0.012%,在小目標中屬于極小類別,原有最大尺度失去預測意義,且原有小尺度已不適用彈孔目標。因此,本研究在原有特征融合金字塔網絡上,增加4倍下采樣的淺層特征圖信息,用來補充高層語義信息中缺失的底層空間信息,增加模型對彈孔小目標位置的敏感度。在預測特征圖方面,刪減32倍下采樣的大尺度預測圖,增加更小尺度的預測特征圖,增強對彈孔小目標的識別能力,結構如圖3(b)所示。

圖3 模型輸出特征圖尺度的改動
模型結構以YOLOv5網絡框架為基礎。在YOLOv5中,負責檢測目標邊界框的檢測端是卷積核為1×1、步長為1的卷積層,同時預測目標的回歸參數與類別概率。分類與回歸任務同時進行,導致兩者耦合產生沖突,影響網絡性能。本文中網絡采用YOLOX中的解耦思想對預測內容進行解耦,可以顯著提升收斂速度,解耦后的具體結構如圖4所示。

圖4 解耦端結構
解耦結構先通過卷積核1×1,步長為1的卷積模塊ConvBNSILU(Conv2D batch normalization silu)將通道個數調整為256,其中ConvBNSILU模塊包含了卷積層、BN層和采用SILU激活函數的激活層。再延伸出2個并行分支,其中一個分支針對目標信息預測,另一個分支繼續并行2個1×1的卷積層,分別預測目標回歸參數和預測框的置信度。
經典的分割網絡如FCN(fully convolutional networks),通過反卷積對特征層(feature map)進行上采樣(upsampling)恢復到原圖尺寸,并對像素進行分類。然而彈孔作為小目標,特征信息較少,若采用傳統上采樣的方式容易造成細節丟失,所以在分割解碼器中融合了增加感受野的模塊ASPP(atrous spatial pyramid pooling)和淺層空間信息。ASPP由3種不同尺度的空洞卷積層(dilated convolution layer)、1×1卷積層與平均池化層(adaptive avg pooling layer)構成,它可以在不丟失分辨率的情況下擴大卷積核的感受野以獲取更多細節信息,有利于提高小目標的檢測精度??斩淳矸e層是ASPP的核心,其不僅可以擴大感受野,還可以減少目標特征信息流失。相比普通卷積層,空洞卷積采集的像素點存在間隙,間隙大小程度由膨脹因子rate決定,如圖5所示。

圖5 不同膨脹因子及其對應感受野
由圖5可知,(a)為傳統卷積層rate為1,(b)和(c)顯示rate為2和3的卷積形態,等效卷積核大小分別為5×5和7×7。對于采用空洞卷積的特征層,其感受野計算式為:
RFi-1=[k+2(r-1)]+s(RFi-1)
(1)
式(1)中:RFi代表第i層感受野;k應卷積核尺寸;s應步長。取輸出特征層尺寸3×3,卷積核尺寸3×3,步長設置1為例子。此時普通卷積層感受野為5×5,而rate為2和3的感受野尺寸分別為7×7和9×9,可以最大化利用像素點信息,如圖4(d)、圖4 (e)、圖4(f)所示。
ASPP通過并聯3個不同膨脹因子的空洞卷積層,來獲取多尺度信息,此時特征層下采樣倍數為8,膨脹因子設置為{12,24,36}。同時并聯1×1卷積層與全局池化層,全局池化層通過1×1的卷積層調整通道數,再通過雙線性插值還原成輸入尺寸。最后拼接(Concat)5個部分并通過1×1的卷積層進行融合,詳細結構如圖6所示。

圖6 ASPP的并聯結構
分割解碼器的結構流程如圖7所示:先將8倍下采樣的高層語義特征圖送入ASPP模塊中,融合上下文信息并輸出尺寸不變的特征圖,再以雙線性插值的方式進行2倍上采樣,結合主干網絡同尺度的低層特征圖,通過1×1卷積層進行融合,得到下采樣倍數為4的特征層。接著采用相同的方法重復融合低層復雜邊緣空間信息,使得特征層在涵蓋復雜上下文語義信息的情況下,還能擁有良好的目標邊緣檢測能力。最后上采樣還原到輸入圖片尺寸,輸出分割特征圖。

圖7 分割解碼器結構示意圖
整體網絡結構分為特征提取主干(backbone)、融合層(neck)和解碼器(head)3個部分,改進后的網絡模型如圖8所示。其中backbone為CSP-Darknet53,為融入CSP模塊后的Darknet53網絡,CSP模塊為示意圖所標示的C3結構,具有增強網絡學習能力、減少網絡計算量和降低顯存占用的優勢。

圖8 改進后的網絡模型結構
Neck部分采用路徑聚合網絡PAN,在從底層到高層融合的特征金字塔FPN基礎上增加了從高層到底層融合的部分。充分利用backbone所提取的不同層次的特征信息,增加了對小目標彈孔的敏感度。
Head部分有2個分支,分別是對特征圖進行目標檢測(object detection head)與語義分割(SEGMENT HEad),兩者并聯進行。Segment Head以8倍下采樣特征層為基礎,結合ASPP模塊再融合2次低層空間信息,最后通過上采樣生成原圖尺寸的分割圖。目標檢測端輸出3種尺度的預測特征框,分別預測中小目標與極小目標,通過非極大值抑制篩除不滿足要求的預測框后,將預測結果圖也還原到原圖尺寸。最后將輸出的分割圖與目標檢測框圖相融合,得到每個彈孔的實例分割圖。
其中模型里采用的C3結構為CSP模塊變體, backbone部分C3結構和BottleNeck1的詳細結構如圖9(a)、(b)所示,BottleNeck1數量按下采樣順序由上到下依次為{3,6,9,3},PAN 的C3結構和backbone中相同,且BottleNeck2數量為固定值3。BottleNeck1相比BottleNeck2增加了殘差連接,其余卷積核尺寸都相同,如圖9(c)所示。

圖9 C3具體結構及其對應BottleNeck
金字塔池化SPP模塊主要用來解決目標多尺度問題,原有SPP模塊通過并聯3個尺寸為5×5、9×9、13×13的最大池化層來獲取局部特征和全局特征。而SPPF通過串聯3個尺寸為5×5的最大池化層的方式即可實現SPP的效果,運算速率卻比SPP增加2倍有余,顯著降低了計算量,如圖10所示。

圖10 改進后的空間金字塔模塊(SPPF)
本文中網絡的損失函數由2部分組成,包括目標檢測損失和分割掩膜(mask)預測損失為
Loss=Lobj+Lseg
(2)
Lobj=λ1Lcls+λ2Lconf+λ3Lloc
(3)
其中: 目標檢測損失Lobj包括3個部分:分類損失Lcls(Classes loss)、置信度損失Lconf(Confidence loss)和定位損失Lloc(Location loss),λ1λ2λ3為平衡系數。分類損失和置信度損失都采用二值交叉熵損失BCEloss(Binary Cross Entropy loss)計算,但Lcls只計算正樣本損失,Lconf計算所有樣本損失,公式為

(4)

(5)

LCIoU=1-CIoU
(6)
(7)

(8)

(9)
由式(7)可知,ρ2(b,bgt)代表真實框與預測框中心點的歐式距離,c則代表預測框與真實框最小外接矩形對角線的長度,wgt和w分別對應真實框與預測框的寬,hgt和h同理。分割損失Lseg同樣采用BCE loss進行計算,公式為

(10)

本研究中實驗采用平均交并比mIoU(mean intersection over unio)、像素精度PA(pixel accuracy)、平均準確率AP(average precision)、每秒傳輸幀數FPS(frames per second)為評價指標來衡量網絡檢測精度與性能。P代表精確率,R代表回召率,AP為以R為橫坐標P為縱坐標的PR曲線的面積,代表目標檢測平均精度值。

(11)

(12)

(13)
mIoU定義為預測值與真實值交集與并集的比值,PA表示預測正確的像素點數占總像素點數的比例,其表達式為

(14)

(15)
式(14)、式(15)中:(k+1)表示語義類別加上背景之后的總數;i表示真實值;j為預測值;Pii表示預測值等于真實值的像素點數;Pij表示類別i被預測為類別j的像素點數;∑jPij表示類別i的總像素個數。
本實驗在云服務器中搭建的環境里進行,處理器為AMD Ryzen9 5900X 12-core processor,服務器運行內存為62 GB,顯存為24 GB,型號是RTX A5000;利用TensorFlow構建網絡環境,版本為2.2.0,操作系統為Ubuntu18.04,編程語言為python3.8。
迭代次數(epoch)設置為150,Batch size設置為4。目標過于單一,為防止過擬合現象的出現,采用SGD優化器,優化器內置參數momentum設為0.9,權值衰減(weight decay)設為0.000 5。初始學習率設為0.01,最小學習率為最大學習率的1/100,設置為0.000 1,學習率下降的方式為余弦退火(cosine annealing)。隨著迭代次數的增加,訓練集與驗證集上的損失值變化曲線與如圖11所示。
由圖11可知,從第35輪開始,損失值下降趨勢減緩并趨于穩定,曲線接近擬合狀態,之后網絡損失一直在范圍內波動,但從70輪之后,驗證集損失值反而不降反升,說明網絡已經出現過擬合。評估擬合階段權重的精度值,選取精度最高的epoch83作為最優權重,此時AP=92%

圖11 訓練集與驗證集的損失曲線
本文中網絡模型以YOLOv5框架為基礎,融合分割模塊,實現對復雜環境小目標的實例分割。所以在實驗階段需結合經典語義分割模型Deeplabv3+、實例分割模型Mask RCNN和原網絡YOLOv5及最新YOLOv7模型進行對比分析。表1展示了不同算法在驗證集下的評估結果。

表1 不同網絡模型的評估結果
由表1可知,模型檢測精度為92.42%,相比Mask_RCNN增加了6.02個百分點,主干網絡替換成YOLOv5,省略了生成候選區的步驟,使檢測速度獲得顯著提升,FPS相比Mask_RCNN提升了6倍左右。與YOLOv5原網絡相比,識別精度對比s型有顯著提升,但模型結構復雜導致FPS只占原來的1/2;對比l型精度水平相當,FPS提高7.36幀/s。最新的YOLOv7網絡識別能力強,比本文模型精度略高,但運行較慢,FPS僅占本文網絡1/5。mIoU屬于語義分割模型特有的指標,雖然3種分割網絡結構不同,但mIoU值相近,無法比較出明顯區別,重點需要參考AP/PA值。在檢測精度方面,目標識別領域利用AP來評估,語義分割領域可以采用同樣衡量預測精度的指標PA來等效。由于主干網絡YOLOv5屬于目標檢測網絡,對目標抓取能力較強,本文中網絡模型相比backbone為MobileNetV2結構的Deeplabv3+網絡識別精度提升8.07個百分點,MobileNetV2屬于輕量化網絡,運算量較小,本文中模型FPS與其相近,略微提高0.6幀/s。Xception主干網絡較深,學習能力強,結構更加復雜,配合Deeplabv3+精度能夠達到94.85%,比本文模型高2.43個百分點,但FPS較低,只能達到4.95幀/s。綜上所述,本文網絡模型能夠在檢測精度接近YOLOv7、Deeplabv3+ (Xception)等優秀網絡的前提下,在檢測速度方面優于其他網絡,同時滿足準確性與實時性的需求。
本文中模型檢測結果如圖12所示,展示了模型在傍晚光照、陰影遮擋、彈孔模糊情況下的檢測效果。預測結果中,所有彈孔都被成功識別,沒有出現漏檢或誤檢情況,彈孔分割精度也滿足要求。

圖12 改進后的算法檢測效果
本文中研究對象為野外實彈訓練產生的靶面彈孔,彈孔顏色深,容易和深綠色靶紙和周圍環境混淆,影響識別準度與精度。因此,建立不同光照、不同陰影遮擋條件下的對比實驗,每一類挑選30張圖片進行測試。光照和陰影遮擋實驗的考察重點為彈孔輪廓的檢測精度與彈孔召回率,測試效果如圖13、圖14所示,其中為展現識別精度,對照網絡Deeplabv3+的主干網絡選為Xception。
由圖13可看出,改進后網絡識別出的分割掩膜更加貼近彈孔真實輪廓,效果強于Mask RCNN,與Deeplabv3+分割精度相近,能夠較好地表現出彈孔的復雜邊緣。對于識別難度較低的清晨光照環境,本文中網絡與YOLOv5(s)、YOLOv5(l)和YOLOv7都能識別出所有彈孔,但光照略微復雜的傍晚與正午環境,YOLOv5(s)容易出現不同程度的漏檢,而本文中網絡能夠保持與YOLOv7、YOLOv5(l)的識別精度,都能全面識別,符合評估結果。
圖14展現了改進后模型在復雜陰影和遮擋條件下分割精度與識別精度的對比試驗圖。因為環境更為復雜,所以只保留精度最高的YOLOv5(s)、YOLOv7網絡對比識別精度,Deeplabv3+對比分割精度。由圖可知,陰影對分割精度影響很大:對于遮擋小彈孔,Deeplabv3+易將樹葉錯誤分割成彈孔,如圖14(b)所示;對于位置相近的多彈孔,Deeplabv3+容易識別成單個目標,無法分割正確輪廓,如圖14(a)、圖14(c)所示。
在識別精度方面,不同網絡存在著不同程度的漏檢或誤檢。YOLOv5(l)只在單一陰影條件下識別效果良好,如圖圖14 (a),一旦陰影復雜就極易出現漏檢,在圖14 (b)中10個彈孔漏檢1個識別9個,圖14 (c)中將2個彈孔識別成1個,出現誤檢。YOLOv7在只有陰影的圖14 (a)中識別效果不錯,但在圖14 (b)中只識別出8個彈孔,漏檢2個,在圖14 (c)中相連的2個彈孔只識別出1個,漏檢1個。而本文算法在3種復雜情景都有較好的表現,彈孔全部識別成功,兼顧分割精度與識別準確率,由此可見在復雜環境中具有一定優勢。

圖13 不同網絡在3種光照下的識別對比圖

圖14 不同網絡在復雜陰影情況下的識別對比圖
1) 針對野外訓練的復雜環境下,靶面彈孔難以高效被識別的問題,提出同時融合目標檢測與語義分割的彈孔分割網絡,利用多任務訓練提升特征層對復雜環境彈孔小目標的識別精度與分割精度,降低模型運算量,滿足實時性需求。
2) 模型以YOLOv5主干網絡為基礎,融合分割模塊,調整輸出尺度,增加針對極小目標的預測層,并結合解耦思想,提高模型檢測精度。算法在驗證集下的精度為92.42%,FPS達到25.15幀/s。
3) 通過對比實驗可知,本文中模型無論是在復雜陰影或光照條件下,都可以識別所有彈孔痕跡,極少出現漏檢或誤檢情況,相比其他網絡模型,本文中算法在保持高精度識別條件的情況下,顯著提升了網絡的運算速度,滿足了實際訓練中精確度與實時性要求,擁有較好的綜合性能。