李雷孝,孟 闖+,林 浩,高 靜,王 慧
(1.內(nèi)蒙古工業(yè)大學 數(shù)據(jù)科學與應(yīng)用學院,內(nèi)蒙古 呼和浩特 010080;2.內(nèi)蒙古自治區(qū)科學技術(shù)廳內(nèi)蒙古自治區(qū)基于大數(shù)據(jù)的軟件服務(wù)工程技術(shù)研究中心,內(nèi)蒙古 呼和浩特 010080; 3.天津理工大學 計算機科學與工程學院,天津 300384;4.內(nèi)蒙古農(nóng)業(yè)大學計算機與信息工程學院,內(nèi)蒙古 呼和浩特 010011)
目前機動車輛駕駛員檢測方法主要分為傳感器檢測與計算機視覺檢測兩種方法?;趥鞲衅鞯陌踩珟z測方法[1,2]是在安全帶卡座或者駕駛員座位中安裝壓力傳感器,通過判別壓力傳感器數(shù)值大小判斷駕駛員是否佩戴安全帶。此方法存在弊端,當駕駛員事先將安全帶卡扣扣好再坐到座椅上時,會錯誤判別駕駛員已佩戴安全帶。對于未安裝傳感器的車輛不能進行安全帶檢測,不具有普遍適用性。基于計算機視覺的檢測方法可劃分為傳統(tǒng)圖像處理檢測方法與基于機器學習、深度學習[3,4]的檢測方法。傳統(tǒng)的圖像處理方法一般通過灰度積分投影法、霍夫直線檢測法等,利用安全帶長直線特點或者安全帶反光等特性檢測駕駛員是否佩戴安全帶。近些年隨著機器學習、深度學習的興起與快速發(fā)展,基于機器學習、深度學習的駕駛員安全帶檢測方法已成為主流。如何提高檢測準確率、適應(yīng)復(fù)雜的使用場景已成為如今研究的重點。
傳統(tǒng)安全帶檢測方法中[5,6],使用灰度積分投影法進行安全帶檢測。利用安全帶反光的特性,通過對二值化后的圖像進行灰度積分投影得到安全帶特征點的位置坐標,判別駕駛員是否佩戴安全帶。這種方法受光照強度影響較大,駕駛員衣領(lǐng)與頭發(fā)也會對實驗結(jié)果造成影響,魯棒性不高。有學者利用安全帶邊緣具有兩條長直線的特點,利用霍夫直線檢測與邊緣檢測相結(jié)合的方法識別安全帶區(qū)域。這種方法易受圖像清晰度等影響,當駕駛員衣服圖案中有類似長直線時,會對實驗結(jié)果造成干擾,實際檢測中準確率不高。
基于機器學習、深度學習的目標檢測領(lǐng)域中,田坤等[7]設(shè)計了一種基于YOLO(you only look once)網(wǎng)絡(luò)和極限學習機(extreme learning machines,ELM)相結(jié)合的安全帶檢測模型。通過ELM訓(xùn)練了一個安全帶二元分類器,但要求分類的圖像需要具有明顯的分類特征,在對模糊的駕駛員圖片檢測中并不能得到較高的準確率。吳天舒等[8]提出了一種YOLO網(wǎng)絡(luò)與語義分割網(wǎng)絡(luò)相結(jié)合的安全帶檢測方法。首先通過YOLO網(wǎng)絡(luò)快速定位主駕駛區(qū)域,后利用語義分割網(wǎng)絡(luò)得到安全帶的連通區(qū)域,判斷連通域面積大小從而判別駕駛員是否佩戴安全帶。這種方法駕駛員衣服圖案會對實驗結(jié)果造成干擾?;粜堑萚9]提出了一種自定義的深度卷積神經(jīng)網(wǎng)絡(luò)檢測安全帶的方法。首先通過SVM(support vector machine)分類器確定車牌位置進而確定車窗位置,再通過Alexnet深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練了一個二元分類器完成對安全帶的檢測工作。這種方法步驟繁瑣,檢測效率較低。詹益俊等[10]提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的安全帶檢測方法。通過改進網(wǎng)絡(luò)架構(gòu),減輕級聯(lián)網(wǎng)絡(luò)框架,減小網(wǎng)絡(luò)計算量,滿足實時性檢測駕駛員安全帶的需求?;跈C器學習、深度學習的檢測方法相比于傳統(tǒng)的圖像處理檢測方法,容錯率更高,準確率也相應(yīng)提升。
針對目前車窗檢測步驟繁瑣、駕駛員區(qū)域不能精細化截取、安全帶檢測易受光照、圖片清晰度等方面影響的缺點,本文提出了一種基于YOLO v3[11,12]和Faster R-CNN[13]的安全帶單類別目標檢測模型。首先基于YOLO v3網(wǎng)絡(luò)設(shè)計了車窗檢測模型與車窗-駕駛員檢測模型,可準確定位駕駛員區(qū)域。再通過圖像增強操作,有效解決了圖片清晰度或者光照強度對安全帶檢測的影響。最后通過基于Faster R-CNN的安全帶單類別目標檢測模型進行安全帶檢測。在實際測試中,本模型安全帶檢測準確率可達到96.0%,同時檢測速率較高。
基于YOLO v3和Faster R-CNN的安全帶單類別目標檢測模型主要分為駕駛員區(qū)域檢測模型與安全帶檢測模型兩部分。模型總體設(shè)計流程如圖1所示。
圖1 模型總體設(shè)計流程
對于駕駛員區(qū)域檢測模型,將其細分為車窗檢測模型與車窗-駕駛員檢測模型。為了簡化駕駛員的定位過程,模型不定位車輛,而是直接定位車窗。因車輛前擋風玻璃類似于長方形,特征較為明顯,直接訓(xùn)練車窗檢測模型便可以得到較高的準確率。
在對駕駛員的檢測及定位過程中,首先截取上一步通過車窗檢測模型檢測出的車窗圖片作為訓(xùn)練集圖片。在車窗圖片中標注駕駛員區(qū)域,訓(xùn)練車窗-駕駛員檢測模型。相比于通過幾何關(guān)系裁取車窗圖片截取駕駛員區(qū)域的方法,本方法可減少外界多余的干擾信息,例如可減少車窗邊框等冗余信息對后續(xù)安全帶檢測所造成的影響,容錯率更高,適應(yīng)性更強。
最后通過車窗-駕駛員檢測模型檢測到駕駛員圖片,并送入到安全帶檢測模型中檢測安全帶,完成對駕駛員安全帶的檢測工作。
本文基于YOLO v3網(wǎng)絡(luò)實現(xiàn)了對駕駛員區(qū)域的檢測與精細化定位過程。模型采用單步回歸的方式進行目標檢測,訓(xùn)練和檢測過程都是端到端的,整個網(wǎng)絡(luò)僅使用一個CNN網(wǎng)絡(luò)直接預(yù)測目標的類別和位置。檢測過程對整張圖片做卷積,使檢測目標具有更大的視野,且不容易對背景造成誤判。
主干特征提取網(wǎng)絡(luò)采用Darknet-53的網(wǎng)絡(luò)架構(gòu),包含53個卷積層。借鑒殘差網(wǎng)絡(luò),在一些層之間設(shè)置了快捷鏈路。模型預(yù)測過程中,利用多尺度特征進行對象檢測。首先將圖片調(diào)整成416*416*3的格式大小輸入到CNN卷積層。經(jīng)過一些列卷積操作,分別通過32倍下采樣、16倍下采樣、8倍下采樣得到不同尺度大小的卷積核進行預(yù)測。經(jīng)過32倍下采樣的特征圖大小為13*13,特征圖感受野大,適合檢測圖像中尺寸較大的對象。經(jīng)過16倍下采樣后的特征圖具有中等尺度的感受野,適合檢測尺寸中等的對象。經(jīng)過8倍下采樣的特征圖感受野最小,適合檢測小尺寸的對象。高層級特征圖語義豐富,精度低。低層級特征圖語義不豐富,精度高。通過跨層連接,輸出特征圖既有較高的精度,又具有較豐富的語義含義。對于3種不同的下采樣尺度設(shè)定3種先驗框,通過K-means聚類得到先驗框的尺寸,總共聚類出9種尺寸的先驗框。駕駛員區(qū)域檢測模型網(wǎng)絡(luò)架構(gòu)圖如圖2所示。
圖2 駕駛員區(qū)域檢測模型網(wǎng)絡(luò)架構(gòu)
模型損失函數(shù)誤差來源于3部分,分別為定位損失誤差、置信度損失誤差與分類損失誤差。模型預(yù)測過程中將整張圖片劃分成s*s個網(wǎng)格,每個網(wǎng)格產(chǎn)生B個候選框anchor box。對于第i個網(wǎng)格中第j個anchor box,需要對這個anchor box產(chǎn)生的bounding box求出中心坐標誤差、寬高誤差、置信度誤差、分類誤差。
(1)
(2)
(3)
2.2.1 圖像增強處理
交通攝像頭抓取到的圖片中駕駛員區(qū)域相對較小,分辨率低,且易受光照強弱等外界因素干擾,駕駛員區(qū)域往往不清晰。為提高安全帶區(qū)域的對比度,首先對駕駛員區(qū)域進行圖像增強[14]操作。
截取的駕駛員區(qū)域圖像中,當光照強時圖像整體亮度偏高,光照條件不足時圖像整體亮度偏暗。過強與過弱的光照條件會使圖像中某些像素點色深相近,安全帶區(qū)域與周圍區(qū)域?qū)Ρ榷炔⒉桓摺V狈綀D均衡化[15]使用累積分布函數(shù),原始圖像根據(jù)概率密度轉(zhuǎn)化成相應(yīng)的灰度級圖像。通過對圖像進行非線性拉伸,將像素值映射到0到255之間,可將圖像中的像素值均勻分布,使一定范圍內(nèi)像素值的數(shù)量大致相等。此方法可顯著提高駕駛員安全帶與周圍區(qū)域的對比度。映射方法如式(4)所示
(4)
其中,nj表示圖像中灰度級為j像素點的個數(shù),n為像素點總個數(shù),k為灰度級等級總數(shù)。
經(jīng)過灰度化、直方圖均衡化處理后的圖像,受圖片分辨率大小的影響,小分辨率圖像存在較多噪點。本文采用高斯濾波器進行去噪處理,選用3*3的高斯核對圖片進行卷積操作,平滑處理降低噪聲,減少圖像中噪點。因處理二維圖像,故采用二維高斯分布函數(shù)式定義卷積核數(shù)值大小。 (x,y) 表示以中心點為原點的位置坐標,σ為方差,計算公式如式(5)所示
(5)
假設(shè)卷積核的大小為 (2k+1)*(2k+1), 則卷積核各個元素值計算如式(6)所示
(6)
圖像增強處理過程如圖3所示。
圖3 圖像增強處理過程
2.2.2 安全帶單類別目標檢測
Faster R-CNN雙階段網(wǎng)絡(luò)相比于YOLO等單階段的目標檢測網(wǎng)絡(luò),檢測目標更加精準。安全帶類別屬于小目標,F(xiàn)aster R-CNN在小目標檢測上具有良好的表現(xiàn),因此基于Faster R-CNN網(wǎng)絡(luò)進行安全帶的目標檢測工作。Faster R-CNN是由何凱明等于2015年提出的目標檢測算法。Faster R-CNN網(wǎng)絡(luò)分為兩部分,一是Region Proposal Network(RPN)區(qū)域生成網(wǎng)絡(luò),二是Fast R-CNN網(wǎng)絡(luò)。其中RPN網(wǎng)絡(luò)包括proposals和conv layers層,F(xiàn)ast R-CNN包括卷積層、ROI pooling及全連接層等部分。
檢測過程中,圖片被調(diào)整成800*800*3的格式大小。首先將整張圖片輸入到卷積層進行卷積操作,提取圖片的Feature maps。將Feature maps輸入到RPN建議網(wǎng)絡(luò)得到候選框的特征信息。最后將目標框和圖片的特征向量輸入到ROI pooling層。為了滿足對不同大小圖片的檢測,ROI pooling層將截取到的不同的小的特征層區(qū)域調(diào)整到一樣大小,再通過分類與回歸網(wǎng)絡(luò)判斷截取到的圖片中是否包含目標,并對建議框進行調(diào)整,完成目標檢測的任務(wù)。基于Faster-RCNN的安全帶檢測流程如圖4所示。
圖4 基于Faster R-CNN的安全帶檢測流程
傳統(tǒng)的基于深度學習的安全帶檢測模型的檢測類別為雙類別,類別有安全帶和無安全帶兩種。在制作數(shù)據(jù)集時,需同時制作有安全帶與無安全帶兩種數(shù)據(jù)集,工作量較大。對于駕駛員未佩戴安全帶的圖片,因駕駛員身體無安全帶區(qū)域并沒有明顯特征,實際檢測效果較差。
本文設(shè)計了一種基于Faster-RCNN的安全帶單類別目標檢測模型。模型訓(xùn)練中采用有安全帶圖片作為數(shù)據(jù)集進行訓(xùn)練,將安全帶雙類別分類問題轉(zhuǎn)換為單類別目標檢測問題處理。在實際檢測過程中,相比于雙類別分類模型,檢測速率更高,準確率也相應(yīng)提升。安全帶單類別目標檢測流程如圖5所示。
圖5 安全帶單類別目標檢測流程
對于駕駛員佩戴安全帶的圖片,模型正確檢測出安全帶作為正確檢出結(jié)果。對于駕駛員未佩戴安全帶的圖片中,模型未檢測出安全帶作為正確檢出結(jié)果。
實驗中訓(xùn)練模型及測試所使用的圖片為道路交通監(jiān)控攝像頭所拍攝的車輛圖片,數(shù)據(jù)集來源于北京理工大學的BIT-Vechicle Dataset數(shù)據(jù)集。在模型的訓(xùn)練過程中,采用LabelImg軟件進行人工圖像標注。
實驗采用Intel Core i7-9700處理器*8,16 G內(nèi)存,NVIDA GeForce RTX2060顯卡,CUDA10.1,CUDNN7.5深度神經(jīng)網(wǎng)絡(luò)加速庫,Windows 10操作系統(tǒng),TensorFLow2.1深度學習框架。
本模型使用了幾個評價指標衡量模型效果的好壞,分別為準確率(AC)、平均置信度(AVC)與檢測速率(DR)。AC反應(yīng)模型檢測準確率的高低。AVC表示檢測出的所有目標的平均置信度,反應(yīng)模型可信度的高低。DR反應(yīng)模型檢測速度的快慢,衡量標準為幀(s-1)。
AVC的計算公式如式(7)所示,即求取所檢測樣本的平均置信度,n表示檢測樣本總數(shù)量,xi表示樣本i的置信度
(7)
文中定義TN、FN、TP、FP。TN(true number)為正樣本的總數(shù)量,F(xiàn)N(false number)為負樣本的總數(shù)量,TP(true postitve)為正樣本中預(yù)測為正樣本的數(shù)量,F(xiàn)P(false postitve)為負樣本中預(yù)測為正樣本的數(shù)量。
對于駕駛員區(qū)域檢測模型,檢測樣本只有正樣本。AC為正確檢測出的圖片數(shù)量占檢測圖片總數(shù)量的比例,如式(8)所示
(8)
對于安全帶檢測模型,檢測樣本分為正樣本與負樣本。本安全帶檢測模型為單類別目標檢測模型,檢測類別為單一類別,對于正樣本,計算正確檢出安全帶的樣本數(shù)量。對于負樣本,計算錯誤檢出安全帶的樣本數(shù)量與負樣本數(shù)量的差值作為正確檢出結(jié)果。并計算正確檢出結(jié)果的樣本數(shù)量占總樣本數(shù)量的比例當作準確率。AC(positive)為在正樣本集中檢測的準確率,AC(negative)為在負樣本集中檢測的準確率,AC表示總體準確率。計算公式如式(9)、式(10)、式(11)所示
(9)
(10)
(11)
3.2.1 駕駛員直接檢測模型實驗
為了簡化檢測流程,本文最先設(shè)計了駕駛員直接檢測模型,嘗試直接從交通探頭所拍攝的圖片中檢測駕駛員區(qū)域。實驗驗證模型不同迭代次數(shù)對檢測準確率的影響,以尋求最優(yōu)迭代模型。駕駛員檢測模型準確率隨模型迭代次數(shù)的變化如圖6所示。
圖6 駕駛員檢測模型準確率
基于2482張圖片測試中,當模型迭代次數(shù)達到33次時,模型檢測準確率不再上升并趨于穩(wěn)定,模型準確率大約為91%。駕駛員直接檢測模型檢測示例圖如圖7所示。
圖7 駕駛員區(qū)域檢測
3.2.2 駕駛員區(qū)域檢測模型實驗
圖8 車窗檢測模型準確率
本文采用相同的訓(xùn)練集與測試集,進行對比實驗,對比了基于Faster R-CNN的車窗檢測模型與基于SSD(single shot multibox detector, SSD)[16]網(wǎng)絡(luò)的車窗檢測模型,測試這幾種模型在相同測試集下的準確率(AC)、平均置信度(AVC)及檢測速率(DR),實驗結(jié)果見表1,圖9為車窗檢測。
圖9 車窗檢測
由表1得出,基于2484張測試集圖片測試中,本文方法測得準確率為99.9%,平均置信度約為98.1%。因車窗特征相對明顯,在基于Faster R-CNN的車窗檢測模型與基于SSD網(wǎng)絡(luò)的車窗檢測模型中,也可得到較高的準確率與平均置信度,本文方法準確率略高于其它兩種方法。檢測速率上,本文基于YOLO v3的車窗檢測模型可達到233 幀/s,相比于Faster R-CNN網(wǎng)絡(luò)與SSD網(wǎng)絡(luò),檢測速率更快。實驗結(jié)果得出,所設(shè)計的車窗檢測模型具有較高的準確率與檢測效率,可滿足實時性目標檢測的需求。
表1 車窗檢測模型對比
同樣為了驗證模型迭代次數(shù)對車窗-駕駛員檢測模型準確率的影響,記錄不同迭代次數(shù)與準確率的映射關(guān)系。采用與車窗檢測模型相同的網(wǎng)絡(luò)架構(gòu),訓(xùn)練了車窗-駕駛員檢測模型。訓(xùn)練集圖片與測試集圖片均來自上一步車窗檢測模型中所檢測出的車窗圖片。當模型迭代到27次,LOSS值已降低到0.6且不再收斂。車窗-駕駛員檢測模型準確率隨迭代次數(shù)變化如圖10所示。
圖10 車窗-駕駛員檢測模型準確率
進行了相同的對比實驗,實驗結(jié)果見表2,圖11為車窗-駕駛員檢測。
圖11 車窗-駕駛員檢測
從表2可以看出,基于1805張圖片測試中,本文方法測得車窗-駕駛員模型準確率為99.2%,平均置信度為98.6%,檢測速率可達到208幀/s。通過車窗-駕駛員檢測模型,可實現(xiàn)對駕駛員區(qū)域的精細化定位,減少冗余區(qū)域?qū)罄m(xù)安全帶檢測造成的影響。相比于傳統(tǒng)的通過幾何法裁取駕駛員圖片,本方法容錯率更高,適應(yīng)性更強。
表2 車窗-駕駛員區(qū)域檢測模型對比
將車窗檢測模型與車窗-駕駛員檢測模型相結(jié)合,測試駕駛員區(qū)域檢測模型總體準確率,實驗結(jié)果見表3。
表3 駕駛員區(qū)域檢測模型對比
因受圖片分辨率以及檢測目標大小的影響,駕駛員直接檢測模型檢測準確率并不高,并不能直接檢測駕駛員。本文所設(shè)計的車窗檢測模型+車窗-駕駛員檢測模型總體準確率約為99.1%,可滿足對駕駛員區(qū)域的目標檢測工作。
3.3.1 圖像增強處理實驗
基于Faster R-CNN的安全帶單類別目標檢測模型一共分為兩部分:圖像增強處理與安全帶檢測兩個步驟。通過圖像增強處理后,增強了安全帶區(qū)域的對比度,如圖12所示。
圖12 原圖(左)-圖像增強處理圖(右)
3.3.2 安全帶目標檢測實驗
將處理后的圖片送入到Faster R-CNN模型進行訓(xùn)練。本實驗制作訓(xùn)練集圖片932張。選取測試集3422張。測試集中,包括正樣本集1716張,負樣本集1706張,模型一共迭代100次。實驗驗證不同的置信度(confidence)閾值大小驗證對模型檢測準確率的影響,分別測試在正樣本集、負樣本集下的準確率以及總體準確率。其中,AC(positive)為正樣本集中的準確率,AC(negative)為負樣本集下的準確率,AC為總體準確率。實驗結(jié)果如圖13所示。
圖13 安全帶檢測模型準確率
由圖13可以看出,本文所提出的安全帶檢測模型在正樣本集中準確率整體高于負樣本集中的準確率。設(shè)定較小的置信度閾值會對負樣本集造成更多的誤判,設(shè)定較大的閾值會過濾掉部分正樣本集圖片。當設(shè)置confidence=0.8時,模型檢測準確率達到最優(yōu)狀態(tài)。
模型最終設(shè)定置信度大于0.8、交并比(intersection over union,IOU)高于0.6時作為正確檢出結(jié)果。為驗證圖像增強處理對模型檢測準確率的影響,分別實驗檢測未經(jīng)過圖像增強處理與經(jīng)過圖像增強處理步驟后的兩種基于Faster R-CNN的安全帶單類別目標檢測模型準確率,并對比了其它文獻中安全帶檢測準確率,實驗結(jié)果見表4,圖14為安全帶檢測。
表4 安全帶檢測模型對比
圖14 安全帶檢測
通過表4可以得出,本文設(shè)計的基于Faster R-CNN的安全帶單類別目標檢測模型在未經(jīng)圖像增強處理時,準確率約為94.7%。通過圖像增強處理后,準確率提高到96.0%,準確率有所提升。相比與其它文獻中的方法,準確率較高。因本模型首先經(jīng)過圖像增強處理,增強了安全帶區(qū)域?qū)Ρ榷龋虼吮灸P筒灰资芄庹諒姸?、圖片清晰度等因素影響,實際應(yīng)用過程中魯棒性更強,適用范圍更廣。
本文提出了一種圖像處理與深度學習相結(jié)合的駕駛員安全帶單類別目標檢測模型。①為了快速定位主駕駛員區(qū)域,簡化檢測步驟。利用YOLO算法目標檢測速率快的特點,訓(xùn)練了車窗檢測模型與車窗-駕駛員檢測模型,實現(xiàn)了對駕駛員區(qū)域的快速與精細化定位。②為了適應(yīng)光照條件、圖片清晰度不良的圖片,本文首先對駕駛員圖像進行圖像增強處理,提高安全帶的對比度。③為了提高檢測準確率,訓(xùn)練了基于Faster R-CNN的安全帶單類別目標檢測模型,將傳統(tǒng)的二分類問題轉(zhuǎn)化為單目標檢測問題處理。相比于傳統(tǒng)的基于深度學習的安全帶檢測模型,本方法適用性更強,準確率也相應(yīng)提升。目前,模型只檢測主駕駛員區(qū)域,我們也將改進模型,同時檢測主、副駕駛員區(qū)域并判斷是否佩戴安全帶。安全帶單類別目標檢測模型在正樣本集上的準確率較高,在負樣本集上準確率稍低,也將進一步通過優(yōu)化模型網(wǎng)絡(luò)架構(gòu),提升模型的準確率。