葛明進,孫作雷,孔 薇
(上海海事大學信息工程學院,上海 201306)
城市規模不斷擴大,道路上的車輛日益增多,道路交通情況變得越來越復雜,使得智能交通系統[1,2]的發展越來越引人關注。交通場景下的目標檢測技術是智能交通系統的關鍵所在,在車輛違法行為檢測、停車繳費系統、規避交通事故等方面都發揮著極為重要的作用。
當前基于深度學習的目標檢測算法主要可分為2大類。
一類是二階段目標檢測算法,此類算法在第1階段通過區域建議網絡RPN(Region Proposal Network)生成候選區域RP(Region Proposals),第2階段在RP內完成圖像特征提取,并利用提取到的特征對候選區域進行分類和定位。例如R-CNN(Region-based Convolutional Neural Network)[3]、Fast R-CNN(Fast Region-based Convolutional Neural Network)[4]、Faster R-CNN(Faster Region-based Convolutional Neural Network)[5]等。其中R-CNN算法首先利用選擇性搜索SS(Selective Search)算法[6]獲取圖像的候選區域RP,然后使用卷積神經網絡對所有RP進行特征提取,最后使用支持向量機SVM對RP進行分類和定位。Fast R-CNN針對R-CNN中存在的重復卷積計算問題進行了改進,首先將整幅圖像輸入到卷積神經網絡中進行特征提取,然后通過感興趣區域池化層(ROI POOLing)對獲取到的RP進行尺寸處理。Fast R-CNN使用整幅圖像作為卷積網絡的輸入,減少了大量的重復計算,降低了計算量,但其依舊采用SS算法提取候選區域,所以整個網絡的訓練還沒有實現端到端處理。Faster R-CNN提出使用區域建議網絡RPN的方法,將生成候選框的過程也加入到目標檢測網絡中來,整個目標檢測網絡實現了端到端的訓練。Faster R-CNN還提出了anchor的概念,作為預測的候選框。后來候選區域生成階段逐漸被基于anchor的區域建議網絡所取代。

Figure 1 RetinaNet model圖1 RetinaNet模型
另外一類是基于回歸的目標檢測算法,直接在網絡中提取特征來預測目標類別和位置,將目標檢測由分類問題轉換為回歸問題,檢測速度相比于二階段目標檢測算法有了質的提升,但在精度方面卻相差很多。其中DenseBox[7]采用的就是anchor-free的機制,在訓練時通過剪裁、調整圖像尺寸來適應多尺度的要求,因此DenseBox需要在圖像金字塔上完成目標檢測任務,重復的卷積計算使計算量增大。YOLO(You Only Look Once)[8]也是采用anchor-free的方法進行目標檢測的典型,在網絡訓練的過程中,直接學習目標類別和位置,不以任何預定義的先驗框作為參考。但是,由于在YOLO目標檢測算法中,每個目標只由目標中心點所在的網格(Grid Cell)負責預測,召回率低。所以,后來的YOLOv2[9]、YOLOv3[10]和SSD(Single Shot multibox Detector)[11]都借鑒了Faster R-CNN中的anchor機制,利用密集采樣的思想,通過大量預定義的anchor枚舉目標可能的位置、尺寸和縱橫比的方法來搜索對象,但網絡的性能與泛化能力也受到了anchor自身設計的限制。首先,使用anchor作為先驗框會引入額外的超參數;其次基于特定數據集設計的anchor尺寸不能通用于其它數據集;最后,每個位置都有大量的先驗框,如此密集地采樣會帶來正負樣本極度不均衡的問題。針對基于anchor的單階目標檢測網絡存在的問題,本文在RetinaNet[12]網絡的基礎上提出一種基于anchor-free的交通場景下的目標檢測模型,采用逐像素預測的方式進行目標檢測,直接預測目標類別和邊界框的位置。
2017年Facebook AI團隊提出了RetinaNet目標檢測器,RetinaNet是一個基于anchor的單階目標檢測網絡,其網絡結構圖如圖1所示,其中,W和H分別為特征圖的寬和高,K為目標的類別數,A為anchor的數量。首先將深度殘差網絡ResNet[13]作為主干網絡用來提取圖像的特征;然后利用特征金字塔網絡FPN(Feature Pyramid Networks)[14]對不同特征層提取到的圖像信息進行融合;最后2個平行的子網絡完成特定的任務,第1個子網絡負責對特征金字塔某一層的輸出特征圖執行目標分類,第2個子網絡負責目標位置回歸。
本文采用與RetinaNet網絡相同的主干網絡,使用ResNet作為基礎特征提取網絡,利用FPN完成多尺度預測。不同的是本文采用anchor-free方法進行目標檢測,在目標檢測的過程中不以任何預定義的anchor作為目標分類和邊界框回歸的參考,而是將特征圖上的每個像素作為1個樣本,對特征圖上的像素進行逐像素分類[15],并回歸正樣本區域內的像素距離真實框GT(Ground Truth)左上角和右下角的距離。此外,本文在邊界框回歸分支上添加中心性預測分支,中心性預測分支與邊界框回歸分支共享網絡參數。其網絡結構圖如圖2所示。其中分類子網絡最后的輸出是1個K(類別數)通道的類別敏感的語義特征圖,回歸子網絡負責預測4個位置偏移量,中心性預測網絡負責衡量正樣本區域內的點距離真實框中心點的遠近程度。

Figure 2 Object detection network based on anchor-free圖2 基于anchor-free的目標檢測網絡
基于深度學習的目標檢測算法通常包含2個步驟,首先利用特征提取網絡提取圖像不同分辨率、不同層次的語義特征,然后利用提取到的特征進行分類和定位。常用的特征提取網絡包括AlexNet[16]、VGG-Net[17]、GooLeNet[18]等,這些都屬于直線型的卷積神經網絡。對于這種類型的網絡,通過增加網絡的寬度和深度可以提高網絡的性能,但網絡的加深也會產生更多的誤差。如果簡單地增加網絡深度,會產生梯度彌散或梯度爆炸的問題。
ResNet的設計巧妙地規避了直線型卷積神經網絡的缺點,它的特點是容易優化,并且能夠通過增加網絡的深度來提高準確率。其內部的殘差塊使用了跨層連接(Shortcut Connection),緩解了在深度神經網絡中增加深度帶來的梯度消失問題,如圖3所示。

Figure 3 Shortcut connection in ResNet圖3 殘差網絡中的跨層鏈接
由于低層的特征圖具有目標位置準確但語義信息少的特點,而高層的特征圖雖然具有更多的語義信息,但目標位置信息不準確。特征金字塔網絡可以根據單尺度的輸入圖像構建網絡內的特征金字塔,具體實現方式為自底向上的連接、自頂向下的連接以及橫向連接的網絡結構,將不同層的特征圖融合到一起,獲得更加豐富的信息,用來探測不同尺度的物體,其結構如圖4所示。

Figure 4 Feature pyramid network圖4 特征金字塔網絡結構圖
自底向上的過程代表卷積神經網絡的前向傳播,本文選用ResNet的C3、C4、C5層特征圖,利用卷積核為3×3,步長為1的卷積操作對C5層特征圖進行處理后得到FPN的P5層。自頂向下的連接是一個上采樣的過程。橫向連接的作用是把上采樣的結果和卷積神經網絡前向傳播過程生成的特征圖相加,即將卷積核為1×1,步長為1的卷積操作對C4層進行處理后的結果與P5層上采樣結果相加,然后在此基礎上使用卷積核為3×3,步長為1 的卷積運算進行處理,得到FPN的P4層。以此類推產生P3層。P6層是由P5層經過卷積核為3×3,步長為1卷積運算處理后得到的,同理可得P7層。FPN的結構可以從單尺度輸入圖像中構建多尺度的特征圖,不同尺度的特征圖可被用于不同尺寸的目標檢測,本文中所有特征金字塔層級的通道數C皆為256。
假設GT的坐標為G(x1,y1,x2,y2),其中(x1,y1)和(x2,y2)分別代表GT的左上角和右下角的坐標。首先基于步長(為2l)將GT映射至特征金字塔中對應的l層。映射到第l層的GT的坐標記為G′(x′1,y′1,x′2,y′2),G′和G中坐標的映射關系為:
x′1=x1/2l,y′1=y1/2l
(1)
x′2=x2/2l,y′2=y2/2l
(2)
c′x=x′1+(x′2-x′1)/2
(3)
c′y=y′1+(y′2-y′1)/2
(4)
其中(c′x,c′y)表示GT的中心點坐標。定義圖像正樣本區域為特征圖上GT的中心部分區域,相當于GT按一定比例收縮后的區域,記作Rp,其邊界框坐標為(x″1,y″1,x″2,y″2):
x″1=c′x-((x′2-x′1)δ1)/2
(5)
y″1=c′y-((y′2-y′1)δ1)/2
(6)
x″2=c′x+((x′2-x′1)δ1)/2
(7)
y″2=c′y+((y′2-y′1)δ1)/2
(8)
其中,δ1指正樣本區域相對于GT的收縮系數,正樣本區域內的每個像素被標記為1,作為網絡訓練時的正樣本。如果某一點(i,j)落入正樣本區域,那么該點將負責檢測其對應的目標。再引入另一個收縮系數δ2來定義忽略區域,記為Ri,忽略區域即為GT在δ2收縮系數下覆蓋的區域減去正樣本區域后的部分,忽略區域不參與網絡訓練。剩下的區域即為負樣本區域,記為Rn。實驗中,δ1取 0.3,δ2取0.4。
2.3.1 目標分類
目標分類子網絡是一個小型的全連接網絡FCN(Fully Connected Network)[19],連接到特征金字塔的每一層。對特征金字塔某一層輸出的特征圖(H×W×256),使用4個3×3×256的卷積核進行處理,每一層卷積層之后都加入ReLU激活函數處理卷積層的輸出,最后使用1個3×3×K的卷積核卷積并通過Sigmoid激活函數得到網絡的最終輸出。最后的輸出為K通道的置信度熱圖,大小為H×W,其中K為類別數,每個通道都是1個二進制掩碼,表示是否為某一類別以及類的可能性,并對最后輸出的特征圖進行逐像素分類。
2.3.2 邊界框回歸
與目標分類子網絡平行,另一個小型的FCN用于邊界框回歸。同樣是用4個3×3×256的卷積核對特征圖進行處理,同樣也在每一層卷積層之后加入ReLU激活函數處理卷積層的輸出,不同的是最后使用的是1個3×3×4的卷積核卷積并使用Sigmoid激活函數得到網絡最終的輸出。每個位置(i,j)預測4個位置偏移量。這4個位置偏移量即為正樣本區域內的每個像素與GT的相對偏移量(Δω1,Δh1,Δω2,Δh2),其中:
Δω1=(2l*i-x1)/W
(9)
Δh1=(2l*j-y1)/H
(10)
Δω2=(x2-2l*i)/W
(11)
Δh2=(y2-2l*h)/H
(12)
首先將特征圖中的某一點(i,j)映射至輸入圖像,然后計算其與GT的左上角和右下角2點的偏移量,最后將結果歸一化到[0,1]。在邊界框回歸階段,只對正樣本區域內的點進行回歸,不關注負樣本區域(Rn)和忽略區域(Ri)的點。分類分支與回歸分支結構相同,但二者參數相互獨立。
2.3.3 中心性預測
本文提出了一個中心性預測分支,與邊界框回歸共享網絡參數,中心性表示正樣本區域內的點(i,j)距離GT的中心點(c′x,c′y)的遠近程度。中心性的計算公式如式(13)所示:
(13)
測試階段目標檢測標注的最終得分是由分類得分和中心性相乘之后的結果。因此,對于遠離GT中心點的位置產生的預測框,中心性預測可以降低這些預測框的得分。如此便可以通過非極大值抑制NMS(Non Maximum Suppression)[20]過程將質量較差的預測框過濾掉,提高目標檢測算法的性能。
損失函數 Focal Loss提出的目的是解決分類問題中類別不均衡、分類難度差異較大的問題。在本文的目標檢測算法中,由于正樣本區域僅僅占據特征圖的很小一部分,為了避免網絡訓練過程中產生嚴重的正負樣本不均衡的問題,使用Focal Loss作為分類損失函數,其函數表達式為:
FL(pt)=-αt(1-pt)γlog(pt)
(14)
其中,αt用來調節正負樣本在訓練過程中的重要性。Focal Loss的目的是讓所有的正負樣本都參與到模型訓練之中,通過αt調節正負樣本損失值的比重來緩解正負樣本不均衡的問題。γ為調制因子,用來降低容易分類的樣本在模型中所占的比重。例如,1個樣本被錯誤地分類,那么置信度pt一般不高,屬于難分類的樣本,此時1-pt的值趨向于1,對損失函數的值影響不大;若pt趨向于1,屬于容易分類的樣本,1-pt的值趨向于0,此時容易分類樣本的權重被大大降低。
對于回歸問題的損失函數,不同于基于先驗框的目標檢測算法,本文算法直接回歸正樣本區域內的點(i,j)與真實框的相對偏移量,損失函數的選擇也要適應目標的尺度變化,本文采用IOU(Intersection Over Union) Loss[21],其數學表達式為:
(15)

中心性預測分支采用L2范數作為損失函數,其函數表達式為:
(16)
其中,i和j分別表示正樣本區域內某點的橫坐標與縱坐標,c′x和c′y分別表示真實框中心點的橫坐標與縱坐標。
實驗采用KITTI數據集中的2D目標檢測數據。其中目標類別包含Car、Van、Truck、Tram、Pedestrian、Person_sitting、Cyclist、Misc和DontCare。本文的實驗目的是對交通場景中的車輛、行人和騎行者進行識別,不關注車輛的類別和行人姿勢的差異。因而為了適應實驗的需求,將Van、Truck、Tram標記為Car,與Car類別合并,將Person_sitting標記為Pedestrian,與Pedestrian類別合并,忽略與交通場景無關的Misc類和DontCare類。由于轉化后的KITTI數據集中,目標類Car所占比重過大,為了數據集中各類別間的平衡,本次實驗通過關鍵詞搜索“行人”“道路”和“車輛”從YFCC100M數據集中收集了1 000幅分辨率較高的圖像進行標注,并將標注后的圖像加入轉化后的KITTI數據集中,從而更好地展示改進算法的效果。根據實驗的需要將KITTI數據集(包含自行收集標注的數據集)轉化成MSCOCO(MicroSoft Common Objects in COntext)數據集的格式,最終的實驗數據集有3個目標類別,分別為Car、Cyclist和Pedestrian。數據集中總共有8 482幅圖像,將數據集中的所有圖像按照8∶1∶1的比例劃分為訓練集、驗證集和測試集。其中訓練圖像6 786幅,驗證圖像和測試圖像各848幅。
實驗在GPU型號為NIVID GeForce GTX 1080Ti(×2)的服務器上進行,操作系統為64位Ubuntu16.04,配置CUDA8.0, cuDNN6.0。基于以上配置使用深度學習框架PyTorch搭建運行環境。根據遷移學習的思想,本文實驗使用在ImageNet上的預訓練模型對本文模型進行初始化,利用PyTorch的分布式訓練模式進行訓練,Batchsize設置為8,迭代次數為90 000,使用隨機梯度下降優化算法,初始學習率為0.001,權重衰減系數為0.000 1。
交并比IOU、平均準確率AP(Average Precision)、平均準確率均值mAP(mean Average Precision)等是目標檢測算法中的重要概念。交并比是指預測框與真實框的交集和并集之比,AP是查準率Precision和查全率Recall的關系曲線與坐標軸之間所圍的面積,查準率和查全率計算公式為:
(17)
(18)
其中,TP(True Positive)表示針對某一目標類,被正確分類的正樣本的數目,FP(False Positive)表示被錯誤分類的負樣本的數目,FN(False Negtive)表示被錯誤分類的正樣本的數目。mAP即為各類目標的平均準確率的均值。本文采用在指定IOU閾值下的mAP作為實驗結果的評價指標,實驗可分為以下3個部分:
(1)算法中采用的各種改進方法的效果。
為了驗證本文算法中所采用的各種措施對于改進目標檢測模型準確度的效果,進行了3次實驗,如表1所示。其中,實驗1為在主干網絡為ResNet-101-FPN的條件下采用逐像素分類的方式進行目標檢測,檢測模型具有目標分類和邊界框回歸2個子網絡。實驗2為在目標分類子網絡上增加1個中心性預測分支,與目標分類子網絡共享網絡參數。與實驗1對比可發現,在目標分類子網絡上增加中心性預測分支后,mAP上升了1.2%。實驗3為中心性預測分支與邊界框回歸子網絡共享網絡參數,由表1可知,對比沒有中心性預測分支的實驗1,mAP上升了1.7%,相比于實驗2,mAP上升了0.5%。
(2)不同的目標檢測算法在本文數據集上的檢測效果對比。
利用本文數據集對Faster R-CNN、YOLOv3、SSD、RetinaNet和本文改進的目標檢測算法的效果進行測試,結果如表2所示。

Table 2 Detection effects of different algorithms on the dataset in this paper表2 不同算法在本文數據集上的檢測效果
本文改進的算法在檢測準確度方面不僅高于單階目標檢測算法YOLOv3、SSD,而且mAP比二階段目標檢測算法Faster R-CNN的高2.7%。相比于RetinaNet模型,在同為單階目標檢測模型且主干網絡完全相同的情況下,改進算法相較于RetinaNet目標檢測算法,mAP提升了1.9%。由表2可知,在本文數據集中圖像尺寸為1242×375的情況下,RetinaNet的推理時間為101 ms,改進算法的推理時間為108 ms,對比兩者的推理時間可知,本文改進算法的推理速度稍遜于RetinaNet算法的,但仍能達到交通場景下目標檢測實時性的要求。
(3)不同的目標檢測算法在公開數據集MSCOCO上的檢測效果對比。
為了進一步驗證本文改進算法的效果,利用Faster R-CNN、YOLOv3、SSD、RetinaNet和本文改進算法在公開數據集MSCOCO上進行測試,測試結果如表3所示。改進算法在檢測準確度方面優于其他算法,比Faster R-CNN的mAP高3.8%,比RetinaNet的mAP高1.6%。在推理時間方面,改進算法的推理時間遠小于Faster R-CNN算法的推理時間,略大于RetinaNet算法的推理時間,滿足交通場景下實時檢測的要求。

Table 3 Detection effects of different algorithms on MSCOCO dataset表3 不同算法在MSCOCO數據集上的檢測效果
部分目標檢測效果圖如圖5所示。由圖5可知,在復雜的城市街景中,改進算法可以準確地識別出車輛、行人和騎行者,在車輛較多的情況下也能檢測出遮擋不超過50%的目標,在道路寬敞、環境空曠的道路環境下,改進算法能夠較好地識別出遠方較小的車輛目標。

Figure 5 Some detection results圖5 部分檢測效果圖
在RetinaNet目標檢測算法的基礎上,本文提出了一種基于anchor-free的單階目標檢測算法,利用逐像素預測的方法,直接預測目標類別和位置。相比于基于anchor的原RetinaNet目標檢測算法,本文算法減少了與anchor有關的超參數的設計,也避免了由于anchor自身設計帶來的網絡泛化能力減弱等問題。同時,算法中提出的中心性預測分支,通過衡量距離GT中心位置的遠近,降低偏離GT中心的位置所得預測框的得分,從而使得質量較低的預測框在非極大值抑制的過程中被過濾掉。通過在本文數據集以及公開數據集MSCOCO上的實驗,表明本文改進的目標檢測算法能夠在交通場景中對車輛、行人和騎行者實現更好的識別。