薛永杰,巨志勇
(上海理工大學(xué) 光電信息與計算機工程學(xué)院,上海 200093)
海洋魚類識別是一種物體識別技術(shù),在魚類種群保護和魚類養(yǎng)殖等領(lǐng)域起著重要的作用。漁業(yè)捕撈需要通過分析各個種類魚群的分布情況,因地制宜地做出相應(yīng)的捕撈調(diào)整。因此,對海洋魚類的種類鑒定和觀察是非常重要的。海洋生物學(xué)家研究各種魚類品種相似度,魚類生命周期等也高度依賴于觀察魚類的種類及外觀。在自然環(huán)境中,氣候和環(huán)境的變化對魚類物種和魚類棲息地有較大的影響,所以通過人工方法在不同環(huán)境下采集魚類樣本圖片是非常困難且耗時的。此外,在進行魚類種類識別時通常會遇到圖像含有噪聲太大,圖像分割不完整,被識別目標(biāo)變形導(dǎo)致識別率低等問題。魚類的種類鑒別已經(jīng)成為一個具有挑戰(zhàn)性的研究課題。
近年來,國家經(jīng)濟和漁業(yè)科技的發(fā)展日益提升,相關(guān)領(lǐng)域?qū)︳~類物種的鑒定和識別的需求迅速增長。伴隨著互聯(lián)網(wǎng)和人工智能的發(fā)展,產(chǎn)生了許多基于機器學(xué)習(xí)的魚類圖像識別算法。文獻[1]提出利用比較基礎(chǔ)特征并采樣識別魚類。該方法雖然識別率較好,但是訓(xùn)練時間較長。文獻[2]中提出利用稀疏表示的分類的最大概率局部排序方法識別魚類,但算法中的參數(shù)需要人為預(yù)先設(shè)定。文獻[3]提出了一種利用尺度不變特征變換方法,并由矢量量化直方圖表示,但是如果應(yīng)用于多個對象,則會使用除了目標(biāo)以外的其它對象特征進行識別,可能導(dǎo)致識別錯誤。
隨著科技的發(fā)展,GPU(Graphics Processing Unit)的圖像處理能力得到了提升,訓(xùn)練深度復(fù)雜的神經(jīng)網(wǎng)絡(luò)也愈加容易。最初研究人員提出了AlexNet[4]、VGGNet[5]、GoogleNet[6]、ResNet[7]等深度學(xué)習(xí)模型,并使用正則化[8]、批量標(biāo)準(zhǔn)化[9]和殘差學(xué)習(xí)[10]來避免過擬合或梯度彌散等問題。這些網(wǎng)絡(luò)模型為之后的深度學(xué)習(xí)發(fā)展奠定了基礎(chǔ)。陳英義[11]等基于遷移學(xué)習(xí)的海洋魚類識別算法,通過將新魚類識別模型與VGG16模型融合,將魚類識別模型的準(zhǔn)確率提高至97%以上。Hafiz T R等[12]對VGGNet模型進行了改進,在每個級別的訓(xùn)練上添加了4個卷積層以提高分類性能。部分學(xué)者提出了典型度和偏心率的數(shù)據(jù)分析用于無監(jiān)督學(xué)習(xí)[13],也稱為TEDA(Typicality and Eccentricity Data Analytics)。這些研究為基于深度學(xué)習(xí)進行的魚類種類識別方法提供了理論基礎(chǔ)和參考。
本文提出了一種基于改進AlexNet的魚類識別算法。使用基于項的柔性注意力(Item-Wise Soft Attention)算法對優(yōu)化后的AlexNet模型進行改進,并采用遷移學(xué)習(xí)[14-15]的方式,將經(jīng)過大型數(shù)據(jù)庫ImageNet預(yù)訓(xùn)練后的AlexNet模型遷移到魚類識別模型上,以提升模型的識別率并減少訓(xùn)練時間。訓(xùn)練好的模型以apk格式的文件保存,可以直接應(yīng)用于安卓系統(tǒng)中,實現(xiàn)對魚類的精準(zhǔn)分類。
本次實驗使用的魚類數(shù)據(jù)庫為QUT_fish數(shù)據(jù)集。這個魚類數(shù)據(jù)集包括從468種魚類中收集到的3 960張圖片。數(shù)據(jù)集中圖片分為3類:自然環(huán)境、被捕獲、去背景。自然環(huán)境類中的魚類圖片以各種自然環(huán)境為背景,并使用不同光照條件進行拍攝。被捕獲類中魚類圖片拍攝背景和光照較為固定。去背景類型中的魚類圖片以白色為背景。本文選取40種不同魚類作為研究對象,并使用旋轉(zhuǎn)、平移、剪切等數(shù)據(jù)增廣的手段使數(shù)據(jù)庫數(shù)量增加為原來的4倍。部分魚類樣本如圖1所示。
圖1 魚類樣本實例
基于項的柔性注意力算法由兩個部分組成:第一部分是主干部分,其功能是進行正常的卷積操作;第二部分是柔性注意力分支,也是該算法最重要的部分,由多層感知器、一個解碼器和兩個采樣層組成。因為基于項的輸入是要求包含明確的項的序列的,所以需將每張圖片需要用文本形式描述,表示為單詞編碼序列如下
y={y1,…,yc},yi∈RK
(1)
其中,K是詞表大??;c是描述文本的長度。在操作層面。原輸入經(jīng)過卷積網(wǎng)絡(luò)(Convolutional Neural Network,CNN)處理后,轉(zhuǎn)換為每一項都具有對應(yīng)單獨編碼的序列。對于待處理的圖像,經(jīng)過卷積網(wǎng)絡(luò)抽取其特征,在最后一個卷積層的輸出可以產(chǎn)生L個向量,每一個向量是原圖中一個區(qū)域的D維表示,也可以看成一個序列
α={α1,…,αL},αi∈RD
(2)
由柔性注意力機制分別對每個部分的特征賦予不同的權(quán)重,每個向量αi的權(quán)重αt,i計算式如下
eti=fatt(αi,ht-1)
(3)
(4)
其中,fatt為多層感知器,輸入是向量αi和解碼器上各時刻的狀態(tài)ht-1。在計算好權(quán)重之后,注意力機制就可以對輸入序列α進行選擇。經(jīng)過CNN處理后的編碼,通過計算權(quán)值,對所有相進行線性加權(quán)合并,基于項的柔性注意力算法的輸出如式(5)所示。
Zt=φ({αi},{at,i})
(5)
式中,Zt為經(jīng)過注意力機制加工過的特征向量,把它輸入到解碼器,通過全連接層輸出。這里柔性注意力采用求Zt期望的方式,也就是說φ是一個線性加權(quán)函數(shù),求Zt期望的表達式為
(6)
深度卷積神經(jīng)網(wǎng)絡(luò)與其它傳統(tǒng)方法相比有很多優(yōu)點,尤其是徑向基函數(shù)神經(jīng)網(wǎng)絡(luò)。卷積層的權(quán)值共享減少了參數(shù)的數(shù)量,從而更容易檢測邊緣、角和斑點。池化層的使用為所提取的特征的位置和位置的變化提供了不變性。用于魚類識別的模型體系結(jié)構(gòu)如圖2所示。
圖2 FAN魚類圖像識別模型
該模型是AlexNet的優(yōu)化版本。首先,為提高魚類種類識別的準(zhǔn)確率,本文設(shè)計了多輸入的模型結(jié)構(gòu),將第一層卷積層CV1分為CV1_a、CV1_b、CV1_c,作為3個圖片輸入口,各使用11×11的卷積核進行卷積,步長為4。這樣設(shè)計的好處有兩點:(1)不會額外增加運行時間。如果所有輸入圖片都相同,程序會將相同圖片等效為一張,不會額外增加運行負擔(dān);(2)識別精準(zhǔn)度提高。因為魚類的背景種類繁多,變化復(fù)雜,利用多輸入的形式能夠包含更多信息,降低背景對識別圖片的影響,提高了準(zhǔn)確率。
其次,為了減少計算復(fù)雜度,解決占用內(nèi)存多的問題,本文對AlexNet模型進行了調(diào)整,即在不影響精度的前提下減少了部分卷積層。在圖片輸入后,將輸出的特征圖融合為一。經(jīng)過第一個卷積層,圖片大小變?yōu)?5×55×96。通過一個非飽和線性修正單元(Rectified Linear Units,ReLU)和核為3×3且步長為1的最大池化層(Max-Pooling)后,圖像尺寸減小為27×27×96。第二卷積層以前一層的輸出為輸入,共產(chǎn)生256個特征圖,卷積核的大小為5×5,步長為1。隨后,通過ReLU和最大池化層,核大小為3×3,步長為2,輸出圖像大小為13×13×256。第3層和第4層卷積層相連接,卷積核大小為3×3,步長為1。第3個卷積層產(chǎn)生384個特征圖,第4個卷積層使用256個特征圖,其后連接一個最大池化層,核的大小為3×3,步長為2。該卷積層的輸出通過兩個全連接層,輸出圖片個數(shù)為4 096。
最后,將基于項的柔性注意力模塊置于全連接層與輸出層之間,構(gòu)成改進AlexNet模型。模型的輸出為n維,代表n種魚類訓(xùn)練集種類概率,概率數(shù)值總和為1。改進AlexNet模型使用交叉熵損失函數(shù)衡量預(yù)測值與實際結(jié)果之間的差異性信息。交叉熵損失函數(shù)式如下
Hθ=-∑eP(e;θ)logq(e;θ)
(7)
其中,H為訓(xùn)練損失;e為訓(xùn)練樣本;P為類別概率;θ為參數(shù)權(quán)重;q為改進AlexNet模型預(yù)測各類概率,其形為
(8)
其中,x為激勵函數(shù)的輸入;j表示被計算種類的序號。
利用模型遷移的方法,將AlexNet通過大型數(shù)據(jù)庫 ImageNet訓(xùn)練后得到的圖像識別知識移植到本文改進 AlexNet模型,得到魚類識別模型Fish_AlexNet(FAN)。
遷移學(xué)習(xí)(Transfer Learning,TL)是一種能夠?qū)⒁呀?jīng)掌握的知識應(yīng)用到類似領(lǐng)域中的學(xué)習(xí)方法。傳統(tǒng)的機器學(xué)習(xí)方法需要大量樣本,并且需要人為設(shè)置標(biāo)簽,耗費大量時間且效率不高。若直接使用沒有標(biāo)簽的樣本進行訓(xùn)練,得到的模型精度不高,而使用遷移學(xué)習(xí)能夠很好地解決這些問題。其利用已經(jīng)通過大量數(shù)據(jù)訓(xùn)練的模型,將得到對圖形分類的共性特征遷移到目標(biāo)任務(wù)上。
遷移學(xué)習(xí)主要可以分為4類:基于樣本的遷移(Instance Based TL)、基于特征的遷移(Feature Based TL)、基于模型的遷移(Parameter Based TL)、基于關(guān)系的遷移(Relation Based TL)。這里采用模型遷移的方式將AlexNet改為用于魚類種類識別的模型Fish_AlexNet(FAN)。FAN深度卷積網(wǎng)絡(luò)模型由4個卷積模塊、兩個全連接層、基于項的柔性注意力層和輸出層,其參數(shù)如表1所示。
表1 FAN模型參數(shù)
在FAN網(wǎng)絡(luò)模型中,輸入魚類樣本圖片像素為227×227×3,在每一個卷積模塊里都包含一個ReLU單元。CV1卷積核大小為[11×11],步長為4。CV2卷積核大小為[5×5],步長為1。CV3與CV4卷積核大小為[3×3],步長為1。使用[3×3]核,步長為2的最大池化層,上一層的輸出作為下一層的輸入。通過Softmax層輸出的個數(shù)為m,其大小對應(yīng)于選擇的m種不同魚類。
為了驗證算法的有效性和穩(wěn)定性,對QUT_fish_40數(shù)據(jù)集進行識別,并與ResNet[16-17]等算法進行比較。本文模型的訓(xùn)練與測試均基于開源機器學(xué)習(xí)框架TensorFlow完成。
算法的識別準(zhǔn)確率由對魚類圖片的識別率計算得出,識別率計算式為
(9)
其中,Zt為待識別魚類圖片的個數(shù);Za為正確識別的魚類圖片的個數(shù);Rrec為算法識別率。
算法的性能由算法運行時間的平均值來衡量,平均識別耗時的計算式為
(10)
其中,t為平均識別耗時;tall為識別N張魚類圖片的總耗時;N表示算法運行的次數(shù)。
以QUT_fish_40數(shù)據(jù)集和對其通過數(shù)據(jù)增廣得到的圖片作為識別對象,在3種不同學(xué)習(xí)率(0.001,0.01,0.1)下對改進后的FAN模型與原始AlexNet模型進行對比測試。權(quán)值衰減率設(shè)置為0.000 2,并根據(jù)實際情況和訓(xùn)練時長,在測試和驗證時將Batch設(shè)置為20,最大訓(xùn)練輪數(shù)設(shè)置為6 000。結(jié)果如表2所示。
表2 AlexNet模型與FAN模型比較結(jié)果
由表2可知,模型學(xué)習(xí)率的設(shè)置對于模型的識別準(zhǔn)確率有重要影響??梢钥闯?,在學(xué)習(xí)率為0.01時,F(xiàn)AN模型的驗證準(zhǔn)確率達到了95.91%,相較于準(zhǔn)確率為84.51%的AlexNet模型提升了約11%。當(dāng)學(xué)習(xí)率為0.1時,F(xiàn)AN模型的訓(xùn)練準(zhǔn)確率與驗證準(zhǔn)確率分別達到了99.59%與97.43%,與AlexNet模型相比,驗證準(zhǔn)確率提升約4%。在學(xué)習(xí)率為0.001時,F(xiàn)AN與AlexNet獲得結(jié)果都不理想??梢姾线m的學(xué)習(xí)率對模型識別準(zhǔn)確率有著較大影響。造成準(zhǔn)確率低下的原因是:在利用遷移學(xué)習(xí)時,網(wǎng)絡(luò)模型中的一部分層已經(jīng)過訓(xùn)練。如果此時再繼續(xù)使用較小的學(xué)習(xí)率,很容易陷入局部最優(yōu)解,或大幅增加訓(xùn)練時間,導(dǎo)致模型效果不佳。相反地,設(shè)置的學(xué)習(xí)率過大,容易導(dǎo)致忽略全局最優(yōu)解,并且會導(dǎo)致收斂困難、梯度彌散。
分別在0.1和0.01學(xué)習(xí)率的條件下,對測試模型經(jīng)過6 000次的迭代訓(xùn)練后,F(xiàn)AN與AlexNet模型的驗證準(zhǔn)確率都達到了84%以上??傮w而言,本文提出的FAN模型算法相較于原始AlexNet有著更高的準(zhǔn)確率。模型的訓(xùn)練損失如圖3所示,縱軸為訓(xùn)練損失經(jīng)過歸一化處理后的值,橫軸為模型迭代次數(shù)。由圖可見FAN模型在3種不同學(xué)習(xí)率下迭代次數(shù)與訓(xùn)練損失值的關(guān)系。在迭代次數(shù)達到1 000次時,在0.1與0.01學(xué)習(xí)率下的FAN模型訓(xùn)練損失已經(jīng)基本接近收斂穩(wěn)定,與再經(jīng)過5 000次迭代之后的訓(xùn)練損失率差別不大,說明訓(xùn)練達到了預(yù)期效果,并且在學(xué)習(xí)率為0.1時FAN模型取得最佳性能。
圖3 FAN模型訓(xùn)練損失
這里采用羅漢魚、伸口魚、藍唇魚、燕尾龍4種不同魚類識別結(jié)果為例,每種魚類圖片150張,一共600張魚類圖片。為了對比模型效果,分別使用尺度不變特征變換(Scale-Invariant Feature Transform, SIFT)[16]、深度殘差網(wǎng)絡(luò)(ResNet)[17]、AlexNet和本文FAN模型算法,對待識別的魚類圖片進行隨機識別,各算法的識別率結(jié)果如表3和圖4所示。
圖4 不同算法的魚類識別準(zhǔn)確度
表3 不同模型下的魚類圖片識別率
其中,SIFT算法的準(zhǔn)確識別率最低,僅為69.07%。造成識別率低下的主要原因是:SIFT算法通過比較圖像中的關(guān)鍵點也就是局部特征來檢測兩幅圖片的相似度,對于明亮變化和噪聲具有良好的魯棒性,但是同屬不同種的魚類擁有相似局部特征,導(dǎo)致SIFT算法難以精準(zhǔn)識別。結(jié)合遷移學(xué)習(xí)的FAN算法達到了最高準(zhǔn)確率97.53%,相較于AlexNet模型提高了2.91%。
在算法性能方面,從模型訓(xùn)練耗時和識別耗時兩個方面來進行對比。由表4可以得出,使用了遷移學(xué)習(xí)的FAN模型訓(xùn)練時間最短。此外,由于使用了簡化AlexNet模型,識別耗時相較于原始AlexNet模型減少了35%。
表4 不同識別算法的時間消耗
針對傳統(tǒng)算法對于魚類識別率低,難以提取特征點等問題,本文提出了基于改進的AlexNet魚類識別算法。首先,對AlexNet網(wǎng)絡(luò)模型進行了改進,改進后的AlexNet由4個卷積層和兩個全連接層組成,減少了網(wǎng)絡(luò)訓(xùn)練復(fù)雜度,避免了無效訓(xùn)練。其次,提出基于項的柔性注意力算法提升改進后的AlexNet精準(zhǔn)度。最后,結(jié)合模型遷移的方法構(gòu)成新的FAN網(wǎng)絡(luò)模型。
在QUT_fish_40數(shù)據(jù)集上對本文提出算法進行了驗證。結(jié)果表明,相較于原始AlexNet模型,本文算法訓(xùn)練時間更短,識別耗時減少了35%,識別準(zhǔn)確率提升了4.08%,網(wǎng)絡(luò)復(fù)雜程度更低,且易用于各種內(nèi)存較小的移動設(shè)備。但本文的識別都是對單一魚類進行識別,后續(xù)會進一步研究對多種魚類的同時檢測,以便將該方法應(yīng)用在背景環(huán)境復(fù)雜、渾濁水域的實時水下魚類識別領(lǐng)域。