江昆鵬 閆洪濤 張慶輝 楊紅衛(wèi)
1(河南工業(yè)大學(xué)信息科學(xué)與工程學(xué)院 河南 鄭州 450001) 2(河南工業(yè)技師學(xué)院 河南 鄭州 450007)
隨著我國(guó)社會(huì)經(jīng)濟(jì)的發(fā)展,越來(lái)越多的人擁有了自己的私家車(chē),導(dǎo)致我國(guó)汽車(chē)保有量呈爆炸式增長(zhǎng),因此開(kāi)發(fā)出一款車(chē)輛檢索系統(tǒng)具有重要的現(xiàn)實(shí)意義。此外在道路安全監(jiān)控方面,公安交通系統(tǒng)數(shù)據(jù)庫(kù)中保存有大量車(chē)輛圖像,依據(jù)車(chē)輛外觀進(jìn)行圖像檢索將有利于刑事案件的偵破。
圖像檢索是計(jì)算機(jī)視覺(jué)領(lǐng)域里一個(gè)長(zhǎng)期研究的課題,基于內(nèi)容的圖像檢索任務(wù)早在20世紀(jì)90年代就已經(jīng)開(kāi)始。2003年Sivic等[1]提出了詞包(Bag of Words,BoW)模型,該模型主要利用了尺度不變特征轉(zhuǎn)換(Scale-invariant feature transform,SIFT)[2]算法,從此以后,計(jì)算機(jī)領(lǐng)域內(nèi)的專(zhuān)家學(xué)者共同見(jiàn)證了十多年來(lái)BoW模型對(duì)圖像檢索的重要性,并對(duì)算法進(jìn)行了許多次改進(jìn)。直到2012年Krizhevsky 等[3]提出了深層卷積神經(jīng)網(wǎng)絡(luò)模型AlexNet,并在ImageNet挑戰(zhàn)賽中獲得了冠軍,引起了學(xué)術(shù)界的廣泛關(guān)注,圖像檢索的研究重心開(kāi)始轉(zhuǎn)向深度學(xué)習(xí)。直到今天基于SIFT的圖像檢索技術(shù)仍在發(fā)展,但基于卷積神經(jīng)網(wǎng)絡(luò)的圖像檢索技術(shù)已經(jīng)成為主流。基于卷積神經(jīng)網(wǎng)絡(luò)的圖像檢索技術(shù)大體分為三類(lèi),基于預(yù)訓(xùn)練的模型[4]、基于微調(diào)的模型[5]和混合模型[6]。前兩者基于單網(wǎng)絡(luò)傳輸,后者則基于多網(wǎng)絡(luò)傳輸[7]。然而,這些方法中大部分直接使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行了特征提取,而沒(méi)有評(píng)估所獲得特征的有效性。
細(xì)粒度圖像檢索是圖像檢索領(lǐng)域的一個(gè)重要分支,不同于基于內(nèi)容的圖像檢索任務(wù)?;趦?nèi)容的圖像檢索主要針對(duì)圖像內(nèi)容的相似性進(jìn)行檢索,而細(xì)粒度圖像檢索是對(duì)主類(lèi)別下的子類(lèi)別進(jìn)行檢索(例如對(duì)寶馬品牌下不同型號(hào)車(chē)輛的檢索),由于子類(lèi)別之間的差異往往是細(xì)微的,因而細(xì)粒度檢索難度更大。實(shí)驗(yàn)表明目前大部分的圖像檢索算法在細(xì)粒度圖像檢索任務(wù)上效果不佳。
與解決細(xì)粒度分類(lèi)任務(wù)提出的方法數(shù)量相比,解決細(xì)粒度圖像檢索任務(wù)的方法則要少得多。Wang等[8]提出利用深度排序去學(xué)習(xí)細(xì)粒度圖像間的相似性,然而這需要對(duì)圖像進(jìn)行標(biāo)注,不利于大規(guī)模圖像檢索。Wei等[9]提出一種無(wú)監(jiān)督細(xì)粒度圖像檢索方法,通過(guò)對(duì)主要目標(biāo)的定位,排除掉了無(wú)關(guān)信息的干擾,生成具有判別力的特征描述子,但該方法在車(chē)輛檢索方面效果不理想。Ahmad等[10]提出了一種基于對(duì)象的圖像檢索方法,通過(guò)設(shè)置閾值去除了無(wú)效的特征信息,并采用了哈希方法進(jìn)行了大規(guī)模圖像檢索。
以上方法主要是對(duì)全局特征的相似度進(jìn)行比較,隨著檢索類(lèi)別數(shù)量的增多,檢索效果會(huì)變得不理想。為了解決這種問(wèn)題,本文利用Faster R-CNN[11]對(duì)目標(biāo)區(qū)域進(jìn)行定位和類(lèi)別判斷,并結(jié)合這兩項(xiàng)數(shù)據(jù)結(jié)果進(jìn)行二次檢索。本文方法首先對(duì)全局特征描述子進(jìn)行檢索,再利用局部特征描述子和類(lèi)別得分對(duì)圖像進(jìn)行二次檢索。實(shí)驗(yàn)結(jié)果證明該方法在主流細(xì)粒度車(chē)輛數(shù)據(jù)集中取得了較好的檢索效果。
為實(shí)現(xiàn)對(duì)車(chē)輛圖像的檢索任務(wù),本文提出了一種兩階段圖像檢索方法,該方法的整體網(wǎng)絡(luò)框架如圖1所示,首先對(duì)預(yù)訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行微調(diào),在“Pool6”層設(shè)置閾值t,選擇包含有效激活區(qū)域的特征。然后進(jìn)行第一階段檢索,通過(guò)GeM pooling[12]將特征聚合為全局特征描述子,對(duì)全局特征描述子進(jìn)行降維與白化操作,再根據(jù)歐氏距離方法進(jìn)行初次檢索;第二階段采用Faster R-CNN網(wǎng)絡(luò)模型對(duì)第一階段排序結(jié)果中的圖像進(jìn)行目標(biāo)區(qū)域定位和類(lèi)別預(yù)測(cè),將具有相同類(lèi)別目標(biāo)區(qū)域的特征描述子再次進(jìn)行歐氏距離相似性度量,并結(jié)合擴(kuò)展查詢(xún),得到最終的檢索結(jié)果。
2015年牛津大學(xué)的Simonyan等[13]提出了VGG-Net,該模型的網(wǎng)絡(luò)深度為16到19層,有兩種類(lèi)型,即VGG-16和VGG-19。VGG-16由13個(gè)卷積層和3個(gè)全連接組成,包含512個(gè)通道,輸入圖像被表示為一個(gè)W×H×512的3維張量。在512個(gè)通道中隨機(jī)選取一些特征圖,并將特征圖疊加在原始圖像上,以便獲得更好的可視化效果,從圖2中可以發(fā)現(xiàn),采樣的特征圖中激活區(qū)域(圖中高亮部分)有的(如圖2(c)和圖2(d))在車(chē)輛上,有的則在背景中(如圖2(a)和圖2(b)),這說(shuō)明了并非所有特征都是有效的,單個(gè)通道最多只包含弱語(yǔ)義信息,因此選擇和使用有用的特征是十分必要的。
選擇有效的特征有兩個(gè)重要目的:首先,可以消除不相關(guān)的特征,利用有效的特征來(lái)表示對(duì)象;其次,去除不相關(guān)的特征可以降低背景在圖像表示過(guò)程中的影響。Pool5層是VGG-16模型中最后一個(gè)最大池化層,通過(guò)調(diào)整Pool5輸出特征圖的尺寸為6×6,發(fā)現(xiàn)在車(chē)輛特定部位產(chǎn)生了不同程度的激活。為了選擇有效的特征,Ahmad等[10]通過(guò)計(jì)算每幅特征圖的平均激活值,利用空利用指數(shù),設(shè)置閾值t,對(duì)小于閾值的特征圖進(jìn)行保留,從而消除了那些對(duì)大多數(shù)圖像沒(méi)有強(qiáng)烈反應(yīng)或產(chǎn)生空激活的特征圖,保留的特征圖表現(xiàn)出了對(duì)目標(biāo)物體的極大關(guān)注度,該方法可以在不降低VGG-16性能的情況下選擇出有效的特征。
經(jīng)過(guò)預(yù)訓(xùn)練模型提取的特征是一組局部特征,為了將其聚合為全局特征描述子,方便進(jìn)行相似性度量,目前主流的方法是進(jìn)行池化操作。常用的池化方法包括全局最大池化(Global Max Pooling)、全局平均池化(Global Average Pooling)。全局最大池化能更好地凸顯個(gè)體的激活信息,而損失了整體信息,全局平均池化則剛好相反,對(duì)特征圖的整體信息進(jìn)行保留,而弱化了個(gè)體信息。
通過(guò)預(yù)訓(xùn)練模型輸出一個(gè)W×H×K的3維張量R,其中K是最后一層卷積層產(chǎn)生特征圖的數(shù)量,Rk為特征圖k∈{1,2,…,K}對(duì)應(yīng)W×H的激活集合。特征聚合池化采用R作為輸入并以向量f作為輸出,向量f的全局最大池化和全局平均池化分別表示如下:
全局最大池化:
(1)
全局平均池化:
(2)
廣義平均池化(Generalized Mean Pooling,GeM pooling)[12]結(jié)合了全局最大池化和全局平均池化方法,其優(yōu)點(diǎn)是可以通過(guò)訓(xùn)練進(jìn)行優(yōu)化,如式(3)所示。
(3)
式中:pk是可微的,其值可以手動(dòng)設(shè)置也可通過(guò)訓(xùn)練獲得,當(dāng)pk趨于無(wú)窮大時(shí)效果等同于全局最大池化效果,當(dāng)pk等于1時(shí),則和全局平均池化效果相同。
在對(duì)預(yù)訓(xùn)練模型提取的特征進(jìn)行廣義平均池化后,需要對(duì)向量f進(jìn)行2范數(shù)[14]歸一化操作,以便使得圖像之間的相似性可以通過(guò)內(nèi)積來(lái)度量,GeM向量對(duì)應(yīng)于被2范數(shù)歸一化的f向量,構(gòu)成了圖像的全局特征描述子,為初次檢索做準(zhǔn)備。
對(duì)高維數(shù)據(jù)進(jìn)行操作是一件困難的事,許多可以在低維數(shù)據(jù)中進(jìn)行的操作無(wú)法在高維數(shù)據(jù)上實(shí)現(xiàn)。在提取數(shù)據(jù)庫(kù)中所有圖像的全局特征描述子時(shí),會(huì)產(chǎn)生大量的計(jì)算和內(nèi)存消耗,這就需要對(duì)全局特征描述子進(jìn)行主成分分析(Principal Component Analysis,PCA)降維和白化處理[15]。
PCA是一種常用的特征降維方法,其主要優(yōu)點(diǎn)是降低數(shù)據(jù)的復(fù)雜性,只保留重要信息。PCA的工作原理是首先找出數(shù)據(jù)方差最大方向作為第一個(gè)主成分坐標(biāo)軸,接著找出數(shù)據(jù)方差次大方向且與第一主成分方向正交的坐標(biāo)軸作為第二主成分方向,以此類(lèi)推找出所有主成分方向,然后通過(guò)數(shù)據(jù)集的協(xié)方差矩陣計(jì)算出主成分的特征值和特征向量,保留最大的a個(gè)特征,從而將維度降為a維特征向量。然后對(duì)a維向量進(jìn)行白化處理得到最終的全局特征描述子。
PAC降維與白化操作降低了特征的冗余度和特征間的相關(guān)性,能夠有效提高檢索效率。
歐氏距離是指在N維空間中兩個(gè)向量之間的絕對(duì)距離,其形式簡(jiǎn)單,是一種常用的向量相似性度量方法。本文以歐氏距離對(duì)GeM pooling產(chǎn)生的全局特征描述子進(jìn)行相似性度量,兩個(gè)特征向量x∈(x1,xi),y∈(y1,yn)之間距離可表示為:
(4)
為進(jìn)一步提高檢索精度,本文增加了擴(kuò)展查詢(xún)(Query Expansion,QE)[16]功能,QE是一種常用的圖像檢索方法,該方法借鑒于對(duì)文本的檢索案例。在進(jìn)行擴(kuò)展查詢(xún)之前通過(guò)計(jì)算查詢(xún)圖像特征描述子與數(shù)據(jù)庫(kù)中圖像特征描述子之間的歐氏距離,得到數(shù)據(jù)庫(kù)中排名前k個(gè)圖像的特征描述子,在擴(kuò)展查詢(xún)時(shí)對(duì)這k個(gè)特征描述子進(jìn)行均值求和并重新歸一化得到新的特征描述子,將新的特征描述子同數(shù)據(jù)庫(kù)中的特征描述子再進(jìn)行一次歐氏距離度量,得到最終的檢索結(jié)果。擴(kuò)展查詢(xún)使得特征變得更為豐富,通過(guò)兩次空間驗(yàn)證提高了查詢(xún)精度。
區(qū)域建議網(wǎng)絡(luò)(Region Proposal Network,RPN)是Faster R-CNN的重要組成部件,經(jīng)常被用在計(jì)算機(jī)視覺(jué)領(lǐng)域。RPN是一種全卷積神經(jīng)網(wǎng)絡(luò)(FCN),F(xiàn)CN沒(méi)有全連接層,對(duì)輸入的不同尺寸圖像經(jīng)過(guò)一次全卷積操作就可以得到多個(gè)區(qū)域的特征。RPN替代了選擇搜索(Selective search)形式的候選區(qū)域生成方式,采用了滑動(dòng)窗口在特征圖上進(jìn)行滑動(dòng)并產(chǎn)生多尺度的錨(anchor),然后通過(guò)分類(lèi)層判斷目標(biāo)區(qū)域類(lèi)別,并通過(guò)邊界回歸層得到目標(biāo)位置。
在訓(xùn)練RPN過(guò)程中,給每個(gè)候選區(qū)域都分配了一個(gè)二值標(biāo)簽用以判別是否是目標(biāo)區(qū)域,對(duì)以下兩類(lèi)候選區(qū)域配以正標(biāo)簽:(1) 與目標(biāo)區(qū)域有最大交并比值(Intersection-over-Union,IoU)(即兩個(gè)區(qū)域的交集和并集之比)的候選區(qū)域;(2) 與目標(biāo)區(qū)域的交并比值大于0.7的候選區(qū)域。而與所有目標(biāo)區(qū)域的交并比值低于0.3的候選框配負(fù)標(biāo)簽,其他情況的一律舍棄。RPN的損失函數(shù)由分類(lèi)損失函數(shù)和邊界回歸損失函數(shù)組成,損失函數(shù)定義為:
(5)
待檢測(cè)圖像和其特征圖在位置上存在一定的對(duì)應(yīng)關(guān)系,把待檢測(cè)圖像中目標(biāo)區(qū)域映射到特征圖中的過(guò)程稱(chēng)為感興趣區(qū)域(RoI)映射,該過(guò)程在感興趣區(qū)域池化層(RoI pooling layer)中完成。由于全連接層需要固定尺度的特征圖進(jìn)行訓(xùn)練,而RoI Pooling能將不同尺寸的輸入圖像以固定維度的特征向量輸出,所以RoI Pooling可以很好地將RPN產(chǎn)生的不同尺度錨縮放到固定尺度,然后傳入到全連接層中進(jìn)行目標(biāo)定位和類(lèi)別預(yù)測(cè)操作。
在對(duì)查詢(xún)圖像中目標(biāo)車(chē)輛的類(lèi)別進(jìn)行預(yù)測(cè)前,需要對(duì)Faster R-CNN進(jìn)行微調(diào),將數(shù)據(jù)集所包含的類(lèi)別作為可預(yù)測(cè)范圍。重排序首先將待查詢(xún)圖像和初次檢索圖像的特征圖送入RPN中產(chǎn)生候選框,經(jīng)過(guò)非極大值抑制法去除掉無(wú)關(guān)的候選框,對(duì)每個(gè)候選框進(jìn)行ROI pooling操作后送入全連接層,在全連接層中預(yù)測(cè)車(chē)輛所屬類(lèi)別,并獲得該類(lèi)別車(chē)輛的目標(biāo)區(qū)域。重排序過(guò)程首先對(duì)目標(biāo)區(qū)域做全局最大值池化操作,得到目標(biāo)區(qū)域的特征描述子,然后將初次檢索的圖像類(lèi)別和查詢(xún)類(lèi)別相同的目標(biāo)區(qū)域進(jìn)行二次歐氏距離計(jì)算,并結(jié)合擴(kuò)展查詢(xún)得到最終的排序結(jié)果,作為檢索結(jié)果按順序輸出。
本文實(shí)驗(yàn)在Caffe深度學(xué)習(xí)框架上進(jìn)行,操作系統(tǒng)使用的是Ubuntu 16.04,顯卡采用8 GB內(nèi)存的Nvidia GeForce RTX 2080,CPU為英特爾Core i7- 8700K六核,內(nèi)存為16 GB。數(shù)據(jù)集采用CompCars Dataset[17]和Stanford Cars[18]。
實(shí)驗(yàn)分別在Stanford Cars和CompCars Dataset數(shù)據(jù)集上進(jìn)行,Stanford Cars數(shù)據(jù)集是計(jì)算機(jī)視覺(jué)領(lǐng)域常用的細(xì)粒度車(chē)輛數(shù)據(jù)集,其中包含196個(gè)車(chē)型類(lèi)別共計(jì)16 850幅圖像,標(biāo)注有汽車(chē)的品牌、型號(hào)、生產(chǎn)年份信息和位置邊框信息。CompCars Dataset數(shù)據(jù)集包含50 000幅監(jiān)控圖像,都是從車(chē)輛正前方拍攝,其中有281種不同類(lèi)別型號(hào)的車(chē)輛。
實(shí)驗(yàn)采用預(yù)訓(xùn)練模型VGG-16進(jìn)行提取特征,將GeM pooling的pk設(shè)置為固定值3,并依據(jù)數(shù)據(jù)集的特點(diǎn)對(duì)Faster R-CNN模型進(jìn)行了微調(diào)。本文采用mAP(Mean Average Precision)和precision@K(top K)進(jìn)行性能評(píng)估。
根據(jù)Stanford Car數(shù)據(jù)集的特點(diǎn),調(diào)整了Faster R-CNN中的輸出層,設(shè)置預(yù)測(cè)類(lèi)別為197個(gè)(包括背景類(lèi)別),從每個(gè)類(lèi)別下抽出5幅用于測(cè)試,不參與訓(xùn)練過(guò)程。首先將查詢(xún)圖像通過(guò)GeM分支進(jìn)行初次檢索,將檢索結(jié)果進(jìn)行保存供重排序使用,圖3所示為初次檢索結(jié)果中的前8幅圖像,圖中左上角為查詢(xún)圖像,后面為查詢(xún)結(jié)果,按照相似度由大到小的順序從左到右從上到下依次排列,其中1、3、7、8位置為正確結(jié)果。然后,在初次查詢(xún)結(jié)果的基礎(chǔ)上進(jìn)行重排序檢索,作為最終的檢索結(jié)果輸出,重排序結(jié)果如圖4所示,1、2、3、4、5、7、8位置為正確結(jié)果,從實(shí)驗(yàn)結(jié)果中可以看出重排序?qū)z索精度的提高效果明顯。
為了證明方法的先進(jìn)性,本文將算法與主流圖像檢索算法在Stanford Cars數(shù)據(jù)集上進(jìn)行檢索精度對(duì)比,Top1和Top5的mAP比較結(jié)果如表1所示。R-MAC[4]算法利用卷積神經(jīng)網(wǎng)絡(luò)提取圖像的局部特征,然后利用不同尺度的滑動(dòng)窗口進(jìn)行Global Max Pooling操作將特征聚合為全局特征描述子,在多區(qū)域模式下,利用積分圖像和近似極大值算子可加快該過(guò)程。SPoC[19]算法利用sum pooling提取全局特征描述子,使用經(jīng)向基函數(shù)計(jì)算特征平面,但忽略了每個(gè)通道的權(quán)值,導(dǎo)致去噪效果不好。CroW算法[20]對(duì)CNN最后一個(gè)卷積層提取的特征添加了權(quán)重,并且對(duì)每個(gè)卷積通道也進(jìn)行加權(quán)處理,達(dá)到了較好的效果。SCDA算法[9]主要針對(duì)細(xì)粒度圖像檢索任務(wù),使用極大連通圖定位圖像中的物體,以去除背景噪聲,算法將全局最大池化和全局平均池化進(jìn)行了串聯(lián),在細(xì)粒度檢索上取得了不錯(cuò)的效果。HLBP算法[21]利用多個(gè)卷積層特征的自相關(guān)和互相關(guān)性,有效融合了多層特征信息,提高了圖像檢索性能。CGD算法[22]組合了多個(gè)全局描述子,在端到端的方式進(jìn)行訓(xùn)練時(shí),可以操作不同類(lèi)型的特征屬性,獲得了比單個(gè)全局描述子更好的效果。
表1 Stanford Cars數(shù)據(jù)集檢索mAP結(jié)果
圖5顯示了在Stanford Cars數(shù)據(jù)集上precision@K(top K)的檢索精度比較,其中K分別取5、10、15、20、25,可以看出本文算法相比以往大部分算法在細(xì)粒度圖像檢索任務(wù)上的先進(jìn)性。
CompCars Dataset下包含有50 000幅車(chē)輛監(jiān)控圖像,全部在車(chē)輛正面拍攝,根據(jù)數(shù)據(jù)集中包含的車(chē)輛類(lèi)別數(shù)量,將Faster R-CNN的預(yù)測(cè)類(lèi)別設(shè)置為282個(gè)(包含背景類(lèi)別),從每個(gè)類(lèi)別下抽出5幅圖像用于查詢(xún)測(cè)試,不參與訓(xùn)練過(guò)程。如圖6所示為查詢(xún)結(jié)果,每行第一個(gè)為查詢(xún)圖像,后面為此按相似度排序最高的前四張圖像,第一行4和第二行3、4為查詢(xún)錯(cuò)誤圖像。
由于光照度影響,數(shù)據(jù)集中在夜間拍攝的車(chē)輛圖像沒(méi)有被檢索出來(lái),這些圖像往往存在車(chē)輛輪廓無(wú)法辨認(rèn)的情況,影響了數(shù)據(jù)集整體的檢索效果。
本文提出了一種兩階段細(xì)粒度車(chē)輛圖像檢索算法,首先對(duì)預(yù)訓(xùn)練卷積模型進(jìn)行微調(diào),對(duì)提取的特征進(jìn)行篩選,排除無(wú)關(guān)的背景信息,然后在第一階段中利用generalized mean pooling對(duì)局部特征進(jìn)行聚合,獲得圖像的全局特征描述子,對(duì)全局描述子進(jìn)行PCA降維與白化處理,并使用歐氏距離法進(jìn)行初次檢索;第二階段利用Faster R-CNN的類(lèi)別預(yù)測(cè)和定位功能,將查詢(xún)圖像與初次檢索圖像類(lèi)別相同的目標(biāo)區(qū)域特征描述子之間再次進(jìn)行歐氏距離計(jì)算,最后結(jié)合擴(kuò)展查詢(xún)得到檢索結(jié)果。實(shí)驗(yàn)結(jié)果表明,本文方法相比以往的主流檢索方法在細(xì)粒度車(chē)輛圖像檢索準(zhǔn)確率上優(yōu)勢(shì)明顯。本文主要針對(duì)小規(guī)模、固定數(shù)量的數(shù)據(jù)集進(jìn)行檢索。針對(duì)交通系統(tǒng)的實(shí)時(shí)性、數(shù)據(jù)量大的特點(diǎn),利用大數(shù)據(jù)技術(shù)進(jìn)行存儲(chǔ)與檢索是今后的研究方向。