張博宇,王 曉*,楊敬華,朱邦彥
(1.江蘇海洋大學(xué) 海洋技術(shù)與測繪學(xué)院,江蘇 連云港 222000;2.南京市測繪勘察研究院股份有限公司,江蘇 南京 210019)
中國擁有豐富的海洋資源,不僅包括大量的石油、可燃冰、天然氣、礦物等戰(zhàn)略資源,還有海洋漁場、海水養(yǎng)殖區(qū)、灘涂養(yǎng)殖區(qū)等經(jīng)濟(jì)資源。豐富的海洋資源使得油氣開發(fā)、養(yǎng)殖、航運、旅游等行業(yè)發(fā)展迅速。然而,頻繁的水域活動伴隨著的是潛在的危險。一旦船只在海域發(fā)生事故,復(fù)雜的海洋環(huán)境、廣袤的水域面積以及復(fù)雜的水下地形會使搜救工作變得極其困難。例如原油運輸船或觀光旅游船發(fā)生沉船事故后,若不能快速定位沉船的位置,輕則造成經(jīng)濟(jì)損失、環(huán)境污染,重則威脅民眾的生命安全。
側(cè)掃聲吶最早由英國海洋科學(xué)研究所于20世紀(jì)60年代研制,其后該技術(shù)被廣泛地應(yīng)用于海道測量、飛機(jī)殘骸、沉船、水雷和魚群探測以及海底底質(zhì)分類、海洋科學(xué)研究、海洋調(diào)查等多個領(lǐng)域[1]。使用側(cè)掃聲吶方法尋找沉船是水下搜救領(lǐng)域最重要的工作之一,目前,商業(yè)軟件諸如Triton、Discovery在應(yīng)用于水下沉船搜救時大都采用目視識別,該方法嚴(yán)重依賴操作人員的經(jīng)驗,精度和效率受人為因素影響顯著。傳統(tǒng)機(jī)器學(xué)習(xí)方法則是通過建模對沉船進(jìn)行識別,分為數(shù)據(jù)集構(gòu)建、特征提取、模型構(gòu)建、模型應(yīng)用幾個步驟。該方法操作繁瑣、效率較低,不能完全實現(xiàn)端到端快速識別,且特征提取流程難以獲得典型特征,在一個海區(qū)建立的模型難以運用到其他海區(qū),適用性差。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是目前流行的圖像識別算法[2],這一算法通過大量的數(shù)據(jù)訓(xùn)練后,可以持續(xù)使用,減少冗余操作,具體流程如圖1所示。相比于目視識別,卷積神經(jīng)網(wǎng)絡(luò)能消除人工判讀的誤差,有效提高識別精度;相較于傳統(tǒng)機(jī)器學(xué)習(xí),卷積神經(jīng)網(wǎng)絡(luò)不需要人工設(shè)置特征提取環(huán)節(jié),端到端的運行模式可有效提高工作效率。卷積神經(jīng)網(wǎng)絡(luò)在圖像識別應(yīng)用中優(yōu)勢明顯,通過側(cè)掃聲吶沉船影像數(shù)據(jù)集訓(xùn)練多種神經(jīng)網(wǎng)絡(luò),尋找用于側(cè)掃聲吶沉船識別的最佳網(wǎng)絡(luò)結(jié)構(gòu),具有一定的可行性和實用價值。
圖1 卷積神經(jīng)網(wǎng)絡(luò)識別流程Fig.1 Convolutional neural network recognition flowchart
現(xiàn)階段已有較多卷積神經(jīng)網(wǎng)絡(luò)用于識別聲吶圖像中各種物體的研究先例。例如,徐及等[3]設(shè)計了一個水下目標(biāo)被動識別系統(tǒng),其中用卷積神經(jīng)網(wǎng)絡(luò)代替了分類器,并達(dá)到了較好的效果;Yang等[4]將卷積神經(jīng)網(wǎng)絡(luò)用于識別海底紋理,為AUV(Autonomous Underwater Vehicle)自動導(dǎo)航提供路徑匹配,可在水下無信號區(qū)域為AUV提供導(dǎo)航信息;Terayama等[5]利用卷積神經(jīng)網(wǎng)絡(luò)對十多種魚類的聲吶圖片進(jìn)行分類,在不捕捉和傷害魚群的情況下,對漁場的魚體衛(wèi)生及魚群數(shù)量進(jìn)行監(jiān)測;Williams[6]將卷積神經(jīng)網(wǎng)絡(luò)用于水下人造物識別,利用具有10層結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)對水雷和水雷大小的石塊進(jìn)行分類識別,通過實驗證明卷積神經(jīng)網(wǎng)絡(luò)可有效地分辨人眼難以分辨的聲吶圖像。這些研究的識別對象多是魚類或其他海底目標(biāo)物,極少涉及沉船;此外,不同網(wǎng)絡(luò)結(jié)構(gòu)經(jīng)過相同數(shù)據(jù)集訓(xùn)練后的識別正確率也存在差異[7-9]。
因此,為了提高沉船影像識別速度和效率,高效、快速、準(zhǔn)確地識別沉船,探究不同卷積神經(jīng)網(wǎng)絡(luò)在識別沉船方面的表現(xiàn)的相關(guān)研究尤為重要?;诖?本研究收集聲吶影像圖作為數(shù)據(jù)集,利用Python搭建現(xiàn)階段較為成熟的6種11個卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),使用數(shù)據(jù)集對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并從網(wǎng)絡(luò)識別正確率、網(wǎng)絡(luò)訓(xùn)練時間等方面對訓(xùn)練后的網(wǎng)絡(luò)進(jìn)行評估,以期篩選出其中最好的模型。
卷積神經(jīng)網(wǎng)絡(luò)包含輸入層、隱藏層和全連接層。輸入層的主要任務(wù)是負(fù)責(zé)數(shù)據(jù)輸入,一維網(wǎng)絡(luò)的輸入層可處理一維或二維的數(shù)據(jù),二維網(wǎng)絡(luò)的輸入層可處理二維或三維的數(shù)據(jù)。并且,輸入層的大小是固定不變的,輸入數(shù)據(jù)的大小要與網(wǎng)絡(luò)結(jié)構(gòu)一致。全連接層是網(wǎng)絡(luò)的輸出層,在卷積神經(jīng)網(wǎng)絡(luò)的隱藏層中,通過卷積層和池化層的計算,累積了大量的參數(shù),全連接層將提取到的大量特征進(jìn)行非線性組合,最后將結(jié)果輸出。卷積神經(jīng)網(wǎng)絡(luò)的隱藏層由多個部分構(gòu)成,是網(wǎng)絡(luò)結(jié)構(gòu)的主要計算部分,其主要結(jié)構(gòu)又可分為2種:
1)卷積層
卷積層由卷積核和激勵函數(shù)構(gòu)成(圖2)。卷積核主要用于提取特征,卷積核沒有大小限制,多為規(guī)則矩形。一個卷積層內(nèi)包含著多個卷積核,每個卷積核都提供一組參數(shù),通過卷積運算將特征傳遞到下一層。激勵函數(shù)的主要作用是輔助卷積核表達(dá)復(fù)雜的特征,常用的激勵函數(shù)有RELU、Sigmoid、Dropout等,已有的大量研究表明,激勵函數(shù)的存在能提高分類正確率[10]。
圖2 卷積層示意圖Fig.2 Schematic of convolutional layer
2)池化層
池化層的作用是對數(shù)據(jù)進(jìn)行降維,并除去冗余信息,同時可擴(kuò)大感受并實現(xiàn)不變性,包括平移不變性、旋轉(zhuǎn)不變性和尺度不變性(圖3)。除此之外,池化還具有簡化網(wǎng)絡(luò)復(fù)雜程度、減少計算量及減少內(nèi)存消耗等作用。
圖3 池化層示意圖Fig.3 Schematic of pooling layer
卷積神經(jīng)網(wǎng)絡(luò)通過以上各層的計算,最終可實現(xiàn)對圖像的分類。卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)眾多,本文主要分析了6種類型:
1)LeNet-5
LeNet-5是由Lecun等[11]于1998年提出的用于手寫數(shù)字識別的卷積神經(jīng)網(wǎng)絡(luò)。該神經(jīng)網(wǎng)絡(luò)被用于美國銀行支票系統(tǒng),對手寫數(shù)字的識別準(zhǔn)確率達(dá)到了99.8%,運行時間短,識別準(zhǔn)確率高。LeNet-5總共5層,由2個卷積層和3個全連接層構(gòu)成。LeNet-5是當(dāng)代卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的雛形,后續(xù)的網(wǎng)絡(luò)多是在其基礎(chǔ)上進(jìn)行改進(jìn)得到的。
2)Alex Net
2012年Hinton發(fā)布了Alex Net網(wǎng)絡(luò)結(jié)構(gòu),開啟了深度學(xué)習(xí)新篇章[10]。Alex Net網(wǎng)絡(luò)相比于早期的LeNet-5,在激活函數(shù)以及網(wǎng)絡(luò)結(jié)構(gòu)上進(jìn)行了大量的改進(jìn):使用Relu作為激活函數(shù)替換了Sigmoid;加入了Drop Out結(jié)構(gòu),隨機(jī)失活某些神經(jīng)元,以避免參數(shù)過多導(dǎo)致過擬合;使用最大池化替換平均池化,避免平均池化帶來的模糊化效果。完整的Alex Net網(wǎng)絡(luò)結(jié)構(gòu)共有8層,其中前5層為卷積層,后3層為全連接層。
3)VGG
VGG是2014年ILSVRC(ImageNet Large Scale Visual Recognition Challenge)的第二名,因其簡單、同質(zhì)的拓?fù)浣Y(jié)構(gòu)和增加的深度而聞名[12]。在網(wǎng)絡(luò)結(jié)構(gòu)內(nèi)部,VGG用大量的3×3卷積核代替了11×11和5×5的卷積核,這樣做加深了網(wǎng)絡(luò)層數(shù),同時也導(dǎo)致參數(shù)暴增。VGG使用了大約1.4億個參數(shù),是迄今為止參數(shù)最多的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
4)Goog LeNet
Goog Le Net是2014年ILSVRC的冠軍,整個網(wǎng)絡(luò)結(jié)構(gòu)由22層構(gòu)成,具有2個輔助輸出模塊和1個輸出模塊[13]。正常情況下,隨著網(wǎng)絡(luò)的加深,反向傳播函數(shù)對淺層參數(shù)的影響力逐漸減弱,這一特點嚴(yán)重影響了網(wǎng)絡(luò)向更深層發(fā)展。在Goog LeNet結(jié)構(gòu)中,設(shè)計了2個輔助輸出模塊,協(xié)助反向傳播函數(shù)對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,解決了隨著網(wǎng)絡(luò)加深而梯度消失的情況,為進(jìn)一步加深網(wǎng)絡(luò)的深度打下了基礎(chǔ)。
5)Res Net系列
當(dāng)網(wǎng)絡(luò)加深到一定程度后,模型的效果將會不升反降,即模型發(fā)生退化[14]。為了解決該問題,He等[15]提出了ResNet結(jié)構(gòu),該結(jié)構(gòu)設(shè)計了2個殘差塊(Residual Block),假設(shè)輸入為x,卷積層間的恒等映射則為H(x)=x。當(dāng)網(wǎng)絡(luò)加深到一定程度時,神經(jīng)網(wǎng)絡(luò)很難擬合潛在的恒等映射。但是把網(wǎng)絡(luò)設(shè)計為H(x)=F(x)+x,就可以把問題轉(zhuǎn)化為F(x)=H(x)-x。同時,F(x)相較于H(x)更容易擬合。根據(jù)殘差塊數(shù)量的不同,Res Net分為Res Net50、Res Net101和Res Net152三種不同深度的網(wǎng)絡(luò)結(jié)構(gòu)。
6)DenSeNet系列
Huang等[16]提出了DenSeNet網(wǎng)絡(luò)結(jié)構(gòu)。與Res Net相比,DenSe Net提出來更為激進(jìn)的密集連接機(jī)制,將前面所有層都作為額外的輸入傳入到網(wǎng)絡(luò)中。傳統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)在l層的輸出為x l=F l(x l-1);在DenSeNet中,則 為x l=F l([x0,x1,…,x l-1])。DenSeNet主 要 有DenSeNet121、DenSeNet169、DenSeNet201和DenSeNet264四種不同深度的結(jié)構(gòu)。
上述網(wǎng)絡(luò)各有特色,LeNet-5是當(dāng)代卷積神經(jīng)網(wǎng)絡(luò)的雛形;Alex Net在LeNet-5的基礎(chǔ)上,對結(jié)構(gòu)進(jìn)行改進(jìn),并取得了巨大成功;VGG通過修改卷積核大小,達(dá)到了加深網(wǎng)絡(luò)的目的;Goog LeNet提出的輔助輸出結(jié)構(gòu),為進(jìn)一步加深網(wǎng)絡(luò)提供了全新思路;ResNet通過設(shè)計殘差結(jié)構(gòu),解決了網(wǎng)絡(luò)退化問題;DenSeNet采用更激進(jìn)的殘差結(jié)構(gòu),進(jìn)一步加深了網(wǎng)絡(luò)結(jié)構(gòu)。本文將分析這6種11個網(wǎng)絡(luò)應(yīng)用在沉船識別中的性能表現(xiàn)。
深度學(xué)習(xí)需要大量的數(shù)據(jù)樣本,現(xiàn)階段開源的公共數(shù)據(jù)集都擁有大量的樣本。例如,MNIST數(shù)據(jù)集有十個類,每個類有7 000張圖像,共計70 000張圖片;Image Net數(shù)據(jù)集包含約2萬個類,約1 400萬張圖片,是目前最大的圖像數(shù)據(jù)集之一。本文使用的數(shù)據(jù)集原始樣本來自于個人收集的110張聲吶圖像,其中55張為沉船影像,55張為海底背景。相比于公共數(shù)據(jù)集,數(shù)據(jù)量遠(yuǎn)遠(yuǎn)不足。在訓(xùn)練樣本過少的情況下,難以對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,且網(wǎng)絡(luò)會出現(xiàn)過擬合,影響精確度。
為了高效訓(xùn)練網(wǎng)絡(luò),將原始數(shù)據(jù)集做以下處理:①將原始數(shù)據(jù)集做鏡像操作;②處理后的數(shù)據(jù)以隨機(jī)角度旋轉(zhuǎn)10次,并保存每一次的結(jié)果;③將旋轉(zhuǎn)后得到的新數(shù)據(jù)集隨機(jī)打亂順序,再隨機(jī)刪除一部分,最終得到一個包含1 000張沉船影像、1 000張海底背景影像共計2000張圖片的隨機(jī)排序數(shù)據(jù)集,并命名為SSS,樣本如圖4所示;④將SSS按照7∶3的比例,隨機(jī)分為訓(xùn)練集SSS-train和測試集SSS-test。其中SSS-train用于訓(xùn)練網(wǎng)絡(luò),將SSS-test用于測試訓(xùn)練完成的網(wǎng)絡(luò)的分類正確率。
圖4 數(shù)據(jù)樣本示意圖Fig.4 Data sample diagram
評估模型主要使用混淆矩陣(誤差矩陣),矩陣形式為N行N列,是精度評價的一種標(biāo)準(zhǔn)格式。其中,被正確地劃分為正例的個數(shù),即實際為正例且被分類器劃分為正例的實例數(shù)為True Positives(TP);被錯誤地劃分為正例的個數(shù),即實際為負(fù)例但被分類器劃分為正例的實例數(shù)為False Positives(FP);被錯誤地劃分為負(fù)例的個數(shù),即實際為正例但被分類器劃分為負(fù)例的實例數(shù)為False Negatives(FN);被正確地劃分為負(fù)例的個數(shù),即實際為負(fù)例且被分類器劃分為負(fù)例的實例數(shù)為True Negatives(TN)(表1)。根據(jù)TP、FP、FN和TN值,可以計算總體精度、制圖精度、用戶精度等精度評價指標(biāo),這些指標(biāo)從不同的側(cè)面反映了圖像分類的精度。由于實驗為二分類,所以僅選用了正確率來作為模型評價的指標(biāo)。正確率(R)是常用的評價指標(biāo),正確率越高,模型效果越好,計算公式如下:
表1 混淆矩陣Table 1 Confusion matrix
由于同一數(shù)據(jù)集在不同的網(wǎng)絡(luò)結(jié)構(gòu)下,識別正確率、效率也存在差異,為了在眾多模型中找到較適合水下沉船識別的卷積神經(jīng)網(wǎng)絡(luò)模型,在GPU型號為NVIDIA GeForce RTX 2080 Ti、開源軟件為Py Torch 1.4.0和Python 3.7.6的條件下,設(shè)計了以下實驗:
1)收集已有的沉船圖片,對圖片進(jìn)行處理,制作一個沉船數(shù)據(jù)集。
2)部署深度學(xué)習(xí)框架,搭建相應(yīng)的網(wǎng)絡(luò)結(jié)構(gòu)。
3)將SSS-train用于訓(xùn)練Le Net-5、Alex Net、VGG、Goog Le Net、Res Net系列和DenSeNet系列網(wǎng)絡(luò)。
4)將SSS-test用于測試訓(xùn)練后的網(wǎng)絡(luò),并將正確率作為最終結(jié)果展出。
5)從訓(xùn)練時間和正確率兩個角度對網(wǎng)絡(luò)進(jìn)行評估。
其中,步驟3)全部網(wǎng)絡(luò)模型將學(xué)習(xí)率(Learning Rate)設(shè)置為0.000 1,最大迭代次數(shù)(Epoch)設(shè)置為100。
將SSS數(shù) 據(jù)集用于 訓(xùn)練LeNet-5、Alex Net、VGG、Goog LeNet、Res Net50、Res Net101、Res Net152、DenSeNet121、DenSeNet169、DenSeNet201和DenSeNet264十一種不同的卷積神經(jīng)網(wǎng)絡(luò)。其中,SSS-train用于訓(xùn)練網(wǎng)絡(luò),SSS-test用于測試訓(xùn)練后的網(wǎng)絡(luò),在所有網(wǎng)絡(luò)結(jié)構(gòu)上的訓(xùn)練、測試過程如圖5所示。對網(wǎng)絡(luò)的訓(xùn)練時間和測試精度進(jìn)行統(tǒng)計,各網(wǎng)絡(luò)性能如表2所示。
表2 網(wǎng)絡(luò)性能統(tǒng)計Table 2 Network performance statistics
圖5 訓(xùn)練過程Fig.5 Training process
由實驗結(jié)果可知,不同網(wǎng)絡(luò)在訓(xùn)練時間和正確率上存在較大差異:
1)從識別正確率上分析,LeNet-5和Alex Net性能明顯低于其他測試網(wǎng)絡(luò),這是因為LeNet-5和Alex Net都屬于早期的卷積神經(jīng)網(wǎng)絡(luò),其中LeNet-5只有5層,而Alex Net只有8層,結(jié)構(gòu)較為簡單。
2)在較深網(wǎng)絡(luò)結(jié)構(gòu)中,Res Net152的正確率出現(xiàn)了小幅度的下降,這是由于網(wǎng)絡(luò)層次過深,參數(shù)過多,出現(xiàn)了過擬合的現(xiàn)象。具體表現(xiàn)為網(wǎng)絡(luò)在訓(xùn)練過程中性能良好,但是在測試的過程中,正確率有所下降。相比于DenSe Net264網(wǎng)絡(luò)深度已達(dá)到264層的情況下,仍然沒有出現(xiàn)過擬合的現(xiàn)象,Res Net系列在抗過擬合方面,性能表現(xiàn)較差。
3)從時間上分析,LeNet-5和Alex Net結(jié)構(gòu)簡單,耗時少。ResNet系列和DenSeNet系列網(wǎng)絡(luò),由于采用了1×1的卷積核降維,雖然網(wǎng)絡(luò)較深,但是參數(shù)較少,訓(xùn)練耗時相對較少。VGG和Goog LeNet深度不是最深的,但是由于接受所有參數(shù)的策略,導(dǎo)致參數(shù)過多,反而訓(xùn)練時間較長。
4)識別正確率最低的LeNet-5網(wǎng)絡(luò)和識別正確率最高的DenSeNet121網(wǎng)絡(luò)的混淆矩陣如圖6所示,從圖中可知,DenSe Net121識別正確率明顯優(yōu)于LeNet-5。
圖6 混淆矩陣Fig.6 Confusion Matrix
相比于目視識別法和傳統(tǒng)機(jī)器學(xué)習(xí)的方法,卷積神經(jīng)網(wǎng)絡(luò)的沉船識別方法可快速、高效、準(zhǔn)確地識別沉船。本文使用Python搭建 了LeNet-5、Alex Net、VGG、Goog LeNet、Res Net系列、DenseNet系列共11種卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),以側(cè)掃聲吶沉船影像為數(shù)據(jù)集進(jìn)行實驗選擇出適用于分析沉船聲吶數(shù)據(jù)的網(wǎng)絡(luò)。由實驗結(jié)果可知:DenSeNet121訓(xùn)練時間短、測試正確率高、抗過擬合能力強(qiáng),是6種11個網(wǎng)絡(luò)結(jié)構(gòu)中較適合用于沉船聲吶圖像識別的網(wǎng)絡(luò)結(jié)構(gòu)。在后續(xù)的工作中,將把DenSeNet121用于構(gòu)建沉船實時探測算法中,以期實現(xiàn)側(cè)掃聲吶沉船圖像高效、實時探測。