羅逸豪
(1.中國船舶集團(tuán)有限公司第七一〇研究所,湖北 宜昌 443003;2.清江創(chuàng)新中心,湖北 武漢 430076)
成像聲吶通過發(fā)射和接收聲信號進(jìn)行成像,探測距離遠(yuǎn),是目前水下探測的常用設(shè)備,被廣泛應(yīng)用于水下勘探、水下救援、敵對目標(biāo)偵察等任務(wù)。聲吶圖像的自主目標(biāo)識別(Autonomous Target Recognition,ATR)即目標(biāo)檢測(Object Detection),需定位圖像中最可能包含目標(biāo)的區(qū)域,并確定目標(biāo)的類別[1]。傳統(tǒng)目標(biāo)檢測算法通常先基于滑動窗口等篩選方法枚舉出所有可能的目標(biāo)外接矩形框,然后利用人工設(shè)計的邊緣、紋理等特征進(jìn)行分類,無法在復(fù)雜多變的水下環(huán)境中取得良好性能。
近年來,深度學(xué)習(xí)取得了突破性進(jìn)展,以層次化的方式構(gòu)建特征提取模塊,逐層連接構(gòu)成的深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)通過數(shù)據(jù)驅(qū)動的方式自動學(xué)習(xí)圖像特征,克服了人工特征模式單一、判別能力弱的局限?;谏疃葘W(xué)習(xí)的目標(biāo)檢測算法實(shí)現(xiàn)了定位和分類任務(wù)的端到端共同優(yōu)化,無論是處理可見光自然圖像[2],還是應(yīng)對前視聲吶[3]、側(cè)掃聲吶[4]和合成孔徑聲吶圖像[5],均能取得比傳統(tǒng)方法更優(yōu)的檢測精度[6-7]。
然而聲吶圖像采集需要耗費(fèi)大量的資源,且常因涉及到敏感信息而未公開[8],因此,基于深度學(xué)習(xí)的聲吶圖像目標(biāo)檢測系統(tǒng)性研究與應(yīng)用仍然不足。實(shí)際工程應(yīng)用不僅對檢測算法的精度要求較高,還對軟件系統(tǒng)質(zhì)量屬性、運(yùn)行速度、部署環(huán)境等方面均具有一定要求。因此,本文利用深度學(xué)習(xí)模型數(shù)據(jù)驅(qū)動的優(yōu)勢設(shè)計了一種聲吶圖像目標(biāo)檢測系統(tǒng),提高也不表明該系統(tǒng)在測試數(shù)據(jù)上和實(shí)際應(yīng)用中均具有良好的性能。
所設(shè)計的基于深度學(xué)習(xí)的聲吶圖像目標(biāo)檢測系統(tǒng)包含數(shù)據(jù)集生成、算法模型訓(xùn)練與測試、模型部署應(yīng)用3 個子系統(tǒng),如圖 1所示。各子系統(tǒng)的輸入輸出相互關(guān)聯(lián),且不存在強(qiáng)耦合關(guān)系,滿足可移植性、可擴(kuò)展性、易用性等軟件系統(tǒng)質(zhì)量屬性。所設(shè)計的系統(tǒng)具備通用性,不依賴于某一項具體應(yīng)用任務(wù)。
圖1 聲吶圖像目標(biāo)檢測系統(tǒng)Fig.1 Sonar image object detection system
數(shù)據(jù)集生成子系統(tǒng)負(fù)責(zé)采集、標(biāo)注、處理、生成和管理數(shù)據(jù)集,對外場試驗(yàn)的實(shí)時數(shù)據(jù)、已有的未標(biāo)注圖像和互聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行標(biāo)注,經(jīng)過預(yù)處理和訓(xùn)練集測試集劃分后生成數(shù)據(jù)集,并支持修改、合并等功能。
算法模型訓(xùn)練與測試子系統(tǒng)首先構(gòu)建目標(biāo)檢測深度學(xué)習(xí)模型,然后讀取訓(xùn)練集數(shù)據(jù)進(jìn)行訓(xùn)練,并讀取測試集數(shù)據(jù)對訓(xùn)練完成的模型進(jìn)行測試,將滿足算法精度、速度要求的模型參數(shù)文件輸出。
模型部署應(yīng)用子系統(tǒng)針對不同部署平臺的軟硬件環(huán)境要求,轉(zhuǎn)換模型參數(shù)文件,并編寫服務(wù)于實(shí)際任務(wù)的應(yīng)用程序,然后部署于項目機(jī),讀取模型并進(jìn)行前向計算。
數(shù)據(jù)采集和標(biāo)注功能分為離線和在線2種模式。離線模式指對已有的未標(biāo)注聲吶圖像進(jìn)行人工標(biāo)注,數(shù)據(jù)來源通常為外場試驗(yàn)保存的歷史數(shù)據(jù),互聯(lián)網(wǎng)下載的開源圖像。采集數(shù)據(jù)后,可以采用labelImg、labelme、Vott、CVAT等開源的標(biāo)注軟件對聲吶圖像進(jìn)行標(biāo)注。在線模式指在試驗(yàn)現(xiàn)場使用相關(guān)顯示軟件實(shí)時解析聲吶設(shè)備傳輸?shù)脑紨?shù)據(jù),在生成聲吶圖像后直接手動標(biāo)注并導(dǎo)出結(jié)果。由于現(xiàn)場試驗(yàn)時已知水下目標(biāo)的布放位置,在線標(biāo)注的類別信息通常比離線標(biāo)注更加準(zhǔn)確。
標(biāo)注過程中,盡量不以狹長、極端長寬比的目標(biāo)外界矩形框進(jìn)行標(biāo)注,且需要保持目標(biāo)位于矩形框中央,減少無關(guān)的背景信息。標(biāo)注格式也應(yīng)保持一致。如圖 2所示,P1為矩形框左上角頂點(diǎn),P2為右下角頂點(diǎn),P0為中心點(diǎn),w,h表示矩形框的寬和高。通常以[x1,y1,w,h]或[x1,y1,x2,y2]的數(shù)據(jù)格式記錄標(biāo)注,YOLO系列算法[9]以圖像的寬、高作為分母分別對坐標(biāo)進(jìn)行歸一化,以歸一化后的中心點(diǎn)坐標(biāo)與矩形寬高記錄。
圖2 標(biāo)注坐標(biāo)示例Fig.2 An example of annotation coordinate
傳統(tǒng)檢測方法通常使用濾波算法對聲吶圖像進(jìn)行預(yù)處理,消除散斑噪聲以提高檢測精度[7]。深度學(xué)習(xí)以數(shù)據(jù)驅(qū)動來訓(xùn)練神經(jīng)網(wǎng)絡(luò),使用噪聲數(shù)據(jù)訓(xùn)練模型會提高算法魯棒性和抗攻擊能力[10]。因此,本系統(tǒng)不對數(shù)據(jù)集圖像做濾波預(yù)處理操作。
由于聲吶圖像獲取不易,訓(xùn)練圖像通常數(shù)量較少,容易使得深度學(xué)習(xí)模型過擬合而缺乏泛化性。因此數(shù)據(jù)增強(qiáng)方法至關(guān)重要?;A(chǔ)的方法包括翻轉(zhuǎn)、旋轉(zhuǎn)、裁剪、變形、縮放等幾何變換操作,不對圖像本身內(nèi)容進(jìn)行修改,適用于聲吶圖像數(shù)據(jù)集生成階段以增加圖片數(shù)量。
更進(jìn)一步的增強(qiáng)方法通常采用顏色空間變換,修改圖像語義信息[11]。此類方法對訓(xùn)練結(jié)果造成的影響不能事先預(yù)知,因此常在模型訓(xùn)練階段嘗試。
對于不同類型、型號的聲吶設(shè)備和在不同水域下采集的聲吶圖像數(shù)據(jù)集應(yīng)分類歸納。常用的聲吶設(shè)備有前視聲吶、側(cè)掃聲吶、合成孔徑聲吶。不同種類的聲吶圖像風(fēng)格不同,前視聲吶對前方扇形區(qū)域進(jìn)行掃描,圖像分辨率低且對噪聲敏感,側(cè)掃聲吶和合成孔徑聲吶圖像分辨率高,但側(cè)掃聲吶圖像精度較低[6]。此外,聲吶圖像數(shù)據(jù)分布還受到水質(zhì)、水底環(huán)境等因素影響。不同分布的數(shù)據(jù)所包含的可學(xué)習(xí)信息不同,源域(Source Domain)和目標(biāo)域(Target Domain)數(shù)據(jù)分布不同會影響深度學(xué)習(xí)模型的測試精度[12]。因此,對聲吶圖像數(shù)據(jù)集的歸類需考慮影響數(shù)據(jù)分布的多方面因素。
算法模型訓(xùn)練與測試子系統(tǒng)通常部署在配置NVIDIA GPU的服務(wù)器中。目前流行的深度學(xué)習(xí)框架有PyTorch[13]、TensorFlow[14]、PaddlePaddle等。而廣泛使用的開源目標(biāo)檢測算法框架MMDetection[15]、Detectron2與YOLO系列模型[11]均基于PyTorch、Linux實(shí)現(xiàn)。因此,本系統(tǒng)基于上述框架定義了聲吶圖像目標(biāo)檢測深度學(xué)習(xí)模型構(gòu)造和訓(xùn)練過程的關(guān)鍵模塊:骨干網(wǎng)絡(luò)(Backbone)。骨干網(wǎng)絡(luò)是DNN提取圖像特征的主要組成部分。目前有許多性能優(yōu)越的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN),比如ResNet[16]、DenseNet[17]、ResNext[18]、Res2Net。通常而言,特征提取能力越強(qiáng)的CNN參數(shù)量越大,從而造成推理速度緩慢,因此輕量化CNN也常被用于高實(shí)時性任務(wù)。
為進(jìn)一步提升特征豐富程度,頸部網(wǎng)絡(luò)(Neck)通常采用以特征金字塔網(wǎng)絡(luò)[19](Feature Pyramid Network,F(xiàn)PN)為代表的網(wǎng)絡(luò)構(gòu)造多尺度特征,以提高模型的小目標(biāo)檢測精度。在側(cè)掃聲吶和合成孔徑聲吶圖像中,待檢測目標(biāo)往往只占據(jù)整幅圖像的小部分,因此設(shè)計頸部網(wǎng)絡(luò)至關(guān)重要。頭部網(wǎng)絡(luò)(Head)在提取的特征圖上進(jìn)行采樣,然后計算分類和定位結(jié)果。目前常用的采樣方式有兩階段(two stage)、一階段(one stage)、無錨框(anchor-free)。其中一階段方法直接將每個坐標(biāo)點(diǎn)視作潛在目標(biāo),沒有額外的候選框提取步驟,運(yùn)行速度更快。數(shù)據(jù)增強(qiáng)是基于顏色空間變換的數(shù)據(jù)增強(qiáng)方法,常在訓(xùn)練過程中使用,比如CutOut、CutMix、MixUp。這些算法豐富了正樣本目標(biāo)的信息,能緩解聲吶圖像數(shù)據(jù)不足的問題,提高訓(xùn)練效率和測試精度。
聲吶目標(biāo)檢測模型構(gòu)建完成后,系統(tǒng)讀取聲吶圖像數(shù)據(jù)集中的訓(xùn)練集進(jìn)行訓(xùn)練,然后使用測試集進(jìn)行性能評估。針對具體的任務(wù),可以選擇多個不同的聲吶圖像訓(xùn)練集進(jìn)行組合,并在多個測試集上全面評估,將滿足算法精度、速度要求的模型參數(shù)文件輸出,文件后綴名通常為“.pt”。
與MS COCO[20]基準(zhǔn)的評價指標(biāo)類似,以預(yù)測框與真實(shí)框的面積交并比(Intersection over Union,IoU)反映單個預(yù)測結(jié)果的好壞。IoU數(shù)值和分類置信度均大于既定閾值的結(jié)果稱為真陽性(True Positive,TP),即正確;否則為假陽性(False Positive,F(xiàn)P),即誤檢。由于算法不輸出負(fù)樣本背景框,因此不存在真陰性(True Negative,TN)。假陰性(False Negative,F(xiàn)N)則代表未被檢測出的目標(biāo)框,即漏檢。以此計算精確率P(Precision)、召回率R(Recall)以及平均精度AP(Average Precision):
設(shè)置的IoU閾值和分類置信度越大,對于預(yù)測正確的標(biāo)準(zhǔn)就越嚴(yán)苛。通常在IoU閾值范圍為[0.5,0.95]區(qū)間內(nèi)每間隔0.05計算AP,求平均分作為綜合評分。如果聲吶圖像分辨率高而待檢測目標(biāo)小,可以將IoU區(qū)間設(shè)置為[0.2, 0.65]。
模型部署應(yīng)用子系統(tǒng)負(fù)責(zé)將訓(xùn)練好的聲吶圖像目標(biāo)檢測模型部署在特定的環(huán)境中運(yùn)行。由于模型動態(tài)化、新增算子實(shí)現(xiàn)、框架兼容性等問題,當(dāng)運(yùn)行環(huán)境不同于模型訓(xùn)練環(huán)境時,模型參數(shù)文件通常無法直接被調(diào)用。可使用MMDeploy開源部署工具對算法模型訓(xùn)練與測試子系統(tǒng)輸出的模型參數(shù)文件進(jìn)行轉(zhuǎn)換。MMDeploy支持多種算法庫運(yùn)行和多種格式的模型文件轉(zhuǎn)換,支持Python、C++接口與Windows、Linux操作系統(tǒng)。
完成模型參數(shù)文件的轉(zhuǎn)換后,編寫應(yīng)用程序進(jìn)行讀取運(yùn)行。程序包含如下功能:
1)數(shù)據(jù)接收功能,以文件讀取、網(wǎng)絡(luò)傳輸協(xié)議、內(nèi)存共享等方式從上游程序獲取待處理的聲吶圖像數(shù)據(jù)。
2)目標(biāo)檢測功能:讀取轉(zhuǎn)換完成的模型參數(shù)文件,加載內(nèi)存/顯存,輸入聲吶圖像進(jìn)行計算,得到目標(biāo)檢測結(jié)果。根據(jù)實(shí)際應(yīng)用效果可增加圖像預(yù)處理和結(jié)果后處理算法。
3)結(jié)果發(fā)送功能:以文件存儲、網(wǎng)絡(luò)傳輸協(xié)議、內(nèi)存共享等方式輸出檢測結(jié)果。
目標(biāo)檢測系統(tǒng)的應(yīng)用程序獨(dú)立運(yùn)行,與上游程序和下游程序之間通過既定接口實(shí)現(xiàn)數(shù)據(jù)交互,滿足解耦合原則。
本文將所設(shè)計的聲吶圖像目標(biāo)檢測系統(tǒng)應(yīng)用于水下可疑目標(biāo)探測任務(wù),以驗(yàn)證應(yīng)用效果。
系統(tǒng)使用某公司的合成孔徑聲吶設(shè)備,在一片固定水域進(jìn)行湖上試驗(yàn)。首先,布置多個可疑目標(biāo)外殼模型;然后,使用無人艇拖曳設(shè)備搭載聲吶設(shè)備實(shí)施數(shù)據(jù)采集與標(biāo)注。航行過程中遠(yuǎn)程控制無人艇從不同的方向駛?cè)氩祭讌^(qū)域,由于布雷位置事先已知,控制無人艇航行方向使得布放的可疑目標(biāo)均能出現(xiàn)在聲吶掃描范圍內(nèi)。聲吶圖像由合成孔徑聲吶設(shè)備進(jìn)行渲染合成并通過行信號傳輸。采集的原始左聲吶以及右聲吶圖像分辨率均為1 900×1 900。正樣本標(biāo)注僅有可疑目標(biāo)一種類別,位置標(biāo)注以歸一化后的中心點(diǎn)坐標(biāo)與矩形寬高記錄。
采用縮放、裁剪、拼接、翻轉(zhuǎn)等幾何變換方式處理原始聲吶圖像,生成分辨率為640×640、1 024×1 024和3 800×1 900(左右聲吶圖像拼接)的數(shù)據(jù)集圖像,共1 362張圖像。生成的數(shù)據(jù)集具體劃分和圖像數(shù)量如表1所示。
表1 合成孔徑聲吶圖像數(shù)據(jù)集Table 1 Synthetic aperture sonar image dataset
考慮到系統(tǒng)運(yùn)行實(shí)時性要求,目標(biāo)檢測模型使用YOLOv5s網(wǎng)絡(luò)。訓(xùn)練圖像采用CutOut、MixUP、Mosaic方法進(jìn)行數(shù)據(jù)增強(qiáng)。組合修改而成的新圖像通過自適應(yīng)縮放方式統(tǒng)一縮放至640×640分辨率,添加黑色邊框而不改變原始信息的長寬比。輸入圖像經(jīng)過骨干網(wǎng)絡(luò)得到分辨率為80×80、40×40、20×20的多尺度特征,然后在基于FPN的頸部網(wǎng)絡(luò)得到擴(kuò)充、疊加、增強(qiáng),輸出通道數(shù)分別為128、256、512的3層特征。然后將多尺度特征輸入頭部網(wǎng)絡(luò),每個像素點(diǎn)得到18維通道數(shù)的預(yù)測結(jié)果(4維表示目標(biāo)坐標(biāo),1維表示目標(biāo)置信度,1維表示可疑目標(biāo)類別結(jié)果,預(yù)設(shè)3個尺寸的anchor,所以6×3=18)。訓(xùn)練過程中分類損失和置信度損失均采用BCEWithLogitsLoss函數(shù)計算,坐標(biāo)回歸損失使用GIOU方法。多尺度特征圖產(chǎn)生的損失進(jìn)行加權(quán)融合,以提高小目標(biāo)檢測精度。訓(xùn)練參數(shù)均采用YOLOv5模型默認(rèn)值。在測試階段使用加權(quán)非極大值抑制剔除冗余預(yù)測框,篩選過程IoU閾值為0.6。
訓(xùn)練完成后,將滿足算法精度要求的模型參數(shù)文件以“.pt”格式輸出。由于水下可疑目標(biāo)探測項目的軟硬件環(huán)境約束,系統(tǒng)應(yīng)用程序需基于C++編寫,部署的項目計算機(jī)配置為Windows操作系統(tǒng),Inter(R)Core(TM)i7-7700 CPU @ 3.60 GHz,內(nèi)存16 GB,NVIDIA GeForce RTX 2080顯卡。PyTorch提供基于C++的推理后端引擎LibTorch-Windows。因此系統(tǒng)使用模型參數(shù)轉(zhuǎn)換工具將“.pt”格式文件轉(zhuǎn)換為該引擎可用的“.torchscript.pt”格式。
系統(tǒng)應(yīng)用程序調(diào)用LibTorch相關(guān)庫函數(shù)完成對轉(zhuǎn)換后模型文件參數(shù)的讀取、加載、推理等功能。然后基于網(wǎng)絡(luò)傳輸協(xié)議、聲吶數(shù)據(jù)解析等鏈接庫編寫聲吶數(shù)據(jù)接收功能,以及檢測結(jié)果發(fā)送與保存功能。至此水下可疑目標(biāo)檢測系統(tǒng)實(shí)現(xiàn)完成。
本章使用測試集包含的135張合成孔徑聲吶圖像評估系統(tǒng)應(yīng)用程序的檢測性能,表2和表3分別展示了IoU閾值為0.5和0.2時的測試結(jié)果。
表2 IoU=0.5測試結(jié)果Table 2 Experimental results of IoU=0.5
表3 IoU=0.2測試結(jié)果Table 3 Experimental results of IoU=0.2
由表中數(shù)據(jù)可知,當(dāng)IoU設(shè)置為0.2時,檢測精度會明顯上升,說明存在一定數(shù)量的預(yù)測框定位偏離了實(shí)際位置。合成孔徑聲吶圖像中的水下可疑目標(biāo)并不重疊、密集出現(xiàn),因此具有一定偏離的預(yù)測結(jié)果并未定位錯誤。這也說明了目標(biāo)檢測算法的定位性能有進(jìn)一步提升的空間。
當(dāng)設(shè)置的分類置信度高時,精確率P高,此時較多的低置信度預(yù)測結(jié)果被剔除,減少了誤檢率(虛警率);但因?yàn)樘蕹说椭眯哦冉Y(jié)果使得預(yù)測框數(shù)量下降,導(dǎo)致召回率R下降,即漏檢率(漏警率)增加。當(dāng)設(shè)置低分類置信度時,盡管平均精度AP和綜合評分會提高,精確率P大幅下降,導(dǎo)致了高虛警率。在自然光學(xué)圖像數(shù)據(jù)集MS COCO上通常將分類置信度設(shè)置為0.005以實(shí)現(xiàn)更高的平均精度。在本任務(wù)中,盡管將分類置信度設(shè)置為0.005時會得到最高的平均精度值82.09%(90.26%),但會導(dǎo)致虛警率過高,在實(shí)際應(yīng)用中會造成指揮員經(jīng)常性緊張和疲勞等問題。為了平衡虛警率和漏警率,本系統(tǒng)將分類置信度閾值設(shè)置為0.3。
圖3在測試集中選擇了4張圖像展示了所設(shè)計的聲吶圖像目標(biāo)檢測系統(tǒng)的應(yīng)用效果??梢暬Y(jié)果表明系統(tǒng)對于水下可疑目標(biāo)具有較高的檢測精度,對相似物(第3張圖像)會產(chǎn)生虛警。
圖3 合成孔徑聲吶圖像測試集檢測效果Fig.3 Detection effect of synthetic aperture sonar image test set
算法初始模型參數(shù)大小為13.7 MB,轉(zhuǎn)換后為27.3 MB,系統(tǒng)在NVIDIA GeForce RTX 2080顯卡上處理一張圖像平均耗時18 ms,符合實(shí)時性要求。
本文設(shè)計了一種基于深度學(xué)習(xí)的聲吶圖像目標(biāo)檢測系統(tǒng),通用性較高,滿足可移植性、可擴(kuò)展性、易用性等軟件系統(tǒng)質(zhì)量屬性;將該系統(tǒng)應(yīng)用于水下可疑目標(biāo)探測任務(wù),對合成孔徑聲吶圖像的檢測效果良好。實(shí)驗(yàn)表明,為了不造成過高的虛警率,分類置信度閾值不宜設(shè)置為較高或較低的值。未來將在更多的民事和軍事任務(wù)中應(yīng)用本系統(tǒng)。