林明旺
當前非法、無序的漁業捕撈嚴重威脅海洋生態環境和全球的海產品的可持續供應。有關部門和組織已經開始探索利用攝像頭大規模監控漁船的捕撈活動。為了準確高效的對采集的圖像數據進行魚類的識別與分類, 利用計算機視覺技術,設計了一種基于卷積神經網絡的魚類圖像識別與分類系統。針對復雜神經網絡過擬合嚴重的問題,運用了一系列有效降低過擬合的方法來優化神經網絡模型,其中包括了數據集擴增方法,dropout方法, batch normalization方法。利用該模型對8種魚類進行了識別分類,結果顯示準確率達到了96.24%,從而可以準確快速的進行魚類的分類。
【關鍵詞】卷積神經網絡 反向傳播算法 仿射變換 dropout batch normalization
1 引言
當前非法,無管理的漁業捕撈嚴重威脅海洋生態環境和全球的海產品的可持續供應,有關部門和組織已經開始探索利用攝像頭大規模監控漁船的捕撈活動。但是目前需要人工對采集的視頻圖像數據進行魚類的的識別與分類,采集的數據體量龐大,人工處理耗時,昂貴。所以急需利用計算機自動的對圖像數據進行分類。
目前機器學習的一些方法在魚類圖像分類上取得了比較突出的效果。吳一全等[1]采用了手動選擇特征的方法, 基于支持向量機對5 種魚進行識別,各類魚的識別精度均為83.33%。Hu 等[2]在HSV顏色空間利用小波濾波器提取魚的紋理特征,并進行了SVM分類識別。萬鵬等[3]計算魚的長軸方向各段的平均寬度與長度的比值并將其作為特征參數,利用3層BP(back propagation)神經網絡對鯽魚和鯉魚進行識別,識別精度為92.50%。但是這些方法首先都是在嚴格拍攝控制下產生的圖片上衍生的方法,魚類圖片幾乎沒背景干擾, 方法的魯棒性較差。其次,這些方法都是基于手動選擇特征的機器學習方法,手動選擇特征的方法不僅效率低下,還會導致遺漏重要的特征, 導致分類準確率低。目前隨著計算機性能的大幅提升,深度學習在圖像分類領域展現出了出眾的性能。其中代表性的就有卷積神經網絡(CNN)。卷積神經網絡重要的特征就是能在訓練過程中自動學到“好”特征,避免了手動選擇特征的一些問題,而且CNN每一層神經元共用一組連接權重,從而大大降低了參數訓練的開銷。
基于上述分析,本文從神經網絡模型出發,構造了泛化能力強的卷積神經網絡模型,然后針對卷積神經網絡容易過擬合的問題,運用了一系列降低過擬合的方法來優化CNN模型。實驗結果顯示此模型具有很高的識別精度和魯棒性,能在背景干擾很強的圖片數據集上準確的完成魚類的識別和分類。
2 卷積神經網絡(CNN)
2.1 CNN如何進行圖片分類
整個CNN模型主要由輸入層、多層卷積層、多層采樣層、多層連接層、輸出層組成。
卷積濾波器既是神經網絡神經元的權重,整個訓練過程就是卷積濾波器權重以及全連接層權重的自動學習過程。
直觀地說, 整個分類過程就是一張圖片的像素RGB值與卷積濾波器逐層作卷積來提取特征,低層濾波器首先提取圖片底層較簡單的特征表示例如邊緣、斜坡,隨著神經網絡的前向進行,高層濾波器逐漸提取進一步的特征表示如拐角、輪廓,以此類推,直到能提取較復雜的特征如皮毛、花紋為止。最后通過相當于線性分類器的全連接層處理就可以完成分類。
2.2 模型構建
本次研究所用的神經網絡模型結構如圖1所示。
對自然圖像分類任務而言,低層的卷積濾波器存在通用性,如提取圓圈、橢圓、對角線特征的濾波器,提取圓圈橢圓等組合而成的圖形特征的濾波器等在自然圖像上都是通用的,所以重頭訓練這些卷積濾波器對本次研究要解決的圖像分類任務沒有意義。本次研究采用了被廣泛使用在圖像分類任務中的VGG模型的卷積濾波器的權重 [4],并在其模型上作微調來實現本次研究的目標。
輸入層將不同尺寸的圖片轉換為244*244大小作為輸入。
匯合層(max pooling)的作用是基于局部相關性進行亞采樣,在減少數據量的同時保留有用信息,并可減少對應的參數個數,控制過擬合。
激活函數采用RELU,即f(x)=max(0,x)。最后一層全連接層需要把計算出的對應于各個分類的分數轉換成總和為1的對應于各個分類的概率數值,所以激活函數采用Softmax,即f(x)=exp(x)/sum(exp(x)。
全連接層的權重采用反向傳播算法(back propagation)訓練,參數尋優采用隨機梯度下降方法。然而隨機梯度下降方法的學習率為手動設定的常量,這會帶來一些問題。學習率設定太低的話會導致參數優化速率很慢,無法在合理的時間里完成訓練。學習率設定太高的話又會導致參數的振蕩,甚至無法收斂。在優化過程中也可能陷入局部極小值點或是鞍點。臨時的辦法是在訓練過程中手動調整學習率, 但是這種做法遺漏了學習過程中產生的一些有用信息。最好的方法是根據損失函數最優訓練中產生的信息自動動態調整學習率的大小。目前主流的動態學習率設定方法主要有3種,分別為Adagrad,RMSProp,Adam,Eve。本次研究采用了Adam方法。
神經網絡模型具體的數據結構及算法基于python語言和theano平臺編程實現。
3 實驗數據及性能評估方法
實驗數據來源于有關組織舉辦的圖像分類競賽,數據可用作科研用途。數據采集方式是通過固定在漁船某個位置的攝像頭采集甲板上魚類的照片,共采集到3777張共8個分類的照片作為訓練樣本,為長鰭金槍魚、大眼金槍魚、黃鰭金槍魚、鲯鰍魚、月魚、鯊魚、其他(表示照片中的魚為除了這6個種類的魚以外的魚類)、無魚類(表示照片中沒有魚)。按8:1:1比例從原始數據集做分層采樣, 其中2984張用做訓練集, 394張用作驗證集,399張用作測試集。
本次研究采用多類對數損失函數作為性能評估的方法。評估公式如下:
其中,N是測試集圖片的數量,M為圖片類的類數,當i屬于類j時,yij = 1,否則yij = 0。pij為當i屬于類j時預測的可能性值。在多分類問題上, 比起用識別精度來衡量,多類對數損失函數能更精細的衡量一個方法的性能高低,尤其是在識別精度相差一樣的情況下。為了避免log函數的極端情況,預測的可能性值會被max(min(p,1-10-15),10-15)替代。
4 降低過擬合的方法
卷積神經網絡由于模型復雜,參數眾多,訓練時間過長以及過擬合一直是兩大主要問題[5]。這一部分針對具體的魚類分類問題運用了一系列降低過擬合的方法優化CNN模型,主要包括dropout方法[6]、數據集擴增方法、Batch Normalization方法[7]。Batch Normalization方法還可有效降低訓練的時間。
4.1 dropout方法
dropout方法是指在激活層之后插入一層dropout層,作用是以一定的比例將激活層的部分數值置為0。這樣隨機的丟棄一些訓練獲得的信息可以增強神經網絡模型的泛化能力,降低過擬合。
驗證結果顯示當dropout 的比率等于0.5的時候, 訓練集和驗證集的識別精度相差最小。以0.5比率的dropout為基礎,再進行下一步數據集擴增的操作。
4.2 數據集擴增
為了進一步降低過擬合,提高圖像分類的準確性,設想通過平移(Translation)、縮放(Scaling)、旋轉(Rotation)、錯切(Shearing)等圖形的仿射變換在原始樣本圖片上做些改動來產生更多樣的訓練樣本圖片,如圖2所示。
由于CNN訓練時間成本高昂, 所以驗證哪些圖像變換有效的工作在小樣本集上完成。通過分層采樣,從原始訓練集中各個分類中各抽取10%作為小樣本訓練集,從原始驗證集中各個分類中各抽取10%作為小樣本驗證集。每種圖片變換各作3種變換幅度范圍,分別為0.1,0.5.1.5,每種變換幅度再以4種不同的初始權重作訓練, 用early stopping方法來確定停止訓練的時機(當訓練集的logloss值繼續下降, 而驗證集的logloss值不再下降)。用未經變換的原始訓練集作為性能對照。
驗證結果顯示當錯切幅度范圍為0.15時,驗證集的logloss值 在4種不同的初始權重作訓練下平均值為 0.98915, 顯著小于原始訓練集的1.023275。其他類型的圖片變換均大于1.023275。所以采用0.15的錯切幅度產生更多樣的訓練圖片來降低過擬合。
4.3 Batch Normalization方法
在卷積神經網絡模型的訓練過程中,某層神經元的某個權重的值可能會變得特別大。這個特別大的權重值會產生特別大的輸出值并當做輸入傳遞給下一層,然后隨著神經網絡一層層的前向進行,造成整個網絡模型的不穩定。所以需要規范化CNN激活層的輸出值。
規范化CNN激活層的輸出值的方法第一步是在每層激活層之后加上一層規范化層,具體操作是將激活層的每個輸出值先減去這一層激活層所有輸出值的平均值,再除以這一層激活層的標準差。之后,再乘以一個任意初始值的參數,并加上一個額外的任意初始值的參數。第二步是將上述的這4個參數設為可訓練。
5 實驗結果
經過上述方法優化的CNN模型在擴增過的訓練集上僅訓練13輪之后, 在驗證集上的識別精度達到了96.95%,在測試集上精度達到了96.24%, 在測試集上的logloss值僅為1.08832。目前在魚類分類方面,識別精度較高的為吳一全等提出的基于SVM的方法[1],在5種魚類分類上取得了91.67%的識別結果和萬鵬等提出的基于3層BP神經網絡的方法[3],在4種魚類分類上取得了92.50%的識別結果。相比之下,本次工作在魚類分類更多、圖像背景干擾更大的情況下,仍然取得了更優異的識別性能。
6 結語
本文構建了一個基于VGG16的有較強泛化能力的卷積網絡模型,并用dropout方法和batch normalization 方法優化了模型,降低了過擬合;用數據集擴增的方法增強了原始數據集。實驗結果顯示此模型具有很高的識別精度,達到了預期目標。
參考文獻
[1]吳一全,殷駿,戴一冕等.基于蜂群優化多核支持向量機的淡水魚種類識別[J]. 農業工程學報,2014(16):312-319.
[2]Hu Jing,Li Daoliang,Duan Qingling, et al.Fish species classification by color,texture and multi-class support vector machine using computer vision[J].Computers and Electronics in Agriculture,2012,88(s):133-140.
[3]萬鵬,潘海兵,龍長江等.基于機器視覺技術淡水魚 品種在線識別裝置設計[J].食品與機械,2012,28(06):164-167.
[4]Simonyan,K.and Zisserman,A.Very deep convolutional networks for large-scale image recognition[J].arXiv preprint arXiv,2014:1409.1556.
[5]周志華.機器學習[M].北京:清華大學出版社,2015.
[6]Krizhevsky,A.,Sutskever,I.and Hinton, G.E.Imagenet classification with deep convolutional neural networks[C].In Advances in neural information processing.
[7]Ioffe,Sergey,and Christian Szegedy. Batch normalization:Accelerating deep network training by reducing internal covariate shift[J].arXiv, 2015:1502.03167.
作者單位
湖南科技大學信息與電氣工程學院 湖南省湘潭市 411201