摘要:網(wǎng)絡(luò)的爆炸式發(fā)展產(chǎn)生了海量的圖像,圖像標(biāo)簽的錯(cuò)誤和缺失比較常見(jiàn),圖像分類(lèi)研究很有必要。CNN池化能夠提取到輸入矩陣的重要特征,降低數(shù)據(jù)的維度。進(jìn)化策略是模仿生物“優(yōu)勝劣汰”進(jìn)化方式的一種啟發(fā)式算法,能快速找到問(wèn)題的解。本文基于CNN池化提取一組有正確標(biāo)簽的圖像的特征,搭建層數(shù)為3的神經(jīng)網(wǎng)絡(luò),進(jìn)化策略?xún)?yōu)化初始權(quán)重,通過(guò)訓(xùn)練集訓(xùn)練分類(lèi)模型,通過(guò)測(cè)試集來(lái)驗(yàn)證模型的優(yōu)劣,并使最終的模型實(shí)現(xiàn)對(duì)未知類(lèi)別圖像的高效分類(lèi)。實(shí)例驗(yàn)證階段收集10類(lèi)100張犬類(lèi)圖片,按照各研發(fā)步驟進(jìn)行實(shí)驗(yàn),算法結(jié)果驗(yàn)證了進(jìn)化策略?xún)?yōu)化權(quán)重的必要及神經(jīng)網(wǎng)絡(luò)模型的高效。
關(guān)鍵詞:CNN池化;進(jìn)化策略;神經(jīng)網(wǎng)絡(luò);圖像分類(lèi)
【Abstract】Theexplosivedevelopmentofthenetworkhasproducedalargenumberofimages,andtheerrorsandmissingofimagelabelsaremorecommon,andtheresearchonimageclassificationisnecessary.CNNpoolingcanextractimportantfeaturesoftheinputmatrixandreducethedimensionalityofthedata.Evolutionarystrategyisaheuristicalgorithmthatimitatestheevolutionarymethodof"survivalofthefittest"ofbiology,whichcanquicklyfindthesolutionoftheproblem.BasedonCNNpooling,thepaperextractsthefeaturesofasetofimageswithcorrectlabels,buildsaneuralnetworkwiththreelayers,optimizestheinitialweightsbyevolutionarystrategy,trainstheclassificationmodelthroughthetrainingset,andverifiestheprosandconsofthemodelthroughthetestset.Thefinalmodelrealizestheefficientclassificationofunknowncategoryimages.Intheinstanceverificationstage,100dogpicturesof10categoriesarecollected,andtheexperimentiscarriedoutaccordingtotheabovesteps.Thealgorithmresultsverifythenecessityoftheevolutionstrategytooptimizetheweightandtheefficiencyoftheneuralnetworkmodel.
【Keywords】CNNpooling;evolutionarystrategy;neuralnetwork;imageclassification
作者簡(jiǎn)介:高滔(1994-),男,碩士研究生,主要研究方向:車(chē)間調(diào)度、智能算法。
0引言
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,在對(duì)互聯(lián)網(wǎng)的使用中也隨即產(chǎn)生了海量的圖像。目前網(wǎng)頁(yè)上的很多圖像都沒(méi)有或沒(méi)有正確標(biāo)簽,并在缺乏先驗(yàn)知識(shí)的情況下,對(duì)圖像的分類(lèi)進(jìn)行識(shí)別也仍具有一定難度。很多時(shí)候各關(guān)鍵詞也不能鏈接到正確的圖像,即會(huì)帶來(lái)一定誤導(dǎo),所以良好的圖像分類(lèi)意義重大。
人工神經(jīng)元網(wǎng)絡(luò)(ArtificialNeuralNetwork,ANN)是模擬生物神經(jīng)網(wǎng)絡(luò),由若干個(gè)神經(jīng)網(wǎng)絡(luò)組成的動(dòng)態(tài)系統(tǒng)。其中,里程碑式的成就即是由Rosenblatt提出的單層感知機(jī)模型,Rumelhart等人[1]則提出了誤差訓(xùn)練傳播算法的多層前饋反向傳播網(wǎng)絡(luò)BP網(wǎng)絡(luò),Hinton等人[2]又在《Science》發(fā)文剖析了多隱藏層的優(yōu)點(diǎn),至此深度學(xué)習(xí)的提出就使得神經(jīng)網(wǎng)絡(luò)的研究逐漸成為熱點(diǎn)。在上世紀(jì)末,已有人開(kāi)始從事卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetwork,CNN)方面的相關(guān)研究,也取得了一些成果,但很難拓展,直到2012年大規(guī)模視覺(jué)識(shí)別挑戰(zhàn)競(jìng)賽CNN取得最好的效果,由此才吸引大量關(guān)注[3]。進(jìn)化策略是由德國(guó)Rechenberg和Schwefe模擬生物進(jìn)化的方式提出的算法,與遺傳算法不同的是其存在外形參數(shù),并認(rèn)為基因改變無(wú)法改變結(jié)果的分布[4]。
現(xiàn)有的分類(lèi)技術(shù)大多屬于監(jiān)督學(xué)習(xí),需要大量標(biāo)簽數(shù)據(jù)訓(xùn)練模型[5]。零樣本分類(lèi)是一種跨模態(tài)學(xué)習(xí),當(dāng)前的熱門(mén)研究領(lǐng)域之一,其在應(yīng)用初期的圖像分類(lèi)任務(wù)現(xiàn)已擴(kuò)展到了其他方面[6-7]。卷積神經(jīng)網(wǎng)絡(luò)在圖像分類(lèi)的應(yīng)用是當(dāng)前的主流,取得了眾多可觀成果[8-10],但在一些領(lǐng)域也受到一些挑戰(zhàn),ResNet-50網(wǎng)絡(luò)中的Softmax分類(lèi)器不能夠很好地區(qū)分提取到的特征[11-12]。目前,卷積神經(jīng)網(wǎng)絡(luò)對(duì)圖像分類(lèi)的研究,經(jīng)常用到的圖像去噪方法、也就是本文選用的NL-means算法[13],Softmax-Loss在單類(lèi)別分類(lèi)問(wèn)題中的應(yīng)用要更多些[14-15]。
綜上可知,神經(jīng)網(wǎng)絡(luò)在圖像分類(lèi)的研究較多,研究成果相當(dāng)豐富。但大多數(shù)都是在特定情況下集中在分類(lèi)模型的選擇和參數(shù)的優(yōu)化上,重點(diǎn)就是算法層面的改進(jìn)?;诖?,本文應(yīng)用CNN的池化提取特征,進(jìn)化策略?xún)?yōu)化初始權(quán)重,搭建相關(guān)神經(jīng)網(wǎng)絡(luò)模型并進(jìn)行訓(xùn)練,最終在具體的實(shí)例中驗(yàn)證了模型的效率。
1研究方法
1.1池化
池化類(lèi)似于過(guò)濾,用過(guò)濾得到輸出代替輸入(本文中的輸入、輸出皆是二維矩陣)。相關(guān)參數(shù)有輸入x、核kernel、輸出y、Padding加零、X寬高分別是WX、WH,核的參數(shù)有寬W、高H、步長(zhǎng)stride,其寬高分別是S_width,S_height。池化一般有3種:MaxPooling、MinPooling、MeanPooling,分別表示最大、最小、均值池化。池化的流程步驟可表述為:
對(duì)輸入X進(jìn)行加零(Padding=1,X外部加一圈零),從左到右,從上到下依次用核去掃描X,步長(zhǎng)stride控制每次移動(dòng)的距離,stride有2個(gè)參數(shù),分別控制右移和下移的幅度,核覆蓋超過(guò)X邊界的部分補(bǔ)零,依次對(duì)核覆蓋的區(qū)域取最大值、最小值或均值組成輸出y。池化的示例如圖1所示。由圖1可知,核長(zhǎng)寬都是2,步長(zhǎng)的2個(gè)參數(shù)都是2。
1.3神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)也對(duì)應(yīng)著輸入X,輸出Y,不同的是其引入權(quán)重W、偏置b和激活函數(shù)F(x),激活函數(shù)有sigmoid(x),softmax(x),relu(x)等等。
按學(xué)習(xí)方式,神經(jīng)網(wǎng)絡(luò)可分為監(jiān)督式學(xué)習(xí)和非監(jiān)督式學(xué)習(xí),兩者間的區(qū)別是有無(wú)標(biāo)簽(目標(biāo)值)。對(duì)于分類(lèi)問(wèn)題,常用的方法是監(jiān)督式學(xué)習(xí)。其大致步驟就是:初始化W,b,計(jì)算模型輸出Y,與標(biāo)簽t進(jìn)行比較,通過(guò)彼此間的差異來(lái)調(diào)整W和b,并引入學(xué)習(xí)率LR表示調(diào)整幅度的大小,最終達(dá)到訓(xùn)練模型的效果。通常,損失函數(shù)loss(x)可表示兩值間差異。研究中,常見(jiàn)的損失函數(shù)有均方差,交叉熵,常用的算法是梯度反向傳播算法。下面就本文用到的函數(shù)及模型給出對(duì)應(yīng)的數(shù)學(xué)表示:
2實(shí)驗(yàn)及結(jié)果分析
2.1數(shù)據(jù)收集及處理
本文收集了10種犬的圖片,分別是:藏獒、哈士奇、柴犬、貴賓犬、杜賓犬、吉娃娃、邊境牧羊犬、薩摩耶犬,英國(guó)斗牛犬,金毛尋回犬。每種10張,共100張圖片。每張圖都是jpg格式,并對(duì)每張圖的像素進(jìn)行調(diào)整,均調(diào)整為121×121。對(duì)部分圖片處理后的縮影見(jiàn)圖2。
對(duì)于數(shù)據(jù)處理,研究中擬依次展開(kāi)的步驟詳情見(jiàn)如下:
(1)通過(guò)python的圖像處理模塊把每張圖像轉(zhuǎn)為灰度圖,并通過(guò)自定義函數(shù)把每張圖讀為二維矩陣,因?yàn)榫仃嚿系闹翟?~255之間,每個(gè)矩陣都除255,做歸一化處理。返回矩陣的行和列,對(duì)應(yīng)圖像的width,height,分別是121,121?,F(xiàn)有100個(gè)121×121的矩陣。
(2)對(duì)這100個(gè)矩陣做maxpool池化處理,核的W=H=3,步長(zhǎng),S_width=3,S_height=3,padding=0,由式(2),式(3)知處理后的矩陣行列C=R=[(121-3)/3]+1=40,變?yōu)?00個(gè)40×40的矩陣。其池化的工具是tensorflow模塊里面的相關(guān)函數(shù)。
(3)把矩陣變?yōu)?00個(gè)1600×1的矩陣并豎直合并,變換為100×1600×1的矩陣,降維為100×1600,其矩陣的每一行就表示一張圖片。對(duì)矩陣的每一行的標(biāo)簽進(jìn)行編碼,采用獨(dú)熱編碼(One-HotEncoding)。編碼完成后與前一個(gè)矩陣合并,矩陣變?yōu)?00×1610,保存在Excel中。
(4)復(fù)制一份數(shù)據(jù),與之前數(shù)據(jù)合并,變?yōu)?00×1600,并隨機(jī)打亂矩陣的行。讀取前面的160行作為訓(xùn)練集,用作模型的訓(xùn)練,讀取最后40行用作為測(cè)試集,用作模型的測(cè)試。
處理后的部分?jǐn)?shù)據(jù)縮影見(jiàn)圖3。
2.2模型搭建
本文搭建的是3層神經(jīng)網(wǎng)絡(luò),第一層是輸出層,第二層是隱藏層,激活函數(shù)是sigmoid,第三層輸出層,激活函數(shù)是softmax。隱藏層的神經(jīng)元數(shù)采用Masters(1994),即:
NHN≈(NINP*NOUT)1/2.(10)
輸出神經(jīng)元1600,輸出神經(jīng)元10(10類(lèi)),隱藏神經(jīng)元數(shù)NHN≈1600×10≈126。
隱藏層和輸出層的權(quán)重矩陣的值都從標(biāo)準(zhǔn)正態(tài)分布中生成,初始b都為0.1。
其中,隱藏層矩陣是1600×126,輸出層矩陣是126×10。損失函數(shù)采用交叉熵函數(shù)。學(xué)習(xí)率設(shè)為0.1。
2.3進(jìn)化策略生成初始權(quán)重
初始權(quán)重相當(dāng)于尋找滿(mǎn)意解的起點(diǎn),好的初始權(quán)重能使算法收斂更快,運(yùn)用進(jìn)化策略對(duì)初始權(quán)重進(jìn)行尋優(yōu),算法步驟可簡(jiǎn)化為2步:
(1)隨機(jī)初始化多個(gè)輸出層矩陣權(quán)重當(dāng)作DNA,也就是問(wèn)題的多個(gè)解,隨機(jī)初始化多個(gè)變異強(qiáng)度與之對(duì)應(yīng)。
(2)計(jì)算多個(gè)解下的輸出,因?yàn)檫m應(yīng)度函數(shù)(目標(biāo)函數(shù))是最值函數(shù),把交叉熵當(dāng)作適應(yīng)度函數(shù)。對(duì)初始矩陣進(jìn)行進(jìn)化策略迭代,尋找最優(yōu)的權(quán)重矩陣。
初始的500個(gè)權(quán)重矩陣和對(duì)應(yīng)的變異強(qiáng)度矩陣都是從標(biāo)準(zhǔn)正態(tài)函數(shù)中生成。本文初始化500個(gè)DNA,即500個(gè)權(quán)重矩陣,每次產(chǎn)生200個(gè)子代,種群變?yōu)?00個(gè)DNA,每次淘汰交叉熵大的200個(gè)DNA,經(jīng)過(guò)多次迭代后種群還是500個(gè)DNA,最終輸出交叉熵最小的權(quán)重矩陣。
2.4算法測(cè)試
保持其他神經(jīng)網(wǎng)絡(luò)的各參數(shù)不變,參見(jiàn)2.2節(jié)的模型搭建,迭代次數(shù)都設(shè)為1000次,分別輸出不加入進(jìn)化策略(隨機(jī)輸出層權(quán)重矩陣)和加入進(jìn)化策略(進(jìn)化策略找到較好的初始矩陣)的結(jié)果。該結(jié)果表示每次通過(guò)模型迭代去計(jì)算測(cè)試集的正確率。結(jié)果正確的依據(jù)就是每次測(cè)試集的輸出與測(cè)試標(biāo)簽在對(duì)應(yīng)位置處的誤差在較小的范圍內(nèi),否則認(rèn)為不正確。研究得到的實(shí)驗(yàn)結(jié)果如圖4~圖6所示。3個(gè)結(jié)果都是多次實(shí)驗(yàn)得到較為平均的結(jié)果。其中,圖6是學(xué)習(xí)率LR=0.3的未加入進(jìn)化策略的仿真結(jié)果。
由圖4~圖6可以看出,考慮CNN池化提取圖像特征正確率都較高。結(jié)果中,加入進(jìn)化策略的正確率95%,未加入進(jìn)化策略正確率為85%,學(xué)習(xí)率調(diào)整為0.3時(shí)正確率在迭代次數(shù)800次左右就達(dá)到100%。
3結(jié)束語(yǔ)
經(jīng)由本文研究可以看出,基于CNN池化提取特征的訓(xùn)練模型都取得較好的結(jié)果,加入進(jìn)化策略對(duì)初始權(quán)重選擇的結(jié)果則優(yōu)于未加入的。這就說(shuō)明,考慮CNN池化和進(jìn)行策略在一般神經(jīng)網(wǎng)絡(luò)是可行的,其效果也較好。從圖6也可以看出,調(diào)整學(xué)習(xí)率能使算法快速收斂,同時(shí)表明該問(wèn)題對(duì)學(xué)習(xí)率也比較敏感。
本文也有一些不足:數(shù)據(jù)量小,搭建的神經(jīng)網(wǎng)絡(luò)層數(shù)并不深,若面臨更復(fù)雜的分類(lèi)問(wèn)題,該系統(tǒng)可能無(wú)法通過(guò)訓(xùn)練得到較好的模型。為此,下一步的研究展望是:增大數(shù)據(jù)量,使模型具有普遍性;效果不好時(shí)加大神經(jīng)網(wǎng)絡(luò)層數(shù),啟用更優(yōu)秀的激活函數(shù);考慮對(duì)其他參數(shù)也同步進(jìn)行調(diào)整,而不能僅僅局限在初始權(quán)重上。
參考文獻(xiàn)
[1]RUMELHARTDE,HINTONGE,WILLIAMSRJ.Learningrepresentationsbyback-propagatingerrors[J].Nature,1986,323(6088):533-536.
[2]HINTONGE,SALAKHUTDINOVRR.Reducingthedimensionalityofdatawithneuralnetworks[J].Science,2006,31(5786):3504-3507.
[3]周飛燕,金林鵬,董軍.卷積神經(jīng)網(wǎng)絡(luò)研究綜述[J].計(jì)算機(jī)學(xué)報(bào),2017,40(6):1229-1251.
[4]馮春時(shí).群智能優(yōu)化算法及其應(yīng)用[D].合肥:中國(guó)科學(xué)技術(shù)大學(xué),2009.
[5]LECUNY,BENGIOY,HINTONG.Deeplearning[J].Nature,2015,521:436-444.
[6]JIZhong,YUYunlong,PANGYanwei,etal.Manifoldregularizedcross-modalembeddingforzero-shotlearning[J].InformationSciences,2017,378:48-58.
[7]XUBaohan,F(xiàn)UYanwei,JIANGYugang,etal.Heterogeneousknowledgetransferinvideoemotionrecognition,attributionandsummarization[J].IEEETransactionsonAffectiveComputing,2018,9:255-270.
[8]趙新秋,賀海龍,楊冬冬,等.基于改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)在圖片分類(lèi)中的應(yīng)用[J].高技術(shù)通訊,2018,28(11):930-936.
[9]閆河,王鵬,董鶯艷,等.改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)圖片分類(lèi)識(shí)別方法[J].計(jì)算機(jī)應(yīng)用與軟件,2018,35(12):193-198.
[10]常亮,鄧小明,周明全,等.圖像理解中的卷積神經(jīng)網(wǎng)絡(luò)[J].自動(dòng)化學(xué)報(bào),2016,42(9):1300-1312.
[11]程德強(qiáng),陳亮亮,蔡迎春,等.邊緣融合的多字典超分辨圖像重建算法[J].煤炭學(xué)報(bào),2018,43(7):2084-2090.
[12]唐文杰,朱家明,徐麗.基于NL-Means的雙水平集腦部MR圖像分割算法[J].計(jì)算機(jī)科學(xué),2018,45(S2):256-258,277.
[13]張秀玲,周凱旋,魏其珺,等.多通道交叉融合的深度殘差網(wǎng)絡(luò)脫機(jī)手寫(xiě)漢字識(shí)別[J].小型微型計(jì)算機(jī)系統(tǒng),2019,40(10):2232-2235.
[14]常川.基于ResNet深度網(wǎng)絡(luò)的人類(lèi)蛋白質(zhì)圖譜圖像分類(lèi)方法研究[J].醫(yī)學(xué)信息學(xué)雜志,2019,40(7):45-49.
[15]王文成,蔣慧,喬倩,等.基于ResNet50網(wǎng)絡(luò)的十種魚(yú)類(lèi)圖像分類(lèi)識(shí)別研究[J].農(nóng)村經(jīng)濟(jì)與科技,2019,30(19):60-62.