張炳力,秦浩然,江 尚,鄭杰禹,吳正海
(1.合肥工業大學汽車與交通工程學院,合肥230041;2.安徽省智能汽車工程實驗室,合肥230009;3.浙江百康光學股份有限公司,嘉興314113)
在汽車自動駕駛系統和高級輔助駕駛系統(advanced driving assistance system,ADAS)中,車輛檢測準確性直接影響行車安全。在夜間環境中,道路及前方車輛的可視性變差,駕駛員在缺乏路面信息、視野變差以及視力疲勞的情況下,極易引發交通事故。同時,多數目標檢測算法易受路燈和反光等光源的干擾而產生誤判[1],嚴重影響了自動駕駛系統和ADAS的安全性。因此,研究高精度夜間車輛檢測算法尤為重要。
基于傳統圖像處理的夜間車輛檢測算法通常利用夜間環境中較為明顯的燈光特征,其主要流程包括提取候選區域、分類和燈光配對3個部分。首先使用閾值分割、連通域分析等方法得到候選區域,然后利用車燈的空間位置、高寬比、形狀等信息選取出燈光,最后利用對稱性對燈光進行配對,將配對成功的燈光對視為車輛并輸出[2-6]。部分研究在分類過程運用Adaboost[7-9]或支持向量機[10]等機器學習算法,但仍需依賴燈光進行檢測。上述算法中均忽略了車輛的其他特征,致使其極易受到路燈、反光及其他光源的干擾,算法魯棒性較差,難以應用于智能駕駛系統。
隨著深度學習的發展,基于卷積神經網絡的目標檢測技術在準確性上比傳統方法有極大的提高。以Faster R-CNN為代表的兩階段算法[11-13]專注提高檢測精度,但檢測速度極低,無法達到實時,YOLO系列算法[14-16]和SSD[17]等單階段算法則追求實時的檢測速度,而檢測精度不足,不能直接應用于智能駕駛系統。
RetinaNet[18]對經典特征提取網絡ResNet[19]進行改進,引入了圖像特征金字塔,將高低分辨率的特征層相融合,提高了網絡學習特征的能力,并引入Focal loss解決了正負樣本不均衡的問題,使單層檢測網絡在保證檢測速度優勢的同時,在檢測精度上超過Faster-RCNN、R-FCN等兩階段檢測網絡。然而,在RetinaNet損失函數的設計上,仍存在以下兩個問題:(1)沒有充分利用分類與定位之間的聯系,造成定位更準的檢測框有可能獲得較低的分數,從而被NMS過程抑制,導致檢測精度下降;(2)定位損失的歸一化過程中導致了小目標產生的損失與大目標相比較小,影響了對于遠處小目標車輛檢測精度。對于問題(1),部分研究通過添加交并比(intersection over union,IoU)預測子網絡[20]或使用基于IoU的標簽[21]來利用正樣本IoU信息提高分類與定位的關聯性,但均沒有研究如何利用負樣本IoU信息。
為解決上述問題,本文中進一步優化了RetinaNet的損失函數:
(1)提出了基于IoU的分類損失函數,將其定義為IoU系數與交叉熵的乘積,建立了分類與定位子網絡的相關性,利用正樣本IoU提高檢測框定位精度,利用負樣本IoU加強網絡對于難分類負樣本的學習;
(2)改進了定位損失函數對高寬進行歸一化的方式,降低訓練對目標尺度的敏感性。此外,根據應用場景中車輛目標的特點,對網絡的特征層和預設框進行了優化設計,同時簡化分類和定位子網絡,進一步提高了網絡的精度和速度。最后,在夜間車輛數據集上進行了試驗驗證。
RetinaNet的作者提出了Focal loss,其通過兩個可調參數修正樣本的分類損失,使網絡能夠充分利用所有正負樣本,有效解決了訓練過程中的正負樣本不均衡問題。同時,根據樣本檢測的難易程度對其損失進行衰減,促使了網絡在訓練過程中可以更集中于學習相對困難的樣本。其損失函數由分類損失與定位損失兩部分組成:

式中:N為正樣本個數;p與?分別為預測框的分類概率與相對于預設框的定位偏移;c和g分別代表目標框的類別標簽與位置信息;λ為兩類損失的權重比。
對于單個預設框,采用Focal loss后其分類損失可表示為式(2),其中為對應目標框種類的預測概率,γ為可調節的超參數。

單個預設框的定位損失為Smooth L1損失[22],如式(3)所示。包括了中心點損失和高寬損失,并使用預設框的高寬進行了歸一化。


由損失函數的定義可知,分類與定位兩個子網絡的訓練通過相互獨立的損失函數進行。分類分數僅由分類子網絡決定,不考慮其定位精度,而定位精度則由檢測框與目標框的IoU表示,致使最終所得分類分數與定位精度IoU相關性較弱。如圖1所示,在損失函數的設計上忽略分類分數與定位的聯系,則有可能導致與目標框IoU較大的預測框A1的分數低于IoU較小的預測框B2,則在非極大抑制(non maximum suppression,NMS)環節中,A1會被B2所抑制,最終輸出定位精度較低的預測框B2。部分研究[20-21]利用正樣本的IoU信息,將體現定位精度的IoU信息與預測正樣本的類別分數聯系起來,保證具有較高定位精度的檢測框可得到更高的分類分數,從而被NMS過程選擇成為最終的輸出框。

圖1 分類與定位相互獨立可能導致的誤檢
然而,現有的研究僅考慮了正樣本的IoU信息。事實上,訓練過程中被劃分為負樣本的預設框在經過回歸后仍可能與目標框產生IoU,但在已有的損失函數中,對所有負樣本不加區分地計算其損失,會使網絡不能注意到更應該被訓練的負樣本,即未與目標框產生交并比或交并較小的樣本,從而產生誤檢。對于夜間車輛檢測系統來說,成對的路燈由于其外形特點與車燈類似,極易被誤檢為車輛,如圖2中的誤檢1。同時,對于部分經過回歸后與目標框產生一定交并比的檢測框,如圖2中的誤檢2,這類檢測框被分類為目標而非背景是相對可接受的。已有的算法在訓練過程中,沒有將誤檢1和誤檢2加以區分,而結合IoU為0這一信息,使IoU較小的負樣本產生更大的損失,即強調IoU為0的檢測框屬于背景,能夠降低誤檢率。

圖2 車輛檢測中的誤檢
定位損失分為中心點定位偏差損失與高寬偏差損失,現分別對其進行分析。
(1)對于高寬定位偏差,由于采用對數形式定義,其計算出的損失與預設框高寬無關,以寬度損失為例,可以看出輸入到Smooth L1的寬度損失部分僅與預測框和目標框寬度之比有關,如式(7)所示。

(2)對于中心點定位損失,預設框的高寬在其中承擔歸一化的作用,其高寬的設定對于后續損失的計算影響巨大。以cx定位損失為例,輸入到Smooth L1的中心點位置偏差如式(8)所示,可以看出其與預設框寬度成反比。

如圖3所示,黑色框代表預設框,綠色框代表目標框,紅色框代表預測框。圖3(a)和圖3(b)中預測框與目標框的相對位置一致,應產生相同的損失,然而,圖3(a)中預設框較小而圖3(b)中預設框較大,由于式(7)使用預設框的尺寸進行歸一化,導致了圖3(a)的中心點定位損失大于圖3(b),從而促使模型訓練比預設框大的目標框,降低了較小目標的檢測精度。

圖3 大目標與小目標產生損失的不平衡
在實際車輛檢測模型構建中,為保證精度與計算速度的平衡,一般采用K均值聚類[15]對預設框大小進行設計,所選取的預設框接近于目標框大小分布的中位數,因此實際樣本中必然存在小于預設框的目標框,在夜間車輛檢測中該類目標框的占比較高,因此采用式(7)中的定位損失將降低夜間對小目標車輛的檢測精度。
為在訓練時將網絡的定位與分類聯系起來,在不同樣本的分類損失函數中增加了與IoU關聯的系數,并針對正負樣本的特性分別設計其對應系數,如式(10)所示。圖4為正樣本IoU系數曲線,圖5為負樣本IoU系數曲線。

圖4 正樣本IoU系數

圖5 負樣本IoU系數

對于正樣本,引入IoU信息后,與目標框的IoU越大的預測框將產生更大的損失,進而經過訓練后,IoU越大的檢測框將擁有更高的分類分數,這樣使目標的分類與定位聯系起來,更重要的是,這樣有利于具有較高IoU的檢測框經過NMS之后被選為最終的輸出框,提高了定位精度。
對于負樣本,為方便說明引入IoU系數后誤檢率降低的原因,設計了如圖6所示的示例,圖中A、B、C均為3個被誤檢的負樣本,即預設框與目標框IoU<0.5,且分類過程被判定為車輛而非背景。

圖6 3種類型的誤分類示例
對于預設框A,盡管與目標框的IoU<0.5,但是其經過回歸得到的預測框與目標框的IoU較高(為便于理解,假定為0.8),從最終預測結果來看其應該被分類為車輛。然而,由于已將其劃分為負樣本,分類子網絡將更傾向于將其分類為背景,這造成了檢測精度的降低,因此通過設置權重(0.04)將該樣本的損失降低至幾乎為0,使其仍然被分類為車輛。
對于預設框B,其預測框與目標框的IoU為0.4,從預測結果來看其沒有準確定位出目標,由于分數較低,在NMS環節其可能被附近預測框抑制,因此對于這類誤判的負樣本,給予其一定損失權重(0.36),保證其分類分數較低即可。
對于預設框C,其預測框與目標框的IoU為0,該類負樣本難以通過回歸與目標框相交,且其預測框也無法被其他正確預測框所抑制,可將其理解為訓練中的難分類負樣本(hard negative example),因此需要對該誤檢給予盡可能大的懲罰,其IoU系數被設定為1,進而促使模型將其正確分類為背景,降低誤檢率。
基于1.2節中的分析,在式(1)的基礎上做出調整,以消除預設框高寬對于定位損失的影響,如式(11)所示。

其中

如式(11)所示,對于高寬偏差損失,依舊保持原定位損失的定義,而對于中心點定位損失,引入了綜合預設框、目標框以及預測框信息的系數,以橫坐標定位為例,修正后的損失模型中輸入到Smooth L1損失的偏差可表示為

基于式(13)可知,改進后偏差與預設框信息完全解耦,僅與當前訓練過程中的預測框和目標框有關,中心點在橫坐標維度上的偏差以預測框和目標框寬度之和進行了歸一化,消除了模型對不同大小目標框的敏感度。圖3所示的相對位置完全相同而整體尺度不同的兩子圖的定位損失完全一致,使網絡不會在訓練過程中傾向于忽視小目標。因此,采用改進后的方法,對于較小目標的檢測更有利,對于夜間車輛檢測系統來說,可以提高對遠處車輛的檢測精度。
目前缺乏公開的夜間車輛數據集,為驗證本文的方法,在夜間高速公路上采集了數據集。夜間高速公路光照條件較差,照明僅依賴車輛燈光、反光板和少量路燈,多數車輛目標位于前方50~200 m。該場景下收集的圖片數據中,車輛像素信息較少且光源特征類似,易產生誤檢,該數據集可以有效驗證算法的可靠性。原圖片為車載攝像頭采集的連續幀圖片,幀率為10 fps,分辨率為1280×720。為驗證模型的可靠性,按照每0.5 s取一幀圖片的規則得到了5 465張圖片,包含11 924個車輛目標,并按4∶1劃分訓練集和測試集。
本文使用RetinaNet作為基礎模型,RetinaNet-50在ResNet50上構建圖像特征金字塔,使用了金字塔 的P3~P7層,其 中P3、P4、P5由ResNet50的conv3_x、conv4_x、conv5_x通過上采樣和橫向連接產生,P6是在conv5_x的基礎上通過3×3卷積得到的,P7在P6的基礎上增加了Relu激活函數和一個3×3卷積得到。為適應夜間車輛檢測的應用場景,將圖片輸入大小設置為640×360。考慮到車載運算單元算力的限制以及智能車輛對感知系統實時性的要求,對RetinaNet模型進行了部分修改。
(1)由于車輛在圖片中所占尺寸通常較小,舍棄了特征圖中的P6和P7兩層,同時,為提高對極遠處車輛的檢測能力,添加了P2特征層,改進后的網絡結構如圖7所示。

圖7 改進的RetinaNet網絡結構示意圖
(2)使用K均值方法對訓練集中的車輛標簽進行聚類[8],并根據聚類結果設置了適合于檢測任務的預設框。考慮到速度與精度的平衡,在P2上只設置了一個尺度20,在P3~P5上各設置了兩個尺度,其中P3上的尺度為32和58,P4上的尺度為64和90,P5上的尺度為135和190,預設框的高寬比設置為0.7。
(3)RetinaNet的分類子網絡和定位子網絡均使用了4個3×3的卷積,極大影響了檢測速度,將其替換為2個3×3卷積,以提高檢測速度。
使用pytorch1.7實現網絡模型,在兩個GTX 1080Ti 11GB顯卡上進行訓練。批尺寸設置為8,所有模型均使用隨機梯度下降方法訓練了30個周期。初始學習率設置為0.002,動量為0.9,權重衰減為0.000 5,每5個周期學習率降低一半。
采用精度-召回率曲線(precision?recall curve,P-R曲線)和COCO評價指標對模型性能進行分析。
對于一般目標,使用P-R曲線(IoU閾值取0.5)、AP以及APIoU=0.50(下文簡寫為AP50)進行分析。其中,AP為不同IoU閾值下的平均精度,可反映檢測框的定位精度。對于小目標,其定義通常有兩種:(1)長寬小于原圖像長寬1/10的目標;(2)像素面積小于322的目標。本文采用第2種定義,并使用小目標的P-R曲線(IoU閾值取0.5)和APSmall(像素面積小于322的目標的AP,下文簡寫為APS)單獨對小目標檢測效果進行分析驗證。
首先驗證對于RetinaNet網絡結構的優化是否有效,測試結果如表1所示。由于選擇了分辨率較高的淺層特征層,有利于對遠處目標的檢測,相比于原始的RetinaNet,AP提高了6.3%,在此基礎上,通過K?means聚類的結果設置預設框,使其尺寸和高寬比更接近目標框,更有利于網絡定位,使AP進一步提高了5.4%。測試結果表明了選擇合適的特征層并依據聚類結果設置預設框對檢測精度的提高是顯著的。在對子網絡進行簡化后,精度有所降低,但減少了網絡運算的時間,提高了檢測速度。

表1 RetinaNet網絡結構優化效果
以改進后的RetinaNet為基準,通過5組試驗測試對于損失函數的優化方法。損失函數的優化是對訓練過程的改進,不影響其檢測速度,故只需關注精度指標。測試結果如表2、圖8和圖9所示。其中,表2中的APS指標和圖9反映的是小目標的檢測效果。

表2 損失函數優化效果對比

圖8 數據集中所有目標的檢測效果

圖9 數據集中“小目標”的檢測效果
對于一般目標,試驗2為定位損失優化,提高了1.5%的AP,檢測精度總體上升。試驗3、試驗4和試驗5為分類損失優化,其中,僅使用正樣本IoU優化,提高了1.1%AP,表明IoU較大的檢測框獲得較高分數是合理的;僅使用負樣本IoU優化,提高了2.0%AP,表明該損失函數正確地利用了負樣本的IoU信息,使網絡更加合理地學習了負樣本;同時應用兩種分類損失,提升了2.4%AP。試驗6為同時應用定位和分類損失優化,AP提高了3.7%,AP50提高了6.1%,表明本文對于損失函數的優化在總體上有效。
對于小目標,試驗2使APS提升了3.1%,表明定位損失的優化增強了網絡對于小目標的學習。試驗3、試驗4和試驗5分別使APS提升了1.6%、3.7%和4.4%,表明了分類損失函數的優化對于小目標具有良好的效果。試驗6使APS提升了6.3%,表明本文提出的方法極大地改善了小目標的檢測效果。
為得到效果最優的α和γ,首先,將α固定為1.0,調整γ的大小確定其大致范圍,試驗結果如表3所示。當γ=1.5時,AP和AP50均達到最大值,表明最佳的γ應在區間[1,2]之內。

表3 γ優化試驗結果(α=1)
然后,在[1.0,2.0]的區間內對γ的取值進行更精細的劃分。同時,在[0.8,1.2]的區間內以0.1為步長改變權重α,以確定最優的(α,γ)。表4的試驗結果表明,當α=1.75、γ=1.1時效果最優。

表4 α和γ聯合優化試驗結果
根據夜間車輛數據集中目標框的特點,優化了RetinaNet的網絡結構,通過改進特征層、K均值聚類設置預設框及子網絡簡化,構建了具有較高性能的網絡模型,提高了10.9%AP。在此基礎上,對損失函數提出以下改進。
(1)提出了基于IoU系數的分類損失函數,利用負樣本IoU信息,根據IoU的大小對其損失進行修正,增強了網絡對難分類負樣本的學習,利用正樣本IoU信息提高了定位精度,使AP提升了2.4%,APS提升了4.4%。
(2)對L1損失中的中心點偏差損失進行改進,消除了訓練過程中不同尺度目標歸一化不一致的問題,使網絡更加關注小目標檢測,使AP提升了1.5%,APS提升了3.1%。
同時采用兩種損失函數,使AP在網絡結構優化的基礎上提升了3.7%,同時APS提高了6.3%。表明了其對于夜間車輛檢測中尤為關鍵的小尺度目標的檢測具有較好的效果。試驗結果證明,所提出的方法大幅改善了對夜間車輛的檢測效果,具有較高的應用價值。