李沅衡,林茂茲,丁可武,陳文輝,蘇芳
(1.福建技術(shù)師范學院 a. 近海流域環(huán)境測控治理福建省高校重點實驗室,b.海洋研究院 福建福清 350300;2.南方海洋科學與工程廣東省實驗室(廣州),廣東廣州 511458)
我國是海洋漁業(yè)大國,2019 年我國有漁業(yè)人口1 828.20 萬人,全社會漁業(yè)經(jīng)濟總產(chǎn)值26 406.50 億元.但是,與我國巨大的漁業(yè)總體量相比,我國的漁業(yè)科研機構(gòu)從業(yè)人員僅有6 213 人,相關科研機構(gòu)總固定資產(chǎn)僅有4.5 億元[1].整體而言,我國漁業(yè)還處于一個過度依賴人力與物力的階段.因為缺少科學的指導,我國漁業(yè)發(fā)展具有相當?shù)拿つ啃裕浔厝粫斐刹槐匾睦速M和生態(tài)環(huán)境的破壞.將有效的技術(shù)手段應用于我國漁業(yè)資源開發(fā)中,可以在有效充分利用海洋資源的同時保護生態(tài)環(huán)境,為漁業(yè)資源循環(huán)再生提供有力的技術(shù)支撐[2].
近年來,智能水下機器人和智能原位觀測儀器逐漸成為人們開發(fā)利用海洋資源的重要海工裝備[3].智能水下機器人是一個集成水下目標探測和識別、數(shù)據(jù)融合、人工智能、智能控制以及導航和通信技術(shù)的高度集成無人平臺.將水下機器人或者水下原位觀測儀應用于魚類探測,可以很好地解決實際生產(chǎn)中海洋牧場實時監(jiān)測以及盲目捕撈等現(xiàn)實問題.
基于機器視覺感應外界信息的智能水下設備其重要功能之一是目標的自動分類.在分類問題中,支持向量機(SVM)基于統(tǒng)計學原理借助最優(yōu)化方法解決機器學習問題[4],在小規(guī)模分類問題中有廣泛的應用.Li 等使用快速區(qū)域卷積神經(jīng)網(wǎng)絡(R-CNN)進行水下魚群分類,與SVM 方法相比,R-CNN 可以極大提高分類的準確率與效率[5].Villon 等對比了SVM 分類器與深度學習方法在水下珊瑚礁魚群分類時的優(yōu)缺點,并認為在部署效率方面,深度神經(jīng)網(wǎng)絡明顯高于SVM 方法[6].近年來,隨著水下作業(yè)量的增多,人們積累了大量水下圖像與視頻數(shù)據(jù),傳統(tǒng)的SVM 因為受其固有理論缺陷限制,難以直接應用于多類別及大數(shù)據(jù)問題中[7].由于SVM 存在著以上問題,部分學者進行了利用其他分類器的嘗試.Zion 等利用貝葉斯分類器對三種常見的淡水魚進行了分類研究,其分類的準確率可達98%以上[8].Ravanbakhsh 等在利用水平集方法獲得水下魚類輪廓的基礎上,使用Haar 分類器獲得了水下魚類重要器官的精確定位,即使在渾水中,該方法的精度也可達到亞像素級[9].雖然以上方法在魚群分類中取得了一定成果,但是依然存在對輸入數(shù)據(jù)敏感、特征檢測率低和光照魯棒性差等問題,難以應用于大規(guī)模海洋數(shù)據(jù)的處理.
為了解決常規(guī)分類方法中存在的以上問題,文獻[10]提出了使用卷積神經(jīng)網(wǎng)絡(CNN)提取圖像特征的方法,文獻[11]進一步設計深度卷積神經(jīng)網(wǎng)絡實現(xiàn)目標圖像的分類.深度神經(jīng)網(wǎng)絡因為具有分類準確率高、并行處理能力強、分布式存儲和學習能力強、網(wǎng)絡結(jié)構(gòu)可根據(jù)應用場景微調(diào)、魯棒性較強以及不易受噪聲影響等優(yōu)勢受到廣泛關注和研究[12],其研究成果也被應用于水下魚群分類中.Xu 等使用YOLO 模型對三種魚類進行了目標識別訓練,但將其應用于實際水下圖像時,其發(fā)現(xiàn)經(jīng)過訓練的模型無法識別不屬于訓練集中的魚,因此需要使用多種不同的方法訓練模型,從而使模型易于推廣到新的數(shù)據(jù)集[13].李慶忠等利用遷移學習訓練Underwater-YOLO 網(wǎng)絡,提高了海底小目標和重疊目標的可檢測性[14].陳文輝等通過遷移學習訓練深度卷積神經(jīng)網(wǎng)絡,在消耗較少訓練資源的前提下,使模型達到較高的驗證準確率,從而為小模型進行魚群分類提供了可能[15].張明華等針對水下視頻質(zhì)量不高的問題,提出了一種使用背景去除的水下視頻目標檢測法,該方法能夠有效提高水下視頻的檢測效率[16].王文成等通過改進ResNet50 深度模型,對常見的四種魚類進行分類獲得了良好的效果[17].
綜上所述,深度神經(jīng)網(wǎng)絡是人工智能領域的一個重要分支,相比傳統(tǒng)方法具有巨大的優(yōu)勢,且隨著深度神經(jīng)網(wǎng)絡技術(shù)的發(fā)展,目前已經(jīng)有大量相對成熟的圖像分類模型問世,被廣泛應用于水下目標檢測與分類研究中.然而針對不同常見深度模型對海洋魚類分類的準確率與效率優(yōu)劣的問題,尚缺乏系統(tǒng)而全面的對比研究.因此,本文使用Tensorflow框架,在保持深度模型參數(shù)的基礎上,利用Fish4Knowledge 數(shù)據(jù)庫[18]中樣本量較大的12種魚類,對業(yè)界應用中最具代表性的VGG16、Inception、Xception、ResNet、DenseNet、MobileNets、NasLarge 和EfficientNet 模型進行訓練,使用訓練完成的模型測試對應的驗證集數(shù)據(jù),借此對比幾種常見的深度模型在魚類圖像分類時的準確率與效率,從而為海洋魚類分類的實際應用提供指導.
深度神經(jīng)網(wǎng)絡由輸入層、卷積層、池化層和全鏈接層組成,其中的卷積層在整個網(wǎng)絡中起著至關重要的作用.設有二維矩陣X 與矩陣K,其中元素為x與k,則兩矩陣的二維卷積運算為
其中z(u,v)為卷積結(jié)果矩陣Z 的第(u,v)項,若X 是m階方陣,而K 是n階方陣,且設K旋轉(zhuǎn)180 度可得Krot,則有效值卷積可定義為
其中·X(i,j)表示函數(shù)
卷積層的主要作用為提取圖像的特征,而二維圖像數(shù)據(jù)可以看作是三維的數(shù)據(jù)體,該數(shù)據(jù)體與卷積核進行運算,從而得到新的卷積層的輸入.假設輸入層為l-1 層,其輸入的數(shù)據(jù)體為X(l-1)(m×m),卷積層的核為K(l)(n×n),偏置矩陣為B(l),則卷積層的輸出為一個m-n+1階的方陣Z(l),其元素可以表示為
該式即為卷積層運算公式,在深度神經(jīng)網(wǎng)絡中,一般會有多層不同卷積核的卷積運算.
池化層通過在特定區(qū)域提取數(shù)值特征的辦法,減小數(shù)據(jù)空間的大小.以最大池化層為例,其通過將某個大小的鄰域內(nèi)的最大值找出并儲存,從而得到相應特征.通過利用這樣的方法,數(shù)據(jù)集中最有特點的數(shù)據(jù)被保留下來,從而達到降低運算量和避免過擬合的作用,在設計深度神經(jīng)網(wǎng)絡時,一般在多個卷積層之后加入一個池化層.全連接層的作用是將卷積層和池化層的數(shù)據(jù)映射到樣本標記空間,起到了“分類器”的作用,在深度神經(jīng)網(wǎng)絡末尾卷積核為1×1 的卷積層即可視為全連接層.
將1.1 節(jié)中詳細介紹的各層有機組合即可獲得簡單的深度神經(jīng)網(wǎng)絡模型.因為VGG16 網(wǎng)絡是最為典型和基礎的深度神經(jīng)網(wǎng)絡,而其后推出的網(wǎng)絡多是對VGG16 的改良與優(yōu)化.本文首先以如圖1 所示的VGG16 模型為例介紹深度神經(jīng)網(wǎng)絡的基本結(jié)構(gòu),并在此基礎上簡要介紹本文所使用的其他網(wǎng)絡模型.VGG16 有3 個全連接層和13 個卷積層[19].大小為224×224×3的彩色圖像經(jīng)過64 個卷積核的兩次卷積之后,通過一次池化運算大小變?yōu)?12×112×128.在經(jīng)歷多次卷積與池化的操作即可到達最后的全連接層完成分類.在深度模型的最后,為了保證訓練時各分類結(jié)果概率之和為1,可加入Softmax 層[20].
圖1 VGG16 模型示意圖
雖然VGG 模型在圖像分類問題中取得了巨大成功,但是其結(jié)構(gòu)易飽和,使得模型的深度與寬度難以延伸.Inception 模型的設計者通過引入Inception 模塊(詳見文獻[21])擴展了模型寬度的同時提高參數(shù)利用率,在此基礎上Xception 通過改進Inception 模塊,解耦網(wǎng)絡的空間相關性與通道相關性,進一步優(yōu)化了網(wǎng)絡的性能[22].在解決VGG 模型固有缺陷時,ResNet 通過殘差學習來解決網(wǎng)絡加深時產(chǎn)生的退化問題,從而極大提升了模型的最大深度,并在當時取得了極其驚艷的應用效果[23].
與ResNet 網(wǎng)絡僅在單層之間傳輸參數(shù)不同,DenseNet 的作者通過將每一層與之前的層均建立連接路徑,從而每一層都可以獲得前面所有層學習得到的特征,使得DenseNet 不但可以在網(wǎng)絡深度增加的同時保持相對較小的參數(shù)總量,還可以提高信息流和梯度在整個網(wǎng)絡中傳播的速度,最終獲得了一個更易于訓練的深度模型[24].借鑒Xception 解耦卷積網(wǎng)絡相關性的思路,MobileNets 通過把常規(guī)卷積層分解成逐點卷積和深度卷積,降低常規(guī)深度模型的參數(shù)量,從而在保證精度相對較好的同時提高了訓練和預測的效率[25].隨著技術(shù)進步,神經(jīng)網(wǎng)絡的設計與選優(yōu)工作也從手工調(diào)試轉(zhuǎn)變?yōu)闄C器自動設計,NasLarge 通過生成子網(wǎng)絡,對子網(wǎng)絡進行設計和評估并從中選優(yōu)以得到性能最好的深度神經(jīng)網(wǎng)絡[26].雖然NasLarge 通過子網(wǎng)絡選優(yōu)的方法獲得了泛化能力強的深度神經(jīng)網(wǎng)絡,但是其訓練效率較差難以廣泛應用于實際生產(chǎn)中,因此效率較高的神經(jīng)網(wǎng)絡架構(gòu)搜索模型EfficientNet被提出,并在業(yè)界得到了廣泛應用[27].
本節(jié)在詳細介紹卷積神經(jīng)網(wǎng)絡與VGG16的基本結(jié)構(gòu)的基礎上,簡單介紹了Inception、Xception、ResNet、DenseNet、MobileNets、NasLarge 和EfficientNet,這七個深度模型在VGG 成功應用之后的圖像分類領域,各自提出了具有建設性的改進思路,極大促進了深度模型的理論發(fā)展與實踐應用,在目前眾多的深度模型中應用范圍最廣,最具有代表性.因此本文針對以上所有深度模型在海洋魚類識別與分類中的應用效果進行檢驗,以期為后續(xù)的研究工作提供指導與借鑒意義.
本實驗用于驗證目前常用的圖像分類模型在充分訓練后對水下魚類圖像分類的準確率與效率,實驗時所使用的軟硬件資源如表1 所示:操作系統(tǒng)為CentOS Linux;深度學習框架為Tensorflow2.4 及其內(nèi)置的Keras 接口;圖像數(shù)據(jù)使用Fish4Knowledge 海洋魚類數(shù)據(jù)庫[18];使用的CPU 型號為Intel Xeon 5218R;GPU 運算核心型號為NVIDIA 3080;為了盡量減小硬盤IO 瓶頸對效率評估造成的影響,本文使用Nvme 協(xié)議接口的固態(tài)硬盤存儲魚類圖片數(shù)據(jù).
表1 實驗條件列表
在訓練模型的過程中使用隨機數(shù)對深度模型參數(shù)初始化,在此基礎上還需要對如下若干較為重要的訓練參數(shù)進行設置.
2.2.1 訓練集與測試集
Fish4Knowledge 數(shù)據(jù)庫共收集了23 種海洋常見魚類的27 370 張彩色圖片[18],本文選取其中數(shù)據(jù)量較大的12 種魚類圖片,并通過旋轉(zhuǎn)的方式將這12 類圖片中數(shù)據(jù)量較小的類別進行擴充,最終得到包含了12 種魚的圖片一共30 614 張.本文將圖片分辨率統(tǒng)一為224 px×224 px,并通過隨機劃分的方式,將這些圖片中的約80%作為訓練集,而剩下的約20%圖片作為驗證集,為了確保不同深度網(wǎng)絡模型所使用的數(shù)據(jù)集完全相同,在訓練集與驗證集劃分完成之后,不再對訓練集與驗證集進行修改.
2.2.2 BatchSize
BatchSize 為一次訓練所選取的樣本數(shù)量.BatchSize 增大時,網(wǎng)絡的梯度下降方向能夠更加準確,但與此同時,大的BatchSize 會顯著提高內(nèi)存/顯存的占用率.本文在實驗設計過程中,綜合考慮各網(wǎng)絡模型特點與軟硬件資源,選取BatchSize=32.
2.2.3 神經(jīng)元概率
DropOut 層用于避免深度神經(jīng)網(wǎng)絡訓練過程中產(chǎn)生的過擬合問題,其在每次訓練時隨機隱藏神經(jīng)層中的某些單元,在本次訓練中僅對其他神經(jīng)單元進行訓練,而在下一次訓練過程中,同樣隨機隱藏部分單元,如此往復直至訓練結(jié)束[28].在Keras 接口中,DropOut 的主要參數(shù)為每次訓練時參與工作的神經(jīng)元概率,本文在模型訓練過程中,將該值統(tǒng)一設置為0.8.
2.2.4 優(yōu)化方法與學習率
深度神經(jīng)網(wǎng)絡的訓練可以看作是一個對其相關參數(shù)尋優(yōu)的過程,在參數(shù)尋優(yōu)時,梯度下降法的應用最為廣泛,該方法通過計算誤差函數(shù)在當前點的梯度,并沿著負梯度方向搜索最優(yōu)解[29].在樣本量較大的時候,由于梯度下降法運算量過大,影響訓練效率.通過引入隨機梯度下降,隨機使用樣本中的某些數(shù)據(jù)作為計算梯度方向的依據(jù),即可有效解決梯度下降法運算量過大的問題.而隨機梯度下降中,梯度更新的步長就是學習率,本實驗中將學習率統(tǒng)一設置為0.005.
2.2.5 訓練迭代次數(shù)(epoch)
一般在圖像分類模型訓練時,只要參數(shù)設置得當,經(jīng)過大約200 次左右即可完成訓練任務.本文為了保證模型的充分訓練,統(tǒng)一進行600 次迭代訓練.
2.3.1 模型訓練
在訓練過程中,本文所對比的絕大多數(shù)深度模型訓練與驗證準確率都高度一致,并在200 次迭代訓練之內(nèi)快速提高且最終準確率收斂到約100%.其中NasLarge 模型的訓練準確率與驗證率曲線最為典型,訓練集準確率與驗證集準確率曲線近乎重合,因此本文僅展現(xiàn)訓練準確率見圖2(a).相對的,在所有本文實驗用的模型中,如圖2(b)所示的VGG16 模型的準確率曲線較為特殊,其準確率提升較慢且經(jīng)過了600 次迭代以后,準確率僅有90%左右,而VGG16 的訓練過程中驗證準確率高于訓練準確率最終可達95%左右,考慮到DropOut層對訓練與驗證準確率可能產(chǎn)生的影響,二者可存在一定的準確率差距[28].
圖2 600 次訓練過程中模型準確率曲線圖,其中(a)以NASLarge 模型為例的多數(shù)模型訓練準確率,(b)VGG16 的訓練與驗證準確率
2.3.2 驗證準確率與效率
在對比各個模型的準確率與效率時,本文直接對驗證集數(shù)據(jù)中的約6 100 張圖像進行分類測試.在盡量避免硬件IO 效率對結(jié)果影響的基礎上,對每一個模型重復5 次實驗.如表2所示,為每個參與實驗的深度模型驗證集的識別準確率、交叉熵損失函數(shù)(Loss)與消耗時間三者的平均值.從表中可以看出,Xception、DenseNet201 與Inception 的準確率最高,都達到了99.8%以上,而ResNet152、NasLarge 和MobileNet 的準確率也達到了99.5%以上.相對而言,VGG16 與EfficientNetB0 的識別準確率略差,其中EfficientNetB0 雖然訓練效果較好,但是驗證準確率較差,可能是因為出現(xiàn)了過擬合問題.因為本實驗中所有的模型都經(jīng)歷了600 次迭代的充分訓練,所以損失函數(shù)與準確率之間有較好的對應關系.在模型效率方面,MobileNet 效率最高,僅耗時24.11 s;而NasLarge 耗時最長,達到了59.26 s.其他模型的總耗時集中在25.11~38.18 s 之間.
表2 模型識別準確率與耗時表
在本對比實驗中,模型深度最深、參數(shù)量最大的NasLarge 模型在識別驗證集所有圖像時,雖然耗費了更多的時間,但是在實際測試中并沒有獲得最佳的準確率,可能的原因在于其網(wǎng)絡參數(shù)過多而用于訓練和驗證的圖像數(shù)據(jù)量相對較小,無法發(fā)揮其全部優(yōu)點.相對的MobileNet 和EfficientNet 兩個輕量級模型則更加節(jié)約計算資源,其中MobileNet 在模型參數(shù)少、識別效率高的同時,仍能保持較高的準確率,說明在識別本實驗數(shù)據(jù)庫中的樣本時,可以在準確率與效率上達到最優(yōu).DenseNet201、Xception 與Inception 的識別準確率最高,但受限于它們較深的模型,在識別準確率沒有顯著優(yōu)于MobileNet 的前提下,識別效率差距較大.
深度神經(jīng)網(wǎng)絡已經(jīng)具備了針對魚群圖像精確分類的能力,在對比實驗所使用的模型中,準確率最高的DenseNet201 識別準確率可達99.84%,且其在28.12 s 內(nèi)即可完成約6 100 張圖像的分類工作,平均每秒可處理約220 張圖像,具有較高的效率.但即便如此,DenseNet201 模型的識別效率仍不及MobileNet,后者的識別準確率雖然下降了0.17%,但是效率提高了16.63%.考慮到水下環(huán)境對設備硬件的限制,在模型小、參數(shù)量少的條件下,還能夠保證較高精度的MobileNet具有更為廣闊的應用前景.
雖然本實驗在設計過程中使用IO 效率極高的Nvme 固態(tài)硬盤進行實驗,但是因為實驗中使用了約6 100 圖像的大規(guī)模輸入與輸出,所以無法完全避免IO 耗時給本實驗帶來的誤差.而水下目標識別過程中,受限于復雜的水下環(huán)境,本實驗結(jié)論僅針對本實驗所使用的數(shù)據(jù)集,缺乏泛化能力.因此在未來的工作中,需要針對大數(shù)據(jù)的IO 展開進一步優(yōu)化,同時通過一定的預處理或后處理方法,提高模型的泛化能力.