鄭秋梅 曹 佳 王風華 孫燕翔 馬茂東
(中國石油大學(華東)計算機與通信工程學院 青島 266580)
隨著人們對自動駕駛和交通監控系統的日益關注,車輛檢測已成為計算機視覺領域中的研究熱點。目前卷積神經網絡(CNN)在車輛檢測任務中取得廣泛應用。然而由于車輛在場景中的位置離視點遠近的原因導致車載或交通視頻中包含的車輛尺寸變化較大,而傳統CNN 對不同空間尺寸車輛的魯棒性表現不足,致使識別率不理想。為進一步提高對不同尺寸實例對象檢測的魯棒性及準確率,文獻[1~3]通過利用具有多個分辨率的輸入圖像使網絡適合所有尺寸或融合CNN 多層特征圖譜中提取的特征使網絡適合不同尺寸[4~10]。但這些方法引入了昂貴計算開銷,降低了車輛檢測的實時性。
為提高檢測速度,YOLO[9~10]和SSD[7]將目標檢測轉換為回歸問題,但這種基于網格的范式因其太強的空間約束使得對小目標檢測效果欠佳。因此,現有的方法大多采用候選區域結合CNN 實現目標檢測,如Fast R-CNN[1]和Faster R-CNN[11],但通常使用的RoI池[1]只是復制特征值以適應預設特征長度,扭曲了小物體的原始結構。而且,在訓練過程中,填充復制值不僅導致前向傳播表示不準確,還會積累反向傳播中的錯誤,妨礙網絡對小尺寸車輛的正確檢測。因此本文提出尺度感知的ROI 池化層,為小尺寸車輛生成精確的特征圖譜,而不需要額外的空間和時間負擔。
同時,針對不同尺寸車輛之間類內距離通常很大,使得網絡難以使用相同的權重集來表示具有不同大小的對象這一問題。本文提出一種用于車輛檢測的多分支決策網絡,每個分支被設計為最小化特征的類間距離,因此比現有網絡更有效地捕捉具有各種比例對象的區分特征。本文首先利用尺度感知RoI 池來保存小尺寸物體的原始結構。然后將經過池化層融合的特征饋送到分支決策網絡,從而提出尺度感知的卷積神經網絡算法(SAVD)。實驗證明,本文算法較于現有算法[2、4、9~13]有更高的識別率,并對不同尺寸實例對象有更好的魯棒性。
本文首先將整個圖像提供給幾個卷積和所提出的尺度感知的ROI池化層(SAROI池),以生成豐富的特征表示。其中,SAROI池化層采用雙線性內核的反卷積來擴大小尺寸提案的特征區域,避免用復制值表示小目標。同時,SAROI 池化層應用于CNN 的多個層次,并將不同卷積層的特征進行級聯,以融合低層細節信息和高層語義信息來檢測對象[6],生成一組卷積特征圖。然后利用區域建議網絡(RPN)[4,11]將先前的卷積網絡的特征映射作為輸入并生成固定數量的anchor 提議。對于每個anchor 建議,SAROI 池化層提取出特征向量。在此基礎上,根據建議的大小將SAVD 劃分為兩個規模特定子網絡的分支,減輕了不同尺寸規模對象類內變化較大的訓練負擔,并提高大尺寸物體和小尺寸物體的檢測精度。最后,將分支的檢測結果通過門函數融合到最終的檢測結果中。雙線性核反卷積和分支決策網絡是輕量級運算,前者只處理小的建議而不擴大到整個特征圖,后者處理的建議數與傳統的檢測方法相同。本文算法整體框架圖1所示。
豐富的特征表示由該階段的網絡生成,利用了CNN 網絡的卷積層和尺度感知ROI 池化層。然后利用不同卷積層的級聯(多特征映射連接,圖1 表示為“concat”),將其輸入到后來的RPN 和分支決策網絡中。

圖1 尺度感知CNN的實時車輛檢測算法整體框架
傳統兩階段檢測算法,如Faster R-CNN[11],為滿足分類網絡的輸入要求,通過ROI 池化層[1]將每個建議指定為固定大小的特征向量。ROI 池將每個建議劃分為U×V個子窗口,并使用最大池為每個子窗口提取一個值,以便輸出具有固定大小。若提案小于U×V,則復制提案的某些部分以填充額外空間將其擴大為U×V。但它破壞小物體的原始結構及上下文信息。在網絡訓練中,填充復制值不僅會導致前向傳播表示不準確,而且還會積累反向傳播中的錯誤。導致網絡對小尺寸車輛的檢測不具有魯棒性。
尺度感知ROI 池(SAROI 池)可以在保持小尺寸對象的原始結構的同時將建議調整到指定大小。存在如下三種情況。1)若建議大小大于指定大小,則將在每個子窗口中提取最大值作為原始的RoI 池策略。2)若建議的大小小于指定大小,則采用雙線性內核的反卷積操作來放大建議,從而從小提議中提取具有區分性特征。反卷積內核的大小由提議大小和預定義的池化層大小動態確定。3)若建議的寬度大于指定的寬度且建議的高度小于指定的高度時,SARoI 池化層使用反卷積操作放大該建議的高度將該建議的寬度拆分成多個子窗口,并將每個子窗口的最大值用作最具有區分性的特征值。用如下公式來表述上述三種情況:令為第k 個建議中SAROI池化層的第j 個輸出。則:

反向傳播:通過反向傳播將導數轉移到SARoI池中以訓練網絡。對應于輸入變量xi的損失函數L的偏導數為

其中i*表示反卷積之后每個子窗口中最大值的位置。表示反卷積關于損失的導數。損失從連接到SAROI池的后續層中傳播。
由于背景對象總是占多數,因此過濾候選池對于構建有效的車輛檢測系統至關重要。為此,本文利用改進后的小型RPN 網絡提取候選框以及消除背景區域。將特征映射劃分為64×36 個網格,而對于每個網格,生成一組anchor boxes 或初始對象框,其固定大小為32×32,64×64,128×128,256×256 和512×512,并且不同的長寬比為1∶2,2∶1 和1∶1。與Faster R-CNN 不同,本文直接使用anchor boxes 來提出候選對象,而不使用額外的全連接(fc)層。SAROI 池將每個anchor box 中將特征向量指定至固定大小,然后這些特征向量被饋送到多分支決策網絡中,文獻[14]表明,使用這個簡單但有效的提議網絡,大約98%的背景區域可以被丟棄,從而顯著提高速度。
通常交通或車載視頻中車輛尺寸變化較大,為進一步提高檢測精度,本文提出的分支決策網絡是兩個規模特定子網絡的集合,其分別檢測較大尺寸和較小尺寸的車輛。每個分支由一個卷積層和一個全連接層構成,然后連接兩個分類器:用于分類與邊界框回歸。最后,兩個子網絡的檢測結果通過門函數進行加權融合。
在雙分支決策網絡中,本文使用訓練集中所有對象尺度的中值作為參考閾值,將提案分解為大分支或小分支。在訓練過程中,為了使兩個分支在中間尺度上共享樣本的一部分并且增加每個分支的訓練樣本的大小,在每次訓練迭代中動態地改變分割提議的閾值。使用高斯模型模擬閾值變化,所有對象的尺度的中值是高斯模型的平均值。如此,一些具有接近于所有對象尺度的中值的尺度的建議在訓練過程中有機會被分類為大的和小的分支。在測試中,只使用中值來分割提議。最后定義門函數,以自適應加權內置子網絡的輸出。令wl和ws分別表示大尺寸和小尺寸子網計算的輸出權重。令提議高度為h,則wl與ws計算如下:


本文模型使用隨機梯度下降進行端到端訓練。為使訓練過程穩定,首先利用較小的學習率來訓練RPN,然后利用較大的學習速率來訓練整個網絡。首先將學習率設置為0.0001,進行10k 次迭代,權重衰減為0.0005,來訓練RPN。然后,將學習率設置為0.0005 來訓練整個網絡,在40k 和70k 迭代時將其減少0.1 倍,并在75k 迭代后停止學習。后續實驗測試本文算法基于PVA[15]網絡及VGG[16]網絡,為加速訓練并減少過擬合,使用在ImageNet[17]上訓練的VGG 中的卷積層或在Pascal VOC[18]上訓練的PVA 的權重來初始化RPN。最后,利用VGG和PVA 中fc 層的訓練權重來初始化多分支決策網絡的完全連接層,其他層由隨機噪聲初始化。
在測試中,對于每個輸入圖像,本文將多分支網絡輸出結果融合在一起使用非極大值抑制(NMS)來優化結果。并使用軟化非極大值抑制(soft-NMS)來提高遮擋車輛的定位精度,即選擇幾個具有較高可信度的包圍盒,并對它們的坐標取平均值。
實驗車輛檢測數據集選用KITTI[19]、DETRAC[20]數據集。KITTI是一種廣泛使用的車輛檢測算法基準。它包含不同場景中的各種比例的車輛。包括7481 張用于訓練的圖像和7518 張用于測試的圖像。根據大小、遮擋和截斷等情況,將這些目標車輛分為三個難度級別:容易、中等和困難,文獻[19]定義了這些難度級別。
DETRAC 是由攝像機安裝在北京的交通桿上,并在陽光明媚、多云、雨夜等不同光線下拍攝的,包含較大空間尺寸變化的車輛實例的高速公路數據集,它包含兩個場景:稀疏和擁擠場景,并分為汽車、公共汽車和貨車三類。若平均包含每幀超過15輛車則視為擁擠的場景;否則,為稀疏場景。
實驗采用公認的平均精度Average Precision(AP)和交聯合(IoU)指標[18]度量來評估車輛檢測的性能,它已經廣泛應用于各種車輛檢測算法[18~19]的評估。AP 是基于數據集中的IOU 計算得到的。其中IoU 為真實值手工標注的邊框同模型的預測邊框的交比上兩者的并。在上述兩個數據集中,IoU 為0.7,即,只有檢測邊界框和手工標注的真值邊界框之間的重疊大于或等于70%被認為是正確的檢測。
本文將提出的SAVD 算法在KITTI數據集上的所有三個難度級別上評估本文算法的識別性能。實驗中,SAVD算法框架基于PVA網絡[15]和VGG網絡[16],在PVA 網絡中,SAROI 池的內核大小設置為6×6,在VGG 網絡中設置為7×7。整個訓練集用于訓練我們的模型,并使用同一組測試數據在相同配置的計算機上對其它幾種方法進行比較。
表1 表明,SAVD 算法在中等級別的情況下比其它二階段檢測算法[2、4、11~13]有更高的精度并且大幅提高運行速度。而對比一階段檢測算法[9~10],如YOLO 和YOLO V2,雖然運行速度有所降低,但檢測精度明顯高于一階段檢測算法[9~10]。SAVD 算法更能有效平衡檢測精度與運行速度。在保持較高的檢測精度前提下滿足實時性要求,因此本文算法在識別性能上表現更優。
為研究SAVD 算法在不同尺度車輛上的檢測性能。實驗在DETRAC數據集上進行,并分別在稀疏和擁擠的場景下進行評估。該數據集包含有較大的尺寸變化的車輛,如圖3 所示。車輛根據其尺寸分為三類:高度大于15像素、小于39像素的車輛屬于“小”類;高度在39 像素至66 像素之間屬于“中”類別;高度大于66 像素屬于“大”類別。將每個視頻分成兩部分,分別選取前70%作為訓練數據,其余30%作為測試數據,為避免檢索相似的圖像,在視頻中每七幀提取一幀作為訓練/測試圖像。

表1 基于KITTI數據集,車輛檢測實驗結果對比表

表2 基于DETRAC數據集,車輛規模分析實驗對比表(晴天)
表2 表明,本文SAVD 算法基于PVA 網絡顯示了在不同場景下所有車輛尺度上的改進。與其他大小尺寸的車輛相比,小型車輛對象的改進更為顯著,因為傳統方法方法的ROI池化層通過填充復制值使得小尺寸車輛發生扭曲,而本文算法避免了這一點。此外,本文算法在擁擠場景中相比于其他算法對于中小尺寸車輛識別率更高。表明本文算法在復雜場景下識別效果表現更為魯棒。
為評估SAVD 框架中不同成分對檢測性能的影響,本文在KITTI 數據集上對SAVD 進行控制實驗。由于沒有為KITTI 的測試集提供標注數據,本文按照文獻[4]將訓練集分為訓練集和驗證集,并將輸入圖像調整為576×1920。

表3 基于KITTI基準,SAVD框架中不同成分控制實驗結果對比表
表3 表明,首先,與僅基于PVA 網絡的MSCNN算法相比,增加本文所提的SARoI池化層顯著提高了檢測精度,同時沒有引入額外的運算時間。從表中看出,對“中等”和“困難”難度級別的檢測率有顯著提高,表明由SARoI池恢復的高分辨率語義特征對于檢測小對象有很大助益。其次,增加具有兩個分支的分支決策網絡進一步提高了檢測精度,同時保持了檢測速度。最后,經Soft-NMS 處理后提高了“困難”這一難度級別的檢測率,“困難”類中包括許多遮擋和模糊的車輛,從而表明其對遮擋和模糊的車輛具有魯棒性。
在圖2 和圖3 中,我們在KITTI 數據集和DETRAC 數據集的圖像上可視化了由SAVD 算法檢測到的車輛。結果表明,該算法在模糊、多雨、遮擋等不同情況下,對不同方向、不同尺度的車輛具有魯棒性。

圖2 基于KITTI數據集,SAVD實驗效果圖

圖3 基于DETRAC數據集,SAVD實驗效果圖
本文為實時精準檢測具有較大尺寸差異的車輛,提出基于尺度感知CNN 的實時車輛檢測算法(SAVD)。為提高小尺寸實例對象的識別率,SAVD算法提出基于尺度感知的ROI池化層,借此保留小尺寸對象的上下文信息。同時,為最小化具有較大尺度變化的對象之間的類內距離,使網絡對各種實例尺寸車輛具有魯棒性,本文提出分支決策網絡,將大規模子網絡和小規模子網絡結合為一個統一的架構,并使用本文設計的加權機制將兩個子網絡的輸出進行融合。上述操作是輕量級技術,無需額外的計算工作量。實驗證明,相比于其他算法,SAVD 算法有更高的識別率,比其它兩階段檢測算法識別速度更快,滿足實時性要求。