劉廷建,顧乃杰,張孝慈,林傳文
1.中國科學技術大學 計算機科學與技術學院,合肥 230027
2.中國科學技術大學 安徽省計算與通信軟件重點實驗室,合肥 230027
3.中國科學技術大學 先進技術研究院,合肥 230027
近年來,我國汽車保有量的急劇增長給交通管理造成了巨大的壓力。智能交通管理系統的出現,極大地提高了交通管理的便捷性和高效性,給大眾的生活帶來了廣泛的影響。卡口監控場景下的車輛精細型號識別作為智能交通系統中的重要組成部分,不僅可以為車輛檢測、識別和跟蹤提供有效的信息,還有助于打擊違法套牌行為、減少套牌車犯罪行為等。
關于車輛型號識別的研究,最初主要解決的是車輛制造商品牌的分類,如奔馳、奧迪、比亞迪等,這類研究只對車輛型號做了粗略的分類。實際上,車輛的同一品牌會包含多個系列,如奧迪A5和奧迪Q5便屬于奧迪旗下的兩個不同的精細型號。由于車輛精細型號種類繁多,同一個制造商不同子型號的車輛正臉在外觀上又很相似,而且監控攝像頭容易受天氣、光照等因素的影響,導致不同車輛型號間的差異變小,因此針對車輛精細型號的研究更具挑戰性。
針對車輛精細型號識別的問題,國內外眾多學者已經進行了研究。Wang等人[1]通過提取車輛臉部位置特征向量,并建立車輛臉部特征庫,然后利用最小距離法依次比較特征庫中車輛臉部特征向量和目標樣本特征向量之間的差異,以此判斷該樣本的類別。這種方法雖然實現簡單,但算法泛化性能不足。Psyllos等人[2]利用車牌位置等先驗知識定位出車標位置,然后使用一個概率神經網絡(Probabilistic Neural Network,PNN)完成車輛品牌的識別,但對于車輛精細型號的識別,只用車標區域的特征信息并不足以很好地區分同一品牌下的不同子系列的型號。Yu等人[3]提出了一種基于詞袋(Bag-of-Words,BoW)的車輛標識識別方法,首先提取車標的尺度不變特征變換(Scale-Invariant Feature Transform,SIFT)特征,其次將特征量化為視覺詞匯表,最后建立空間信息直方圖訓練一個SVM分類器來實現車標的識別。該方法對于SIFT特征的提取,通常需要大量的計算,且準確率也不高。張等人[4]提出一種基于聯合特征的卷積神經網絡(Convolutional Neural Network,CNN),該方法將通過CNN中不同層提取的特征聯合起來作為全連接層的輸入,訓練分類器用于車型分類。該方法雖然識別效果較好,但由于額外使用了一個輔助網絡,從而降低了模型的識別速度。Munroe等人[5]先檢測出車輛正臉圖片的邊緣信息,然后從中提取一組固定長度的特征向量,最后用K最近鄰(K-Nearest Neighbor,KNN)方法完成車型的分類。但由于只采用了單一的車輛邊緣信息,沒有考慮車輛其他局部區域的特征,因此識別效果不佳。Yang等人[6]構建了一個公開的車輛圖像數據庫CompCars,并用經典的CNN模型(AlexNet、Overfeat和GoogLeNet等)對車輛精細型號的識別問題進行了研究,但并沒有針對車輛精細型號識別問題對現有的CNN模型作進一步改進。Fang等人[7]提出了一個由粗到精的CNN模型,用以提取并融合車輛的局部特征和全局特征,并訓練一個SVM分類器實現車輛精細型號的識別,但相比端到端的CNN模型,這種方法訓練和測試的速度都較慢。
如上所述,現有的車輛精細型號識別方法仍然存在諸多局限性。一方面,對于傳統的人工提取車輛特征進行識別的方法[1,3],通常需要十分復雜的計算,且算法泛化性能不足;另一方面基于改進卷積神經網絡的車輛精細型號識別方法[4,7],雖然在提取圖像特征時,得到了比普適性較差的傳統手工設計特征法更好的結果[8-10],但仍然存在一些缺點,例如(1)只重視模型識別精度的提升而忽略模型識別速度的下降;(2)車輛特征提取不充分,只提取車輛輪廓或車標區域等單一特征,而沒能綜合考慮車輛全局和局部特征;(3)模型參數規模較大,使得模型更容易過擬合。為克服上述局限性,本文針對卡口監控場景下的車輛精細型號識別問題,提出一種高效的基于多尺度特征融合的端到端CNN模型,在大幅度降低模型參數規模的同時,提高了模型的識別精度。
為解決復雜卡口監控場景下車輛精細型號的識別問題 ,本文構建了一個基于多尺度特征融合的卷積神經網絡模型(Multi-Scale feature fusion CNN,MS-CNN)。為便于闡述,下文中采用MS-CNN指代該網絡模型。MS-CNN模型的總體結構如圖1所示。從圖1可以看出,MS-CNN包含一個輸入層,4個特殊的結構單元(TraConv0,MlpConv1,MlpConv2和MlpConv3),以及兩個全連接層fc1和fc2。以下將從前向傳播過程,依次闡述MS-CNN各層的結構。

圖1 MS-CNN網絡結構示意圖
表1列出了MS-CNN模型的網絡結構參數。如表所示,輸入MS-CNN模型的是卡口監控場景中的車輛正臉彩色圖像,該圖像變換為3×224×224的尺寸后,作為結構單元TraConv0的輸入。表1中的C、H、W分別代表圖像的通道數、高度和寬度。TraConv0保持了傳統的卷積形式,依次包含一個卷積層、一個池化層和一個局部響應歸一化(Local Response Normalization,LRN)層[11]。加入LRN層的主要目的是抑制隱藏層輸出大的激勵,從而提升模型的泛化能力。此外,在MS-CNN模型中,每個卷積層后都會緊隨一個ReLU(Rectified Linear Unit)層[11],以增強網絡的非線性擬合能力。

表1 MS-CNN網絡結構參數
如圖1所示,在TraConv0后依次創建了3個結構單元:MlpConv1、MlpConv2和MlpConv3。這3個單元有相同的結構,不同之處在于MlpConv1中的第一個卷積層的步長以及填充與后兩者不同,因此下文以Mlp-Conv1為例闡述這種結構單元的組成和作用。
MlpConv1結構單元包含一個卷積核大小為3×3的卷積層conv1,后接兩個卷積核大小為1×1的卷積層cccp1_1和cccp1_2,最后將隱含層結果經過最大池化后輸出。這種結構借鑒了Lin等人在文獻[12]提出的NIN(Network In Network)網絡中一個非常重要的觀點:使用形如MlpConv1的結構代替傳統的卷積結構,有助于改善模型對非線性特征的表達能力。以ReLU[11]激活函數為例,一個傳統的卷積層可按照公式(1)計算:

公式中,(i,j)是特征圖的像素索引,xi,j是卷積窗口中的特征塊,k是特征圖的通道索引。而MlpConv1結構可以看作是一個卷積層加上傳統的多層感知器(Multilayer Perceptron,MLP),其計算公式為:

公式(2)中,n是MLP中層的編號。結合公式(1)和公式(2),可看出,傳統卷積層是通過使用非線性激活函數(如ReLU)的線性組合來產生特征圖,而MLP卷積層中特征圖 fn的計算依賴于 fn-1,從而實現多個特征圖的線性組合,達到跨通道信息整合的目的。因此使用形如MlpConv1的結構代替傳統的卷積層,使得網絡實現跨通道信息整合,并提高非線性特征的提取能力。
在此基礎上,本文依次堆疊了3個相似的MlpConv1單元。鑒于CNN層數越高視野域越大的特性,這樣的堆疊方式既考慮了底層(靠近輸入層)結構單元對車輛局部特征的學習,又兼顧了高層結構單元對車輛全局特征的提取,也為下文的特征融合提供了多尺度的特征選擇。同時,由于這種堆疊結構中大量使用了1×1的卷積核,使得在增加網絡深度的同時,有效降低了網絡的參數量。
MS-CNN模型中另一個關鍵的結構是實現對特征的融合操作。如圖1所示,全連接層fc1同時與MlpConv2結構單元的池化層pool2和MlpConv3結構單元的池化層pool3連接,并且將fc1的輸出固定為一個160維的向量。這種設計的目的是因為隨著下采樣的逐步推進,pool3層含有的神經元個數太少,從而成為網絡信息傳遞的瓶頸;另一方面,pool3層提取到的特征比pool2層具備更多的全局性特征,即越往后的卷積層具備越大的視野。因此這種特征的融合操作,既考慮了車輛局部的特征(pool2層),又兼顧了車輛全局的視野(pool3層)。在具體實現時,如表1所示,增加了一個concat層,用于拼接pool2和pool3層的輸出,并與fc1全連接,使得每個圖像最終學習到一個160維的特征向量。
最后將fc1層的輸出送入Softmax層[8]進行分類,并給出各類別的概率值。此外,MS-CNN模型還在fc1層后插入一個dropout層[13],用以避免某些特征僅僅在與其他特定特征組合下才有效果的情況,從而提升防止模型過擬合的能力。
相對于其他經典卷積神經網絡,本文在構建MS-CNN模型時力求在保證模型精度的同時使用最少的參數?;谶@個思想,在上述網絡構建過程中使用了以下設計策略。
3.2.1 減少大尺寸卷積核的使用
從理論上來講,使用小尺寸卷積核更有利于壓縮模型的規模,如使用1個3×3的卷積核所需要的參數量是1×1卷積核的9倍。因此在構建MS-CNN模型過程中,避免了使用像AlexNet模型中11×11的這種大尺寸卷積核。MS-CNN模型除了在網絡開始階段使用一個5×5的卷積核對樣本進行特征的粗略提取外,其余都是3×3和1×1的小尺寸卷積核。
3.2.2 減少輸入輸出通道數量
對于一個使用卷積核大小為D×D的卷積層,在不考慮偏置的情況下,當前卷積層所有參數的數量可由公式(3)計算:

公式中,D是卷積核尺寸,C是輸入通道數量,N是輸出通道數量。由公式(3)可看出,模型壓縮不僅需要減少大尺寸卷積核的使用,還需要減少當前層特征圖的輸入輸出通道數量。因此,在MS-CNN模型構建過程中,合理設計了一系列相對偏小的通道數量,而不使用像NIN模型中1 024這種數量較大的輸入輸出通道數。
3.2.3跨通道信息整合
傳統的CNN模型是卷積層和池化層交替堆疊,而在MS-CNN模型中,使用了MLP卷積結構,即一個3×3的卷積層后緊隨兩個1×1的卷積層的形式。在這種結構中,輸入特征圖經過3×3的卷積層后,延遲最大池化的操作,然后再使用1×1的卷積核實跨通道的信息整合。在結構的最后,才進行池化操作。這種結構能夠使得模型對樣本的非線性特征具有更好的表達能力。
上述3個策略中,前兩個策略都是針對降低模型參數規模而設計的,第三個策略則是針對提升模型精度而提出的,再結合3.3節中對多尺度特征融合的分析,使得MS-CNN模型在保證模型精度的同時使用最少的參數。
實際卡口監控場景中,被拍攝到的車輛正臉圖片除了車身輪廓外,還包含了車燈、車標、散熱器格柵等豐富的局部特征,因此在提取車輛特征時,就需要兼顧車輛的局部特征和全局特征。如表1所示,pool2層的輸出包含96個大小為6×6的特征圖,將每個特征圖轉換為一維向量并按序拼接成一個3 456維的向量,記為向量A。同理,將pool3的輸出拼接成一個1 152維的向量,記為向量B。然后將向量A和向量B再拼接后形成一個長為4 608的一維向量C,則該向量C即作為fc1層的輸入。向量C經過fc1層后降維到160維,這個降維后的向量就是從樣本中提取到的車輛的最終特征表示。
由于越高的卷積層具有越大的視野,因此提取自pool3的向量B比提取自pool2的向量A具有更全局性的車輛特征。考慮到相比車身的全局輪廓特征,車輛精細型號分類更應該關心車輛的局部特征提取,因此拼接后的向量C中提取自pool2的向量A具有更大的比重。這種全局特征和局部特征的融合,從不同尺度上盡可能地保留了車輛的特征信息,從而提高了網絡的特征表達能力。
為了驗證本文提出的基于多尺度特征融合的車輛精細型號識別方法的有效性,將文中提出的方法在公開數據集上進行了測試,并將測試結果與其他幾種方法進行了對比。實驗中使用Caffe[14]平臺訓練MS-CNN模型,訓練過程中采用了帶沖量的隨機梯度下降法(Momentum SGD),其中初始學習率為0.001,衰減因子為0.000 5,沖量值為0.9。采用多分步(Multistep)策略更新學習率,實驗最大迭代次數為250 000次,并分別在第150 000和200 000更新學習率。
實驗平臺為一臺8卡GPU服務器,配有2顆Intel XeonE5-2620 v2 2.1 GHz CPU及126 GB內存。GPU是NVIDIA Tesla K40 m,單精度峰值為4.29 Tflops,顯存為12 GB GDDR5,顯存帶寬為288 GB/s。
實驗采用了由香港中文大學提供的CompCars數據集[6]。CompCars數據集包括兩類圖片:一類是從互聯網收集的車輛各個角度的圖片;另一類是通過監控探頭所捕獲的車輛正臉圖片。本文選擇了后者作為實驗的數據集,包括281個車輛精細型號的44 481張車輛正臉圖像。實驗中,根據Fang等人在文獻[7]中的數據集切分方式,將數據集按7∶3的比例隨機劃分為訓練集和測試集。CompCars數據集的特點是圖像采集環境變化較大,覆蓋了白天、黑夜、雨天和霧天等多種情況,其部分樣本如圖2所示。

圖2 CompCars數據集樣例
基于上述同一數據集,設計了幾組對比實驗,以驗證本文所提出的方法的先進性。以下將從模型分類效率和分類準確率兩方面來描述。
4.2.1 模型分類效率
表2對比了4種方法的模型參數大小和分類效率。其中,模型參數大小是在Caffe平臺中訓練得到的CNN模型大小,而分類效率指模型對一張圖片進行分類的時間開銷,也即是Caffe平臺中每張圖片在前向(Forward)計算過程中的平均用時。模型參數規模越小則其需要的內存開銷也越小,模型分類效率越高則其實用性也越強。

表2 卷積神經網絡模型參數大小
表2中,前三行是采用AlexNet[11]、NIN[12]和GoogLeNet[15]這3種經典的CNN模型對CompCars數據集進行分類的結果。從表中可以看出,本文所提出的MS-CNN模型對一張圖片的前向計算只需0.83 ms。相對于表中另外3種CNN模型,其分類效率分別提高了2.80倍、3.80倍和9.52倍,同時模型參數大小僅為3.93 MB。因此,MS-CNN模型相對于表中另外2種CNN模型具有更小的模型參數規模和更高的分類效率。
4.2.2 模型分類準確率
為了驗證本文提出的方法在車輛精細型號分類問題上的準確率,除了對比表2中3種經典的CNN模型的分類結果外,還引入了同樣基于CompCars數據集的3篇文獻中的識別結果,對比結果如表3所示。表中Acc1和Acc2分別表示兩種不同的分類準確率。由于實驗所采用的CompCars數據集中,各類樣本數目很不均衡(類別樣本數目平均為158張,而最少的類別僅有14張圖片,最多的類別卻有565張),因此如果只采用如公式(4)所示的傳統準確率Acc1的計算方法就會忽略樣本數量少的類別分類準確率差的情況。為避免這種情況,本文引入了Fang等人在文獻[7]中提出的一種新的準確率Acc2。如公式(5)所示,Acc2等價于各類別準確率之和的算術平均值。

表3 分類準確率對比

其中,ti是第i類預測正確的樣本個數,ni是第i類樣本總數,N是樣本的類別個數。
圖3中展示了MS-CNN與3種經典CNN模型隨著迭代次數的增加,分類準確率的變化情況。結合表3中的識別結果,可以看出,在3種經典CNN模型中GoogLeNet的識別結果最佳,其Acc1和Acc2分別達到了98.36%和97.83%。表中第4、5、6行是文獻[16-17]和文獻[7]同樣基于CompCars監控數據集上所提出的方法的分類性能,其中第4、5行的實驗結果是Fang等人在文獻[7]中復現了文獻[16-17]的實驗結果。實驗結果表明,文獻[16]和文獻[17]所提出的方法在CompCars上數據集上效果不佳。Fang等人在文獻[7]中提出的方法取得了較高的準確率,Acc1達到了98.63%,Acc2達到了98.29%。綜合表3的實驗結果可看出,本文所提出的MS-CNN模型無論是Acc1還是Acc2都優于其他6種方法。

圖3 分類準確率對比
結合表2和表3,進一步綜合考慮模型分類效率和分類準確率兩個方面。與3種經典CNN模型中準確率最高的GoogLeNet相比,MS-CNN模型的Acc1和Acc2分別提升了0.44%和0.60%,分類效率提高了9.55倍,且模型參數大小僅為GoogLeNet的1/12。此外,本文提出的端到端MS-CNN模型不同于表3中Fang等人在文獻[7]中提出的方法,后者提出的方法需要單獨訓練一個SVM分類器來對提取出的車輛特征進行分類。因此相比文獻[7]中的方法,端到端的MS-CNN模型不僅在準確率上有所提升,而且模型更為小巧簡潔。
由于每個樣本最后僅用一個160維的特征向量表示,因此即使MS-CNN模型中存在全連接層,也能夠有效降低網絡中的參數規模。此外MS-CNN中還大量采用了小尺寸卷積核,使得最終模型參數大小不到NIN[12]模型的1/6。同時,對車輛局部特征和全局特征的有效融合,增強了網絡對車輛特征的表達能力,使得在網絡參數規模大幅度降低的同時,模型的兩種分類準確率均有所提高。
MS-CNN模型中依次堆疊了3個相似的MlpConv1單元,雖然其在增加網絡深度的同時,有效降低了網絡的參數量,但過多的1×1卷積核數量可能會對模型分類精度造成影響。為對不同數量的1×1卷積核下的模型識別性能進行評估,本節分別對不同組合情況下的模型識別精度進行了測試,測試結果如表4所示。表中N_stack表示當前模型堆疊的MlpConv單元個數,N_kernel表示在當前模型的每個MlpConv單元中,3×3的卷積層后連接的1×1卷積層個數。特別的是,當N_kernel為0時,當前MlpConv單元可視為傳統的卷積結構,即對3×3卷積層的輸出直接進行池化操作。

表4 不同的1×1卷積核數量的識別結果
在保持與各組對比實驗無關條件不變的前提下,共設置10組對比實驗,分為兩大類。第一類是堆疊兩個相似的MlpConv單元,第二類是堆疊3個相似的MlpConv單元。對于每一類,再分別對模型中每個MlpConv單元中1×1卷積核個數統一從0到4逐個實驗,每類共計5組實驗。實驗中,fc1層的融合操作的輸入來自靠近fc1層的兩個MlpConv單元的池化層輸出。
觀察表4可發現,無論N_stack的值等于2還是3,一方面,模型準確率最低的情況都發生在N_kernel為0時,這也從側面印證了前文中提出的“使用形如MlpConv1的結構代替傳統的卷積結構,有助于改善模型對非線性特征的表達能力”的觀點;另一方面,當N_kernel的值等于2時模型識別精度最佳,N_kernel的值大于2時,模型精度不升反降,說明過多的1×1的卷積核確實會對模型的精度造成影響。并且,當N_kernel為0、1、2時,相比堆疊兩個MlpConv單元,3個單元的堆疊能夠取得更高的識別精度。這說明,在一定程度上,增加網絡的深度,有助于改善模型的識別準確率。最終,模型在堆疊3個MlpConv單元,每個單元包含兩個1×1卷積層后取得了最佳的模型識別精度,這個模型即為本文所提出的MS-CNN模型。
為了進一步直觀地說明本文提出的MS-CNN模型相對于其他方法的優勢,本文使用t-SNE(t-distributed stochastic neighbor embedding)[18]方法對AlexNet、NIN、GoogLeNet以及MS-CNN模型基于CompCars相同測試集上所提取的特征降維到平面空間進而實現可視化,可視化結果如圖4所示。實際可視化過程中,為便于觀察,在CompCars測試集281類樣本上隨機選取了30個類別,每類40張樣本(若同一類別樣本量少于40,則全部取完)。CNN模型的最后一層通常用于給出各類別的概率值,因此實驗中可視化的對象為該層的前一層所提取的特征。圖中,一個小點代表一個樣本,同一類別的樣本聚集成簇。

圖4 模型的特征可視化
圖4 (a)中,各類所有樣本點整體呈現一種聚類趨勢,然而存在同類樣本聚集成簇但比較松散的現象,即類內距離不夠小,這說明了NIN對同類樣本的聚合能力還有待提升;相比圖4(a),圖4(b)的類間間距更為明顯,且同類樣本的聚合能力也得到一定程度的改善;圖4(c)是對GoogLeNet所提取特征的可視化結果,可以看出,相比前兩種模型,GoogLeNet對同類樣本點具有更強的聚合能力;而本文提出的MS-CNN模型所提取特征的可視化結果如圖4(d)所示,對比NIN、AlexNet和GoogLeNet,MS-CNN類內樣本點聚合程度更高,說明對屬于同一類樣本的識別能力更強;同時類間間距更大,意味著MS-CNN模型所提取的特征對不同類別具有更好的區分度。
針對卡口監控場景下的車輛精細型號識別的問題,本文提出一種基于多尺度特征融合的卷積神經網絡MS-CNN。該方法對每個樣本提取固定的160維特征向量,且該向量既考慮了車輛的局部特征又兼顧了車輛的全局特征。實驗表明,MS-CNN模型在車型精細型號識別測試中分類準確率達到了98.43%。與其他方法相比,MS-CNN模型不僅在識別準確率上有所提高,而且模型參數規模大幅度降低到3.93 MB,平均每張圖片的分類時間僅為0.83 ms,具有良好的實用價值。