周倫鋼,孫怡峰,王 坤,吳 疆,黃維貴,李炳龍
1.河南省工業(yè)學(xué)校,鄭州450002
2.信息工程大學(xué),鄭州450001
3.鄭州信大先進(jìn)技術(shù)研究院,鄭州450001
目標(biāo)屬性識(shí)別是指對(duì)圖像或視頻中特定物體目標(biāo)外觀特征的識(shí)別。例如,對(duì)圖像中的行人,其性別、年齡段、衣著顏色、攜帶物品等外觀特征屬性需要進(jìn)行識(shí)別;對(duì)圖像中的車輛需要識(shí)別品牌型號(hào)、顏色、拍攝角度等屬性。目標(biāo)屬性識(shí)別的研究具有很高的價(jià)值[1-2]。在科研方面,目標(biāo)屬性識(shí)別對(duì)于跨攝像頭跟蹤的研究具有重要的促進(jìn)作用。在應(yīng)用方面,目標(biāo)屬性識(shí)別可以應(yīng)用在公安刑偵、尋找涉案車輛、丟失老人兒童等各類場(chǎng)景。
目標(biāo)屬性識(shí)別近年來主要采用深度學(xué)習(xí)方法。文獻(xiàn)[3]針對(duì)行人目標(biāo)的不同屬性訓(xùn)練多個(gè)卷積神經(jīng)網(wǎng)絡(luò),每種網(wǎng)絡(luò)分別提取對(duì)應(yīng)的屬性特征。文獻(xiàn)[4]將每種人體屬性視為一個(gè)二分類問題,采用特征共享的方式,通過CNN提取目標(biāo)特征,然后使用多個(gè)分類器用于不同屬性識(shí)別。Sudowe 等[5]采用了聯(lián)合訓(xùn)練實(shí)現(xiàn)了基于深度神經(jīng)網(wǎng)絡(luò)的多屬性識(shí)別。Li 等[6]提出DeepMAR網(wǎng)絡(luò)考慮了不同屬性之間的相關(guān)性,改進(jìn)的交叉熵?fù)p失函數(shù)促進(jìn)提升神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)效果。Han等[7]提出一種針對(duì)行人屬性識(shí)別的Pooling 方法,它整合了不同區(qū)域?qū)傩缘纳舷挛男畔ⅰin 等[8]采用殘差網(wǎng)絡(luò)提升了行人屬性識(shí)別的效果。上述研究多是以直接擁有僅包括目標(biāo)物體的圖片為基礎(chǔ)。而在現(xiàn)實(shí)應(yīng)用中,目標(biāo)屬性識(shí)別是一個(gè)綜合問題,例如在監(jiān)控?cái)z像頭場(chǎng)景下,首先需要計(jì)算機(jī)從畫面中檢測(cè)到物體目標(biāo),然后再進(jìn)行目標(biāo)的屬性識(shí)別,整個(gè)過程是全自動(dòng)的,因此是一種端到端的目標(biāo)屬性識(shí)別;第二,目標(biāo)的屬性往往有多個(gè)取值,即多值屬性,而現(xiàn)有研究往往將屬性識(shí)別簡(jiǎn)化為多個(gè)二值分類問題,使用多個(gè)分類器,導(dǎo)致運(yùn)算量很大;第三,目標(biāo)的多值屬性往往有多個(gè),若進(jìn)一步使用多個(gè)分類器,將導(dǎo)致時(shí)間消耗過大。
針對(duì)上述問題,本文提出一種目標(biāo)多種多值屬性的端到端快速識(shí)別算法。首先利用目標(biāo)檢測(cè)網(wǎng)絡(luò),確定大類物體目標(biāo)的方位(boundingbox 框);然后依據(jù)物體方位,共享深層次特征,構(gòu)造針對(duì)多值屬性的子網(wǎng)絡(luò),進(jìn)行多分類,確定屬性取值;依據(jù)屬性獨(dú)立特性,設(shè)定子網(wǎng)絡(luò)個(gè)數(shù),實(shí)現(xiàn)多種屬性識(shí)別;在訓(xùn)練過程中,三階段采用了不同的目標(biāo)函數(shù)(loss 函數(shù)),分階段分目標(biāo)進(jìn)行訓(xùn)練。實(shí)驗(yàn)結(jié)果表明,在保證多種多值屬性識(shí)別效果的前提下,本文的深層網(wǎng)絡(luò)提高了運(yùn)算效率,為實(shí)時(shí)應(yīng)用打下了基礎(chǔ)。
當(dāng)前研究比較成熟的是端到端的目標(biāo)檢測(cè),F(xiàn)aster RCNN[9]為兩階段目標(biāo)檢測(cè)的典型代表,SSD[10]和Yolo[11-13]系列算法為一階段的典型目標(biāo)檢測(cè)算法??梢詫⒕哂胁煌瑢傩灾档哪繕?biāo)視為不同種類的物體,檢測(cè)定位到某種物體目標(biāo),同時(shí)獲得其屬性值。但是,多種屬性存在并且每種屬性又有多個(gè)屬性值的情況,將使每種物體的樣本變得相對(duì)很少,這給訓(xùn)練帶來了困難,導(dǎo)致識(shí)別準(zhǔn)確度低。例如,若想識(shí)別車輛的品牌型號(hào)屬性、顏色屬性和拍攝角度等屬性,需要將品牌型號(hào)、拍攝角度、顏色不同的車都單獨(dú)標(biāo)注成一種類別目標(biāo)物體,這將導(dǎo)致目標(biāo)類別非常多,而每種類別的樣本就顯得非常少。
本文針對(duì)目標(biāo)多種多值屬性的識(shí)別問題,首先采用目標(biāo)檢測(cè),確定大類別目標(biāo)物體的包圍框(boundingbox),這里的大類別目標(biāo)物體指行人或車等;再由boundingBox 提取目標(biāo)全范圍(非局部)的特征,依據(jù)上述特征識(shí)別各個(gè)多值屬性的取值??梢圆捎枚鄠€(gè)單獨(dú)網(wǎng)絡(luò)分別進(jìn)行,如YoloV3[13]檢測(cè)網(wǎng)絡(luò)進(jìn)行物體檢測(cè)獲得boundingbox框,其他單獨(dú)訓(xùn)練的分類網(wǎng)絡(luò)(如ResNet[14])根據(jù)boundingbox框確定的圖像區(qū)域,重新提取特征,進(jìn)行屬性識(shí)別。無論從訓(xùn)練角度還是從推斷角度,上述方式的計(jì)算量都非常大,本文提出將檢測(cè)網(wǎng)絡(luò)與分類網(wǎng)絡(luò)合并,進(jìn)行端到端(End to End)的訓(xùn)練,從訓(xùn)練和推斷角度都提高了速度。
在YoloV3 基礎(chǔ)上進(jìn)行修改,增加了用于屬性識(shí)別的子網(wǎng)絡(luò),實(shí)現(xiàn)端到端的推斷與訓(xùn)練。YoloV3 網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示,首先輸入圖像縮放為416×416(等比縮放,長(zhǎng)邊為416,短邊居中,旁邊補(bǔ)白色),采用不帶全連接層的Darknet-53 網(wǎng)絡(luò)[13]作為骨干網(wǎng)絡(luò)提取特征,DBL處理代表了兩次3×3 卷積、批歸一化(Batch Normalization,BN)和Leaky Relu激活。resN代表了進(jìn)行了N輪殘差,每輪殘差由1×1 卷積和3×3 卷積(含BN 和Leaky ReLU激活)以及short cut連接組成。DBL和resN中各卷積核尺寸與卷積核個(gè)數(shù)的詳細(xì)情況,如圖2所示。
由圖1和圖2可見,416×416的圖像進(jìn)入Darknet-53網(wǎng)絡(luò)后產(chǎn)生3 個(gè)分支,圖3 給出了一幅圖像經(jīng)過這3 個(gè)分支的特征圖示例,從中可見第三分支特征提取層數(shù)最深,卷積運(yùn)算提取的特征也最抽象,第一分支層數(shù)相對(duì)較少,特征圖中還能看出汽車的一點(diǎn)痕跡。
圖1 YoloV3的推斷網(wǎng)絡(luò)結(jié)構(gòu)
在YoloV3中,3個(gè)分支的特征圖又分別經(jīng)過一系列的DBL 處理、上采樣以及合并(concat)、DBL 處理等操作。在進(jìn)入最后一次卷積前,3個(gè)分支的feature map尺寸分別為52×52×256、26×26×512、13×13×1 024。這相當(dāng)于對(duì)輸入圖像進(jìn)行了不同粒度的網(wǎng)格劃分,第一個(gè)分支粒度最細(xì),對(duì)應(yīng)了52×52個(gè)網(wǎng)格,每個(gè)網(wǎng)格有256維特征向量;第二個(gè)分支的粒度折中,總共有26×26個(gè)網(wǎng)格,每個(gè)網(wǎng)格有512 維特征向量;第三個(gè)分支的粒度最粗,總共有13×13 個(gè)網(wǎng)格,每個(gè)網(wǎng)格有1 024 維向量來表征其特征。接下來,3個(gè)分支feature map均進(jìn)行1×1核的卷積,本次卷積后的激活函數(shù)為sigmoid。YoloV3中1×1卷積核的個(gè)數(shù)為3×(5+num_class),它代表了每個(gè)網(wǎng)格將基于3 種尺寸anchor(以網(wǎng)格區(qū)域?yàn)橹行牡奶囟ǔ叽缇匦慰颍┻M(jìn)行輸出,每種anchor 對(duì)應(yīng)的輸出有(5+num_class)個(gè),這里“5”指輸出boundingbox的4個(gè)坐標(biāo)值及其為前景的置信度,“num_class”為目標(biāo)類別數(shù),指還要輸出boundingbox是否是num_class個(gè)類別的概率值。
圖2 Darknet-53網(wǎng)絡(luò)的卷積層參數(shù)
圖3 Darknet-53網(wǎng)絡(luò)3個(gè)分支的卷積特征圖
圖4 端到端屬性識(shí)別網(wǎng)絡(luò)結(jié)構(gòu)
由于本文限定需要屬性識(shí)別的目標(biāo)都屬于一個(gè)大類別,如車輛,將YoloV3 中1×1 卷積核的個(gè)數(shù)3×(5+num_class)修改為3×5=3×(1+4),形成圖4 所示的網(wǎng)絡(luò)結(jié)構(gòu)。這里num_class=0,前景置信度就是boundingbox的置信度。這樣,算法將得到3×(52×52+26×26+13×13)個(gè)候選boundingbox 及其置信度。以置信度大于0.3 以及其位置不超出圖像邊界為條件,來進(jìn)行初次篩選候選boundingbox;剩余的進(jìn)行非極大值抑制(NMS)處理,剩余的boundingbox 是需要識(shí)別屬性的目標(biāo)。在圖4 中,將目標(biāo)boundingbox框坐標(biāo)和上述52×52×256的feature map作為多值屬性識(shí)別子網(wǎng)絡(luò)的輸入,每個(gè)子網(wǎng)絡(luò)均從boundingbox 對(duì)應(yīng)的feature map 區(qū)域中取出特征數(shù)據(jù),預(yù)測(cè)某個(gè)屬性取值,由于共享了深層特征,將大大提高運(yùn)算速度。首先采用Roi-Pooling 層[9]獲取相同維數(shù)的神經(jīng)元,然后采用兩層全連接處理,最終采用softmax輸出各個(gè)屬性值(選項(xiàng))的概率。第一個(gè)全連接的神經(jīng)元個(gè)數(shù)為2 048,后一個(gè)全連接的神經(jīng)元個(gè)數(shù)由多值屬性取值的個(gè)數(shù)決定。
由上可見,本文采用端到端網(wǎng)絡(luò)(圖4)有兩次重要的輸出,一次是進(jìn)行1×1卷積,預(yù)測(cè)boundingbox的置信度和位置;一次是用SoftMax 處理得到boundingbox 確定目標(biāo)的屬性選項(xiàng)值的概率。為了方便敘述,下面將1×1 卷積處理稱為D(Detection)層處理,將SoftMax 處理稱為R(Recognition)層處理。
一個(gè)物體往往有多種屬性需要識(shí)別,有些屬性是相互獨(dú)立的,如車的拍攝角度就與品牌型號(hào)相互獨(dú)立;有些屬性間是存在依賴關(guān)系的,如通過品牌型號(hào)往往可以直接推出車型屬性值,當(dāng)識(shí)別出品牌型號(hào)屬性取值為Audi Q5時(shí),就由知識(shí)庫(kù)可以直接推斷出其車型是SUV。
本文選擇相互獨(dú)立的屬性用于識(shí)別,目標(biāo)物體有多少種屬性相互獨(dú)立,就對(duì)應(yīng)構(gòu)建多少個(gè)子網(wǎng)絡(luò),各子網(wǎng)絡(luò)輸出神經(jīng)元個(gè)數(shù)由屬性值的個(gè)數(shù)決定。例如,對(duì)車輛目標(biāo),假設(shè)有拍攝角度、品牌型號(hào)、顏色等3種相互獨(dú)立的屬性需要識(shí)別,則對(duì)應(yīng)了3個(gè)一級(jí)子網(wǎng)絡(luò)。根據(jù)各個(gè)子網(wǎng)絡(luò)的輸出值,將其經(jīng)過Softmax 歸一化處理得到各個(gè)屬性值的概率,取最大(Top-1)或Top-N 就可獲得目標(biāo)物體各個(gè)屬性的預(yù)測(cè)。這里需要說明的是,對(duì)現(xiàn)實(shí)商業(yè)中的特定車型,其顏色往往在特有范圍內(nèi),顏色屬性與車型屬性有一定依賴關(guān)系,但現(xiàn)實(shí)中也存在個(gè)人改裝、重新噴涂原有車型沒有顏色的情況,導(dǎo)致存在車型與顏色相互獨(dú)立的情況,因此這里將顏色作為多種相互獨(dú)立屬性之一舉例是合理的。此外,車輛顏色也可以在車輛位置確定后通過顏色直方圖進(jìn)行推斷,但本文探討的神經(jīng)網(wǎng)絡(luò)識(shí)別顏色屬性在工程應(yīng)用中可以作為一種補(bǔ)充。
前面敘述了目標(biāo)物體屬性的推斷框架,為了獲得網(wǎng)絡(luò)各層的參數(shù)值,需要進(jìn)行訓(xùn)練,這里先敘述多獨(dú)立屬性下樣本的標(biāo)注方法。YoloV3目標(biāo)檢測(cè)可以采用如下標(biāo)注方法:
首先是圖像文件名,然后是圖像中目標(biāo)Ground Truth(下面簡(jiǎn)稱為GT)所在的boundingbox 的4 個(gè)坐標(biāo)以及類別。上例子中第一個(gè)圖像有兩個(gè)目標(biāo),第二個(gè)圖像有一個(gè)目標(biāo)。
本文假定只關(guān)注一大類目標(biāo),可省略類別,在GT boundingbox 的4 個(gè)坐標(biāo)后面順序標(biāo)注各個(gè)屬性的屬性取值。以前述的品牌型號(hào)、拍攝角度、顏色屬性為例,先標(biāo)注品牌型號(hào)屬性,再標(biāo)注拍攝角度屬性和顏色屬性,得到如下標(biāo)注:
其中36、116、868、587是4個(gè)坐標(biāo)值,接下來的4代表拍攝角度屬性的取值為前側(cè)部,12代表品牌型號(hào)屬性取值為VW Passart 8 Sedan(大眾第八代帕薩特三箱),8 代表顏色為白色。為此,可以構(gòu)建品牌型號(hào)、拍攝角度、顏色與數(shù)字的對(duì)應(yīng)關(guān)系表,這里不再贅述。
本文端到端推斷的輸出包括兩個(gè)部分,如圖4 所示,一個(gè)是在D 層1×1 卷積處理后的輸出,一個(gè)是在R層softmax處理后的輸出。需要根據(jù)標(biāo)注分別得到這兩部分輸出的期望值,從而為構(gòu)建Loss函數(shù)、進(jìn)行訓(xùn)練做準(zhǔn)備。
第一部分,輸入圖像在D層處理前為13×13×1 024、26×26×512、52×52×256分辨率的feature map,即將整幅圖像分成了粗粒度13×13個(gè)網(wǎng)格、中粒度26×26個(gè)網(wǎng)格、細(xì)粒度52×52 個(gè)網(wǎng)格,將每個(gè)網(wǎng)格對(duì)應(yīng)3 個(gè)不同尺寸的anchor,記為anchor(x,y,wa,ha),其中x、y 為anchor中心點(diǎn)在feature map縱橫坐標(biāo),wa、ha為anchor在feature map尺度上的寬高值。feature map在D層處理后,每個(gè)anchor得到5個(gè)量,記為:
其中,X(x,y,wa,ha)和Y(x,y,wa,ha)為依據(jù)該anchor 預(yù)測(cè)的boundingbox中心點(diǎn)坐標(biāo),W(x,y,wa,ha)和H(x,y,wa,ha)為預(yù)測(cè)的boundingbox 寬和高,CONF(x,y,wa,ha)) 為依據(jù)上述預(yù)測(cè)boundingbox為前景目標(biāo)的置信度。
其中δ 為參數(shù),一般取接近于0的小數(shù),如δ=0.01。
為了進(jìn)行端到端的屬性識(shí)別,首先需要推斷目標(biāo)所在的boundingbox框,第二步依據(jù)boundingbox再推斷屬性的取值。為此,訓(xùn)練分成3個(gè)階段。
第一階段,目的是在訓(xùn)練后能夠檢測(cè)到準(zhǔn)確的boundingbox。使用coco 數(shù)據(jù)集訓(xùn)練好的YoloV3 模型參數(shù)值作為本階段訓(xùn)練的初始權(quán)重,利用反向傳播算法訓(xùn)練圖4中第一層到D層的網(wǎng)絡(luò)參數(shù),其他網(wǎng)絡(luò)參數(shù)保持不變。訓(xùn)練時(shí)的loss 僅僅考慮正樣本anchor 的前景置信度和其預(yù)測(cè)的boundingbox框坐標(biāo)誤差。
某個(gè)anchor(x,y,wa,ha)得到的boundingbox預(yù)測(cè)值記為:
計(jì)算包含預(yù)測(cè)boundingbox 與GT boundingbox 的最小box的面積,如式(8)~(12):
第一階段還要計(jì)算anchor 預(yù)測(cè)的前景置信度loss。設(shè)anchor(x,y,wa,ha)為正樣本,其預(yù)測(cè)的boundingbox置信度值為CONF(x,y,wa,ha),其期望的置信度值應(yīng)該為1,按下式計(jì)算置信度交叉熵:
最終,第一階段反向傳播算法使用的loss函數(shù)為:
需要指出的是,式(14)和式(16)中的求和是針對(duì)輸入圖像在D 層處理前形成的粗粒度、中粒度、細(xì)粒度網(wǎng)格下的anchor,并且是與GT的交并比大于0.5的anchor,也稱為第一階段的正樣本。
第二階段,目的是使訓(xùn)練后的屬性子網(wǎng)絡(luò)能夠較為準(zhǔn)確的預(yù)測(cè)屬性取值。第一層到D 層的網(wǎng)絡(luò)參數(shù)權(quán)重值使用上階段訓(xùn)練結(jié)果,并在本階段一直保持不變,反向傳播算法僅訓(xùn)練各屬性子網(wǎng)絡(luò)的權(quán)重參數(shù)。訓(xùn)練時(shí)的loss僅考慮屬性預(yù)測(cè)相關(guān)的loss。采用第一階段訓(xùn)練得到的第一層到D 層網(wǎng)絡(luò)參數(shù)值,將其固定,根據(jù)第一層到D 層的網(wǎng)絡(luò)輸出得到候選boundingbox,保留超過門限值的boundingbox 并進(jìn)行NMS 處理,計(jì)算剩余boundingbox 與GT boundingbox 的交并比,若交并比大于0.5,認(rèn)為這些boundingbox為第二階段的正樣本。由2.1節(jié)標(biāo)注的正樣本屬性期望概率q(x)xi,j∈{1,2,…,Ni}、屬性子網(wǎng)絡(luò)預(yù)測(cè)概率p(x)x=1,2,Ni,計(jì)算交叉熵作為loss:
其中i 代表第i 種屬性,Ni代表第i 種屬性的取值個(gè)數(shù),j 代表第二階段正樣本。若有相互獨(dú)立的多個(gè)需要預(yù)測(cè)的屬性,則:
到了年關(guān),人們都在互相問候,在他的微信列表里看見丁柔的頭像時(shí),我冷冷地抽了一口氣,沒想到他們居然還有聯(lián)系。沒忍住好奇心點(diǎn)進(jìn)去一看,只是最平常的問候,絲毫沒有曖昧的氣息。即便如此,我還是無法控制住情緒,腦子開始胡思亂想。
lossattribute用于本階段的反向傳播算法。
第三階段,目的是在前兩階段訓(xùn)練的基礎(chǔ)上,對(duì)所有的參數(shù)進(jìn)行調(diào)優(yōu)。使用第二階段最后的權(quán)重作為本階段所有參數(shù)的初值,然后一并考慮前景置信度、boundingbox 框、屬性預(yù)測(cè)的loss,使用反向傳播算法進(jìn)行所有的網(wǎng)絡(luò)參數(shù)進(jìn)行微調(diào)。
本階段計(jì)算loss時(shí),要對(duì)前述的所有anchor正樣本計(jì)算得到lossGIOU和lossconf,對(duì)所有boundingbox 正樣本計(jì)算得到lossattribute,本階段訓(xùn)練用的loss函數(shù)為:
實(shí)驗(yàn)采用Stanford Cars Dataset數(shù)據(jù)集[16],共16 185張圖像,其中用于訓(xùn)練的8 144 張,用于測(cè)試的共8 041張,數(shù)據(jù)集中典型場(chǎng)景如圖5 所示,既包含了車輛也包含了其他背景。需要說明的是,原數(shù)據(jù)集僅僅標(biāo)注了每張圖像中車輛所在boundingbox 的坐標(biāo)以及品牌型號(hào)(共196種)。對(duì)品牌型號(hào)屬性,有196種取值,符合多值屬性的要求,但還不符合識(shí)別多種多值屬性的需求。為此,針對(duì)每個(gè)boundingbox,課題組又標(biāo)注了拍攝角度和顏色等兩種相互獨(dú)立的屬性。拍攝角度屬性有前部(front)、后部(rear)、側(cè)部(side)、前側(cè)(front-side)、后側(cè)(rear-side)等5 個(gè)屬性值,顏色屬性有黑、紅、黃、銀灰、藍(lán)、綠、白、橙、紫、混合色等10 種屬性值。最終對(duì)每個(gè)車輛目標(biāo),有品牌型號(hào)、拍攝角度和顏色3 種相互獨(dú)立的多值屬性需要識(shí)別。
圖5 Stanford Cars Dataset數(shù)據(jù)集典型樣例
實(shí)驗(yàn)的硬件環(huán)境為:CPU 為至強(qiáng)E5-2620V4,內(nèi)存32 GB,NVIDIA GeForce GTX 1080TI GPU;基礎(chǔ)軟件環(huán)境為Ubuntu14.04 系統(tǒng)、Pycharm5.0 集成開發(fā)環(huán)境、Python3.5 編程語(yǔ)言;深度學(xué)習(xí)框架為Tensorflow1.11.0。下載MS COCO 數(shù)據(jù)集訓(xùn)練好的YoloV3 模型,作為第一層到第D 層各卷積第一階段訓(xùn)練的初始權(quán)重參數(shù)值,屬性識(shí)別子網(wǎng)絡(luò)參數(shù)在第二階段訓(xùn)練時(shí)采用了Xaiver[17]初始化。反向傳播更新參數(shù)使用了Adam[18]梯度下降算法。
每次取6 幅圖像(batchsize=6)計(jì)算loss、更新參數(shù),遍歷完訓(xùn)練集的8 041 張圖像為一個(gè)Epoch,需要1 358次。第一階段訓(xùn)練為30 個(gè)Epoch,第二階段訓(xùn)練為28個(gè)Epoch,第三階段訓(xùn)練為20 個(gè)Epoch。圖6 展示了第一階段lossconf、lossGIOU隨訓(xùn)練次數(shù)增多而下降的過程,其中橫坐標(biāo)代表了當(dāng)前訓(xùn)練的次數(shù),置信度conf 損失在開始訓(xùn)練時(shí)接近60,之后迅速下降,而GIOU 損失值一直很小,隨著訓(xùn)練次數(shù)增加有一定波動(dòng),但整體趨勢(shì)為下降,約在33 920 次后減小到0.09 附近,對(duì)應(yīng)模型參數(shù)可以用于作為下一階段的初值。圖7 展示了第二階段三種屬性的loss隨訓(xùn)練次數(shù)增多而下降的情況,選用28 個(gè)Epoch 的最后一次對(duì)應(yīng)的模型參數(shù)作為下一階段的初值,雖然不是最小loss,但由于第三階段還可以調(diào)優(yōu),這是可以接受的。圖8展示了第三階段losstotal隨訓(xùn)練次數(shù)變化情況,從中可見雖然有波動(dòng),但是整體還是處于下降趨勢(shì),并在25 880 次達(dá)到最低,選用其對(duì)應(yīng)的模型作為最終的推斷模型。
圖6 第一階段訓(xùn)練的置信度與GIOU loss變化
圖7 第二階段視角、品牌和顏色三種屬性loss變化
圖8 第三階段總體loss變化情況
最終得到端到端網(wǎng)絡(luò),可用于一次性推斷目標(biāo)boundingbox坐標(biāo)、置信度、屬性取值。典型屬性識(shí)別效果如圖9所示,目標(biāo)boundingbox緊緊包圍著目標(biāo),置信度為0.99,品牌型號(hào)屬性取值為奧迪S5 2012 款(Audi-S5-Coupe-2012),顏色屬性取值為白色(white),視角屬性取值為前側(cè)(front-side)。
圖9 屬性識(shí)別效果
在比較基準(zhǔn)上,選擇了目標(biāo)檢測(cè)的一階段YoloV3和兩階段的Faster RCNN。YoloV3 綜合運(yùn)用了上下層特征融合、多分辨率等技術(shù),是一階段目標(biāo)檢測(cè)的典型代表,本文也是基于它改進(jìn)的。另外,還選擇兩階段算法Faster RCNN,它通過先提供候選Proposal,在RCNN(區(qū)域卷積)進(jìn)行目標(biāo)類別判別,判斷和boundingbox 位置回歸,在之前圖像庫(kù)上具有定位較準(zhǔn)的特點(diǎn)。
AP(Average Precision)反映目標(biāo)boundingbox 的定位準(zhǔn)確性,且不受置信度閾值取值對(duì)結(jié)果的影響。AP是mAP(mean Average Precision)的特例,即當(dāng)只有單類目標(biāo)需要檢測(cè)定位時(shí),mAP就是AP。
AP 計(jì)算的過程如下:對(duì)每張圖片,先得到圖3 中D層輸出,即目標(biāo)boundingbox的4個(gè)坐標(biāo)值和置信度值,用NMS 過濾掉絕大部分boundingbox。將測(cè)試集所有圖片對(duì)應(yīng)的上述boundingbox,按其置信度進(jìn)行從小到大排序。然后根據(jù)boundingbox 與GT 的IoU 是否大于等于0.5,決定它被標(biāo)記為正樣本(True Positive)還是負(fù)樣本(False Positive)。統(tǒng)計(jì)各種置信度下True Positive(TP)和False Positive(FP)數(shù)量,按下式計(jì)算檢測(cè)精度P與查全率R:
按置信度從小到大,依次繪制精度P與查全率R,得到PR曲線,PR曲線下的面積即為AP值,AP值越大,反映算法的目標(biāo)定位越準(zhǔn)確。
用于比較的YoloV3 算法和Faster RCNN 算法同樣用Stanford Cars Dataset 數(shù)據(jù)集進(jìn)行訓(xùn)練,同等情況下Faster RCNN 訓(xùn)練時(shí)間更長(zhǎng),這與其每批只訓(xùn)練一幅圖像和用于NMS 的候選Proposal 較多有關(guān)。另外,需要指出的是,上述兩種檢測(cè)算法每次只能用于一種屬性的識(shí)別,以品牌型號(hào)屬性為例,將屬性每種取值都作為目標(biāo)類別,共196 類目標(biāo)進(jìn)行檢測(cè),檢測(cè)目標(biāo)的同時(shí)就得到了屬性值;對(duì)顏色和視角屬性,需要再訓(xùn)練兩個(gè)單獨(dú)的檢測(cè)器,用于顏色屬性、視角屬性取值的獲取。YoloV3 和Faster RCNN 需要計(jì)算mAP 值,即計(jì)算各個(gè)屬性值的AP,然后對(duì)所有屬性值的AP 求平均值,得到mAP。
表1 是分別針對(duì)品牌型號(hào)屬性、拍攝角度屬性、顏色屬性三種屬性的mAP值與本文AP值的對(duì)比。從表中數(shù)據(jù)可見,本文算法AP值大于YoloV3算法的mAP值,說明本文算法定位具有高準(zhǔn)確性,同時(shí)也說明了YoloV3的mAP 值受到屬性值的影響。還可以看出,F(xiàn)aster RCNN 對(duì)196 種取值的品牌型號(hào)屬性性能較低,分析其原因在于Faster RCNN 的目標(biāo)輸出方法與YoloV3、本文方法差異較大。Faster RCNN 對(duì)每個(gè)提議都要輸出196 個(gè)boundingbox 框,經(jīng)過softmax 處理后為196 種屬性值的置信度,這196 種置信度加上為背景置信度,其和為1。這種情況下各置信度的差別容易比較小,對(duì)目標(biāo)重復(fù)檢測(cè)情況比較多,導(dǎo)致檢測(cè)不準(zhǔn);而對(duì)視角屬性和顏色屬性,它們?nèi)≈稻^少(為5 種和10 種),則上述情況不存在。
表1 AP和mAP的對(duì)比%
屬性正確率的計(jì)算方法如下:對(duì)每張圖片,先得到D 層輸出的boundingbox,用NMS 過濾掉絕大部分boundingbox,再用R 層輸出針對(duì)剩余boundingbox 的屬性預(yù)測(cè);計(jì)算預(yù)測(cè)boundingbox與GT的IoU,若IoU大于0.5,則看其屬性預(yù)測(cè)的Top-1 與GT 屬性標(biāo)注是否一致(或Top-3 預(yù)測(cè)中是否含有GT 的標(biāo)注屬性取值),若一致,記為正確預(yù)測(cè)boundingbox;對(duì)所有測(cè)試圖片,統(tǒng)計(jì)單種屬性Top-1或Top-3下正確預(yù)測(cè)boundingbox個(gè)數(shù),將其除以測(cè)試集預(yù)測(cè)boundingbox 總數(shù),就是單種屬性預(yù)測(cè)的正確率;統(tǒng)計(jì)三種屬性預(yù)測(cè)同時(shí)正確的boundingbox數(shù)量,除以測(cè)試集預(yù)測(cè)boundingbox總數(shù),就是三種屬性同時(shí)正確的正確率。
計(jì)算YoloV3 算法下的單種屬性正確率。為此,使用YoloV3 算法進(jìn)行單屬性下各屬性值目標(biāo)物體的檢測(cè),在boundingbox 與GT 的IoU 大于0.5 條件下,查看boundingbox 所屬物體與GT 是否一致,統(tǒng)計(jì)一致的boundingbox 個(gè)數(shù),除以測(cè)試集預(yù)測(cè)boundingbox 總數(shù),得到Y(jié)oloV3 Top-1 下的正確率。同時(shí),查看上述預(yù)測(cè)boundingbox的第二、第三高可能性的物體,若前三種有一個(gè)與GT 標(biāo)注值一致,也記為正確boundingbox,統(tǒng)計(jì)其個(gè)數(shù),除以測(cè)試集預(yù)測(cè)boundingbox 總數(shù),由此得到Y(jié)oloV3 Top-3下的正確率。
對(duì)于Faster RCNN 算法,可類似計(jì)算Top-1 下(目標(biāo)置信度門限為0.6)的單種屬性正確率,但如3.2 節(jié)敘述,由于其每次輸出的boundingbox 只有一個(gè)類別目標(biāo)置信度,這種情況下無法計(jì)算Top-3下的正確率。因此表2 給出了本文算法與YoloV3算法、Faster RCNN算法的Top-1 單種屬性正確率,表3 只給出了本文算法與YoloV3算法的Top-3單種屬性正確率。
表2 Top-1下單種屬性正確率的對(duì)比%
表3 Top-3下單種屬性正確率的對(duì)比%
從表2 可見,本文算法超過了YoloV3 算法和Faster RCNN算法,這一點(diǎn)應(yīng)與使用了目標(biāo)所在區(qū)域提取特征進(jìn)行屬性識(shí)別有關(guān),針對(duì)品牌型號(hào)這種較細(xì)粒度的屬性,使用整個(gè)區(qū)域特征對(duì)其進(jìn)行分類更有幫助。另外,三種屬性中拍攝角度屬性最容易判斷,這是因?yàn)榕臄z角度取值一共只有前、后、側(cè)、前側(cè)、后側(cè)五種取值,并且每種品牌型號(hào)的車基本都有五種角度的樣本,訓(xùn)練的樣本量最大,規(guī)律性也相對(duì)最強(qiáng)。從表3 可見,本文算法與YoloV3 算法針對(duì)單種屬性的Top-3 正確率對(duì)比情況,與Top-1 下基本一致,但表3 中顏色的Top-3 準(zhǔn)確度超過了品牌型號(hào),說明易于混淆的顏色集中在輸出概率的前三位。
表4給出了三種屬性同時(shí)判斷正確的正確率,本文只需要推斷一次,而YoloV3 和Faster RCNN 算法則需要使用對(duì)應(yīng)不同屬性的模型推斷3 次,同樣Faster RCNN 無法給出Top-3 下的正確率。從表4 可見,判斷三種屬性同時(shí)正確的情況要顯著低于僅僅正確判斷一種屬性,無論是本文算法還是YoloV3 算法、Faster RCNN算法。
表4 三種屬性正確率的對(duì)比%
最后,表5給出了算法速度方面的實(shí)驗(yàn)結(jié)果。判斷三種相互獨(dú)立的屬性,YoloV3 算法和Faster RCNN 都需要進(jìn)行三次,YoloV3 總耗時(shí)75.71 ms(對(duì)所有測(cè)試圖像的平均值),F(xiàn)aster RCNN總耗時(shí)435.36 ms,而本文算法僅僅耗時(shí)27.93 ms,充分說明了本文算法在速度方面的優(yōu)勢(shì)。這與多個(gè)多值屬性識(shí)別時(shí),使用了共享的深層特征和按屬性種類構(gòu)建子網(wǎng)絡(luò)密不可分。
表5 三種屬性耗時(shí)對(duì)比ms
發(fā)現(xiàn)目標(biāo)、識(shí)別目標(biāo)的屬性是計(jì)算機(jī)視覺的重要研究?jī)?nèi)容,本文對(duì)目標(biāo)的屬性進(jìn)行了梳理,提出了針對(duì)目標(biāo)多個(gè)獨(dú)立屬性的識(shí)別網(wǎng)絡(luò),每個(gè)屬性均為多值屬性。通過使用多個(gè)共享深層次特征的子網(wǎng)絡(luò)提升了推斷過程速度,通過提取目標(biāo)boundingbox的區(qū)域特征,使得其對(duì)多個(gè)屬性識(shí)別準(zhǔn)確度優(yōu)于多次使用目標(biāo)檢測(cè)算法。
需要指出的是,當(dāng)前本文針對(duì)的目標(biāo)屬性表現(xiàn)在全局,如汽車目標(biāo)的品牌型號(hào)屬性,是通過全局的外觀特征確定的。隨著研究的深入,一些細(xì)粒度難以區(qū)分的物體屬性可能還需要通過注意力機(jī)制聚焦于局部,還有一些目標(biāo)的屬性本身就是對(duì)局部的描述,比如人是否戴眼鏡。下一步,將針對(duì)具體局部屬性特征以及細(xì)粒度的屬性特征識(shí)別,加強(qiáng)注意力機(jī)制方面的研究。