陳立潮,張倩茹,曹建芳,2+,潘理虎
(1.太原科技大學 計算機科學與技術學院,山西 太原 030024;2.忻州師范學院 計算機系,山西 忻州 034000)
目前,交通標志的識別主要分為兩大類:一是采用傳統圖像識別方法,如方向梯度直方圖、隨機森林等,這類方法往往參數量大,且準確率較低。二是采用卷積神經網絡(convolutional neural networks,CNN)進行識別,但是CNN缺乏空間相對位置的分辨能力,Hinton等[1]提出了膠囊網絡(capsule network,CapsNet),并將其成功應用于手寫數字識別領域,嘗試解決了CNN存在的問題。隨后文獻[2]設計了一種改進體系的CapsNet,克服了CNN在分類時所需數據集量大及輸入轉換問題;文獻[3]將膠囊網絡應用于交通標志檢測,取得了不錯的識別精度。針對采集到的圖像效果不夠理想、障礙物遮擋的識別問題;文獻[4]使用機器學習組合算法通過分割目標邊界對目標進行識別,但其存在分割效果不佳等情況;文獻[5]與文獻[6]分別對污損指紋和遮擋人臉進行識別,均是CNN系列網絡的改進。本文將CNN和CapsNet進行了融合,提出了一種復合膠囊網絡的交通標志識別方法,創建特定的交通標志數據集,其中包含模糊等非正常形態的圖像;提升膠囊網絡的特征提取能力,并對動態路由算法的更新計算方式進行優化,提高了交通標志圖像識別的準確率。
傳統的卷積神經網絡在識別與數據集非常相似的圖像時,效果可以達到預期,但是當圖像有一些旋轉、扭曲或者圖像中的元素相對位置發生改變時,CNN的識別效果往往不是很理想。這是因為CNN中的池化(Pooling)操作丟失了很多的位置信息,使得模型缺乏空間表達能力,進而使特征丟失位置的層級關系。膠囊網絡針對這一問題提出了新思路,網絡中每一個膠囊都是一個向量,向量中可以包含多個值,這樣一個膠囊就可以封裝多個特征。
膠囊網絡由卷積層、主膠囊層(primary capsule layer,PrimaryCaps)和數字膠囊層(digital capsule layer,DigitCaps)組成,其基本結構如圖1所示。在卷積層使用9×9卷積核提取特征,接著主膠囊層進行再卷積后把特征圖轉換成若干個向量,最后在數字膠囊層中,每一個膠囊代表一種分類類型,得到43個長度為16的輸出向量。

圖1 膠囊網絡基本結構
用動態路由(dynamic routing)算法代替CNN中的池化操作,可以使模型捕獲更多的特征空間關系,尤其在部分與整體之間的關系表達上更為準確。具體算法過程如圖2所示。

圖2 動態路由過程

復合膠囊網絡的基本結構包括3個部分,首先對輸入圖像進行雙通道的多尺度卷積核特征提取;其次在主膠囊層加入組合后的雙通道池化和Batch Normalization(BN)操作,更加有利于特征學習,提高模型的收斂速度;然后使用修正動態路由算法迭代更新參數,輸出最終的識別結果。具體結構如圖3所示。

圖3 復合膠囊網絡整體結構
圖3中的左側第一個虛線框為多尺度卷積核特征提取結構。path A的路徑上采用1×1和3×3兩種不同大小的卷積核交替組合,path B上采用2×2的最大池化(Max-pooling)和1×1卷積進行組合。把輸出的兩通道特征圖以1∶1的方式進行融合,將融合的CON層特征圖送入Conv3層進行卷積,最終得到7×7大小的特征圖。
圖3中的第二個虛線框為主膠囊層結構。用32個3×3大小,步長為1的卷積核對上一層的卷積結果再次進行卷積,然后轉換得到800個向量。其次使用組合后的雙通道池化方式,降低模型參數量。隨著網絡深度的增加,模型訓練使得網絡參數不斷增大和改變,這里引入Batch Normalization操作,加快模型收斂速度。
圖3中的第三個虛線框為數字膠囊層及輸出。動態路由算法會根據多個預測向量的結果,加權得到整體預測向量。衡量個體預測向量與整體預測向量之間的相似度使用的是余弦相似度。本文考慮預測向量集對整體預測向量的綜合作用,使用修正余弦相似度代替原bij值的更新計算方式。
在膠囊網絡中,卷積層的作用是對輸入圖像進行基本的特征提取。原膠囊網絡的卷積層采用的是9×9卷積核在輸入圖像上提取特征,這樣會造成大量的重復操作,且對于小尺寸的圖像特征提取不夠充分。本文借鑒殘差網絡(residual network,ResNet)中的ResNet-50網絡結構對于下采樣塊的改進[7],引入多尺度的思想,將膠囊網絡卷積層中的9×9卷積核改為用1×1和3×3的卷積組合形式來實現,使得改進后的殘差卷積層(R-Conv)提取的特征更加豐富,同時降低部分參數量。1×1卷積操作通過降低通道數,起到降維作用,這個操作可以使得模型的參數量大大減小,提高運算速度,且網絡層數的增加有利于提高模型的特征表達能力。
在ResNet-50的第二模塊中,改進的ResNet-D結構分成path A和path B兩個通道,如圖4(b)結構所示。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卷積核,對池化后的特征圖進行卷積,得到14×14大小的特征圖。在path B通道上使用最大池化操作,這是因為在網絡淺層特征提取時,使用最大池化方法可以提取到特征的紋理信息,即提取到的特征為局部更加“突出”的信息,以此可以減少無用信息對后續模型識別的干擾。R-Conv在ResNet-D結構后增加一層適應性卷積Conv3,卷積核的大小為2×2,步長為2,使得輸出的特征圖的維度為7×7,這里維度減小是減少模型計算量的關鍵,具體結構如圖4所示。

圖4 兩種特征提取結構
為驗證ResNet-D特征提取結構的效果,本文將path A和path B兩個通道融合成單通道結構,并與雙通道的R-Conv結構進行了對比實驗,且對參數做適應性調整。在卷積神經網絡中會使用Sigmoid、Relu等激活函數,其中Sigmoid可以將輸入映射到0-1的區間內,但是其在趨向無窮大時,函數值變化很小,可能會出現梯度缺失的情況。本文在每層卷積操作后激活函數選取Relu,該函數有利于優化,會使部分神經元的輸出為0,整個過程的計算量較小,有助于網絡的收斂。
主膠囊層首先對上一層的殘差卷積層獲取到的特征再次進行卷積操作,然后將這些數據連接起來形成低層膠囊向量。在第一步中使用卷積操作來降低特征維度,這個操作雖然會降低部分參數量,但是會沒有選擇性地減少有效特征。池化操作雖然會丟失部分位置信息,但是它對于有效信息的篩選和數據降維上有著不可替代的優勢。最大池化把特征圖中最大像素值保留下來作為該區域池化后的值,其專注于局部“最重要”的像素,可以提取到更加有效的特征紋理信息。平均池化(Mean-pooling)把特征圖中像素平均值保留下來作為該區域池化后的值,可以保證信息的完整性。本文使用兩種池化組合后的雙通道方式對主膠囊層卷積后的特征進行處理,池化大小分別為2,2。如圖5所示,加入雙通道池化操作后,第一,綜合特征圖的局部信息和全局信息,可以保留更多有用的特征;第二,組合后的池化操作實現降維,有效地降低了模型的參數量,解決了在數據集較大時,隨著訓練次數的增加,訓練時間越來越長的問題。

圖5 主膠囊層的改進結構
特征圖在經過主膠囊層的第二步轉換后,添加Batch Normalization[8]操作。BN在最開始被提出時,針對激活輸入值隨著網絡模型的加深,其分布逐漸向區間的上下極靠近,這樣經過層層的訓練,就很容易會出現梯度消失的問題,使得網絡的收斂速度越來越慢。通過加入BN操作,可以使這些激活值穩定在一個相對的范圍內,緩解梯度消失的影響,從而可以加快模型的收斂速度,提高識別精度。BN層的引入使得大部分有效特征信息得到保留,主膠囊層類似于做高層卷積,經過重重卷積等操作,得到更加有效的特征信息并且轉換成向量,傳遞給數字膠囊層。
數字膠囊層可看作是全連接層,表達不同類別的高級特征向量,在主膠囊層和數字膠囊層之間使用的動態路由算法,可以來協調和表達膠囊層之間的向量關系。動態路由算法是一個迭代過程,它是衡量將低層膠囊傳送到哪一個高層膠囊的過程,依據就是預測向量與高層向量之間的相似性,該過程類似于K-means聚類算法。動態路由算法通常設置3次迭代,在這過程中,衡量兩個向量的相似度采用的是余弦相似度,通過高層膠囊v的整體加權預測和低層膠囊u的個體預測的點積來確定。如果它們預測地越一致,那么點積值就越大,說明相似度就越高,反之亦然。向量A和向量B余弦相似度公式表示如下
(1)

余弦相似度更多的是衡量兩個向量在方向上的相似性,針對具體數值不夠敏感。例如甲和乙兩個人分別對兩部電影進行滿意度評分(5分制),評分結果為(1,2)、(3,5),余弦相似度的計算結果為0.997,說明兩人對電影的滿意程度相近。但是從評分結果看,甲似乎不太喜歡這兩部電影,而乙比較喜歡兩部電影,造成這個結果的原因就是沒有考慮到每個維度數值之間的差異。使用修正余弦相似度來更正誤差,使每個維度上的數值都減去一個均值,則調整后使用余弦相似度計算得到-0.493,這個結果更加接近于事實。
在比較兩個向量相似度時,每個預測向量集代表著圖像的某個特征,各子膠囊(即預測向量集)與父膠囊之間的相似程度應考慮向量集的綜合作用結果。具體算法過程見表1。

表1 修正動態路由算法
其中squash壓縮方式如下
(2)
在膠囊網絡中,膠囊的模長代表某種特征的概率,模長越大,概率越大,該類特征就越“明顯”。在式(2)中,squash壓縮函數可以在Sj模長很小時,將該向量壓縮成接近于0的向量;當Sj模長很大時,將該向量映射成長度接近于1的向量,且方向保持不變。這個過程相當于是對預測向量做了歸一化,最終得到的vj就是下一層膠囊j的輸出向量。修正動態路由算法詳細公式如下
(3)
(4)
(5)
(6)

本實驗的環境采用Windows 10操作系統,處理器為Intel(R)Xeon(R)Silver 4110 CPU,顯卡為GeForceGTX1080Ti,內存為125 GB。實驗在TensorFlow環境下搭建完成,TensorFlow由谷歌開發,其靈活性高,能夠在各種類型機器上運行,可在一個或多個CPU或者GPU上運行,廣泛應用于圖像的檢測與識別、自然語言處理等領域。實驗中模型使用Adam優化器,訓練過程中的batchsize設為16。
本文實驗所采用的數據集是德國交通標志數據集(German traffic sign recognition benchmark,GTSRB),該數據集采集于真實交通場景下的德國交通標志,主要衡量交通標志模型的識別能力。數據集中包括警告、禁止和指示等在內的43類交通標志,共有51 839張圖片,其中訓練集有39 209張,測試集有12 630張,數據集中的圖片大小不等,范圍在15×15到250×250像素之間,圖片并不全是正方形,且有光線、角度等原因造成的大量模糊圖片。本文提出的復合膠囊網絡卷積層的輸入需要滿足圖片大小一致,因此在預處理階段將所有圖片大小處理為28×28像素,即將圖片按照一邊長為28像素大小做等比例縮放。GTSRB中不同類別圖片的數量不同,各類別數量在200到2000左右不等,為提高樣本數少的類別的識別精度,進行數據擴充來均衡各樣本數量。將不足1000張類別的訓練集圖片進行角度從(-15,15)之間隨機旋轉操作增大到1000張,實現數據均衡。然后對圖片進行隨機遮擋處理,人為設定遮擋的程度,但不設定遮擋的區域。如圖6所示為圖片預處理前后的對比。

圖6 隨機遮擋
左側為數據集中部分具有代表性的交通標志示意圖片,右側為某一類標志在預處理后遮擋程度依次為11%、22%、33%、44%、55%、66%的示例圖片。
3.3.1 特征提取結構驗證
為驗證多尺度卷積核特征提取結構的效果,表2對比了原膠囊網絡(CapsNet)的卷積層結構、改進的Path A+Path B單通道模塊和本文的殘差卷積(R-Conv)模塊的識別效果。將這3組不同形式的卷積組合放入相同的網絡結構中測試識別結果。

表2 3種特征提取結構識別精度比較
從表2可以得出,對于遮擋類型圖像的特征提取,采用小卷積核的組合形式效果優于一般的膠囊網絡。CapsNet采用的9×9大卷積核在處理遮擋類圖像時,特征學習不充分導致模型識別精度低。Path A+Path B使用的是小卷積核組合形式,雖然單通道模塊的識別精度略有提高,但是模型后期的識別精度浮動變化較大。R-Conv在Path A+Path B雙通道的基礎上增加了適應性卷積Conv3,并且引入雙通道池化和BN層后,使得模型可以提取到更加豐富的信息,相較于原膠囊網絡的特征提取結構,該模型的識別精度提高了1.61%。實驗中發現加入雙通道池化和BN層可以有效提高模型的初始識別精度,使得平均準確率p-ave值有較大提升,即模型更加穩定。
3.3.2 改進的動態路由效果驗證
如圖7所示,利用膠囊網絡的原動態路由算法和本文的修正動態路由算法,分別對相同遮擋程度的數據集進行測試,得出兩類算法的識別精度隨著迭代周期的變化曲線。

圖7 改進前與后動態路由算法的識別精度曲線
從圖7的實驗結果可以得出,改進后的動態路由算法相較于改進前的算法,識別精度和模型穩定性有明顯提升。隨著迭代次數的增加,模型的識別精度不斷升高直至基本平穩,黑色實線為改進后的修正動態路由算法精度變化曲線,虛線線條為原動態路由算法精度變化曲線。在迭代周期次數達到第30次左右時,改進后的修正動態路由算法的識別精度基本穩定,實驗數據測得精度浮動在2%以內,而原動態路由算法在第37次迭代以后基本穩定。實驗數據表明在兩類算法基本收斂后,原動態路由算法的識別精度基本穩定在了98.29%,而改進后的修正動態路由算法的識別精度達到了98.72%,略高于原算法0.43%。從平均準確率p-ave來看,改進后的算法相比于原算法效果可觀,這是因為改進后的修正計算方式使得參數更新波動降低,模型的穩定性更好。
3.3.3 不同遮擋程度下各算法的識別精度
針對不同遮擋程度下的交通標志,將5類算法分別在遮擋程度11%、22%、33%、44%、55%、66%,6種不同類型的數據集上進行測試。其中文獻[3]采用的是膠囊網路未改進前的網絡,實驗結果見表3。

表3 不同遮擋程度條件下5類算法的識別精度/%
從表3的實驗結果可以得出,在遮擋程度低于33%的時候,5類算法的識別精度均達到90%以上。隨著遮擋的面積增大,識別到的特征逐漸減少,5類算法的識別精度快速下降,本文算法在遮擋程度66%的時候,依然可以保持90%以上的識別率。由于預處理采用的是隨機遮擋操作,數據集中的少量圖片會出現遮擋程度未達到指定要求面積的情況,因此在較大遮擋程度測試時,5類算法識別精度均應略低1%左右。由實驗結果可知,復合膠囊網絡和原膠囊網絡隨著遮擋程度增大,識別精度整體下降梯度緩慢,這是因為模型本身對形變、模糊等的圖像有著更好的識別能力。
3.3.4 驗證復合膠囊網絡效果
為驗證本文算法效果,將5類算法在相同數據集(遮擋程度11%)下進行測試,實驗結果見表4。

表4 在相同遮擋情況下5類算法的性能
從表4的實驗結果可以看出,在11%的相同遮擋程度下,本文算法相比較于其它4類算法取得了最好的識別精度99.21%,其中CNN(R-Conv)的識別效果均高于AlexNet、VGG16算法,說明殘差卷積層特征提取結構的效果達到預期。CapsNet[3]的精度雖然略低于CNN(R-Conv),但實驗結果顯示膠囊網絡的模型收斂速度更快,穩定性更好。另外在相同的訓練步數下,復合膠囊網絡綜合性能最好,尤其是平均準確率p-ave相較于未改進前的膠囊網路提高了6.54%,并且均高于其它傳統的系列卷積神經網絡。
交通標志由于外界環境和一些人為因素的影響,會出現模糊、遮擋的情況,進而會給駕駛員提供錯誤的路況信息。本文提出一種復合膠囊網絡的目標識別方法,該方法將膠囊網絡與殘差網絡的多尺度思想結合,使得特征提取更加豐富;在主膠囊層中引入雙通道池化和BN操作,提高模型的收斂速度;通過改進動態路由算法,以在運算過程中保留更多的預測值提高識別精度。該方法通過在不同遮擋程度下進行測試,相較于其它算法,復合膠囊網絡在遮擋程度越大時,仍然保持較高的識別精度,解決了因外界環境改變造成交通標志識別精度低的問題。本文對動態路由算法的計算方式改進較為復雜,下一步針對網絡結構進行優化,提高識別速度,使其能高效應用于更多場景下的交通標志識別。