王殿偉,趙夢影,劉 穎,宋海軍,謝永軍
1.西安郵電大學 通信與信息工程學院,西安710121
2.中國科學院 西安光學精密機械研究所,西安710119
近年來,迅猛增加的機動車數目給交通監管系統帶來了嚴峻的挑戰,車輛目標智能檢測作為自動駕駛、智能交通[1]研究領域的核心技術,隨之受到相關研究學者的關注。因為傳統視覺視野有限,存在檢測盲區,缺乏獲取全局信息手段等不足,而全景視覺具有“成像一體化、360°大視場、旋轉不變性[2]”等優點,已被廣泛應用于無人駕駛、機器人安全監控、虛擬現實等諸多領域,在現實生活中具有重要意義。

圖1 SSD網絡框架圖
傳統的車輛目標檢測算法首先判斷目標車輛區域,然后用SIFT[3]、HOG[4]、LBP[5]等方法提取特征,最后經過分類器得到目標分類結果,其中目標特征主要依靠手工提取,而待檢測的車輛種類繁雜、數量龐大、背景信息復雜多變,手工選取特征的方法很難適應復雜環境下多種類別目標的檢測需求,因此傳統車輛檢測算法已經不能滿足要求[6]。近年來,基于深度學習的目標檢測算法受到廣泛關注,深度神經網絡能夠自主學習不同層級的特征,相比于傳統手工設計特征,學習的特征更豐富,特征表達能力更強[7]。
基于深度學習的目標檢測算法具有較強的全面性、活動性,并具有檢測識別多種目標類型的能力[8-10]。Girshick等[11]設計了R-CNN 框架,提出了區域選擇和使用深度學習分類的方法,在目標檢測方面突破巨大,但特征提取復雜,檢測速度很慢。隨后He 等[12]提出了SPP-Net,該算法使得檢測速度得到了很大提升,但無法實現端到端的檢測[13]。Ren 等[14]提出了Fast R-CNN,采用了多任務訓練的模式,減少硬件緩存。此后Faster R-CNN[15]算法提出區域生成網絡(RPN),雖然檢測在速度與精度上都有巨大提升,但是還尚未達到實時檢測的效果。Redmon 等[16]基于Google-Net 圖像分類模型[17]提出了基于回歸的YOLO算法,真正意義上實現了端到端檢測目標。Liu 等[18]提出了SSD 算法,該算法結合了YOLO 的回歸思想及Faster R-CNN 的anchor 機制,同時保證了檢測的速度和精度。但是目前的深度學習檢測算法大多在普通圖像上檢測性能越來越佳,應用于全景視頻圖像中檢測效果還達不到預期要求。
原始的SSD算法是在特征圖上直接分類和回歸,最后經過非極大值抑制的方法得出預測框,這樣的過程會導致高低層特征信息相差過大,小目標檢測效果差,或是在剔除冗余檢測框時出錯,導致目標漏檢[19],由于全景圖像本身包含的信息較多,車輛目標絕大多呈現為小目標,更加降低算法適應度。
為了提高SSD算法在全景圖像檢測中的準確率,本文提出了一種特征融合方法,在原SSD網絡前加入類似于Faster RCNN 算法中的RPN 網絡的部分,再使用多個傳輸轉換模塊將RPN*網絡特征層和SSD*網絡特征層相連接,將高低層特征融合,增加低層特征信息,從而提高目標的檢測效果。同時結合了RPN*網絡和SSD*網絡的損失函數,提出了新的損失函數,應用二分類和多分類的方法,使后續的回歸操作更加精確,進一步提高了檢測精度。
SSD 是一種典型的單次目標檢測算法,其在原始VGG-16 網絡[20]后增加三個卷積層和一個池化層,這些卷積層分別獲取不同尺度的特征圖用于目標檢測,類似于Faster R-CNN 的anchors 機制,目的在于提高檢測的準確率;同時SSD 算法結合了YOLO 的回歸思想,降低了原網絡的復雜度,達到實時監測效果。基本的SSD網絡框架如圖1所示。
SSD 算法首先對所用數據集采用3∶1 比例進行正負樣本劃分后,送入模型訓練,接下來利用CNN提取特征后直接進行分類和回歸,最后應用非極大值抑制的方法對冗余的檢測框進行剔除,所剩余的即為最終的目標檢測框。圖2是SSD目標檢測算法流程圖。

圖2 SSD目標檢測流程
傳統的SSD算法采用一步式檢測方法,直接使用卷積對不同的特征圖來進行提取檢測結果,具有可以達到實時監測的能力。但是這種均勻的密集采樣的一個重要缺點是訓練比較困難,這主要是因為正樣本與負樣本(背景)極其不均衡,導致降低了模型的準確度。為了提高目標檢測的精度,本文將RPN網絡引入進SSD網絡,應用傳輸轉換模塊將兩個網絡相連接,提出了一種新的RPN-SSD(簡稱為R-SSD)目標檢測網絡框架,同時繼承一步式和兩步式檢測方法的優點,可以更好地提取特征,顯著地提高了目標檢測的精度。這種R-SSD的網絡體系結構如圖3所示。

圖3 R-SSD體系結構圖
圖3右側虛線框內是原SSD網絡(這里只顯示特征提取層(此部分稱為SSD*)的網絡結構,其主要作用是獲取最終的目標檢測框;左側虛線框內是新構建的類似Faster RCNN 算法中的RPN 網絡的部分(此部分稱為RPN*),其主要作用是提取先驗框并粗略調整其大小和位置;下方四個實線框為傳輸轉換模塊,它的主要作用是在RPN*和SSD*之間建立連接,進行特征融合。
(1)RPN*
原始的SSD是一種單步檢測算法,在提取的特征圖上直接進行回歸和分類,容易造成目標的分類或定位錯誤,進而降低了檢測的準確率。本文將RPN*網絡引入到SSD 結構中,構建了一種新的改進SSD 網絡,稱為“R-SSD”,提出了基于R-SSD的全景視頻圖像車輛目標檢測算法。這里引入的RPN*結構的作用是識別并刪除一些負樣本先驗框,減小分類器的搜索范圍,再粗略預測先驗框的位置和大小,降低目標分類或定位的錯誤率,為SSD*的回歸操作提供更好的前提條件,所用到的RPN*結構如圖4所示。
由圖4 可知,RPN*結構首先將n個先驗框與特定特征圖上的每個規則劃分的單元相關聯,每個先驗框相對于其對應單元的初始位置是固定的。每個特征圖首先經過滑窗處理,得到256 維特征,然后通過兩次全連接得到2n個置信度分數和4n個坐標偏移量。因此,在每個特征圖中會生成n個經過細化的先驗框。

圖4 RPN*結構圖
(2)SSD*
SSD*網絡以RPN*網絡生成的細化先驗框作為輸入信息,融合了不同層的特征,進一步生成準確的目標類別和坐標,且RPN*和SSD*中對應的特征圖具有相同維度。與原始SSD 網絡不同的是,這里網絡輸入的是RPN*網絡經過細化的先驗框,淺層特征圖融合了高層特征圖的語義信息,將各層結果整合在一起,得到最終的目標框。而原始SSD 網絡直接用淺層特征圖做小目標檢測,并沒有融合高層信息。經過這一步驟會使得目標檢測結果更加準確,特別是對小目標的檢測。
(3)傳輸轉換塊(Conversion Block)
因為SSD算法用低層特征圖檢測小目標,高層特征圖檢測大目標。然而低層卷積層分辨率高但語義信息低、感受野較小,小目標特征提取不充分;高層卷積層語義信息充分、感受野較大,可提取更多特征信息。受上述低層卷積層和高層卷積層的特性的啟發,本文提出的R-SSD結構中添加了傳輸轉換塊(Conversion Block),它的主要作用是在RPN*和SSD*之間建立連接,將RPN*上提取先驗框的輸出轉化為SSD*的輸入,在RPN*經過細化的先驗框基礎上進行回歸,做反卷積操作,使兩個網絡提取的特征相融合,集成大規模的上下文信息,增大感受野,增加低層網絡的語義信息,進而提高檢測精度。圖5是傳輸轉換塊的主要架構。

圖5 傳輸轉換塊架構圖
由圖5知,本文添加的傳輸轉換模塊,首先將RPN*輸出的特征圖作為傳輸轉換模塊的輸入,經過一個3×3的卷積核,一個Relu 激活函數和另一個3×3 的卷積核。其次經過一個反卷積操作增大高層特征圖,從前一個傳輸轉換模塊輸出的特征經過一個4×4的卷積核,并對上述兩個輸出對應元素求和。在求和之后添加卷積層,以確保檢測特征的可辨性。輸出傳入SSD*模塊,完成RPN*與SSD*的特征融合過程。
本文提出的R-SSD 網絡架構的損失函數由兩部分組成,即RPN*中的損失和SSD*中的損失。在RPN*部分包含二分類損失Lb和回歸損失Lr,表明是一個目標或者不是一個目標,并且同時回歸它的位置和大小,以獲得細化的先驗框,之后將具有小于閾值負置信度的細化后的先驗框傳遞給SSD*以便進一步預測目標類別和準確的目標位置和大小;在SSD*部分包含多分類損失Lm和回歸損失Lr。將損失函數定義為:

其中,i代表第i個候選框是第i個先驗框的真實標簽,是第i個先驗框的真實坐標,pi和xi分別是RPN*中候選框i預測目標的置信度和坐標,ci和ti是SSD*中候選框預測目標的類別和坐標,Nrpn和Nssd分別是RPN*和SSD*中的正樣本個數。二分類損失Lb為交叉熵損失函數,并且多分類損失Lm是多類別置信度上的softmax損失。與Fast R-CNN類似,這里使用smoothL1損失作為回歸損失Lr。
本文程序均在深度學習服務器上進行,服務器CPU為Intel E5 2673 V3×2,內存128 GB,GPU 為TITAN Xp×4,操作系統為64位的Linux Ubuntu 16.04系統,并行計算框架版本為CUDA 8.0,深度神經網絡加速庫為CUDNN v7.0。利用Python 編程語言在深度學習框架上實現本文的R-SSD 目標檢測算法模型并完成對模型的訓練及驗證。
由于目前沒有針對車輛目標檢測的全景視頻圖像公用數據集,因此利用商用泰科易720pro VR全景相機自行采集數據。分別在不同場景下采集含有不同大小、顏色、外觀的車輛,使用Label Image標簽工具對全景圖中的大小車輛進行標注,共計2 688 幅,均為VOC2007格式。將全景環境下的數據分為訓練集(1 685 幅)、驗證集(89幅)和測試集(914幅)。
參考SSD算法中的數據增強方法[21],本文對原始數據進行隨機采集塊域(Randomly sample a patch)、隨機裁剪加顏色扭曲(random crop & color distortion)及水平翻轉(horizontal flip)等操作,可提升算法模型的檢測性能。
本文通過在測試集中分析模型改進前后的檢測精度、檢測速度和參數量,對比模型的性能。首先把測試集圖像輸入訓練好的網絡,然后對車輛位置進行檢測并記錄檢測結果,當模型預測的目標邊界與測試集對應的標注數據中的邊界框的交并集比(IOU)大于等于設定的閾值時,認為檢測結果正確,否則視為檢測錯誤。檢測精度的評價指標選取準確率(Precision,P)指標,其定義為:

式中,Tp是正確檢測到車輛的數量,Fp是錯分車輛目標的數量。
本文的基礎網絡仍然為原SSD 的VGG16,首先在自行采集的全景數據集上,用1 685 幅訓練集圖片對該網絡進行訓練,得到預訓練網絡模型。訓練模型的參數如下:設置初始學習率為0.000 1,在迭代40 000 次時學習率衰減為1E-05。訓練批量大小為8,迭代60 000 次后檢測結果達到最優值,可達90.78%。
為了驗證本文提出的R-SSD網絡準確性,將兩個網絡同時應用在采集的2 688幅全景視頻數據集中。為了證明算法的適應性,數據集包括校內、公路旁、路口等不同場景下的不同大小、顏色、外觀的車輛目標。實驗對比標準的SSD網絡,結果如圖6所示。

圖6 SSD與R-SSD準確率對比
由圖6 可知,隨著迭代次數的增加,兩個算法的準確率都在提升。迭代10 000次時,SSD算法的準確率只有78.44%,本文算法準確率可達到83.25%;迭代30 000次時兩種算法的準確率都有明顯地上升,直至迭代60 000次逐漸趨于穩定,但是本文算法準確率始終高于SSD算法。
在測試集中分別對改進前后的SSD 目標檢測模型及YOLO V3模型進行測試,并統計其檢測結果和檢測速度。實驗結果如表1所示。

表1 相同數據集下各算法mAP對比
由表1 可以看出,本文的mAP 為90.78%,相比于Faster R-CNN模型,雖然檢測速度有所降低,但檢測精度提升了9.18 個百分點,效果較為突出;相比于YOLO V3模型,不僅檢測精度提高了4.58個百分點,而且檢測速度也提高了14.4 幀/s;相比于SSD模型,在檢測速度大致相同(僅僅降低了1.8 幀/s),檢測精度提高了5.04個百分點,提升效果顯著。可見,在全景車輛檢測中,本文提出的模型對目標的識別效果較好,且檢測速度也較可觀。
圖7為網絡訓練過程中損失值的收斂曲線,橫坐標表示迭代次數,最大迭代次數為60 000 次;縱坐標代表損失值。當網絡迭代超過50 000次時,損失值變化趨于穩定,從圖中可以看出,最終損失值下降到約1.18。在此算法中參數的收斂情況較好,因此網絡的訓練結果也較為理想。

圖7 損失函數數值曲線圖
圖8~圖10 為部分實驗結果圖,紅色矩形框為SSD網絡預測的目標位置,藍色框為本文提出的R-SSD網絡預測的目標位置。

圖8 SSD網絡與本文提出的R-SSD網絡目標漏檢結果對比圖

圖9 SSD網絡與本文提出的R-SSD網絡對小目標檢測結果對比圖

圖10 SSD網絡與本文提出的R-SSD網絡對重疊目標檢測結果對比圖
(1)目標漏檢糾正
圖8(a)和圖8(c)是SSD 網絡的檢測結果,由圖可明顯看出兩幅圖中的中間白色車輛均存在漏檢現象,主要是由于SSD網絡使用單步檢測的方法,直接在特征圖上采用卷積核來預測邊界框類別和坐標偏移,為了提高檢測速度而降低了檢測精度。圖8(b)和圖8(d)為本文網絡的檢測結果,由圖可看出,本文網絡成功識別了漏檢車輛,且每個目標的類別置信度有很大提升,這是由于本文算法使用了兩步式的檢測方法:第一步,在RPN*網絡層過濾負樣本先驗框,并粗略調整先驗框的位置和大小,為后續SSD*中的回歸操作提供好的初始條件;第二步,SSD*網絡結合RPN*網絡提供的語義信息,進行細致的分類和回歸,判斷目標所在位置,以此大幅提高了檢測的精確度,可很好地說明本文算法在目標漏檢糾正性能上的有效性。
(2)小目標檢測糾正
圖9(a)和圖9(c)為SSD 網絡的檢測結果圖,盡管均對左側白色車輛的檢測結果良好,但對右側小目標車輛檢測性能較差,主要是由于SSD使用conv4_3底層特征檢測小目標,但是底層特征卷積層數少,所含語義信息較少,存在特征提取不充分的問題,因而導致對小目標出現漏檢現象。圖9(b)和圖9(d)為本文算法的檢測結果,由圖可知,本文提出的R-SSD 網絡對小目標的檢測效果相對較好。這是因為本文提出的R-SSD 網絡添加了一個傳輸轉換模塊,將RPN*網絡和SSD*網絡的維度相匹配,使用反卷積操作增大高層特征圖,同時實現高低層特征融合,增加底層特征的語義信息,因此提高了小目標檢測的準確率。
(3)重疊目標檢測糾正
圖10(a)和圖10(c)為SSD 網絡的檢測結果,由圖可知兩張圖中右側白色車輛有重疊,SSD網絡出現漏檢現象。主要是由于SSD 網絡檢測性能和特征提取有著密不可分的關系,該網絡在conv4_3、conv7、conv8_2、conv9_2、conv10_2、conv11_2 卷積層提取特征,然后分別在這些特征層上面每個點構造六個不同尺度大小的先驗框,直接進行分類和檢測,最后將生成的先驗框進行非極大值抑制,確定最終檢測結果。其不足之處是可能存在劃分的先驗框不精細,與真實框的匹配度不高,從而導致過多的背景噪聲干擾,影響檢測結果。由于重疊的兩輛車有相似的特征,檢測時很容易被混淆,對檢測結果進行非極大值抑制處理時,后面車輛預測框可能被前面車輛預測框所抑制,導致后面車輛漏檢。圖10(b)和圖10(d)為R-SSD 網絡的檢測結果,由圖知本文算法對被遮擋車輛有著良好的檢測性能,主要由于本文算法首先用RPN*網絡濾除一部分與真實框相差過大的先驗框,縮小了分類器的搜索空間;然后將粗略預測和分類的先驗框輸入到SSD*網絡,再進行分類和預測;最后經過細化的先驗框與真實框匹配度高,能夠減少背景噪聲的影響,從而提高檢測的準確率。
如表2 所示,實驗分為三組,分別在不同檢測難度下進行,每組都有兩張圖各采用SSD和本文算法進行結果對比,表中數字表示檢測出車輛目標的準確率,結果顯示未檢出的則說明算法沒有良好地檢測到圖中目標。通過表中結果對比,本文算法可以更好地檢測出車輛目標,且對于SSD算法檢測到的目標檢測的置信度也有較大的提升。

表2 SSD算法和本文算法實驗結果對比
本文提出了一種基于改進的SSD 網絡結構,稱為R-SSD,它由RPN*和SSD*兩個模塊相互連接組成。引入RPN*的目的是過濾掉閾值小于0.5的候選框,以減少分類器的搜索空間,并粗略得出候選框的位置和大小,為后續SSD*中的回歸提供更好的初始化,并回歸準確的對象位置和大小并預測相應的多類標簽。整個網絡以端到端的方式進行訓練,使用多分類損失。本文使用R-SSD網絡在自行采集的全景數據上開展了多次實驗,結果表明本文算法改善了SSD對小目標檢測精度較低,目標錯檢、漏檢的不足,并實現了較高的檢測精度和效率。下一步工作可以考慮在網絡中引入注意力(attention)機制,進一步改進和優化模型,使網絡對特定目標有更高的檢測精度。