顧鄭平 朱 敏
(華東師范大學計算機科學與軟件工程學院計算中心 上海 200062)
魚類在人類生活中扮演著非常重要的角色,也是人類重要的資源之一。根據(jù)加拿大學者Nelson[1]統(tǒng)計,全球已知魚類約有28 000種,占已命名脊椎動物一半以上,且新種魚類不斷被發(fā)現(xiàn)。目前全球已命名的魚種約在32 100種。魚類識別應用廣泛,可用于水產(chǎn)、生物、海洋、環(huán)境的研究、開發(fā)、管理等。對各種魚類分門別類地建立數(shù)據(jù)庫,利用人工智能方法自動識別魚類,不僅能夠更好地開發(fā)利用和保護魚類資源,也為發(fā)展海洋漁業(yè)生產(chǎn)發(fā)揮了積極的作用,對學術研究和經(jīng)濟價值具有重大意義。
魚的形狀各種各樣,有時相差大,但總的來說大多數(shù)魚呈細長的流線形狀,分析起來比較復雜?;谟嬎銠C視覺的魚類分類研究已長達二十多年。多年來,已經(jīng)有許多學者對其進行了深入研究。1990年,Strachan等[2]利用形狀特征對魚進行分類。Larsen等[3]提取了三個魚種的形狀和紋理特征,使用LDA方法對108張圖像數(shù)據(jù)集進行分類,準確率為76%。2013年,Huang等[4]提出了Balance-Guaranteed Optimized Tree(BGOT) 算法,采集了10個魚種3 179張圖像數(shù)據(jù)進行實驗,并得到95%的準確率。吳一全等[5]于2014年提出了基于LS-SVM的識別方法,識別率達95.83%以上。2015年,杜偉東等[6]提出了基于SVM的決策融合魚類識別方法,識別率在90%以上。
盡管經(jīng)過長期的發(fā)展,基于計算機視覺的魚類分類方法研究已經(jīng)取得了重大進展,但是依然存在各種各樣的問題。傳統(tǒng)的魚類分類方法一般采用兩步法:
(1) 從輸入的魚圖像中計算出人為設置的特征。(2) 根據(jù)得出的特征去訓練一個分類器,用于測試數(shù)據(jù)的分類。這種方法表現(xiàn)的好壞很大程度上取決于人為選擇的特征是否合理,而人在選擇特征時往往都是靠經(jīng)驗,具有很大的盲目性。雖然現(xiàn)在利用人為設置的特征進行分類也取得了較好的結果,但是這些特征都是針對特定數(shù)據(jù)設計的,如果用同樣的特征來處理不同的數(shù)據(jù)集,結果可能大相庭徑,因此這種特征具有不可遷移性。
近年來,深度學習在人工智能領域取得重要突破。本文主要研究利用深度學習算法直接在圖像上進行自動特征學習與分類。首先研究了基于卷積神經(jīng)網(wǎng)絡的魚圖像分類算法,并在此基礎上, 進一步提出了以預訓練網(wǎng)絡的特征結合SVM算法(PreCNN+SVM)進行分類的混合模型。利用深度學習算法很好地解決了傳統(tǒng)魚類分類方法存在的缺陷且分類效果優(yōu)于傳統(tǒng)方法。
深度學習是目前圖像分類的主流方法,取得比較好的效果,其核心是卷積神經(jīng)網(wǎng)絡。遷移學習能夠遷移已有的知識來解決目標領域中僅有少量有標簽的樣本數(shù)據(jù)甚至沒有的學習問題。
卷積神經(jīng)網(wǎng)絡最早由Le Cun等在1998年提出來[7],并應用在手寫數(shù)字識別上。隨著計算能力的提高,使得大型復雜的模型計算變得可能。AlexNet模型[8]的提出,開啟了計算機視覺深度網(wǎng)絡的新時代。卷積神經(jīng)網(wǎng)絡在結構上具有局部連接,權重共享及空間或時間上的子采樣三個特性,這些特性使得卷積神經(jīng)網(wǎng)絡具有一定程度上的平移、放縮和扭曲不變性。
在圖像處理中,圖像是以二維矩陣的形式輸入到神經(jīng)網(wǎng)絡中。對于二維卷積,假設xl∈(wl×hl)和xl-1∈(wl-1×hl-1)分別是第l層和第l-1層的神經(jīng)元活性。X(l)的每一個元素為:
(1)
式中:W(l)∈(u×v)為二維的濾波器,b(l)為第l層的偏置向量。每個濾波器大小為u×v。
卷積層的作用是提取一個局部區(qū)域的特征,每一個濾波器相當于一個特征提取器。對于卷積層得到的一個特征映射X(l),可以將其劃分為很多區(qū)域Rk,k=1,2,…,K。
一個子采樣函數(shù)Sub(·)定義為:
(2)
式中:w(l+1)和b(l+1)分別是可訓練的權重和偏置參數(shù)。
X(l+1)=f(w(l+1)·Sub(X(l))+b(l+1))
(3)
其中,Sub(X(l))是子采樣后的特征映射。
子采樣層可以來大大降低特征的維數(shù),避免過擬合,同時還可以使得下一層的神經(jīng)元對一些小的形態(tài)改變保持不變。
將知識遷移到新環(huán)境中的能力通常被稱為遷移學習。遷移學習[9]涉及到域和任務的概念。 一個域D由一個特征空間χ和特征空間上的邊際概率分布P(X)組成,即D={χ,P(X)},其中X=x1,x2,…,xn∈χ。對于給定的一個域,一個學習任務T,由兩部分組成,即標簽Y和目標預測函數(shù)f(·),T={Y,f(·)}。
給定一個源域Ds和一個學習任務Ts,一個目標域Dt和一個目標學習任務Tt。遷移學習的目的是利用Ds和Ts中的知識,來提高目標預測函數(shù)f(·)在Dt中的性能,其中Ds≠Ts或Dt≠Tt。
Maxime等[10]提出遷移卷積神經(jīng)網(wǎng)絡的權重值的方法在VOC2007和VOC2012上取得了很好的效果。
本章研究了基于卷積神經(jīng)網(wǎng)絡的魚圖像分類算法,并在此基礎上,研究利用遷移學習,提出了以預訓練網(wǎng)絡的特征結合SVM算法(PreCNN+SVM)的混合模型,能夠?qū)⑦m用于大數(shù)據(jù)的模型遷移到小數(shù)據(jù)上,實現(xiàn)個性化遷移。
針對傳統(tǒng)的魚類分類算法,本節(jié)研究并實現(xiàn)一種基于卷積神經(jīng)網(wǎng)絡的魚類分類算法。
2.1.1 CNN模型架構
模型由兩個卷積層、兩個池化層、一個全連接層和一個Softmax回歸層組成。使用Adam[11]基于一階梯度的隨機目標函數(shù)算法來優(yōu)化整個神經(jīng)網(wǎng)絡。模型架構如圖1所示。
圖1 多層架構的卷積神經(jīng)網(wǎng)絡模型
2.1.2 權值初始化
為了創(chuàng)建這個模型,需要創(chuàng)建大量的權重和偏置項。這個模型中的權重在初始化時加入少量的噪聲來打破對稱性以及避免0梯度。模型使用ReLU[12]激活函數(shù),用一個較小的正數(shù)來初始化偏置項,以避免神經(jīng)元節(jié)點輸出恒為0的問題。ReLU激活函數(shù)定義為:
f(x)=max(0,x)
(4)
其中,x為輸入的神經(jīng)元。
2.1.3 卷積和池化
卷積層的任務就是從不同的角度來選擇前一層特征圖各角度的特征。在獲取到卷積特征后,把卷積特征劃分到不相交區(qū)域上,然后用這些區(qū)域的最大特征來獲取池化后的卷積特征。第一層由一個卷積接一個max pooling完成。卷積在每個5×5的卷積核中得到32特征,對于每一個輸出通道都有一個對應的偏置量。同樣,第二層中,每個5×5的卷積核得到64個特征。
2.1.4 全連接層
在這一層,加入一個有1 024個神經(jīng)元的全連接層,用于處理整個圖片。同時將池化層輸出的向量轉(zhuǎn)換成一維向量,乘上權重矩陣,加上偏置,并使用ReLU激活函數(shù)。
2.1.5 輸出層
為了減少過擬合,在輸出層之前加入Dropout[13]。Dropout可以有效提高大型神經(jīng)網(wǎng)絡的泛化能力。
最后添加一個Softmax層。在Softmax回歸中,假設類標簽y可以取k個不同的值。對于給定的測試輸入x,假設函數(shù)p(y=j|x;w)是x屬于類別j的概率值:
(5)
式中:w為模型的參數(shù)。
深度學習算法能夠有效的關鍵是大規(guī)模的數(shù)據(jù),而對于小規(guī)模的數(shù)據(jù)集,為了提高其識別的準確率,往往需要不斷調(diào)整訓練參數(shù)以及構建更深層次的模型,這樣會增加參數(shù)的規(guī)模和計算復雜度。
由圖1可以看到,卷積神經(jīng)網(wǎng)絡的結構主要由兩部分構成:(1) 一系列卷積層。(2) 一個或多個全連接神經(jīng)網(wǎng)絡。卷積層用于特征學習,然后將學習好的特征傳入全連接層進行分類。
本小節(jié)研究利用遷移學習,將適用于大數(shù)據(jù)的模型遷移到小數(shù)據(jù)上,并將SVM分類器代替Softmax分類器。
2.2.1 PreCNN+SVM模型架構
本文使用的預訓練深層模型為Inception-V3[14]。該模型由Google 2014年發(fā)布,利用該網(wǎng)絡在ImageNet上預先訓練好的參數(shù)權重,最后將學習特征輸入到SVM分類器中進行分類。PreCNN+SVM模型結構如圖2所示。
圖2 PreCNN+SVM模型架構
其中Inception-V3的網(wǎng)絡結構如圖3所示。
圖3 Inception-V3網(wǎng)絡結構圖
本文研究的分類數(shù)目遠小于ImageNet上的分類數(shù)目,為了更好地得到分類結果,改進Softmax分類器為SVM分類器。
2.2.2 Bottleneck特征
輸入圖像經(jīng)過訓練后,提取出了學習特征,如圖4所示,預訓練模型中,第一層卷積完成后得到的特征圖像。最后一層全連接層完成后得到的學習特征稱為“Bottleneck特征”,如圖5所示,但肉眼難以區(qū)別這些特征是否能夠進行有效分類。
圖4 第一層卷積完成后得到的特征圖像
圖5 最后一層全連接層完成后得到的特征圖像
為了證明利用遷移學習構建的預訓練模型的有效性。本文對提取的部分種類的魚圖像的Bottleneck特征進行聚類分析,如圖6所示。圖中,不同的顏色(以灰度表示)代表了不同的魚種。
圖6 Bottleneck 特征聚類圖
可以看到,相同的色點大多聚集在一起。因此,可以使用Bottleneck特征有效地進行分類。
2.2.3 SVM分類器
支持向量機(SVM)是一種依賴核函數(shù)的機器學習分類算法。在高維空間中最優(yōu)分類函數(shù)為:
(6)
式中:ai≥0是拉格朗日因子,b是閾值。
通過對訓練樣本交叉驗證來調(diào)節(jié)核函數(shù)的相關參數(shù),優(yōu)化擬合問題,產(chǎn)生的支持向量有的在超平上,有的在超平面之間。本文選用徑向量(RBF)[15]形式核函數(shù)如下:
(7)
式中:σ為可調(diào)參數(shù),i=1,2,…,n。
本文實驗以在Fish4-Knowledge(F4K)[16]數(shù)據(jù)集上魚類圖像作為研究對象。該數(shù)據(jù)集是臺灣電力公司、臺灣海洋研究所和墾丁國家公園,分享他們2010年10月1日至2013年9月30日期間,在臺灣南灣、蘭嶼和胡比湖的水下觀景臺收集的影像數(shù)據(jù)。最后實驗結果與前人的多項研究成果進行對比。
本實驗數(shù)據(jù)集是從Fish4-Knowledge(F4K)[16]獲取的,有23類魚種數(shù)據(jù)集,共27 370張魚的圖像。圖7給出了23種魚類的圖像。
圖7 23種魚類的圖像
在數(shù)據(jù)預處理中,由于這些RGB魚圖像大小不一,范圍約為20×20至約200×200像素。考慮到圖像的平均大小,調(diào)整所有的圖像為28×28像素,使其減少計算資源的消耗。整個數(shù)據(jù)集被劃分為兩個子集:4/5用于訓練,1/5用于測試。同時,由于不同魚類物種的數(shù)量不平衡,針對每個種類按相同的比例分配。
對于訓練集還采用了一系列隨機的變換,人為地增加了數(shù)據(jù)集的大?。?1) 隨機翻轉(zhuǎn)圖像由左到右。(2) 隨機變換圖像的亮度。(3) 隨機變換圖像的對比度。如圖8所示,一張圖像經(jīng)過變換后得到的一系列圖像。
圖8 一張圖像變換后得到的一系列圖像
實驗在配備 Intel Core i7處理器,內(nèi)存8 GB的OS X Yosemite操作系統(tǒng)下進行,卷積神經(jīng)網(wǎng)絡的訓練使用Google的深度學習框架TensorFlow[17]。
在訓練過程中,使用交叉熵作為優(yōu)化的目標函數(shù)。利用TensorBoard[17]得到損失函數(shù)變化圖,如圖9所示。
圖9 迭代步數(shù)與損失值變化曲線
圖9表示,當學習速率為0.001時,得到平均損失值變化曲線。由于訓練中使用的數(shù)據(jù)批量比較小,損失值中夾雜了相當對的噪聲。相比原始值,損失值的移動平均值顯得更有意義。
對于CNN模型,經(jīng)過60 000步迭代計算,訓練數(shù)據(jù)集的準確率為97.57%,測試數(shù)據(jù)集得到的準確率為96.67%。平均訓練時間為5小時32分。
對于PreCNN+SVM模型,經(jīng)過訓練后,訓練數(shù)據(jù)集的準確率為98.90%,測試數(shù)據(jù)集的準確率為98.6%。平均訓練時間為2小時45分。
與前人研究比較結果如表1所示。
表1 各個算法比較結果
對比前人算法,利用深度學習算法對魚類圖像進行分類,其準確率均有提高,并且方法更靈活,不需要人工提取特征值。對比CNN模型,PreCNN+SVM模型利用預先訓練好的參數(shù)權重,減少了訓練時間,并且準確率也有一定提高。
通過實驗數(shù)據(jù)表明,本文提出的基于深度學習的魚類分類算法,能夠有效解決魚類圖像分類問題,該方法對傳統(tǒng)的分類準確率均有提高,對于小規(guī)模數(shù)據(jù)集有效解決了需要人工提取特征的不可遷移性。
本文研究了基于深度學習的魚類分類算法,提出了基于卷積神經(jīng)網(wǎng)絡的分類模型和基于遷移學習的PreCNN+SVM分類模型。這些方法提取的特征都是從訓練數(shù)據(jù)中提取的,不需要關于魚類領域的知識。
通過在深?;铘~圖像數(shù)據(jù)集上的實驗證明,對比傳統(tǒng)魚類識別算法,利用深度學習算法識別魚類準確度有一定的提高。
下一步將進一步優(yōu)化基于深度學習的魚類識別模型,以GPU代替CPU加快訓練速度。同時采集更多的數(shù)據(jù)來訓練本文的模型,使得能夠識別更多的魚類。最終期望能夠?qū)⒈疚牡姆椒ê蛻眠M行推廣,形成一個實用的自動魚類識別產(chǎn)品,推進水下活魚識別研究,探索水下物體識別問題,并使海洋生物學家,生態(tài)學家以及魚類養(yǎng)殖等商業(yè)應用受益。
[1] Froese R,Pauly D.FishBase.World Wide Web electronic publication[OL].(2017-02).www.fishbase.org.
[2] Strachan N J C,Nesvadba P,Allen A R.Fish species recognition by shape analysis of images[J].Pattern Recognition,1990,23(5):539-544.
[3] Larsen R,Olafsdottir H,Ersbφll B.Shape and texture based classification of fish species[J].Image Analysis,2009,5575:745-749.
[4] Huang P X,Boom B J,Fisher R B.Underwater live fish recognition using a balance-guaranteed optimized tree[C]//Asian Conference on Computer Vision.Springer Berlin Heidelberg,2012:422-433.
[5] 吳一全,殷駿,戴一冕,等.基于蜂群優(yōu)化多核支持向量機的淡水魚種類識別[J].農(nóng)業(yè)工程學報,2014,30(16):312-319.
[6] 杜偉東,李海森,魏玉闊,等.基于SVM的決策融合魚類識別方法[J].哈爾濱工程大學學報,2015(5):623-627.
[7] Lécun Y,Bottou L,Bengio Y,et al.Gradient-based learning applied to document recognition[J].Proceedings of the IEEE,1998,86(11):2278-2324.
[8] Krizhevsky A,Sutskever I,Hinton G E.ImageNet classification with deep convolutional neural networks[C]//International Conference on Neural Information Processing Systems.Curran Associates Inc.2012:1097-1105.
[9] Pan S J,Yang Q.A Survey on Transfer Learning[J].Knowledge & Data Engineering IEEE Transactions on,2010,22(10):1345-1359.
[10] Oquab M,Bottou L,Laptev I,et al.Learning and Transferring Mid-level Image Representations Using Convolutional Neural Networks[C]//IEEE Conference on Computer Vision and Pattern Recognition.IEEE Computer Society,2014:1717-1724.
[11] Kingma D P,Ba J.Adam:A Method for Stochastic Optimization[C]//The third International Conference for Learning Representations,San Diego,2015.
[12] Hahnloser R H,Sarpeshkar R,Mahowald M A,et al.Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit[J].Nature,2000,405(6789):947-951.
[13] Srivastava N,Hinton G,Krizhevsky A,et al.Dropout:a simple way to prevent neural networks from overfitting[J].Journal of Machine Learning Research,2014,15(1):1929-1958.
[14] Szegedy C,Vanhoucke V,Ioffe S,et al.Rethinking the inception architecture for computer vision[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.2016:2818-2826.
[15] 張學工.關于統(tǒng)計學習理論與支持向量機[J].自動化學報,2000,26(1):32-42.
[16] Boom B J,Huang P X,He J,et al.Supporting ground-truth annotation of image datasets using clustering[C]//International Conference on Pattern Recognition.IEEE,2012:1542-1545.
[17] Abadi M,Agarwal A,Barham P,et al.TensorFlow:Large-scale machine learning on heterogeneous systems[EB/OL].(2015-12-12).http://download.tensorflow.org/paper/whitepaper2015.pdf.
[18] Qin H,Li X,Liang J,et al.DeepFish:Accurate underwater live fish recognition with a deep architecture[J].Neurocomputing,2015,187:49-58.