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