杜顯君
(西南交通大學(xué)計(jì)算機(jī)與人工智能學(xué)院,成都 610000)
車輛細(xì)分類問題的難點(diǎn)在于相似但類別不同的車輛在外形上是相近的,其主要區(qū)別在于車輛的細(xì)節(jié)部位,比如“中型貨車”和“大型貨車”具有類似的外觀,區(qū)別在于“中型貨車”具有兩排車輪,而“大型貨車”則具有三排或四排車輪。對(duì)于圖片的粗分類問題,傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)取得了較好的分類效果,例如AlexNet、VGG、ResNet和GoogleNet等著名的神經(jīng)網(wǎng)絡(luò)模型。但是傳統(tǒng)的分類模型是對(duì)整張圖片進(jìn)行特征提取,沒有重點(diǎn)關(guān)注具有細(xì)微差別的特征,使得這些分類網(wǎng)絡(luò)在車輛細(xì)分類問題上表現(xiàn)一般。
為了提取具有區(qū)分度的局部細(xì)節(jié)特征,之前的許多方法需要依靠圖片的局部特征標(biāo)簽。Part R-CNN模型基于R-CNN算法完成了局部區(qū)域的檢測(cè),并將不同區(qū)域的特征進(jìn)行連接,然后通過SVM分類器進(jìn)行分類訓(xùn)練。此外,Lin等提出的Deep LAC方法是在同一個(gè)網(wǎng)絡(luò)中進(jìn)行部分特征的定位、對(duì)齊及分類,提出了VLF函數(shù),其能夠自適應(yīng)地減小分類和對(duì)齊的誤差,并且更新定位結(jié)果,從而使得網(wǎng)絡(luò)更好地提取圖片的局部特征。但是以上的方法需要對(duì)目標(biāo)的局部特征進(jìn)行標(biāo)注,這將耗費(fèi)大量的人力來(lái)標(biāo)注數(shù)據(jù)。
Transformer在自然語(yǔ)言處理任務(wù)中取得了巨大的進(jìn)展,許多研究工作通過修改Transformer的部分結(jié)構(gòu),使其能夠應(yīng)用于計(jì)算機(jī)視覺任務(wù)中。其中,Dosovitskiy等提出的Vision Transformer(ViT)模型在不修改Transformer原始結(jié)構(gòu)的情況下,通過圖片分塊的方法將Transformer應(yīng)用于視覺領(lǐng)域。
針對(duì)高速公路場(chǎng)景下的車輛細(xì)分類任務(wù),本文構(gòu)建了一個(gè)車輛細(xì)分類數(shù)據(jù)集(Freeway Vehicle),并提出了基于ViT的車輛部件選擇模型。該模型首先將一張完整的圖片劃分為大小相同的圖片塊;然后,將這些圖片塊輸入到Transformer的編碼器中,編碼器將會(huì)學(xué)習(xí)各個(gè)圖片塊之間的自注意力權(quán)重;接著,模型根據(jù)自注意力權(quán)重來(lái)選擇對(duì)分類貢獻(xiàn)度更高的圖片塊;最后,將這些被選擇的圖片塊特征輸入到分類器。本文提出的采用自注意力來(lái)選擇圖片塊的方法,可以降低不同類別車輛之間相似部位的影響,在車輛細(xì)分類數(shù)據(jù)集Freeway Vehicle上取得不錯(cuò)的分類效果。
視覺注意力機(jī)制是人類大腦通過視覺對(duì)目標(biāo)進(jìn)行觀察時(shí),將自身注意力放在重點(diǎn)關(guān)注區(qū)域的機(jī)制。與此類似,通過算法實(shí)現(xiàn)的注意力機(jī)制,可以使得深度模型關(guān)注圖片中的重要部分,從而抑制無(wú)用的信息。在基于卷積神經(jīng)網(wǎng)絡(luò)來(lái)提取特征的方法中,文獻(xiàn)[9]提出基于特征通道的注意力來(lái)描述輸入特征各個(gè)通道之間的關(guān)系,該方法通過學(xué)習(xí)特征各個(gè)通道的權(quán)重,使得模型對(duì)特征中的不同通道更具有辨識(shí)度。此外,同時(shí)融合通道注意力和空間注意力的CBAM模塊對(duì)視覺注意力機(jī)制進(jìn)行了更深入的優(yōu)化。Vaswani等提出的自注意力方法,使得Transformer的性能在自然語(yǔ)言處理領(lǐng)域的許多任務(wù)中都優(yōu)于先前基于RNN的方法。
Transformer是一種用于自然語(yǔ)言處理的網(wǎng)絡(luò)模型,其包含Encoder(編碼器)和Decoder(解碼器)兩個(gè)重要的部分。Encoder將輸入的特征序列編碼為中間特征,而Decoder根據(jù)中間特征生成一個(gè)輸出序列,比如在自然語(yǔ)言翻譯中,將輸入的英文序列編碼為中間特征序列,再將中間特征序列翻譯為中文序列。Transformer結(jié)構(gòu)中的自注意力機(jī)制可以為序列中每個(gè)元素生成一個(gè)注意力矩陣,該注意力矩陣描述序列中各個(gè)元素之間的相關(guān)關(guān)系。
隨著Transformer在自然語(yǔ)言處理領(lǐng)域的廣泛應(yīng)用,許多研究工作開始嘗試將Transformer用于計(jì)算機(jī)視覺任務(wù)中。其中,文獻(xiàn)[8]提出的Vision Transformer(ViT)在不改變Transformer結(jié)構(gòu)的條件下,將Transformer應(yīng)用到圖片分類任務(wù),并且達(dá)到了與傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)模型相近的分類效果。ViT的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,該模型首先將原始圖片裁剪成尺寸相同的圖片塊,再將這些圖片塊編碼為圖片序列,輸入到Transformer的Encoder中,Encoder通過內(nèi)部的自注意力模塊和前饋神經(jīng)網(wǎng)絡(luò)模塊對(duì)圖片序列進(jìn)行編碼,最后,將Encoder輸出的特征輸入到分類器中。
圖1 Vision Transformer結(jié)構(gòu)圖
本文將車輛圖片劃分成尺寸相同的圖片塊,利用ViT來(lái)提取各個(gè)圖片塊的特征,通過自注意力機(jī)制來(lái)獲得圖片塊之間的權(quán)重關(guān)系。不同圖片塊對(duì)最終分類的重要程度是不一樣的,比如包含車輪、車燈等重要部位的圖片塊比包含背景的圖片塊更重要,因此,本文提出了基于ViT的車輛部件選擇模塊,該模塊根據(jù)每個(gè)圖片塊的注意力大小來(lái)選擇有用的圖片塊,降低無(wú)用圖片塊的影響。
本文采用ViT模型來(lái)提取圖像的特征,并利用ViT中的自注意力模塊來(lái)獲取各個(gè)圖片塊特征之間的權(quán)重關(guān)系。然后,根據(jù)自注意力權(quán)重的大小來(lái)選擇重要的圖片塊特征,并將被選中的圖片塊特征輸入到Transformer Layer中。最后,將Transformer Layer的輸出特征輸入到分類器中,分類器將輸出各個(gè)類別的預(yù)測(cè)結(jié)果。
模型的結(jié)構(gòu)圖如圖2所示。由于ViT要求輸入的數(shù)據(jù)為序列數(shù)據(jù),本文將一張完整的圖片分割成個(gè)大小相同的圖片塊,然后,通過一個(gè)線性映射層將個(gè)圖片塊轉(zhuǎn)換為個(gè)高維度的圖片塊特征向量。接著,將個(gè)特征向量輸入到Transformer的Encoder中,Encoder利用自身的自注意力模塊來(lái)計(jì)算個(gè)特征向量之間的權(quán)重大小,并得到維度為×自注意力圖?!恋淖宰⒁饬D表示個(gè)特征向量中各個(gè)特征向量與其他特征向量之間的相關(guān)程度,兩個(gè)特征向量之間的注意力數(shù)值越大表示它們之間的相關(guān)性越強(qiáng)。
利用Encoder中最后一層輸出的自注意力圖,本文提出一個(gè)基于自注意力的車輛部件選擇模塊,該模塊用于選擇對(duì)車輛分類貢獻(xiàn)更高的特征向量。如圖2所示,個(gè)特征向量通過Encoder之后,仍然輸出個(gè)特征向量,輸出的個(gè)特征向量與模型輸入的個(gè)圖片塊在關(guān)系上相對(duì)應(yīng)。
圖2 模型結(jié)構(gòu)圖
個(gè)圖片塊包含原始圖片中的不同部分,但是不同圖片塊對(duì)車輛分類的貢獻(xiàn)度是不一樣的。為了獲取重要的特征向量和排除無(wú)關(guān)特征向量的影響,本文提出了車輛部件模塊,根據(jù)文獻(xiàn)[11]中的方法,從自注意力圖中選擇第一行注意力數(shù)值,表示為1,2,…,,共個(gè)注意力數(shù)值。這個(gè)注意力表示Encoder輸出的個(gè)特征向量與車輛類別的相關(guān)性。然后,從個(gè)注意力數(shù)值中選取最大的個(gè)數(shù)值所對(duì)應(yīng)的下標(biāo)。根據(jù)個(gè)最大數(shù)值對(duì)應(yīng)的下標(biāo),可以從Encoder輸出的個(gè)特征向量中選擇對(duì)應(yīng)的個(gè)更加重要的特征向量。接著,將被選擇的個(gè)特征向量輸入到最后一層Transformer Layer中。最后,將Transformer Layer輸出的結(jié)果進(jìn)行整合,輸出到分類器中,分類器會(huì)輸出圖片在不同車輛類別之間的概率分布。
本文基于高速公路場(chǎng)景,構(gòu)建了一個(gè)車輛細(xì)分類數(shù)據(jù)集(Freeway Vehicle),共7000張圖片。本數(shù)據(jù)集包含小型貨車、中型貨車、大型貨車、超大型貨車和集裝箱貨車等五個(gè)類別的貨車。為了保證數(shù)據(jù)的豐富性,本文收集的車輛圖片具有多角度和多尺度的特點(diǎn),同時(shí)在模型訓(xùn)練的過程中,通過隨機(jī)翻轉(zhuǎn)、隨機(jī)裁剪等預(yù)處理手段對(duì)數(shù)據(jù)進(jìn)行增廣。對(duì)于這五類貨車,分類的難點(diǎn)在于不同類別貨車具有相似的外形和顏色,它們僅僅在車輪排數(shù)和車箱等細(xì)節(jié)部分有所區(qū)別。圖3展示了數(shù)據(jù)集的部分圖片。在本實(shí)驗(yàn)中,將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集,其中訓(xùn)練集5600張圖片,測(cè)試集1400張圖片,比例為8∶2。
圖3 數(shù)據(jù)集圖片
根據(jù)文獻(xiàn)[8]中ViT的設(shè)置,本文將一張圖片劃分為196個(gè)圖片塊,每一個(gè)圖片塊的尺寸為16×16個(gè)像素。在車輛部件選擇模塊中,設(shè)置超參數(shù)K為6,表示從196個(gè)特征向量中選擇6個(gè)最重要的特征向量。在訓(xùn)練的過程中,使用SGD優(yōu)化器,設(shè)置學(xué)習(xí)率為0.03,batch size為16,epoch為90。本實(shí)驗(yàn)采用分類精確度作為評(píng)價(jià)指標(biāo),即圖片分類正確的數(shù)量占所有圖片總數(shù)的百分比。
為了與本文提出的方法對(duì)比,實(shí)驗(yàn)測(cè)試了ResNet34、ResNet50、Inception v3和ViT在Freeway Vehicle數(shù)據(jù)集上的分類精確度。實(shí)驗(yàn)結(jié)果如表1所示,本文提出的基于ViT的車輛部件選擇模型的分類精確度為84.2%,比其他分類方法都要高。其中,單獨(dú)使用ViT模型的分類精確度已經(jīng)達(dá)到了81.9%,比其他基于卷積神經(jīng)網(wǎng)絡(luò)的分類模型都要高。ViT模型加上車輛部件選擇模塊后,精確度提升了2.3%,由此可見車輛部件選擇模塊對(duì)圖片中重要的局部特征進(jìn)行了較好的選擇,排除了無(wú)關(guān)特征對(duì)分類的影響。
表1 實(shí)驗(yàn)結(jié)果
用ViT的自注意力機(jī)制,本文提出的車輛部件模塊較好地解決了相似但不同類別車輛之間難以識(shí)別的問題。通過對(duì)圖片塊的選擇,使模型更加關(guān)注對(duì)分類有利的部分,避免車輛相似部位對(duì)模型造成的負(fù)面影響。
為了進(jìn)一步探究模型對(duì)哪些圖片塊進(jìn)行了選擇,本文將模型所選擇的圖片塊的下標(biāo)同步到原始的車輛圖片上。如圖4所示,矩形框用來(lái)標(biāo)記模型所選擇的圖片塊。圖4左邊的圖片是“中型貨車”,具有兩排車輪;右邊的圖片是“大型貨車”,具有三排車輪。從圖中可以看出,模型對(duì)不同類型的貨車都選擇了較好的圖片塊,并且這些圖片塊都包含了車輛具有區(qū)分度的細(xì)節(jié)特征,如車輪和車頭。
圖4 圖片塊選擇
針對(duì)高速公路場(chǎng)景下的車輛細(xì)分問題,本文提出了一個(gè)基于ViT的車輛部件選擇模型,并且構(gòu)建了一個(gè)多角度和多尺度的車輛細(xì)分類數(shù)據(jù)集。本文方法中的部件選擇模塊利用自注意力機(jī)制來(lái)選擇圖片中重要的部分,減少了圖片中無(wú)關(guān)區(qū)域?qū)Ψ诸惖挠绊?,?duì)相似但不相同類別的車輛具有不錯(cuò)的識(shí)別度。在本文構(gòu)建的數(shù)據(jù)集上,與主流的分類模型相比,本文提出的方法具有較好的分類精確度。