陳立潮,張倩茹,曹建芳,2+,潘理虎
(1.太原科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山西 太原 030024;2.忻州師范學(xué)院 計(jì)算機(jī)系,山西 忻州 034000)
目前,交通標(biāo)志的識別主要分為兩大類:一是采用傳統(tǒng)圖像識別方法,如方向梯度直方圖、隨機(jī)森林等,這類方法往往參數(shù)量大,且準(zhǔn)確率較低。二是采用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)進(jìn)行識別,但是CNN缺乏空間相對位置的分辨能力,Hinton等[1]提出了膠囊網(wǎng)絡(luò)(capsule network,CapsNet),并將其成功應(yīng)用于手寫數(shù)字識別領(lǐng)域,嘗試解決了CNN存在的問題。隨后文獻(xiàn)[2]設(shè)計(jì)了一種改進(jìn)體系的CapsNet,克服了CNN在分類時所需數(shù)據(jù)集量大及輸入轉(zhuǎn)換問題;文獻(xiàn)[3]將膠囊網(wǎng)絡(luò)應(yīng)用于交通標(biāo)志檢測,取得了不錯的識別精度。針對采集到的圖像效果不夠理想、障礙物遮擋的識別問題;文獻(xiàn)[4]使用機(jī)器學(xué)習(xí)組合算法通過分割目標(biāo)邊界對目標(biāo)進(jìn)行識別,但其存在分割效果不佳等情況;文獻(xiàn)[5]與文獻(xiàn)[6]分別對污損指紋和遮擋人臉進(jìn)行識別,均是CNN系列網(wǎng)絡(luò)的改進(jìn)。本文將CNN和CapsNet進(jìn)行了融合,提出了一種復(fù)合膠囊網(wǎng)絡(luò)的交通標(biāo)志識別方法,創(chuàng)建特定的交通標(biāo)志數(shù)據(jù)集,其中包含模糊等非正常形態(tài)的圖像;提升膠囊網(wǎng)絡(luò)的特征提取能力,并對動態(tài)路由算法的更新計(jì)算方式進(jìn)行優(yōu)化,提高了交通標(biāo)志圖像識別的準(zhǔn)確率。
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)在識別與數(shù)據(jù)集非常相似的圖像時,效果可以達(dá)到預(yù)期,但是當(dāng)圖像有一些旋轉(zhuǎn)、扭曲或者圖像中的元素相對位置發(fā)生改變時,CNN的識別效果往往不是很理想。這是因?yàn)镃NN中的池化(Pooling)操作丟失了很多的位置信息,使得模型缺乏空間表達(dá)能力,進(jìn)而使特征丟失位置的層級關(guān)系。膠囊網(wǎng)絡(luò)針對這一問題提出了新思路,網(wǎng)絡(luò)中每一個膠囊都是一個向量,向量中可以包含多個值,這樣一個膠囊就可以封裝多個特征。
膠囊網(wǎng)絡(luò)由卷積層、主膠囊層(primary capsule layer,PrimaryCaps)和數(shù)字膠囊層(digital capsule layer,DigitCaps)組成,其基本結(jié)構(gòu)如圖1所示。在卷積層使用9×9卷積核提取特征,接著主膠囊層進(jìn)行再卷積后把特征圖轉(zhuǎn)換成若干個向量,最后在數(shù)字膠囊層中,每一個膠囊代表一種分類類型,得到43個長度為16的輸出向量。
圖1 膠囊網(wǎng)絡(luò)基本結(jié)構(gòu)
用動態(tài)路由(dynamic routing)算法代替CNN中的池化操作,可以使模型捕獲更多的特征空間關(guān)系,尤其在部分與整體之間的關(guān)系表達(dá)上更為準(zhǔn)確。具體算法過程如圖2所示。
圖2 動態(tài)路由過程
復(fù)合膠囊網(wǎng)絡(luò)的基本結(jié)構(gòu)包括3個部分,首先對輸入圖像進(jìn)行雙通道的多尺度卷積核特征提?。黄浯卧谥髂z囊層加入組合后的雙通道池化和Batch Normalization(BN)操作,更加有利于特征學(xué)習(xí),提高模型的收斂速度;然后使用修正動態(tài)路由算法迭代更新參數(shù),輸出最終的識別結(jié)果。具體結(jié)構(gòu)如圖3所示。
圖3 復(fù)合膠囊網(wǎng)絡(luò)整體結(jié)構(gòu)
圖3中的左側(cè)第一個虛線框?yàn)槎喑叨染矸e核特征提取結(jié)構(gòu)。path A的路徑上采用1×1和3×3兩種不同大小的卷積核交替組合,path B上采用2×2的最大池化(Max-pooling)和1×1卷積進(jìn)行組合。把輸出的兩通道特征圖以1∶1的方式進(jìn)行融合,將融合的CON層特征圖送入Conv3層進(jìn)行卷積,最終得到7×7大小的特征圖。
圖3中的第二個虛線框?yàn)橹髂z囊層結(jié)構(gòu)。用32個3×3大小,步長為1的卷積核對上一層的卷積結(jié)果再次進(jìn)行卷積,然后轉(zhuǎn)換得到800個向量。其次使用組合后的雙通道池化方式,降低模型參數(shù)量。隨著網(wǎng)絡(luò)深度的增加,模型訓(xùn)練使得網(wǎng)絡(luò)參數(shù)不斷增大和改變,這里引入Batch Normalization操作,加快模型收斂速度。
圖3中的第三個虛線框?yàn)閿?shù)字膠囊層及輸出。動態(tài)路由算法會根據(jù)多個預(yù)測向量的結(jié)果,加權(quán)得到整體預(yù)測向量。衡量個體預(yù)測向量與整體預(yù)測向量之間的相似度使用的是余弦相似度。本文考慮預(yù)測向量集對整體預(yù)測向量的綜合作用,使用修正余弦相似度代替原bij值的更新計(jì)算方式。
在膠囊網(wǎng)絡(luò)中,卷積層的作用是對輸入圖像進(jìn)行基本的特征提取。原膠囊網(wǎng)絡(luò)的卷積層采用的是9×9卷積核在輸入圖像上提取特征,這樣會造成大量的重復(fù)操作,且對于小尺寸的圖像特征提取不夠充分。本文借鑒殘差網(wǎng)絡(luò)(residual network,ResNet)中的ResNet-50網(wǎng)絡(luò)結(jié)構(gòu)對于下采樣塊的改進(jìn)[7],引入多尺度的思想,將膠囊網(wǎng)絡(luò)卷積層中的9×9卷積核改為用1×1和3×3的卷積組合形式來實(shí)現(xiàn),使得改進(jìn)后的殘差卷積層(R-Conv)提取的特征更加豐富,同時降低部分參數(shù)量。1×1卷積操作通過降低通道數(shù),起到降維作用,這個操作可以使得模型的參數(shù)量大大減小,提高運(yùn)算速度,且網(wǎng)絡(luò)層數(shù)的增加有利于提高模型的特征表達(dá)能力。
在ResNet-50的第二模塊中,改進(jìn)的ResNet-D結(jié)構(gòu)分成path A和path B兩個通道,如圖4(b)結(jié)構(gòu)所示。path A通道上將28×28大小的輸入圖像依次做1×1,3×3和1×1的卷積操作,步長分別為1,2,1,得到14×14大小的特征圖。path B通道上將28×28大小的輸入圖像先做最大池化操作,池化大小為2×2,步長為2,其次用步長為1的2×2卷積核,對池化后的特征圖進(jìn)行卷積,得到14×14大小的特征圖。在path B通道上使用最大池化操作,這是因?yàn)樵诰W(wǎng)絡(luò)淺層特征提取時,使用最大池化方法可以提取到特征的紋理信息,即提取到的特征為局部更加“突出”的信息,以此可以減少無用信息對后續(xù)模型識別的干擾。R-Conv在ResNet-D結(jié)構(gòu)后增加一層適應(yīng)性卷積Conv3,卷積核的大小為2×2,步長為2,使得輸出的特征圖的維度為7×7,這里維度減小是減少模型計(jì)算量的關(guān)鍵,具體結(jié)構(gòu)如圖4所示。
圖4 兩種特征提取結(jié)構(gòu)
為驗(yàn)證ResNet-D特征提取結(jié)構(gòu)的效果,本文將path A和path B兩個通道融合成單通道結(jié)構(gòu),并與雙通道的R-Conv結(jié)構(gòu)進(jìn)行了對比實(shí)驗(yàn),且對參數(shù)做適應(yīng)性調(diào)整。在卷積神經(jīng)網(wǎng)絡(luò)中會使用Sigmoid、Relu等激活函數(shù),其中Sigmoid可以將輸入映射到0-1的區(qū)間內(nèi),但是其在趨向無窮大時,函數(shù)值變化很小,可能會出現(xiàn)梯度缺失的情況。本文在每層卷積操作后激活函數(shù)選取Relu,該函數(shù)有利于優(yōu)化,會使部分神經(jīng)元的輸出為0,整個過程的計(jì)算量較小,有助于網(wǎng)絡(luò)的收斂。
主膠囊層首先對上一層的殘差卷積層獲取到的特征再次進(jìn)行卷積操作,然后將這些數(shù)據(jù)連接起來形成低層膠囊向量。在第一步中使用卷積操作來降低特征維度,這個操作雖然會降低部分參數(shù)量,但是會沒有選擇性地減少有效特征。池化操作雖然會丟失部分位置信息,但是它對于有效信息的篩選和數(shù)據(jù)降維上有著不可替代的優(yōu)勢。最大池化把特征圖中最大像素值保留下來作為該區(qū)域池化后的值,其專注于局部“最重要”的像素,可以提取到更加有效的特征紋理信息。平均池化(Mean-pooling)把特征圖中像素平均值保留下來作為該區(qū)域池化后的值,可以保證信息的完整性。本文使用兩種池化組合后的雙通道方式對主膠囊層卷積后的特征進(jìn)行處理,池化大小分別為2,2。如圖5所示,加入雙通道池化操作后,第一,綜合特征圖的局部信息和全局信息,可以保留更多有用的特征;第二,組合后的池化操作實(shí)現(xiàn)降維,有效地降低了模型的參數(shù)量,解決了在數(shù)據(jù)集較大時,隨著訓(xùn)練次數(shù)的增加,訓(xùn)練時間越來越長的問題。
圖5 主膠囊層的改進(jìn)結(jié)構(gòu)
特征圖在經(jīng)過主膠囊層的第二步轉(zhuǎn)換后,添加Batch Normalization[8]操作。BN在最開始被提出時,針對激活輸入值隨著網(wǎng)絡(luò)模型的加深,其分布逐漸向區(qū)間的上下極靠近,這樣經(jīng)過層層的訓(xùn)練,就很容易會出現(xiàn)梯度消失的問題,使得網(wǎng)絡(luò)的收斂速度越來越慢。通過加入BN操作,可以使這些激活值穩(wěn)定在一個相對的范圍內(nèi),緩解梯度消失的影響,從而可以加快模型的收斂速度,提高識別精度。BN層的引入使得大部分有效特征信息得到保留,主膠囊層類似于做高層卷積,經(jīng)過重重卷積等操作,得到更加有效的特征信息并且轉(zhuǎn)換成向量,傳遞給數(shù)字膠囊層。
數(shù)字膠囊層可看作是全連接層,表達(dá)不同類別的高級特征向量,在主膠囊層和數(shù)字膠囊層之間使用的動態(tài)路由算法,可以來協(xié)調(diào)和表達(dá)膠囊層之間的向量關(guān)系。動態(tài)路由算法是一個迭代過程,它是衡量將低層膠囊傳送到哪一個高層膠囊的過程,依據(jù)就是預(yù)測向量與高層向量之間的相似性,該過程類似于K-means聚類算法。動態(tài)路由算法通常設(shè)置3次迭代,在這過程中,衡量兩個向量的相似度采用的是余弦相似度,通過高層膠囊v的整體加權(quán)預(yù)測和低層膠囊u的個體預(yù)測的點(diǎn)積來確定。如果它們預(yù)測地越一致,那么點(diǎn)積值就越大,說明相似度就越高,反之亦然。向量A和向量B余弦相似度公式表示如下
(1)
余弦相似度更多的是衡量兩個向量在方向上的相似性,針對具體數(shù)值不夠敏感。例如甲和乙兩個人分別對兩部電影進(jìn)行滿意度評分(5分制),評分結(jié)果為(1,2)、(3,5),余弦相似度的計(jì)算結(jié)果為0.997,說明兩人對電影的滿意程度相近。但是從評分結(jié)果看,甲似乎不太喜歡這兩部電影,而乙比較喜歡兩部電影,造成這個結(jié)果的原因就是沒有考慮到每個維度數(shù)值之間的差異。使用修正余弦相似度來更正誤差,使每個維度上的數(shù)值都減去一個均值,則調(diào)整后使用余弦相似度計(jì)算得到-0.493,這個結(jié)果更加接近于事實(shí)。
在比較兩個向量相似度時,每個預(yù)測向量集代表著圖像的某個特征,各子膠囊(即預(yù)測向量集)與父膠囊之間的相似程度應(yīng)考慮向量集的綜合作用結(jié)果。具體算法過程見表1。
表1 修正動態(tài)路由算法
其中squash壓縮方式如下
(2)
在膠囊網(wǎng)絡(luò)中,膠囊的模長代表某種特征的概率,模長越大,概率越大,該類特征就越“明顯”。在式(2)中,squash壓縮函數(shù)可以在Sj模長很小時,將該向量壓縮成接近于0的向量;當(dāng)Sj模長很大時,將該向量映射成長度接近于1的向量,且方向保持不變。這個過程相當(dāng)于是對預(yù)測向量做了歸一化,最終得到的vj就是下一層膠囊j的輸出向量。修正動態(tài)路由算法詳細(xì)公式如下
(3)
(4)
(5)
(6)
本實(shí)驗(yàn)的環(huán)境采用Windows 10操作系統(tǒng),處理器為Intel(R)Xeon(R)Silver 4110 CPU,顯卡為GeForceGTX1080Ti,內(nèi)存為125 GB。實(shí)驗(yàn)在TensorFlow環(huán)境下搭建完成,TensorFlow由谷歌開發(fā),其靈活性高,能夠在各種類型機(jī)器上運(yùn)行,可在一個或多個CPU或者GPU上運(yùn)行,廣泛應(yīng)用于圖像的檢測與識別、自然語言處理等領(lǐng)域。實(shí)驗(yàn)中模型使用Adam優(yōu)化器,訓(xùn)練過程中的batchsize設(shè)為16。
本文實(shí)驗(yàn)所采用的數(shù)據(jù)集是德國交通標(biāo)志數(shù)據(jù)集(German traffic sign recognition benchmark,GTSRB),該數(shù)據(jù)集采集于真實(shí)交通場景下的德國交通標(biāo)志,主要衡量交通標(biāo)志模型的識別能力。數(shù)據(jù)集中包括警告、禁止和指示等在內(nèi)的43類交通標(biāo)志,共有51 839張圖片,其中訓(xùn)練集有39 209張,測試集有12 630張,數(shù)據(jù)集中的圖片大小不等,范圍在15×15到250×250像素之間,圖片并不全是正方形,且有光線、角度等原因造成的大量模糊圖片。本文提出的復(fù)合膠囊網(wǎng)絡(luò)卷積層的輸入需要滿足圖片大小一致,因此在預(yù)處理階段將所有圖片大小處理為28×28像素,即將圖片按照一邊長為28像素大小做等比例縮放。GTSRB中不同類別圖片的數(shù)量不同,各類別數(shù)量在200到2000左右不等,為提高樣本數(shù)少的類別的識別精度,進(jìn)行數(shù)據(jù)擴(kuò)充來均衡各樣本數(shù)量。將不足1000張類別的訓(xùn)練集圖片進(jìn)行角度從(-15,15)之間隨機(jī)旋轉(zhuǎn)操作增大到1000張,實(shí)現(xiàn)數(shù)據(jù)均衡。然后對圖片進(jìn)行隨機(jī)遮擋處理,人為設(shè)定遮擋的程度,但不設(shè)定遮擋的區(qū)域。如圖6所示為圖片預(yù)處理前后的對比。
圖6 隨機(jī)遮擋
左側(cè)為數(shù)據(jù)集中部分具有代表性的交通標(biāo)志示意圖片,右側(cè)為某一類標(biāo)志在預(yù)處理后遮擋程度依次為11%、22%、33%、44%、55%、66%的示例圖片。
3.3.1 特征提取結(jié)構(gòu)驗(yàn)證
為驗(yàn)證多尺度卷積核特征提取結(jié)構(gòu)的效果,表2對比了原膠囊網(wǎng)絡(luò)(CapsNet)的卷積層結(jié)構(gòu)、改進(jìn)的Path A+Path B單通道模塊和本文的殘差卷積(R-Conv)模塊的識別效果。將這3組不同形式的卷積組合放入相同的網(wǎng)絡(luò)結(jié)構(gòu)中測試識別結(jié)果。
表2 3種特征提取結(jié)構(gòu)識別精度比較
從表2可以得出,對于遮擋類型圖像的特征提取,采用小卷積核的組合形式效果優(yōu)于一般的膠囊網(wǎng)絡(luò)。CapsNet采用的9×9大卷積核在處理遮擋類圖像時,特征學(xué)習(xí)不充分導(dǎo)致模型識別精度低。Path A+Path B使用的是小卷積核組合形式,雖然單通道模塊的識別精度略有提高,但是模型后期的識別精度浮動變化較大。R-Conv在Path A+Path B雙通道的基礎(chǔ)上增加了適應(yīng)性卷積Conv3,并且引入雙通道池化和BN層后,使得模型可以提取到更加豐富的信息,相較于原膠囊網(wǎng)絡(luò)的特征提取結(jié)構(gòu),該模型的識別精度提高了1.61%。實(shí)驗(yàn)中發(fā)現(xiàn)加入雙通道池化和BN層可以有效提高模型的初始識別精度,使得平均準(zhǔn)確率p-ave值有較大提升,即模型更加穩(wěn)定。
3.3.2 改進(jìn)的動態(tài)路由效果驗(yàn)證
如圖7所示,利用膠囊網(wǎng)絡(luò)的原動態(tài)路由算法和本文的修正動態(tài)路由算法,分別對相同遮擋程度的數(shù)據(jù)集進(jìn)行測試,得出兩類算法的識別精度隨著迭代周期的變化曲線。
圖7 改進(jìn)前與后動態(tài)路由算法的識別精度曲線
從圖7的實(shí)驗(yàn)結(jié)果可以得出,改進(jìn)后的動態(tài)路由算法相較于改進(jìn)前的算法,識別精度和模型穩(wěn)定性有明顯提升。隨著迭代次數(shù)的增加,模型的識別精度不斷升高直至基本平穩(wěn),黑色實(shí)線為改進(jìn)后的修正動態(tài)路由算法精度變化曲線,虛線線條為原動態(tài)路由算法精度變化曲線。在迭代周期次數(shù)達(dá)到第30次左右時,改進(jìn)后的修正動態(tài)路由算法的識別精度基本穩(wěn)定,實(shí)驗(yàn)數(shù)據(jù)測得精度浮動在2%以內(nèi),而原動態(tài)路由算法在第37次迭代以后基本穩(wěn)定。實(shí)驗(yàn)數(shù)據(jù)表明在兩類算法基本收斂后,原動態(tài)路由算法的識別精度基本穩(wěn)定在了98.29%,而改進(jìn)后的修正動態(tài)路由算法的識別精度達(dá)到了98.72%,略高于原算法0.43%。從平均準(zhǔn)確率p-ave來看,改進(jìn)后的算法相比于原算法效果可觀,這是因?yàn)楦倪M(jìn)后的修正計(jì)算方式使得參數(shù)更新波動降低,模型的穩(wěn)定性更好。
3.3.3 不同遮擋程度下各算法的識別精度
針對不同遮擋程度下的交通標(biāo)志,將5類算法分別在遮擋程度11%、22%、33%、44%、55%、66%,6種不同類型的數(shù)據(jù)集上進(jìn)行測試。其中文獻(xiàn)[3]采用的是膠囊網(wǎng)路未改進(jìn)前的網(wǎng)絡(luò),實(shí)驗(yàn)結(jié)果見表3。
表3 不同遮擋程度條件下5類算法的識別精度/%
從表3的實(shí)驗(yàn)結(jié)果可以得出,在遮擋程度低于33%的時候,5類算法的識別精度均達(dá)到90%以上。隨著遮擋的面積增大,識別到的特征逐漸減少,5類算法的識別精度快速下降,本文算法在遮擋程度66%的時候,依然可以保持90%以上的識別率。由于預(yù)處理采用的是隨機(jī)遮擋操作,數(shù)據(jù)集中的少量圖片會出現(xiàn)遮擋程度未達(dá)到指定要求面積的情況,因此在較大遮擋程度測試時,5類算法識別精度均應(yīng)略低1%左右。由實(shí)驗(yàn)結(jié)果可知,復(fù)合膠囊網(wǎng)絡(luò)和原膠囊網(wǎng)絡(luò)隨著遮擋程度增大,識別精度整體下降梯度緩慢,這是因?yàn)槟P捅旧韺π巫儭⒛:鹊膱D像有著更好的識別能力。
3.3.4 驗(yàn)證復(fù)合膠囊網(wǎng)絡(luò)效果
為驗(yàn)證本文算法效果,將5類算法在相同數(shù)據(jù)集(遮擋程度11%)下進(jìn)行測試,實(shí)驗(yàn)結(jié)果見表4。
表4 在相同遮擋情況下5類算法的性能
從表4的實(shí)驗(yàn)結(jié)果可以看出,在11%的相同遮擋程度下,本文算法相比較于其它4類算法取得了最好的識別精度99.21%,其中CNN(R-Conv)的識別效果均高于AlexNet、VGG16算法,說明殘差卷積層特征提取結(jié)構(gòu)的效果達(dá)到預(yù)期。CapsNet[3]的精度雖然略低于CNN(R-Conv),但實(shí)驗(yàn)結(jié)果顯示膠囊網(wǎng)絡(luò)的模型收斂速度更快,穩(wěn)定性更好。另外在相同的訓(xùn)練步數(shù)下,復(fù)合膠囊網(wǎng)絡(luò)綜合性能最好,尤其是平均準(zhǔn)確率p-ave相較于未改進(jìn)前的膠囊網(wǎng)路提高了6.54%,并且均高于其它傳統(tǒng)的系列卷積神經(jīng)網(wǎng)絡(luò)。
交通標(biāo)志由于外界環(huán)境和一些人為因素的影響,會出現(xiàn)模糊、遮擋的情況,進(jìn)而會給駕駛員提供錯誤的路況信息。本文提出一種復(fù)合膠囊網(wǎng)絡(luò)的目標(biāo)識別方法,該方法將膠囊網(wǎng)絡(luò)與殘差網(wǎng)絡(luò)的多尺度思想結(jié)合,使得特征提取更加豐富;在主膠囊層中引入雙通道池化和BN操作,提高模型的收斂速度;通過改進(jìn)動態(tài)路由算法,以在運(yùn)算過程中保留更多的預(yù)測值提高識別精度。該方法通過在不同遮擋程度下進(jìn)行測試,相較于其它算法,復(fù)合膠囊網(wǎng)絡(luò)在遮擋程度越大時,仍然保持較高的識別精度,解決了因外界環(huán)境改變造成交通標(biāo)志識別精度低的問題。本文對動態(tài)路由算法的計(jì)算方式改進(jìn)較為復(fù)雜,下一步針對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行優(yōu)化,提高識別速度,使其能高效應(yīng)用于更多場景下的交通標(biāo)志識別。