陳葉舟
(西南大學 西塔學院,重慶400715)
交通標志是道路基礎設施的重要組成部分,它們為道路使用者提供了一些關鍵信息,并要求駕駛員及時調整駕駛行為,以確保遵守道路安全規定。若是沒有交通標志,可能會發生更多的事故,由于司機沒法獲知最高安全速度是多少,不了解道路狀況,好比急轉彎、危險路段等等。近年內,每一年大約有130萬人死在道路上。
如果沒有這些道路標志,這個數字肯定會更高。固然,自動駕駛車輛也必需遵照交通法規,因而必須掌握辨認和理解交通標志的能力。
交通標志識別是類別頻率不平衡的多類別分類問題。這是一個具有高度實用意義的具有挑戰性的現實世界計算機視覺問題,幾十年來一直是研究課題。關于此主題的許多研究已經發表,但是仍舊有很多的問題待改進的地方,道路標志的設計遵循明確的設計原則,使用不同的顏色,形狀,圖標和文本來幫助駕駛員識別。這些允許類之間的廣泛變化,使具有相同一般含義的標志(例如各種速度限制)擁有共同的一般外觀,從而導致交通標志的子集彼此非常相似。照明變化,部分遮擋,旋轉和天氣情況進一步增加了分類器必須應對的視覺外觀變化范圍。
本創采用德國 GTSRB
該數據集共有43 個種類(例如限速20 公里/小時、禁止進入、顛簸路等等),其中增加了照明變化,部分遮擋等多種情況,每個現實世界的交通標志只會出現一次。

圖1 GTSRB 數據集示例[1]
VGG 是Oxford 的Visual Geometry Group,K. Simonyan 和A. Zisserman 在ILSVRC 2014 提出的高性能卷積神經網絡,并發表論文《Very Deep Convolutional Networks for Large-Scale Image Recognition》[2],共有兩種結構,分別是VGG16 和VGG19,兩者并無本質上的區別,只是網絡深度不一樣。
1.2.1 VGG 16 的結構
VGG 16 的結構包含了16 個隱藏層(13 個卷積層和3 個全連接層)
1.2.2 VGG 16 的特性
VGGNet 的結構非常簡潔,整個網絡都使用了同樣大小的卷積核尺寸(3x3)和最大池化尺寸(2x2)
幾個小濾波器(3x3)卷積層的組合比一個大濾波器(5x5 或7x7)卷積層好
驗證了通過不斷加深網絡結構可以提升性能
VGG 耗費更多計算資源,并且使用了更多的參數,訓練花費及其消耗時間

圖2 VGG-16 網絡結構[2]
隨著網絡深度的不斷增加,模型精度卻并沒有一直提升,并且這個問題顯然不是完全由過擬合(overfitting)造成的,因為網絡加深后不僅測試誤差變高了,它的訓練誤差也變高了,這可能是因為更深的網絡會因為梯度消失/爆炸問題,從而阻礙網絡的收斂。也就是說, 網絡的性能隨著深度的增加出現了明顯的退化。ResNet[3]就是為了解決這種退化問題而誕生的。ResNet主要有五種主要形式:Res18,Res34,Res50,Res101,Res152;每個網絡都包括三個主要部分:輸入和輸出部分,中間卷積部分,網絡之間的不同主要在于中間卷積部分的殘差塊參數和個數存在差異。

圖3 Resnet 中的殘差塊結構[3]

圖4 Depthwise convolution 和pointwise convolution[4]
Mobile_ne[4]是谷歌提出的一種小巧而高效的CNN 模型,在保持模型性能(accuracy)的前提下降低模型大小(parameters size),同時提升模型速度(speed, low latency). MobileNet 的基本單元是深度級可分離卷積(depthwise separable convolution),一種可分解卷積操作(factorized convolutions),其可以分解為兩個更小的操作:depthwise convolution 和pointwise convolution, 會大大減少計算量和模型參數量。

圖5 數據集中每類圖片的分布情況
由上圖可知,數據集在43 個種類上的分布嚴重不均衡,有的種類[如:第1 類:speed limit(30km/h)]圖片數量超過了2000張,而有的種類[如:第19 類:Dangerous curve to the left]種類卻少于500 張。這種分布不均的情況會導致卷積神經網絡模型在訓練和測試時,因某一種類樣本更為充足和豐富而在這一類之中取得更好的測試結果,反之因某些類樣本不足,最終導致整體的測試集上的識別正確率不佳。
所以,在利用numpy 庫中sum 函數,保證選出的數據種類分布均衡的前提下,選出訓練集中的20000 張圖片作為最終的訓練集,選出驗證集中的2000 張作為最終的驗證集,此舉也同樣可以一定程度上減少因計算量過大所耗費的訓練時間。
2.2.1 圖像大小的統一化
原數據集中中圖片大小不均等,大小為:15(寬)×15(高)×3(RGB 彩色通道)-250×250×3。為了使圖片能夠輸入上述三種卷積神經網絡,故采用reshape 講數據集中所有的圖像變為:224×224×3 的格式。
2.2.2 圖像歸一化
對輸入為RGB 三通道的圖片去各個維度的均值,是在利用神經網絡解決圖片問題時,常見的圖片預處理操作。該操作可以使圖像數據集的分布劇中,有利于模型對圖像進行統一處理。
同時,采用的三個維度的均值為:103.939,116.779,123.68,三者是來自ImageNet 數據集中所有的平均三通道值。
為了更好的進行對于交通標志的識別,對上述的三種網絡,按照控制變量法,我們對其結構進行了如下改變。
2.3.1 Flatten 層的使用
在上述的網絡結構中,若不進行網絡結構的改變,原始輸出的數據是多維,無法進行下一步的操作,故添加flatten 層使多維數據變成一維,可以理解成“壓平”,完成從卷積層到全連接層的過度。
2.3.2 Dense 層的使用
Dense 層的作用等同于全連接層(Fully Connected Layers),在整個卷積神經網絡中起到“分類器”的作用,上述三種網絡中只包含了卷積層和池化層,將原始數據映射到隱層特征空間,全連接層則起到將學到的“分布式特征表示”映射到樣本標記空間的作用。
在實驗中,我們設置dense 層的尺寸為32。
2.3.3 Dropout 算法的使用[5]
Dropout 將在訓練過程中每次更新參數時按一定概率隨機斷開輸入神經元,這樣可以使模型泛化性更強,因為它不會太依賴某些局部的特征, 所以可以用于防止過擬合。
在實驗中,我們設置了dropout 的概率為:0.5。
2.4.1 學習率,優化算法的選擇
在實驗中,我們選擇了SGD(stochastic gradient descent)[7]為優化器,SGD 就是每一次迭代計算mini-batch 的梯度,然后對參數進行更新,是最常見的優化方法了,并利用momentum 項[6](模擬物理里動量的概念)能夠在相關方向加速SGD,積累之前的動量來替代真正的梯度,抑制振蕩,從而加快收斂。
缺點:實驗初始,很難選擇合適的Learning Rate[8],需要不斷的根據實驗結果對Learning Rate 此參數進行調整。
優點:在好的初始化和學習率調度方案的情況下,采用SGD 優化器所得到的結果更可靠。
在實驗中,我們首先嘗試了多種不同的學習率(learning rate)[8],0.0001,0.00001 和0.001 等。最終發現學習率為0.0001 時最為合適,故設置0.0001 為學習率,momentum[6]為0.9。
2.4.2 Epoch(整個訓練集被訓練算法遍歷的次數)和批尺寸(batch_size)的選擇
因為所采用的數據集數據量巨大,所以將數據集一次性的通過神經網絡是不現實的,所以在實驗中,我們將數據集分批(batch)處理。
因為實驗所使用的數據集共有43 個種類,為了覆蓋所有種類,我們將每一批的尺寸(batch_size)設置為40,整個訓練集會通過神經網絡模型100 次。
在實驗中,我們也加入了tensorboard,將訓練過程可視化,同時也可通過對比訓練集和驗證集的訓練過程,來判斷模型是否出現過擬合。
例如,下圖中訓練集和驗證集的曲線變化趨勢相同,則可判斷為沒有出現模型過擬合的情況。

圖8 驗證集訓練過程中隨epoch 增加的正確率

表1 三種網絡識別正確率對比

表2 三種網絡損失函數(loss)對比

表3 三種網絡訓練時長對比
由上面的結果可得知,經過相同訓練過程的三種網絡,VGG_16 網絡表現性能最優,但是從訓練時長對比得知,vgg_16網絡因為其計算參數巨大的原因,耗費時間多,幾乎為“輕量”的Mobile_Net 的兩倍。

表4 混淆矩陣示意圖
混淆矩陣(Confusion Matrix)又稱為可能性表格或是錯誤矩陣。它是一種特定的矩陣用來呈現算法性能的可視化效果,被廣泛的應用在監督學習中[9][10]。而非監督學習,通常使用匹配矩陣(Matching Matrix)。其每一列代表預測值,每一行代表的是實際的類別。這個名字來源于它可以非常容易的表明多個類別是否有混淆(也就是一個class 被預測成另一個class),例如表4,表5 中所示。
評價指標選擇:
準確率(Accuracy)[11]、精確率(Precision)[11]、召回率)Recall[11])、F1 值[11]、ROC 曲線[11]的AUC 值,都可以作為評價一個機器學習模型好壞的指標(evaluation metrics),而這些評價指標直接或間接都與混淆矩陣有關,前四者可以從混淆矩陣中直接計算得到。

表5 TP、FP、FN、TN
準確率(Accuracy)[11]
準確率表示預測正確的樣本(TP 和TN)在所有樣本(all data)中占的比例

F1 值就是精確率和召回率的調和平均值,其認為精確率和召回率一樣重要。

綜合上述的評價指標,因為我們要表示的是模型對于特定類的識別情況,所以我們選擇精確率(precision)作為指標,預測為該類的,有多少是該類。
例如圖5 中的第0 類:
VGG_16 中預測為第0 類的,100%全是第0 類
Mobile_Net 中預測為第0 類的,51.7%是第0 類
Resnet_50 中預測為第0 類的,28.3%是第0 類
根據表6,我們可得知三種模型對于43 個種類的不同側重,暨某模型對于特定的某幾個種類,具有超越其余兩種模型的測試結果。同時也可以發現,針對某些類別(類41 等),三種模型都沒有很好的測試結果。
根據表6 中“最終確定的網絡”,我們采取模型融合的方式對測試集再次進行測試,例如:對于第0 類,我們使用VGG_16網絡,對于第一類,我們使用Resnet_50 網絡,以此類推。最后,將所有類的指標平均后得到最后融合模型的測試結果如表7所示。
由表8 可知,融合模型在測試集上的準確率超越了其余三種模型,故融合模型這一操作在提升準確率上是有效的。

表6 三種網絡對數據集中具體一類的識別精確率(Precision)對比

表7 融合模型在測試集上的結果

表8 融合模型與三種模型準確率(Accuracy)對比

表9 融合模型與其余模型對比
但是從表9 可知,融合模型仍舊與世界上頂尖專家在IJCNN 全球圖像識別競賽上所才用的方法有一定的差距,例如Fatin Zaklouta 采用的隨機森林法(Radom Forest)。
同時,模型融合也與人類識別的結果由一定差距,為此,我們希望在以后工作中做如下改進。
(1)再次改變epoch 的次數;
(2)對數據集做數據增強工作;
(3) 嘗試新的優化器,如Adam,不僅僅限于SGD 和Momentum。