林皞,張琳
(上海海事大學(xué)信息工程學(xué)院,上海201306)
端對端的基于移動嵌入式端的車輛動態(tài)實(shí)時細(xì)粒度分類方法
林皞,張琳
(上海海事大學(xué)信息工程學(xué)院,上海201306)
卷積神經(jīng)網(wǎng)絡(luò)算法在物體分類與目標(biāo)識別方面的具有非常好的魯棒性。提出一種端到端的新型的輕量級卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),針對目前神經(jīng)網(wǎng)絡(luò)進(jìn)行了結(jié)構(gòu)壓縮;一種級聯(lián)形式多模型聯(lián)合檢測方法,完成小范圍的追蹤滿足實(shí)時檢測準(zhǔn)確度;采用中心對齊的思想來對特征進(jìn)行一致性統(tǒng)一,大大降低噪聲提高檢測的準(zhǔn)確度。
卷積神經(jīng)網(wǎng)絡(luò);輕量級;級聯(lián)形式;特征一致性
基于圖像處理的車輛類型識別技術(shù)是智能交通系統(tǒng)(IntelligentTransportSystem,簡稱ITS)中的一項(xiàng)非常重要的技術(shù),同樣在計算機(jī)視覺應(yīng)用領(lǐng)域中占有重要地位。本文提出一種基于手機(jī)等移動嵌入式終端的車輛品牌細(xì)粒度分類方法;采用基于實(shí)時視頻流的信息獲取方式,實(shí)現(xiàn)了自動的進(jìn)行車輛品牌的識別、包括車型(小轎車,SUV,小貨車、客車和貨車)生產(chǎn)廠家(寶馬,奔馳,大眾…)具體型號(寶馬 x3,x5,5系,7系,大眾 cc,寶來,捷達(dá)...)。
現(xiàn)有的車輛類型識別技術(shù)中,主要集中于對車輛類型進(jìn)行分步識別,例如首先對車輛款式進(jìn)行分類,比如分類為大型、中型及小型三類,或者轎車、貨車、客車三類;然后依據(jù)車輛品牌類別及年款進(jìn)行分類,例如大眾、寶馬、奧迪,依據(jù)這些識別結(jié)果得出車輛的整體類型信息,例如大眾帕薩特2007款,這種車輛類型識別方法操作復(fù)雜,計算量大,耗時較長,耗資較高。另外,目前車輛款式的識別方法需要保證車輛整體輪廓的清晰度以便檢測車輛的實(shí)際尺寸大小,因此該方法較難實(shí)現(xiàn)。另外對于現(xiàn)有的車輛類型識別技術(shù),其中多數(shù)應(yīng)用到了傳統(tǒng)的特征提取方法,例如梯度方向直方圖、局部二值模式紋理,在分析判別時大多采用了支持向量機(jī)(SupportVector Machine,簡稱SVM)方法。這些方法的使用具有局限性,例如在清晰場景下這些方法都有較高的識別率,但是在模糊場景下,例如因天氣變化、光線變化所引起的圖像模糊、夜間場景等場景下往往識別率較低;另外一般選取車輛的正面圖像(車頭、車尾)進(jìn)行品牌識別,由于車輛外觀表觀形式復(fù)雜,因此對所檢測的車輛與攝像機(jī)的拍攝距離、拍攝角度有著嚴(yán)格的要求。
對于車型識別算法,常用的方法種類比較多,例如基于模板匹配、統(tǒng)計模式等。例如名稱為[1]“基于靜態(tài)圖片的自動套牌車檢測方法(申請?zhí)枺?01310397152.5)”的中國發(fā)明專利申請公開的技術(shù)方案”中,提取靜態(tài)圖片中車輛前部圖片,確定車頭燈、散熱器、品牌和保險杠區(qū)域;提取車輛圖片的特征,并采用隨機(jī)子空間分類器集成方法合并圖片特征;根據(jù)車頭燈、散熱器、品牌和保險杠信息確定車輛品牌。名稱為[2]“基于圖像的車輛品牌識別方法和系統(tǒng)(申請?zhí)枺?01310416016.6)”的中國發(fā)明專利申請公開的技術(shù)方案”中,通過檢測車牌在輸入圖像中的位置;根據(jù)車牌位置計算多個車輛部件位置;從該多個車輛部件位置的每一個抽取特征向量;以及對所抽取的特征向量進(jìn)行分類并輸出車輛的品牌信息,該特征向量包括外形特征和形狀特征。上述車輛品牌型號的識別方法,通過提取車輛的特征進(jìn)行識別,檢測率低誤報較多,同時速度慢,無法滿足實(shí)時要求。
本文主要的研究內(nèi)容和貢獻(xiàn)如下:
(1)針對車臉以及車尾設(shè)計出一種新型的輕量級卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),該模型以完整與部分的車臉與車尾圖像作為輸入,得到車臉以及車尾的整體特征;在移動手機(jī)端以及嵌入式端,在正常光照下,不受復(fù)雜的環(huán)境的干擾,可對292種常見車型進(jìn)行端對端實(shí)時的細(xì)粒度檢測與識別;
(2)針對車輛車型識別提出一種級聯(lián)形式多模型聯(lián)合檢測方法:在一個車輛二分類模型的基礎(chǔ)上將二分類模型特征輸出結(jié)果分別作為車臉模型的輸入進(jìn)行結(jié)果的聯(lián)合判斷給出最終結(jié)果。
(3)本文采用中心對齊的思想:采用目標(biāo)檢測的方法對訓(xùn)練集中的車輛進(jìn)行定位之后再裁剪進(jìn)行訓(xùn)練,在檢測端也采用先定位再識別的方法,這樣就對輸入與輸出進(jìn)行了中心對齊,比原始非對齊的車臉圖像識別率高了35%;最終在移動端實(shí)時可對292種常見車輛達(dá)到89%的識別正確率。
基于深度卷積神經(jīng)網(wǎng)絡(luò)的物體識別方法,因?yàn)槠渥R別準(zhǔn)確度遠(yuǎn)遠(yuǎn)超過傳統(tǒng)的基于局部特征的方法,并且魯棒性很強(qiáng)不受場景等噪聲因素變換的影響,在物體識別的方向上慢慢的成為主流。但是神經(jīng)網(wǎng)絡(luò)算法的計算量常常需求很大,對硬件的計算能力要求很高;因?yàn)樵谇度胧揭约笆謾C(jī)端的硬件與高性能主機(jī)相差很大所以網(wǎng)絡(luò)結(jié)構(gòu)需要適量的修改。
針對車臉以及車尾的圖像也使用卷積神經(jīng)網(wǎng)絡(luò)來對其提取特征,并提出了一種新型的輕量級深度卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu);本節(jié)詳細(xì)的介紹了這種網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計以及調(diào)參方法。
模塊的設(shè)計思想是將三種經(jīng)典的網(wǎng)絡(luò)設(shè)計思想進(jìn)行融合。
(2)GoogleNet[4]中的 inception Module結(jié)構(gòu);采用分支結(jié)構(gòu),通過多尺度的多樣化的特征融合;增加了網(wǎng)絡(luò)對不同尺度的適應(yīng)性,類似于Multi-Scale的思想。在計算機(jī)視覺中,接觸對靈長類神經(jīng)視覺系統(tǒng)的研究,Serre使用不同尺寸的Gabor濾波器處理不同尺寸的圖片;inception Module表達(dá)能力更強(qiáng)的同時也大大降低參數(shù)量以及過擬合的情況。
(3)ResNet[5]中的 ResidualUnit殘差結(jié)構(gòu);
允許原始input信息直接傳輸?shù)胶竺娴膶又?;原因是因?yàn)樵诓粩嗉由钌窠?jīng)網(wǎng)絡(luò)的深度時,會出現(xiàn)一個Degradation的問題,及準(zhǔn)確率會上升之后然后到達(dá)飽和,再持續(xù)增加深度則會導(dǎo)致準(zhǔn)確率下降;那么后面加上幾個y=x的全等映射層,起碼誤差不會增加;假定神經(jīng)網(wǎng)絡(luò)某段結(jié)構(gòu)的輸入input為x,期望輸出為H(x),如果我們直接把x傳到輸出作為初始結(jié)果,那么此時我們需要學(xué)習(xí)的目標(biāo)就是 F(x)=H(x)-x,這就是一個殘差學(xué)習(xí)單元(Residual Unit)及學(xué)習(xí)的目標(biāo)改變了,不再是學(xué)習(xí)一個完整的H(x)而是output與input的差別H(x)-x及殘差;傳統(tǒng)的卷積層或全連接層在信息傳遞時,或多或少的存在信息丟失,殘差結(jié)構(gòu)保證了信息的完整性同時也簡化了訓(xùn)練的難度。
網(wǎng)絡(luò)結(jié)構(gòu)中,主要包含了“input”,“conv”,“BN”,“relu”,“ELU”“pool”,“shortcut”,“l(fā)inear”,“output”節(jié)點(diǎn)。其中“input”與“output”節(jié)點(diǎn)代表數(shù)據(jù)的輸入與輸出,每一層的開始的“input”代表把上一層的數(shù)據(jù)作為輸入,第一層的輸入為原始彩色3通道的車臉與車尾的圖像,每一層的“input”節(jié)點(diǎn)代表該層數(shù)據(jù)的輸出。“conv”節(jié)點(diǎn)代表卷積操作,在卷積操作中,每一個kernel也就是一個卷積核可以提取input的一種特征,多個卷積核可以提取多種特征呢。”BN”節(jié)點(diǎn)代表正則化操作,正則操作主要作用是防止“梯度彌散”,將權(quán)重分布?xì)w一到一個正態(tài)分布上,同時可以加快訓(xùn)練的速度,提高模型的精度。“relu”節(jié)點(diǎn)代表非線性映射操作,在alexnet誕生之前CNN采用的是sigmoid或tanh函數(shù)來做映射,但是relu可以增強(qiáng)稀疏性加速收斂(附圖)如果卷積計算的output小于0則等于0,否則保持原來的值不變?!癊LU”節(jié)點(diǎn)代表另一種非線性操作,但是相對“relu”更加的平滑,可以加速收斂并提高準(zhǔn)確度。與“relu”不同的是,ELU擁有負(fù)值,允許他們以更低的計算復(fù)雜度將平均單位激活推向更加接近0的值;“pool”節(jié)點(diǎn)代表池化操作(降采樣),主要目的是對卷積特征進(jìn)行降采樣,降低計算的復(fù)雜度的同時也降低過擬合的風(fēng)險,“pool”主要分為兩種,最大(max pooling)或平均值(average pooling)池化;“shortcut”節(jié)點(diǎn)代表 ResNet里面的殘差結(jié)構(gòu);“l(fā)inear”節(jié)點(diǎn)相當(dāng)于權(quán)重的線性組合起到特征融合的作用與全連接層類似。
該CNN結(jié)構(gòu)總共包含5層,由3個不同的模塊組成(如下圖所示)
圖1
圖2 模塊1
模塊1的設(shè)計采用簡化版的兩種不同的inception modual級聯(lián)形式;
模塊1的input為原圖片:3×224×224,進(jìn)入第一個分支:
左分支:卷積層包含13個kernel,每個kernel為3×3,stride為 2,padding為 1,output:13×112×112;
右分支:一個 2×2的最大池化,output:3×112×112;
Join:進(jìn)行通道數(shù)的合并輸出:16×112×112;
進(jìn)過BN正則化以及relu非線性變換之后進(jìn)入第二個分支:
左分支:第一個卷積層包含32個kernel,每個kernel為 3×3,stride為 2,padding為 1,output:32×56×56;進(jìn)過BN正則化以及relu非線性變換之后,直連第二個卷積層包含 32個 kernel,每個 kernel為 3×3,stride為 1,padding為 1,output:32×56×56(使得特征的學(xué)習(xí)能力更強(qiáng))。
右分支:卷積層包含32個kernel,每個kernel為1×1,stride為 2,output:32×56×56;
add:維度上進(jìn)行累加;之后進(jìn)行relu變換output:32×56×56。
圖3 模塊2
模塊2的設(shè)計采用ResNet中的Residual Unit殘差單元:
Input為模塊 1的 output:32×56×56;
第一個卷積層包含32個kernel,每個kernel為3×3,stride為 1,padding為 1,output:32×56×56
第一個卷積層包含32個kernel,每個kernel為3×3,stride為 1,padding為 1,output:32×56×56;殘差模塊為 32×56×56;output:32×56×56。下面是 6個模塊 2的直連最終的 output:32×56×56。
圖4 模塊3
模塊3的設(shè)計采用Inception Modual與Residual Unit相結(jié)合的級聯(lián)模式:
第一個分支:(Inception Modual)
Input為第二層的 output:32×56×56;
左分支:第一個卷積層包含64個kernel,每個kernel為 3*3,stride為 2,padding為 1,output:64×28×28
第二個卷積層包含64個kernel,每個kernel為3×3,stride為 1,padding為 1,output:64×28×28。
這里使用了ELU代替relu作為激活函數(shù)。
右分支:卷積層包含64個kernel,每個kernel為1×1,stride為2(這里使用不同的卷積核提取特征之后加以融合,豐富特征的多樣性)output:64×28×28。
第二個分支:(ResidualUnit)
Input:64×28×28
第一個卷積層包含64個kernel,每個kernel為3×3,stride為 1,padding為 1,output:64×28×28
第二個卷積層包含64個kernel,每個kernel為3×3,stride為 1,padding為 1,output:64×28×28,殘差模塊:64×28×28,output:64×28×28,下面直連 5個模塊 2,最終 output:64×28×28。
圖5 模塊4
模塊4的設(shè)計在模塊2與模塊3的基礎(chǔ)上加上了最終的輸出處理:
第一個部分結(jié)構(gòu)為模塊3,第二部分為模塊2,區(qū)別在于將relu激活函數(shù)替換成了ELU激活函數(shù)。Input為第三層的 output:64×28×28。
進(jìn)入模塊3 Inception結(jié)構(gòu):左分支:第一個卷積層包含 128個 kernel,每個 kernel為 3×3,stride為 2,pad-ding為 1,output:128×14×14第二個卷積層包含 128個kernel,每個 kernel為 3×3,stride為 1,padding為 1,output:128×14×14。右分支:卷積層包含 128個 kernel,每個 kernel為 1×1,stride為 2,output:128×14×14;
進(jìn)入模塊 3 Residual Unit結(jié)構(gòu):input:128×14×14,第一個卷積層包含128個kernel,每個kernel為3×3,stride為 2,padding為 1,output:128×7×7;
進(jìn)入模塊 2結(jié)構(gòu):input:128×7×7;第一個卷積層包含 128個 kernel,每個 kernel為 3×3,stride為 1,padding為 1,output:128×7×7;avgpool層 stride為 7×7,output:128×1×1;linear層 output:128×1×1,最終經(jīng)過 softmax輸出長度為292的向量。
此網(wǎng)絡(luò)結(jié)構(gòu)經(jīng)過層層的多樣化的特征提取以及特征融合,最終將車臉圖片從224×224變?yōu)?×7的大小,相當(dāng)于原始圖像的1/32;訓(xùn)練集擁有13w張292類不同角度的車臉圖像,驗(yàn)證集為4w張292類不同角度的車臉圖像,準(zhǔn)確度Top5_accuracy為97%,Top_1_accuracy為91%;模型大小為6.8MB。
結(jié)構(gòu)中的參數(shù)都是基于大量的實(shí)驗(yàn)得出的,其中最重要的是每一層中卷積核的個數(shù),在調(diào)試參數(shù)的過程,具體參數(shù)可通過可視化模型來調(diào)整??梢暬侵笇⒉恢庇^的層與層變換后的結(jié)果參數(shù)轉(zhuǎn)化為直觀的數(shù)字圖像。
數(shù)據(jù)流是指圖像數(shù)據(jù)在CNN結(jié)構(gòu)中的流動狀態(tài),在本網(wǎng)絡(luò)中數(shù)據(jù)主要經(jīng)過卷積和池化以及Inception Modual的concat,Residual Unit殘差融合四種操作。觀察數(shù)據(jù)流可視化的結(jié)果可調(diào)整模型中feature map的數(shù)量,如果發(fā)現(xiàn)數(shù)據(jù)流可視化結(jié)果中有大量相似或者無意義的圖像,說明feature map數(shù)量太多,這時候應(yīng)當(dāng)減少filter的個數(shù),如果發(fā)現(xiàn)數(shù)據(jù)流可視化結(jié)果中的圖像都各不相同,這時候可適當(dāng)?shù)膲埣觙eature map的個數(shù),直到選出滿足的參數(shù)。
Feature maps代表對圖像提取特征,一個filter代表對圖像提取一種特征,多個Feature maps代表對圖像提取多個特征。低層的Feature maps代表邊緣,紋理,顏色等基礎(chǔ)局部特征,高層的Feature maps代表抽象之后的全局特征,在Feature maps可視化的結(jié)果中,有些核會表示成特別有意義的圖案,例如橫線、豎線、曲線,邊緣輪廓,線面組合等,如果在可視化卷積的結(jié)果中沒有發(fā)現(xiàn)含有明顯圖案的圖像,說明CNN結(jié)構(gòu)設(shè)計不夠完善,可適當(dāng)調(diào)整CNN結(jié)構(gòu)組成例如添加Inception結(jié)構(gòu)增加特征提取的多樣化從而增強(qiáng)模型的表述能力。
由于網(wǎng)絡(luò)相對復(fù)雜只提取一部分進(jìn)行說明:
圖6 CNN模型輸入
圖7 模塊1的第一個卷積層的結(jié)果
將圖1作為CNN模型的輸入。該CNN結(jié)構(gòu)第一層卷積有13個filters,所以原始輸入圖片對應(yīng)13個feature maps,并且13個feature maps都各不相同,說明CNN訓(xùn)練得到的13個核提取的特征都各不相同,有些核提取的橫的邊緣,有些filter提取邊緣,有些filter分割背景。
圖8 為第一層模塊1第二個分支中第一個卷積結(jié)果
該卷積層具有32個filters,32個feature maps各不相同,相比于第一個分支中的結(jié)果更加的抽象且有代表性
本文提出一種級聯(lián)形式的多模型聯(lián)合檢測方法:通過目標(biāo)檢測模型(本文使用tiny-yolo)對目標(biāo)進(jìn)行定位并將定位之后裁剪的圖像送入上文中分類網(wǎng)絡(luò)進(jìn)行識別。
圖10
訓(xùn)練集使用tiny-yolo[6]進(jìn)行預(yù)處理;對于視頻動態(tài)實(shí)時檢測與靜態(tài)圖片檢測最大的區(qū)別在于鏡頭捕捉遠(yuǎn)近以及采集器抖動的情況,這對于分類模型的影響是巨大的;在檢測時使用tiny-yolo進(jìn)行目標(biāo)定位是為了統(tǒng)一與訓(xùn)練集的特征標(biāo)準(zhǔn)做到圖像的中心對齊,這樣可與將抖動以及鏡頭遠(yuǎn)近的情況通過定位的方式解決;同時也使得待檢測目標(biāo)填充整張圖片,大大地降低背景以及干擾物的噪聲。
圖5 為未經(jīng)裁剪的圖像
圖6 為tiny-yolo裁剪過后的圖像
使用tiny-yolo統(tǒng)一訓(xùn)練集與測試集的標(biāo)準(zhǔn)之后,分別對20000幀實(shí)時車臉街拍視頻進(jìn)行了測試準(zhǔn)確度有接近38%的提升。
證明圖像對齊操作能提高最后分類正確率。正確分類是指目標(biāo)圖像中的車臉識別為正確的車型,錯誤分類是指目驚圖像中的車臉識別為其他車型。
同時對各種經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)算法進(jìn)行了對比,測試框架為tensorflow1.0,測試硬件平臺為iPhone6。對齊方式采用tiny-yolo進(jìn)行裁剪對齊,EasyNet為本文介紹的輕型CNN模型;
實(shí)驗(yàn)1:將非對齊數(shù)據(jù)和對齊數(shù)據(jù)輸入inceptionV1模型比較分類正確率Top5_error與Top5_error1以及單幀時間
實(shí)驗(yàn)2:將非對齊數(shù)據(jù)和對齊數(shù)據(jù)輸入vgg16模型比較分類正確率Top5_error與Top5_error1以及單幀時間
實(shí)驗(yàn)3:將非對齊數(shù)據(jù)和對齊數(shù)據(jù)輸入EasyNet模型比較分類正確率Top5_error與Top5_error1以及單幀時間
從表1中可以看出,對于實(shí)時街拍車臉視頻,對齊后的數(shù)據(jù)比不對齊的數(shù)據(jù)分類器得到的準(zhǔn)確率至少高將近35%。證明車臉對齊操作對分類正確率有著至關(guān)重要的作用。
實(shí)時性以及模型大小也是本文考慮因素之一。
Tiny_yolo+EasyNet的級聯(lián)網(wǎng)絡(luò)聯(lián)合識別在20000幀實(shí)時車臉街拍視頻上的表現(xiàn),Top5_error為94%,Top_1_erro為89%,單幀時間為0.69s;
在50000張靜態(tài)各個角度的292類車臉測試圖片上的表現(xiàn) Top5_accuracy為 96%,Top_1_accuracy為90%;
表1
模型大小為6.8MB滿足手機(jī)等嵌入式存儲環(huán)境。
本文主要介紹了實(shí)時動態(tài)基于輕量級多姿態(tài)的卷積神經(jīng)網(wǎng)絡(luò)的車臉識別方法;動態(tài)視頻識別檢測的難點(diǎn)在于采集器采集圖像的遠(yuǎn)近以及抖動情況會對卷積神經(jīng)網(wǎng)絡(luò)的識別產(chǎn)生較大的影響,本位采用定位加識別的方法對動態(tài)視頻圖像進(jìn)行統(tǒng)一化處理,將其與訓(xùn)練集進(jìn)行對齊大大的改善了動態(tài)識別的精度;同時也提出一種輕量級多姿態(tài)的卷積神經(jīng)網(wǎng)絡(luò)EasyNet滿足實(shí)時性、準(zhǔn)確性以及嵌入式硬件需求。
[1]張百靈,周逸凡,管文杰.基于靜態(tài)圖片的自動套牌車檢測方法:,CN 103679191 A[P].2014.
[2]朱瓏,林晨曦,陳遠(yuǎn)浩,等.基于圖像的車輛品牌識別方法和系統(tǒng):,CN 103488973 A[P].2014.
[3]Simonyan K,Zisserman A.Very Deep ConvolutionalNetworks for Large-Scale Image Recognition[J].Computer Science,2014.
[4]Szegedy C,Liu W,Jia Y,etal.Going deeper with convolutions[J].2014:1-9.
[5]He K,Zhang X,Ren S,etal.Deep ResidualLearning for Image Recognition[C].Computer Vision and Pattern Recognition.IEEE,2016:770-778.
[6]Redmon J,FarhadiA.YOLO9000:Better,Faster,Stronger[J],2016.
End to End Vehicle Real-Time Fine-Grained Identification Method Based on Mobile and Embedded System
LIN Hao,ZHANG Lin
(College of Information Engineering,Shanghai Maritime University,Shanghai 201306)
Convolution neural network algorithm has very good robustness in classification and object detection.Presents a new lightweight end to end convolutional neural network structure that compress the structure;A cascade multiple joint detection method,uses small scales tracking to improve real-time detection accuracy;uses the center alignment to uniform feature,greatly reduces the noise and improve the detection accuracy.
Convolution NeuralNetwork;Lightweight;Cascade;Uniform Feature
1007-1423(2017)30-0012-07
10.3969/j.issn.1007-1423.2017.30.003
2017-05-02
2017-09-10