本發(fā)明涉及圖像分類(lèi)技術(shù),具體涉及一種分布式圖像分類(lèi)方法。
背景技術(shù):
一、圖像分類(lèi)方面
圖像分類(lèi)技術(shù)利用計(jì)算機(jī)對(duì)圖像進(jìn)行自動(dòng)化分析與分類(lèi),是目標(biāo)檢測(cè)與識(shí)別、圖像檢索等領(lǐng)域的基礎(chǔ)。圖像分類(lèi)一般由圖像特征的提取和基于特征的分類(lèi)兩個(gè)方面組成。
在特征提取方面,目前大多關(guān)注圖像的局部特征,使用尺度不變特征變換(Scale Invariant Feature Transform,SIFT)、加速穩(wěn)健特征(Speeded Up Robust Features,SURF)等算法提取出局部特征向量。視覺(jué)詞袋(Bag of Visual Words,BoVW)模型在此基礎(chǔ)上更進(jìn)一步,將提取出的大量特征向量進(jìn)行聚類(lèi),生成視覺(jué)詞典,將圖像根據(jù)詞典映射成詞典單詞的直方圖形式,這樣既減少了特征向量的數(shù)量,也使圖像向量更具表達(dá)力。
在基于特征的分類(lèi)方面,目前多使用機(jī)器學(xué)習(xí)的方法進(jìn)行。主流的分類(lèi)器有支持向量機(jī)(Support Vector Machine,SVM)分類(lèi)器,它在解決小樣本、非線(xiàn)性以及高維分類(lèi)中表現(xiàn)出良好的性質(zhì)。另外如Adaboost分類(lèi)器,作為一種迭代算法,在每一輪中加入一個(gè)新的弱分類(lèi)器,直到達(dá)到某個(gè)預(yù)定的足夠小的錯(cuò)誤率。但是,當(dāng)待處理的圖像規(guī)模較大時(shí),其海量樣本、高維向量的特點(diǎn)對(duì)這些傳統(tǒng)分類(lèi)算法所依賴(lài)的文件系統(tǒng)和計(jì)算架構(gòu)提出了很大的挑戰(zhàn)。隨機(jī)森林算法將隨機(jī)理論引入決策樹(shù)模型,利用若干決策樹(shù)建立組合分類(lèi)器,為圖像分類(lèi)提供了新的思路,是生物信息學(xué)、數(shù)據(jù)挖掘領(lǐng)域熱門(mén)方向之一。然而,當(dāng)數(shù)據(jù)量特別大時(shí),隨機(jī)森林分類(lèi)器也面臨著分類(lèi)時(shí)耗過(guò)長(zhǎng)的問(wèn)題。
二、云計(jì)算平臺(tái)方面
Hadoop是當(dāng)前主流的開(kāi)源分布式云計(jì)算平臺(tái),常用于Web訪(fǎng)問(wèn)日志分析、反向索引構(gòu)建、文檔聚類(lèi)、基于統(tǒng)計(jì)的機(jī)器翻譯和生成整個(gè)搜索引擎的索引等大規(guī)模數(shù)據(jù)處理工作。Hadoop平臺(tái)由Apache基金會(huì)開(kāi)發(fā),很多國(guó)內(nèi)外知名的互聯(lián)網(wǎng)公司基于Hadoop架構(gòu)布置內(nèi)部應(yīng)用,比如淘寶、eBay和百度等。
也有一些公司對(duì)設(shè)計(jì)大數(shù)據(jù)處理平臺(tái),提供完整的商業(yè)大數(shù)據(jù)解決方案,如微軟的Azure,中國(guó)移動(dòng)的BigCloude等。借助大數(shù)據(jù)平臺(tái)強(qiáng)大的分布式計(jì)算能力,海量數(shù)據(jù)的存儲(chǔ)和計(jì)算得以更好地實(shí)現(xiàn)。因此,如何結(jié)合大數(shù)據(jù)處理平臺(tái),移植海量圖像的處理過(guò)程,是一個(gè)很有意義的課題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是,提供一種適于Hadoop平臺(tái)的分布式圖像分類(lèi)方法,該方法能夠充分利用Hadoop平臺(tái)的分布式計(jì)算能力,克服大規(guī)模圖像分類(lèi)中時(shí)耗過(guò)長(zhǎng)、存儲(chǔ)及文件系統(tǒng)瓶頸的問(wèn)題,提高大規(guī)模圖像分類(lèi)的效率。本發(fā)明的技術(shù)方案如下。
一種基于Hadoop平臺(tái)的分布式圖像分類(lèi)算法,包括以下幾個(gè)技術(shù)步驟:
步驟1.提取圖像Sift特征:
輸入多幅訓(xùn)練圖像,設(shè)計(jì)在Hadoop平臺(tái)上并行提取各個(gè)訓(xùn)練圖像SIFT特征,生成訓(xùn)練圖像的SIFT特征庫(kù);
步驟2.利用Sift特征生成BoVW視覺(jué)詞典:
在Hadoop平臺(tái)上,將sift特征庫(kù)中的sift向量進(jìn)行分布式聚類(lèi),得到若干視覺(jué)單詞,作為BoVW模型的詞典;
步驟3.提取BoVW模型的詞典后,將經(jīng)過(guò)特征提取的訓(xùn)練圖像與此詞典對(duì)照,把訓(xùn)練圖像表示為基于詞典的直方圖向量形式;
步驟4.將步驟3的訓(xùn)練圖像的直方圖向量作為隨機(jī)森林分類(lèi)器的訓(xùn)練輸入,在Hadoop上設(shè)計(jì)分類(lèi)器的并行化生成;
步驟5.針對(duì)需要分類(lèi)的測(cè)試圖像,將其依次進(jìn)行特征提取、直方圖向量化操作后,輸入步驟4所得的分類(lèi)器,在Hadoop平臺(tái)上進(jìn)行并行分類(lèi)。
本發(fā)明針對(duì)大規(guī)模圖像分類(lèi)運(yùn)算耗時(shí)過(guò)多、文件系統(tǒng)及存儲(chǔ)架構(gòu)落后的問(wèn)題,提出一種基于Hadoop平臺(tái)的圖像分類(lèi)方法。實(shí)驗(yàn)顯示,本發(fā)明不僅具有較好的分類(lèi)準(zhǔn)確度,同時(shí)有效減少分類(lèi)時(shí)間,可以良好地應(yīng)用于大規(guī)模圖像分類(lèi)場(chǎng)景。
附圖說(shuō)明
圖1是Hadoop平臺(tái)的結(jié)構(gòu)圖
圖2是本發(fā)明的流程圖
圖3是BoVW模型的原理圖
具體實(shí)施方式
本發(fā)明將圖像的分類(lèi)過(guò)程分為圖像特征的提取和隨機(jī)森林分類(lèi)器的訓(xùn)練兩個(gè)階段,在每個(gè)階段進(jìn)行并行化設(shè)計(jì)與編程,使得圖像處理的整體過(guò)程都不涉及對(duì)全部圖像數(shù)據(jù)的操作;另外,在第一個(gè)階段引入BoVW模型,依據(jù)模型對(duì)圖像進(jìn)行簡(jiǎn)化表示,提高圖像分類(lèi)的準(zhǔn)確性。
本發(fā)明選取Caltech-101經(jīng)典圖像庫(kù)進(jìn)行實(shí)驗(yàn),隨機(jī)選取brain、bonsai、leopards等八類(lèi)圖像進(jìn)行分類(lèi)。在每類(lèi)圖像中,分別選取30幅圖像作為訓(xùn)練圖像,20幅作為測(cè)試圖像,每項(xiàng)實(shí)驗(yàn)均進(jìn)行10次。下面對(duì)本發(fā)明做進(jìn)一步說(shuō)明。
(1)圖像特征的提取
Sift算法提取的Sift描述子對(duì)圖像尺度變換、旋轉(zhuǎn)、亮度變化等保持不變性,對(duì)視角變化、仿射變換也保持一定的穩(wěn)定性。在Hadoop上進(jìn)行大量圖像的Sift特征提取,并行化步驟如下:
步驟1 將訓(xùn)練圖像數(shù)據(jù)集{img(x,y)}輸入Hadoop集群,塊式存儲(chǔ)在各從節(jié)點(diǎn)上。由于圖像自身分立性,塊內(nèi)每個(gè)圖像img(x,y)作為一個(gè)單獨(dú)的分片。
步驟2 Map任務(wù)節(jié)點(diǎn)輸入鍵/值對(duì)<Key,Value>,其中Key是img(x,y)的ID,Value是圖像數(shù)據(jù)img(x,y)。各map任務(wù)對(duì)圖像進(jìn)行Sift特征提取,每張圖像均得到特征集合{X1,X2,...},Xi內(nèi)部符合<(xi,yi),Xn(xi,yi)>形式,其中(xi,yi)是特征點(diǎn)的位置坐標(biāo),Xn(xi,yi)是該處128維的Sift特征向量。
步驟3 各Map節(jié)點(diǎn)產(chǎn)生的Sift特征分布式地存儲(chǔ)在HDFS集群上,無(wú)需進(jìn)行Reduce過(guò)程,因此將Reduce函數(shù)數(shù)目設(shè)置為0。
(2)使用BoVW模型表示圖像
直接對(duì)(1)中提取的大量圖像Sift向量實(shí)施分類(lèi)具有數(shù)據(jù)量大、計(jì)算復(fù)雜的問(wèn)題。引入BoVW模型對(duì)圖像進(jìn)行簡(jiǎn)化表示,可以減少數(shù)據(jù)量,獲得更好的分類(lèi)效果。BoVW模型在大量Sift特征的基礎(chǔ)上,產(chǎn)生有限個(gè)視覺(jué)單詞(Visual Words,VW)組成視覺(jué)詞典,然后利用視覺(jué)詞典將圖像表示成維度等同于詞典大小的向量。其中的聚類(lèi)過(guò)程使用K-means算法,將向量空間中的n個(gè)特征點(diǎn)根據(jù)類(lèi)內(nèi)方差和最小的原則分為指定的K類(lèi),如公式(1)所示。
式中:Ci表示第i個(gè)聚類(lèi)類(lèi)別,中心為μi,xi為該類(lèi)別的數(shù)據(jù)點(diǎn)。
本發(fā)明使用Apache Machout開(kāi)源機(jī)器學(xué)習(xí)庫(kù)實(shí)施K-means算法,首先轉(zhuǎn)化(2)中產(chǎn)生的大量Sift特征為sequenceFile格式,默認(rèn)最大迭代次數(shù)為10,設(shè)定聚類(lèi)中心數(shù)為200,利用org.apache.mahout.clustering.kmeans下的KMeansMapper、KMeansCombiner、KMeansReducer、KMeansDriver產(chǎn)生聚類(lèi)中心,所得聚類(lèi)中心存儲(chǔ)在HDFS上,作為BoVW模型的詞典使用。
得到大小為200的詞典后,根據(jù)詞典單詞與圖像各Sift向量的歐氏距離,將Sift向量映射為距其較近的視覺(jué)單詞。統(tǒng)計(jì)視覺(jué)單詞的詞頻,所得頻次直方圖即為基于BoVW的200維的圖像向量
(3)隨機(jī)森林分類(lèi)器訓(xùn)練
隨機(jī)森林由多個(gè)決策樹(shù)采用隨機(jī)的方式建立,將多個(gè)弱分類(lèi)器組合成為一個(gè)高精度的分類(lèi)器。森林中的每一棵決策樹(shù)均由根節(jié)點(diǎn)、分支節(jié)點(diǎn)、葉節(jié)點(diǎn)組成。節(jié)點(diǎn)分裂時(shí),從訓(xùn)練樣本的備選屬性集中隨機(jī)選擇若干屬性,計(jì)算各屬性的基尼不純度,將不純度下降最大的屬性作為該節(jié)點(diǎn)分裂屬性?;岵患兌榷x為:
式中,pi在是類(lèi)別i在節(jié)點(diǎn)處的占比。經(jīng)過(guò)分裂后,設(shè)原集合被分為L(zhǎng)個(gè)部分,則分裂后的平均基尼系數(shù)為:
式中,L是子節(jié)點(diǎn)的個(gè)數(shù),Ti是子節(jié)點(diǎn)i處樣本的個(gè)數(shù),Gini(i)為子節(jié)點(diǎn)i的基尼不純度。
根據(jù)(1)(2)得到的圖像Sift向量及視覺(jué)詞典,可將圖像表示為200維的向量,將該向量作為隨機(jī)森林的訓(xùn)練數(shù)據(jù),在Hadoop上分布式地生成隨機(jī)森林,并行化步驟如下:
步驟1設(shè)隨機(jī)森林中樹(shù)的數(shù)目為T(mén)=200,在原始訓(xùn)練樣本集上,使用Bootstrap方法得到T個(gè)訓(xùn)練樣本子集{S1,S2...S200},作為每棵樹(shù)的輸入。
步驟2啟動(dòng)與森林大小相等的T個(gè)Map任務(wù),輸入鍵值對(duì)<Key,Value>,Key是森林標(biāo)識(shí),Value是訓(xùn)練子集Si。Map函數(shù)在各節(jié)點(diǎn)處計(jì)算最佳分裂屬性,依次產(chǎn)生左右分支。輸出鍵值對(duì)<Key,Value>,Key是森林標(biāo)識(shí),Value存儲(chǔ)每棵樹(shù)的信息DTi。
步驟3Map任務(wù)全部完成后,將結(jié)果輸入Reduce任務(wù),Reduce任務(wù)整合所有樹(shù)的信息,輸出<Key,Value>,Key為森林標(biāo)識(shí),Value是隨機(jī)森林全體,表示為{DT1,DT2...DT200}。
(4)利用隨機(jī)森林進(jìn)行分類(lèi)測(cè)試
測(cè)試圖像通過(guò)Sift特征提取、基于BoVW表示圖像、隨機(jī)森林分類(lèi)三個(gè)環(huán)節(jié),最后由隨機(jī)森林分類(lèi)器投票產(chǎn)生分類(lèi)結(jié)果。
分布式實(shí)驗(yàn)環(huán)境是由4臺(tái)DellR730服務(wù)器組成的Hadoop集群,其中1臺(tái)服務(wù)器為NameNode節(jié)點(diǎn),其他3臺(tái)為DataNode節(jié)點(diǎn)。四臺(tái)服務(wù)器的操作系統(tǒng)均采用Ubuntu14.04,Hadoop版本為CDH 5.5.0。測(cè)試圖像選取cal-101圖像庫(kù)中brain、bonsai、leopards等8類(lèi)圖像進(jìn)行,在各類(lèi)圖像中選取20張作為測(cè)試圖像。
實(shí)驗(yàn)比較了本方法的分布式和單機(jī)形式在運(yùn)行時(shí)間上的性能:在BoVW詞典構(gòu)建、隨機(jī)森林分類(lèi)器訓(xùn)練及測(cè)試圖像分類(lèi)三個(gè)子過(guò)程上,分布式集群的執(zhí)行時(shí)間較單機(jī)均有明顯縮短,平均加速比約為2.4。
另外,實(shí)驗(yàn)顯示,建樹(shù)數(shù)目不同對(duì)本方法的分類(lèi)性能的影響,在建樹(shù)個(gè)數(shù)過(guò)少時(shí),分類(lèi)準(zhǔn)確率隨著建樹(shù)個(gè)數(shù)增加而增大;當(dāng)建樹(shù)個(gè)數(shù)達(dá)到200時(shí),分類(lèi)器的性能趨于穩(wěn)定,準(zhǔn)確度接近75%。
綜上所示,本發(fā)明可以獲得良好的分類(lèi)效果,同時(shí)充分利用Hadoop環(huán)境在分布式存儲(chǔ)和并行運(yùn)算上的優(yōu)勢(shì),顯著減少分類(lèi)的時(shí)間開(kāi)銷(xiāo)。