劉覓涵,代歡歡
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)
隨著我國(guó)汽車保有量以及機(jī)動(dòng)車駕駛?cè)藬?shù)的不斷上升,交通事故的死亡人數(shù)也在直線上升,僅2017 年由于交通事故所導(dǎo)致的死亡人數(shù)就有63772 人,直接造成經(jīng)濟(jì)損失121311.3 萬元[1]。道路交通事故的影響因素可以歸納為人為因素、車輛因素以及其他因素,人為因素中駕駛員的分心駕駛占有很大的比例,例如在駕駛過程中查看手機(jī)、低頭撿拾物品、觀看路邊建筑等,都會(huì)導(dǎo)致駕駛員的視線離開道路,最終釀成不可挽回的后果。因此,實(shí)時(shí)監(jiān)測(cè)駕駛員的注意力很有必要。
近些年,有許多學(xué)者對(duì)于駕駛員注意力分析進(jìn)行了研究。例如,文獻(xiàn)[2]通過提取駕駛員臉部特征以及頭部姿態(tài),將這些信息送入一個(gè)隨機(jī)森林分類器進(jìn)行分類后得到駕駛員的注視區(qū)域,但是這種方法的泛化能力不強(qiáng),在跨個(gè)體上面的表現(xiàn)較差。文獻(xiàn)[3]和文獻(xiàn)[4]使用RGBD 相機(jī)通過圖像信息結(jié)合深度信息的方式得到駕駛員的姿態(tài)等相關(guān)信息進(jìn)而分析駕駛員的注意力,但是深度相機(jī)價(jià)格一般比較高昂不如普通相機(jī)普遍,并且深度相機(jī)的數(shù)據(jù)量更大,耗電量更高,在汽車這種移動(dòng)設(shè)備上面的實(shí)用性不高。
基于上述問題,本文提出一種基于普通RGB 相機(jī)的駕駛員注意力分析的方法,不依賴特定的駕駛員的駕駛數(shù)據(jù)集進(jìn)行訓(xùn)練且不需要深度相機(jī)如此高昂的設(shè)備,通過放置與駕駛員正前方的一個(gè)普通RGB 相機(jī)得到駕駛員的注視區(qū)域,進(jìn)而分析駕駛員的注意力。
本文提出的方法基于一個(gè)已標(biāo)定的RGB 相機(jī),首先通過相機(jī)獲取駕駛員的人臉位置以及人臉關(guān)鍵點(diǎn)信息,結(jié)合一個(gè)平均的3D 人臉模型[5],通過求解PNP(Perspective-N-Point)問題[6]得出駕駛員頭部的姿態(tài)信息,借助得到的姿態(tài)信息將駕駛員雙眼中心的法線投影到駕駛室的前方,以獲取駕駛員的注視的區(qū)域。進(jìn)而分析駕駛員的注意力。攝像機(jī)的放置位置如圖1 所示,平均3D 人臉模型如圖2 所示,算法的流程圖如圖3 所示。
圖1 相機(jī)安放位置
圖2 平均3D人臉模型
圖3 方法流程
頭部姿態(tài)的估計(jì)有很多種方法:按照輸入可分為基于RGB 圖像的和基于深度圖像的方法,其中基于RGB 圖像的方法又可以分為基于人臉關(guān)鍵點(diǎn)的和不基于人臉關(guān)鍵點(diǎn)的。
基于深度信息的方法,如文獻(xiàn)[7],通過RGB 圖像結(jié)合深度信息得出最后的頭部姿態(tài)。深度相機(jī)的優(yōu)點(diǎn)是能夠獲得極高的精度,但是深度相機(jī)相對(duì)于普通的RGB 相機(jī)來說功耗更高,在汽車這種移動(dòng)設(shè)備上會(huì)存在耗能問題,并且不如RGB 相機(jī)普及,其次深度相機(jī)的數(shù)據(jù)傳輸量更大使得傳輸時(shí)延更長(zhǎng)。這些局限性使得深度相機(jī)在駕駛員狀態(tài)監(jiān)控這種情景下并不實(shí)用。
在基于圖像的方法中,由于近些年來神經(jīng)網(wǎng)絡(luò),特別是卷積神經(jīng)網(wǎng)絡(luò)[8]在圖像領(lǐng)域的大放異彩,也有很多研究人員[9-10]嘗試使用神經(jīng)網(wǎng)絡(luò)回歸頭部的姿態(tài)角度,這種方法的優(yōu)點(diǎn)是在擁有足夠的數(shù)據(jù)集的情況下,能夠有較高的精度,但是標(biāo)注高精度的頭部姿態(tài)訓(xùn)練數(shù)據(jù)集耗時(shí)耗力,現(xiàn)有的高精度的頭部姿態(tài)數(shù)據(jù)集極少。并且,這些方法所得到的頭部姿態(tài)無法得知頭部的三維位置信息,而在這里卻恰恰是我們需要的。
基于RGB 圖像獲取頭部姿態(tài)的另一種方法是基于關(guān)鍵點(diǎn)的頭部姿態(tài)估計(jì),這種方法通過人臉關(guān)鍵點(diǎn)檢測(cè)所得到的人臉關(guān)鍵點(diǎn)集合,配合上3D 的人臉模型的關(guān)鍵點(diǎn)集合,通過求解PNP 問題得出頭部的姿態(tài)信息,其中人臉關(guān)鍵點(diǎn)檢測(cè)已經(jīng)是計(jì)算機(jī)視覺領(lǐng)域研究得十分深入的一個(gè)方向,有足夠的高精度的人臉關(guān)鍵點(diǎn)訓(xùn)練數(shù)據(jù)集,足以保證較高的泛化能力。
基于關(guān)鍵點(diǎn)的頭部姿態(tài)估計(jì)過程如下:
(1)人臉檢測(cè)
本文采用基于人臉關(guān)鍵點(diǎn)的頭部姿態(tài)估計(jì)方法,首先需要從輸入的圖像中獲得準(zhǔn)確的人臉位置,本文采用了S3FD(Single Shot Scale-invariant Face Detector)[11]作為人臉檢測(cè)器。相較于常用的通過SVM(Support Vector Machine)以及HOG(Histogram of Oriented Gradients)特征進(jìn)行人臉檢測(cè)的方法[12]擁有更低的誤檢率。而誤檢率對(duì)于我們這個(gè)項(xiàng)目來說是很重要的指標(biāo)。使用S3FD 預(yù)測(cè)的人臉邊界框結(jié)果如圖4 所示。
圖4 人臉檢測(cè)結(jié)果
(2)人臉關(guān)鍵點(diǎn)檢測(cè)
人臉關(guān)鍵點(diǎn)檢測(cè)又稱人臉對(duì)齊,在安防、駕駛員狀態(tài)分析、娛樂等領(lǐng)域有著廣泛的應(yīng)用。最早期的人臉特征點(diǎn)檢測(cè)方法主要是通過人臉紋理模型以及PCA 統(tǒng)計(jì)方法檢測(cè)人臉特征點(diǎn)的位置,例如主動(dòng)形狀模型(Active Shape Model,ASM)[12]和主動(dòng)表觀模型(Active Appearance Model,AAM)[13]。隨著深度學(xué)習(xí)的在計(jì)算機(jī)視覺領(lǐng)域的發(fā)展,也有越來越多的學(xué)者提出基于卷積神經(jīng)網(wǎng)絡(luò)的人臉特征點(diǎn)檢測(cè)算法[14-15],并取得了較好的成果。
如圖5 所示,本文使用FAN(Face Alignment Network)[16]作為人臉關(guān)鍵點(diǎn)檢測(cè)的方法,它采用圖6 所示的沙漏網(wǎng)絡(luò)層(Hourglass Block)[17]作為基本單元,沙漏網(wǎng)絡(luò)層與傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)層在結(jié)構(gòu)上不同。傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)通常多采取一種“自下而上”(由高分辨率到低分辨率)的結(jié)構(gòu),而沙漏網(wǎng)絡(luò)則采用了一種對(duì)稱的結(jié)構(gòu),既有“自下而上”又有“自上而下”(由低分辨率到高分辨率)的方法,使得網(wǎng)絡(luò)在提取局部特征的同時(shí)也能考慮到各個(gè)特征之間的空間結(jié)構(gòu)相關(guān)性,其次傳統(tǒng)神經(jīng)網(wǎng)絡(luò)回歸的關(guān)鍵點(diǎn)的二維坐標(biāo)信息是采用直接回歸坐標(biāo)值的方式,而FAN 對(duì)于每一個(gè)關(guān)鍵點(diǎn)預(yù)測(cè)一張熱力圖(heat map),熱力圖是一張和原始圖片形狀大小相同或者等比例的灰度圖,它的最大值點(diǎn)所在的位置代表了圖像的關(guān)鍵點(diǎn)所在的位置。
圖5 FAN 網(wǎng)絡(luò)結(jié)構(gòu)
圖6 沙漏網(wǎng)絡(luò)層結(jié)構(gòu)
沙漏網(wǎng)絡(luò)首先通過多組卷積層和池化層對(duì)輸入的特征圖進(jìn)行降采樣,然后通過多組上采樣層和卷積層將特征圖再次上采樣到原始特征圖的分辨率。由于池化層會(huì)丟失一些圖像中的細(xì)節(jié),在沙漏網(wǎng)絡(luò)中添加了跳層(skip layer)將丟失的細(xì)節(jié)帶回到上采樣后的特征圖里面去。這樣當(dāng)多個(gè)沙漏網(wǎng)絡(luò)重疊在一起的時(shí)候,這些網(wǎng)絡(luò)可以反復(fù)地處理這些特征圖以獲取更高層次的信息。這種基礎(chǔ)的網(wǎng)絡(luò)模型原本是用于人體姿態(tài)檢測(cè)(人體關(guān)鍵點(diǎn)檢測(cè)),在人臉關(guān)鍵點(diǎn)檢測(cè)方面也有不俗的表現(xiàn)。
本文采用Multi-PIE[18]的68 個(gè)關(guān)鍵點(diǎn)的規(guī)范來標(biāo)記人臉關(guān)鍵點(diǎn),其人臉關(guān)鍵點(diǎn)的分布如圖7 所示,通過上述方法的人臉關(guān)鍵點(diǎn)檢測(cè)結(jié)果如圖8 所示。
圖7 人臉關(guān)鍵點(diǎn)分布
圖8 關(guān)鍵點(diǎn)檢測(cè)結(jié)果
(3)基于PNP 算法的頭部姿態(tài)估計(jì)
在獲取了人臉的二維坐標(biāo)點(diǎn)之后,需要結(jié)合人臉三位坐標(biāo)點(diǎn)的信息求解頭部的姿態(tài)。本文所采用如圖9 所示的針孔相機(jī)成像模型,其中點(diǎn)P(X,Y,Z)為三維世界中的點(diǎn),p(u,v)為成像平面的點(diǎn),它們之間的對(duì)應(yīng)關(guān)系由式4 所示,式中:R 和t 分別為旋轉(zhuǎn)矩陣和平移向量,它們與相機(jī)的位姿有關(guān),矩陣M 是相機(jī)的內(nèi)參矩陣,可以通過對(duì)相機(jī)進(jìn)行標(biāo)定得出,s 是縮放因子。PNP 問題就是在已知一組互相對(duì)應(yīng)的三維世界中的P的點(diǎn)和成像平面上的對(duì)應(yīng)的二維坐標(biāo)點(diǎn)p 求解出式(3)中的R 和t。
圖9 針孔相機(jī)成像模型
求解PNP 問題已經(jīng)有很多的經(jīng)典解法,例如迭代法、P3P、EPNP、DLS 等,本文采用迭代法求解,其主要思想是:通過直接線性變換(Direct Linear Transformation,DLT)求得一組初始的R 和t,再通過萊文貝格-馬夸特方法(Levenberg-Marquardt algorithm)對(duì)重投影的誤差進(jìn)行優(yōu)化以得到最小化的數(shù)值解。
在本文中,三維世界中的點(diǎn)集為圖2 所示的平均三維人臉坐標(biāo)點(diǎn),成像平面上的點(diǎn)集為通過人臉關(guān)鍵點(diǎn)檢測(cè)所得到的二維坐標(biāo)點(diǎn)集。根據(jù)上述方法最終預(yù)測(cè)到的頭部姿態(tài)如圖10 所示。
圖10 頭部姿態(tài)估計(jì)結(jié)果
本文對(duì)于駕駛員的注意力分析是通過對(duì)駕駛員的注視區(qū)域進(jìn)行分類,以確保駕駛員的視線保持在與駕駛相關(guān)的區(qū)域上面。
在獲取到了駕駛員的頭部姿態(tài)(R,t)之后,本文采用如圖11 所示的射線投影的方法來估計(jì)注視區(qū)域。以駕駛員的雙眼中心為起點(diǎn)向駕駛艙前部發(fā)出射線,求出與求出射線與駕駛艙前部的交點(diǎn),以交點(diǎn)所在的位置作為駕駛員的注視位置。在圖11 中,駕駛員頭部的局部坐標(biāo)系為OmXmYmZm,相機(jī)坐標(biāo)系為OcXcYcZc。以(Om,nm)向量的方向發(fā)射一條射線與XcOcYc平面相交與點(diǎn)I(xi,yi),點(diǎn)I 就是我們要求的注視點(diǎn)。
圖11 注視區(qū)域估計(jì)方式
由于此時(shí)的(Om,nm)向量是在頭部局部坐標(biāo)系下表出的,而XcOcYc平面處在相機(jī)坐標(biāo)系下,無法進(jìn)行計(jì)算。此時(shí)需要進(jìn)行坐標(biāo)轉(zhuǎn)換,將(Om,nm)向量轉(zhuǎn)換到相機(jī)坐標(biāo)系下。
當(dāng)駕駛員頭部偏移時(shí),我們可以通過頭部姿態(tài)估計(jì)得到相應(yīng)的旋轉(zhuǎn)矩陣R,以及平移向量t,之后我們可以通過式(5)的方法,將人臉局部坐標(biāo)系下的(Om,nm)向量轉(zhuǎn)成為相機(jī)坐標(biāo)系下的(Omc,nmc),此后在相機(jī)坐標(biāo)系下可以由三角形相似的方法求出I 點(diǎn)的坐標(biāo)(xi,yi),我們令Omc=(Xs,Ys,Zs),nmc=(Xe,Ye,Ze),則可以用式(6)求出I 點(diǎn)的坐標(biāo)。
為了對(duì)駕員的注視區(qū)域進(jìn)行分析,本文對(duì)于駕駛區(qū)域的分類如圖12 所示,其中1 號(hào)左后視鏡,2 號(hào)左擋風(fēng)玻璃,3 號(hào)內(nèi)后視鏡,4 號(hào)右擋風(fēng)玻璃,5 號(hào)右擋風(fēng)玻璃,這五個(gè)區(qū)域作為與駕駛相關(guān)的區(qū)域,而6 號(hào)儀表盤,7 號(hào)中控臺(tái)作為與駕駛無關(guān)的區(qū)域。
圖12 駕駛員注視區(qū)域分類
對(duì)于頭部姿態(tài)估計(jì),通常是將人體的頭部作為剛體進(jìn)行的檢測(cè),但是在實(shí)際生活中人體的頭部并不是一個(gè)純剛體,人體有各種表情,其中人體嘴部及臉部輪廓是動(dòng)作最大的區(qū)域,對(duì)于使用PNP 算法來說所造成的誤差最大。例如,一個(gè)咧嘴的動(dòng)作會(huì)讓頭部的姿態(tài)估計(jì)在Roll 這個(gè)維度產(chǎn)生較大的誤差。為了證實(shí)這一觀點(diǎn)本文設(shè)計(jì)了一組實(shí)驗(yàn)來探討不同區(qū)域的關(guān)鍵點(diǎn)對(duì)于頭部姿態(tài)估計(jì)的誤差的影響。
本實(shí)驗(yàn)所采用的數(shù)據(jù)集是BIWI 數(shù)據(jù)集[19],BIWI數(shù)據(jù)集通過深度相機(jī)采集了15000 多張不同個(gè)體在不同頭部姿態(tài)下的圖片。它的頭部姿態(tài)的分布范圍是:俯仰角(pitch)±60°,偏航角(yaw)±75°,旋轉(zhuǎn)角(roll)±50°。該數(shù)據(jù)集給通過跟蹤每一個(gè)個(gè)體的三維點(diǎn)云信息獲得頭部的姿態(tài)。該數(shù)據(jù)集通常作為評(píng)估使用深度信息的方法的一個(gè)標(biāo)準(zhǔn)數(shù)據(jù)集,官方標(biāo)稱數(shù)據(jù)集的誤差在±1°。本文在實(shí)驗(yàn)測(cè)試過程中只使用,它的RGB 圖像以及對(duì)應(yīng)的真實(shí)頭部姿態(tài)信息,不使用深度信息。
表1 是使用本方法在不同關(guān)鍵點(diǎn)分布情況下在BIWI 數(shù)據(jù)集上面的平均誤差。其中第一行是保留了全部68 個(gè)關(guān)鍵點(diǎn)的頭部姿態(tài)估計(jì)結(jié)果,第二行是去除了人臉輪廓之后剩下的51 個(gè)關(guān)鍵點(diǎn)的集合,第三行是僅僅保留了人眼4 個(gè)角點(diǎn)、眉毛6 個(gè)點(diǎn)和鼻尖位置的11 個(gè)點(diǎn)的集合。在分別去除了人臉輪廓以及嘴部關(guān)鍵點(diǎn)之后,對(duì)于頭部姿態(tài)估計(jì)的誤差有了明顯的下降,驗(yàn)證了本文之前的設(shè)想。因此本文決定采用表1 所示的第三行的關(guān)鍵點(diǎn)集合。同時(shí),為了驗(yàn)證本文方法的性能,選擇了現(xiàn)有的頭部姿態(tài)估計(jì)的算法作為比較對(duì)象,它們?cè)贐IWI 數(shù)據(jù)集上能效性能效果如表2 所示。
表1 不同關(guān)鍵點(diǎn)分布的誤差分析
表2 與各種方法的比較
為了對(duì)所提方法的有效性進(jìn)行評(píng)估,本文收集了如圖13 所示的真實(shí)駕駛情況下的駕駛員注視區(qū)域的數(shù)據(jù)集。該數(shù)據(jù)集有三個(gè)不同的個(gè)體,戴眼鏡與不帶眼鏡,以及不同的性別和身高。每個(gè)個(gè)體需要注視7個(gè)區(qū)域,每個(gè)區(qū)域收集20 張圖片,三個(gè)個(gè)體共收集到圖片420 張。在該數(shù)據(jù)集上進(jìn)行測(cè)試得到了如表3 所示的混淆矩陣。各區(qū)域的平均準(zhǔn)確率為86.67%,滿足實(shí)際使用要求。
圖13 數(shù)據(jù)集部分圖片示例
表3 驗(yàn)證結(jié)果混淆矩陣
為了分析本方法的時(shí)間效能,本文統(tǒng)計(jì)了各個(gè)部分的計(jì)算用時(shí)。實(shí)驗(yàn)所采用的計(jì)算機(jī)配置為:CPU 為Intel 酷睿i3-4170,GPU 為英偉達(dá)GTX 1060,其中人臉檢測(cè)與人臉關(guān)鍵點(diǎn)檢測(cè)使用PyTorch 框架實(shí)現(xiàn),使用了GPU 并行加速計(jì)算,頭部姿態(tài)的解決使用了OpenCV中實(shí)現(xiàn)的solvePnP()方法。測(cè)試了3 分鐘的視頻,其平均幀率為8.97,各階段的平均計(jì)算耗時(shí)如表4 所示。從表中可以看出人臉和人臉關(guān)鍵點(diǎn)檢測(cè)耗費(fèi)了較多的時(shí)間,但是整體運(yùn)行時(shí)間能夠達(dá)到實(shí)時(shí)性的要求。
表4 時(shí)間性能分析
本文提出了一種基于RGB 相機(jī)的駕駛員注視區(qū)域檢測(cè)方法,使用人臉檢測(cè)、人臉關(guān)鍵點(diǎn)檢測(cè)以及圖形學(xué)中的坐標(biāo)變換的方法有效地獲取了駕駛員的注視區(qū)域。但是,由于本方法在輸入方面采用的是可見光源的方法,在夜間的效果不好,下一步將會(huì)考慮將加入紅外光源,以增加在夜間的適用性。時(shí)間方面,算法在人臉檢測(cè)和關(guān)鍵點(diǎn)檢測(cè)階段的時(shí)間復(fù)雜度較高,可以考慮將兩個(gè)神經(jīng)網(wǎng)絡(luò)合成一個(gè)多任務(wù)的網(wǎng)絡(luò),使其能夠復(fù)用前面的網(wǎng)絡(luò)層學(xué)到的特征,進(jìn)而減少在人臉部分的時(shí)間開支,使系統(tǒng)有更高的實(shí)時(shí)性。此外通過實(shí)驗(yàn)分析可以看到,本方法對(duì)于區(qū)域3、6、7 的預(yù)測(cè)精度較差,主要是由于這些區(qū)域的頭部轉(zhuǎn)動(dòng)角度較小,眼球轉(zhuǎn)動(dòng)較大,因此下一步還可以眼球注視方向估計(jì)以增強(qiáng)注視區(qū)域估計(jì)的準(zhǔn)確度。