王 非 王欣宇 周景春 劉 淼
(大連海事大學信息科學技術(shù)學院 大連 116026)
目標檢測是計算機視覺中的一個基礎(chǔ)性的且具有挑戰(zhàn)性的問題,其目的是在輸入的圖像中找到待檢測目標的位置以及判斷目標的類別。隨著時代的發(fā)展和海洋強國戰(zhàn)略的提出,提高海洋資源開發(fā)能力,發(fā)展海洋經(jīng)濟已成為我國的迫切需求。近年來,針對水下目標的檢測任務(wù)成為了非常活躍的研究領(lǐng)域之一,其應(yīng)用非常廣泛,包括魚群定位、水深測量等方面,也可用于水雷、潛艇探測等軍事領(lǐng)域。但由于水下環(huán)境復雜多變和水下信號的獲取及處理存在困難,使得在水下采集到的數(shù)據(jù)信息往往不夠精確[1,2]。因此,如何在復雜多變的水下環(huán)境和噪聲、畸變等影響下準確地進行目標檢測是業(yè)界公認的關(guān)鍵點和研究難題。
對于水下目標檢測,前人已提出過許多有效的檢測方法,根據(jù)關(guān)注點不同,可大體分為基于像素、回波[3,4]和特征[5,6]的檢測方法。在深度學習的助力下,目標檢測領(lǐng)域出現(xiàn)了一系列里程碑式的檢測框架,根據(jù)其算法流程總體上可以分為兩類:兩階段目標檢測框架和單階段目標檢測框架。2014年Girshick等人[7]提出的基于卷積神經(jīng)網(wǎng)絡(luò)的R-CNN目標檢測框架是2階段檢測的開端,該框架通過端到端的方式從大量數(shù)據(jù)中訓練出來檢測模型,再將模型應(yīng)用于大量不同類別的目標,這成為了R-CNN系列的奠基框架,但此框架在目標檢測效率和物體識別等方面存在一定問題。Girshick[8]在R-CNN框架的基礎(chǔ)上進行改進,提出了Fast R-CNN框架,該框架將特征提取器和分類器合并,并且對特征提取的方式進行改進,使得原本對每一個候選框進行特征提取變?yōu)榱艘淮涡詫σ徽麖垐D像進行特征提取,大大加快了訓練速度。后續(xù)提出的Faster R-CNN框架[9]考慮到因選取過多候選框而導致的模型訓練時間較長的問題,利用RPN(Regional Proposal Networks)負責目標預(yù)測框的選取,大幅度提升了網(wǎng)絡(luò)檢測速度。近幾年,He等人[10]提出的Mask R-CNN巧妙地更改了處理特征圖尺寸變化的方法,很大程度上減小了下游特征圖像向上游映射時的誤差,在提升了目標檢測效果的同時滿足了其算法語義分割任務(wù)的精確度的要求。在單階段目標檢測框架中,基于回歸算法不需要經(jīng)過候選框選取階段,可直接從輸入圖像中直接預(yù)測結(jié)果。單階段檢測的代表性框架有YOLO系列和SSD系列,YOLOv1[11]將檢測任務(wù)表述成一個統(tǒng)一的、端到端的回歸問題,在最終的高維特征圖上通過一個全連接層對目標進行檢測及分類。但神經(jīng)網(wǎng)絡(luò)粗糙、對小目標檢測有限制的問題也隨之產(chǎn)生。Liu等人[12]提出的SSD(Single Shot multibox Detector)算法結(jié)合了YOLO算法的回歸思想和Faster-RCNN的錨機制,使得算法更容易訓練。YOLOv2[13]是在YOLOv1的基礎(chǔ)上進行優(yōu)化的,其在提升檢測速度的同時,對目標的檢測精度也得到了提高。與此同時,Jeong等人[14]提出了SSD算法的改進版R-SSD算法,解決了SSD算法存在的目標被重復檢出的問題。YOLOv3[15]在繼承了YOLOv1和YOLOv2的優(yōu)點的同時做出了一些改進,使得其可進行多目標檢測任務(wù)。Law等人[16]提出的CornerNet采用預(yù)測識別框的左上角和右下角頂點信息來替代傳統(tǒng)的錨機制,檢測性能得到了明顯提高。
相較于先前的YOLO版本,YOLOv3首先對主干網(wǎng)絡(luò)進行了修改,引入了殘差結(jié)構(gòu)進行特征提取,通過使用卷積層代替最大池化層提升了檢測效果。此外,YOLOv3網(wǎng)絡(luò)模型借鑒了特征金字塔網(wǎng)絡(luò)[17](Feature Pyramid Networks, FPN)的思想,先從主干網(wǎng)絡(luò)中提取3個不同尺度的特征圖,再通過上采樣和特征拼接的方式將高維特征圖信息與低維特征圖信息相融合,使得能夠?qū)Φ途S特征圖進行高精度預(yù)測的同時又能結(jié)合高維特征圖中的語義信息,達到了對特征圖的多尺度檢測效果,從而使模型對小目標的檢測效果大大提升。相比于R-CNN系列網(wǎng)絡(luò)的先對輸入圖像產(chǎn)生候選區(qū)域,再對候選區(qū)域圖像塊進行位置預(yù)測和分類的方式,YOLOv3采用端到端的方式,使用單個網(wǎng)絡(luò)對整張圖像直接進行目標檢測的方法更具實時性。
聲吶是一種利用聲波在水下的傳播特性,根據(jù)不同物體反射聲信號的強度和頻譜信息的不同,通過電聲轉(zhuǎn)換和信息處理,完成水下探測和通訊任務(wù)的電子設(shè)備。根據(jù)同時刻發(fā)出的波束數(shù)量不同又可分為單波束前視聲吶和多波束前視聲吶,本文利用的數(shù)據(jù)多為單束前視聲吶所測。
當處于水下這一3維空間進行檢測時,前視聲吶通過換能器發(fā)射像掃描線一樣的以?為半徑、以θ為水平跨越角度的波束,進而形成一個相應(yīng)的扇形探測區(qū),再以?作為俯仰角構(gòu)成檢測的3維空間,并對覆蓋的目標區(qū)域進行條帶式測量。若取掃描線上的一點Q,那么該點在3維空間中的坐標可表示為Q(r,θ,?)。同時,利用基陣的自然方向性定向建立直角坐標系,對應(yīng)的直角坐標為(x,y,z)。
球面坐標系和直角坐標系的轉(zhuǎn)化關(guān)系如式(1)所示。由于原始數(shù)據(jù)中缺少俯仰角?的信息,因此在處理數(shù)據(jù)時我們只能選擇將立體空間中的點投影到平面,將3維坐標轉(zhuǎn)換成2維進行計算。將球面Q點映射至投影平面P點,兩坐標之間的轉(zhuǎn)換關(guān)系如式(2)所示。
已發(fā)射的聲波遇到物體時會回射,聲吶裝置收到反射的波束,通過計算回波從發(fā)射到收回的時間與波束在水中的運動速度就能精確計算物體所在處與聲吶設(shè)備的距離,多個波束反射投影到聲吶裝置中便形成了一張畫有物體邊遠輪廓的原始聲吶圖片。
本文提出了一種基于YOLOv3的水下目標檢測模型YOLOv3F,以解決水下聲吶圖像的形狀失真和畸變的問題,網(wǎng)絡(luò)整體結(jié)構(gòu)如圖1所示。將原始的聲吶圖像與對應(yīng)生成的點云數(shù)據(jù)送入backbone分別對紋理特征和空間幾何形態(tài)特征進行特征提取,再通過對提取出的兩部分特征進行特征維度的相加,接著送入YOLOv3的neck網(wǎng)絡(luò)對相加之后特征進行不同維度的特征融合,最后通過預(yù)測網(wǎng)絡(luò)實現(xiàn)目標檢測。
本文使用式(1)和式(2)來計算每個聲吶掃描點對應(yīng)的點云坐標,將生成的點云坐標存儲在一個N×2的矩陣中,其中N代表掃描點的總數(shù),矩陣中每個元素定義為相應(yīng)掃描點處的聲吶信號值。再根據(jù)每個像素點的不同強度值,利用圖像二值化(Image Binarization)算法,過濾掉大量強度值比較小的無用點,實現(xiàn)前后景的劃分和背景點的過濾。本文采用的固定閾值二值化技術(shù)是先統(tǒng)計出整張圖片中所有像素點的強度值,將算出的強度值的中值設(shè)為閾值,并將大于中值的值設(shè)為1,小于中值的值設(shè)為0,接著過濾掉值為0的掃描點。最后將得到的點云坐標信息以三通道(x,y,0)的形式保存。
本文使用基于YOLOv3模型的改進版YOLOv3F,采取的主干網(wǎng)絡(luò)由兩個Darknet-53網(wǎng)絡(luò)組成,每個Darknet-53網(wǎng)絡(luò)由26個殘差結(jié)構(gòu)、6個卷積層和1個全連接層組成,每個殘差結(jié)構(gòu)中包含2個卷積層,并且最后的全連接操作由卷積實現(xiàn),整個網(wǎng)絡(luò)共進行了53次卷積操作。文中使用的網(wǎng)絡(luò)以原始聲吶圖像和點云數(shù)據(jù)分別作為兩個主干網(wǎng)絡(luò)的輸入,分別依次通過卷積層和包含1, 2, 8, 8, 4個殘差模塊的殘差網(wǎng)絡(luò)。當輸入通過步長為1的卷積層后特征圖大小不變,通過步長為2的卷積層后特征圖大小變?yōu)檩斎氪笮〉?/2。隨著網(wǎng)絡(luò)的前向傳播,特征圖尺寸越來越小,其中包含的語義信息越來越豐富,兩個主干網(wǎng)絡(luò)最終分別輸出低層特征圖、中層特征圖和高層特征圖。最后將從原始聲吶圖像提取的紋理特征和從點云中提取的空間幾何特征進行拼接,送入neck網(wǎng)絡(luò)進行特征融合。
由于本文在主干網(wǎng)絡(luò)中將聲吶圖像特征與點云特征進行特征維度的求和,所以neck結(jié)構(gòu)的特征通道維度相較于原始的YOLOv3網(wǎng)絡(luò)翻了1倍,即輸入neck網(wǎng)絡(luò)的特征維度分別為2048, 1024和512。Neck網(wǎng)絡(luò)結(jié)構(gòu)對高層特征圖一方面直接利用5次卷積進行特征提取,一方面對其進行上采樣,再與中層特征圖進行拼接,將拼接之后的特征圖重復上述操作,再與低層特征圖進行拼接。最后將3種尺寸的特征圖送入預(yù)測網(wǎng)絡(luò)進行目標預(yù)測。
本文所提出的模型使用端到端的方式對特征圖上的邊界框進行預(yù)測,網(wǎng)絡(luò)先通過K-means聚類算法得到9組不同尺寸的預(yù)設(shè)邊界框(Bounding Box Prior),再將這9組預(yù)設(shè)邊界框分別應(yīng)用到3個不同尺度的特征圖上進行預(yù)測,每個預(yù)測特征層會預(yù)測S×S×k×(4+1+C)個參數(shù),其中S×S表示特征圖的尺度,k為當前預(yù)測特征層的預(yù)設(shè)邊界框的個數(shù),4為預(yù)設(shè)邊界框的4個偏置信息,1表示每個邊界框?qū)δ繕祟A(yù)測的置信度。
如圖2所示,(cx,cy)表示當前單元格相對特征圖左上角的偏移量,(pw,ph)為預(yù)測框的寬和高,(tx,ty,tw,th)為網(wǎng)絡(luò)模型要預(yù)測的4個偏置信息。YOLOv3F為了使預(yù)測邊界框的中心點固定在一個單元格中,使用sigmoid函數(shù)將預(yù)測坐標歸一化到0~1之間。預(yù)測邊界框的坐標(bx,by,bw,bh)將由以式(3)—式(4)計算得到:
本文提出的模型的損失函數(shù)參照原始YOLOv3模型結(jié)構(gòu)分為3個部分,分別是對目標偏移量損失lossb的計算,對目標置信度損失lossw的計算和對目標分類損失losss的計算。損失函數(shù)的3個部分分別如式(7)所示。
計算分類誤差時使用交叉熵損失函數(shù),概率值p由sigmoid函數(shù)進行計算,當單元格內(nèi)不存在待檢測目標時不會對分類錯誤進行懲罰。
YOLOv3F的總損失即為上述3部分損失函數(shù)之和,即
本文進行的實驗是在一個真實水下環(huán)境的公共數(shù)據(jù)集上對其進行測試,該數(shù)據(jù)集包含各種各樣的目標對象,并通過將本文提出的模型與原始YOLOv3, SSD, RetinaNet[18]網(wǎng)絡(luò)模型進行定性和定量對比,驗證了所提方法的有效性。
本實驗中使用的公共數(shù)據(jù)集由2021屆中國水下機器人專業(yè)比賽提供,可在https://www.heywhale.com/home/competition/605ab7f821e3f6003 b56a7e5進行查詢。該數(shù)據(jù)集由4000張聲吶圖像組成,涵蓋了水下場景的典型環(huán)境。它包含立方體、球體、圓柱體、人體模型、輪胎、圓形地籠、方形地籠、鐵桶8類物體。在實驗中,4000張圖像被分為訓練集(約60%)、驗證集(約20%)和測試集(20%)。
在本文的實驗中使用平均準確率(mAP)來對不同的模型進行評估。準確率指的是所有正樣本中預(yù)測為正樣本的比例,包括真正樣本和假正樣本。mAP衡量每個類別數(shù)據(jù)的平均精度,在評估模型定位性能,目標檢測模型性能和分割模型性能方面是非常重要的。
本實驗使用開源目標檢測框架MMDetection來實現(xiàn)所提出的方法,該框架的源碼網(wǎng)址為https://github.com/open-mmlab/mmdetection,其中包含了YOLOv3, SSD, RetinaNet 3個對比模型的實現(xiàn)源碼。這些代碼是用Python3.7和Pytorch1.8.1編寫的。所有實驗的服務(wù)器操作系統(tǒng)都是Ubuntu18.04, CUDA Toolkit11.1和CUDNN8.0。硬件包括Inter Core i9-10980XE(3.0GHz), 32GB RAM和Nvidia GeForce3090(24GB)。
對于本文所提方法及3種基線模型的訓練,實驗中采用了統(tǒng)一的參數(shù)設(shè)置,具體如下:使用隨機梯度下降(Stochastic Gradient Descent, SGD)算法進行參數(shù)優(yōu)化,設(shè)置初始學習率為0.001,動量為0.9,權(quán)重衰減為0.0005,最大迭代次數(shù)為350次。
本實驗中分別對單目標和多目標的情形進行了檢測。圖3展示了分別使用RetinaNet, SSD512,YOLOv3以及本文提出的YOLOv3F模型對單目標物體的檢測效果,從圖中可以看出RetinaNet和YOLOv3將人體模型錯分為了輪胎和球體。圖4和圖5展示了4個模型對多目標的檢測效果,從圖4中可看出RetinaNet和YOLOv3將人體模型錯分類為了其他物體,SSD512并沒有檢測到人體模型;從圖5中我們可以觀察到RetinaNet和SSD512分別將圓形地籠錯分類為了方形地籠和圓柱體。從圖3—圖5反映的實驗結(jié)果來看,無論是單目標情形還是多目標情形,在使用YOLOv3F模型對原始聲吶圖像和點云數(shù)據(jù)進行特征融合后,均表現(xiàn)出了良好的檢測性能。
表1、表2和表3分別展示了RetinaNet, SSD512,YOLOv3和本文提出的改進模型YOLOv3F在給定數(shù)據(jù)集下設(shè)定檢測框不同交并比、對不同尺度以及不同類別的目標進行檢測的效果。從表1可以看出,當檢測框交并比閾值取[0.5,0.95]時,RetinaNet,SSD512和YOLOv3 3個模型的檢測效果非常接近,而本文所提方法YOLOv3F相較于其他3個模型,其mAP分別提高了3.4%, 3.4%和3.6%,當檢測框交并比閾值設(shè)置為大于0.5時,對應(yīng)提高的mAP分別為7%, 3.8%和1.7%,這一數(shù)值在交并比設(shè)置為大于0.75時出現(xiàn)相對較大幅度的提升,分別為4.3%,6.8%和8.8%。因此由表2可知,本文提出的融合了點云特征的目標檢測框架繼承了原有YOLOv3的目標檢測良好性能,并且在對檢測框設(shè)置不同交并比的情況下,與其他3個模型相比均達到了最優(yōu)的檢測效果。
表1 檢測框不同交并比mAP對照
表2 不同尺度目標檢測mAP對照
表3 不同類別目標檢測mAP對照
為了進一步凸顯融合了聲吶圖像與點云特征的YOLOv3F模型的改進作用,本實驗還分別就小尺度、中等尺度和大尺度目標的不同情形進行了mAP對照分析,如表2所示。在小目標情形下,YOLOv3F的檢測性能與SSD512相近,前者相較于后者性能提升了0.9%,與RetinaNet和YOLOv3相比,YOLOv3F的檢測性能提高了5%和3.3%。在檢測中等尺度目標時,其他3種網(wǎng)絡(luò)性能相近,其中RetinaNet優(yōu)于另外兩種,而YOLOv3F與RetinaNet相比,性能提高了3.2%。在檢測大尺度目標時,本文提出的模型同樣達到了最優(yōu)的檢測效果。
本實驗還對4種網(wǎng)絡(luò)模型檢測不同類別目標的mAP進行了對照,如表3所示。雖然在對球體類別進行檢測時,YOLOv3F模型的檢測效果略低于SSD512,但僅相差0.5%,相較于原始YOLOv3,本文提出的改進版在性能上提升了2.4%。此外,從表中可以看出,本文提出的模型在對除球體之外的其他7種類別物體的檢測效果均優(yōu)于其他3種模型,這也驗證了融入點云特征后的改進效果。
本文以YOLOv3模型為基礎(chǔ),提出了水下目標檢測模型YOLOv3F,該模型將從原始聲吶圖像中提取的紋理特征和從點云中提取的物體空間幾何形態(tài)特征相融合,并通過neck結(jié)構(gòu)將低維特征與高維特征進行融合,增加上下文信息,改善對水下目標的檢測性能。通過主客觀對照實驗結(jié)果可以看出,YOLOv3F的總體檢測性能相較于RetinaNet,SSD512和YOLOv3均有不同程度的提升,在復雜的水下環(huán)境的情形下具有一定優(yōu)勢。