饒 睿,吳 劍,索會恒,胡 強,楊騰勝
(南昌航空大學(xué)信息工程學(xué)院 江西 南昌 330038)
現(xiàn)存的疲勞檢測有主觀檢測方法和客觀檢測方法[1]。主觀檢測法由被測者主觀判斷自己的身體狀態(tài)并記錄實驗數(shù)據(jù)。 客觀檢測法采用實驗設(shè)備提取被測者相關(guān)的特征數(shù)據(jù),并對獲取的數(shù)據(jù)建立模型從而對疲勞程度進行評價。
傳統(tǒng)算法一般將方向梯度直方圖(histogram of oriented gradient, HOG)特征用于特征描述,使用支持向量機(support vector machine, SVM)分類器進行分類[2],也有將神經(jīng)網(wǎng)絡(luò)如Fast-RNN,SSD 等用于目標(biāo)檢測[3]。 本文選擇目標(biāo)檢測算法YOLOv5s,對算法的部分網(wǎng)絡(luò)結(jié)構(gòu)進行修改用于識別人臉,對檢測到的人臉部各個特征綜合判斷,受主觀影響較小,因此效果更加可靠,識別率也更高。
YOLOv5s 有4 個模塊,分別是輸入模塊、主干模塊、頸部模塊和輸出模塊。
輸入模塊:用于數(shù)據(jù)的準備工作。 模塊負責(zé)接收輸入圖像,并進行必要的預(yù)處理,例如尺寸調(diào)整、歸一化和通道轉(zhuǎn)換等,以使其適應(yīng)網(wǎng)絡(luò)的輸入要求。
主干模塊:整個網(wǎng)絡(luò)的核心部分,負責(zé)將輸入的圖像逐層進行卷積和池化等操作,以實現(xiàn)對不同尺度特征的提取。
頸部模塊:用于進一步增強和豐富網(wǎng)絡(luò)提取到的特征。 頸部通過引入額外的卷積層、上采樣和下采樣操作或者特征金字塔等方法來提升網(wǎng)絡(luò)對多尺度特征的感知能力和目標(biāo)檢測性能。
輸出模塊:負責(zé)對經(jīng)過主干和頸部處理后的特征圖進行目標(biāo)檢測,通常由一系列卷積層和全連接層組成,用于生成目標(biāo)檢測所需的邊界框、類別置信度以及其他相關(guān)信息。
CA(coordinate attention)注意力機制關(guān)注空間特征層的空間信息和通道信息,實現(xiàn)原理如圖1 所示,可以看作是兩個并行階段的組合。 左邊求取的是高方向的注意力情況,右邊是寬方向上的注意力情況。 通過平均池化獲得高和寬兩個方向的特征層,將高寬特征合并到一起進行堆疊,利用卷積標(biāo)準化獲得特征。 然后,再分開分別用卷積調(diào)整通道數(shù),取sigmoid 后就可以獲得高寬這兩個維度的注意力情況。 最后,乘上原來特征,這就是CA 注意力機制的過程。

圖1 CA 注意力機制
將CA 注意力機制應(yīng)用于YOLOv5,一個常見的做法是將其集成到Y(jié)OLOv5 的主干網(wǎng)絡(luò)中,以增強網(wǎng)絡(luò)的表示能力。 具體來說,可以在主干網(wǎng)絡(luò)的某些模塊之間添加CA 注意力模塊或者替換一些現(xiàn)有的模塊。 本文在主干傳入頸部的P4 層和頸部傳入輸出的P14 層放置CA 注意力機制,改進后的YOLOv5s 網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。

圖2 改進的YOLOv5s網(wǎng)絡(luò)
SIoU(scylla intersection over union)是對回歸框有強大學(xué)習(xí)能力的損失函數(shù),由4 個損失函數(shù)組成,即角度損失(angle cost,Ω)、距離損失(distance cost,Δ)、形狀損失(shape cost) 和IoU 損失(IoU loss),該損失函數(shù)將角度考慮進來,表達式如式(1)所示:
Kazemi 等[4]提出基于回歸樹集合(ensemble of regression trees, ERT)的人臉關(guān)鍵點定位算法。 將68 個點的映射對于面部坐標(biāo),每個點用線性索引表示,各個部位可以用固定的取值區(qū)間表示,分別為:嘴巴[48,67]、右眉毛[17,21]、左眉毛[22,26] 、右眼[36,41]、左眼[42,47],鼻子[27,35]和下巴[0,16]。 各個點位的位置如圖3 所示。

圖3 人臉關(guān)鍵點狀態(tài)圖
人眼狀態(tài)可以由眼睛長寬比(eye aspect ratio, EAR)判斷,睜開和閉合狀態(tài)的眼睛長寬比是不同的。 通過設(shè)定某個值與EAR 比較可以判斷出當(dāng)前眼睛狀態(tài)。 同理可得嘴巴長寬比(mouth aspect ratio, MAR)。
已知眼部的關(guān)鍵點位置后可以利用歐式距離計算EAR。 歐式距離的計算公式如式(2)所示,P為點(x2,y2)與(x1,y1)之間的歐式距離。
對應(yīng)于圖3 的關(guān)鍵點位置,眼部標(biāo)注點可以通過式(3)計算左眼EARl,通過式(4)計算右眼EARr,二者取平均得到EAR,如式(5)所示。
同樣,可以利用歐式距離計算嘴巴的長寬比MAR,如式(6)所示。
頭部特征可以通過計算頭部的歐拉角來確定,包括俯仰角(pitch)、滾轉(zhuǎn)角(roll)和偏航角(yaw)。 視頻中的每一幀圖像都是二維的,通過圖像可以獲取人臉二維的特征點位置,然后經(jīng)矩陣變換可得到三維數(shù)據(jù),由此可以對當(dāng)前圖像中的人體頭部狀態(tài)進行姿態(tài)估計。
PERCLOS(percentage of eyelid closure over the pupil over time)是疲勞判定的重要指標(biāo),原理是通過計算一段時間的眼睛閉合時間所占比例判斷疲勞狀態(tài),眼睛閉合程度分別超過50%、70%、80%時判定人眼為閉合狀態(tài),P80標(biāo)準被證明與疲勞程度的相關(guān)性最好,因此選擇P80 標(biāo)準判斷被測者是否疲勞。
由圖4 可得到PERCLOS 值的計算公式,如式(7)所示。

圖4 人眼睜開程度示意圖
通過計算一段連續(xù)視頻中的閉眼狀態(tài)的單幀圖像數(shù)K與有效圖像的總幀數(shù)N計算PERCLOS 值,計算公式如式(8)所示。
人臉檢測選擇WIDERFACE 數(shù)據(jù)集[5]作為基準數(shù)據(jù)集。 該數(shù)據(jù)集每張圖像平均包含24.45 張人臉,包括不同的光照條件、姿態(tài)變化、遮擋等。 為了滿足實際更多場景的需求,本文利用標(biāo)注工具LabelImg 自制了數(shù)據(jù)集,通過使用這兩個數(shù)據(jù)集進行實驗?zāi)軌蚋鎸嵉卦u估人臉檢測器的性能。
實驗結(jié)果如表1 所示。 經(jīng)過訓(xùn)練,YOLOv5s 算法的平均精確度(mAP)達到了72.6%。 對網(wǎng)絡(luò)進行改進后,雖然實時檢測的Fps 略有降低,但是模型的mAP 提升了3.1%。 通過改進網(wǎng)絡(luò)架構(gòu)、優(yōu)化算法或采用更有效的訓(xùn)練策略,可以提高模型在目標(biāo)檢測任務(wù)上的性能。 網(wǎng)絡(luò)改進使得模型在mAP 上獲得了顯著的提升,通過權(quán)衡準確度和速度,可以選擇適合具體應(yīng)用場景的模型版本。

表1 算法測試結(jié)果
分析每一幀圖像,獲取人臉關(guān)鍵點數(shù)據(jù)并用于EAR、MAR 的計算和頭部姿態(tài)檢測。 一段檢測結(jié)束后統(tǒng)計PERCLOS 值、眨眼次數(shù)、哈欠次數(shù)、點頭次數(shù)以及各自持續(xù)的時間。 人疲勞時眼部特征最為明顯,所以先根據(jù)PERCLOS 值進行疲勞判斷。 當(dāng)PERCLOS 值>0.3 時,判定為疲勞狀態(tài)并發(fā)出警告。 哈欠以及點頭作為輔助的判斷依據(jù)。 在一段檢測過程中,當(dāng)動作次數(shù)或持續(xù)時間超過設(shè)定的閾值后,判定為重度疲勞狀態(tài)并產(chǎn)生警告。 若檢測結(jié)果通過了判定條件則判定當(dāng)前為清醒狀態(tài),重復(fù)判定過程直到視頻輸入結(jié)束。 算法檢測效果如圖5 所示(圖片中人臉是本文作者饒睿參與實驗所得)。

圖5 疲勞檢測效果
將YawDD 數(shù)據(jù)集[6]用于測試算法模型。 數(shù)據(jù)集給出的表格列出了不同視頻中的被測者狀態(tài)。 通過這個數(shù)據(jù)集可以有效測試算法準確率,評估算法性能。 將數(shù)據(jù)集中的50 段視頻用于算法準確性測試,測試結(jié)果如表2 所示,對于疲勞狀態(tài)的30 個視頻中28 個判定正確,準確率達到了93.3%,對于清醒狀態(tài)的20 個視頻中19 個判定正確,準確率達到了95.0%。 清醒狀態(tài)下的檢測準確率較低是因為誤把被測者說話的狀態(tài)判定為哈欠,算法總體準確率達到了94.0%。

表2 算法測試結(jié)果
本文實現(xiàn)了基于特征融合的疲勞檢測算法。 首先,使用改進的YOLOV5s 算法檢測人臉。 然后,利用回歸樹算法對齊人臉的68 個關(guān)鍵點,提取人臉關(guān)鍵點位置信息,并通過橫縱比判斷眼部和嘴部特征狀態(tài)。 同時,將二維坐標(biāo)的關(guān)鍵點信息與真實世界的坐標(biāo)相對應(yīng),計算頭部運動的歐拉角以判斷頭部姿態(tài)。 將這3 種狀態(tài)特征融合起來,判斷被測者疲勞狀態(tài)。 算法在測試集上的準確率達到94%。需要注意的是,算法首先要實現(xiàn)人臉檢測,只有檢測到人臉之后才能進行下一步的疲勞判定。 因此,在人臉檢測階段需要有較高的準確性。 未來的改進方向可以包括提高人臉檢測的準確率或者改進算法的疲勞判定條件。