陳葉舟
(西南大學 西塔學院,重慶400715)
交通標志是道路基礎(chǔ)設(shè)施的重要組成部分,它們?yōu)榈缆肥褂谜咛峁┝艘恍╆P(guān)鍵信息,并要求駕駛員及時調(diào)整駕駛行為,以確保遵守道路安全規(guī)定。若是沒有交通標志,可能會發(fā)生更多的事故,由于司機沒法獲知最高安全速度是多少,不了解道路狀況,好比急轉(zhuǎn)彎、危險路段等等。近年內(nèi),每一年大約有130萬人死在道路上。
如果沒有這些道路標志,這個數(shù)字肯定會更高。固然,自動駕駛車輛也必需遵照交通法規(guī),因而必須掌握辨認和理解交通標志的能力。
交通標志識別是類別頻率不平衡的多類別分類問題。這是一個具有高度實用意義的具有挑戰(zhàn)性的現(xiàn)實世界計算機視覺問題,幾十年來一直是研究課題。關(guān)于此主題的許多研究已經(jīng)發(fā)表,但是仍舊有很多的問題待改進的地方,道路標志的設(shè)計遵循明確的設(shè)計原則,使用不同的顏色,形狀,圖標和文本來幫助駕駛員識別。這些允許類之間的廣泛變化,使具有相同一般含義的標志(例如各種速度限制)擁有共同的一般外觀,從而導致交通標志的子集彼此非常相似。照明變化,部分遮擋,旋轉(zhuǎn)和天氣情況進一步增加了分類器必須應(yīng)對的視覺外觀變化范圍。
本創(chuàng)采用德國 GTSRB
該數(shù)據(jù)集共有43 個種類(例如限速20 公里/小時、禁止進入、顛簸路等等),其中增加了照明變化,部分遮擋等多種情況,每個現(xiàn)實世界的交通標志只會出現(xiàn)一次。
圖1 GTSRB 數(shù)據(jù)集示例[1]
VGG 是Oxford 的Visual Geometry Group,K. Simonyan 和A. Zisserman 在ILSVRC 2014 提出的高性能卷積神經(jīng)網(wǎng)絡(luò),并發(fā)表論文《Very Deep Convolutional Networks for Large-Scale Image Recognition》[2],共有兩種結(jié)構(gòu),分別是VGG16 和VGG19,兩者并無本質(zhì)上的區(qū)別,只是網(wǎng)絡(luò)深度不一樣。
1.2.1 VGG 16 的結(jié)構(gòu)
VGG 16 的結(jié)構(gòu)包含了16 個隱藏層(13 個卷積層和3 個全連接層)
1.2.2 VGG 16 的特性
VGGNet 的結(jié)構(gòu)非常簡潔,整個網(wǎng)絡(luò)都使用了同樣大小的卷積核尺寸(3x3)和最大池化尺寸(2x2)
幾個小濾波器(3x3)卷積層的組合比一個大濾波器(5x5 或7x7)卷積層好
驗證了通過不斷加深網(wǎng)絡(luò)結(jié)構(gòu)可以提升性能
VGG 耗費更多計算資源,并且使用了更多的參數(shù),訓練花費及其消耗時間
圖2 VGG-16 網(wǎng)絡(luò)結(jié)構(gòu)[2]
隨著網(wǎng)絡(luò)深度的不斷增加,模型精度卻并沒有一直提升,并且這個問題顯然不是完全由過擬合(overfitting)造成的,因為網(wǎng)絡(luò)加深后不僅測試誤差變高了,它的訓練誤差也變高了,這可能是因為更深的網(wǎng)絡(luò)會因為梯度消失/爆炸問題,從而阻礙網(wǎng)絡(luò)的收斂。也就是說, 網(wǎng)絡(luò)的性能隨著深度的增加出現(xiàn)了明顯的退化。ResNet[3]就是為了解決這種退化問題而誕生的。ResNet主要有五種主要形式:Res18,Res34,Res50,Res101,Res152;每個網(wǎng)絡(luò)都包括三個主要部分:輸入和輸出部分,中間卷積部分,網(wǎng)絡(luò)之間的不同主要在于中間卷積部分的殘差塊參數(shù)和個數(shù)存在差異。
圖3 Resnet 中的殘差塊結(jié)構(gòu)[3]
圖4 Depthwise convolution 和pointwise convolution[4]
Mobile_ne[4]是谷歌提出的一種小巧而高效的CNN 模型,在保持模型性能(accuracy)的前提下降低模型大?。╬arameters size),同時提升模型速度(speed, low latency). MobileNet 的基本單元是深度級可分離卷積(depthwise separable convolution),一種可分解卷積操作(factorized convolutions),其可以分解為兩個更小的操作:depthwise convolution 和pointwise convolution, 會大大減少計算量和模型參數(shù)量。
圖5 數(shù)據(jù)集中每類圖片的分布情況
由上圖可知,數(shù)據(jù)集在43 個種類上的分布嚴重不均衡,有的種類[如:第1 類:speed limit(30km/h)]圖片數(shù)量超過了2000張,而有的種類[如:第19 類:Dangerous curve to the left]種類卻少于500 張。這種分布不均的情況會導致卷積神經(jīng)網(wǎng)絡(luò)模型在訓練和測試時,因某一種類樣本更為充足和豐富而在這一類之中取得更好的測試結(jié)果,反之因某些類樣本不足,最終導致整體的測試集上的識別正確率不佳。
所以,在利用numpy 庫中sum 函數(shù),保證選出的數(shù)據(jù)種類分布均衡的前提下,選出訓練集中的20000 張圖片作為最終的訓練集,選出驗證集中的2000 張作為最終的驗證集,此舉也同樣可以一定程度上減少因計算量過大所耗費的訓練時間。
2.2.1 圖像大小的統(tǒng)一化
原數(shù)據(jù)集中中圖片大小不均等,大小為:15(寬)×15(高)×3(RGB 彩色通道)-250×250×3。為了使圖片能夠輸入上述三種卷積神經(jīng)網(wǎng)絡(luò),故采用reshape 講數(shù)據(jù)集中所有的圖像變?yōu)椋?24×224×3 的格式。
2.2.2 圖像歸一化
對輸入為RGB 三通道的圖片去各個維度的均值,是在利用神經(jīng)網(wǎng)絡(luò)解決圖片問題時,常見的圖片預處理操作。該操作可以使圖像數(shù)據(jù)集的分布劇中,有利于模型對圖像進行統(tǒng)一處理。
同時,采用的三個維度的均值為:103.939,116.779,123.68,三者是來自ImageNet 數(shù)據(jù)集中所有的平均三通道值。
為了更好的進行對于交通標志的識別,對上述的三種網(wǎng)絡(luò),按照控制變量法,我們對其結(jié)構(gòu)進行了如下改變。
2.3.1 Flatten 層的使用
在上述的網(wǎng)絡(luò)結(jié)構(gòu)中,若不進行網(wǎng)絡(luò)結(jié)構(gòu)的改變,原始輸出的數(shù)據(jù)是多維,無法進行下一步的操作,故添加flatten 層使多維數(shù)據(jù)變成一維,可以理解成“壓平”,完成從卷積層到全連接層的過度。
2.3.2 Dense 層的使用
Dense 層的作用等同于全連接層(Fully Connected Layers),在整個卷積神經(jīng)網(wǎng)絡(luò)中起到“分類器”的作用,上述三種網(wǎng)絡(luò)中只包含了卷積層和池化層,將原始數(shù)據(jù)映射到隱層特征空間,全連接層則起到將學到的“分布式特征表示”映射到樣本標記空間的作用。
在實驗中,我們設(shè)置dense 層的尺寸為32。
2.3.3 Dropout 算法的使用[5]
Dropout 將在訓練過程中每次更新參數(shù)時按一定概率隨機斷開輸入神經(jīng)元,這樣可以使模型泛化性更強,因為它不會太依賴某些局部的特征, 所以可以用于防止過擬合。
在實驗中,我們設(shè)置了dropout 的概率為:0.5。
2.4.1 學習率,優(yōu)化算法的選擇
在實驗中,我們選擇了SGD(stochastic gradient descent)[7]為優(yōu)化器,SGD 就是每一次迭代計算mini-batch 的梯度,然后對參數(shù)進行更新,是最常見的優(yōu)化方法了,并利用momentum 項[6](模擬物理里動量的概念)能夠在相關(guān)方向加速SGD,積累之前的動量來替代真正的梯度,抑制振蕩,從而加快收斂。
缺點:實驗初始,很難選擇合適的Learning Rate[8],需要不斷的根據(jù)實驗結(jié)果對Learning Rate 此參數(shù)進行調(diào)整。
優(yōu)點:在好的初始化和學習率調(diào)度方案的情況下,采用SGD 優(yōu)化器所得到的結(jié)果更可靠。
在實驗中,我們首先嘗試了多種不同的學習率(learning rate)[8],0.0001,0.00001 和0.001 等。最終發(fā)現(xiàn)學習率為0.0001 時最為合適,故設(shè)置0.0001 為學習率,momentum[6]為0.9。
2.4.2 Epoch(整個訓練集被訓練算法遍歷的次數(shù))和批尺寸(batch_size)的選擇
因為所采用的數(shù)據(jù)集數(shù)據(jù)量巨大,所以將數(shù)據(jù)集一次性的通過神經(jīng)網(wǎng)絡(luò)是不現(xiàn)實的,所以在實驗中,我們將數(shù)據(jù)集分批(batch)處理。
因為實驗所使用的數(shù)據(jù)集共有43 個種類,為了覆蓋所有種類,我們將每一批的尺寸(batch_size)設(shè)置為40,整個訓練集會通過神經(jīng)網(wǎng)絡(luò)模型100 次。
在實驗中,我們也加入了tensorboard,將訓練過程可視化,同時也可通過對比訓練集和驗證集的訓練過程,來判斷模型是否出現(xiàn)過擬合。
例如,下圖中訓練集和驗證集的曲線變化趨勢相同,則可判斷為沒有出現(xiàn)模型過擬合的情況。
圖8 驗證集訓練過程中隨epoch 增加的正確率
表1 三種網(wǎng)絡(luò)識別正確率對比
表2 三種網(wǎng)絡(luò)損失函數(shù)(loss)對比
表3 三種網(wǎng)絡(luò)訓練時長對比
由上面的結(jié)果可得知,經(jīng)過相同訓練過程的三種網(wǎng)絡(luò),VGG_16 網(wǎng)絡(luò)表現(xiàn)性能最優(yōu),但是從訓練時長對比得知,vgg_16網(wǎng)絡(luò)因為其計算參數(shù)巨大的原因,耗費時間多,幾乎為“輕量”的Mobile_Net 的兩倍。
表4 混淆矩陣示意圖
混淆矩陣(Confusion Matrix)又稱為可能性表格或是錯誤矩陣。它是一種特定的矩陣用來呈現(xiàn)算法性能的可視化效果,被廣泛的應(yīng)用在監(jiān)督學習中[9][10]。而非監(jiān)督學習,通常使用匹配矩陣(Matching Matrix)。其每一列代表預測值,每一行代表的是實際的類別。這個名字來源于它可以非常容易的表明多個類別是否有混淆(也就是一個class 被預測成另一個class),例如表4,表5 中所示。
評價指標選擇:
準確率(Accuracy)[11]、精確率(Precision)[11]、召回率)Recall[11])、F1 值[11]、ROC 曲線[11]的AUC 值,都可以作為評價一個機器學習模型好壞的指標(evaluation metrics),而這些評價指標直接或間接都與混淆矩陣有關(guān),前四者可以從混淆矩陣中直接計算得到。
表5 TP、FP、FN、TN
準確率(Accuracy)[11]
準確率表示預測正確的樣本(TP 和TN)在所有樣本(all data)中占的比例
F1 值就是精確率和召回率的調(diào)和平均值,其認為精確率和召回率一樣重要。
綜合上述的評價指標,因為我們要表示的是模型對于特定類的識別情況,所以我們選擇精確率(precision)作為指標,預測為該類的,有多少是該類。
例如圖5 中的第0 類:
VGG_16 中預測為第0 類的,100%全是第0 類
Mobile_Net 中預測為第0 類的,51.7%是第0 類
Resnet_50 中預測為第0 類的,28.3%是第0 類
根據(jù)表6,我們可得知三種模型對于43 個種類的不同側(cè)重,暨某模型對于特定的某幾個種類,具有超越其余兩種模型的測試結(jié)果。同時也可以發(fā)現(xiàn),針對某些類別(類41 等),三種模型都沒有很好的測試結(jié)果。
根據(jù)表6 中“最終確定的網(wǎng)絡(luò)”,我們采取模型融合的方式對測試集再次進行測試,例如:對于第0 類,我們使用VGG_16網(wǎng)絡(luò),對于第一類,我們使用Resnet_50 網(wǎng)絡(luò),以此類推。最后,將所有類的指標平均后得到最后融合模型的測試結(jié)果如表7所示。
由表8 可知,融合模型在測試集上的準確率超越了其余三種模型,故融合模型這一操作在提升準確率上是有效的。
表6 三種網(wǎng)絡(luò)對數(shù)據(jù)集中具體一類的識別精確率(Precision)對比
表7 融合模型在測試集上的結(jié)果
表8 融合模型與三種模型準確率(Accuracy)對比
表9 融合模型與其余模型對比
但是從表9 可知,融合模型仍舊與世界上頂尖專家在IJCNN 全球圖像識別競賽上所才用的方法有一定的差距,例如Fatin Zaklouta 采用的隨機森林法(Radom Forest)。
同時,模型融合也與人類識別的結(jié)果由一定差距,為此,我們希望在以后工作中做如下改進。
(1)再次改變epoch 的次數(shù);
(2)對數(shù)據(jù)集做數(shù)據(jù)增強工作;
(3) 嘗試新的優(yōu)化器,如Adam,不僅僅限于SGD 和Momentum。