陳磊 李鶴喜
摘? 要:本文采用網絡爬蟲技術,根據關鍵字自動收集所用圖片數據集,并對爬取到的圖片進行除雜與標注,省去了人工收集的過程,提高了制作數據集的效率。搭建并訓練了一個9層的卷積神經網絡模型用于處理爬取圖片的自動分類,經實驗證明,訓練后的模型對6類球和5類犬的識別準確率可達90%以上,可以用于網絡爬取圖片的自動分類。
關鍵詞:網絡爬蟲;圖像分類;神經網絡;深度學習
中圖分類號:TP391.4? ? ? 文獻標識碼:A 文章編號:2096-4706(2019)15-0091-04
Automatic Classification of Crawling Pictures Based on Convolutional Neural Network
CHEN Lei,LI Hexi
(Department of Intelligent Manufacturing,Wuyi University,Jiangmen? 529020,China)
Abstract:In this paper,web crawler technology is used to automatically collect image data sets according to keywords,and to remove clutter and label the crawled images,which saves the process of manual collection and improves the efficiency of data collection. A 9-layer convolution neural network model is constructed and trained to process the automatic classification of crawling pictures. Experiments prove that after training,the recognition accuracy of six kinds of balls and five kinds of dogs can reach more than 90%,which can be used for the automatic classification of crawling pictures on the network.
Keywords:web crawler;image classification;neural network;in-depth learning
0? 引? 言
圖片分類是計算機視覺領域中的基本研究課題之一。每天互聯(lián)網上都產生大量的圖片信息,有時我們需要收集這些圖片信息作為基本的數據源,為提高效率,采用網絡爬蟲技術實現(xiàn)圖片自動爬取[1]。然而爬取的海量圖片、視頻數據絕大多數是沒有類別標簽的,對其進行人工分類必定會花費很多時間和精力,如果能開發(fā)一個分類能力強且能夠自動分類海量圖片或自動識別特定物體的系統(tǒng),無疑將大大方便我們對這些圖片信息的高效組織和對有用圖像的快速提取,本文的目標就是采用深度學習的卷積神經網來實現(xiàn)網絡爬取圖片的自動分類與管理。
1? 圖像爬取與標簽制作
1.1? 圖像爬取
采用網絡爬蟲爬取網上圖片一般要經過以下步驟:(1)設置一個種子URL,由此開始獲取待抓取的URL隊列;(2)讀取URL并解析下載網頁;(3)進行網頁文件解析,篩選擴展名為jpg、png等文件;(4)判斷文件名與關鍵字是否相關;(5)將圖片文件存入指定目錄。如果需要加快速度可以放置多個線程并行爬取,圖片爬取流程如圖1所示。
1.2? 圖像標簽的制作
以爬取的圖片作為卷積神經網絡模型的訓練集,需要做批量標注,即每個圖片都要建立對應的標簽,下面以爬到的球類訓練數據集為例(分類6種球)說明標簽的制作過程。雖然爬取圖片時是按關鍵字爬取的,但是爬取結果也會有摻雜,所以,每個類別都要經過人工剔除無效圖片,去除無效圖片時要遵循以下原則:(1)去除與此類無關的圖片;(2)去除模糊的圖片;(3)去除水印面積過大的圖片;(4)去除尺寸過小的圖片;(5)內容過于雜亂的圖片。保留那些高清的、與類別有關的圖片。
完成所有圖片除雜工作后,接著要制作數據集和標簽,其具體方法是:遍歷每個訓練集的文件夾,每一個文件夾下面的圖片作為一個類,給它們編一個向量號碼,比如排球目錄下的所有圖片的標簽記錄為0類,則其對應的標簽數組為[1,0,0,0,0,0];籃球目錄下的所有圖片的標簽記錄為1類,則其對應的標簽數組為[0,1,0,0,0,0],并且讀取對應圖片三個通道的顏色值,對其進行歸一化處理,統(tǒng)一縮放為50×50×3的尺寸大小,用txt文件保存類別名,這樣方便模型訓練和預測時使用標簽名。
2? 卷積神經網絡模型的搭建
設計的卷積神經網絡的結構如圖2所示,共有9層,它包括2個卷積層、2個池化層和3個全連接層,中間每層使用ReLU激活函數,最后一層輸出使用Softmax激活函數。
2.1? 卷積層
此卷積神經網絡模型用了兩次卷積,第一次用了32個5×5的卷積核,獲得了特征圖為50×50×32;第二次用64個3×3的卷積核,獲得了特征圖為25×25×64,卷積的步長都為1。為了解決卷積運算在卷積核移動到圖像邊緣時就結束,導致邊緣像素計算少這一問題[2]。在卷積操作前對輸入圖片擴充,即在圖片外圍補充一些像素點,把這些像素點初始化為0,使卷積層的輸出圖片尺寸與輸入一致。
2.2? ReLU激活函數
只要神經元數量足夠,神經網絡可以任意精度逼近任意函數。為了擬合非線性函數,需要向神經網絡中引入非線性變換,即激活函數。從梯度下降的訓練時間而言,采用飽和的非線性激活函數tanh(如式1)比使用非飽和的非線性激活函數ReLU(如式2)要慢得多[3]。在本次網絡的搭建中,多次使用了ReLU激活函數,這樣不但可以引入更多非線性因素,提高模型表達能力,而且可以縮短訓練時間。
tanh(x)=? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)
F(x)=max(0,x)? ? ? ? ? ? ? ? ? ? ? ? ? (2)
激活函數tanh與ReLU的圖像分別如圖3、圖4所示??梢钥闯?,當輸入很大或者很小的時候,飽和的神經元會帶來梯度消失,為防止這一現(xiàn)象的出現(xiàn),本文選擇使用ReLU函數。
2.3? 池化層
經過激活函數增加了非線性因素,但是輸出的數據維度并沒有改變。為了減少計算量,提高模型的泛化能力,使池化層可以在降低維度的同時,還可以保留最重要的信息,池化的目的還有保持圖像某種不變性(旋轉、平移、伸縮等)[4]。通常池化方式有最大值、平均值或求和。本次網絡模型中使用了2次最大池化,且都是規(guī)定一個區(qū)域,比如2×2,取4像素的最大值作為下一層的輸入。
2.4? 全連接層
卷積操作的目的是提取圖像的局部特征,通過有序堆疊變成一維特征向量,全連接層就是把這個特征向量通過加權映射成輸出的圖像類別[5]。本文的網絡模型的全連接層是逐步把最后一次的池化輸出數據降到1024,512,256個數據,如圖2的標注所示。在最后的輸出層使用Softmax激活函數,將一個含任意實數的k維向量z“降維”到另一k維實向量σ(z)中,使得每一個元素的范圍都在(0,1)之間,并且所有元素的總和為1,這里k=6。Softmax激活函數的表達式如式(3)所示。
σ(z)j=? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3)
3? 模型訓練
前面幾個步驟把訓練圖像輸入神經網絡,經卷積、ReLU、池化操作、完全連接層一系列前向傳播后,得到每個類別的輸出概率。例如輸入的圖片是羽毛球,經過全連接層的輸出預測概率假設為[0.5,0.1,0.1,0.05,0.15,0.1],羽毛球在標簽制作中是第0類,所以羽毛球對應的目標概率[1,0,0,0,0,0],這樣我們可以定義交叉熵損失函數來按批量梯度下降法訓練模型,交叉熵損失函數見式(4)。
C=-yilnai? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(4)
其中yi是目標概率,ai是預測概率。
神經網絡搭建使用的深度學習框架為Keras,設置每次訓練所選取的樣本batch_size為128,訓練輪次Epoches為1600,學習率為0.1。本文實例中分類6種球,訓練約1200張圖片,在普通電腦上訓練耗時1小時左右,把訓練結果把訓練好的網絡模型保存為“H5”文件。
4? 模型預測與實驗結果
已經訓練好的模型“H5”文件里包含了每層網絡節(jié)點的權重、偏置值等參數。預測時只需裝入模型然后輸入圖片,就可以獲取圖片分類的概率。在模型的訓練中,我們已經把圖片做了歸一化處理,即把所有圖片都縮放為50×50的三通道圖片,所以在接下來的分類預測中也要把待預測的圖片做相同的處理。
使用Keras深度學習框架訓練出來的模型可以通過load_model()方法讀取模型參數及predict()方法按前向傳播完成預測。其返回值是表示測試圖片屬于每一個類別的概率。
某個標簽對應概率值越大說明預測結果為某個類別的可能性越大,圖5、圖6、圖7、圖8分別網球、羽毛球、藏獒、哈士奇的預測結果。
從測試結果來看,模型的準確率在90%以上,可見模型預測能力較強。為了訓練出更好的模型,可以多增加幾次卷積操作,這樣會增加更多非線性因素,模型表達能力更強[6]。不過這也意味著神經網絡的深度會加深,訓練耗時也會增加。
5? 結? 論
采用網絡爬蟲技術根據關鍵字自動收集圖片數據集提高了制作數據集的效率。根據圖片分類的需要搭建了一個具有2個卷積層和2個池化層的卷積神經網絡模型,在處理的圖片分類數目不大時,網絡結構基本可以通用。通過輸入圖片和輸出類別的歸一化處理,本模型預測的準確率可達90%以上。
參考文獻:
[1] 楊定中,趙剛,王泰.網絡爬蟲在Web信息搜索與數據挖掘中應用 [J].計算機工程與設計,2009,30(24):5658-5662.
[2] 李彥冬,郝宗波,雷航.卷積神經網絡研究綜述 [J].計算機應用,2016,36(9):2508-2515+2565.
[3] 田娟,李英祥,李彤巖.激活函數在卷積神經網絡中的對比研究 [J].計算機系統(tǒng)應用,2018,27(7):43-49.
[4] 張鈴,張鈸,吳福朝.對圖形識別具有平移、旋轉、伸縮不變性的神經網絡 [J].計算機學報,1998,21(2):127-136.
[5] 江彤彤,成金勇,鹿文鵬.基于卷積神經網絡多層特征提取的目標識別 [J].計算機系統(tǒng)應用,2017,26(12):64-70.
[6] 黃文堅,唐源.TensorFlow實戰(zhàn) [M].北京:電子工業(yè)出版社,2017(2):18-20.
作者簡介:陳磊(1996.07-),男,漢族,廣東湛江人,本
科,工學學士,研究方向:計算機應用技術;李鶴喜(1961.11-),男,漢族,遼寧昌圖人,教授,博士,研究方向:人工智能與機器視覺。