






摘要:長時間駕駛會降低駕駛員的反應和決策能力,增加事故風險。但傳統(tǒng)疲勞檢測方法在面對遮擋、角度變化及光照條件時,檢測魯棒性差、速度慢、準確率低。為解決這些問題,提出了一種結合YOLOv2與人臉特征點檢測的金字塔分頻疲勞檢測算法。該算法引入金字塔結構以提取多頻段的面部特征,并采用透視矯正技術調整角度。隨后,使用YOLOv2網絡定位和標記人臉,并通過人臉特征點檢測捕捉面部表情變化。最后,對不同頻段的檢測結果進行疲勞判斷,整合多頻段的檢測信息以準確區(qū)分清醒與疲勞狀態(tài)。實驗結果顯示,該算法在復雜光照條件和不同視角下的檢測精確率和召回率顯著提高,達到94.28%的精確率和93.16%的召回率,能夠更好地適應復雜的檢測環(huán)境。
關鍵詞:疲勞檢測;人臉特征點檢測;YOLOv2模型;特征金字塔;透視矯正
中圖分類號:TP391" "文獻標識碼:A
文章編號:1009-3044(2025)16-0001-04
開放科學(資源服務) 標識碼(OSID) :
0 引言
在國家對新能源汽車的大力扶持下,汽車使用率持續(xù)上升,更多人依賴汽車出行。然而,機動車數量的增加也導致疲勞駕駛引發(fā)的交通事故風險上升。根據公安部的統(tǒng)計數據,截至2024年5月底,中國機動車總數達4.4億輛,其中汽車3.45億輛,占78.4%。疲勞駕駛是高死亡率事故的重要原因,每年由其造成的死亡人數占總事故死亡人數的10.9%以上[1]。為降低此類風險,交通管理部門和駕駛員都在關注疲勞檢測技術。疲勞檢測系統(tǒng)通過生理信號、駕駛行為分析及面部特征識別等技術,在檢測到疲勞跡象時及時提醒駕駛員休息,以減少事故發(fā)生。
人體生理信號包含多種精神疲勞特征,廣泛用于駕駛疲勞檢測。早期研究多關注單一指標,如心率、血壓或腦電波。徐禮勝等[2]提出基于短時心電信號的疲勞檢測算法,準確率達91%,適用于短暫信號并提供高精度結果。Wang[3]則通過非接觸系統(tǒng)采集股二頭肌肌電信號,提取Fc作為疲勞特征,有效檢測疲勞狀態(tài)。隨著技術進步,付榮榮等[4]融合肌電、腦電和呼吸信號,并利用三層 HMM 模型,提高了疲勞檢測準確性。盡管基于生理信號的方法成熟且準確,但需接觸式傳感器,可能干擾駕駛。相比之下,非接觸的駕駛行為檢測則不影響正常駕駛。車輛參數檢測通過分析方向盤角度、握力、車道偏離等數據判斷疲勞。賈麗娟[5]提取方向盤轉角特征結合模型評估疲勞,McDonald等[6]人用轉向角、車速等構建動態(tài)貝葉斯網絡監(jiān)測疲勞。此方法通過非侵入式攝像頭和傳感器獲取信息,但駕駛習慣和路況變化可能導致系統(tǒng)誤判。相對而言,面部特征檢測方法更為可靠且準確。
基于駕駛員面部特征的檢測方法主要通過識別頭部姿態(tài)和面部表情的變化進行。當駕駛員處于疲勞狀態(tài)時,其點頭頻率、眨眼頻率、眼睛閉合程度以及嘴巴張合度等指標通常會出現顯著變化。鄒昕丹等[7]用Adaboost識別人臉,灰度直方圖定位眼睛,似圓度檢測打哈欠以判斷疲勞。Zhou等[8]提出了一種基于駕駛員面部多特征的疲勞檢測算法。該算法將駕駛員的眼睛開合狀態(tài)、嘴巴張開面積以及頭部位置的變化作為疲勞參數,把這些參數輸入模糊系統(tǒng)中,從而實時評估駕駛員的精神疲勞狀態(tài)。Yamamoto等[9]從多普勒頻譜圖提取眼部特征,輸入機器學習模型檢測眼睛狀態(tài)。Singh H等[10]通過分析駕駛員眼睛的睜閉狀態(tài)實現疲勞狀態(tài)的檢測。Poursadeghiyan M等[11]通過眼球追蹤技術檢測眨眼時間、眨眼頻率等參數,并以此來判定疲勞程度。朱峰等[12]提出了一種基于YOLOv3的疲勞檢測算法,通過對駕駛員進行人臉檢測,并用一種基于提升樹的算法實現臉部關鍵點檢測和疲勞判斷。申家冰等[13]設計了一套基于YOLOv5和Dlib的駕駛員疲勞檢測系統(tǒng)。該系統(tǒng)通過檢測并計算駕駛員每分鐘的眨眼、哈欠以及點頭次數來綜合判斷駕駛員的疲勞狀態(tài)。面部特征檢測的方法屬于非接觸式檢測方法,且不受駕駛人行為習慣和路況變化的影響,是相比以上兩種檢測方法的更優(yōu)選擇。
由于面部特征的疲勞檢測方法在數據采集過程中容易受到面部遮擋(如佩戴口罩) 、人臉角度和光照條件(如陽光或路燈) 等客觀因素的干擾,從而影響疲勞識別的準確度。為解決上述在面部遮擋、角度和光照變化下面臨的挑戰(zhàn),本文提出了一種基于YOLOv2與人臉特征點檢測的金字塔分頻檢測算法。該算法通過透視矯正來解決因人臉角度變化造成的影響,并利用YOLOv2結合68點人臉檢測模型進行人臉追蹤和面部特征檢測。此外,引入金字塔分頻處理技術對駕駛人的圖像數據幀進行分頻處理,進一步優(yōu)化疲勞檢測的效率。
1 疲勞檢測算法模型設計
當駕駛員疲勞時,面部特征變化明顯,打哈欠和眨眼會變得更加頻繁。本研究提出的方法結合了YOLOv2與人臉特征點檢測及金字塔分頻檢測,通過多尺度特征提取和透視矯正技術,實現對駕駛員疲勞狀態(tài)的檢測。圖1為基于YOLOv2與金字塔分頻的疲勞檢測算法模型結構框圖,其中T代表疲勞,F代表非疲勞。
該模型采用金字塔分頻和透視矯正技術,結合 YOLOv2 網絡及人臉特征提取技術共同實現疲勞檢測。首先,模型運用數據幀金字塔分頻檢測算法對駕駛員面部數據幀進行下采樣與上采樣。將原數據幀與上采樣數據幀進行相減操作,得到原數據幀、高頻數據幀與低頻數據幀,增加數據幀頻段輸入。同時,通過透視矯正技術對得到的不同數據幀進行平面化處理重映射,將數據幀轉換為更加接近平面的數據幀,減少因視角變化導致的檢測誤差。隨后,采用 YOLOv2 網絡模型分別實現不同數據幀的人臉識別與定位,再通過人臉特征點檢測技術提取用于疲勞判斷的關鍵信息。最終,依據預設的閾值評估數據幀的疲勞狀態(tài),通過整合多頻段的檢測信息來準確區(qū)分清醒與疲勞狀態(tài),以達成疲勞檢測的目標。
2 數據幀金字塔分頻處理
數據幀金字塔是一種多尺度表示技術,它通過在不同分辨率下展示同一幅圖像,并按照從高分辨率到低分辨率的順序排列。
如圖2所示的金字塔分頻原理,高斯金字塔是通過連續(xù)對原始圖像進行降采樣和平滑處理構建而成的,每一層圖像都比上一層更加模糊,且具有更低的分辨率,這使得它非常適合于圖像的多尺度表示。而拉普拉斯金字塔記錄相鄰層的差異,用于描述和增強圖像細節(jié)。拉普拉斯金字塔的定義如下:
[Li=Gi-pyrUp(pyrDown(Gi))]" " "(1)
式中:[Li]表示拉普拉斯層,[Gi]表示高斯層,[pyrUp]表示上采樣,[pyrDown]表示下采樣。
首先,對駕駛員面部數據幀進行高斯金字塔下采樣(圖2中過程一) ,以獲取原始數據幀的采樣信息。接著,通過高斯金字塔上采樣,獲得原始數據幀的低頻信息(圖2中過程二) 。利用拉普拉斯金字塔,計算原始數據幀與低頻信息之間的差值(圖2中過程三) ,從而提取出原始數據幀的高頻信息。最后,通過對原始數據幀的高頻信息進行加權增強,得到了低頻信息部分和高頻信息增強部分。
通過將加權后的高頻信息疊加到低頻信息上,不僅保留了原始數據幀,還額外獲得了包含更多細節(jié)的高頻數據幀和平滑化的低頻數據幀。對同一數據幀的不同頻段信息(即原始數據幀、高頻數據幀和低頻數據幀) 進行疲勞狀態(tài)分析,可以綜合這些多頻段的信息來進行疲勞判斷,提升數據幀對頻段的利用。然而,該方法未能解決由于拍攝角度不同所帶來的影響。為此,采用在不同頻段數據幀后加入視覺透視矯正的方法,這種方法能夠將三維空間中的透視數據幀轉換為更加接近平面的數據幀,從而減少不同頻段數據幀因視角變化導致的檢測誤差。
3 透視矯正
由于攝像頭在拍攝時的角度、旋轉和縮放等因素,可能會導致圖像出現失真。為了解決此問題,采用透視變換技術對圖像進行畸變矯正。透視變換(Perspective Transformation) 將圖像投影到新視角平面上,從而改變視點。這種變換常用于修正由于拍攝角度導致的圖像失真,或者創(chuàng)建從不同視角觀察同一場景的效果。其主要目的是校正圖像中的視覺失真,使得在現實世界中為直線的物體,在經過變換后的圖像中也能保持為直線。這種變換能夠有效地修正由于拍攝角度等原因導致的圖像中線條的傾斜或變形,從而恢復物體的真實幾何形態(tài)。
原圖像通過投影映射,從原圖像平面變換到新圖像平面。通用的三維圖像變換公式為:
[XYZ=a11a12a13a21a22a23a31a32a33xy1]" " " "(2)
式中:(x, y) 是原圖像坐標點,(X, Y, Z) 是變換后坐標點。處理二維圖像時,將輸入坐標點 (x, y) 變換到新的輸出坐標點 (X', Y') ,可將 Z 進行歸一化,即對公式2兩邊同時除以 Z。這樣就能有效地把圖像坐標從三維空間簡化到二維平面上。公式就得到了 (X', Y', Z'),如公式(3) 所示,公式右邊如公式(4) 所示:
[X'=XZY'=YZZ'=ZZ]" " " " " " " (3)
[X'=a11x+a12y+a13a31x+a32y+a33Y'=a21x+a22y+a23a31x+a32y+a33Z'=1]" " " "(4)
通常情況下,設定[a33]的值為 1(這樣做可以簡化計算,直接得到 X' 和 Y' 的值,因x、y的值有可能為0,這樣做可以使Z大于0) 。基于這一設定,展開上述公式,從而得到單個點的轉換表達式:
[a11x+a12y+a13-a31xX'-a32yX'=X'a21x+a22y+a23-a31xY'-a32yY'=Y']" (5)
方程3中包含8個未知數(即[aij]) ,須建立8個獨立方程求解。這通常涉及使用已知的對應點來確定變換參數。在透視變換中,至少需要4對對應的點(原圖中的點和變換后圖像中的點) 來計算變換矩陣,因為每對點可以提供兩個方程(一個用于X坐標,另一個用于Y坐標) ,總共需要8個方程來唯一確定變換矩陣中的八個未知數。這通常通過在原圖像和目標圖像上各選擇4個對應點來實現。實踐中往往選取圖像的4個角點作為參考。具體來說,在原圖像中選定的4個坐標點可以表示為 A:(x0, y0), (x1, y1), (x2, y2), (x3, y3);相應地,在目標圖像中選定的4個坐標點則表示為 B:(X'0, Y'0), (X'1, Y'1), (X'2, Y'2), (X'3, Y'3)。這樣,通過這兩組點之間的映射關系代入公式(5) ,便能夠構建出所需的方程組以解出所有的未知參數。將求得的未知參數和原圖像的所有坐標全部代入公式(4) ,即可求得變換后的對應坐標,從而實現整幅圖片的透視矯正,修正拍攝角度導致的圖像失真。
4 YOLOv2網絡模型
YOLOv2算法被選用于實現人臉檢測與位置追蹤。YOLOv2算法基于Darknet-19基礎網絡,并在其頂部添加額外的層以完成目標檢測任務。
如圖 3 所示的 YOLOv2 網絡結構,它由輸入層、卷積層、池化層、全連接層以及輸出層組成。在輸入層,圖像經過預處理步驟(如調整至統(tǒng)一尺寸和歸一化) 后轉換成特征圖(圖3 中的input層) 。卷積層(圖3中的CBL) 通過學習的卷積核捕捉圖像特征。YOLOv2 包含23個卷積層,其中使用了 1×1和 3×3兩種類型的卷積核。3×3卷積核在每次池化操作后將通道數加倍,而1×1卷積核則用于跨通道信息集成,并減少網絡參數的數量。YOLOv2 在所有層中使用了非線性激活函數 Leaky Rectified Linear Unit(Leaky ReLU) 。該函數的定義如下[14]:
[f(x)=x,x≥0αx,xlt;0]" " " " "(6)
式中:[α]是一個很小的正數(例如0.1) ,用于控制負輸入時的斜率。
池化層又稱下采樣層,圖3中MaxPool部分將特征圖劃分為小區(qū)域(如2×2) ,計算新特征值,通過減少參數數量幫助防止過擬合。圖3中Concat部分為不同層之間的特征融合,它將13×13×256與13×13×1 024特征圖拼接成 13×13×1 280,經卷積操作后用1×1卷積層輸出預測。YOLOv2將圖像分割為S×S網格,每個單元預測C類概率和B個邊界框信息(x, y, w, h) ,同時還有一個置信度分數,用于表示該框內存在對象的可能性及其定位精度。經過一系列運算后,網絡最終通過1×1卷積層輸出預測結果,形成一個長度為S×S×(B×5+C)的向量。
訓練好的YOLOv2人臉檢測模型用于識別人臉并標注人臉框,為后續(xù)特征檢測奠定基礎。因為特征檢測僅在標注的人臉框內進行,若不先標注人臉框而直接進行特征檢測,系統(tǒng)會在無臉區(qū)域浪費資源。
5 臉部關鍵特征提取
選用基于Dlib[15]庫的人臉檢測方法提取68個臉部關鍵點。與Haar級聯分類器相比,該方法精度更高;與MTCNN(多任務級聯卷積網絡) 相比,它在實時性方面表現更優(yōu);而與FaceNet相比,它更加專注于人臉關鍵點的檢測。68個關鍵點覆蓋人臉的主要特征區(qū)域,如眉毛、眼睛、鼻子、嘴巴等,這種細致的分布使模型能夠識別面部細微變化。在疲勞檢測中,重點是眼睛和嘴巴區(qū)域的狀態(tài),因此本研究去除了無關項,僅保留這兩個區(qū)域的特征點。這提高了疲勞檢測的效率和實時性。
為了檢測駕駛者的疲勞狀態(tài),系統(tǒng)首先通過人臉關鍵點坐標識別并提取左右眼和嘴部的位置(如圖 4 中 37 至 42 標識左眼) 。對于眼睛閉合度的評估,通過計算眼角間的歐氏距離與上下眼瞼間距離的比值來確定閉合程度,并設定閾值判斷是否為閉眼;持續(xù)閉合超過一定時間則判定為疲勞。嘴部動作則通過計算上下嘴唇間距離與嘴角間距離的比值來區(qū)分正常開口與打哈欠。當嘴巴開合度長時間高于特定閾值時,計數增加以識別打哈欠。綜合眼睛閉合度和嘴部動作的數據,在不同頻率的數據幀上進行疲勞評估,選取三種頻段中疲勞評估占比最高的狀態(tài)作為最終的疲勞判別結果,從而準確地判斷駕駛者的疲勞水平。
6 實驗分析
6.1 數據準備
6.1.1 數據集
為了提高面部狀態(tài)識別的準確率,專門構建了眼部和嘴部數據集。該數據集整合了網上公開的 CEW 眼部數據集、YAWDD 打哈欠數據集[16]以及自建的數據集。公開的數據集包含了豐富的眼睛和嘴巴樣本;自建部分則由多名參與者提供,包括了眨眼和打哈欠等多種面部動作的照片。最終,數據集包含了打哈欠圖像、眼睛相關圖像和嘴巴相關圖像。為了確保這些圖片與攝像頭輸出格式的一致性,所有圖像均被標準化至 320×240 像素的尺寸,以便于后續(xù)的網絡訓練過程。
6.1.2 實驗平臺
硬件測試環(huán)境配置如下:搭載了六核2.50 GHz的i5-12400F處理器、4060Ti 顯卡以及 16 GB 內存。操作系統(tǒng)為Windows 11。在軟件方面,選擇PyCharm 2019作為開發(fā)環(huán)境,并使用 Python 3.9 進行編程。
6.2 精度分析
6.2.1 消融實驗
在進行測試分析時,首先對研究方法進行了消融實驗,實驗方法包括 YOLOv2 與 68 人臉關鍵點檢測結合的檢測方法(Y68) 、Y68 結合金字塔多尺度分析(Y68+PFD) 、Y68 結合圖像校正技術(Y68+PT) ,以及 Y68 結合金字塔多尺度分析與透視矯正的綜合方案(Y68+PFD+PT) 。本研究選用精確率、召回率和幀率作為評價標準。
表1中的消融實驗結果顯示,改進后的模型在性能上超過了基線模型以及僅引入部分模塊的模型。這里,PFD代表金字塔分頻處理,PT代表透視變換。與基線模型相比,僅引入PFD對實驗召回率的提升效果顯著,提升了9.32%,但精確率提升不明顯;僅引入PT對實驗精確率的提升效果顯著,提升了4.93%,但召回率的提升不如僅引入PFD的實驗結果。從結果可以看出,本研究提出的最終方案達到了94.28%的精確率和93.16%的召回率,這兩項指標均優(yōu)于其他對比方案,為最優(yōu)方案。
6.2.2 實驗測試
使用已訓練好的數據集進行測試驗證,檢驗眼部和嘴部狀態(tài)檢測方法是否能達到預期效果。如表2所示的眼睛和嘴巴狀態(tài)測試結果,顯示該算法對眼睛和嘴巴的狀態(tài)判斷具有較高的準確率。
6.2.3 對比實驗
為了進一步對比效果,實驗算法與Adaboost[7]、DPM、MTCNN 和HOG[4]的疲勞檢測方法進行對比,它們各自代表了不同類型的計算機視覺技術和機器學習方法。Adaboost適合復雜分類,DPM適應局部變化,MTCNN進行人臉和關鍵點檢測以評估疲勞,HOG捕捉面部特征變化。這些算法提供了多樣的解決方案,有助于全面評估不同方法的效果。
因為YOLOv2算法模型相較于后續(xù)YOLO模型具有更好的檢測實時性,更加契合于本實驗研究,所以在進行實驗方法對比時并未參照其他 YOLO方法的對比結果,而是選取了更具參考性的幾種方法進行算法實驗對比。對比結果如表3所示,基于YOLOv2和68點人臉特征點的多特征金字塔分頻檢測算法在精確率與召回率上優(yōu)于上述方法,在實時性上僅次于 MTCNN 的方法,是綜合性能最佳的方法。
7 結束語
本研究提出了一種結合 YOLOv2 與人臉特征點檢測的金字塔分頻疲勞檢測算法。通過金字塔結構和透視矯正技術,顯著提升了面部識別精度和魯棒性,并采用 YOLOv2 加快處理速度,確保實時性能,達到了 94.28% 的精確率和 93.16% 的召回率。該算法在復雜光照和不同視角下有效區(qū)分清醒與疲勞狀態(tài),具有重要的實際應用價值,如實時監(jiān)測駕駛員疲勞狀態(tài)以減少交通事故。然而,當前算法主要依賴視覺信息,尚未結合其他生理信號(如心率、腦電波) ,且在極端條件下表現需進一步驗證和優(yōu)化。未來研究將優(yōu)化特征提取方法,進行個性化調整,并結合其他生理信號,開發(fā)更全面的疲勞檢測系統(tǒng)。
參考文獻:
[1] AMODIO A,ERMIDORO M,MAGGI D,et al.Automatic detection of driver impairment based on pupillary light reflex[J].IEEE Transactions on Intelligent Transportation Systems,2019,20(8):3038-3048.
[2] 徐禮勝,張聞勖,龐宇軒,等.基于短時心電信號的疲勞駕駛檢測算法[J].東北大學學報(自然科學版),2019,40(7):937-941.
[3] WANG H.Detection and alleviation of driving fatigue based on EMG and EMS/EEG using wearable sensors[C]//Proceedings of the 5th EAI International Conference on Wireless Mobile Communication and Healthcare-\"Transforming Healthcare through Innovations in Mobile and Wireless Technologies\".Great Britain:ICST,2015: 171-175.
[4] 付榮榮,田永勝,王世超,等.基于動態(tài)貝葉斯估計的疲勞駕駛識別研究[J].中國生物醫(yī)學工程學報,2019,38(6):759-763.
[5] 賈麗娟.基于實車方向盤操作特征的疲勞駕駛檢測方法研究[D].北京:清華大學,2017.
[6] MCDONALD A D,LEE J D,SCHWARZ C,et al.A contextual and temporal algorithm for driver drowsiness detection[J].Accident Analysis amp; Prevention,2018(113):25-37.
[7] 鄒昕彤,王世剛,趙文婷,等.基于眼睛與嘴部狀態(tài)識別的疲勞駕駛檢測[J].吉林大學學報(信息科學版),2017,35(2):204-211.
[8] 郜云鵬,朱青,王耀南.基于多面部線索融合的駕駛員困倦檢測方法[J].電子測量與儀器學報, 2014,28(6):759-763.
[9] YAMAMOTO K,TOYODA K,OHTSUKI T.Driver’s blink detection using Doppler sensor[C]//2017 IEEE 28th Annual International Symposium on Personal,Indoor,and Mobile Radio Communications (PIMRC).IEEE,2017:1-6.
[10] SINGH H,BHATIA J S,KAUR J.Eye tracking based driver fatigue monitoring and warning system[C]//India International Conference on Power Electronics 2010 (IICPE2010).IEEE,2011:1-6.
[11] POURSADEGHIYAN M,MAZLOUMI A,NASL SARAJI G,et al.Using image processing in the proposed drowsiness detection system design[J].Iranian Journal of Public Health,2018,47(9):1371-1378.
[12] 朱峰,陳建,陳靖芯,等.基于改進YOLOv3的駕駛員疲勞檢測[J].科學技術與工程,2022,22(8):3358-3364.
[13] 申家冰,許鋒.基于Yolov5s和Dlib的面部遮擋駕駛員疲勞檢測[J].廣東公安科技,2023,31(4):43-47.
[14] MU Z Q.Transmission line inspection image recognition technology based on YOLOv2 network[C]//2018 International Conference on Security,Pattern Analysis,and Cybernetics (SPAC).IEEE,2018:421-428.
[15] BOCHKOVSKIY A, WANG C Y, LIAO H Y M. YOLOv4: Optimal Speed and Accuracy of Object Detection[EB/OL].[2024-12-20]. arXiv preprint arXiv:2004.10934, 2020.
[16] WU Y,LIM J,YANG M H.Object tracking benchmark[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2015,37(9):1834-1848.
【通聯編輯:唐一東】