廖冬杰
(1.華東交通大學(xué),南昌 330013;2.江西省先進(jìn)控制與優(yōu)化重點(diǎn)實(shí)驗(yàn)室,南昌 330013)
主題詞:哈欠檢測(cè) Dlib 哈欠特征矩陣 變種Transformer YawDD
疲勞駕駛是造成交通事故的主要原因之一[1],而打哈欠是駕駛員疲勞初期的主要表現(xiàn)形式之一[2]。因此,研究駕駛員疲勞初期的哈欠特征,從而進(jìn)行準(zhǔn)確檢測(cè),對(duì)保障道路交通安全具有重要意義。
國(guó)內(nèi)外研究人員針對(duì)哈欠檢測(cè)已進(jìn)行了大量的研究。馬素剛等[3]充分關(guān)注人臉的各種特征,以駕駛員面部圖片作為輸入,通過(guò)卷積核進(jìn)行特征提取,并利用Softmax 分類器判斷駕駛員是否打哈欠,但只關(guān)注了單幀圖像的分類,沒(méi)有充分利用多幀圖像在時(shí)間維度上的關(guān)聯(lián)性,可能把講話、唱歌、大笑等張嘴行為誤檢測(cè)為打哈欠。Mateusz Knapik 等[4]對(duì)熱成像視頻進(jìn)行人臉區(qū)域檢測(cè),提出眼角檢測(cè)算法,實(shí)現(xiàn)了人臉對(duì)齊,通過(guò)檢測(cè)嘴部區(qū)域的快速溫度變化判斷駕駛員的打哈欠行為,但未考慮大幅度張嘴呼吸以及咳嗽等特殊情況。史瑞鵬等人[5]提出了一種基于多任務(wù)卷積神經(jīng)網(wǎng)絡(luò)(Multi-Task Convolutional Neural Network,MTCNN)的加速優(yōu)化算法,對(duì)圖像中駕駛員是否存在張嘴行為進(jìn)行分類,以嘴部持續(xù)張開(kāi)時(shí)間作為評(píng)判駕駛員是否打哈欠的標(biāo)準(zhǔn),但此類方法分類標(biāo)準(zhǔn)無(wú)法準(zhǔn)確度量,無(wú)法確定嘴部持續(xù)張開(kāi)時(shí)間閾值,只能根據(jù)經(jīng)驗(yàn)給出,無(wú)法達(dá)到最優(yōu)效果。王超等[6]提出只關(guān)注嘴部圖像,利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和長(zhǎng)短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)對(duì)視頻進(jìn)行空間和時(shí)間的特征提取,從而實(shí)現(xiàn)哈欠檢測(cè),但是這類方法哈欠檢測(cè)特征單一,未考慮眼部等特征與哈欠行為的關(guān)聯(lián),缺乏全面性。
本文基于Dlib 和變種Transformer[7]模型,針對(duì)哈欠檢測(cè)特征單一的問(wèn)題,同時(shí)關(guān)注左右眼部、嘴部的特征變化,構(gòu)建包含直接哈欠特征和隱含哈欠特征的哈欠特征矩陣,有效避免駕駛員嘴部呼吸、咳嗽等嘴部特殊情況的誤檢;針對(duì)無(wú)法度量閾值的問(wèn)題,采用深度學(xué)習(xí)的方法,利用變種Transformer 模型進(jìn)行隱含哈欠特征提取,并實(shí)現(xiàn)哈欠分類,提高算法的準(zhǔn)確性;針對(duì)幀與幀之間缺乏聯(lián)系的問(wèn)題,引進(jìn)多頭注意力機(jī)制和序列編碼,以降低檢測(cè)中大笑、說(shuō)話等情況的誤檢可能性。
Dlib是一個(gè)包含眾多機(jī)器學(xué)習(xí)算法、圖像處理和數(shù)值計(jì)算等豐富功能的開(kāi)源工具箱,廣泛應(yīng)用于人臉識(shí)別、分類等領(lǐng)域。Transformer模型是一種自然語(yǔ)言處理模型,由編碼器(Encoder)和解碼器(Decoder)組成[7],可以完成特征提取,同時(shí)捕獲遠(yuǎn)距離的依賴關(guān)系,實(shí)現(xiàn)分類和生成等功能。本文旨在實(shí)現(xiàn)駕駛員哈欠檢測(cè),故提出基于Dlib和變種Transformer的哈欠檢測(cè)方法,其原理如圖1所示。
圖1 哈欠檢測(cè)原理
本文提出的哈欠檢測(cè)方法主要包含3個(gè)部分:
a.人臉檢測(cè)和關(guān)鍵點(diǎn)定位。通過(guò)基于集成回歸樹(shù)(Ensemble of Regression Trees,ERT)的Dlib 算法進(jìn)行人臉檢測(cè)以及68點(diǎn)關(guān)鍵點(diǎn)定位。
b.哈欠特征矩陣構(gòu)建。根據(jù)定位關(guān)鍵點(diǎn)坐標(biāo)提取眼部、嘴部直接哈欠特征,得到每幀的哈欠特征向量,在時(shí)間維度進(jìn)行堆積,構(gòu)建包含直接哈欠特征和隱含哈欠特征的視頻哈欠特征矩陣。
c.哈欠檢測(cè)。在得到視頻哈欠特征矩陣的基礎(chǔ)上,利用變種Transformer 模型進(jìn)行特征提取和視頻分類,完成對(duì)視頻中是否有打哈欠行為的檢測(cè)。
Dlib 人臉關(guān)鍵點(diǎn)定位使用了Vahid Kazemi 等人提出的ERT級(jí)聯(lián)回歸算法[8],該算法構(gòu)建了級(jí)聯(lián)的梯度提升決策樹(shù)(Gradient Boosting Decision Tree,GBDT),使得預(yù)測(cè)的人臉形狀即關(guān)鍵點(diǎn)不斷回歸到真實(shí)位置[9],其基本思想是:每一個(gè)GBDT 的每個(gè)葉子節(jié)點(diǎn)均儲(chǔ)存著殘差回歸量,當(dāng)輸入經(jīng)過(guò)某一葉子節(jié)點(diǎn)時(shí),將當(dāng)前輸入和葉子節(jié)點(diǎn)儲(chǔ)存的殘差回歸量相加,起到回歸作用,所有殘差回歸量相加后,即可獲得預(yù)測(cè)的人臉形狀。與傳統(tǒng)算法相比,ERT 算法具有較出色的準(zhǔn)確率和檢測(cè)速度,同時(shí)還能夠處理數(shù)據(jù)缺失的問(wèn)題[8]。ERT 算法核心表達(dá)式為:
式中,S為由p個(gè)關(guān)鍵點(diǎn)坐標(biāo)組成的人臉真實(shí)形狀;∈R2(i=1,2,…,p)為面部圖像I的第i個(gè)關(guān)鍵點(diǎn)的坐標(biāo);為第t次的人臉估計(jì)形狀;為第t次計(jì)算得到的殘差回歸量。
考慮到Dlib 在人臉檢測(cè)和人臉關(guān)鍵點(diǎn)檢測(cè)上的出色能力,本文利用Dlib提供的人臉關(guān)鍵點(diǎn)模型[10]對(duì)車內(nèi)駕駛員的68個(gè)人臉關(guān)鍵點(diǎn)進(jìn)行檢測(cè),結(jié)果如圖2所示,試驗(yàn)證明,Dlib人臉關(guān)鍵點(diǎn)檢測(cè)算法在車內(nèi)環(huán)境中有著優(yōu)秀的關(guān)鍵點(diǎn)定位能力。因此,利用Dlib人臉關(guān)鍵點(diǎn)模型分析駕駛員疲勞時(shí)的眼部和嘴部哈欠特征是可行的。
圖2 車內(nèi)環(huán)境人臉檢測(cè)關(guān)鍵點(diǎn)
眼睛和嘴是駕駛員在打哈欠時(shí)表現(xiàn)最為突出的部分。本文利用Dlib人臉關(guān)鍵點(diǎn)模型得到人臉關(guān)鍵點(diǎn),提取眼部的12個(gè)關(guān)鍵點(diǎn)坐標(biāo)信息、嘴部的6個(gè)關(guān)鍵點(diǎn)坐標(biāo)信息,如圖3、圖4所示,以眼部和嘴部張度作為直接哈欠特征,得到視頻幀哈欠特征向量,再按照時(shí)間維度堆積,構(gòu)建包含嘴部持續(xù)張開(kāi)時(shí)間、眼睛閉合時(shí)間比例(Percentage Eyelid Closure over the Pupil over Time,PERCLOS)等隱含哈欠特征的視頻哈欠特征矩陣,從而進(jìn)行哈欠行為檢測(cè)。
圖3 眼部關(guān)鍵點(diǎn)
圖4 嘴部關(guān)鍵點(diǎn)
3.2.1 眼部哈欠特征
根據(jù)Soukupová等人[11]提出的觀點(diǎn),駕駛員眼部開(kāi)合程度的改變可以通過(guò)眼部縱橫比(Eye Aspect Ratio,EAR)的變化來(lái)表征。用pi表示圖3、圖4 中編號(hào)為i的點(diǎn),左、右眼眼部縱橫比Real和Rear的計(jì)算公式為:
John Sofia Jennifer 提出,為了定位角度更為寬廣的朝向角,不必同時(shí)考慮2 只眼睛,僅使用單眼檢測(cè)即可達(dá)到出色效果[12],但本文考慮到駕駛員可能存在揉眼、扭頭等行為造成實(shí)際僅能檢測(cè)到1 只眼睛的情況,將左、右眼部縱橫比均作為哈欠特征。
3.2.2 嘴部哈欠特征
鑒于人在打哈欠時(shí),嘴部的張合程度會(huì)發(fā)生明顯改變,因此類比于Soukupová提出的眼部縱橫比,本文引入一種評(píng)估嘴部開(kāi)合程度的新指標(biāo)——嘴部縱橫比(Mouth Aspect Ratio,MAR)。考慮到不同駕駛員嘴部的厚度差別,根據(jù)嘴唇的相關(guān)關(guān)鍵點(diǎn)進(jìn)行特征提取:
式中,RMA為嘴部縱橫比。
至此,已經(jīng)根據(jù)人臉關(guān)鍵點(diǎn)模型提取出眼部和嘴部的哈欠特征,將這些特征組合在一起,形成視頻幀哈欠特征向量。
3.2.3 特征矩陣構(gòu)建
基于駕駛員駕駛狀態(tài)的視頻采集圖像,提取每個(gè)視頻幀Real、Rear、RMA特征值,獲得單幀的哈欠特征向量Vec:
式中,Reali、Reari、RMAi分別為第i個(gè)視頻幀的左、右眼眼部縱橫比和嘴部縱橫比;n為視頻所含視頻幀數(shù)量。
若將特征向量按照時(shí)間維度進(jìn)行堆積,得到視頻特征矩陣HQ:
由于存在時(shí)間信息,HQ除了包含視頻每幀的左、右眼部縱橫比和嘴部縱橫比等直接哈欠特征以外,還包含嘴部持續(xù)張開(kāi)時(shí)間、短時(shí)間內(nèi)是否存在嘴部張度大幅度改變、單位時(shí)間眨眼次數(shù)、PERCLOS 等隱含哈欠特征,為后續(xù)分辨駕駛員是否存在哈欠行為奠定了基礎(chǔ)。
李小平等[13]通過(guò)LSTM 對(duì)得到的駕駛員疲勞特征矩陣進(jìn)行分類,從而判斷駕駛員是否處于疲勞狀態(tài)。盧喜東等人[14]通過(guò)深度森林方法對(duì)方向梯度直方圖(Histogram of Oriented Gradient,HOG)特征矩陣進(jìn)行惡意代碼分類。本文選擇變種Transformer模型提取HQ的隱含哈欠特征,從而完成對(duì)視頻中駕駛員是否打哈欠的分類,因?yàn)門ransformer通過(guò)注意力機(jī)制可以捕獲遠(yuǎn)距離依賴關(guān)系,并可實(shí)現(xiàn)循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)不能實(shí)現(xiàn)的并行訓(xùn)練功能,結(jié)構(gòu)如圖5所示。
圖5 Transformer模型結(jié)構(gòu)
圖5 中,編碼器部分的輸入為詞向量矩陣,考慮到單詞間的順序,為每個(gè)詞向量添加了位置編碼,計(jì)算公式分別為:
式中,P(s,2i)、P(s,2i+1)分別為句子中第s個(gè)單詞偶數(shù)維度/奇數(shù)維度的位置編碼;dmodel為位置編碼的維度。
將經(jīng)過(guò)位置編碼的詞向量矩陣作為自注意力(Self-Attention)層的輸入,得到查詢矩陣、鍵矩陣和值矩陣,如圖6所示。
圖6 矩陣實(shí)現(xiàn)自注意力機(jī)制示意
圖6 中,X為位置編碼后的詞向量矩陣;x1、x2分別為經(jīng)過(guò)位置編碼第1個(gè)和第2個(gè)單詞的詞向量;WQ、WK、WV為訓(xùn)練好權(quán)重的線性變換矩陣;Q、K、V分別為X的查詢矩陣、鍵矩陣和值矩陣。
Q與KT相乘,得到詞向量與其他詞向量之間的關(guān)聯(lián)性,為了維護(hù)梯度的穩(wěn)定性,除以,通過(guò)Softmax 函數(shù)得到該詞向量與其他詞向量關(guān)聯(lián)性的權(quán)重,再與詞向量包含的信息V相乘,可得:
式中,A(Q,K,V)為自注意力層輸出;dK為鍵矩陣K的維度。
為了學(xué)習(xí)到更多獨(dú)立信息,充分關(guān)注不同子空間,引進(jìn)多頭注意力機(jī)制[7],設(shè)hi為第i個(gè)子空間的自注意力層輸出,將m個(gè)子空間的hi進(jìn)行橫向拼接得到多頭拼接矩陣,通過(guò)線性變換矩陣Wo將多頭拼接矩陣變換成與X相同形狀:
考慮到網(wǎng)絡(luò)中可能出現(xiàn)的退化問(wèn)題,將X與M進(jìn)行連接,再進(jìn)行層標(biāo)準(zhǔn)化,得到前饋神經(jīng)網(wǎng)絡(luò)輸入Of:
式中,LayerNorm為層標(biāo)準(zhǔn)化函數(shù)。
將Of通過(guò)由線性層、線性整流函數(shù)(Rectified Linear Unit,ReLU)層和線性層構(gòu)成的前饋神經(jīng)網(wǎng)絡(luò)進(jìn)行殘差連接和層標(biāo)準(zhǔn)化,結(jié)束模型的編碼器部分,公式為:
式中,Os為前饋神經(jīng)網(wǎng)絡(luò)的輸出;Ot為編碼器部分的輸出;W1、b1分別為第1層線性層的參數(shù)矩陣和偏置;W2、b2分別為第2層線性層的參數(shù)矩陣和偏置。
Ot經(jīng)過(guò)模型的解碼器部分,連接一個(gè)線性層,通過(guò)Softmax進(jìn)行分類,完成整個(gè)Transformer模型的構(gòu)建。
由于Transformer 的解碼器部分主要完成生成類功能,而疲勞駕駛哈欠檢測(cè)只需要實(shí)現(xiàn)哈欠特征的分類任務(wù)即可,故本文提出一種只使用編碼器部分的變種Transformer模型。其基本思想是:在繼承Transformer模型編碼器部分的基礎(chǔ)上,對(duì)輸入嵌入、位置編碼以及輸出層進(jìn)行了改進(jìn),整體結(jié)構(gòu)如圖7所示。
圖7 變種Transformer模型結(jié)構(gòu)
圖7 中,模型的輸入不再是詞向量矩陣,而是經(jīng)過(guò)Dlib 檢測(cè)算法構(gòu)建的如式(7)所示的疲勞特征矩陣HQ,如圖8所示,設(shè)為序列編碼的維度,利用維的矩陣W*,得到線性變換Ⅰ的輸出:
圖8 HQ變換示意
為了充分考慮各視頻幀之間的時(shí)間先后順序,將進(jìn)行序列編碼:
式中,S(q,2j)、S(q,2j+1)為視頻中第q幀視頻幀偶數(shù)維度、奇數(shù)維度的序列編碼。
根據(jù)式(10),得到其他視頻幀包含的該視頻幀信息,通過(guò)式(11)和式(12),多個(gè)子空間充分挖掘?qū)W習(xí)視頻幀相關(guān)信息,之后根據(jù)式(13)~式(15),得到變種Transformer模型編碼器部分的輸出,通過(guò)圖9所示的變換,利用維的線性變換矩陣Wα得到線性變換Ⅱ的輸出O:
圖9 變換示意
如圖10所示,利用(n×1)維的矩陣Wβ對(duì)O的轉(zhuǎn)置矩陣OT進(jìn)行線性變換,得到線性變換Ⅲ的輸出Oμ:
圖10 Oε 變換示意
最終分類結(jié)果為:
式中,Ans為視頻分類結(jié)果;為Oμ的轉(zhuǎn)置矩陣。
本文提出的變種Transformer 模型充分考慮視頻幀之間的關(guān)聯(lián)性,且引入序列編碼使得視頻幀時(shí)間維度得以關(guān)聯(lián),通過(guò)多頭注意力機(jī)制和多層線性變換,可以實(shí)現(xiàn)對(duì)哈欠特征矩陣的分類。
為了驗(yàn)證所提出方法的有效性,本文基于YawDD數(shù)據(jù)集[15]進(jìn)行訓(xùn)練和測(cè)試,與其他方法進(jìn)行準(zhǔn)確率的對(duì)比:
式中,Ac為準(zhǔn)確率;TP、FP分別為被模型預(yù)測(cè)為哈欠的哈欠視頻、其他視頻數(shù)量;FN、TN分別為被模型預(yù)測(cè)為其他的哈欠視頻、其他視頻數(shù)量。
YawDD 數(shù)據(jù)集是一個(gè)公開(kāi)的視頻數(shù)據(jù)集,視頻分辨率均為680×480,幀率為30 幀/s,包含2 個(gè)子數(shù)據(jù)集,分別由固定在后視鏡下方的攝像頭拍攝的視頻和由固定在組合儀表上方的攝像頭拍攝的視頻組成[15]??紤]到角度問(wèn)題以及人臉關(guān)鍵點(diǎn)定位精準(zhǔn)度,本文主要以第2 個(gè)子數(shù)據(jù)集為研究對(duì)象。該子數(shù)據(jù)集中的每個(gè)視頻包含不同的駕駛員,且駕駛員在同一個(gè)視頻里面包含講話、大笑、唱歌、打哈欠等行為,不能直接用來(lái)進(jìn)行駕駛員哈欠檢測(cè),因此本文采用人工重構(gòu)數(shù)據(jù)集的方法對(duì)數(shù)據(jù)集進(jìn)行處理,得到新的數(shù)據(jù)集DX-YawDD:即將每個(gè)視頻中出現(xiàn)的打哈欠視頻片段單獨(dú)裁剪出來(lái),作為哈欠數(shù)據(jù)集,將每個(gè)視頻的其他視頻片段按照每段視頻3~10 s 進(jìn)行隨機(jī)切割,得到新的視頻集,作為其他數(shù)據(jù)集。經(jīng)過(guò)處理后,DX-YawDD 數(shù)據(jù)集中共包含71 個(gè)哈欠數(shù)據(jù)集視頻,344個(gè)其他數(shù)據(jù)集視頻。
本文試驗(yàn)環(huán)境配置如下:服務(wù)器處理器為Intel Core i7-9750H CPU @ 2.60 GHz,安裝內(nèi)存為8 GB,在Windows10環(huán)境下,在Pytorch深度學(xué)習(xí)框架下搭建了基于Dlib 和變種Transformer 哈欠檢測(cè)模型,使用數(shù)據(jù)集DX-YawDD 進(jìn)行模型訓(xùn)練和性能測(cè)試。其中,模型測(cè)試集共有125個(gè)視頻,包括隨機(jī)選取的22個(gè)打哈欠視頻和103個(gè)其他視頻,剩下的49個(gè)哈欠視頻和241個(gè)其他視頻組成模型訓(xùn)練集。
基于訓(xùn)練數(shù)據(jù)集,選擇變種Transformer模型的損失函數(shù)為交叉熵?fù)p失函數(shù),采用隨機(jī)梯度下降優(yōu)化器,學(xué)習(xí)率為0.001,動(dòng)量為0.99,得到圖11所示的損失函數(shù)曲線。
圖11 訓(xùn)練損失函數(shù)曲線
由圖11可知,當(dāng)訓(xùn)練1 700次時(shí),損失函數(shù)收斂,此時(shí)模型訓(xùn)練的準(zhǔn)確率為100%。模型在測(cè)試數(shù)據(jù)集上的哈欠檢測(cè)結(jié)果如表1所示,準(zhǔn)確率達(dá)到96.8%,召回率為95.5%,表明本方法哈欠漏檢率較低。
表1 測(cè)試集哈欠檢測(cè)結(jié)果
將本文方法與其他哈欠檢測(cè)算法基于DX-YawDD數(shù)據(jù)集進(jìn)行對(duì)比驗(yàn)證,不同算法的哈欠檢測(cè)準(zhǔn)確率如表2所示。
表2 不同算法哈欠檢測(cè)準(zhǔn)確率
由表2可知,本文算法的檢測(cè)準(zhǔn)確率為96.8%,高于其他檢測(cè)算法。這是因?yàn)楸疚乃惴ňC合考慮了眼部、嘴部的哈欠特征,構(gòu)建了包含有直接、隱含哈欠特征的視頻特征矩陣,利用變種Transformer模型進(jìn)行特征提取和分類,關(guān)注了各視頻幀之間的聯(lián)系,捕捉到遠(yuǎn)距離視頻幀之間的依賴特性,提高算法的準(zhǔn)確性。
針對(duì)現(xiàn)有駕駛員哈欠檢測(cè)時(shí),哈欠特征單一、分類閾值無(wú)法度量、視頻圖像中幀與幀之間缺乏聯(lián)系等問(wèn)題,本文提出了基于Dlib 和變種Transformer 算法,通過(guò)公開(kāi)數(shù)據(jù)集YawDD 進(jìn)行測(cè)試,本文算法的哈欠檢測(cè)準(zhǔn)確率高達(dá)96.8%,可以應(yīng)用于駕駛員疲勞駕駛初期哈欠檢測(cè)任務(wù),對(duì)避免駕駛員疲勞駕駛,保障人員和道路安全具有積極作用。
同時(shí),利用本文算法進(jìn)行哈欠檢測(cè)時(shí),雖然多方面考慮了人臉特征點(diǎn)對(duì)于哈欠檢測(cè)的作用,但還存在面部特征挖掘不充分等缺陷,下一步可以通過(guò)3D 卷積等方法進(jìn)行挖掘,避免顯式的哈欠特征提取,進(jìn)一步簡(jiǎn)化算法,提高準(zhǔn)確率與魯棒性。