姚國愉,張 昭,李雪純,張佳樂
(西安郵電大學 通信與信息工程學院,陜西 西安710121)
車輛識別[1]在智能交通系統(tǒng)、刑事偵查、執(zhí)法等方面發(fā)揮著重要作用,其任務是識別目標車輛的類型、顏色和車牌。顏色作為車輛最顯著的特征之一,能為快速執(zhí)法提供視覺線索。然而,由于光照、天氣條件、噪聲和圖像捕獲質(zhì)量等因素的影響,使得車輛顏色識別成為一項具有挑戰(zhàn)性的任務。
為了應對這些挑戰(zhàn),車輛顏色識別方法已經(jīng)從最初基于人工提取特征+分類器[2-3]發(fā)展到基于深度學習[4-6]。為了在性能和計算復雜度之間實現(xiàn)良好的折衷,本文提出一種改進的卷積神經(jīng)網(wǎng)絡架構,該網(wǎng)絡共有八層,包括五個卷積層,兩個1x1 卷積層和一個全局平均池化層(Global average pooling,GAP)。
本文網(wǎng)絡的總體框架如圖1 所示。該網(wǎng)絡共有八層,包含五個卷積層、兩個1x1 卷積層和一個全連接層。下面將詳細介紹本文所用的網(wǎng)絡框架結構,其中2.2.1-2.2.4小節(jié)內(nèi)容遵循網(wǎng)絡結構順序。
本文所提出的改進型卷積神經(jīng)網(wǎng)絡是以AlexNet 網(wǎng)絡為基礎的,所以首先介紹AlexNet 網(wǎng)絡。
AlexNet 網(wǎng)絡是2012年由Alex Krizhevsky 等人提出的,該網(wǎng)絡由五個卷積層,三個全連接層組成,其中使用ReLU 激活函數(shù)加快網(wǎng)絡的收斂速度,并且有效防止梯度消失等問題;在全連接層使用“Dropout”技術避免過擬合現(xiàn)象;為了避免網(wǎng)絡模型參數(shù)在訓練過程中不斷更新導致每個后續(xù)層的輸入數(shù)據(jù)分布發(fā)生變化,在第二卷積層和第三卷積層之前,對輸入數(shù)據(jù)進行LRN 操作。該網(wǎng)絡的總參數(shù)量為5800 多萬,表1 顯示了不同層的特征尺寸和參數(shù)數(shù)量。
表1 中網(wǎng)絡參數(shù)量的計算公式為:
其中,K 為卷積核的大小,KC為卷積核通道數(shù),F(xiàn)0C為輸出特征圖的通道數(shù)。從表1 可以看出,網(wǎng)絡的參數(shù)主要集中在全連接層,容易造成過擬合現(xiàn)象。
圖1 車輛顏色識別網(wǎng)絡框架
表1 AlexNet 網(wǎng)絡參數(shù)設置
表2 所提網(wǎng)絡參數(shù)設置
本文設計的卷積神經(jīng)網(wǎng)絡結構如圖1 所示。網(wǎng)絡共包含八層,輸入是3 通道RGB 彩色圖像,其分辨率為227×227×3。第一卷積層使用尺寸為11×11 步幅為4 的卷積核,第二卷積層使用尺寸為5×5 步幅為2 的卷積核,第三層、第四層和第五層均使用尺寸為3×3 步幅為1 的卷積核,第六層和第七層均使用尺寸為1x1 步幅為1 的卷積核。我們對所有卷積層進行ReLU 激活,并且在第二卷積層、第三卷積層、第四卷積層、第五卷積層之前進行批歸一化處理。在第一卷積層、第二卷積層和第五卷積層之后均使用尺寸為3×3 步幅為2 的卷積核進行最大重疊池化操作,GAP 層的內(nèi)核大小設置為3×3,輸出層的神經(jīng)元數(shù)量為8。在本文的方法中,將卷積神經(jīng)網(wǎng)絡架構視為特征提取器,經(jīng)過若干的卷積層和池化層,最終將所提取的特征向量輸入SoftMax 中用于車輛顏色識別。該網(wǎng)絡的總參數(shù)量為840 多萬,表2 顯示了不同層的特征尺寸和參數(shù)數(shù)量。
2.2.1 卷積層
卷積層作為CNN 不可或缺的一部分,其主要作用是從不同的卷積核中提取多個圖像特征。由于卷積神經(jīng)網(wǎng)絡的非線性操作是通過激活函數(shù)實現(xiàn)的,因此激活函數(shù)的選擇對最終識別性能產(chǎn)生巨大的影響。深度學習中的常見激活函數(shù)包括Sigmoid、Tanh 和ReLU。本文采用ReLU 函數(shù)作為激活神經(jīng)元的激活函數(shù),其函數(shù)表達式為:
由函數(shù)表達式可知:在輸入x>0 時梯度保持不變,從而有效緩解了梯度消失的問題;在輸入x<0 時梯度為0,此時神經(jīng)元不被激活。神經(jīng)網(wǎng)絡的這種稀疏性使其變得不僅高效而且計算簡單。
2.2.2 歸一化層
網(wǎng)絡模型在訓練過程中參數(shù)不斷更新迭代,導致后續(xù)各層的輸入數(shù)據(jù)分布發(fā)生變化,使得訓練深層神經(jīng)網(wǎng)絡變得復雜;另外,如果每批訓練數(shù)據(jù)的分布各不相同,那么網(wǎng)絡每次迭代都要去學習適應不同的數(shù)據(jù)分布,這樣大大降低了網(wǎng)絡的訓練速度。為了克服輸入數(shù)據(jù)分布對識別性能的影響,本文在第二卷積層、第三卷積層、第四卷積層和第五卷積層之前,對數(shù)據(jù)進行歸一化處理。實驗結果表明,與使用LRN 層的AlexNet 網(wǎng)絡模型相比較,使用BN 層的AlexNet 網(wǎng)絡模型的識別精度提高了1.8%。BN 層傳播的計算公式如下:
表3 每種顏色圖像數(shù)量
其中,μB表示小批量的均值表示小批量方差,xi表示輸入,yi表示輸出,β 和γ 為需要學習的參數(shù),增加線性變換,提升網(wǎng)絡表達能力。
2.2.3 重疊池化層
池化(pooling)在卷積神經(jīng)網(wǎng)絡中能夠降低特征圖的維度、加快網(wǎng)絡收斂速度和降低模型計算量。本文分別在第一卷積層、第二卷積層和第五卷積層之后使用池化尺寸為3,步幅為2 的重疊池化,有助于獲得更豐富的特征信息,從而提高識別精度。
2.2.4 損失函數(shù)
損失函數(shù)(Loss Function)的實質(zhì)是計算真實輸出與理想輸出之間的差異,所以損失函數(shù)的選擇直接決定了網(wǎng)絡學習分類模型的性能。常見的損失函數(shù)包括回歸問題中使用的歐幾里德?lián)p失函數(shù)、人臉識別中使用的三聯(lián)體損失函數(shù)和單標簽識別中使用的SoftMax 損失函數(shù)。因為車輛顏色識別屬于單標簽樣本分類,故本文采用SoftMax 函數(shù)作為損失函數(shù),其函數(shù)表達式為:
其中P 是輸入樣本x(i)屬于第j 類的概率,θ 是網(wǎng)絡層的參數(shù)。
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡通常使用全連接層作為網(wǎng)絡的輸出層,但是全連接層會破壞圖像的空間結構,因此本文使用兩個1×1 的卷積層和全局平均池化層來“代替”全連接層。1×1 卷積核與普通的卷積核相比,其作用是相同的,不同的是它的尺寸大小是1×1,而且也不考慮與前一層局部信息之間的關系;除此之外,1×1 的卷積核還能進行卷積核通道數(shù)的升維和降維。本文在第一個1×1 卷積層處使用2048個1×1 的卷積核對上一層池化結果(3×3×256)進行卷積操作,得到的特征圖尺寸為3×3×2048;在第二個1×1 卷積層處,使用2048個1×1 的卷積核對上一層的輸出結果進行卷積操作,得到的特征圖尺寸為3×3×2048。
通常卷積層之后連接多個全連接層,而全連接層通常具有太多的參數(shù),容易導致過擬合現(xiàn)象(例如,AlexNet包含三個全連接層)。針對這個問題,本文提出使用GAP層代替全連接層,即對第七卷積層的特征圖進行平均池化操作,將所得的結果直接輸入到SoftMax 分類器中進行分類。這樣做不僅使得特征圖與分類任務相關聯(lián),還不會引入新的模型參數(shù),從而大大減少參數(shù)數(shù)量,故本文在第七卷積層和最終輸出層之間使用GAP 層,得到1×1×2048 維的特征圖,形成特征點,再將這些特征點組成的特征向量送入SoftMax 中進行分類。改進前網(wǎng)絡FC1 層的參數(shù)量為:6×6×256×4096=37748736,F(xiàn)C2 層的參數(shù)量為:1×1×4096×4096=16777216,F(xiàn)C3 層的參數(shù)量為:1×1×4096×8=32768;改進后網(wǎng)絡第六卷積層參數(shù)量為:1×1×256×2048=524228,第七卷積層的參數(shù)量為:1×1×2048×2048=4194304,最終輸出層的參數(shù)量為:1×1×2048×8=16384。大幅度減少網(wǎng)絡參數(shù)的數(shù)量,避免過擬合的風險。
數(shù)據(jù)集:本文采用CHEN 等人[2]提供的公共車輛顏色數(shù)據(jù)集進行實驗驗證和比較。該數(shù)據(jù)集共包含15,602 張圖像,表3 顯示了數(shù)據(jù)集顏色種類以及每種顏色的圖像數(shù)量,其中白色圖像數(shù)量最多,有4743 張,而青色圖像數(shù)量最少,有282 張。
數(shù)據(jù)集中所有圖像均來自道路監(jiān)控系統(tǒng)捕獲的前方圖像,此外,每個圖像中僅包含一輛車。車輛顏色數(shù)據(jù)集的一些樣本示例如圖2 所示,數(shù)據(jù)集中包含多種類型的車輛,如小轎車、卡車和公交車等,這對車輛顏色識別帶來了很大的挑戰(zhàn)。在實驗中,使用留出法處理數(shù)據(jù)集,即使用一半數(shù)據(jù)集用于訓練,另外一半沒有使用過的數(shù)據(jù)用于測試。
實驗環(huán)境:為了驗證本文所提出的車輛顏色識別方法的有效性,我們在CHEN 等人[2]提供的公共車輛顏色數(shù)據(jù)集上進行了比對實驗。將實驗結果與現(xiàn)存最優(yōu)的車輛顏色識別方法進行比較,實驗過程中所有的網(wǎng)絡結構都是在TensorFlow2.0 平臺上構建的,語言環(huán)境為Python 語言,對比實驗平臺設置如下:2.7-GHz 8 核CPU,16GBRAM,GTX-1060-6G GPU 和win1064 位操作系統(tǒng)。
圖2 車輛顏色數(shù)據(jù)集
其它設置:在訓練和測試過程中,使用交叉熵作為損失函數(shù),采用Adam 優(yōu)化算法迭代訓練網(wǎng)絡參數(shù),其中,初始學習率大小設置為0.0001,批尺寸設置為16,循環(huán)迭代40 次。
為了更直觀的理解卷積神經(jīng)網(wǎng)絡如何提取車輛顏色信息,圖3 顯示了本文第一卷積層的96個卷積核可視化的結果。從圖中可以看出,第一卷積層可以從輸入圖像提取豐富的顏色特征,并且數(shù)據(jù)集中的所有車輛顏色變化都顯示在卷積核中,因此,本文所提出的網(wǎng)絡可以提取豐富的顏色特征信息,從而有效地用于車輛顏色識別。
圖3 第一卷積層的96個卷積核可視化結果
為了驗證本文提出的卷積神經(jīng)網(wǎng)絡的識別性能,將該網(wǎng)絡與其它兩種網(wǎng)絡進行了對比實驗,包括原始的AlexNet 網(wǎng)絡和去掉BN 層的改進型網(wǎng)絡。應該注意的是,為了比較結果的公平性,我們使用相同的方法訓練三個網(wǎng)絡,圖4 顯示了實驗結果。
從圖4 中可以看出,本文所使用的改進網(wǎng)絡識別精度最高,達94.8%,與采用相同訓練方法的原始AlexNet模型相比,識別精度提高了0.33%,且參數(shù)量降低了86%,節(jié)省了大量的時間;為了進一步驗證BN 層對網(wǎng)絡識別精度的影響,將改進模型與去BN 層的改進模型進行了比較,實驗結果表明,去BN 層的改進模型模型識別精度為93%,比改進模型識別精度低1.8%。因此,本文的網(wǎng)絡性能明顯優(yōu)于其它兩個網(wǎng)絡。
圖4 識別精度比較結果
本文提出了一種基于卷積神經(jīng)網(wǎng)絡的道路監(jiān)控系統(tǒng)下車輛顏色識別方法。與經(jīng)典AlexNet 方法相比,本文提出的方法具有兩個優(yōu)點:第一,設計一種特殊的卷積神經(jīng)網(wǎng)絡用于車輛顏色識別任務,即使用兩個1x1 卷積層和全局平均池化層代替?zhèn)鹘y(tǒng)網(wǎng)絡中的全連接層,減少網(wǎng)絡參數(shù)的數(shù)量,降低網(wǎng)絡中計算和存儲資源的需求;第二,使用BN 層代替經(jīng)典網(wǎng)絡中的LRN 層,加快了網(wǎng)絡的收斂速度,并在一定程度上防止了過擬合現(xiàn)象。在未來的工作中,我們將在ImageNet、COCO 等更大規(guī)模的數(shù)據(jù)集上進行測試來增加網(wǎng)絡的泛化能力。