謝藝蓉,馬永杰
(西北師范大學物理與電子工程學院,蘭州 730070)
交通標志識別是智能交通系統(tǒng)(Intelligent Traffic System,ITS)的主要研究內容,也是計算機視覺道路應用的重要組成部分。交通標志識別算法通常包括特征提取和分類器。隨著圖像識別領域的快速發(fā)展,卷積神經網絡(Convolutional Neural Network,CNN)被廣泛應用于交通圖像特征的提取,相比傳統(tǒng)算法中的人工特征提取,具有較優(yōu)的圖像識別性能。
文獻[1]提出基于圖模型與CNN 的交通標志識別算法,根據提取過程中的多級信息,實現對目標圖像內部精細特征的學習。文獻[2]通過對LeNet-5網絡結構進行改進,減少冗余信息并添加多層融合結構,從而提高算法的實時性和特征表達能力。文獻[3]提出一種基于局部背景的Faster R-CNN 來識別交通標志圖像中的小目標。為提高算法的實用性和識別精度,研究人員提出多種基于多尺度特征的方法。文獻[4]提出基于Faster R-CNN 模型改進的多路特征識別模型,通過圖像預處理提高模型的適應能力。文獻[5]訓練適應于不同尺寸圖像的CNN并構建融合模型,該方法能夠有效提取多尺度特征。文獻[6]融合網絡不同層級的特征信息,以提高對低層特征的利用率,模型在德國交通標志識別(GTSRB)數據集上的識別率達到99.25%。
在上述算法中用于特征提取的網絡都是基于專家經驗改進的網絡模型,需要復雜的模型調參過程。圖像預處理是多尺度特征提取算法中的重要步驟,以獲得更優(yōu)的識別性能。然而,交通標志圖像數據一旦出現任何更改,則導致整體訓練過程重復,需要大量的處理時間。此外,在網絡模型設計過程中網絡深度對識別性能的影響并未引起研究人員的重視。受移動端平臺硬件水平的限制,在保證分類性能的同時設計更加輕量化的網絡模型成為研究熱點。
進化神經架構是一種自動化設計網絡模型的方法[7-8]。由于進化算法(Evolutionary Algorithms,EAs)不依賴于優(yōu)化對象的梯度信息,因此可以解決復雜、非線性、不可微、多模態(tài)的優(yōu)化問題,被廣泛應用于優(yōu)化神經網絡的權值、架構和學習規(guī)則[9-10]。進化神經架構將網絡的基本模塊和參數嵌入到進化算法中,設計架構的生成方式,并使用變異、交叉和選擇等遺傳算子對網絡模型進行優(yōu)化搜索。文獻[11]設計包括層、連接等簡單的初始化條件,僅使用變異算子進化出用于解決大規(guī)模圖像分類問題的CNN,具有與專家設計網絡相近的分類性能。為實現架構的高效搜索,文獻[12-13]設計基于塊的初始化空間,能夠自動設計用于圖像分類的網絡架構,同時極大減少了進化搜索所需的計算量。針對進化神經網絡架構計算量較大的問題,文獻[14-15]訓練端到端代理機制進行適應度評估,以代替進化過程中對所有網絡的訓練和測試評估。文獻[16]采用抽樣訓練和節(jié)點繼承策略,種群中的個體共享一個網絡的訓練周期并將權值遺傳給后代,大幅提高了進化搜索的效率。文獻[17]設計進化稠密網絡,在車輛圖像數據集上具有較優(yōu)的分類性能。
本文提出基于進化ResNet 的交通標志識別算法。將提取ResNet 的基礎塊嵌入到進化算法中,構建以殘差塊為單位的個體初始化空間,利用交叉、變異等遺傳算子,確保進化搜索的有效性,同時將網絡深度作為可變參數,搜索網絡的最佳深度,在確保識別精度的前提下設計輕量化的網絡。
卷積神經網絡主要由卷積層、池化層和全連接層構成。卷積操作過程如圖1 所示,將卷積核滑動到二維圖像上的所有位置,在每個位置上進行內積運算,從而提取圖像特征。卷積層的主要參數包括卷積核尺寸、個數(特征圖數)和滑動步長。在深層卷積神經網絡中,不同的卷積核提取不同的圖像特征,經過多次卷積操作提取復雜的底層特征。
圖1 卷積操作過程Fig.1 Convolution operation process
池化是一種非線性下采樣方式,主要作用是減少網絡參數,進而降低計算量,并在一定程度上避免過擬合現象的發(fā)生。池化層通常位于卷積層的后面,主要包括最大池化和平均池化,分別選取池化域內特征點的最大值或平均值,并將其作為該鄰域的池化值。最大池化與平均池化操作過程如圖2 所示(池化步長為2)。
圖2 最大池化與平均池化操作過程Fig.2 Operation process of maximum pooling and mean pooling
全連接層通過將前一層的輸出連接到所有節(jié)點,用于把提取到的特征圖線性展開,并輸入到非線性變換Sigmoid 函數中進行分類或回歸操作,通常位于網絡結構的末端。
文獻[18]提出殘差網絡(ResNet),通過殘差塊結構訓練152 層的神經網絡,在top5 上的錯誤率僅為3.57%,同時參數量較少。一個標準殘差塊結構如圖3 所示。
圖3 殘差塊結構Fig.3 Residual block structure
卷積過程如式(1)所示:
其中:f(·)為激活函數;k為網絡層數;w為權重;b為偏置項;y為輸出特征。為解決在深度神經網絡訓練過程中性能不穩(wěn)定和收斂困難的問題,批量歸一化將輸入特征轉換為正態(tài)分布,并引入學習參數γ、β,其數學表示如式(2)和式(3)所示:
其中:輸入特征向量x={x1,x2,…,xn};和分別表示x的均值和方差。Relu 為卷積層激活函數,其特點是在網絡的前向傳遞、逆向反饋和求導過程中均為分段線性形式[19]。
殘差塊通過跳躍連接增加一個恒等映射,如式(4)所示:
殘差塊將輸入信息x加入到特征計算過程中,即在特征提取過程中結合上一層網絡提取的特征信息。其中,跳躍連接將殘差塊的輸入和輸出進行一個簡單的元素級疊加,在不增加額外參數和計算量的前提下,能夠有效解決深層結構網絡訓練過程中的退化問題,加快模型的訓練速度,提升訓練效果。
進化算法是一種受自然進化啟發(fā)的優(yōu)化算法,不依賴于優(yōu)化對象的梯度信息,具有智能性和并行性特點,可以解決復雜、非線性、不可微、多模態(tài)的優(yōu)化問題。因此,EAs 在神經網絡的權值、架構和學習規(guī)則等優(yōu)化問題中具有一定的研究范圍。
進化算法包括參數編碼、初始化種群、適應度評估、遺傳算子和控制參數5 個要素。進化算法用基因模式表示系統(tǒng)結構,參數編碼將個體表示為長度為L的染色體I={I1,I2,…,IL},在第N位基因上存在一系列等位基因In={in1,in2,…,ink},n=1,2,…,L,k表示第n位等位基因的數量,所有等位基因的組合構成搜索空間,如式(5)所示:
Φ是可能存在的個體最大空間,算法中種群空間一般為Φ的真子集。P(t)表示處于t階段的種群,E(t)表示目標環(huán)境提供的信息,在適應計劃τt作用下生成新的種群,如式(6)所示:
在進化算法的適應過程中,初始種群由一組隨機生成基因編碼的個體組成,根據適應度大小對個體進行排序選擇,經過選擇、交叉、變異等進化操作,適應度較差的個體被淘汰。變異算子搜索新的等位基因,而交叉算子將個體的不同基因以新的方式相結合。進化后的新一代群體質量得到提高,經過多次迭代,逐步提高種群中個體的整體性能。
進化ResNet 算法從初始化種群開始,采用初始化方式隨機生成一系列代表不同架構的個體,將個體的代碼解碼成相應的網絡后進行適應度評估,然后根據適應度選擇父代個體進行交叉、變異等遺傳操作后產生子代個體,再經過環(huán)境選擇產生新一代種群。這個過程反復迭代直到滿足預定的最大進化代數,最后在種群中選擇適應度最高的個體作為優(yōu)化架構。進化ResNet 算法流程如圖4 所示。在進化過程中,適應度評估只訓練新生成的個體模型,包括初始種群和遺傳操作后產生的新個體,對于已經訓練過的模型,直接加載訓練數據作為其適應度。
圖4 進化ResNet 算法流程Fig.4 Procedure of evolutionary ResNet algorithm
初始化種群需要定義參數編碼和初始化方式,其中,參數編碼是指在架構搜索空間中可變參數的編碼方式。本文提出的進化ResNet 算法的網絡模型主要由輸入層、殘差塊、池化層和全連接層構成。進化ResNet 算法的可變參數設置如表1 所示。
表1 進化ResNet 算法的可變參數設置Table 1 Variable parameters setting of evolutionary ResNet algorithm
可變模塊包括殘差塊、最大池化層和平均池化層。殘差塊由特征圖數量編碼為c1_c2 兩個卷積層組成,范圍為{64,128,256}。卷積層的濾波器和步長分別設置為3×3 和1×1,將步長設置為1×1 是為了保持輸入數據的維數不變,并使架構搜索更加靈活。池化層由數字編碼范圍是[0,1]的池化類型組成,其中,介于[0,0.5]之間的數字表示最大池化,[0.5,1]之間的數字表示平均池化。池化層的內核大小和步長設置為2×2。
在初始化過程中,進化ResNet 算法將網絡深度作為可變參數,以搜索網絡模型的最佳深度,在預定的長度范圍內生成一個隨機數作為架構的長度L,創(chuàng)建包含L個節(jié)點的列表,然后根據節(jié)點類型加載參數編碼,最后搭建完整網絡架構。在初始化種群中隨機架構如圖5 所示。該架構包含3 個卷積塊和2 個池化塊,全連接層固定在個體尾部,編碼是“64-256-0.3-128-128-0.6-128-256”。
圖5 在初始化種群中隨機架構示例Fig.5 Example of random architecture in initialized population
適應度是通過評估群體中個體的優(yōu)劣,指導進化算子搜索重要參數。在適應度評估中,每個基因型被解碼成相應的網絡模型,在訓練集上通過隨機梯度下降(Stochastic Gradient Descent,SGD)算法進行訓練,權值更新過程如式(7)和式(8)所示:
其中:J(w,b;xm,ym)為單個樣例計算得到的方差代價函數;w為權值矩陣;b為偏置矩陣;(xm,ym)為第m個樣例的標記數據;r為學習速率;β為權重衰減參數。每個網絡模型訓練20 個迭代次數,在驗證集上測試分類精度并作為適應度,在保證指導進化算子的同時減少計算量。
遺傳算子包括交叉和變異,直接決定了后代的生成,即在進化過程中可以搜索到網絡架構。遺傳算子的操作過程如圖6 所示。
圖6 遺傳算子的操作過程Fig.6 Operation process of genetic operators
在交叉操作過程中,首先選擇兩個父代個體,根據預定義的交叉率決定是否執(zhí)行交叉操作。在執(zhí)行過程中,隨機選擇位于每個父代個體上的交叉點,然后在該點相互交換兩個個體的部分基因。若不執(zhí)行交叉操作,這兩個父代個體將被直接放入到子代種群中。
在變異操作過程中,根據預定義的變異率選擇部分個體,然后從個體的構建塊中隨機選擇變異點執(zhí)行變異操作。變異操作包括刪除塊、添加塊和改變構建塊參數。對于殘差塊,參數更改是指更改卷積層特征圖的數量。池化層的參數更改即為改變池化類型。
本文在環(huán)境選擇過程中,根據遺傳算法中的錦標賽選擇策略,使用二進制錦標賽法來選擇下一代種群。該方法主要分為3 個步驟:1)從父代和子代個體中隨機選擇兩個個體,每個個體被選擇的概率相等;2)根據個體的適應度,選擇較優(yōu)的個體進入下一代種群;3)重復該過程數次(重復次數為種群大小),直到新種群的大小等于原始種群的大小。
本文實驗所用的計算機配置是Intel core i9-9900kf 處理器,使用2 個NVIDIA GeForce RTXs 顯卡加速計算,操作系統(tǒng)為Ubuntu18.04,深度學習框架為Pytorch,軟件編程環(huán)境為Python3.7。本文將識別準確率KAcc作為評價架構性能的主要指標,如式(9)所示:
其中:ni表示識別正確的樣本;N表示測試的樣本總量。本文實驗參數設置如表2 所示。
表2 本文實驗參數設置Table 2 Parameter settings of the proposed experiment
本文在GTSRB 數據集[20]上進行實驗。該數據集是在IJCNN2011 圖像分類挑戰(zhàn)賽上由INIRTCV組織建立。該數據集圖像截取于在駕駛場景中車載高清攝像頭拍攝的視頻,共包含43 類交通標志,如圖7 所示。其中,訓練集有39 209 幅,測試集有12 630 幅,總計51 839 幅圖像。樣本圖像包含10%的標記區(qū)域及其周圍區(qū)域,大小為(15×15)~(250×250)像素。受自然場景光照、圖片采集角度變化、人為涂抹污染等諸多條件的影響,圖像質量參差不齊。該數據集可以檢驗交通標志圖像識別算法的實時性與魯棒性。
圖7 GTSRB 數據集的43 類交通標志Fig.7 43 types of traffic signs in the GTSRB dataset
進化ResNet 算法經過交叉、變異和選擇等遺傳操作,共消耗6 h 45 min,搜索到153 種網絡架構并對其進行性能評估。153 種網絡架構在種群中的分布及每一代種群的個體適應度區(qū)間如表3 所示。
表3 種群個體分布Table 3 Distribution of population individuals
種群個體在第5 代時的最高適應度由98.87%提升到99.14%,并一直持續(xù)到進化過程結束。種群個體的最低適應度由78.05%提升到96.09%,表明種群個體的整體適應度不斷提升,而此時種群中產生的新個體數保持穩(wěn)定,說明本文的進化ResNet 算法搜索到更多性能較優(yōu)的網絡架構,同時驗證了最優(yōu)架構在進化過程中的穩(wěn)定性。
為了更好地理解進化過程中的細節(jié),在GTSRB數據集上進化ResNet 算法的進化軌跡如圖8 所示。
圖8 進化ResNet 算法的進化軌跡Fig.8 Evolutionary trajectory of evolutionary ResNet algorithm
從圖8 可以看出,隨著進化代數的增加,種群中個體的分類精度向高精度方向聚攏,驗證了進化搜索中遺傳算子的有效性。最佳分類精度隨著進化軌跡的進行而增加,但相對平穩(wěn),這表明基于構建塊的網絡架構生成方式可以確保設計架構的有效性。進化的終止條件是進化代數,雖然進化算法搜索到了具有較優(yōu)分類性能的個體,但是無法在適應度評估過程中確保搜索到的架構是全局最優(yōu)。本文實驗的最優(yōu)個體在進化結束之前就已產生。
本文選取最后一代種群中適應度最高的個體作為進化設計的最優(yōu)架構。進化ResNet 算法的基礎架構組成如表4 所示。殘差網絡共包含7 個基礎塊,其中4 個殘差塊和3 個池化層,最后連接全連接層進行分類操作。
表4 進化ResNet 算法的基礎架構組成Table 4 Infrastructure composition of evolutionary ResNet algorithm
本文用GTSRB 對進化ResNet 算法生成的架構進行重新訓練,使用隨機梯度下降算法進行參數更新,調整3 段學習率,初始學習率為0.1。當epoch 次數大于148 時,學習率設置為0.01;當epoch 次數大于248 時,學習率設置為0.001。進化ResNet 算法生成架構模型的分類精度和測試損失值變化曲線如圖9 所示。隨著迭代次數的不斷增加,模型的損失值在前幾次迭代過程中快速降低后趨于平穩(wěn),表明模型的學習能力逐漸下降。分類精度在學習前期快速增長后不斷波動,在迭代次數為148 以后趨于平穩(wěn),達到了99.41%。
圖9 本文模型訓練曲線Fig.9 Training curves of the proposed model
在GTSRB 數據集上不同算法的準確率與參數量對比如表5 所示。對比算法的實驗結果來自相關參考文獻中提供的數據。表5中文獻[21]Multi-column DNN的算法是由25個CNN組成的多縱CNN模型。文獻[22]使用基于優(yōu)化卷積神經網絡和支持向量機分類的模型(Conv+GLP+BN+SVM)。文獻[5-6,23-24]是4 種基于多尺度特征改進的特征提取模型,其中,文獻[6,23]使用全連接層進行分類,文獻[5,24]使用極限學習機分類,以加快分類速度。在多尺度特征提取過程中,文獻[6]MFC 算法融合網絡中不同層級所產生的單尺度特征,提高了對單尺度卷積神經網絡中低層特征的利用率。文獻[24]MFC+ELM 算法通過在特征提取過程中增加多尺度池化操作,提高了特征提取的魯棒性。文獻[5]MFC+ELM 算法訓練3 種適應于不同尺寸圖像的網絡模型,然后將3 個訓練網絡的參數級聯(lián)到融合模型的全連接層。同時,文獻[23]MFC 算法采用限制對比度自適應直方圖均衡化方法優(yōu)化圖像質量。
表5 不同算法的準確率和參數量對比Table 5 Accuracy and parameter quantity comparison among different algorithms
從表5 可以看出,本文進化ResNet 算法的識別準確率優(yōu)于人類表現,超過了其他5 種基于CNN 的改進算法,而略低于Multi-column DNN 算法中99.46%的識別準確率。文獻[22]基于CNN 使用批量歸一化,逐層貪婪預訓練和支持向量機的改進算法,未達到人類表現的準確率。文獻[23]MFC 算法的準確率與人類表現相近。文獻[5]中MFC+ELM算法是基于多尺度特征的方法取得了較大的性能提升,但本文進化ResNet 算法在參數量上較該模型減少了4.43×106,網絡模型更輕量化。雖然文獻[21]Multi-column DNN 算法中多縱卷積神經網絡模型的識別準確率最高,但是該方法由25 個網絡組成,需要大量的預處理操作,在4 個GPU 同時計算下需要37 h 才能完成模型的訓練任務。因此,本文進化ResNet 算法具有更優(yōu)的整體性能。
本文將網絡深度作為可變參數,在進化過程中自適應搜索最優(yōu)的網絡深度。為對比不同深度的網絡參數和識別準確率,表6 所示為第一代種群中20 個不同網絡的層數(殘差塊計算為兩層卷積)和分類性能,并按照網絡層數遞增順序排序。
表6 第一代種群中20 個不同網絡的參數量與準確率對比Table 6 Parameter quantity and accuracy comparison among 20 different networks in the first generation population
從表6 可以看出,隨著網絡層數的遞增,識別準確率并不呈遞增關系。準確率達到97%以上的網絡層數為11、17 和19(對應網絡編號分別為網絡1、網絡10 和網絡13)的參數量分別為0.55×106、3.46×106和2.98×106。準確率低于80%的網絡層數23 和25(對應網絡編號為網絡15 和網絡17)的參數量分別為2.29×106和2.73×106。
為進一步分析網絡性能和架構與參數量的關系,本文分別統(tǒng)計網絡層數為15 的架構參數。網絡2~網絡6 中15 層網絡的殘差塊輸出通道數與網絡參數量對比如表7 所示。
表7 15 層網絡殘差塊的輸出通道數與參數量對比Table 7 Comparison of the number of output channel and parameter quantity of the 15 layers network residual block
從表7 可以看出,在性能遞增的情況下,網絡3~網絡6 的參數量呈遞增關系。網絡的參數量主要取決于卷積層,其參數量計算如式(10)所示:
其中:Co表示輸出通道數;Ci表示輸入通道數;kw和kh表示卷積核寬和核高。
網絡2 的殘差塊具有4 個256 和128 通道數,卷積核數量較多,因此,網絡參數量較大。15 層網絡構建塊的順序與參數對比如表8 所示。
表8 15 層網絡構建塊的順序與參數對比Table 8 Building block order and parameter comparison among 15 layers networks
從表8 可以看出,在網絡4、網絡5、網絡6 三組架構的結構組成相似的情況下,參數量較大的網絡可以取得更高的識別準確率,說明網絡可以提取到更多的有效特征信息。網絡2 雖然具有一定的模型復雜度,但是在該架構搭建方式下,網絡并沒有獲得較優(yōu)的識別準確率。因此,本文算法能夠自適應地搜索構建塊順序、參數和架構深度,從而設計更高效的網絡模型。
本文設計基于進化ResNet 的交通標志識別算法。通過將提取ResNet 的基礎塊嵌入到進化算法中,自適應地設計適用于交通標志識別的網絡模型。實驗結果表明,本文進化ResNet 算法在德國交通標志數據集上的識別精度和參數量分別為99.41%和2.37×106。該算法能夠自適應搜索網絡構建塊的順序、參數和架構深度,設計更高效的網絡模型。下一步將在進化神經架構搜索算法中,設計一種數學機制分析問題域的復雜性,同時設置更高效的進化終止條件,并尋找關聯(lián)網絡架構性能的直接評價標準來代替基于分類準確度的適應度評估,以實現交通標志的實時檢測與識別。