沈 雁,王 環(huán) ,2,戴瑜興 ,2
1.湖南大學 電氣與信息工程學院,長沙 410082
2.溫州大學 數(shù)理與電子信息工程學院,浙江 溫州 325035
在機器學習領(lǐng)域中,大多數(shù)的應(yīng)用問題都是通過分類器模型來解決的。從Rosenblatt研究出感知機(Perceptron)這一線性分類模型以來,對分類器的研究得到了迅速的發(fā)展。感知機僅能對線性的數(shù)據(jù)進行分類,而在現(xiàn)實中許多問題都是非線性的。后向傳播算法的出現(xiàn)使得神經(jīng)網(wǎng)絡(luò)成功地應(yīng)用于非線性的分類問題。此時的神經(jīng)網(wǎng)絡(luò)還較為簡單,通常為三層,即輸入層,隱藏層和輸出層。Vapnik等人在1992年提出了支持向量機,巧妙地運用核函數(shù)方法將非線性問題轉(zhuǎn)換為線性問題。由Hinton和LeCun等進一步發(fā)展出來神經(jīng)網(wǎng)絡(luò)深度學習算法,使得神經(jīng)網(wǎng)絡(luò)的學習能力得到了飛躍式的提高。使得深度學習成為當前機器學習的主流方向。Belzmann機和卷積神經(jīng)網(wǎng)絡(luò)等技術(shù)的發(fā)明,使得深度學習算法在各個領(lǐng)域的應(yīng)用都超越以往的方法,取得了最好的效果。隨著深度學習領(lǐng)域的不斷發(fā)展,出現(xiàn)了許多優(yōu)秀的計算框架,例如Caffe,Pytorch,Tensorflow,MXNet等等。其中Pytorch是以Torch為基礎(chǔ),使用Python腳本語言實現(xiàn)的版本。針對于大型的多層神經(jīng)網(wǎng)絡(luò)和大規(guī)模的訓練數(shù)據(jù),這些平臺都可以使用GPU進行加速,從而極大地縮短訓練的時間。
機器學習方法也越來越多地應(yīng)用于現(xiàn)代生活當中。例如汽車的輔助駕駛系統(tǒng)或者是無人駕駛系統(tǒng),對道路交通標志的識別都將是其中必不可少的一環(huán)??紤]到路況的復雜性,交通標志的識別及分類必須要考慮到各種極端條件,例如夜間暗光,霧霾,標志牌上的污漬等等。因此,分類器必須要有極好的可靠性和魯棒性。目前已經(jīng)提出了很多分類器算法。支持向量機(SVM)[1]方法采用非線性核函數(shù)映射來解決非線性問題,具有較強的泛化能力,且能很好地處理高維度的數(shù)據(jù)。但由于其中正比于樣本數(shù)量的矩陣計算的復雜性,使得其并不適合于具有大規(guī)模訓練樣本的應(yīng)用。另外,SVM作為二分類算法在解決多分類問題時必須使用多個SVM組合來解決。Adaboost方法則是在訓練時,通過T次的迭代訓練出T個弱分類器,再采用加權(quán)投票形成一個強分類器。其中的弱分類器可以是簡單的邏輯回歸,SVM,極限學習機(ELM)[2],以及神經(jīng)網(wǎng)絡(luò)。Adaboost方法具有結(jié)構(gòu)簡單容易實現(xiàn),不易于過擬合等優(yōu)點。但同時,當對Adaboost方法選擇越復雜的弱分類器時,則越可能發(fā)生過擬合,而像圖像類的高維數(shù)據(jù)通常是需要較復雜的弱分類器的。卷積神經(jīng)網(wǎng)絡(luò)[3-6]目前以其超越其分類器的優(yōu)異性能得到越來越多的應(yīng)用。常用的卷積神經(jīng)網(wǎng)絡(luò)都采用了非常多的網(wǎng)絡(luò)層來獲得較好的效果,如ResNet、AlexNet、VGG和GoogleNet等。這樣的網(wǎng)絡(luò)無論在訓練還是使用上都需要相當巨大的計算量。
本文在深度學習的理論基礎(chǔ)之上,將用于相似度計算的孿生神經(jīng)網(wǎng)絡(luò)構(gòu)造成分類器。在具有相同結(jié)構(gòu)和共享權(quán)值的兩組多層神經(jīng)網(wǎng)絡(luò)中,分別采用了卷積神經(jīng)網(wǎng)絡(luò)層,ReLU,max-pooling以及全連通網(wǎng)絡(luò),同時還利用dropout技術(shù)來預防過擬合問題。該方法能將在原始圖像空間難以劃分的圖像變換到以基準圖像為中心的特征空間,再通過距離的測量達到分類的功能。該孿生神經(jīng)網(wǎng)絡(luò)只使用很少的網(wǎng)絡(luò)層,利用相似度計算來實現(xiàn)一個快速的分類器。針對交通標志識別的應(yīng)用,將原始數(shù)據(jù)重新構(gòu)建為具有正負匹配對的訓練集。通過短時間的訓練,即可達到非常高的準確率。
孿生神經(jīng)網(wǎng)絡(luò)構(gòu)架[7]最早由Bromley和LeCun在1990年為了解決數(shù)字簽名的校驗問題而提出。一個孿生神經(jīng)網(wǎng)絡(luò)系統(tǒng)由一對孿生的兩個神經(jīng)網(wǎng)絡(luò)構(gòu)成。這兩個神經(jīng)網(wǎng)絡(luò)之間共享權(quán)值和偏置等參數(shù),但輸入的是不同的數(shù)據(jù)。通過神經(jīng)網(wǎng)絡(luò)的前向處理,可以將原本在原始空間中分辨困難的數(shù)據(jù)進行維度規(guī)約[8],從而變得容易分辨。例如48×48的圖像塊,其原始的維度便是2 304,這樣很難對一對圖像塊進行比較,也就是說很難采用常用的歐式距離計算它們之間的相似度。通過神經(jīng)網(wǎng)絡(luò)的處理便可以只提取出其中的特征向量,在孿生神經(jīng)網(wǎng)絡(luò)的后端只需對提取的特征向量進行歐式距離計算即可。這是因為在特征空間中,各個圖像塊的特征向量能反應(yīng)出它們之間的真實相似度。孿生神經(jīng)網(wǎng)絡(luò)的構(gòu)架見圖1。
圖1 孿生神經(jīng)網(wǎng)絡(luò)的構(gòu)架
為了能夠?qū)\生神經(jīng)網(wǎng)絡(luò)進行訓練,需要定義可微分的代價函數(shù)。因為孿生神經(jīng)網(wǎng)絡(luò)的目的不是為了對輸入進行分類。因此用于分類的代價函數(shù)(例如交叉熵[9])并不太合適。令X1,X2為孿生神經(jīng)網(wǎng)絡(luò)的輸入,Y為指示X1和X2是否匹配的二值標簽,有Y∈{0,1}。如果X1和X2相似,則Y=0,如果不相似則Y=1。采用的代價函數(shù)為如下的形式:
其中Dw為孿生神經(jīng)網(wǎng)絡(luò)輸出的兩個特征向量的歐式距離,即Dw(X1,X2)=||Gw(X1)-Gw(X2)||。由Gw來表示孿生神經(jīng)網(wǎng)絡(luò)將輸入X1,X2映射到它們的特征向量。m值用于在Gw上定義一個邊界,使得只有距離在該范圍內(nèi)的負樣本才對損失函數(shù)有影響。對于所有的訓練樣本,最后得到的總體損失函數(shù)為:
本文使用的深度孿生神經(jīng)網(wǎng)絡(luò)構(gòu)架見圖2。其分為特征提取網(wǎng)絡(luò)和相似度計算兩個部分。在特征提取網(wǎng)絡(luò)中,共包含四層的卷積神經(jīng)網(wǎng)絡(luò)。不同層次的卷積神經(jīng)網(wǎng)絡(luò)用于提取不同層次的特征。以容易理解的第一層卷積神經(jīng)網(wǎng)絡(luò)而言,其直接接受輸入的圖像,并從圖像上提取所需的特征。經(jīng)過訓練,其通過都會提取圖像中的各式各樣的點和邊特征。在卷積神經(jīng)網(wǎng)絡(luò)的后面使用非線性的Relu激活函數(shù)作為該層的神經(jīng)元。對于大規(guī)模的數(shù)據(jù)來說,ReLu激活函數(shù)具有比sigmoid激活函數(shù)和tanh激活函數(shù)等更好的擬合能力[10]。其也更能增強網(wǎng)絡(luò)的非線性,以及使得后面的神經(jīng)網(wǎng)絡(luò)更具判別性。第三層的卷積網(wǎng)絡(luò)層產(chǎn)生的結(jié)果和第四個卷積網(wǎng)絡(luò)層的結(jié)果會共同輸出到全連通神經(jīng)網(wǎng)絡(luò)層。因為第四層卷積網(wǎng)絡(luò)層比第三層卷積網(wǎng)絡(luò)提取更全局的特征,因此第一個全連通網(wǎng)絡(luò)接受到的是來自前級多尺度的特征輸入,形成多尺度卷積神經(jīng)網(wǎng)絡(luò)[11]。另外,在前三個卷積網(wǎng)絡(luò)層的后面都使用了max-pooling層來提供對微小移動的不變性。每個卷積網(wǎng)絡(luò)層還使用dropout技術(shù)[12]來防止網(wǎng)絡(luò)的過擬合。第一層全連通網(wǎng)絡(luò)同時連接到第三層和第四層卷積網(wǎng)絡(luò)的特征輸出,起到承接的作用。第二層的全連通網(wǎng)絡(luò)的輸出為128維的最終特征向量。
圖2 孿生神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖
所定義的網(wǎng)絡(luò)的配置參數(shù)見表1。使用的名稱中,前綴的“Conv”表示卷積網(wǎng)絡(luò)層,“Pool”表示max-pooling層,而“Full”則表示全連通網(wǎng)絡(luò)層。通過插入max-pooling層可以逐步地減少特征的維度,從而減少計算量。
表1 孿生神經(jīng)網(wǎng)絡(luò)各個網(wǎng)絡(luò)層的參數(shù)
前面論述了孿生神經(jīng)網(wǎng)絡(luò)作為計算各圖像間相似度的一個強有力的工具。據(jù)此,便可以將孿生網(wǎng)絡(luò)進行相應(yīng)的改裝,使之變?yōu)榉浅8咝У姆诸惼?。首先,為每一個類別在訓練樣本中選擇一個基準樣本,并通過大量的正反圖像對對孿生網(wǎng)絡(luò)進行訓練。在測試或?qū)嶋H使用中,基準樣本和待測樣本都會通過孿生網(wǎng)絡(luò)提取出它們的特征向量。最后通過計算待測樣本與各個基準樣本的歐式距離,選擇具有最高相似度基準樣本所對應(yīng)的類別作為該待測樣本的類別。該方法在實現(xiàn)上具有兩個優(yōu)點。其一是只需要使用很少的網(wǎng)絡(luò)層即可達到良好的效果。在本文中僅使用了4個卷積網(wǎng)絡(luò)層,4個ReLU層,3個max-pooling層,以及兩個全連通網(wǎng)絡(luò)層。其二是所需的計算量很小。在網(wǎng)絡(luò)訓練完成之后,各類別基準樣本的特征向量可以預先進行提取。在對待測樣本進行預測時只需要提取其特征向量,然后再計算與各個基準樣本的特征向量的距離即可。
識別過程的示意圖見圖3。為了將孿生神經(jīng)網(wǎng)絡(luò)應(yīng)用為分類器,如何對其進行訓練是非常重要的。在一般的采用單一深度網(wǎng)絡(luò)結(jié)構(gòu)的分類器上,只需要利用給定的分類標簽對原始的訓練數(shù)據(jù)集進行訓練即可。而如果采用孿生神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),則需要對原始的訓練數(shù)據(jù)集進行處理,使之符合孿生神經(jīng)網(wǎng)絡(luò)的訓練模式。首先,需要一個從每個交通標志類的訓練樣本中確定一個樣本作為基準,使得在進行相似度計算時有一個參照(見圖4(a))。然后將原始數(shù)據(jù)集中的樣本兩兩組合成大量的正樣本對和負樣本對。正樣本由基準樣本和同類別其他樣本形成,負樣本由基準樣本和不同類別的其他樣本形成。具體的孿生神經(jīng)網(wǎng)絡(luò)訓練集的生成算法為:
圖3 作為分類器使用的孿生網(wǎng)絡(luò)
圖4 (b)生成的8對隨機樣本
算法1生成正負樣本對
forn=0…43do
i=p+
idxs←range(pp+cn)
idxs ← shuffle(idxs)
form=0…cido
Sample.append(i,idxs[m])
l_idxs←range(0,p
r_idxs←range(p+cn,Ns)
idxs←conca(tl_idxs,r_idxs)
idxs← shuffle(idxs)
form=0…cido
Sample.append(i,idxs[m])
return Sample
其中使用了兩次隨機函數(shù)用于隨機地挑選不同類別中的某個樣本作為負的樣本對。同時,為了提高訓練的效果,對原始的數(shù)據(jù)進行擴充是非常重要的。在交通標志識別的應(yīng)用中,必須考慮到采集的標志圖像可能會存在包括位移和旋轉(zhuǎn)等各種變換。為了應(yīng)對這些不確定的變換,必須在訓練中對已有的有限樣本嘗試進行不同的變換。在實際使用中,可以將圖像在x,y坐標上進行相比于圖像尺寸±T%的隨機位移,±R位的隨機旋轉(zhuǎn),以及相比于圖像尺寸進行±S%的縮放。一個包含這些變換的正負樣本對見圖4(b)。
理想的模式識別系統(tǒng)的主要特性就是其對目標位置、旋轉(zhuǎn)以及形變的不變性。在CNN中引入的maxpooling層可以用來實現(xiàn)微小的位置不變性。但其對于較大的位置、旋轉(zhuǎn)以及形變等起不到太好的作用。因此空間變換器網(wǎng)絡(luò)(STN)[13]作為一種有效的解決方案變應(yīng)運而生。STN可以作為孿生神經(jīng)網(wǎng)絡(luò)的前級網(wǎng)絡(luò),在無需對輸入圖像進行標定的情況下,能夠自適應(yīng)地對數(shù)據(jù)進行空間變換和對齊(包括平移、縮放和旋轉(zhuǎn)等)。因此在原有孿生神經(jīng)網(wǎng)絡(luò)上加入空間變換網(wǎng)絡(luò),可以進一步地提高匹配的準確性。
STN由三個模塊組成,分別為定位網(wǎng)絡(luò),網(wǎng)格生成器和采樣器,其結(jié)構(gòu)見圖5。圖中U和V分別為STN的前級網(wǎng)絡(luò)和后級網(wǎng)絡(luò)。在本文的應(yīng)用中,U就是輸入的圖像塊,而V則是孿生網(wǎng)絡(luò)的其中一組卷積網(wǎng)絡(luò)。定位網(wǎng)絡(luò)是一個很小的子網(wǎng)絡(luò),同樣可以由卷積網(wǎng)絡(luò)和全連通網(wǎng)絡(luò)混合組成。該網(wǎng)絡(luò)通過大量的樣本進行自學習來產(chǎn)生一個有利于匹配的變換參數(shù)θ,這里的變換可以是簡單的位移,旋轉(zhuǎn)或者是常用的仿射變換。對于仿射變換來說,由得到的變換參數(shù)組成變換矩陣Tθ,對輸入的圖像塊進行如下的變換:
其中θ3和θ6表示平移,θ1和θ5的值的大小表示不同程度的縮放,而 θ1、θ2、θ4和 θ5共同表示對原始圖像的旋轉(zhuǎn)。網(wǎng)格生成器的作用是用于計算變換后圖像It中每個像素的位置對應(yīng)到的原始圖像中的位置。即給定It中任意一點的坐標xt,通過網(wǎng)格生成器能計算出其對應(yīng)在原圖像Is中的坐標xs。
圖5 空間變換器網(wǎng)絡(luò)的結(jié)構(gòu)
變換圖像It的生成還需要滿足可微分性,這樣才能夠通過后向傳播中的梯度下降算法進行有效的訓練。為了保證變換后輸出圖像的準確性,采樣器中可以采用雙線性插值方法從輸入中獲取變換輸出的像素值。雙線性插值的公式為:其中V輸出的變換圖像通道c上任意像素i,其坐標由Tθ(xt)計算為(x,y)。U則是輸入中同樣通道坐標為(n,m)的像素。max函數(shù)確保插值的鄰域僅為(x,y對應(yīng)輸入中(x,y)處的一個像素范圍內(nèi)。該式對于U和x的偏導數(shù)分別為:
其中sign(·)為符號函數(shù)。對于y的偏導數(shù)與對x的偏導數(shù)是相似的。公式使得梯度的后向傳播從輸出流向輸入的前級網(wǎng)絡(luò)U。而公式則使得梯度的后向傳播從輸出流向STN中的網(wǎng)格生成器和定位網(wǎng)絡(luò)。因此,不斷地運用基于梯度下降的優(yōu)化算法,便可以令STN不斷地得到訓練。鑒于STN完全可微分,其可以作為一個通用的神經(jīng)網(wǎng)絡(luò)層添加到整個網(wǎng)絡(luò)的任意地方。通常STN網(wǎng)絡(luò)僅需使用很小規(guī)模的CNN來進行學習,即很少的計算量,但對整個分類器準確度的提升具有顯著的效果。
由這三個模塊組成的STN由于在整體上都是可微分的,自然便可以作為一個功能層無縫地添加到已有的神經(jīng)網(wǎng)絡(luò)中。為了提高圖像塊的匹配率,本文將其作為對每個圖像塊的預處理層。具體的結(jié)構(gòu)見圖6。
圖6 加入空間變換器網(wǎng)絡(luò)的孿生網(wǎng)絡(luò)
在圖中的定位網(wǎng)絡(luò)中,使用的卷積網(wǎng)絡(luò)分別為Conv_0(32,3)和Conv_1(64,4),其中前后數(shù)字分別為濾波器數(shù)量和尺寸。使用的全連通網(wǎng)絡(luò)分別為Full_0(6 400,64)和Full_1(64,6),其中前后數(shù)字分別為輸入和輸出神經(jīng)元的數(shù)量。最后輸出的是6個仿射變換的參數(shù)。從前饋的角度來看,STN形成了一個具有學習能力的非線性函數(shù):
其中函數(shù) f是一個可學習的幾何參數(shù)預測器,即STN中的定位網(wǎng)絡(luò)部分。通過它便可以預測出輸入圖像與基準圖像之間的幾何變換。通常這一幾何變換是能夠包含平移、縮放和旋轉(zhuǎn)在內(nèi)的仿射變換。在訓練階段,STN是作為一種弱監(jiān)督學習的形式存在的。也就是說對于所有輸入的樣本對,只給出了該樣本對的是否匹配的標簽,而并不知道樣本中實際目標的相對于基準的變換。通過大量的訓練,STN需要自主地學習來獲得這些信息。
在STN的使用中有兩個需要注意的地方,一是定位網(wǎng)絡(luò)要足夠大才能比較好地捕捉到圖片的抽象特征,可以參考論文中的結(jié)構(gòu),二是空間變換器的初始化要滿足一開始輸出圖片和輸入圖片相同,否則一開始就隨機對圖片做變換很難訓練得到比較好的結(jié)果。以仿射變換為例,空間變換器最后一層輸出6個參數(shù)的全連接層初始化的權(quán)值為0,偏置為[1 0 0 0 1 0],這樣能夠開始時保證輸出圖像和輸入圖像一樣。
實驗的平臺為一臺PC機,主要配置為:Intel E5 2643 V2,16GB DDR3 RAM,Intel 240 G SSD,NVIDIA GTX 1070。實現(xiàn)的代碼均采用Python語言在Pytorch框架下完成。利用CUDA和cudnn提供的并行加速能力實現(xiàn)快速的訓練和識別任務(wù)。
為了驗證所設(shè)想的深度神經(jīng)網(wǎng)絡(luò)模型,采用GTSRB路標數(shù)據(jù)集[14]來完成測試。該數(shù)據(jù)集中包含了43個不同的路標在各種條件下的樣本圖像。整個數(shù)據(jù)集分為訓練集和測試集。訓練集共有26 640個樣本圖像,測試集共有12 569個樣本圖像。這些樣本圖像具有各種不同的尺寸,而神經(jīng)網(wǎng)絡(luò)系統(tǒng)要求的圖像為統(tǒng)一的尺寸。為此,在載入圖像時對圖像進行不同比例的縮放,統(tǒng)一尺寸為48×48個像素。通過生成算法,為孿生網(wǎng)絡(luò)提供53 280個正負樣本對的索引以及每對樣本是否匹配的標簽,通過它們可以用來進行訓練和驗證。
在構(gòu)建神經(jīng)網(wǎng)絡(luò)模型之前,還必須完成相關(guān)的數(shù)據(jù)準備工作。對于巨大的訓練樣本來說,在訓練時為神經(jīng)網(wǎng)絡(luò)模型快速地提供數(shù)據(jù)是至關(guān)重要的。為了加快訓練的速度,在一般情況下都是采用高性能的GPU來進行訓練。如果訓練的樣本仍然存儲于硬盤(即使是非??焖俚墓虘B(tài)硬盤)上,則其讀取速度會跟不上GPU的計算速度。導致的結(jié)果就是,GPU在很大一部分時間上是處于空閑狀態(tài)的。為了很好地解決這個問題,則可以將訓練樣本存儲于內(nèi)存上。在Linux下,采用tmpfs文件系統(tǒng)格式在內(nèi)存上創(chuàng)建一個臨時文件系統(tǒng)。然后,在該文件系統(tǒng)下采用基于鍵值對的leveldb數(shù)據(jù)庫存儲每個圖像的像素值及其編號。在存儲之前,還需要將表示48×48尺寸patch的numpy數(shù)組進行序列化。讀取的代碼則非常簡單,只需要使用db.get函數(shù)即可取出指定編號的序列化后的圖像。使用pickle.loads函數(shù)還原到原始的圖像。通過實驗表明,在該方法下GPU始終處于滿負荷的工作狀態(tài)。
在測試樣本輸入到神經(jīng)網(wǎng)絡(luò)之前,所有輸入的彩色樣本都經(jīng)過歸一化處理,分別采用了兩種方法來實現(xiàn)。第一種是零均值歸一化,公式為z=(x-u)/σ,其中u和σ分別為各個顏色通道上的顏色均值和方差。第二種方法則為對比度受限的自適應(yīng)直方圖均衡化(CLAHE)。在實驗中,對原始樣本圖像進行四種不同變換組合,以及加入空間變換器網(wǎng)絡(luò)(STN)。對孿生網(wǎng)絡(luò)的訓練相比于單組的網(wǎng)絡(luò)并沒有太多的特別之處,因為孿生網(wǎng)絡(luò)中的兩組深度網(wǎng)絡(luò)結(jié)果相同且共享權(quán)值的。因此,利用在前向計算中得到的損失函數(shù),在進行后向誤差傳播方式的優(yōu)化時僅需作用于一組網(wǎng)絡(luò)即可。在訓練時對神經(jīng)網(wǎng)絡(luò)的優(yōu)化采用隨機梯度下降(SGD)方法和Adam方法,設(shè)置它們的學習率分別為0.01和0.001,SGD方法中的動量(momentum)設(shè)置為0.9。訓練中每批次的樣本對數(shù)量為512,這樣可以充分利用到GPU中的顯存,以加快訓練速度。對整個網(wǎng)絡(luò)訓練200次,即200個Epoch,得到的損失函數(shù)曲線見圖7。
圖7 訓練的損失函數(shù)曲線
Adam方法能夠在訓練的過程中自適應(yīng)地調(diào)整各個參數(shù)的學習率,可以很快地收斂。而SGD方法雖然設(shè)置了比Adam方法更高的學習率,但其收斂的速度仍然比Adam方法慢很多。這充分體現(xiàn)了Adam方法具有非常優(yōu)異的自適應(yīng)學習率調(diào)整能力,這使得其非常適合于高維度和大數(shù)據(jù)集的非凸優(yōu)化。從圖中可以看到,使用了STN方法得到了更快的收斂速度。這是由于作為前端的STN會逐步地學習經(jīng)驗,對輸入圖像進行調(diào)整,從而提高后端分類器的效果。
另外,還可以看到,每隔40個epoch在損失函數(shù)曲線上會存在一個小的波動。這是因為每隔40個epoch,會重新生成一次樣本對,以及對樣本對重新進行隨機的變換。這一過程可以稱為重采樣過程。對于前次已訓練的很好的神經(jīng)網(wǎng)絡(luò),新生成的訓練樣本對會產(chǎn)生一點小小的沖擊。但隨著神經(jīng)網(wǎng)絡(luò)不斷的學習,這種影響會逐漸變小。訓練樣本對的重采樣是訓練數(shù)據(jù)擴充的重要手段。當數(shù)據(jù)集本身比較龐大時,為每個樣本都進行不同程度的位移、縮放和旋轉(zhuǎn)時,那么訓練樣本將會成幾何級的增長。因此,隨機地對樣本進行變換,并在訓練過程中重采樣,可以在不增加太多訓練時間的情況下,使分類器神經(jīng)網(wǎng)絡(luò)獲得更好的性能。
在訓練時,每隔10個epoch便會對學習得到神經(jīng)網(wǎng)絡(luò)參數(shù)進行存儲,以供測試之用。從所有保存的神經(jīng)網(wǎng)絡(luò)參數(shù)中確定出最好的一組神經(jīng)網(wǎng)絡(luò)參數(shù)。在使用和不使用STN的情況下,所得到的測試結(jié)果見表2。
表2 測試結(jié)果
從表1中可以看到,隨著使用的隨機變換種類越多,對測試樣本集得到的準確率會更高。這充分說明在訓練時樣本的多樣性對于神經(jīng)網(wǎng)絡(luò)的訓練是至關(guān)重要的。因為在訓練中所學習到的對樣本的各種變形可能在測試或者實際應(yīng)用中就有可能遇到。同時,也對比了采用兩種歸一化方法,以及不采用歸一化方法的測試,顯然進行歸一化處理后的樣本能達到更好的效果。而CLAHE方法也要優(yōu)于零均值歸一化方法。表中的最后一行為在同時使用位移、旋轉(zhuǎn)和縮放的條件下加入STN方法的結(jié)果,STN方法的使用進一步提高了識別的準確率,這說明STN能夠很好地對原始的輸入樣本進行校正,使其能夠更好地分類。
圖8給出了原始圖像和經(jīng)過STN變換后的結(jié)果。圖8(a)選取了限速30 km的標志的8個不同的輸入圖像的對比。圖8(b)則選取了其他8種不同標志的對比。可以發(fā)現(xiàn),STN會進行各種不同程度的自適應(yīng)的仿射變換,使它們盡可能地趨近訓練時使用的基準樣本圖像??梢钥吹綀D8(a)的第二行STN變換得到的限速30 km標志圖像都變得與圖4(a)中的基準相似。由于仿射變換本身便是偏移、縮放以及旋轉(zhuǎn)的合成,所以只要由多層卷積和全連通網(wǎng)絡(luò)構(gòu)成的定位網(wǎng)絡(luò)識別出了這些變換并預測出仿射變換參數(shù),便可以使用網(wǎng)格生成器和采樣器對原始輸入圖像進行校正。經(jīng)過STN處理之后的圖像變得更容易為后續(xù)的分類器神經(jīng)網(wǎng)絡(luò)所識別。
圖8 (b)STN結(jié)果對比
最后與近年來針對交通標志識別的主要方法進行了對比,結(jié)果見表3。Committee of CNNs[15]方法為當前取得測試結(jié)果最好的方法。該方法利用了深度卷積神經(jīng)網(wǎng)絡(luò)和多層感知器進行組合來選擇最可能的識別結(jié)果,達到了99.46%。但該方法既使用了深度卷積神經(jīng)網(wǎng)絡(luò),又使用了多層感知器,在訓練和預測的時間上的花費都比較高。其利用兩塊GTX 480和兩塊GTX580,訓練時間達37小時以上。WELM-AdaBoost采用了多分類AdaBoost算法,并輔以ELM模型作為弱分類器來進行快速的學習和識別,也達到了99.12%的不錯的準確率。Multi-Scale CNNs方法與本文中所提出的孿生神經(jīng)網(wǎng)絡(luò)中的單組網(wǎng)絡(luò)結(jié)構(gòu)很相似,只達到了98.31%的準確率。本文所提孿生神經(jīng)網(wǎng)絡(luò)方法采用簡練的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),取得了僅次于Committee of CNNs方法的結(jié)果,準確率達到了99.40%。在實際應(yīng)用中這樣的差距是微乎其微的,且結(jié)果都好于人工識別98.84%的準確率。本文方法在單個GTX 1070的支持下只需要很少的訓練時間,約3個小時。因此綜合考慮,本文的方法是一種性能優(yōu)異的分類器方法。
表3 與其他方法結(jié)果的對比
本文提出了一種基于孿生神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的高效分類器。該分類器使用孿生的一對多尺度卷積網(wǎng)絡(luò)來實現(xiàn)特征提取,并在易分的特征空間中實現(xiàn)兩個樣本間的相似度計算。為了使孿生神經(jīng)網(wǎng)絡(luò)滿足分類器的要求,從訓練數(shù)據(jù)集中提取各分類的基準樣本,并據(jù)此生成孿生神經(jīng)網(wǎng)絡(luò)所需的大批量正負樣本對。在訓練時,還隨機地對樣本進行了包括平移、旋轉(zhuǎn)和縮放在內(nèi)的變換,以加大神經(jīng)網(wǎng)絡(luò)學習的樣本的多樣性。在卷積網(wǎng)絡(luò)的前端無縫地增加了空間變換器網(wǎng)絡(luò),在使用時增強神經(jīng)網(wǎng)絡(luò)對各種變換的不變性,從而提高了分類器的準確率。將所提的分類器應(yīng)用于具有復雜環(huán)境條件下的交通標志識別任務(wù)。通過對GTSRB數(shù)據(jù)集的實現(xiàn)驗證,該分類器能夠到達極好的準確率,并能夠高效地運行。
:
[1]Greenhalgh J,Mirmehdi M.Real-time detection and recognition of road traffic signs[J].IEEE Transactions on Intelligent Transportation Systems,2012,13(4):1498-1506.
[2]徐巖,王權(quán)威,韋鎮(zhèn)余.一種融合加權(quán)ELM和AdaBoost的交通標志識別算法[J].小型微型計算機系統(tǒng),2017,38(9):2028-2032.
[3]周俊宇,趙艷明.卷積神經(jīng)網(wǎng)絡(luò)在圖像分類和目標檢測應(yīng)用綜述[J].計算機工程與應(yīng)用,2017,53(13):34-41.
[4]王龍,劉輝,王彬,等.結(jié)合膚色模型和卷積神經(jīng)網(wǎng)絡(luò)的手勢識別方法[J].計算機工程與應(yīng)用,2017,53(6):209-214.
[5]Paulin M,Mairal J,Douze M,et al.Convolutional patch representations for image retrieval:An unsupervised approach[J].International Journal of Computer Vision,2016,121(1):1-20.
[6]郭克友,賈海晶,郭曉麗.卷積神經(jīng)網(wǎng)絡(luò)在車牌分類器中的應(yīng)用[J].計算機工程與應(yīng)用,2017,53(14):209-213.
[7]Bromley J,Bentz J W,Bottou L,et al.Signature verification using a“SIAMESE”time delay neural network[C]//International Conference on Neural Information Processing Systems.Morgan Kaufmann Publishers Inc,1993:737-744.
[8]Hadsell R,Chopra S,Lecun Y.Dimensionality reduction by learning an invariant mapping[C]//2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition.IEEE,2006:1735-1742.
[9]Murphy K P.Machine learning:A probabilistic perspective[M].[S.l.]:MIT Press,2012.
[10]Krizhevsky A,Sutskever I,Hinton G E.ImageNet classification with deep convolutional neural networks[C]//International Conference on Neural Information Processing Systems.Curran Associates Inc,2012:1097-1105.
[11]Chen Y,Chen Y,Wang X,et al.Deep learning face representation by joint identification-verification[C]//International Conference on Neural Information Processing Systems.[S.l.]:MIT Press,2014:1988-1996.
[12]Srivastava N,Hinton G,Krizhevsky A,et al.Dropout:a simple way to prevent neural networks from overfitting[J].Journal of Machine Learning Research,2014,15(1):1929-1958.
[13]Jaderberg M,Simonyan K,Zisserman A,et al.Spatial transformer networks[C]//International Conference on Neural Information Processing Systems.[S.l.]:MIT Press,2015:2017-2025.
[14]Houben S,Stallkamp J,Salmen J,et al.Detection of traffic signs in real-world images:The German traffic sign detection benchmark[C]//InternationalJointConference on Neural Networks.IEEE,2008:1-8.
[15]Ciresan D,Meier U,Masci J,et al.A committee of neural networks for traffic sign classification[C]//InternationalJointConferenceonNeuralNetworks.IEEE,2011:1918-1921.