楊東,李丹
(四川大學錦城學院,四川成都,611731)
當代社會下,雖然有著男性普遍了解車型的刻板印象,但是并非所有人都普遍對車偏愛,他們也有一定程度上的識別車輛的需求。同時,在城市內和城市周邊對車輛信息進行一定程度的監控是有利于整個交通系統的規劃的。當然,車輛分類如果應用于市中心,也有利于研究目前市場上主流車型還可以向相關部門提供更多的過往車輛信息以滿足道路交通的需求??偠灾?,車輛的圖片分類是圖片分類領域一項主要的任務。在以往的研究中,諸多卷積神經網絡模型被用于車輛分類等圖片分類的研究之中??紤]到BoTNet網絡本身具有較高的深度和本身的復雜性,故將BoTNet的研究應用于車輛分類。計算機行業應該研究更多可以應用于實際生活中的項目,而對于新興網絡模型應用于傳統圖片分類尤其是現實生活中會涉及到的分類的研究具有廣泛的社會意義和使用價值。
早期的卷積神經網絡,如AlexNet[1]和VGGNet[2]提出了簡單的激活函數和卷積結構使得多尺度特征的數據驅動學習成為可能。深度神經網絡(deep neural network, DNN)目前已被成功地應用于圖像分類[3]、語音識別[4-5]、自然語言處理[6-7]等領域。網絡退化的問題也被何凱文等人提出的ResNet[8]的殘差結構使得更深的網絡能夠進行有效的學習。而在計算機網絡架構研究的前沿,計算機大牛們正在不斷地研究、改善和融合不同的網絡結構,本文著重研究在ResNet的瓶頸層使用多頭自注意力模型替換得到改造升級的BoTNet,并將其應用于傳統的圖片分類中,嘗試圖片分類的新可能。
BoTNet是一個簡單卻十分強大的框架。在近期開始流行的它可以運用于計算機視覺的多個領域:圖像識別、對象檢測和實例分割等方面。它是由ResNet直接改造獲得的一種改良型的網絡結構。我們將ResNet的最后三個瓶頸塊中的3*3的卷積替換成多頭自注意力(Multi-Head Self-Attention又稱MHSA)層。多頭自注意力層包含了相對位置編碼和多頭自注意力模型。在以往的研究中,我們發現在多頭自注意力模型用于語義識別時,多層注意力的結合能顯著提升句子在復雜語義上的表現,彌補單注意力的不足[9]?,F在我們將這種出色的對特征識別的能力運用到圖片分類之中,希望可以在訓練時,運用相對位置編碼和多頭自注意力讓網絡模型學習到圖片更多的特征和細節,提升網絡性能。圖1便是ResNet-50和BoTNet-50的網絡結構圖。
首先,自注意力機制本質上是根據注意對象的重要程度進行不同的資源分配。在神經網絡中,注意力所要分配的資源就是權重[10]。這種權重分配的方式本身就可以在一定程度上提高網絡對于特征的識別能力。不同的權重分配方式可以對結果產生不同程度的影響。而多頭自注意力不僅在單頭的基礎上進行了多頭的擴展,如文獻11所言:head的數量會影響對不同特征的關注度,適當的head數目可以準確地關注到數據包關鍵時空特征[11]。多頭自注意力模型還可以作為多個獨立attention計算防止過擬合,可以有效提升模型的泛化能力。MHSA還包含了相對位置編碼,可以顯著提升網絡對于特征識別的準確度。這是因為相對位置編碼本身[12]應用于語義識別時,可以準確識別語義信息之間的位置信息,如:我欠你兩萬元。這句話本身的位置信息就體現了是誰欠誰錢,若是語義識別無法利用其位置信息而理解成:你欠我兩萬元。這種每個詞都認識,但在事實層面完全誤解了語句的含義,無法理解句子間的邏輯結構含義,這也是機械翻譯普遍存在的問題。而我們發現相對位置編碼在圖像識別等視覺任務上也有著十分出色的表現:不同的特征距離之間可以有完全不同的現實意義以及背后更深層的邏輯含義。在采用了相對位置編碼之后,我們的網絡也可以對處于不同位置的特征之間的信息加以學習。從而可以有效地把握對象信息和位置信息之間的聯系,甚至學習到圖片或者文字背后的實際含義,從而顯著提高網絡性能。

圖1 ResNet-50和BoTNet-50結構圖
本文使用的樣本是來自計算機圖像分類車輛模型的數據包,其中的圖片按照車型分類存儲??紤]到網絡模型本身較高的復雜性,為了防止訓練時間過長,所以本次實驗使用較小的數據包便于訓練。此數據包包括了1600個車輛圖像,其中共分為10類,因為圖片本身數據量較小,隨機打亂之后便按照7:1的比列分成了訓練集和測試集。訓練樣本中每個樣本包含140張圖片,測試樣本中包含20張圖片。整個訓練集和測試集具有樣本圖片清晰、角度不同的特點。部分數據如圖2所示,其中不少都是貼近生活中拍攝的圖片,有利于使訓練結果更加貼近生活中車輛拍攝的實際情況。

圖2 部分數據集圖
使用ImageFolder將數據集打包寫入dataset中。遍歷數據文件夾中所有的文件,取出其中對應的圖片名和分類組成我們的數據集。數據集按照7:1的比例分為訓練集和測試集。為了更好地提升模型的準確率,實驗在模型訓練前對訓練數據集和測試集進行同樣的預處理,進行對所有的訓練數據進行伸縮變化、中心裁剪、對比度調整、隨機旋轉和歸一化最終形成了小圖片(32*32)形式的數據集。對測試集也進行同樣的處理。
為了便于修改ResNet-50的網絡結構,我們手動創建ResNet-50類,構建好ResNet-50后,創立MHSA類,完成多頭自注意力層的搭建,創立瓶頸層類,用于替換原本ResNet-50網絡的瓶頸層,最后將我們準備好的MHSA和瓶頸層替換掉原本ResNet-50網絡的瓶頸層:在ResNet-50的最后三個瓶頸塊中將3*3的卷積替換成多頭自注意力(MHSA)層得到BoTNet-50用于網絡學習。我們分別將兩種網絡模型使用在我們經過同樣預處理的數據集中。在訓練過程中,使用隨機梯度下降作為我們的優化器,這樣對梯度要求低,可以很好地收斂。同時,為了方便求導使得運算不會過于復雜,我們使用交叉熵損失函數。我們用args來存儲我們傳入的參數并將其batch_size賦值給dataset的batch_size,方便我們傳入的參數不受限制。
在網絡學習過程中,每輪epoch結束時會輸出在測試集上計算和打印的平均損失函數值和準確度。為了有效檢驗ResNet-50和BoTNet-50兩種網絡模型的性能差異,實驗進行了分別進行了多次長達400多輪的訓練。便于觀察和區分不同輪次兩種模型的適應程度。多次進行訓練之后,我們發現ResNet-50網絡和BoTNet-50網絡的準確率整體上會隨著輪次的提升穩步提升,但是由于時間和內存的限制難以進一步驗證閾值。其中一次模型在ResNet-50網絡和BoTNet-50網絡上的訓練結果如圖3所示。
根據訓練的結果不難發現,兩種模型整體上都不夠穩定,在訓練初期兩種模型的適應性都不太好,但是BoTNet-50網絡模型的增長速度在此時明顯快于ResNet-50網絡模型,但是不夠穩定。此后前者便更加穩定,在70左右輪次時,兩種模型的準確率都有明顯地下跌,在150輪左右時ResNet-50再次出現明顯下跌。但是整體情況來看BoTNet-50網絡模型的準確率曲線優于ResNet-50網絡模型,尤其是在150輪左右時更加穩定。通過實驗,我們得到結論:在小圖片的分類作業中,BoTNet-50網絡模型的訓練效果優于ResNet-50網絡模型,尤其是在輪次較大時,BoTNet-50更加穩定。

圖3
有時候由于環境因素甚至是人為因素,我們無法準確獲取監控里的車輛信息,同時,由于交通的不斷發展,即便是通過同一個路口的車輛在一段時間內也相當大,由人工排查檢測過于困難。我們在車輛分類訓練集上進行訓練,發現了BoTNet的表現比傳統的ResNet更優秀。將車輛分類運用于這種場景,可以提升效率,協助交通管制或是抓捕隱藏車牌的嫌犯,幫助相關部門迅速排除無關車型,聚焦嫌犯車輛。
不同的應用場景有不同的需求,如果用于平時的交通管制方面,也可以幫助相關部門快速統計交通信息,及時了解到城內流動的車輛類型,了解到各時段公路上主要的車輛,便于交通管制,也可以在節假日監管通過高速路口的車輛類型,及時做好相關工作。在我們應用此技術在嫌犯車輛識別時:尤其是對于已經修改車牌的犯罪車輛,可以快速識別監控圖片中的車型是否為目標車型,如圖4,幫助有關部門排除干擾,在海量車輛圖片中識別目標車型。

圖4 車輛分類的實際應用
本文針對基于BoTNet的車輛分類現進行了對比實驗。在對比實驗中,我們都對數據集進行了相同的預處理和同樣的損失函數、隨機梯度下降。實驗結果表明在小圖片的分類作業中,BoTNet-50網絡模型的訓練效果優于ResNet-50網絡模型。實驗最終兩種網絡模型都沒有達到較高準確率的原因可能是因為本身數據集訓練樣本較少,也有可能是由于我們在數據預處理時使用了伸縮變化導致圖片較小。由于伸縮變換,最終圖片的大小可能影響到了相對位置編碼對于特征的識別。并且,可能在此過程中,圖片壓縮導致損失了更多的特征導致我們的網絡難以讀取甚至無法識別到更多的特征值,最終使得訓練初期準確率不高,也導致我們整體實驗準確率上升較慢。但是我們依然可以根據實驗結果得出結論:經過對ResNet-50網絡改進后得到的BoTNet-50網絡對于小圖片的識別效果更好。相信在未來經過進一步的優化和訓練之后會在實際應用中有著更出色的表現。