袁小平,石 慧
(中國礦業大學,江蘇 徐州 221000)
近年來由于海洋環境的污染,珊瑚礁及部分稀有魚類的滅絕,引起許多人關注水下環境,探索水下資源。魚品種的識別是本著環境保護的理念和動機,能夠高效地識別不同種類的魚類,之后為特定稀有魚類的保護提供可靠的圖像數據基礎[1]。由于水下環境會給識別任務帶來許多困難和挑戰,包括水下圖像能見度有限,對比度較低,有些魚類與水下環境背景較為相似,導致識別困難[2-3]。另一方面,可以用于水下魚類識別的數據集太小,這些都給魚類識別帶來了困難。因此,這項任務較其他識別任務更為復雜,仍然是一個急需解決的問題。
根據學者們的研究,可將魚類識別的方法分為兩大類,一類是手動特征提取,根據形狀、顏色、背景、具體地標或紋理選擇特征,還有使用更復雜的特征,例如SIFT或方向梯度直方圖特征[4]。另一類是基于深度學習進行訓練,自動提取特征再進行分類。Li等人[5]將快速R-CNN(具有卷積神經網絡的區域)應用于水下圖像,以檢測和識別魚類物種,在LifeCLEF 2014數據集上獲得了81.4%的準確率。Choi[6]參與了LifeCLEF 2015探測和識別水下視頻中魚類的任務,在這項任務中取得了81%的最佳表現,他通過使用背景減法和選擇性搜索策略來檢測魚類。Qin等人[7]在魚類識別的Ground-Truth數據集上使用卷積神經網絡,該數據集由23個物種的總共27 370個魚類圖像組成,它們的準確度達到98.57%。Qin等人[8]對兩個卷積層使用主成分分析,通過降維方法提取圖像的特征。利用空間金字塔池提取對大姿態不變的信息,再采用SVM(Support Vector Machine,支持向量機)進行分類,準確率提高了0.07%。Salman等人[9]創建了一個由三個卷積層組成的深層結構來提取特征,然后將來自網絡多層的特征組合起來,他們在7 500張魚類圖像的測試集上獲得了96.75%的準確率。但是這些從頭開始學習深層架構的方法需要大量數據集,需要訓練大量權重并且耗時較長。在實際中由于計算機資源的配置以及可用的水下數據集較小,很難提升識別的準確率。為了克服此問題,采用遷移學習框架,在大型數據集上進行預訓練,采用已經訓練好的權重來訓練自己所需要的網絡模型。文中采用AlexNet模型進行遷移學習,保留網絡模型的低層的權重,在魚類目標數據集上訓練高層用于提取特征,重新訓練分類器,從而對魚類進行識別。
采用Fish4Knowledge(F4K)數據集中的魚類圖像作為實驗數據,數據集如圖1所示,選用F4K中的五種魚類數據作為本課題研究的數據集,種類和數量如表1所示。

圖1 F4K數據集

表1 魚種類與數量
為了能夠快速精確地識別圖片中的魚的品種,避免其他背景信息的干擾,先對圖像進行前景提取(見圖2(a)),消除背景令網絡只關注魚類目標主體[10]。將圖片的大小統一調整為130*180像素,RGB格式之后,采用數據增強的方法,因為卷積神經網絡在有更多數據的情況下可以防止過度擬合。通過隨機抖動、裁剪、旋轉、反射、縮放等方式從訓練數據中產生更多圖像,同時保持標簽完整(見圖2(b))。隨機將處理后的前景魚圖像的80%作為訓練集輸入網絡,20%作為測試集。

(a)提取前景魚類圖像
遷移學習指的是使用在大數據集上預先訓練的網絡的權重的過程。預先訓練的網絡已經學會了如何利用卷積層識別較低層的特征,例如邊緣、線、曲線等,因為卷積層通常是過程中計算最耗時的部分,使用這些權重比從頭訓練網絡能更快地收斂到好的分數[11]。
AlexNet網絡模型有五個卷積層,卷積層中有較多的過濾器,彩色濾波器用于提取低頻特征,灰度濾波器提取高頻特征,有著更多種類的選擇性過濾器的AlexNet模型在不同的尺度和不同的方向能提取更多的特征[12-13]。AlexNet已經從ImageNet數據集訓練了120多萬張圖像。
由于本訓練中使用的魚類圖像數據集與ImageNet完全不同,所以該文采用微調的方法。在較低層捕獲的邊緣,線條特征與該文的魚類圖像識別是通用的,即保留原模型的低層權重,將其用于該文的訓練模型中。再將高層網絡結構參數進行相應的調整,使其學習魚類圖像的特征,將提取到的特征向量用于訓練SVM分類器,判斷魚的種類。因為對于樣本較少的數據集,采用SVM分類器的效果會比Softmax分類器更好。選用徑向基核函數作為SVM的核函數,最后模型輸出參數是魚圖像的種類數。流程如圖3所示。

圖3 基于預訓練AlexNet網絡和遷移學習技術的魚類識別方法流程
激活函數的選擇,是提高模型整體質量的重要因素。通過將魚類圖像輸入訓練模型中,采用控制變量的原則,應用不同的激活函數,得到魚類識別的準確率如表2所示。

表2 不同激活函數的測試準確率
結果表明采用Tanh作為激活函數,最終識別測試的準確率是優于其他激活函數的。雖然Tanh應用在特征相差較大的情況下得到的識別率會高,但是Sigmoid和Tanh都會存在梯度消失的問題。使用ReLU激活函數,收斂速度較快,但是當學習率大時,其在訓練時會很脆弱,網絡中的神經元將不會起到作用。為解決上述函數存在的問題,該文采用Leaky ReLU作為激活函數,原來所有的負值都為0,現在給負值一個確定的非0的斜率,讓負數區域不再飽和。在該實驗中,αi取值為100,應用此激活函數,魚類識別的準確率達到75.29%。
其中,αi是(1,+∞)區間內的固定參數。

該文進行的魚類識別的研究,因為水下數據集相對于ImageNet來說較小,而AlexNet神經網絡模型又具有很強大的能力,所以為了防止模型的過擬合,即在訓練集上表現得很好,但在測試集上效果較差的情況下,需要對網絡模型結構進行調整優化[14]。在激活層后面加入batch normalization批標準化層和dropout層。批標準化層保證了激活層的規范輸出,使得梯度消失的問題得到解決,從而使網絡的訓練速度大大提高,收斂加快,同時還具有較好的表達處理能力。dropout層通過隨機丟棄50%激活層神經元的值來減輕模型的過擬合,使得網絡不學習冗余信息,提高模型的訓練速度。
AlexNet卷積神經網絡的特征提取過程是自動學習到的,相當于在訓練一個個過濾器,是無監督的特征學習過程[15-16]。淺層網絡提取紋理細節特征,包含較多關鍵特征,深層網絡提取輪廓,形狀,包含最強特征。圖4為神經網絡卷積層提取到的特征以及將特征圖融合后得到的整體特征圖。

圖4 特征圖可視化
采用特征遷移的方法,即AlexNet模型不經過任何微調,只是通過移除全連接層fc8替換成分類器,將特征向量輸入SVM分類器中進行分類訓練,將此方法簡稱為AlexNet-SVM。對比此方法與該文采用的微調后的AlexNet模型,評估微調對系統性能的影響。
識別準確度的對比如表3所示,所提出的對預訓練模型進行微調是有效的,并且給出了較好的結果,模型經過微調相比沒有采用微調的方案更好。驗證了AlexNet網絡的高層對目標對象的細節識別起到重要作用,在經過微調后,這些高層對魚類品種的分類變得更加精確,達到了98.34%最佳精度。魚類Scolopsis bilineata的樣本很少,但是在經過微調后的模型訓練測試,識別的精確度達到100%,因此得出結論是微調提高了系統的性能。

表3 AlexNet-SVM與文中模型的識別準確度對比

(a)準確率曲線
在魚類數據集上分別做了基于微調的模型和沒有經過微調的模型的性能對比實驗,采用相同的批大小50,其他參數也保持相同,迭代200次,記錄訓練所用的時間,如表4所示。驗證了該文提出的基于遷移學習的微調模型能夠在擁有較少樣本的數據集中學習到較多的特征,并且識別效果相比傳統方法更好。從圖5中可以看出,文中模型相比AlexNet-SVM模型能夠較快的收斂,在50次迭代后趨于收斂,而AlexNet-SVM模型在100次迭代后才開始趨于收斂,同時文中模型的訓練耗時較少。

表4 兩種模型的實驗對比
該文提出了一種基于預訓練AlexNet模型和遷移學習技術的魚類識別方法,對高層網絡模型參數進行不斷實驗調整優化,學習魚類圖像的特征,將提取的特征用于訓練SVM分類器從而判斷魚的種類。通過此方法解決了實際中收集數據集困難的問題,用較少的樣本訓練了一個較好的網絡模型。實驗對比驗證了該方法取得了較好的識別效果,對海洋生物的研究起到了促進作用。下一步的研究不僅僅是基于圖片的識別,將在視頻的基礎上進行魚類目標的跟蹤識別。