孔雅潔,張 葉
(1. 中國科學院 長春光學精密機械與物理研究所 應用光學國家重點實驗室,吉林 長春 130033;2. 中國科學院大學,北京 100049)
隨著科技不斷進步和社會快速發展,居民生活水平逐漸提高,汽車成為家庭出行的重要交通工具。政府報告資料顯示,2016~2020 年間,中國汽車年銷量均在2 500 萬輛以上,全國地區汽車保有量也高達2.5 億輛[1]。汽車的普及給人民生活帶來極大便利的同時,也給道路交通運輸帶來巨大壓力,不僅導致交通擁堵,而且增大事故隱患。因此,輔助駕駛、自動駕駛等智能系統的研究應用得到政府、企業、研究機構的廣泛關注。駕駛員借助智能駕駛系統,可以及時發現行車危險,有效提升駕駛安全性,降低交通事故發生的幾率。在各類智能駕駛系統中,感知環境是第一步,如何快速精準地感知、檢測、測量行車過程中出現的各類目標,一直是研究的熱點。車載攝像頭的拍攝可以獲取大量行車圖像,而圖像數據具有采集成本低、信息豐富等特點,可以提取諸多有用的環境信息以指導駕駛,比如識別前方車輛、行人等。
目標檢測作為視覺感知識別的重要任務之一,吸引了許多研究人員的注意,大量的檢測算法得到研究和應用。傳統的目標檢測通過人工提取圖像區域特征,并用預先設定的分類器對其進行分類來達到檢測的目的。特征描述準確度對于檢測結果影響很大,而且結合多個低級圖像特征設計的復雜的分類器難以獲得很好的性能。隨著深度學習的快速發展,算法模型可以自動學習語義,提取圖像的深層特征,檢測速度和效果都得到很大的提高,已成為目標檢測領域的主流方法。基于深度學習的目標檢測算法主要分為兩類:一類是基于區域選取的二階段目標檢測,算法被分為兩步,首先從圖像中生成最有可能包含目標的子區域,然后對子區域做圖像分類并生成最終的物體邊框;另一類是基于回歸的一階段目標檢測,可以直接對物體進行分類,生成類別概率和位置坐標。一階段算法基于卷積特征圖同時計算邊界框回歸和目標分類問題,避免了計算成本很高的子區域生成過程,因此,相較于二階段算法,一階段算法具有檢測速度快的優勢,更適用于輔助駕駛、自動駕駛等對檢測速度要求高的應用場景。一階段算法的典型代表是YOLO 系列算法。
卷積神經網絡(Convolutional Neural Network,CNN)作為計算機視覺(Computer Vision,CV)領域的主流深度學習模型,取得了很好的效果。在圖像問題中,卷積計算具有平移等價性、局部性等天然優勢,但也存在感受野固定且有限這一缺陷,通常需要堆疊卷積層來獲取更大的感受 野。近 兩 年 來,Transformer[2]開 始 在 計 算 機 視覺領域大放異彩,被廣泛應用于圖像分類、目標檢測、語義分割以及圖像生成等任務當中,其核心自注意力(Self-attention)機制通過在輸入向量之間相互執行注意力操作來提取特征,可以獲得全局特征關系,通過全局范圍的依賴關系來抑制無關信息、突出有用區域,以提高檢測的準確性,有效彌補了卷積感受野固定的缺陷。
因此,針對輔助駕駛系統中車輛、行人的目標檢測任務,本文在YOLOv3 算法模型的基礎之上,引入自注意力機制,并對加入的模塊進行高斯掩碼優化,提出了YOLOv3-GMSA 目標檢測方法。此外,為了對方法進行評估驗證,我們在MS COCO 2017 數 據 集 上 對YOLOv3-GMSA 方法進行了訓練和評估,結果表明該方法在保證檢測速度的同時有效提高了檢測效果。
目標檢測是CV 領域的一個重要研究方向,其任務是在圖像或視頻中找出感興趣的物體,同時檢測出它們的位置和大小。不同于圖像分類任務,目標檢測不僅要解決分類問題,還需要解決定位問題。傳統的目標檢測主要關注圖像處理、特征提取算法,但是基于手工提取的特征無法適應復雜多變的現實場景,準確率不高。直到2012 年,CNN 的興起將目標檢測相關研究推向了新的臺階。
2.1.1 二階段目標檢測算法
二階段算法將目標檢測過程劃分為兩個步驟,首先根據算法產生一系列候選框,然后根據深度神經網絡對候選框進行分類和回歸。最具代表性二階段目標檢測算法是R-CNN[3],通過選擇性搜索算法從一組候選框中選擇可能出現的對象框,然后將對象框中的圖像處理后送入CNN提取特征,最后將提取的特征送入分類器進行預測。R-CNN 在VOC-07 數據集上取得了質的飛躍,平均精度由傳統算法的33.7% 提高到58.5%。針對R-CNN 訓練流程復雜、存儲空間占用大等不足,Girshick 等提出具有ROI 池化層并且利用Softmax 和線性回歸同時返回分類結果和邊界框的Fast R-CNN[4],該網絡在VOC-07 數據集上將檢測精度提高到70.0%,檢測速度也得到了很大的提高。由于選擇性搜索算法尋找感興趣區域運算速度慢,Ren 等提出了Faster RCNN[5]模型,創造性地采用卷積網絡產生候選框,極大提升了候選檢測框的生成速度。2017 年,Lin 等[6]在Faster R-CNN 的基礎上進一步提出特征金字塔網絡(Feature Pyramid Networks,FPN)結構,有效解決了深層特征圖缺乏空間信息影響定位精度的問題??偟膩碚f,二階段目標檢測器可以達到與人類相當甚至更好的精度性能,但是大量的計算阻礙了其在實時系統中的應用。
2.1.2 一階段目標檢測算法
一階段算法不需要產生候選框,直接將目標框定位問題轉化為回歸問題處理,僅使用一個CNN 網絡就可以預測不同目標的類別概率和邊界框,因此具有更快的檢測速度。YOLO[7]作為第一個一階段目標檢測算法,將圖像分割為S×S個網格,然后為每個網格預測邊界框并同時給出類別概率,在VOC-07 數據集上實現了155 FPS的實時性能,但同時也存在檢測精度相對較低的缺點。針對YOLO 小目標檢測精度偏低的問題,Liu 等[8]提出了采用先驗框和多尺度特征圖結合的SSD 多框預測算法,不同的分支可以檢測不同尺度的目標。隨后,YOLOv2[9]通過引入新的特征提取網絡Darknet-19、批歸一化、卷積加先驗框預測和多尺度訓練等多種改進策略,有效解決YOLO 檢測精度不足的問題。YOLOv3[10-12]則借鑒各類研究成果進一步優化網絡,采用了先進的Darknet-53 殘差網絡和多分支檢測結構,可以有效檢測不同尺寸的對象??偟膩碚f,一階段目標檢測器具有很快的運行速度,能夠滿足實時系統的要求,但預測精度相對二階段算法較低。
2017 年,Google 團隊在自然語言處理(Natural language processing,NLP)領域提出了經典算法Transformer,該模型拋棄了傳統的CNN、RNN,網絡結構由自注意力機制組成,不僅可以并行化訓練,而且能夠包含全局信息,基于Transformer 的BERT[13]詞向量生成模型在NLP的11 項測試中取得了最佳成績。Transformer 在NLP 中取得的耀眼成績引起了AI 研究人員的濃厚興趣,許多相關應用也出現在CV 領域中,并取得了很好的效果。
受Transformer 中的自注意力機制啟發,Wang 等[14]提出了Non-local 神經網絡,利用全局圖像之間的依賴關系為特征進行加權。盡管自注意力機制能夠捕捉圖像的全局信息,但是需要占用較多的顯卡資源,因此Huang 等[15]提出了交叉注意力模塊,僅在縱橫交錯的路徑上執行注意力操作,有效限制了對存儲和計算資源的占用。Yi 等通過對空間特征關系進行建模提出了ASSD[16]檢測器,對全局特征信息進行可靠引導,在精度上實現了很大的提升,但是這些方法都忽略了局部信息的重要影響,在檢測精度上仍無法取得滿意效果。ViT[17]是第一個在大規模視覺數據集上完全用Transformer 取代標準卷積操作的深度學習模型,其將圖像劃分成固定大小的塊,通過線性變換得到塊向量,隨后送入Transformer 進行特征提取并分類,模型在大規模數據集上做預訓練隨后在目標數據集進行微調,在ImageNet 數據集上可以得到CNN 方法相當的成績,而且隨著數據集的擴大,ViT 將發揮更大的優勢。Facebook AI 團隊首次將Transformer 應用到目標檢測任務,提出了DERT[18]模型,取代了現有模型中需要手工設計的工作,如非極大值抑制和錨框生成等,在準確率和運行時間上能夠取得與Faster R-CNN 相當的成績。
總的來說,自注意力機制可以有效捕獲圖像的全局特征關系,彌補CNN 感受野受限的不足,設計過程中也需要注意顯卡資源占用情況,同時還需要考慮全局特征和局部特征進行融合時的權重。
YOLOv3 是對YOLO、YOLOv2 進一步優化后提出的一階段目標檢測深度學習模型,只需要一次端到端計算就可以得到目標的類別概率和邊界框,具有運算速度快的特點,適用于實時場景下的目標檢測任務??紤]到隨著特征層的增加,圖像的上下文信息和全局關系會逐漸減少,影響了模型的檢測精度,因此,本文在YOLOv3的網絡結構中引入自注意力機制,并在自注意力模塊中加入高斯掩碼操作,使模型在捕獲全局特征關系的同時仍然重視局部特征的影響,以取得更好的檢測效果。
YOLOv3 的模型架構主要分為兩個部分:Darknet-53 和多分支預測網絡。相比于YOLOv2 的Darknet-19,模型采用了具有殘差單元的Darknet-53 特征提取網絡,構建的網絡層次更深。另外,為了使多種尺度下的目標都具有較好的檢測效果,模型采用具有FPN 架構的多分支檢測結構,采用3 個尺度的特征圖分別對大、中、小3 類目標進行檢測。
3.1.1 Darknet-53 與多分支預測網絡
為了達到更好的分類效果,YOLOv3 的作者借鑒殘差網絡的思想,設計了Darknet-53 特征提取網絡。Darknet-53 網絡是一個全卷積網絡,包含23 層殘差單元(Residual Unit),具有非常多的殘差跳層連接,其結構見圖1,左上是網絡的結構,下方的虛線框展示了各模塊的具體結構,模塊中的數字表示其重復的次數。為了緩解池化操作帶來的梯度負面效果,網絡用卷積層替代池化層,通過調整卷積的步長為2 實現降采樣。

圖1 YOLOv3-GMSA 網絡模型架構Fig.1 Architecture of YOLOv3-GMSA network
多分支預測網絡構建3 個預測分支,其結構如圖2 所示。當輸入圖片大小為640×640 時,3 個尺度的特征圖大小見表1,縮小的倍數分別為32,16,8。特征圖尺寸越小,聚合的信息范圍就越大,對大目標檢測越有利;反之,特征圖尺寸越大,保留的局部細節信息就越多,對小目標檢測越有用。為了在大尺寸特征圖中保留小尺寸特征圖包含的更高層語義信息,FPN 結構采用了上采樣和融合的做法,將較小尺寸特征圖上采樣至較大尺寸,然后與較大尺寸特征圖進行拼接融合。

表1 圖片大小為640×640 時特征圖尺寸和先驗框尺寸Tab.1 Feature map size and prior frame size with picture size of 640×640

圖2 特征金字塔結構的多尺度特征融合Fig.2 Multi-scale feature fusion of feature pyramid network
3.1.2 邊界框預測
不同于二階段算法需要生成候選框,YOLO系列算法將圖像分割為S×S個網格,劃分的網格對應特征圖的尺寸。在各檢測分支中,YOLOv3 對目標采用了K-means 聚類,每個分支設置3 個先驗框,先驗框尺寸如表1 所示。模型采用全卷積的網絡結構,最后一層卷積輸出的卷積核個數是3×(N+4+1),對應3 個預測邊界框,每個預測邊界框包含N個類別概率、4 個邊界框位置信息和1 個邊界框的置信率。針對MS COCO 數據集的80 個類別,最后一層卷積的卷積核個數是255。
不同于YOLO 采用Softmax 計算類別概率并用最大概率的標簽表示邊界框內的目標,YOLOv3 可以實現對檢測目標的多標簽分類,方法是對先驗框中的圖像采用二元邏輯回歸(Logistic Regression),在每一類別上計算是該類別的概率,并設定閾值對多標簽進行預測。
為了增強模型對全局特征關系的捕捉能力,本文引入Transformer 的自注意力機制,在多分支檢測網絡的出口附近嵌入高斯掩碼自注意力模塊,如圖1 所示。該模塊分別對大、中、小3 種尺寸的特征圖進行自注意力操作,讓特征圖中包含更多的大范圍信息,提高算法的檢測精度。
3.2.1 自注意力機制
注意力(Attention)機制[19]最早由Bengio 等在2014 年提出,其思想就是將有限的注意力集中到重點信息上。在Transformer 中,進出自注意力結構的輸入和輸出都是一個向量序列,每個向量都表示一個項,將輸入序列對自身進行注意力操作,根據完整的輸入序列來聚合全局信息以更新序列的每一個項,可以從全局范圍對各項之間的相關性進行建模,例如在自然語言處理中可以評估哪幾個詞更可能組成一個句子。
圖3(a)展示了自注意力基本塊的運算結構。對 于 包 含n個 項 的 序 列(x1,x2,…,xn),用X∈Rn×d表示,其中d是每個項的向量長度。自注意力的目標是通過全局上下文對每個項進行編碼來捕獲n個項的相互關系,其方式是定義3 個可學習的權重矩陣WK、WQ、WV將X轉換為查詢Q=XWQ、鍵K=XWK以 及 值V=XWV。自注意力模塊的輸出由公式(1)給出:


圖3 自注意力計算結構示意圖Fig.3 Structure of self-attention
對于每一個項,自注意力模塊將其查詢向量與全部項的鍵向量做內積,然后用Softmax 激活函數做歸一化得到注意力得分,基于注意力得分可以用全部項對每一項進行加權求和得到新的輸出。
一個標準的注意力模塊會對所有項進行注意力操作,但是對于圖像數據而言,局部特征關系的重要性大于全局特征關系,因此,本文對獲取的注意力得分進行高斯掩碼計算,增加局部信息的比重,削減全局信息的比重。二維高斯分布計算公式如式(2)所示:

其中參數ρ、σ1、σ2是可學習參數,根據全部項相對某一項的距離計算得到高斯分布的掩碼向量,然后與該項的注意力得分向量計算哈達瑪積,歸一化后得到新的注意力得分。
為了對序列內各項之間的復雜關系進行建模,Transformer 采用了具有多個自注意力基本塊的多頭自注意力(Multi-head Self-attention)機制,其結構如圖3(b)中所示。每一個基本塊擁有 自 己 的 權 重 矩 陣{WQi,WKi,WVi},其 中i=0,1,…,h-1,h是包含基本塊的個數。將輸出[Z0,Z1,…,Zh-1]∈Rn×h·dv拼 接 后 與 權 重 矩 陣W∈Rh·dv×d做內積即可得到最終的輸出。
3.2.2 位置嵌入
與卷積神經網絡不同,自注意力模塊需要將輸入的二維特征圖轉換為一維序列處理,具有排序無關的特性,因此丟失了每一個特征塊的位置信息。在缺失位置信息的情況下對特征塊之間的語義進行學習將會增大學習成本,所以需要提供位置嵌入(Position Embedding),即特征塊的位置編碼,編碼公式如式(3)所示:


3.2.3 GMSA 模塊結構
加入YOLOv3 網絡模型的高斯掩碼自注意力模塊結構如圖4 所示。該模塊輸入與輸出均為batchsize×channel×width×height 的 四 維 張量,在進行注意力操作之前,首先將二維特征圖轉換為一維序列,然后計算其位置嵌入向量并相加。對嵌入位置信息的序列執行帶有高斯掩碼的多頭自注意力操作,獲得帶有全局信息的序列,將該序列與嵌入位置信息的序列相加并歸一化后得到輸出序列,最后進行維度調整即可得到輸出特征圖。

圖4 GMSA 模塊結構Fig.4 Structure of GMSA module
為了評估改進的YOLOv3-GMSA 目標檢測模型相關性能,本文在公開數據集上進行了一系列實驗,并對YOLOv3 和改進后的YOLOv3-GMSA 進行了對比,相關內容介紹如下。
訓練算法模型使用MS COCO 2017 數據集。該數據集由微軟公司制作收集,用于目標檢測、分割、圖像描述等任務,包含目標檢測、關鍵點檢測、實例分割、全景分割和圖像描述等5 種標注類型,本文采用目標檢測標注對模型進行訓練。該公開數據集包含80 個類別,官方共劃分成3 個部分,其中訓練數據集包含11.8 萬多張圖片,存儲空間占用18 GB;訓練驗證數據集包含5 千張圖片,存儲空間占用1 GB;模型測試數據集包含4 萬多張圖片,存儲空間占用6 GB。模型訓練過程中,圖片尺寸為640×640。訓練環境的配置如表2 所示,算法模型采用PyTorch 框架搭建,底層通過CUDA 接口使用顯卡資源進行加速。

表2 訓練環境配置Tab.2 Training environment
訓練相關參數如表3 所示,其中批處理大小、迭代次數等參數在官方參考數值之上結合硬件條件及訓練情況進行了適當調整,訓練的優化算法采用Adam。

表3 訓練參數Tab.3 Training parameters
本文在MS COCO 2017 數據集上,基于Py-Torch 框架在Ubuntu 18.04 系統和NVIDIA TITAN Xp 顯卡之上對改進后的YOLOv3-GMSA算法進行了訓練。經過100 輪訓練之后,使用模型測試數據集對算法性能進行評估,模型的性能對比如表4 所示。

表4 算法模型性能對比Tab.4 Performance evaluation
從表中可以看出,改進后模型YOLOv3-GMSA 訓練的結果mAP@0.5 達到56.88%,精度達到65.31%,召回率達到53.18%。與YOLOv3 相比,mAP@0.5 提高了2.56%,精度提高了3.53%,召回率提高了1.22%,目標檢測的效果顯著提高。模型的檢測效果相比于二階段檢測算法Faster R-CNN 略有不足,但在檢測速度方面具有較大的優勢。人眼自然幀率是24 FPS,車載視覺傳感器常見幀率一般不低于該數值,實際場景中顯卡等硬件資源受限,處理速度將進一步下降,二階段算法難以滿足實時性要求。相比于SSD、ASSD 等目標檢測算法,改進后模型的檢測效果更好,檢測速度更快。由于嵌入了高斯掩碼自注意力模塊,模型復雜度增加,參數增多,檢測速度有所下降。改進后的模型檢測處理速度達到39.38 FPS,相比于YOLOv3 下降3.88,但仍滿足實時檢測的要求。通過以上數據分析可以得出,在YOLOv3 網絡深層插入高斯掩碼自注意力模塊以加強網絡模型對全局特征關系的捕捉能力,使特征圖包含更多的全局信息,更有意義,可以有效提高目標檢測的效果。
為了更好地觀察YOLOv3-GMSA 改進算法的訓練情況,圖5 記錄了其訓練過程中mAP@0.5、mAP@0.5∶0.95、精度以及召回率的趨勢曲線??梢钥吹絤AP@0.5、mAP@0.5∶0.95 始終呈上升趨勢,在40 輪左右逐漸收斂,精度和召回率則在上下波動中整體呈上升趨勢,且精度和召回率的波動趨勢相反,這是精度和召回率本身存在一定矛盾所致。

圖5 YOLOv3-GMSA 模型訓練關鍵參數曲線Fig.5 Training curve of pivotal parameters in YOLOv3-GMSA
為了更直觀地感受改進后算法的檢測效果,圖6 通過對3 張實際行車環境中拍攝得到的照片進行檢測,對比了YOLOv3 和改進后的YOLOv3-GMSA 算法檢測效果,檢測時置信度閾值設置為0.25。圖中第一列是原圖,第二列是YOLOv3 的檢測結果,第三列是YOLOv3-GMSA 的檢測結果。從第一行圖中可以看出,YOLOv3 和改進算法均具有良好的檢測效果,能夠對馬路上的行人進行檢測定位,相比于YOLOv3,改進后算法具有更高的置信度;第二行圖中,YOLOv3 出現明顯的識別錯誤,將巴士的后視鏡識別為人,置信度達到0.36,而改進后的算法能夠有效捕捉全局信息,融入全局特征關系,沒有出現類似的誤識別情況;第三行圖中,YOLOv3 沒有識別出汽車駕駛員以及車后騎自行車的行人,改進后算法則有效標定了這兩塊地方,置信度達到0.26。

圖6 檢測結果對比Fig.6 Comparison of detection results
總而言之,YOLOv3-GMSA 改進算法通過引入自注意力機制,增強了模型對全局特征關系的捕捉能力,在犧牲一定檢測速度的前提下,可以有效提高目標檢測的效果。
針對輔助駕駛的目標檢測場景,受計算機視覺領域的Transformer 應用啟發,本文在一階段目標檢測算法YOLOv3 的基礎之上,嵌入了高斯掩碼自注意力模塊,加強網絡模型對全局特征關系的捕捉能力,以提高檢測精度。在公開數據集MS COCO 2017 上訓練后的實驗結果表明,改進后的模型將mAP@0.5 提高了2.56%,雖然在檢測速度上略有損失,但仍能滿足實時性需求。該方法為輔助駕駛系統中的目標檢測提供了一種新的優化方案,而且通過調整自注意力模塊的設計,可以在檢測精度和檢測速度之間進行有效權衡,以適應不同場景下的檢測要求。