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