費(fèi)東煒,孫 涵
(南京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院模式分析與機(jī)器智能工業(yè)和信息化部重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 211106)
車型識(shí)別是以計(jì)算機(jī)視覺(jué)、模式識(shí)別技術(shù)為基礎(chǔ),通過(guò)車輛的圖像對(duì)車輛的品牌、型號(hào)進(jìn)行識(shí)別的一種應(yīng)用[1]。車輛型號(hào)的識(shí)別對(duì)于交通監(jiān)控、停車管理等智能交通應(yīng)用具有重要的意義。由于不同型號(hào)的車輛都屬于汽車這一大類,不同車型圖像之間的類間差異往往比較小,如何在這種情況下提取到有效的車輛特征成為車型識(shí)別的研究重點(diǎn)。
目前,主流的車型識(shí)別方法可以分為四個(gè)步驟,分別是局部特征提取、特征描述、特征編碼、分類或檢索[2]。局部特征提取這一步需要抽取出圖像中富含信息的關(guān)鍵點(diǎn),主要有兩種方式:一種是基于關(guān)鍵點(diǎn)檢測(cè),有Harris角點(diǎn)檢測(cè)[3]、FAST算子[4]、LoG[5]、DoG[6]等方法;另一種是密集提取,直接按照一定的步長(zhǎng)和尺度指定關(guān)鍵點(diǎn)。特征描述則將關(guān)鍵點(diǎn)附近的圖像特征轉(zhuǎn)換為特征描述子,特征描述子一般的形式為特征向量或二進(jìn)制串,常用的特征描述子有SIFT[6]、SURF[7]、BRISK[8]、ORB[9]等。特征編碼則是通過(guò)特征變換方法對(duì)特征描述子進(jìn)行編碼,從而獲得更高區(qū)分性和魯棒性的特征表達(dá),主要的特征編碼方法有向量量化、稀疏編碼、Fisher向量編碼等。特征編碼之后,圖像被抽象為一個(gè)多維的特征向量。最后對(duì)得到的特征向量進(jìn)行分類或檢索。常用的分類算法有支持向量機(jī)(SVM)[10]、隨機(jī)森林[11]、神經(jīng)網(wǎng)絡(luò)等;檢索指的是對(duì)得到的特征進(jìn)行K近鄰搜索,返回前K個(gè)與查詢圖像最相似的一批圖像,為了檢索的高效率,通常采用二進(jìn)制串作為圖像的特征表達(dá)。
傳統(tǒng)的基于手工特征的車型識(shí)別方法提取的特征在類間差異很小時(shí)區(qū)分性比較弱[12],導(dǎo)致車型識(shí)別的準(zhǔn)確率不高。而卷積神經(jīng)網(wǎng)絡(luò)能夠?qū)⑻卣魈崛?、特征描述、特征編碼和分類(檢索)這四個(gè)步驟集成到一個(gè)深度神經(jīng)網(wǎng)絡(luò)中,且提取的特征區(qū)分性強(qiáng),泛化能力強(qiáng),針對(duì)車型識(shí)別應(yīng)用的效果比較好。卷積神經(jīng)網(wǎng)絡(luò)一般用于圖像分類,可以直接輸出圖像的類別,常見(jiàn)的網(wǎng)絡(luò)有AlexNet[13]、VGG等。深度哈希網(wǎng)絡(luò)使用卷積神經(jīng)網(wǎng)絡(luò)中的卷積層提取圖像特征,然后編碼為二值的哈希碼,主要用于圖像檢索。
基于以上研究背景,文中提出了一種深度哈希網(wǎng)絡(luò),并設(shè)計(jì)了基于深度哈希網(wǎng)絡(luò)的車型識(shí)別方法。首先介紹了卷積神經(jīng)網(wǎng)絡(luò)和深度哈希網(wǎng)絡(luò)。然后對(duì)現(xiàn)有的深度哈希網(wǎng)絡(luò)進(jìn)行優(yōu)化,并將全局平均池化和數(shù)據(jù)增廣應(yīng)用到現(xiàn)有的哈希網(wǎng)絡(luò)中,提出了HashNet-GAP網(wǎng)絡(luò)和車型檢索與分類的方法。接著介紹了車型識(shí)別實(shí)驗(yàn)方法,對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析。最后總結(jié)全文,并且提出下一步研究方向。
卷積神經(jīng)網(wǎng)絡(luò)是以卷積層為核心的具有深度結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)的研究受到了生物學(xué)中對(duì)貓的視覺(jué)皮層研究的啟發(fā),視覺(jué)皮層中細(xì)胞只會(huì)對(duì)視網(wǎng)膜上圖像中的部分區(qū)域敏感,不同細(xì)胞對(duì)于不同的信號(hào)敏感程度是不同的。卷積神經(jīng)網(wǎng)絡(luò)模擬了這種結(jié)構(gòu),采用部分連接的方法,提取圖像中的空間結(jié)構(gòu)信息。圖1給出了卷積神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)。
卷積神經(jīng)網(wǎng)絡(luò)的核心是卷積層。在大尺寸圖像中,有這樣一個(gè)性質(zhì),圖像局部區(qū)域的像素點(diǎn)之間存在著很大的相關(guān)性,而相距較遠(yuǎn)的像素點(diǎn)之間往往是無(wú)關(guān)的。利用這一性質(zhì),卷積神經(jīng)網(wǎng)絡(luò)提出了“感受野”(receptive field)的概念。卷積層中通過(guò)卷積核對(duì)輸入圖像進(jìn)行局部連接,其輸出的特征圖中每一個(gè)元素對(duì)應(yīng)著輸入圖像的一部分區(qū)域,這部分區(qū)域被稱為“感受野”[14]。傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中每一層的感受野均為輸入圖像的全部區(qū)域,特征提取效果不佳且參數(shù)量巨大。而卷積神經(jīng)網(wǎng)絡(luò)各層的感受野均為圖像的局部區(qū)域,隨著網(wǎng)絡(luò)層數(shù)加深,感受野的尺寸逐漸變大,使網(wǎng)絡(luò)能夠提取從底層到高層,從局部到全局的特征。卷積層中主要進(jìn)行的是卷積運(yùn)算。卷積運(yùn)算的示意圖如圖2所示。卷積運(yùn)算是以一定的間隔滑動(dòng)卷積核的窗口,在滑動(dòng)過(guò)程中,卷積核的參數(shù)一直保持不變,即圖像的不同區(qū)域采用相同參數(shù)的卷積核進(jìn)行特征提取。這一特性被稱為“權(quán)值共享”[15]。權(quán)值共享相對(duì)于神經(jīng)元全連接,可以大幅度減少參數(shù)數(shù)量,使得大規(guī)模神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)變得更簡(jiǎn)單、適應(yīng)性更強(qiáng)[16]。另外,一層卷積層通常會(huì)提取圖像的多個(gè)特征,這可以通過(guò)增加卷積核的通道數(shù)來(lái)實(shí)現(xiàn),每個(gè)通道的卷積核提取一個(gè)特征圖。
池化層一般連接在卷積層之后,用于縮小卷積層得到的特征圖的尺寸。除了降低特征維度,池化層還可以提升整個(gè)網(wǎng)絡(luò)的魯棒性。當(dāng)輸入數(shù)據(jù)發(fā)生微小變化時(shí),池化后的結(jié)果會(huì)保持不變。池化操作主要有最大值池化和平均值池化,最大值池化指的是取輸入特征圖的一個(gè)窗口中的最大值,平均值池化則是取平均值。在卷積神經(jīng)網(wǎng)絡(luò)中,常用的池化方法是最大值池化。
如圖1所示,卷積神經(jīng)網(wǎng)絡(luò)的整體結(jié)構(gòu)是先用“卷積層、池化層”的組合,重復(fù)若干次,然后連接到一層或多層全連接層,最后連接到輸出層。多個(gè)“卷積層、池化層”的組合相當(dāng)于傳統(tǒng)手工特征的特征提取和特征描述步驟。全連接層則相當(dāng)于特征編碼,最后將得到的特征進(jìn)行Softmax分類或K近鄰搜索。為了實(shí)現(xiàn)非線性映射,每一個(gè)卷積層和全連接層后還需要非線性的激活函數(shù)[17]。從卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)來(lái)看,使用一個(gè)網(wǎng)絡(luò)端到端地實(shí)現(xiàn)了圖像分類,只需要輸入目標(biāo)圖像,即可直接得到圖像的類別,相對(duì)于傳統(tǒng)的手工特征方法,大大簡(jiǎn)化了操作流程。
深度哈希網(wǎng)絡(luò)是使用深度學(xué)習(xí)技術(shù)來(lái)進(jìn)行哈希學(xué)習(xí)(learning to hashing)的一種神經(jīng)網(wǎng)絡(luò)。哈希學(xué)習(xí)的目的是從數(shù)據(jù)中學(xué)習(xí)哈希表示,可以看作學(xué)習(xí)哈希函數(shù)的參數(shù)。在深度學(xué)習(xí)時(shí)代,使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行哈希學(xué)習(xí)成為了主流。
深度哈希網(wǎng)絡(luò)的結(jié)構(gòu)和一般的卷積神經(jīng)網(wǎng)絡(luò)相似,都是由“卷積層、池化層”的基本單元組成,再連接上全連接層。不同的是深度哈希網(wǎng)絡(luò)的輸出層和優(yōu)化目標(biāo)。深度哈希網(wǎng)絡(luò)的輸出層一般是全連接層,直接輸出一串實(shí)數(shù)向量,再使用符號(hào)函數(shù)轉(zhuǎn)換為二值向量。這個(gè)全連接層的節(jié)點(diǎn)數(shù)即為輸出的哈希碼的位數(shù)。
與用于分類的卷積神經(jīng)網(wǎng)絡(luò)不同的是,深度哈希網(wǎng)絡(luò)輸出的是目標(biāo)圖像的二值特征,無(wú)法直接根據(jù)有監(jiān)督的標(biāo)簽信息來(lái)計(jì)算訓(xùn)練時(shí)的損失。因此,深度哈希網(wǎng)絡(luò)通常采用成對(duì)相似性來(lái)設(shè)計(jì)損失函數(shù)。在網(wǎng)絡(luò)輸入時(shí),輸入兩個(gè)不同圖像進(jìn)行哈希特征生成。這一對(duì)圖像的相似性的真實(shí)數(shù)據(jù)(ground truth)可以通過(guò)它們的標(biāo)簽得到,具有相同標(biāo)簽的圖像對(duì)被認(rèn)為是相似的。而網(wǎng)絡(luò)在訓(xùn)練中對(duì)相似性的預(yù)測(cè)可以通過(guò)計(jì)算哈希碼之間的漢明距離(Hamming distance)得到。哈希碼的漢明距離定義為兩串哈希碼中不同的位的數(shù)量。哈希碼的漢明距離越大,表示對(duì)應(yīng)的圖像差異越大,漢明距離越小,則表示圖像越相似。這里將漢明距離作為深度哈希網(wǎng)絡(luò)對(duì)一對(duì)圖像相似性的預(yù)測(cè),那么根據(jù)真實(shí)數(shù)據(jù)和預(yù)測(cè)值即可設(shè)計(jì)損失函數(shù)。損失函數(shù)的設(shè)計(jì)原則是保持相似的數(shù)據(jù)漢明距離盡可能小,或者不相似的數(shù)據(jù)漢明距離盡可能大。
由于深度哈希網(wǎng)絡(luò)需要通過(guò)一個(gè)不連續(xù)的符號(hào)函數(shù)(即sgn函數(shù))得到哈希碼以計(jì)算損失,網(wǎng)絡(luò)在訓(xùn)練時(shí)面臨梯度消失的挑戰(zhàn)。處理sgn函數(shù)的方法主要有兩種,第一種方法就是最常用的連續(xù)性弛豫法(continuous relaxation),包括sigmoid弛豫、tanh弛豫或者直接在優(yōu)化時(shí)丟掉符號(hào)函數(shù)即sgn(z)≈z。弛豫后使用常規(guī)的優(yōu)化技術(shù)即可。第二種方法是兩步策略[18],首先在不考慮哈希函數(shù)的情況下優(yōu)化哈希碼,然后再根據(jù)優(yōu)化過(guò)的哈希碼優(yōu)化哈希函數(shù)的參數(shù)。
全局平均池化(global average pooling)是一種卷積神經(jīng)網(wǎng)絡(luò)改進(jìn)技術(shù)。傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)先用卷積層提取特征,然后通過(guò)多個(gè)全連接層將特征編碼成特征向量。全連接層的特征是參數(shù)過(guò)多,容易過(guò)擬合,降低了整個(gè)網(wǎng)絡(luò)的泛化能力。有很多研究致力于解決這一問(wèn)題,如dropout[19]技術(shù)在訓(xùn)練過(guò)程中采用隨機(jī)刪除神經(jīng)元的方法來(lái)避免全連接層帶來(lái)的過(guò)擬合。全局平均池化是另一種正則化策略,其思路是用全局平均池化層代替全連接層。全局平均池化指的是求每個(gè)通道特征圖的平均值,將h*w*d的多通道特征圖張量直接降維至1×1×d,即d維特征向量,替代了全連接層的功能[20]。全局平均池化示意如圖2所示。
圖2 全局平均池化示意
從圖中可以直觀地看到,每個(gè)通道的二維特征圖直接轉(zhuǎn)換為一個(gè)值,這個(gè)值是得到的特征向量的一個(gè)維度,而且每個(gè)維度對(duì)應(yīng)著一個(gè)卷積通道。全局平均池化和dropout都屬于正則化技術(shù),dropout是刪除全連接層部分節(jié)點(diǎn),而全局平均池化是直接替換了全連接層,同時(shí)也能達(dá)到將多通道特征圖拉伸成特征向量的目的。因此全局平均池化相比dropout能夠更好地處理過(guò)擬合問(wèn)題。
全局平均池化相對(duì)于全連接層主要有以下幾個(gè)優(yōu)點(diǎn):
(1)全局平均池化得到的特征向量與特征圖之間的聯(lián)系更緊密,特征向量的每一維對(duì)應(yīng)著特征圖的一個(gè)通道,更好地保留了卷積結(jié)構(gòu)。
(2)全局平均池化沒(méi)有任何參數(shù),用在卷積神經(jīng)網(wǎng)絡(luò)中大大降低了參數(shù)數(shù)量,也避免了全連接層帶來(lái)的過(guò)擬合。
(3)全局平均池化匯合了空間信息,增加了對(duì)于輸入數(shù)據(jù)空間變化的魯棒性。
(4)網(wǎng)絡(luò)測(cè)試時(shí)可以任意變換輸入圖像的大小,因?yàn)槿制骄鼗瘜訜o(wú)需學(xué)習(xí)參數(shù),不同尺寸的特征圖都會(huì)降維至1×1。而全連接層需要學(xué)習(xí)特征圖中每一點(diǎn)連接到下一層每個(gè)節(jié)點(diǎn)的權(quán)重,當(dāng)輸入圖像尺寸變化時(shí),特征圖的尺寸也隨之變化,無(wú)法進(jìn)行全連接層的計(jì)算。
全局平均池化可能會(huì)導(dǎo)致收斂速度減慢,表現(xiàn)在達(dá)到同樣損失前,網(wǎng)絡(luò)訓(xùn)練所需的迭代次數(shù)增加。這是因?yàn)槭褂萌制骄鼗喈?dāng)于簡(jiǎn)化了特征編碼方法,使得特征提取和特征描述時(shí)的學(xué)習(xí)壓力增大,卷積層需要更多迭代次數(shù)來(lái)調(diào)整參數(shù)。在使用預(yù)訓(xùn)練模型進(jìn)行初始化或是增加新的分類時(shí),卷積層參數(shù)調(diào)整的幅度會(huì)更大。文中在使用全局平均池化時(shí),在其后保留了一個(gè)全連接層,這樣可以一定程度上緩解收斂速度的下降。另外,由于大幅度減少了參數(shù),訓(xùn)練中每次迭代的計(jì)算量也減少了,因此訓(xùn)練一個(gè)模型所需的時(shí)間總體上變化不大。
數(shù)據(jù)增廣(data augmentation)指的是對(duì)訓(xùn)練集圖像進(jìn)行一系列變換,目的是增加訓(xùn)練集數(shù)量,從而提升訓(xùn)練后神經(jīng)網(wǎng)絡(luò)的性能,抑制模型過(guò)擬合現(xiàn)象。在車型數(shù)據(jù)集中,通常有不同環(huán)境不同光照不同角度下拍攝的車輛圖片。針對(duì)這些特點(diǎn),文中提出一種數(shù)據(jù)增廣方法,這種方法由完全隨機(jī)裁剪、色彩抖動(dòng)和隨機(jī)旋轉(zhuǎn)三個(gè)步驟組成。
2.2.1 完全隨機(jī)裁剪
完全隨機(jī)裁剪隨機(jī)生成裁剪位置和裁剪區(qū)域大小,可以生成不同位置不同尺度的圖像。完全隨機(jī)裁剪后的圖像統(tǒng)一為正方形圖像,圖像的邊長(zhǎng)d是隨機(jī)生成的,取值范圍是[l/2,l],其中l(wèi)是原始圖像長(zhǎng)和寬的較小值。確定了裁剪后大小之后,再隨機(jī)生成裁剪位置,裁剪區(qū)域的中心相對(duì)于原圖的中心進(jìn)行隨機(jī)移動(dòng),隨機(jī)移動(dòng)的范圍在x軸和y軸上均為[0,l-d]個(gè)像素。完全隨機(jī)裁剪生成的圖像如圖3所示。
圖3 完全隨機(jī)裁剪示例
2.2.2 色彩抖動(dòng)
色彩抖動(dòng)是對(duì)圖像的顏色進(jìn)行隨機(jī)調(diào)整,主要調(diào)整圖像的飽和度、亮度和對(duì)比度。調(diào)整飽和度使圖像變得鮮艷或灰暗,調(diào)整亮度使圖像整體變暗或變亮,調(diào)整對(duì)比度使得圖像明暗的差異變大或變小。色彩抖動(dòng)通過(guò)調(diào)整這些屬性,模擬生成了不同采集設(shè)備拍攝的圖像。色彩抖動(dòng)之后生成的圖像如圖4所示。
圖4 色彩抖動(dòng)示例
2.2.3 隨機(jī)旋轉(zhuǎn)
隨機(jī)旋轉(zhuǎn)對(duì)圖像進(jìn)行一定角度范圍內(nèi)的旋轉(zhuǎn)。旋轉(zhuǎn)角度限制為順時(shí)針-30度到30度,旋轉(zhuǎn)采用后向映射的方法實(shí)現(xiàn),映射后的插值算法采用雙三次插值法(bicubic)。隨機(jī)旋轉(zhuǎn)的目的是生成不同視角的訓(xùn)練圖像。隨機(jī)旋轉(zhuǎn)后的圖像見(jiàn)圖5。
圖5 隨機(jī)旋轉(zhuǎn)示例
文中提出的車型識(shí)別方法是基于檢索的方法,利用深度哈希網(wǎng)絡(luò)對(duì)車輛圖像進(jìn)行二值特征提取,然后再使用二值特征進(jìn)行K近鄰搜索,返回一批與輸入圖像相似的圖像。檢索用的深度哈希網(wǎng)絡(luò)是基于HashNet[18]網(wǎng)絡(luò)進(jìn)行改進(jìn)的,HashNet網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。
圖6 HashNet網(wǎng)絡(luò)結(jié)構(gòu)
HashNet網(wǎng)絡(luò)主要由三部分組成:(1)卷積神經(jīng)網(wǎng)絡(luò)(CNN)層,用于學(xué)習(xí)圖像的深度特征;(2)全連接的哈希層,首先將深度特征轉(zhuǎn)換為k維的特征表示,再將k維的特征表示轉(zhuǎn)換為k位二進(jìn)制哈希碼;(3)配對(duì)(pairwise)損失層,使用帶權(quán)重的交叉熵?fù)p失函數(shù)進(jìn)行相似性保持學(xué)習(xí)。
HashNet網(wǎng)絡(luò)使用數(shù)據(jù)之間的成對(duì)相似性進(jìn)行哈希表示的學(xué)習(xí),因此該網(wǎng)絡(luò)訓(xùn)練時(shí)具有兩個(gè)并列的輸入層,輸入兩幅圖像及其標(biāo)簽。這兩幅圖像經(jīng)過(guò)圖像拼接層在channel維度上合并為一層作為第一個(gè)卷積層的輸入。HashNet的卷積神經(jīng)網(wǎng)絡(luò)層使用AlexNet的前7層(分別是Conv1-5、fc6、fc7)來(lái)學(xué)習(xí)車輛圖像的深度特征。這些特征在全連接的哈希層被轉(zhuǎn)換為k位的二進(jìn)制哈希碼。由于輸入的是兩幅圖像,需要將輸出的哈希碼結(jié)果經(jīng)過(guò)slice_output層分離成各個(gè)圖像各自的哈希碼,再輸入到配對(duì)損失層,同時(shí)兩幅圖像各自的標(biāo)簽也被送入配對(duì)損失層進(jìn)行訓(xùn)練。
文中提出的改進(jìn)的HashNet網(wǎng)絡(luò)稱為HashNet-GAP網(wǎng)絡(luò),即全局平局池化的AlexNet網(wǎng)絡(luò)。網(wǎng)絡(luò)結(jié)構(gòu)上移除了HashNet中的全連接層fc6、fc7,在卷積層conv5后的池化層pool5后增加了全局平均池化層GAP,池化后的結(jié)果直接輸入到全連接的哈希層進(jìn)行二值特征編碼。AlexNet-GAP網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示。
圖中全局平均池化層GAP是增加的層。HashNet中的pool5仍然保留,這一層采用最大值池化對(duì)特征圖進(jìn)行降維,保留這一層可以增加全局平均池化后的特征的魯棒性。由于移除了全連接層fc6和fc7,HashNet-GAP相比HashNet極大地減少了參數(shù)數(shù)量,同時(shí)也會(huì)帶來(lái)更低的運(yùn)算時(shí)間,方便用于快速車型識(shí)別。
圖7 HashNet-GAP網(wǎng)絡(luò)結(jié)構(gòu)
HashNet-GAP要訓(xùn)練的層有Conv1~5共5個(gè)卷積層以及全連接的哈希層,其中Conv1~5的網(wǎng)絡(luò)結(jié)構(gòu)和AlexNet類似,因此可以使用AlexNet的預(yù)訓(xùn)練模型作為初始值繼續(xù)訓(xùn)練。訓(xùn)練網(wǎng)絡(luò)時(shí),對(duì)訓(xùn)練集進(jìn)行數(shù)據(jù)增廣,采用文中2.2節(jié)提出的數(shù)據(jù)增廣方法將訓(xùn)練集擴(kuò)充為原來(lái)的30倍大小,對(duì)于小樣本數(shù)據(jù)集能夠有效提升網(wǎng)絡(luò)的性能。
實(shí)驗(yàn)采用了一個(gè)小樣本訓(xùn)練集對(duì)HashNet-GAP網(wǎng)絡(luò)進(jìn)行訓(xùn)練和測(cè)試。該數(shù)據(jù)集是從CompCars數(shù)據(jù)集[21]抽取的一部分圖像組成,抽取的圖像為MINI Cooper品牌的13種車型,稱為CompCars-mini數(shù)據(jù)集,每種車型隨機(jī)抽取50張圖像。數(shù)據(jù)集中不同類的圖像如圖8所示。圖中兩幅圖像是不同類的車型,可以看出類間差異較小,分類難度較大。
圖8 CompCars-mini數(shù)據(jù)集示例
CompCars-mini數(shù)據(jù)集在實(shí)驗(yàn)中被劃分為訓(xùn)練集和測(cè)試集。訓(xùn)練集每類有25張圖像,經(jīng)過(guò)數(shù)據(jù)增廣后每類圖像數(shù)量是原來(lái)的30倍,有750張圖像。測(cè)試集中的圖像不參與訓(xùn)練,在測(cè)試階段用來(lái)評(píng)估深度哈希網(wǎng)絡(luò)檢索和分類的性能。
實(shí)驗(yàn)中分別對(duì)無(wú)任何優(yōu)化的HashNet網(wǎng)絡(luò)、帶數(shù)據(jù)增廣的HashNet網(wǎng)絡(luò)(HashNet+da)和帶數(shù)據(jù)增廣的HashNet-GAP網(wǎng)絡(luò)(HashNet-GAP+da)這三種算法進(jìn)行性能測(cè)試。訓(xùn)練和測(cè)試均在Caffe框架下實(shí)現(xiàn)。訓(xùn)練時(shí)三個(gè)網(wǎng)絡(luò)均采用了Caffe框架中實(shí)現(xiàn)的隨機(jī)梯度下降法,批處理數(shù)量(batch_size)設(shè)置為128,共迭代10 000次,學(xué)習(xí)率采用分階段設(shè)置,初始學(xué)習(xí)率為0.000 5。哈希碼的位數(shù)設(shè)置為256位。測(cè)試階段對(duì)訓(xùn)練集和測(cè)試集中各圖像的哈希特征進(jìn)行提取,采用網(wǎng)絡(luò)的前向計(jì)算,批處理大小設(shè)置為5,并測(cè)量前向計(jì)算所需的時(shí)間。
HashNet-GAP網(wǎng)絡(luò)相當(dāng)于一個(gè)哈希函數(shù),將車輛圖片轉(zhuǎn)換為二進(jìn)制哈希碼。通過(guò)計(jì)算兩幅圖像哈希碼之間的漢明距離可以得到兩幅圖像之間的相似度。根據(jù)這一性質(zhì),可以實(shí)現(xiàn)相似車輛圖片檢索。首先,將訓(xùn)練集中的車輛圖像作為查詢庫(kù),先計(jì)算這些圖像的哈希碼,存儲(chǔ)在文件或數(shù)據(jù)庫(kù)中。然后,輸入測(cè)試集中的車輛圖像,計(jì)算該圖像的哈希碼,與查詢庫(kù)中保存的哈希碼進(jìn)行匹配,得到與輸入圖像最相似的一批車輛圖像。采用MAP(mean average precision)來(lái)評(píng)價(jià)網(wǎng)絡(luò)的性能,AP(average precision)指的是一次檢索中不同召回率下準(zhǔn)確率的平均值,MAP則是每次檢索的AP值的平均。MAP不僅反映了檢索算法的準(zhǔn)確率,而且考慮了順序的因素。同樣的準(zhǔn)確率下,返回的一批圖像中相似的圖像排名越靠前的,MAP的值越高。
在相似車輛圖片檢索的基礎(chǔ)上,分析返回的一批車輛圖像,當(dāng)返回圖像中某一類的車輛圖像占比最多,就將查詢圖像分類到這一類中,從而對(duì)輸入圖像進(jìn)行分類。實(shí)驗(yàn)中使用這個(gè)方法對(duì)測(cè)試集中所有圖像進(jìn)行分類,并和圖像的標(biāo)簽進(jìn)行比較,計(jì)算分類的Top1準(zhǔn)確率。
對(duì)于325張測(cè)試圖像,基于HashNet-GAP網(wǎng)絡(luò)的車型識(shí)別方法獲得了0.8的Top1準(zhǔn)確率。針對(duì)車型數(shù)據(jù)集的數(shù)據(jù)增廣方法獲得了一定的性能提升,MAP相對(duì)于未使用數(shù)據(jù)增廣的HashNet網(wǎng)絡(luò)則提升了1.23%。在相同的訓(xùn)練集下,用全局平均池化層替換全連接層減少了參數(shù)數(shù)量,抑制了過(guò)擬合現(xiàn)象,使得MAP和Top1準(zhǔn)確率有較大的提升,而且縮短了網(wǎng)絡(luò)前向計(jì)算的時(shí)間。詳細(xì)實(shí)驗(yàn)結(jié)果見(jiàn)表1。
表1 CompCars-mini數(shù)據(jù)集實(shí)驗(yàn)結(jié)果
CompCars-mini數(shù)據(jù)集上的實(shí)驗(yàn)表明,通過(guò)數(shù)據(jù)增廣擴(kuò)充訓(xùn)練集能夠提升卷積神經(jīng)網(wǎng)絡(luò)的性能。本次實(shí)驗(yàn)中,每類圖像只有25張,通過(guò)數(shù)據(jù)增廣后增加到750張。對(duì)于較難分類的車型數(shù)據(jù)集,數(shù)據(jù)增廣可以簡(jiǎn)單地獲得性能提升,只需要增加訓(xùn)練時(shí)的迭代次數(shù),不會(huì)增加網(wǎng)絡(luò)測(cè)試時(shí)的時(shí)間。
深度哈希網(wǎng)絡(luò)中的全局平均池化層相比全連接層能夠得到幾個(gè)方面的提升。第一,全局平均池化層沒(méi)有任何要訓(xùn)練的參數(shù),替換了HashNet中4 096個(gè)節(jié)點(diǎn)的全連接層后,大幅度減少了參數(shù)數(shù)量,減少了網(wǎng)絡(luò)模型存儲(chǔ)時(shí)消耗的空間。HashNet網(wǎng)絡(luò)模型文件大小為231.7 MB,而HashNet-GAP網(wǎng)絡(luò)僅有9.6 MB大小,減少了約96%,大幅度降低了存儲(chǔ)消耗和內(nèi)存消耗。第二,降低了網(wǎng)絡(luò)計(jì)算復(fù)雜度,縮短了每張圖像的處理時(shí)間,從50 ms降低到46 ms,能夠在車型識(shí)別應(yīng)用時(shí)加快處理速度。第三,顯著提升了深度哈希網(wǎng)絡(luò)的性能,這是因?yàn)镠ashNet-GAP網(wǎng)絡(luò)移除了具有4 096個(gè)節(jié)點(diǎn)的兩個(gè)全連接層,減少了96%的參數(shù)。全連接層容易發(fā)生過(guò)擬合,在HashNet和AlexNet中采用dropout技術(shù)對(duì)過(guò)擬合進(jìn)行抑制。全局平均池化是另一種抑制過(guò)擬合的方法,實(shí)驗(yàn)結(jié)果表明,采用這種方法的HashNet-GAP網(wǎng)絡(luò)能夠有效提升網(wǎng)絡(luò)性能。
車型識(shí)別對(duì)智能交通系統(tǒng)有重要的意義?;诰矸e神經(jīng)網(wǎng)絡(luò)和深度哈希網(wǎng)絡(luò)的車型識(shí)別方法在性能上優(yōu)于基于手工特征的方法。文中結(jié)合了數(shù)據(jù)增廣和全局平均池化,在HashNet網(wǎng)絡(luò)的基礎(chǔ)上,提出了基于HashNet-GAP網(wǎng)絡(luò)的車型識(shí)別方法。該方法在CompCars-mini數(shù)據(jù)集上取得了80.0%的Top-1準(zhǔn)確率,相對(duì)于HashNet有5.69%的提升。另外實(shí)驗(yàn)結(jié)果表明HashNet-GAP中的全局平均池化層可以替代全連接層,大幅度減少參數(shù)數(shù)量,減少運(yùn)算時(shí)間,并提升檢索和分類時(shí)的性能。雖然該算法可以有效提高車型識(shí)別效果,但是在實(shí)際應(yīng)用中還需要進(jìn)一步提高準(zhǔn)確率。接下來(lái)的工作要圍繞這兩方面進(jìn)行:第一,需要研究如何提取更具有區(qū)分性的卷積特征,采取的方法是加深卷積層層數(shù)或者使用更強(qiáng)表現(xiàn)力的特征編碼算法;第二,需要研究如何更好地進(jìn)行數(shù)據(jù)增廣,進(jìn)一步提升車型識(shí)別方法對(duì)小樣本數(shù)據(jù)集的分類能力。