朱書(shū)勤,李 銳,王天樂(lè)
(1.北京交通大學(xué)軟件學(xué)院,北京 100044;2.首都師范大學(xué)信息工程學(xué)院,北京 100048;3.北京交通大學(xué)電子信息工程學(xué)院,北京 100044)
海洋對(duì)人類(lèi)仍然是一個(gè)未知的空間,人類(lèi)對(duì)海洋生物的研究進(jìn)展比較緩慢。由于拍攝條件限制,海洋生物圖像數(shù)據(jù)往往難于獲取,拍攝時(shí)受到能見(jiàn)度的影響較大;一些物種間的特征差異很小,視覺(jué)分辨的難度大。同時(shí)受到水下光線(xiàn)不均勻的影響,水下圖像存在顏色失真和曝光不足等問(wèn)題,嚴(yán)重影響了水下目標(biāo)的識(shí)別精度[1]。卷積神經(jīng)網(wǎng)絡(luò)得益于其優(yōu)秀的性能,被廣泛應(yīng)用于圖像分類(lèi)領(lǐng)域[2]。其中,EfficientNet 作為現(xiàn)有最佳的圖像分類(lèi)卷積神經(jīng)網(wǎng)絡(luò)模型,擁有較好的分類(lèi)正確率。
該文針對(duì)海洋生物圖像分類(lèi)問(wèn)題,將EfficientNet B0 模型、MobileNet V2 模型和DenseNet 模型融合,建立可遷移的模型。將經(jīng)過(guò)遷移學(xué)習(xí)訓(xùn)練后的模型在現(xiàn)有海洋生物的數(shù)據(jù)集上進(jìn)行訓(xùn)練,最終使用模型融合的方式優(yōu)化訓(xùn)練結(jié)果,獲得海洋生物物種分類(lèi)結(jié)果。實(shí)驗(yàn)得到的模型有較好的遷移性,可以遷移至其他水下生物圖像數(shù)據(jù)集,并有較高的分類(lèi)準(zhǔn)確度。
海洋生物分類(lèi)的總體流程如圖1 所示。分類(lèi)流程由數(shù)據(jù)集拆分、遷移學(xué)習(xí)、圖像預(yù)處理、模型訓(xùn)練、模型融合5 部分構(gòu)成。首先將現(xiàn)有實(shí)驗(yàn)數(shù)據(jù)集拆分成訓(xùn)練集和測(cè)試集,做好前期準(zhǔn)備工作。其次構(gòu)建EfficientNet B0[3]、DenseNet[4]和MobileNet V2[5]3 個(gè) 卷積神經(jīng)網(wǎng)絡(luò)模型,將3 個(gè)模型各自在ImageNet 數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練,提取底層通用特征,緩解在海洋生物小數(shù)據(jù)集上訓(xùn)練的過(guò)擬合問(wèn)題。將預(yù)訓(xùn)練后的模型遷移至該文實(shí)驗(yàn)數(shù)據(jù)集,需要先對(duì)數(shù)據(jù)集作預(yù)處理。預(yù)處理分為兩個(gè)階段,首先是圖像增強(qiáng)處理:將圖形通過(guò)隨機(jī)旋轉(zhuǎn)、縮放、裁剪以及根據(jù)給定模式進(jìn)行填充,增加多樣性和差異性;其次默認(rèn)自然圖像是一類(lèi)平穩(wěn)的數(shù)據(jù)分布,即數(shù)據(jù)每一維的統(tǒng)計(jì)都服從相同分布,在此基礎(chǔ)上用數(shù)據(jù)集的每個(gè)樣本減去訓(xùn)練集圖像的像素統(tǒng)計(jì)平均值,可以移除共同的部分,凸顯個(gè)體差異。最終,將前文所述的3 個(gè)模型進(jìn)行融合[6]。
圖1 海洋生物分類(lèi)流程圖
文中選用EfficientNet 系列中的基礎(chǔ)網(wǎng)絡(luò)模型EfficientNet B0。首先將該模型在ImageNet 數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練[7],共包含5 330 564 個(gè)參數(shù),其中需要梯度下降訓(xùn)練的參數(shù)有5 288 548 個(gè),不需要梯度下降訓(xùn)練的參數(shù)包括Batch Normalization 層中的均值和方差,共42 016 個(gè)。相比于傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)模型,該網(wǎng)絡(luò)的核心結(jié)構(gòu)為移動(dòng)翻轉(zhuǎn)瓶頸卷積(MBConv)模塊。該模塊通過(guò)神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索得到,引入了壓縮與激發(fā)網(wǎng)絡(luò)的注意力思想。
目前,分類(lèi)網(wǎng)絡(luò)的模型擴(kuò)展主要從3 個(gè)維度進(jìn)行:加寬網(wǎng)絡(luò)、加深網(wǎng)絡(luò)和增大分辨率。針對(duì)分類(lèi)網(wǎng)絡(luò)深度d、寬度w和分辨率r這3 個(gè)維度分別作擴(kuò)展和優(yōu)化,都能提升模型效果,但上限也比較明顯:準(zhǔn)確率達(dá)到80% 后提升就很小了。而通過(guò)同時(shí)調(diào)整上述3 個(gè)維度的模型擴(kuò)展參數(shù),就能更加有效地提升模型的效果[8]。
EfficientNet 為了找到滿(mǎn)足式(1)的3 個(gè)維度的最佳參數(shù),引入?yún)?shù)φ,將深度d、寬度w和分辨率r3 個(gè)參數(shù)按照式(2)分別用φ表示,并使用如式(3)所示的模型復(fù)合縮放方法。
同時(shí)為了減少搜索時(shí)的計(jì)算量,對(duì)式(2)中的底數(shù)作了數(shù)值限 制,分別為α·β2·γ2≈2,α≥1,β≥1,γ≥1。將復(fù)合系數(shù)φ固定為1,先假設(shè)有兩倍以上的計(jì)算資源可以使用,然后對(duì)α、β、γ進(jìn)行網(wǎng)絡(luò)搜索;找到最佳參數(shù)值后固定α、β、γ,通過(guò)復(fù)合調(diào)整公式對(duì)基線(xiàn)網(wǎng)絡(luò)進(jìn)行擴(kuò)展。最后,在基礎(chǔ)的EfficientNet B0 模型上添加了全局空數(shù)據(jù)平均池化層、Dropout 層和全連接層。
隨著網(wǎng)絡(luò)層數(shù)的加深,網(wǎng)絡(luò)在訓(xùn)練過(guò)程中的前傳信號(hào)和梯度信號(hào)在經(jīng)過(guò)很多層之后可能會(huì)逐漸消失。為了最大化網(wǎng)絡(luò)中所有層之間的信息流,DenseNet 網(wǎng)絡(luò)[9]中的所有層都兩兩進(jìn)行了連接,使得網(wǎng)絡(luò)中每一層都接收它前面所有層的特征作為輸入,從而使網(wǎng)絡(luò)中存在著大量密集的連接。
對(duì)比諸多神經(jīng)網(wǎng)絡(luò),DenseNet 在一定程度上減輕了訓(xùn)練過(guò)程中梯度消散的問(wèn)題。DenseNet 模型結(jié)構(gòu)如圖2 所示,在反傳時(shí)每一層都會(huì)接收其后所有層的梯度信號(hào),所以靠近輸入層的梯度不會(huì)隨著網(wǎng)絡(luò)深度的增加變得越來(lái)越小。由于大量的特征被復(fù)用,所以使用少量的卷積核就可以生成大量的特征,最終模型的尺寸也比較小。DenseNet 的架構(gòu)為:
圖2 DenseNet模型結(jié)構(gòu)示意圖
其中,xl表示l層的輸出,Hl表示一個(gè)非線(xiàn)性變換,包括BN、ReLU 和3×3 的卷積;[x0,x1,…,xl-1]表示將0 到l-1 層的輸出特征圖作通道合并。
MobileNet網(wǎng)絡(luò)結(jié)構(gòu)是一款輕量級(jí)的移動(dòng)終端神經(jīng)網(wǎng)絡(luò),文中選用了其系列中的V2 版本。MobileNet V2 相比于其V1 版本,在可分離卷積架構(gòu)的基礎(chǔ)上引入倒殘差模塊(Inverted Residuals)和線(xiàn)性瓶頸(Linear Bottleneck)層[10]。倒殘差模塊與傳統(tǒng)殘差模塊中維度的先縮減再擴(kuò)增正好相反,捷徑連接的是維度縮減后的特征圖。線(xiàn)性瓶頸層去掉了小維度輸出層后面的非線(xiàn)性激活層,目的是保證模型的表達(dá)能力。
考慮到模型移植性能,內(nèi)存消耗的縮減也十分重要。倒殘差瓶頸層模塊可構(gòu)建有向非循環(huán)計(jì)算超圖G,該超圖G由代表操作的邊和代表中間計(jì)算張量的節(jié)點(diǎn)組成。調(diào)度計(jì)算是為了最大程度地減少需要存儲(chǔ)在內(nèi)存中的張量的總數(shù)。在最一般的情況下,如式(5)所示,它將搜索所有可能的計(jì)算階數(shù)并選擇最小化的階數(shù)。
在海洋生物分類(lèi)的應(yīng)用場(chǎng)景,文中使用Mobile Net V2模型可以在需要時(shí)單獨(dú)將其移植到移動(dòng)設(shè)備。
為解決神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練成本過(guò)大的問(wèn)題,該文實(shí)驗(yàn)對(duì)前文所述的3 個(gè)神經(jīng)網(wǎng)絡(luò)模型使用了遷移學(xué)習(xí)的方法。
在訓(xùn)練深度學(xué)習(xí)網(wǎng)絡(luò)模型時(shí),需要大量的高質(zhì)量標(biāo)注數(shù)據(jù),尤其是在圖像領(lǐng)域[11-12]。因此會(huì)選擇在ImageNet 數(shù)據(jù)集上預(yù)訓(xùn)練,對(duì)模型進(jìn)行初始化。通過(guò)使用其預(yù)訓(xùn)練的權(quán)重,使得即使只有一個(gè)較小的數(shù)據(jù)集,也能夠得到很好的性能。該文實(shí)驗(yàn)中融合的3 個(gè)模型都各自先在ImageNet 上進(jìn)行學(xué)習(xí),以解決海洋生物圖像數(shù)據(jù)集較少的問(wèn)題[13]。將預(yù)訓(xùn)練后的模型遷移到該實(shí)驗(yàn)數(shù)據(jù)集進(jìn)行學(xué)習(xí)時(shí),凍結(jié)其底層卷積層,保留該層中包含的大量底層信息,僅訓(xùn)練頂層卷積層和全連接層[14]。
該文實(shí)驗(yàn)中將EfficientNet B0模型、MobileNet V2模型以及DenseNet 模型融合。將已在ImageNet 數(shù)據(jù)集上訓(xùn)練過(guò)的3 個(gè)神經(jīng)網(wǎng)絡(luò)模型遷移至該實(shí)驗(yàn)數(shù)據(jù)集上訓(xùn)練并融合之前,需要首先將圖像數(shù)據(jù)集進(jìn)行處理。
把原始的訓(xùn)練集先分成訓(xùn)練集和測(cè)試集兩部分,使用圖片樣本增強(qiáng)器對(duì)樣本中的每個(gè)sample 進(jìn)行迭代。設(shè)置其縮放比例、旋轉(zhuǎn)角度等,使原本的圖像更多樣。同時(shí)逐樣本減去均值,突出圖像特征[15]。
文中選用的3 個(gè)模型訓(xùn)練后在測(cè)試集上的正確率都達(dá)到了80%以上,但還有提升空間。為了使效果更好,使用Uniform Blending 模型融合方法[16],在訓(xùn)練集的數(shù)據(jù)上訓(xùn)練3 個(gè)模型,對(duì)3 個(gè)模型的預(yù)測(cè)結(jié)果進(jìn)行平均,通過(guò)減少過(guò)擬合,使得決策邊界更加平滑。使用融合后的模型去預(yù)測(cè)測(cè)試集數(shù)據(jù)的標(biāo)簽。
將前文所述的3 個(gè)模型設(shè)為(g1,g2,g3),每個(gè)模型權(quán)重相同。融合后的模型如式(6)所示:
該文實(shí)驗(yàn)使用的計(jì)算機(jī)CPU 為Intel Core I7-9750H,主頻為2.6 GHz,運(yùn)行內(nèi)存為24 GB;顯卡采用NVIDA RTX 2070,運(yùn)行顯存為6 GB,操作系統(tǒng)采用Windows 10。使用Python 3.8 編寫(xiě)程序,讀取本地?cái)?shù)據(jù)集。
文中使用的圖像數(shù)據(jù)集共有1 882 幅圖像,分為20 類(lèi)。其中,1 323 幅作為訓(xùn)練集圖像,560 幅作為測(cè)試集圖像。圖像數(shù)據(jù)集規(guī)模如表1 所示。
表1 海洋生物圖像數(shù)據(jù)集
將圖像統(tǒng)一調(diào)整為224×224 像素的RGB 彩色圖像。在此基礎(chǔ)上將圖像作旋轉(zhuǎn)、縮放、裁剪等隨機(jī)調(diào)整,以增加多樣性和差異性。將調(diào)整后的彩色圖像分別輸入3 個(gè)神經(jīng)網(wǎng)絡(luò)模型。采用批量隨機(jī)梯度下降的方法訓(xùn)練網(wǎng)絡(luò)模型,優(yōu)化參數(shù)。海洋生物圖像數(shù)據(jù)集樣例如圖3 所示。
圖3 海洋生物圖像數(shù)據(jù)集樣例
為定量評(píng)價(jià)該文提出的海洋生物圖像分類(lèi)方法的準(zhǔn)確率,選取模型在測(cè)試集上的正確率和損失函數(shù)值作為評(píng)價(jià)指標(biāo)。3 個(gè)模型的參數(shù)設(shè)置如表2所示。
表2 神經(jīng)網(wǎng)絡(luò)模型參數(shù)
同時(shí)給每個(gè)模型添加回調(diào)函數(shù),監(jiān)測(cè)模型權(quán)重:若連續(xù)10 次迭代損失函數(shù)值不再下降,則停止訓(xùn)練并獲得模型訓(xùn)練過(guò)程中的最佳權(quán)重;若連續(xù)兩次迭代模型性能不再提升,則降低學(xué)習(xí)速率至原有速率的80%。通過(guò)這樣的方法,確保訓(xùn)練得出的模型具有最佳表現(xiàn)。3 個(gè)模型的正確率和損失函數(shù)值隨迭代次數(shù)的變化如圖4 所示。
圖4 3種模型的正確率和損失函數(shù)值隨迭代次數(shù)的變化圖
文中先將前文提到的3 個(gè)神經(jīng)網(wǎng)絡(luò)模型各自進(jìn)行訓(xùn)練,并存儲(chǔ)模型文件。由圖4 可知,正確率隨迭代次數(shù)的增加而逐漸上升;損失函數(shù)值隨迭代次數(shù)的增加而逐漸下降,符合預(yù)期。3 個(gè)模型各自的最終正確率和損失函數(shù)值如表3 所示。
表3 單個(gè)模型最終正確率和損失函數(shù)值
使用模型融合的方法,使得整體效果得到進(jìn)一步提升。最終融合訓(xùn)練后,在測(cè)試集上損失函數(shù)值降低到0.303 3,正確率提升至0.912 5,相比分別單獨(dú)使用3 個(gè)模型,損失函數(shù)值分別降低了0.136 8、0.223 4、0.211 2;正確率分別提高了0.026 8、0.073 2、0.083 9。使用融合后的最終模型對(duì)海洋生物進(jìn)行分類(lèi),損失函數(shù)值和正確率獲得顯著優(yōu)化,效果良好。
文中針對(duì)圖像數(shù)據(jù)集較小的海洋生物領(lǐng)域進(jìn)行了研究,設(shè)計(jì)了基于卷積神經(jīng)網(wǎng)絡(luò)、遷移學(xué)習(xí)和模型融合的圖像分類(lèi)模型。文中采用現(xiàn)有卷積神經(jīng)網(wǎng)絡(luò)中在圖像分類(lèi)領(lǐng)域效果最好的EfficientNet B0 模型,輔助以可以解決特征丟失問(wèn)題的DenseNet 模型和便于移植至移動(dòng)設(shè)備的MobileNet V2 模型進(jìn)行模型融合。同時(shí)使用了遷移學(xué)習(xí)方法,解決目標(biāo)場(chǎng)景下圖像數(shù)據(jù)集過(guò)少、易產(chǎn)生過(guò)擬合現(xiàn)象的問(wèn)題。
該文實(shí)驗(yàn)采用的方法和思路可以進(jìn)一步擴(kuò)展和優(yōu)化,并在水下生物分類(lèi)等領(lǐng)域使用。