鄭偉,陳亮,呂宏宇,胡大欣,俱巖飛,張春光
調(diào)度中心作為鐵路運(yùn)輸?shù)闹笓]中樞,負(fù)責(zé)指揮各部門協(xié)同完成運(yùn)輸工作,擔(dān)負(fù)著保障運(yùn)輸安全、組織客貨運(yùn)輸、保證國家重點運(yùn)輸任務(wù)、提高客貨服務(wù)質(zhì)量的重要責(zé)任。調(diào)度指揮的準(zhǔn)確性、可靠性、安全性是鐵路運(yùn)營安全的重要保障。調(diào)度員的工作狀態(tài)極大地影響著鐵路的運(yùn)營安全,而疲勞是誘發(fā)人因失誤的主要原因之一[1-3]。因此,對調(diào)度員疲勞狀態(tài)進(jìn)行在線檢測,是保障鐵路正常運(yùn)輸秩序、提質(zhì)增效亟待解決的問題。
目前,國內(nèi)外關(guān)于飛行員、司機(jī)駕駛疲勞檢測技術(shù)的研究較多,調(diào)度員疲勞檢測可以進(jìn)行借鑒。文獻(xiàn)[4]提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)算法,用來自動識別睡意狀態(tài),采用單通道原始腦電信號作為深度學(xué)習(xí)算法的輸入,從中提取特征;文獻(xiàn)[5]采用8個腦電通道對高鐵司機(jī)狀態(tài)進(jìn)行檢測,使用矩陣分解算法對從無線可穿戴腦電信號采集設(shè)備獲得的信號進(jìn)行疲勞狀態(tài)分類;文獻(xiàn)[6]基于機(jī)器學(xué)習(xí)方法,將PERCLOS[7]判定準(zhǔn)則的f值、最長持續(xù)閉眼時間和嘴部張開次數(shù)作為神經(jīng)網(wǎng)絡(luò)的輸入,構(gòu)建3層反向傳播神經(jīng)網(wǎng)絡(luò)識別疲勞狀態(tài);文獻(xiàn)[8]提出基于改進(jìn)Retina-Face模型和改進(jìn)ShuffleNetV2網(wǎng)絡(luò)模型提取圖像特征,實現(xiàn)通過人臉檢測及眼睛嘴巴開合狀態(tài)對疲勞狀態(tài)進(jìn)行判斷;文獻(xiàn)[9]通過模糊推理系統(tǒng),將眼睛開合度、嘴巴開合度、眼動速率等3個判斷指標(biāo)相結(jié)合,用來判斷疲勞;文獻(xiàn)[10]提出一種基于上身姿態(tài)的雙流融合網(wǎng)絡(luò)模型,判斷高鐵司機(jī)疲勞程度。
綜上所述,基于類似腦電的人體生理指標(biāo)檢測方法對于疲勞檢測較為直接,但穿戴設(shè)備對工作人員的侵入性和干擾性較強(qiáng),影響正常工作;而基于面部、眼部圖像的檢測方法,僅采用單一特征,檢測效果也有待提高,且視頻數(shù)據(jù)如果采用人工監(jiān)控的方式,成為一種事后取證的工具,很難進(jìn)行統(tǒng)計分析,無法滿足鐵路局對調(diào)度員疲勞狀態(tài)統(tǒng)一管理和考核的需求。
為此,結(jié)合調(diào)度員工作特點,本文提出基于圖像多特征融合的調(diào)度員疲勞檢測方法。該方法基于圖像識別技術(shù)的非接觸式設(shè)計,在調(diào)度員前方安裝單目攝像頭并連接工控機(jī),實時檢測調(diào)度員臉部及其上半身姿態(tài),利用疲勞檢測模型對調(diào)度員當(dāng)前的疲勞狀態(tài)進(jìn)行分類。在不干擾調(diào)度員工作的前提下,可提高疲勞檢測準(zhǔn)確率及時效性,實現(xiàn)對調(diào)度員疲勞狀態(tài)數(shù)據(jù)的分析與管理。
PERCLOS P80是檢測人體疲勞公認(rèn)較為準(zhǔn)確的方法之一。PERCLOS的全稱為“Percentage of Eye Closure over the Pupil for the Required Observation Time”,即在所需觀測時間內(nèi)瞳孔上眼瞼閉合的百分比。PERCLOS P80是指在單位時間(60 s)內(nèi)測量眼睛閉合程度超過80%的時間所占的比例(用P80表示)。用該方法可以實現(xiàn)非接觸式檢測,對被監(jiān)測人員不產(chǎn)生影響,但需要對人臉部,尤其是眼部、嘴部的關(guān)鍵點進(jìn)行準(zhǔn)確而快速的定位。
目前,面部關(guān)鍵點定位有多種解決方法,如級聯(lián)形狀回歸方法、基于深度學(xué)習(xí)方法等。其中,精度最高的是基于深度學(xué)習(xí)的方法,考慮到現(xiàn)場實際應(yīng)用,需要選擇精度較高且模型體積較小的關(guān)鍵點定位方法。Retina-Face是insightface團(tuán)隊提出的一種專門檢測人臉的單階段多任務(wù)深度學(xué)習(xí)檢測算法,其網(wǎng)絡(luò)模型特點包括:單階段目標(biāo)檢測、特征金字塔網(wǎng)絡(luò)方法、上下文特征模塊、多任務(wù)學(xué)習(xí)、錨點框機(jī)制及輕量級主干網(wǎng)絡(luò)等,能夠識別人臉關(guān)鍵點,進(jìn)而檢測出打哈欠、眨眼等動作。該模型在推理速度和準(zhǔn)確性方面較優(yōu)秀,適合在小型工控機(jī)上完成人臉關(guān)鍵點檢測任務(wù)。綜上所述,本研究基于Retina-Face模型識別面部關(guān)鍵點,截取眼部圖片;然后結(jié)合方向梯度直方圖(Histogram of Oriented Gradient, HOG)與支持向量機(jī)算法(Support Vector Machine, SVM),即HOG-SVM算法實現(xiàn)眼部睜眼、閉眼分類;最后采用PERCLOS方法評估調(diào)度員疲勞狀態(tài),準(zhǔn)確地檢測并判斷個體的眼部動作和疲勞程度。
本文基于Retina-Face的面部關(guān)鍵點檢測算法,重新設(shè)計了21個人臉檢測關(guān)鍵點[11]:左右雙眼各6個、鼻尖1個、嘴部8個,面部關(guān)鍵點檢測示意見圖1。
圖1 基于Retina-Face的面部關(guān)鍵點檢測示意
Retina-Face包含3個任務(wù):人臉分類、臉框檢測、關(guān)鍵點檢測。當(dāng)使用人臉分類、臉框檢測的預(yù)訓(xùn)練網(wǎng)絡(luò)權(quán)重文件進(jìn)行預(yù)測時,無需對權(quán)重文件再次訓(xùn)練,僅對面部關(guān)鍵點檢測權(quán)重單獨訓(xùn)練即可,可以大幅提高訓(xùn)練效率,并且由于預(yù)訓(xùn)練權(quán)重對人臉檢測效果較好,還可以對關(guān)鍵點檢測的準(zhǔn)確性起到積極作用。以打哈欠為例,提取嘴部8個關(guān)鍵點并進(jìn)行定位。一般打哈欠時,嘴部縱橫比MAR會產(chǎn)生較大變化,與說話時的MAR值有明顯區(qū)分,因此本文采用固定閾值的方法進(jìn)行面部關(guān)鍵點的打哈欠檢測。當(dāng)MAR<0.3時,確定為口閉或開口說話;當(dāng)MAR>0.3時,確定嘴部狀態(tài)為打哈欠。嘴部MAR變化情況見圖2。
圖2 嘴部MAR變化情況(截?。?/p>
針對工作中僅能拍到調(diào)度員半身坐姿的特點,提出一種基于雙向長短時記憶神經(jīng)網(wǎng)絡(luò)(Bidirectional Long Short-Term Memory,BiLSTM)和自適應(yīng)增強(qiáng)算法的人體姿態(tài)分類方法。BiLSTM是一種更高級的循環(huán)神經(jīng)網(wǎng)絡(luò),有效避免了梯度消失和梯度爆炸的問題。
針對多分類問題,運(yùn)用單一的人工智能方法已經(jīng)不能滿足對分類問題的泛化與推理能力的提升。而集成學(xué)習(xí)方法可以有效提高模型能力,Ada-Boost算法由Freund提出,是最具代表性的自適應(yīng)增強(qiáng)算法之一。該算法會增加錯誤訓(xùn)練實例的相對權(quán)重,然后使用更新后的權(quán)重訓(xùn)練第2個分類器,并再次對訓(xùn)練集進(jìn)行預(yù)測,更新實例權(quán)重,以此類推。Adaboost算法模型見圖3。
圖3 Adaboost算法模型
根據(jù)動作時間序列特點,本文采用循環(huán)神經(jīng)網(wǎng)絡(luò)與集成學(xué)習(xí)算法相結(jié)合的思路,基于高分辨率網(wǎng)絡(luò)(High-Resolution Net, HRNet)人體姿態(tài)關(guān)鍵點檢測模型,提取人體骨骼關(guān)鍵點信息[12];通過構(gòu)建人體動作行為角度特征與長度比例特征,實現(xiàn)數(shù)據(jù)降維與特征提?。徊捎肧VM替代網(wǎng)絡(luò)輸出層Softmax函數(shù)完成動作分類,以達(dá)到提高識別率的目的;最后以BiLSTM-SVM作為Adaboost算法的基礎(chǔ)分類器,在提高識別率的同時,降低泛化誤差,實現(xiàn)調(diào)度員疲勞動作的識別。
通過放置在調(diào)度臺的攝像頭,采集調(diào)度員面部及身體姿態(tài)視頻信息,分析調(diào)度員的眨眼頻率、時長和打哈欠頻率等面部特征,以及低頭、趴桌等瞌睡姿態(tài)特征,對調(diào)度員的疲勞狀態(tài)數(shù)據(jù)進(jìn)行實時記錄、分類、分析與跟蹤。軟件架構(gòu)共分為5層,分別是顯示層、功能業(yè)務(wù)層、數(shù)據(jù)層、傳輸層、采集層,見圖4。
圖4 軟件架構(gòu)
1)顯示層。基于PyQT設(shè)計的軟件人機(jī)交互界面,具有視頻實時顯示、本地視頻播放、疲勞狀態(tài)檢測結(jié)果顯示、歷史數(shù)據(jù)查詢等功能。
2)功能業(yè)務(wù)層。負(fù)責(zé)實現(xiàn)軟件的基本操作與核心算法,包括調(diào)度員疲勞檢測的各項功能模塊:攝像頭實時數(shù)據(jù)采集、視頻數(shù)據(jù)播放及檢測、多特征融合疲勞檢測模型、聲音報警等。實現(xiàn)調(diào)度員疲勞狀態(tài)的檢測與報警,同時與數(shù)據(jù)層進(jìn)行相關(guān)疲勞數(shù)據(jù)的讀寫,是該軟件的核心。
3)數(shù)據(jù)層。作為軟件的數(shù)據(jù)中心,存儲調(diào)度員疲勞狀態(tài)數(shù)據(jù)、視頻數(shù)據(jù)文件等。
4)傳輸層。通過有線網(wǎng)絡(luò)的方式進(jìn)行攝像頭與主機(jī)間視頻圖像的傳輸。
5)采集層。通過硬件設(shè)備單目廣角攝像頭,完成調(diào)度員視頻圖像的采集。
軟件利用人工智能、圖像處理等計算機(jī)技術(shù),對實時采集的調(diào)度員面部表情和行為姿態(tài)視頻信號進(jìn)行識別、分析和統(tǒng)計,具有在線監(jiān)控、視頻管理、統(tǒng)計分析等功能,滿足調(diào)度中心對調(diào)度員疲勞狀態(tài)監(jiān)控及管理需求。
首先,通過視頻采集設(shè)備獲取調(diào)度員的實時視頻圖像;其次,利用Retina-Face模型提取人眼、鼻尖和嘴部的關(guān)鍵點,根據(jù)眼部圖片,計算HOG特征,輸入SVM中,同時通過HRNet人體姿態(tài)關(guān)鍵點檢測模型提取人體關(guān)鍵點,將人體姿態(tài)特征輸入BiLSTM-SVM自適應(yīng)增強(qiáng)算法模型中,得到疲勞狀態(tài)下的各特征值;最后,將所有特征值作為人工神經(jīng)網(wǎng)絡(luò)的輸入,計算多特征融合的疲勞狀態(tài)。檢測算法流程見圖5。
圖5 鐵路調(diào)度員疲勞狀態(tài)檢測算法流程
通常情況下,人體在疲勞狀態(tài)時,眨眼頻率、PERCLOS值、打哈欠次數(shù)都會增加。進(jìn)行疲勞檢測時,如果計算周期過長則無法及時發(fā)現(xiàn)疲勞狀態(tài),周期過短則易導(dǎo)致疲勞誤檢率過高。為了兼顧疲勞檢測的實時性和準(zhǔn)確率,軟件將疲勞檢測周期設(shè)定為60 s,視頻采樣幀率為30幀/s,即計算1 800幀數(shù)據(jù)中各項特征的數(shù)值及調(diào)度員疲勞狀態(tài)。
軟件開發(fā)使用Python語言,開發(fā)環(huán)境采用PyCharm,界面利用QtDesigner設(shè)計,數(shù)據(jù)層采用SQL Lite進(jìn)行設(shè)計與管理。其中QtDesigner提供了前端常用的按鈕、對話框、文本框等控件。根據(jù)前后端分離設(shè)計的軟件實現(xiàn)思路,前端界面的設(shè)計完成后,通過調(diào)用后臺邏輯文件實現(xiàn)軟件業(yè)務(wù)功能。整個數(shù)據(jù)庫采用一張用戶表設(shè)計,包括ID、姓名、工號、疲勞狀態(tài)、起始時間、截止時間、視頻文件路徑等參數(shù)。
如圖6所示,軟件操作界面采用分區(qū)顯示,左側(cè)區(qū)域為已存的錄像視頻檢測及顯示,右側(cè)區(qū)域為實時檢測視頻。
圖6 疲勞狀態(tài)檢測軟件操作界面
試驗數(shù)據(jù)集為自制數(shù)據(jù)集,采用攝像頭拍攝在調(diào)度模擬仿真實驗室進(jìn)行試驗時志愿者的視頻數(shù)據(jù)。共有5位不同年齡段的志愿者,包括3名男生、2名女生,身體狀況良好。每個志愿者均采集40 min的視頻數(shù)據(jù),時間分布為上午9:00—10:00間采集10 min,下午3:00—4:00間采集10 min,晚上23:00—24:00采集20 min(疲勞狀態(tài)),共采集200 min,包括輕度及以下疲勞狀態(tài)、中度疲勞狀態(tài)、重度疲勞狀態(tài)。每一個數(shù)據(jù)為1 min,共200條數(shù)據(jù),經(jīng)過篩選,可用數(shù)據(jù)為192條。將其分為138條訓(xùn)練數(shù)據(jù),54條作為測試數(shù)據(jù),訓(xùn)練數(shù)據(jù)采用5折交叉驗證法,輪流將訓(xùn)練集中110條數(shù)據(jù)用來訓(xùn)練,另外28條用來驗證。
首先將采集到的視頻數(shù)據(jù)輸入到Retina-Face模型進(jìn)行人臉關(guān)鍵點定位,得到人眼部12個、嘴部8個、鼻尖1個關(guān)鍵點位置數(shù)據(jù);然后根據(jù)每一幀圖像的眼部與鼻尖關(guān)鍵點,計算得到基準(zhǔn)眼的眼部截圖,提取HOG特征,并將其輸入采用粒子群算法訓(xùn)練好的支持向量機(jī)SVM分類器中進(jìn)行睜閉眼識別,計算最近1 800幀的PERCLOS值。
眨眼是一個過程,一個完整的眨眼約需0.1~0.4 s[13]。視頻幀率為30幀/s,一幀的采樣時間大約為0.033 s,所以在無特殊遮擋情況下,眨一次眼睛軟件至少可以采集到2張圖片,因此基于實際測試效果,軟件處理邏輯確定將2次連續(xù)的閉眼圖片計為1次眨眼。
再根據(jù)嘴部8個關(guān)鍵點位置數(shù)據(jù),計算每幀圖像的MAR,采用固定閾值判定打哈欠的發(fā)生,同樣計算最近1 800幀內(nèi)打哈欠動作的次數(shù)。在采集面部關(guān)鍵點進(jìn)行計算時,視頻數(shù)據(jù)同時輸出給BiLSTM-SVM自適應(yīng)增強(qiáng)模型,計算得到打哈欠、低頭、趴桌等行為的次數(shù)。
為證明本文選取多特征的有效性,選取3種不同特征下的疲勞分類方法進(jìn)行準(zhǔn)確率的對比分析,共有54個測試樣本,檢測結(jié)果對比見表1。
表1 單因素與多特征融合算法檢測結(jié)果對比
表1數(shù)據(jù)表明:檢測調(diào)度員疲勞狀態(tài)過程中,在單一眼部特征檢測基礎(chǔ)上,引入打哈欠的面部特征后,算法準(zhǔn)確率明顯提升;融合了眨眼、打哈欠的面部特征和行為特征的多特征融合算法,不僅能檢測眨眼、打哈欠等動作,還能識別一定的疲勞姿態(tài),進(jìn)一步提高了疲勞狀態(tài)檢測準(zhǔn)確率。
1)本文提出的鐵路調(diào)度員疲勞狀態(tài)檢測方法,將終端檢測的信息通過智能算法解析,識別調(diào)度員的疲勞程度,并根據(jù)識別的結(jié)果進(jìn)行聲音報警;同步將數(shù)據(jù)記錄至數(shù)據(jù)庫,便于管理、統(tǒng)計、分析,滿足當(dāng)前鐵路局和調(diào)度中心集中管控的需求。
2)系統(tǒng)采用基于多特征融合的鐵路調(diào)度員疲勞檢測方法,構(gòu)建了多個疲勞特征判據(jù),并將基于圖像識別的面部信息與行為動作姿態(tài)信息融合,作為疲勞狀態(tài)檢測的手段,依托調(diào)度仿真實驗室的模擬試驗,疲勞狀態(tài)檢測準(zhǔn)確率為96.3%,證明了該方法的有效性。
本方法提高了鐵路調(diào)度員的工作安全水平,對保障鐵路的安全運(yùn)營具有重要意義。下一步,將繼續(xù)完善網(wǎng)絡(luò)與傳輸功能,為提升鐵路行車安全水平發(fā)揮更大作用。