徐明遠(yuǎn),崔 華,張立恒
(長安大學(xué) 信息工程學(xué)院,陜西 西安 710000)
隨著生活水平的提高,車輛成為城市居民主要的出行手段,由此引發(fā)的道路擁堵問題困擾著許多城市。公共交通能承載城市的大量客流,緩解城市擁堵,各地都在大力提高公共交通對于居民出行的吸引力[1]。而公交公司目前缺少可靠的乘客擁擠信息識(shí)別技術(shù),無法根據(jù)實(shí)際的客流信息實(shí)時(shí)地調(diào)整公交車的運(yùn)營策略,尤其是乘車高峰期,公交車內(nèi)極其擁擠,完全不能滿足乘客舒適出行的要求。因此,圖像處理識(shí)別技術(shù)被應(yīng)用到公交車內(nèi)乘客擁擠狀態(tài)的識(shí)別中來。2012年Garcia-Bunster G等改正了圖像的視角,通過結(jié)合線性回歸模型和線行判別兩個(gè)參數(shù),使面積測算和計(jì)數(shù)達(dá)到最優(yōu)映射,以此來實(shí)現(xiàn)公交車排隊(duì)乘客計(jì)數(shù)[2]。2013年Daley W等用紅外技術(shù)檢測公交內(nèi)的乘客狀態(tài),分析車輛和乘客的位置形狀分布,解決車內(nèi)乘客的計(jì)數(shù)問題[3]。2014年Mudoi D等利用背景差分法提取目標(biāo)圖像的相應(yīng)區(qū)域,使用搭建的人工神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并利用結(jié)果中目標(biāo)的顏色、形狀特征完成乘客擁擠識(shí)別[4]。以上識(shí)別方法都有著各自的不足之處,背景差分算法會(huì)受乘客的運(yùn)動(dòng)陰影、車廂的動(dòng)態(tài)背景及車廂內(nèi)光照變化等因素的干擾,而目標(biāo)檢測一般是檢測公交車內(nèi)乘客的頭部特征,如果乘客染發(fā)或者乘客衣服與頭發(fā)顏色相近,可能就會(huì)導(dǎo)致錯(cuò)誤的判斷。
目前,深度學(xué)習(xí)算法能夠很好地解決圖像識(shí)別的問題[5]。文中在國內(nèi)外公交車內(nèi)擁擠狀態(tài)識(shí)別研究的基礎(chǔ)上,結(jié)合對公交車內(nèi)圖像擁擠特征的分析和卷積神經(jīng)網(wǎng)絡(luò)(CNN)的研究,提出了一種基于改進(jìn)VGG-16網(wǎng)絡(luò)的公交車內(nèi)擁擠識(shí)別方法??紤]到公交公司對乘客擁擠信息識(shí)別的實(shí)際需要,建立了公交車內(nèi)擁擠圖像四分類數(shù)據(jù)集,經(jīng)過遷移學(xué)習(xí)的權(quán)值參數(shù)共享,對改進(jìn)后的VGG-16模型進(jìn)行訓(xùn)練測試。該方法能較好地解決以上各個(gè)識(shí)別方法的不足,識(shí)別的結(jié)果能使公交公司及時(shí)對乘客擁擠或?qū)⒁獡頂D的情況采取相應(yīng)的措施,實(shí)現(xiàn)智慧調(diào)度,提高公交出行的吸引力,從根本上緩解城市交通擁堵。
受到生物學(xué)家研究的啟發(fā),計(jì)算機(jī)視覺科學(xué)家開創(chuàng)性地提出了卷積神經(jīng)網(wǎng)絡(luò)模型[6]。卷積神經(jīng)網(wǎng)絡(luò)與普通神經(jīng)網(wǎng)絡(luò)的不同之處是卷積神經(jīng)網(wǎng)絡(luò)采用卷積層和池化層作為特征抽取器[7]。卷積和池化能極大地減少模型的參數(shù)和復(fù)雜度,其基本結(jié)構(gòu)如圖1所示。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
在CNN結(jié)構(gòu)中,卷積操作通過權(quán)值共享的形式減少了網(wǎng)絡(luò)中參數(shù)的數(shù)量,同時(shí)增加了網(wǎng)絡(luò)的泛化能力,這些權(quán)重在網(wǎng)絡(luò)中采取隨機(jī)初始化的方式,在訓(xùn)練中可以學(xué)習(xí)為能夠檢測邊緣、顏色、形狀的濾波器[8]。卷積運(yùn)算的公式為:
(1)
其中,xj和yj是第i層的輸入特征映射和第j層的輸出特征映射,wij是卷積濾波器的權(quán)重,*表示卷積運(yùn)算,bj和facti(·)是第j層的偏置和激活函數(shù)。
池化層是將相似的特征進(jìn)行組合,池化計(jì)算卷積輸出的特征圖中一個(gè)局部區(qū)域的值,通過池化操作減少卷積層輸出的特征向量,防止過擬合,同時(shí)降低了數(shù)據(jù)表達(dá)的維度,并極大地減少模型參數(shù)數(shù)量和網(wǎng)絡(luò)中的計(jì)算量[9]。
常見的池化方法[10]有:最大池化(max pooling)、平均池化(mean pooling)和概率池化(stochastic pooling)。最大池化:取圖像某一區(qū)域特征的最大值作為該區(qū)域的特征。平均池化:取圖像某一區(qū)域特征的均值作為該區(qū)域的特征。概率池化:依據(jù)概率矩陣的大小,對矩陣區(qū)域求加權(quán)平均。三種池化方式如圖2所示。
圖2 三種池化方式
此外還有一些池化方式。例如:重疊池化(overlapping pooling),空金字塔池化(spatial pyramid pooling)在卷積神經(jīng)網(wǎng)絡(luò)中也具有比較穩(wěn)定的特征提取能力[9]。
為了解決實(shí)際問題,網(wǎng)絡(luò)必須能逼近任意的分類函數(shù),因此就要引入非線性激活函數(shù)[11]。常用的激活函數(shù)包括Sigmoid函數(shù)、Tanh函數(shù)和Relu函數(shù)。公式如下:
(2)
(3)
Relu(x)=max(x,0)
(4)
Sigmoid函數(shù)和Tanh函數(shù)都能夠讓神經(jīng)網(wǎng)絡(luò)逼近非線性函數(shù),解決非線性問題,但是都可能會(huì)出現(xiàn)梯度消失或者梯度爆炸的情況,且計(jì)算比較復(fù)雜。而Relu的優(yōu)點(diǎn)在于計(jì)算簡單,梯度穩(wěn)定,也可以表現(xiàn)出抑制的效果,所以文中所訓(xùn)練測試的網(wǎng)絡(luò)模型均使用Relu函數(shù)作為激活函數(shù)。圖3為上述三種激活函數(shù)的曲線圖。
圖3 三種激活函數(shù)曲線
VGGNet在AlexNet的基礎(chǔ)上探究了網(wǎng)絡(luò)模型的識(shí)別性能和深度的關(guān)系,在探究過程中發(fā)現(xiàn)較小的卷積核和更深的網(wǎng)絡(luò)可以明顯提升模型的分類精度,使得錯(cuò)誤識(shí)別率明顯下降。VGGNet使用了3*3的卷積核并將模型的層數(shù)加深,兩個(gè)3*3卷積核堆疊在一起的視野范圍相當(dāng)于一個(gè)5*5的卷積核的視野,而三個(gè)3*3卷積核堆疊在一起的視野范圍相當(dāng)于一個(gè)7*7的卷積核,在同樣的視野范圍內(nèi)采用3*3的卷積核可以降低參數(shù)的數(shù)量[12]。與此同時(shí)更深的網(wǎng)絡(luò)意味著會(huì)有更多的非線性變換,網(wǎng)絡(luò)的學(xué)習(xí)能力會(huì)更強(qiáng),可以學(xué)習(xí)到更多的特征。VGGNet還采用多尺度訓(xùn)練的方法,增加了訓(xùn)練時(shí)的數(shù)據(jù)量,防止過擬合的同時(shí)提升了準(zhǔn)確率[13]?;赩GGNet網(wǎng)絡(luò)結(jié)構(gòu)的獨(dú)特之處以及該網(wǎng)絡(luò)在公開數(shù)據(jù)集上的優(yōu)異表現(xiàn),文中選擇VGG-16網(wǎng)絡(luò)作為解決公交車內(nèi)擁擠狀態(tài)識(shí)別問題的特征提取網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 VGG-16網(wǎng)絡(luò)結(jié)構(gòu)
為了滿足對公交車內(nèi)擁擠狀態(tài)識(shí)別的準(zhǔn)確性和計(jì)算效率要求,設(shè)計(jì)了改進(jìn)的VGG-16模型,在保證準(zhǔn)確率的同時(shí)降低模型的計(jì)算量。文中構(gòu)造的公交車擁擠狀態(tài)識(shí)別模型依然使用了標(biāo)準(zhǔn)VGG-16網(wǎng)絡(luò)結(jié)構(gòu)的卷積層,16個(gè)卷積層被五個(gè)池化層分隔開,輸入的公交車內(nèi)乘客擁擠狀態(tài)圖像通過16個(gè)卷積層和五個(gè)池化層的計(jì)算能提取到較為明顯的特征。模型最后的全連接層模擬大腦的邏輯認(rèn)知過程,對卷積池化層提取的特征進(jìn)行分類,得出識(shí)別標(biāo)簽[14-15]。由于VGG-16模型的層數(shù)和參數(shù)是為1 000個(gè)分類類別設(shè)計(jì)的,其中的權(quán)重參數(shù)數(shù)量有65×106個(gè),且參數(shù)較大部分分布在全連接層上,而文中要解決的問題是4種狀態(tài)的分類識(shí)別,不需要那么多的權(quán)重參數(shù)去參與計(jì)算,因此,提出用2個(gè)全連接層替換原有的3個(gè)全連接層的改進(jìn)方法設(shè)計(jì)第一個(gè)全連接層的神經(jīng)元為4 096個(gè),第二個(gè)全連接層即輸出層的神經(jīng)元個(gè)數(shù)為4個(gè),降低模型參數(shù)個(gè)數(shù)和復(fù)雜度,以提高模型識(shí)別精度和計(jì)算效率。
圖5 改進(jìn)VGG-16網(wǎng)絡(luò)結(jié)構(gòu)
設(shè)計(jì)的模型如圖5所示。所有卷積計(jì)算都采用3*3大小的卷積核,卷積步長固定為1,所有的池化操作都采用2*2的最大池化,池化步長固定為2,去除了一層全連接層,使得卷積神經(jīng)網(wǎng)絡(luò)可以節(jié)省大量計(jì)算和內(nèi)存。模型采用Relu函數(shù)作為學(xué)習(xí)特征的激活函數(shù),由此可以使獲得的特征更明顯,從而達(dá)到更好的分類識(shí)別效果。
遷移學(xué)習(xí)是希望模型從大量的數(shù)據(jù)樣本中學(xué)習(xí)到比較泛化的特征,從而補(bǔ)充有限樣本的部分特征。在實(shí)際場景中無法收集到所有的樣本,如果只用這些有限的樣本訓(xùn)練模型,就會(huì)很容易發(fā)生過擬合現(xiàn)象,除此之外,如果使用的網(wǎng)絡(luò)層數(shù)較多則可能會(huì)導(dǎo)致前邊幾層的參數(shù)很難得到更新,而通過遷移學(xué)習(xí)就可以解決以上麻煩[16]。VGG-16預(yù)訓(xùn)練網(wǎng)絡(luò)是通過100萬幅圖像的ImageNet數(shù)據(jù)庫中訓(xùn)練而成,擁有大量已訓(xùn)練完成的參數(shù)和權(quán)重,特別是卷積層的權(quán)重參數(shù)已經(jīng)能夠?qū)D像的曲線、邊緣、輪廓特征進(jìn)行較為有效的特征提取。為避免從頭訓(xùn)練整個(gè)網(wǎng)絡(luò),減少網(wǎng)絡(luò)訓(xùn)練時(shí)間和提高網(wǎng)絡(luò)訓(xùn)練效率,可將在ImageNet上訓(xùn)練完成的VGG-16網(wǎng)絡(luò)作為文中模型的預(yù)訓(xùn)練模型,通過微調(diào)參數(shù)遷移學(xué)習(xí)的方式,將預(yù)訓(xùn)練的VGG-16模型權(quán)重參數(shù)遷移到改進(jìn)模型,利用預(yù)訓(xùn)練模型的參數(shù)優(yōu)化各層的模型參數(shù),加快模型損失值的收斂速度,提高識(shí)別精度和模型的穩(wěn)定性,更好地解決公交車內(nèi)擁擠狀識(shí)別問題。遷移過程如圖6所示。
圖6 VGG遷移學(xué)習(xí)模型示意圖
基于某市公交公司實(shí)際數(shù)據(jù),文中建立了一個(gè)公交車內(nèi)擁擠狀況圖像數(shù)據(jù)集來評估模型的性能。這些視頻數(shù)據(jù)來自公交車內(nèi)的前后攝像頭,從前后兩個(gè)角度俯瞰整個(gè)車廂,將其中比較清晰的視頻選取出來,按照500幀截取一次,共獲得15 194張圖片。公交車內(nèi)擁擠狀態(tài)如果只分為擁擠和不擁擠意義不大,無法對即將乘車的乘客和公交車的調(diào)度人員產(chǎn)生實(shí)際的指導(dǎo)價(jià)值,因此根據(jù)實(shí)際需要將公交車內(nèi)的擁擠情況分為state0,state1,state2和state3四種狀態(tài)。其中,state0表示車內(nèi)座位未坐滿且車內(nèi)走道大面積未占用的空車狀態(tài);state1表示走道小部分被占用,乘客中有明顯空隙的寬松狀態(tài);state2表示走道大部分被占用但乘客中有少量空隙的較擁擠狀態(tài);state3表示走道大部分或完全被占用,乘客中無空隙的擁擠狀態(tài)。每張圖片都是由2個(gè)不同的標(biāo)注員獨(dú)立標(biāo)注的,對于相同圖片的非相同標(biāo)注,需要兩名標(biāo)注員再進(jìn)行一輪評估,才能達(dá)成最終的標(biāo)簽。最終,15 194張?jiān)紙D像被分為四類,各類圖像數(shù)量分別為4 066張,3 582張,3 414張和4 072張,各類狀態(tài)如圖7所示,依次為state0,state1,state2和state3。
圖7 各類狀態(tài)展示圖
實(shí)驗(yàn)使用Ubuntu16.04系統(tǒng),i7-7700k處理器,24 GB內(nèi)存,采用建立好的公交車內(nèi)擁擠狀態(tài)四分類數(shù)據(jù)集,每一類取出500張作為測試樣本,剩下的作為訓(xùn)練樣本,將每張圖片歸一化到 224×224像素。網(wǎng)絡(luò)模型訓(xùn)練學(xué)習(xí)率設(shè)置為0.01,批處理大小設(shè)為32,最大迭代次數(shù)為5 000次,使用caffe框架進(jìn)行模型訓(xùn)練。
模型訓(xùn)練過程如圖8和圖9所示。
圖8 標(biāo)準(zhǔn)VGG-16模型訓(xùn)練圖
圖9 改進(jìn)VGG-16模型訓(xùn)練圖
(1)兩種模型訓(xùn)練的損失函數(shù)值都隨著迭代次數(shù)的增加呈現(xiàn)下降趨勢,且下降速度越來越慢,使用改進(jìn)VGG訓(xùn)練時(shí)的初始損失函數(shù)值相比于VGG標(biāo)準(zhǔn)模型更小而且收斂過程中波動(dòng)較小,改進(jìn)的VGG-16最終收斂的損失函數(shù)值更低,基本上穩(wěn)定在0.04附近,而VGG標(biāo)準(zhǔn)模型損失函數(shù)值收斂到0.1左右。
(2)兩種模型的訓(xùn)練準(zhǔn)確率都隨著迭代次數(shù)的增加而不斷上升,且上升的速度趨于平緩,最終到達(dá)一個(gè)穩(wěn)定的上限,改進(jìn)后的VGG模型最終的訓(xùn)練準(zhǔn)確率要略高于標(biāo)準(zhǔn)模型,最終穩(wěn)定在96.5%左右,且曲線波動(dòng)較小,而標(biāo)準(zhǔn)模型最終穩(wěn)定在95%左右,曲線波動(dòng)較大,模型表現(xiàn)不夠穩(wěn)定。
為進(jìn)一步測試改進(jìn)VGG模型的性能,選擇傳統(tǒng)的分區(qū)域融合算法以及AlexNet,GoogleNet兩種深層神經(jīng)網(wǎng)絡(luò)進(jìn)行對比試驗(yàn)。分區(qū)域融合算法是通過人工選定圖像的目標(biāo)區(qū)域,融合HSV顏色模型法,幀間差分法以及紋理分析法實(shí)現(xiàn)公交車的分區(qū)域擁擠判斷,根據(jù)各區(qū)域的結(jié)果匯總得出乘客的擁擠狀態(tài)信息。各方法使用事先建立好的測試集進(jìn)行測試,測試集每一類有500張圖片,實(shí)驗(yàn)結(jié)果如表1所示。
表1 文中模型與其它模型方法的識(shí)別準(zhǔn)確率對比 %
表1對比了不同方法各類狀態(tài)的識(shí)別結(jié)果,AlexNet、GoolgeNet、VGG-16Net與文中改進(jìn)模型4種卷積神經(jīng)網(wǎng)絡(luò)模型的平均識(shí)別準(zhǔn)確率均優(yōu)于傳統(tǒng)的分區(qū)域融合算法,各種方法的平均識(shí)別準(zhǔn)確率分別為86.9%,92.5%,93.8%,95.2%,96.1%。在對存在模糊分類界限的state1和state2狀態(tài)進(jìn)型識(shí)別時(shí),文中改進(jìn)模型比傳統(tǒng)的分區(qū)域融合算法分別提升了17.1%和11.3%。在卷積神經(jīng)網(wǎng)絡(luò)模型中,標(biāo)準(zhǔn)VGG-16和改進(jìn)模型的特征提取都是通過3*3濾波器的層層提取,能夠更加有效地提取公交車內(nèi)的擁擠狀態(tài)特征,識(shí)別結(jié)果要優(yōu)于AlexNet和GooleNet。由于改進(jìn)VGG模型減少了全連接層數(shù)量,大量降低了訓(xùn)練參數(shù)量,因此在識(shí)別精度上略高于標(biāo)準(zhǔn)VGG。從測試結(jié)果看,文中提出的改進(jìn)VGG-16模型比其它模型方法具有更好的識(shí)別準(zhǔn)確率,更適合解決公交車擁擠狀態(tài)識(shí)別的實(shí)際問題。
對公交車內(nèi)擁擠識(shí)別問題進(jìn)行研究,在標(biāo)準(zhǔn)VGG-16網(wǎng)絡(luò)基礎(chǔ)上,用2個(gè)全連接層替換原有的3個(gè)全連接層,并用4標(biāo)簽Softmax分類器替換原有的分類器,利用遷移學(xué)習(xí)對建立好的公交車擁擠狀態(tài)四分類數(shù)據(jù)集進(jìn)行訓(xùn)練和測試。
對比其它方法,改進(jìn)后的VGG模型識(shí)別精度更高,準(zhǔn)確率達(dá)到96.1%,且比標(biāo)準(zhǔn)VGG模型收斂更快,更加穩(wěn)定,能更好地解決公交車擁擠狀態(tài)識(shí)別問題。下一步要對模型的卷積層和池化層的結(jié)構(gòu)進(jìn)行優(yōu)化,提高模型對于模糊分類界限state1和state2的特征提取能力和識(shí)別精度。