趙江華(四川大學計算機學院,成都 610065)
基于深度卷積神經(jīng)網(wǎng)絡的露脊鯨識別
趙江華
(四川大學計算機學院,成都610065)
深度學習的概念起源于人工神經(jīng)網(wǎng)絡,是指具有多層結(jié)構(gòu)的神經(jīng)網(wǎng)絡。深度學習通過多層的神經(jīng)網(wǎng)絡結(jié)構(gòu)學習數(shù)據(jù)中多層次的表達,這種表達具有很好的抽象性,能夠?qū)W習到數(shù)據(jù)的內(nèi)在結(jié)構(gòu)。目前,深度學習已經(jīng)在語音識別,圖像目標識別檢測和其他眾多領(lǐng)域,例如藥物檢測和基因科學,都取得了迄今為止最好的效果[1]。
深度學習其實是通過梯度反向傳播算法(BP)去優(yōu)化一個定義在多層神經(jīng)網(wǎng)絡上的性能函數(shù),從而使網(wǎng)絡從大量數(shù)據(jù)中學習到數(shù)據(jù)的內(nèi)在結(jié)構(gòu)。Hinton早在1986年就提出了BP算法[2],然而由于梯度消失,局部極小等問題的存在,以及當時計算機的計算能力和訓練數(shù)據(jù)量都太小,神經(jīng)網(wǎng)絡方法沒有取得成功。直到2006年,Hinton提出的貪心的逐層訓練算法為深度學習取得了突破性的進展[3]。貪心的逐層訓練算法解決了深度學習在訓練上的難點,并且多層次的神經(jīng)網(wǎng)絡具有優(yōu)異的學習能力,得到的特征具有更好的表達能力,從而可以更好地進行分類和可視化。從2006年開始,深度學習逐漸進入工業(yè)應用和學術(shù)研究,現(xiàn)已成為機器學習最熱門的領(lǐng)域。
目前,典型的深度學習的網(wǎng)絡模型有卷積神經(jīng)網(wǎng)絡 (Convolutional Neural Network)、受限莫爾茲曼機(Restricted Boltzmann Machines)、堆棧式自動編碼機(Stacked Auto-encoder Network)以及回復式神經(jīng)網(wǎng)絡(Recurrent Neural Network)。其中,深度卷積神經(jīng)網(wǎng)絡取得的成功尤為矚目,科學家們使用卷積神經(jīng)網(wǎng)絡在處理圖像識別[4-5]、視頻分類[6-7]、語音識別[8]上都取得了突破性進展。
卷積神經(jīng)網(wǎng)絡是一種受生物視覺系統(tǒng)啟發(fā),具有特殊結(jié)構(gòu)的神經(jīng)網(wǎng)絡,它的計算過程主要分為卷積運算和池化運算。其中卷積運算具有局部連接和權(quán)值共享的特點,這符合自然圖像特點:同一圖像的不同區(qū)域具有相同的統(tǒng)計特性,這意味著我們可以將在圖像部分區(qū)域?qū)W習到的特征應用到整幅圖像上。池化運算可以有效降低圖像特征維度,篩選出其中重要的特征。通過卷積和池化運算,可以大幅減少模型參數(shù)數(shù)量,提高網(wǎng)絡的泛化能力。
本文討論的露脊鯨識別其本身就是一個圖像識別問題,圖像識別現(xiàn)在成熟的方法是使用深度卷積神經(jīng)模型作分類,但在這里我們卻不能直接使用原始圖像作為深度卷積神經(jīng)網(wǎng)絡模型的輸入,一是原始圖像分辨率很高,而鯨魚在圖像中所占比例比較小,有大面積的背景,二是帶標簽的圖像數(shù)據(jù)相對較少。為了解決這些問題,本文提出在訓練階段通過人工標記,從帶標簽圖像中截取出鯨魚頭部圖像和海水背景圖像,訓練我們的模型;預測階段先將需要預測的圖像滑動分塊,對這些分塊后的子圖分別進行識別,然后從這些識別結(jié)果中選一個最好的作為整幅圖像的識別結(jié)果。
圖1 露脊鯨圖片
1.1數(shù)據(jù)集介紹
本數(shù)據(jù)集是Kaggle上Right Whale Recognition比賽的數(shù)據(jù),一共9G左右,共有10469張露脊鯨照片,尺寸從五百萬像素到上千萬像素不等。其中帶有標簽的照片4544張,分別標記了其照片來自那一條露脊鯨,剩下的還有6925張照片,需要我們給出預測結(jié)果。這些照片一共來自447條露脊鯨。
本次比賽采用在線測評方式,用戶提交預測結(jié)果,系統(tǒng)給出評價。在線測評采用對數(shù)損失函數(shù)作為評價標準。具體公式如下,其中,N為測試樣本數(shù)量,M為目標類別數(shù)量,yi,j表示第i個照片是否屬于第j個鯨魚,是為1,否則為0,pi,j是模型對i個樣本預測其是j類的概率。為了避免計算上的問題,將pi,j限定在[e-15,1-e-15]。
1.2數(shù)據(jù)預處理
由于原始照片大小不一樣,我們需要將圖像縮放到相同大小,考慮到原始圖像長寬比都是2比3,以及圖像中露脊鯨可識別性,我們首先將所有圖片都縮小到1024×1536大小。然后對帶標簽的圖像,將其中露脊鯨頭部人工標記出來。根據(jù)標記結(jié)果,從露脊鯨頭部附近截取256×256大小的區(qū)域,截取的時候進行一定范圍的平移和旋轉(zhuǎn),可以擴大訓練樣本。同時,我們還從不是露脊鯨頭部的區(qū)域隨機選擇256×256大小的區(qū)域作為海水背景樣本。這樣我們就根據(jù)帶標簽的圖像獲得了帶有露脊鯨頭部和海水背景的256×256的樣本集,將海水背景設為第448類。然后我們將不帶標簽的圖像采用256×256的窗口進行滑動分塊,長寬方向上滑動步長均為128,每張圖像得到77張子圖像,用來做照片預測。最終,我們得到160000個訓練樣本,共448個類別,以及533225個待預測的子圖像。
圖2
1.3網(wǎng)絡設計
針對本文數(shù)據(jù),我們采用AlexNet[5]作為我們實驗的網(wǎng)絡。該網(wǎng)絡共11層,包括5個卷積層,3個池化層,2個全連接層,最后接Softmax層。整個網(wǎng)絡除了最后Softmax層外,其余各層都采用半線形函數(shù)ReLU作為激活函數(shù),這樣既可以簡化計算,縮短訓練時間,同時還可以避免梯度消失的問題。在池化層進行重疊池化(Overlapping Pooling),可以在某種程度上降低了過擬合(Overfitting)的幾率。此外,我們還在網(wǎng)絡的2個全連接層使用一種正則化方法Dropout,避免在完全連接層上出現(xiàn)過擬合的現(xiàn)象。網(wǎng)絡的實際輸入并不是3×256× 256,而是3×224×224,這樣我們可以在訓練階段從輸入圖像上隨機截取網(wǎng)絡3×224×224的塊進行訓練,測試階段就截取輸入圖像中心區(qū)域的塊進行測試,這樣就擴大了訓練數(shù)據(jù),提高網(wǎng)絡泛化能力。
表1
表1 AlexNet網(wǎng)絡具體配置,Conv表示卷積層,Max-Pooling表示最大池化層,Inner-Product表示全連接層,Softmax表示分類層
我們的深度卷積神經(jīng)網(wǎng)絡采用Caffe框架實現(xiàn),運行在GPU計算平臺上,運行效率很高。訓練階段,網(wǎng)絡采用step學習策略,初始學習率為0.01,20000次迭代后學習率乘以0.1,為了消除震蕩,我們也使用了沖量學習,沖量設為0.9,一共迭代150000次,批處理大小為128。整個訓練過程需要36個小時,訓練結(jié)束后,我們測試77張子圖大概需要4.7s,整個預測過程大概需要9個小時,最后我們在線測試獲得3.72的對數(shù)損失。同時,除了在分塊后的圖像上進行訓練和測試外,我們還將原始圖像壓縮到256×256大小進行訓練預測,最后獲得5.93的對數(shù)損失。實驗表明直接將原始圖像壓縮識別效果很差,這主要是因為目標在圖像所占比例太小,當進行壓縮過后,目標信息損失太多,以致目標幾乎無法識別。我們的方法就是最大限度的呈現(xiàn)目標信息給我們的訓練模型,使模型能夠提前有用的特征,使分類識別更加準確。
本文主要采用深度學習方法,結(jié)合先進的深度學習框架Caffe和強大計算能力的GPU平臺,對高分辨率的鯨魚圖片進行了識別。實驗結(jié)果顯示,我們的方法解決了圖像分辨率高,待識別目標占圖像比例小的問題,取得了較好的識別效果。由此可見,對原始圖像作適當分塊處理,可以有效提高目標占比小的圖像識別效果,同時深度卷積神經(jīng)網(wǎng)絡表現(xiàn)出了強大的學習能力,在圖像識別問題上具有很大優(yōu)勢。在今后的工作中,我們會嘗試將深度卷積神經(jīng)網(wǎng)絡結(jié)合回復式神經(jīng)網(wǎng)絡,實現(xiàn)圖片大小自適應的目標識別模型。
[1]LeCun,Y.,Bengio,Y.,Hinton,G.2015.Deep Learning.Nature 521,436-444.
[2]Rumelhart D E,Hinton G E,Williams R J.Learning Internal Representations by Error Propagation[R].California Univ San Diego La Jolla Inst For Cognitive Science,1985.
[3]Hinton G E,Osindero S,Teh Y W.A Fast Learning Algorithm for Deep Belief Nets[J].Neural Computation,2006,18(7):1527-1554.
[4]A.Krizhevsky,I.Sutskever,G.E.Hinton.ImageNet Classification with Deep Convolutional Neural Networks.In NIPS,2012:1106-1114.
[5]K.Simonyan,A.Zisserman.Very Deep Convolutional Networks for Large-Scale Image Recognition.CoRR,abs/1409.1556,2014.
[6]A.Karpathy,G.Toderici,S.Shetty,T.Leung,R.Sukthankar,and L.Fei-Fei.Large-Scale Video Classification with Convolutional Neural Networks.In CVPR,pages 1725-1732,2014.
[7]J.Y.-H.Ng,M.Hausknecht,S.Vijayanarasimhan,O.Vinyals,R.Monga,and G.Toderici.Beyond Short Snippets:Deep Networks for Video Classification.In CVPR,pages 4694–4702,2015.
[8]O.Abdel-Hamid,A.-R.Mohamed,H.Jiang,L.Deng,G.Penn,D.Yu.Convolutional Neural Networks for Speech Recognition.IEEE/ ACM Trans.Audio,Speech,Lang.Process.,vol.22,no.10,pp.1533-1545,Oct.2014.
Deep Learning;Image Recognition;Deep Convolutional Neural Network
Right Whale Recognition Based on Deep Convolutional Neural Network
ZHAO Jiang-hua
(College of Computer Science,Sichuan University,Chengdu 610065)
1007-1423(2016)05-0045-04
10.3969/j.issn.1007-1423.2016.05.010
趙江華(1990-),男,四川達州人,碩士研究生,研究方向為機器智能
2015-12-31
2016-02-10
采用深度學習的方法,將原圖像分塊成一系列子圖像,訓練子圖像的分類模型,根據(jù)子圖像分類結(jié)果得到原圖像分類結(jié)果。與直接縮小原始圖像進行識別的結(jié)果進行比較。實驗顯示,相對于直接縮小原始圖像,該方法有了很大提高,最終獲得3.72對數(shù)損失,實驗表明所提出的方法是有效的。
圖像識別;深度學習;深度卷積神經(jīng)網(wǎng)絡
Uses deep learning,blocks original images into a series of sub-images,trains a classification model of sub-images,and predicts original image class based on sub-images'classification results.At the same time,compares the result of the proposed method with scaling original images directly to proper size.The experiment shows that,compared to scaling original images directly,the proposed method achieved great improvement with a final point 9.075.This suggests the effective of the proposed method.