劉 琛,王江濤
(淮北師范大學 物理與電子信息學院,安徽 淮北 235000)
持續(xù)的交通機動化導致全球道路相關傷亡人數(shù)持續(xù)增加。為了應對這種局面,各國政府正把重點放在安全和安全方面在交通中遵守行為。然而,對于摩托車的安全駕駛規(guī)范,安全的全面的頭盔使用的標準十分重要。我國城市道路阡陌交通,在許多城市若路途較近,人們多會選擇摩托車作為代步工具上下班以及接送孩子上下學。同時,如今的外賣產(chǎn)業(yè)新起,外賣員多是駕駛摩托車進行配送。在這些情況下摩托車駕駛?cè)伺宕黝^盔對預防傷害,保護他人和自身安全至關重要。因此,將人工智能應用于道路安全中來檢測摩托車手是否佩戴頭盔有十分重要的意義。
與傳統(tǒng)的機器學習和圖像處理方法相比,基于深度學習的物體檢測網(wǎng)絡通常具有更加精準的識別率和更快的識別速度,近年來,目標檢測方向的深度學習算法可以大體上劃分為兩階段(two-stage)算法和單階段(one-stage)算法。Faster R-CNN[1]是兩階段算法的代表網(wǎng)絡。此網(wǎng)絡先通過一些預處理方法在預測圖片上生成若干目標候選框,再使用一些常用的卷積神經(jīng)網(wǎng)絡如VGG-16[2]訓練參數(shù)進行樣本的分類。一般使用兩階段算法的網(wǎng)絡進行訓練準確率更高,但計算成本較大,所以影響了網(wǎng)絡的訓練速度。后來推出的如YOLO[3],SSD[4]等單階算法目標檢測方法是直接將目標邊框定位的問題轉(zhuǎn)化為回歸問題處理能進行端到端檢測,沒有候選框,速度快,實時性好,但是犧牲了一定的準確率。因此成為當下目標檢測的主流方法。RFB(Receptive Field Block)Net[5]就是一種以SSD為基礎網(wǎng)絡進行改進的目標檢測模型。該模型在SSD的基礎網(wǎng)絡構架中引入RFB模塊,這一模塊模擬了人類視覺的感受野模型,增強了網(wǎng)絡對特征的提取能力。
本文以RFB Net模型為基礎,用VGG-16為基礎網(wǎng)絡的RFB網(wǎng)絡檢測視頻中的摩托車手佩戴頭盔情況,在RFB Net中使用了余弦衰減學習率來優(yōu)化網(wǎng)絡的學習能力。通過對自行拍攝收集數(shù)據(jù)集進行測試,可以發(fā)現(xiàn)本文RFB Net對摩托車手佩戴頭盔的檢測效果在保證速度的前提下,準確率得到了有效的增高[6]。
SSD網(wǎng)絡使用了尺寸大小逐層遞減的特征提取層,可以產(chǎn)生不同尺度下檢測的預測值結果,使用這些尺度下的檢測結果來預測目標的類別以及物體與默認邊界框的偏移量,并且通過NMS的方法來產(chǎn)生最終的檢測框。SSD網(wǎng)絡會將輸入的圖像歸一化為300*300,基礎的訓練網(wǎng)絡一般使用VGG-16 Net,基礎網(wǎng)絡結構有六個特征層依次為Conv4_3、Fc7、Conv6_2、Conv7_2、 Conv8_2、Conv9_2[7].網(wǎng)絡在訓練過程中會在每一特征層上檢測特定尺寸的預測目標。如圖所示為SSD網(wǎng)絡結構圖。
圖1 SSD網(wǎng)絡結構圖Fig.1 SSD network structur
SSD中的默認框類似于兩階段網(wǎng)絡中的錨點機制,而且在網(wǎng)絡的不同層中都存在著相應尺度的默認框。對于SSD中的m個特征圖的默認框尺寸gi如公式(1)所示:
(1)
(2)
通過上述機制,對于每個特征單元就 都會產(chǎn)生不同形狀和尺寸的默認框[8]。
RFB Net的基本網(wǎng)絡框架是SSD網(wǎng)絡,并在網(wǎng)絡中加入了RFB模塊,RFB Net的結構圖如圖2所示。
圖2 RFB Net結構圖Fig.2 RFB net structure
群體感受野是人類視覺研究學中的一種概念,有研究發(fā)現(xiàn)它的范圍大小與離心率在視網(wǎng)膜的定位圖中呈正比關系。這中機制突出了在視網(wǎng)膜中心區(qū)域目標的重要性。RFB模塊模擬了人類視網(wǎng)膜的這一能力,加強了輕量級卷積神經(jīng)網(wǎng)絡學習深層特征的能力。
RFB Net結構繼承了原始的SSD中尺度遞減的卷積層。并用新設計的RFB模塊將SSD額外增加層中的兩層替換。RFB模塊主要由多分支卷積層和空洞卷積層構成[9]。
(1)多分支卷積層
RFB模塊采用了多分支的結構,在每個分支中分別采用不同大小的卷積核卷積。并通過瓶頸(bottle- neck)結構減少了訓練參數(shù),使網(wǎng)絡更輕量化。模塊中還運用了Res-Net[10]中的直連結構,解決了網(wǎng)絡層數(shù)過深時可能導致的梯度發(fā)散問題。而RFB-S模塊的分支更多而且卷積核尺寸更小,類似于視網(wǎng)膜中較小的感受野,使模塊更接近人類的淺層視網(wǎng)膜模型。兩個網(wǎng)絡模塊的結構如圖3中(a)和(b)所示。
圖3 RFB和RFB-S結構圖Fig.3 structure of RFB and rfb-s
(2)空洞卷積
空洞卷積本質(zhì)上是在普通卷積運算上的一種推廣。在空洞卷積中有一個參數(shù),可通過此參數(shù)來擴張卷積核并用0填充卷積核中多出的部分[11]。這個參數(shù)代表卷積核的膨脹系數(shù)??斩淳矸e實際卷積核大小如公式(3)所示:
N=n+(n-1)(r-1)
(3)
式中n為原始的卷積核大小,r為空洞卷積參數(shù)及膨脹系數(shù)。空洞卷積的運算方法是通過卷積核與設定間隔的像素點做相應的乘法運算。這種卷積方法在沒有增加過多復雜設計的情況下提高了感受野的范圍,RFB模塊正是通過空洞卷積層來模擬實現(xiàn)了人類視覺皮質(zhì)中離心率的效果。
在卷積神經(jīng)網(wǎng)絡的訓練過程中,學習率的設定是一個十分重要的因素[12]。原始的RFB網(wǎng)絡使用的是階段下降的學習率,訓練效果較為一般,本文通過改進使用了余弦衰減的學習率進行訓練,使得學習率下降更加平緩和均勻,取得了不錯的訓練效果。余弦衰減就是通過余弦的相關形式對學習率進行衰減,此種學習率的衰減圖和余弦函數(shù)相似。學習率的更新機制如公式(4)所示:
(4)
式中l(wèi)_rate是初始設定的學習率的。g_step表示衰減計算過程中的全局步數(shù)。d_steps為衰減步數(shù)。l_min為設定的最小學習率。如圖4所示,圖中曲線便是一條標準的余弦衰減曲線,學習率從初始值光滑下降到最低的學習率后維持不變。余弦衰減的學習率的下降十分平緩,不會產(chǎn)生較大的波動,對于一些網(wǎng)絡的訓練有意想不到的提升。
圖4 余弦衰減曲線Fig.4 Cosine attenuation curve
實驗使用Ubuntu16.04操作系統(tǒng),GPU為NVIDIA GTX 1070,運行內(nèi)存為8G,選擇Pytorch1.1.0為深度學習框架。實驗中使用的數(shù)據(jù)集是自行拍攝收集的,內(nèi)容為安徽省淮北市市區(qū)道路上的一些行駛的摩托車輛,車輛為不同類型的電瓶車和摩托車,拍攝的圖像像素大小為1 280*720,輸入網(wǎng)絡訓練時統(tǒng)一歸一化為300*300.實驗中選取的樣本包括了較遠車輛、部分遮擋和車輛行駛較快圖像模糊以及各角度的情況。并收集了多云以及小雨下的天氣環(huán)境,為本研究中的算法訓練、驗證和測試奠定了基礎[13]。部分角度下收集的圖像如圖5所示,圖(a)為本側(cè)車道行進車輛,(b)為對側(cè)車道行駛車輛,(c)為本側(cè)車道使出車輛。
圖5 數(shù)據(jù)集實例Fig.5 Data set example
在訓練網(wǎng)絡的過程中,對訓練集進行了圖像旋轉(zhuǎn)變換和增加噪聲等數(shù)據(jù)增廣的預處理方法,來解決訓練集的樣本數(shù)據(jù)不足和測試時可能產(chǎn)生的過擬合情況,如圖6所示。
圖6 數(shù)據(jù)集增廣Fig.6 Data set expansion
本文任務實為分類任務,本次實驗分別標注了摩托車、佩戴頭盔的摩托車手頭部以及未佩戴頭盔的車手頭部。通過對這三種目標的預測可以大大降低路邊停放車輛以及行人對訓練的干擾。提高了網(wǎng)絡的實用性。使用 VGG16 作為基礎網(wǎng)絡,并載入SSD網(wǎng)絡的預訓練參數(shù)進行訓練。訓練完成后分別使用原始的RFB Net和本文改進后的RFB Net的訓練參數(shù)進行驗證和測試。實驗中的訓練圖片數(shù)量為500張,測試圖片為50張,訓練數(shù)據(jù)不參與測試。圖7是修改學習率后訓練迭代8 700次的訓練損失曲線。
圖7 訓練損失曲線Fig.7 Training loss curve
訓練完畢后對網(wǎng)絡進行測試得出三種目標的AP值和MAP值并與原始的SSD Net和RFB Net的上述指標進行記錄對比,并將修改后的網(wǎng)絡稱為COS-RFB Net,其結果如表1所示。通過表1可以觀察到對檢測摩托車手是否佩戴了盔的AP值都有明顯提高,對摩托車的檢測也有輕微提高。整體而言,本文改進的RFB模型相比原始RFB網(wǎng)絡模型在MAP上有4%~5%的提升。
表1 不同識別算法性能對比
為了更清晰的展示改進后的訓練效果,圖8給出了部分數(shù)據(jù)集在改進前后的測試結果對比。檢測目標過程中摩托車使用藍色框進行標注、佩戴頭盔的摩托車手頭部使用綠色框進行標注以及未佩戴頭盔的車手頭部使用紅色框進行標注。通過圖8對比可看出,在原始的RFB-Net訓練結果下測試(a)左側(cè)較遠處的摩托車手的頭、(b)中的未佩戴頭盔的車手和(c)中較遠目標的車輛都有一定程度的漏檢。通過改進后的RFB-Net結果都成功的檢測出了目標物體。其中圖(c)目標較小,在圖片右上方給出放大目標。可見,使用余弦衰減學習率對網(wǎng)絡進行改進,取得了比較明顯的效果,有效減少了漏檢的情況,體現(xiàn)出了改進網(wǎng)絡的優(yōu)越性。
圖8 兩種網(wǎng)絡的測試結果對比Fig.8 Comparison of test results of two networks
針對道路摩托車手佩戴頭盔規(guī)范行駛問題,為了通過深度學習來輔助道路安全。本文采用RFB檢測算法實現(xiàn)了摩托車手是否佩戴頭盔的檢測,并通過使用余弦衰減的學習率進行改進,取得了更高的檢測準確率,基本滿足了對道路摩托車手佩戴頭盔情況的檢測要求。