朱書勤,李 銳,王天樂
(1.北京交通大學軟件學院,北京 100044;2.首都師范大學信息工程學院,北京 100048;3.北京交通大學電子信息工程學院,北京 100044)
海洋對人類仍然是一個未知的空間,人類對海洋生物的研究進展比較緩慢。由于拍攝條件限制,海洋生物圖像數(shù)據(jù)往往難于獲取,拍攝時受到能見度的影響較大;一些物種間的特征差異很小,視覺分辨的難度大。同時受到水下光線不均勻的影響,水下圖像存在顏色失真和曝光不足等問題,嚴重影響了水下目標的識別精度[1]。卷積神經(jīng)網(wǎng)絡(luò)得益于其優(yōu)秀的性能,被廣泛應(yīng)用于圖像分類領(lǐng)域[2]。其中,EfficientNet 作為現(xiàn)有最佳的圖像分類卷積神經(jīng)網(wǎng)絡(luò)模型,擁有較好的分類正確率。
該文針對海洋生物圖像分類問題,將EfficientNet B0 模型、MobileNet V2 模型和DenseNet 模型融合,建立可遷移的模型。將經(jīng)過遷移學習訓練后的模型在現(xiàn)有海洋生物的數(shù)據(jù)集上進行訓練,最終使用模型融合的方式優(yōu)化訓練結(jié)果,獲得海洋生物物種分類結(jié)果。實驗得到的模型有較好的遷移性,可以遷移至其他水下生物圖像數(shù)據(jù)集,并有較高的分類準確度。
海洋生物分類的總體流程如圖1 所示。分類流程由數(shù)據(jù)集拆分、遷移學習、圖像預處理、模型訓練、模型融合5 部分構(gòu)成。首先將現(xiàn)有實驗數(shù)據(jù)集拆分成訓練集和測試集,做好前期準備工作。其次構(gòu)建EfficientNet B0[3]、DenseNet[4]和MobileNet V2[5]3 個 卷積神經(jīng)網(wǎng)絡(luò)模型,將3 個模型各自在ImageNet 數(shù)據(jù)集上進行預訓練,提取底層通用特征,緩解在海洋生物小數(shù)據(jù)集上訓練的過擬合問題。將預訓練后的模型遷移至該文實驗數(shù)據(jù)集,需要先對數(shù)據(jù)集作預處理。預處理分為兩個階段,首先是圖像增強處理:將圖形通過隨機旋轉(zhuǎn)、縮放、裁剪以及根據(jù)給定模式進行填充,增加多樣性和差異性;其次默認自然圖像是一類平穩(wěn)的數(shù)據(jù)分布,即數(shù)據(jù)每一維的統(tǒng)計都服從相同分布,在此基礎(chǔ)上用數(shù)據(jù)集的每個樣本減去訓練集圖像的像素統(tǒng)計平均值,可以移除共同的部分,凸顯個體差異。最終,將前文所述的3 個模型進行融合[6]。

圖1 海洋生物分類流程圖
文中選用EfficientNet 系列中的基礎(chǔ)網(wǎng)絡(luò)模型EfficientNet B0。首先將該模型在ImageNet 數(shù)據(jù)集上進行預訓練[7],共包含5 330 564 個參數(shù),其中需要梯度下降訓練的參數(shù)有5 288 548 個,不需要梯度下降訓練的參數(shù)包括Batch Normalization 層中的均值和方差,共42 016 個。相比于傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)模型,該網(wǎng)絡(luò)的核心結(jié)構(gòu)為移動翻轉(zhuǎn)瓶頸卷積(MBConv)模塊。該模塊通過神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索得到,引入了壓縮與激發(fā)網(wǎng)絡(luò)的注意力思想。
目前,分類網(wǎng)絡(luò)的模型擴展主要從3 個維度進行:加寬網(wǎng)絡(luò)、加深網(wǎng)絡(luò)和增大分辨率。針對分類網(wǎng)絡(luò)深度d、寬度w和分辨率r這3 個維度分別作擴展和優(yōu)化,都能提升模型效果,但上限也比較明顯:準確率達到80% 后提升就很小了。而通過同時調(diào)整上述3 個維度的模型擴展參數(shù),就能更加有效地提升模型的效果[8]。
EfficientNet 為了找到滿足式(1)的3 個維度的最佳參數(shù),引入?yún)?shù)φ,將深度d、寬度w和分辨率r3 個參數(shù)按照式(2)分別用φ表示,并使用如式(3)所示的模型復合縮放方法。

同時為了減少搜索時的計算量,對式(2)中的底數(shù)作了數(shù)值限 制,分別為α·β2·γ2≈2,α≥1,β≥1,γ≥1。將復合系數(shù)φ固定為1,先假設(shè)有兩倍以上的計算資源可以使用,然后對α、β、γ進行網(wǎng)絡(luò)搜索;找到最佳參數(shù)值后固定α、β、γ,通過復合調(diào)整公式對基線網(wǎng)絡(luò)進行擴展。最后,在基礎(chǔ)的EfficientNet B0 模型上添加了全局空數(shù)據(jù)平均池化層、Dropout 層和全連接層。
隨著網(wǎng)絡(luò)層數(shù)的加深,網(wǎng)絡(luò)在訓練過程中的前傳信號和梯度信號在經(jīng)過很多層之后可能會逐漸消失。為了最大化網(wǎng)絡(luò)中所有層之間的信息流,DenseNet 網(wǎng)絡(luò)[9]中的所有層都兩兩進行了連接,使得網(wǎng)絡(luò)中每一層都接收它前面所有層的特征作為輸入,從而使網(wǎng)絡(luò)中存在著大量密集的連接。
對比諸多神經(jīng)網(wǎng)絡(luò),DenseNet 在一定程度上減輕了訓練過程中梯度消散的問題。DenseNet 模型結(jié)構(gòu)如圖2 所示,在反傳時每一層都會接收其后所有層的梯度信號,所以靠近輸入層的梯度不會隨著網(wǎng)絡(luò)深度的增加變得越來越小。由于大量的特征被復用,所以使用少量的卷積核就可以生成大量的特征,最終模型的尺寸也比較小。DenseNet 的架構(gòu)為:

圖2 DenseNet模型結(jié)構(gòu)示意圖

其中,xl表示l層的輸出,Hl表示一個非線性變換,包括BN、ReLU 和3×3 的卷積;[x0,x1,…,xl-1]表示將0 到l-1 層的輸出特征圖作通道合并。
MobileNet網(wǎng)絡(luò)結(jié)構(gòu)是一款輕量級的移動終端神經(jīng)網(wǎng)絡(luò),文中選用了其系列中的V2 版本。MobileNet V2 相比于其V1 版本,在可分離卷積架構(gòu)的基礎(chǔ)上引入倒殘差模塊(Inverted Residuals)和線性瓶頸(Linear Bottleneck)層[10]。倒殘差模塊與傳統(tǒng)殘差模塊中維度的先縮減再擴增正好相反,捷徑連接的是維度縮減后的特征圖。線性瓶頸層去掉了小維度輸出層后面的非線性激活層,目的是保證模型的表達能力。
考慮到模型移植性能,內(nèi)存消耗的縮減也十分重要。倒殘差瓶頸層模塊可構(gòu)建有向非循環(huán)計算超圖G,該超圖G由代表操作的邊和代表中間計算張量的節(jié)點組成。調(diào)度計算是為了最大程度地減少需要存儲在內(nèi)存中的張量的總數(shù)。在最一般的情況下,如式(5)所示,它將搜索所有可能的計算階數(shù)并選擇最小化的階數(shù)。

在海洋生物分類的應(yīng)用場景,文中使用Mobile Net V2模型可以在需要時單獨將其移植到移動設(shè)備。
為解決神經(jīng)網(wǎng)絡(luò)模型訓練成本過大的問題,該文實驗對前文所述的3 個神經(jīng)網(wǎng)絡(luò)模型使用了遷移學習的方法。
在訓練深度學習網(wǎng)絡(luò)模型時,需要大量的高質(zhì)量標注數(shù)據(jù),尤其是在圖像領(lǐng)域[11-12]。因此會選擇在ImageNet 數(shù)據(jù)集上預訓練,對模型進行初始化。通過使用其預訓練的權(quán)重,使得即使只有一個較小的數(shù)據(jù)集,也能夠得到很好的性能。該文實驗中融合的3 個模型都各自先在ImageNet 上進行學習,以解決海洋生物圖像數(shù)據(jù)集較少的問題[13]。將預訓練后的模型遷移到該實驗數(shù)據(jù)集進行學習時,凍結(jié)其底層卷積層,保留該層中包含的大量底層信息,僅訓練頂層卷積層和全連接層[14]。
該文實驗中將EfficientNet B0模型、MobileNet V2模型以及DenseNet 模型融合。將已在ImageNet 數(shù)據(jù)集上訓練過的3 個神經(jīng)網(wǎng)絡(luò)模型遷移至該實驗數(shù)據(jù)集上訓練并融合之前,需要首先將圖像數(shù)據(jù)集進行處理。
把原始的訓練集先分成訓練集和測試集兩部分,使用圖片樣本增強器對樣本中的每個sample 進行迭代。設(shè)置其縮放比例、旋轉(zhuǎn)角度等,使原本的圖像更多樣。同時逐樣本減去均值,突出圖像特征[15]。
文中選用的3 個模型訓練后在測試集上的正確率都達到了80%以上,但還有提升空間。為了使效果更好,使用Uniform Blending 模型融合方法[16],在訓練集的數(shù)據(jù)上訓練3 個模型,對3 個模型的預測結(jié)果進行平均,通過減少過擬合,使得決策邊界更加平滑。使用融合后的模型去預測測試集數(shù)據(jù)的標簽。
將前文所述的3 個模型設(shè)為(g1,g2,g3),每個模型權(quán)重相同。融合后的模型如式(6)所示:

該文實驗使用的計算機CPU 為Intel Core I7-9750H,主頻為2.6 GHz,運行內(nèi)存為24 GB;顯卡采用NVIDA RTX 2070,運行顯存為6 GB,操作系統(tǒng)采用Windows 10。使用Python 3.8 編寫程序,讀取本地數(shù)據(jù)集。
文中使用的圖像數(shù)據(jù)集共有1 882 幅圖像,分為20 類。其中,1 323 幅作為訓練集圖像,560 幅作為測試集圖像。圖像數(shù)據(jù)集規(guī)模如表1 所示。

表1 海洋生物圖像數(shù)據(jù)集
將圖像統(tǒng)一調(diào)整為224×224 像素的RGB 彩色圖像。在此基礎(chǔ)上將圖像作旋轉(zhuǎn)、縮放、裁剪等隨機調(diào)整,以增加多樣性和差異性。將調(diào)整后的彩色圖像分別輸入3 個神經(jīng)網(wǎng)絡(luò)模型。采用批量隨機梯度下降的方法訓練網(wǎng)絡(luò)模型,優(yōu)化參數(shù)。海洋生物圖像數(shù)據(jù)集樣例如圖3 所示。

圖3 海洋生物圖像數(shù)據(jù)集樣例
為定量評價該文提出的海洋生物圖像分類方法的準確率,選取模型在測試集上的正確率和損失函數(shù)值作為評價指標。3 個模型的參數(shù)設(shè)置如表2所示。

表2 神經(jīng)網(wǎng)絡(luò)模型參數(shù)
同時給每個模型添加回調(diào)函數(shù),監(jiān)測模型權(quán)重:若連續(xù)10 次迭代損失函數(shù)值不再下降,則停止訓練并獲得模型訓練過程中的最佳權(quán)重;若連續(xù)兩次迭代模型性能不再提升,則降低學習速率至原有速率的80%。通過這樣的方法,確保訓練得出的模型具有最佳表現(xiàn)。3 個模型的正確率和損失函數(shù)值隨迭代次數(shù)的變化如圖4 所示。

圖4 3種模型的正確率和損失函數(shù)值隨迭代次數(shù)的變化圖
文中先將前文提到的3 個神經(jīng)網(wǎng)絡(luò)模型各自進行訓練,并存儲模型文件。由圖4 可知,正確率隨迭代次數(shù)的增加而逐漸上升;損失函數(shù)值隨迭代次數(shù)的增加而逐漸下降,符合預期。3 個模型各自的最終正確率和損失函數(shù)值如表3 所示。

表3 單個模型最終正確率和損失函數(shù)值
使用模型融合的方法,使得整體效果得到進一步提升。最終融合訓練后,在測試集上損失函數(shù)值降低到0.303 3,正確率提升至0.912 5,相比分別單獨使用3 個模型,損失函數(shù)值分別降低了0.136 8、0.223 4、0.211 2;正確率分別提高了0.026 8、0.073 2、0.083 9。使用融合后的最終模型對海洋生物進行分類,損失函數(shù)值和正確率獲得顯著優(yōu)化,效果良好。
文中針對圖像數(shù)據(jù)集較小的海洋生物領(lǐng)域進行了研究,設(shè)計了基于卷積神經(jīng)網(wǎng)絡(luò)、遷移學習和模型融合的圖像分類模型。文中采用現(xiàn)有卷積神經(jīng)網(wǎng)絡(luò)中在圖像分類領(lǐng)域效果最好的EfficientNet B0 模型,輔助以可以解決特征丟失問題的DenseNet 模型和便于移植至移動設(shè)備的MobileNet V2 模型進行模型融合。同時使用了遷移學習方法,解決目標場景下圖像數(shù)據(jù)集過少、易產(chǎn)生過擬合現(xiàn)象的問題。
該文實驗采用的方法和思路可以進一步擴展和優(yōu)化,并在水下生物分類等領(lǐng)域使用。