杜顯君
(西南交通大學計算機與人工智能學院,成都 610000)
車輛細分類問題的難點在于相似但類別不同的車輛在外形上是相近的,其主要區別在于車輛的細節部位,比如“中型貨車”和“大型貨車”具有類似的外觀,區別在于“中型貨車”具有兩排車輪,而“大型貨車”則具有三排或四排車輪。對于圖片的粗分類問題,傳統的卷積神經網絡取得了較好的分類效果,例如AlexNet、VGG、ResNet和GoogleNet等著名的神經網絡模型。但是傳統的分類模型是對整張圖片進行特征提取,沒有重點關注具有細微差別的特征,使得這些分類網絡在車輛細分類問題上表現一般。
為了提取具有區分度的局部細節特征,之前的許多方法需要依靠圖片的局部特征標簽。Part R-CNN模型基于R-CNN算法完成了局部區域的檢測,并將不同區域的特征進行連接,然后通過SVM分類器進行分類訓練。此外,Lin等提出的Deep LAC方法是在同一個網絡中進行部分特征的定位、對齊及分類,提出了VLF函數,其能夠自適應地減小分類和對齊的誤差,并且更新定位結果,從而使得網絡更好地提取圖片的局部特征。但是以上的方法需要對目標的局部特征進行標注,這將耗費大量的人力來標注數據。
Transformer在自然語言處理任務中取得了巨大的進展,許多研究工作通過修改Transformer的部分結構,使其能夠應用于計算機視覺任務中。其中,Dosovitskiy等提出的Vision Transformer(ViT)模型在不修改Transformer原始結構的情況下,通過圖片分塊的方法將Transformer應用于視覺領域。
針對高速公路場景下的車輛細分類任務,本文構建了一個車輛細分類數據集(Freeway Vehicle),并提出了基于ViT的車輛部件選擇模型。該模型首先將一張完整的圖片劃分為大小相同的圖片塊;然后,將這些圖片塊輸入到Transformer的編碼器中,編碼器將會學習各個圖片塊之間的自注意力權重;接著,模型根據自注意力權重來選擇對分類貢獻度更高的圖片塊;最后,將這些被選擇的圖片塊特征輸入到分類器。本文提出的采用自注意力來選擇圖片塊的方法,可以降低不同類別車輛之間相似部位的影響,在車輛細分類數據集Freeway Vehicle上取得不錯的分類效果。
視覺注意力機制是人類大腦通過視覺對目標進行觀察時,將自身注意力放在重點關注區域的機制。與此類似,通過算法實現的注意力機制,可以使得深度模型關注圖片中的重要部分,從而抑制無用的信息。在基于卷積神經網絡來提取特征的方法中,文獻[9]提出基于特征通道的注意力來描述輸入特征各個通道之間的關系,該方法通過學習特征各個通道的權重,使得模型對特征中的不同通道更具有辨識度。此外,同時融合通道注意力和空間注意力的CBAM模塊對視覺注意力機制進行了更深入的優化。Vaswani等提出的自注意力方法,使得Transformer的性能在自然語言處理領域的許多任務中都優于先前基于RNN的方法。
Transformer是一種用于自然語言處理的網絡模型,其包含Encoder(編碼器)和Decoder(解碼器)兩個重要的部分。Encoder將輸入的特征序列編碼為中間特征,而Decoder根據中間特征生成一個輸出序列,比如在自然語言翻譯中,將輸入的英文序列編碼為中間特征序列,再將中間特征序列翻譯為中文序列。Transformer結構中的自注意力機制可以為序列中每個元素生成一個注意力矩陣,該注意力矩陣描述序列中各個元素之間的相關關系。
隨著Transformer在自然語言處理領域的廣泛應用,許多研究工作開始嘗試將Transformer用于計算機視覺任務中。其中,文獻[8]提出的Vision Transformer(ViT)在不改變Transformer結構的條件下,將Transformer應用到圖片分類任務,并且達到了與傳統卷積神經網絡模型相近的分類效果。ViT的網絡結構如圖1所示,該模型首先將原始圖片裁剪成尺寸相同的圖片塊,再將這些圖片塊編碼為圖片序列,輸入到Transformer的Encoder中,Encoder通過內部的自注意力模塊和前饋神經網絡模塊對圖片序列進行編碼,最后,將Encoder輸出的特征輸入到分類器中。

圖1 Vision Transformer結構圖
本文將車輛圖片劃分成尺寸相同的圖片塊,利用ViT來提取各個圖片塊的特征,通過自注意力機制來獲得圖片塊之間的權重關系。不同圖片塊對最終分類的重要程度是不一樣的,比如包含車輪、車燈等重要部位的圖片塊比包含背景的圖片塊更重要,因此,本文提出了基于ViT的車輛部件選擇模塊,該模塊根據每個圖片塊的注意力大小來選擇有用的圖片塊,降低無用圖片塊的影響。
本文采用ViT模型來提取圖像的特征,并利用ViT中的自注意力模塊來獲取各個圖片塊特征之間的權重關系。然后,根據自注意力權重的大小來選擇重要的圖片塊特征,并將被選中的圖片塊特征輸入到Transformer Layer中。最后,將Transformer Layer的輸出特征輸入到分類器中,分類器將輸出各個類別的預測結果。
模型的結構圖如圖2所示。由于ViT要求輸入的數據為序列數據,本文將一張完整的圖片分割成個大小相同的圖片塊,然后,通過一個線性映射層將個圖片塊轉換為個高維度的圖片塊特征向量。接著,將個特征向量輸入到Transformer的Encoder中,Encoder利用自身的自注意力模塊來計算個特征向量之間的權重大小,并得到維度為×自注意力圖?!恋淖宰⒁饬D表示個特征向量中各個特征向量與其他特征向量之間的相關程度,兩個特征向量之間的注意力數值越大表示它們之間的相關性越強。
利用Encoder中最后一層輸出的自注意力圖,本文提出一個基于自注意力的車輛部件選擇模塊,該模塊用于選擇對車輛分類貢獻更高的特征向量。如圖2所示,個特征向量通過Encoder之后,仍然輸出個特征向量,輸出的個特征向量與模型輸入的個圖片塊在關系上相對應。

圖2 模型結構圖
個圖片塊包含原始圖片中的不同部分,但是不同圖片塊對車輛分類的貢獻度是不一樣的。為了獲取重要的特征向量和排除無關特征向量的影響,本文提出了車輛部件模塊,根據文獻[11]中的方法,從自注意力圖中選擇第一行注意力數值,表示為1,2,…,,共個注意力數值。這個注意力表示Encoder輸出的個特征向量與車輛類別的相關性。然后,從個注意力數值中選取最大的個數值所對應的下標。根據個最大數值對應的下標,可以從Encoder輸出的個特征向量中選擇對應的個更加重要的特征向量。接著,將被選擇的個特征向量輸入到最后一層Transformer Layer中。最后,將Transformer Layer輸出的結果進行整合,輸出到分類器中,分類器會輸出圖片在不同車輛類別之間的概率分布。
本文基于高速公路場景,構建了一個車輛細分類數據集(Freeway Vehicle),共7000張圖片。本數據集包含小型貨車、中型貨車、大型貨車、超大型貨車和集裝箱貨車等五個類別的貨車。為了保證數據的豐富性,本文收集的車輛圖片具有多角度和多尺度的特點,同時在模型訓練的過程中,通過隨機翻轉、隨機裁剪等預處理手段對數據進行增廣。對于這五類貨車,分類的難點在于不同類別貨車具有相似的外形和顏色,它們僅僅在車輪排數和車箱等細節部分有所區別。圖3展示了數據集的部分圖片。在本實驗中,將數據集劃分為訓練集和測試集,其中訓練集5600張圖片,測試集1400張圖片,比例為8∶2。

圖3 數據集圖片
根據文獻[8]中ViT的設置,本文將一張圖片劃分為196個圖片塊,每一個圖片塊的尺寸為16×16個像素。在車輛部件選擇模塊中,設置超參數K為6,表示從196個特征向量中選擇6個最重要的特征向量。在訓練的過程中,使用SGD優化器,設置學習率為0.03,batch size為16,epoch為90。本實驗采用分類精確度作為評價指標,即圖片分類正確的數量占所有圖片總數的百分比。
為了與本文提出的方法對比,實驗測試了ResNet34、ResNet50、Inception v3和ViT在Freeway Vehicle數據集上的分類精確度。實驗結果如表1所示,本文提出的基于ViT的車輛部件選擇模型的分類精確度為84.2%,比其他分類方法都要高。其中,單獨使用ViT模型的分類精確度已經達到了81.9%,比其他基于卷積神經網絡的分類模型都要高。ViT模型加上車輛部件選擇模塊后,精確度提升了2.3%,由此可見車輛部件選擇模塊對圖片中重要的局部特征進行了較好的選擇,排除了無關特征對分類的影響。

表1 實驗結果
用ViT的自注意力機制,本文提出的車輛部件模塊較好地解決了相似但不同類別車輛之間難以識別的問題。通過對圖片塊的選擇,使模型更加關注對分類有利的部分,避免車輛相似部位對模型造成的負面影響。
為了進一步探究模型對哪些圖片塊進行了選擇,本文將模型所選擇的圖片塊的下標同步到原始的車輛圖片上。如圖4所示,矩形框用來標記模型所選擇的圖片塊。圖4左邊的圖片是“中型貨車”,具有兩排車輪;右邊的圖片是“大型貨車”,具有三排車輪。從圖中可以看出,模型對不同類型的貨車都選擇了較好的圖片塊,并且這些圖片塊都包含了車輛具有區分度的細節特征,如車輪和車頭。

圖4 圖片塊選擇
針對高速公路場景下的車輛細分問題,本文提出了一個基于ViT的車輛部件選擇模型,并且構建了一個多角度和多尺度的車輛細分類數據集。本文方法中的部件選擇模塊利用自注意力機制來選擇圖片中重要的部分,減少了圖片中無關區域對分類的影響,對相似但不相同類別的車輛具有不錯的識別度。在本文構建的數據集上,與主流的分類模型相比,本文提出的方法具有較好的分類精確度。