李雨嶠
摘 ? 要:為了評(píng)估學(xué)生的上課行為,文章采用最新的頭部姿態(tài)估計(jì)技術(shù)。此項(xiàng)技術(shù)能夠捕捉當(dāng)前人頭部所做的各種動(dòng)作與角度,例如低頭、轉(zhuǎn)頭、仰頭等。低頭是大多數(shù)學(xué)生課堂上使用手機(jī)的慣用姿勢(shì),可以利用此項(xiàng)技術(shù)來(lái)監(jiān)測(cè)其頭部姿態(tài)從而進(jìn)行評(píng)估。考慮到人臉檢測(cè)的定位準(zhǔn)確度問(wèn)題,以及學(xué)生低頭的動(dòng)作不一定是使用手機(jī),文章同時(shí)引入了無(wú)線信號(hào)偵測(cè)技術(shù),捕獲并檢測(cè)當(dāng)前教室里由于學(xué)生使用手機(jī)造成信號(hào)頻繁收發(fā)的終端位置,與人臉檢測(cè)的定位相結(jié)合,交叉定位,從而獲得更精準(zhǔn)的定位效果。
關(guān)鍵詞:人臉檢測(cè);頭部姿態(tài)估計(jì);無(wú)線信號(hào)偵測(cè)
本項(xiàng)目考慮到課堂使用情景,因此擬將使用便捷、功能齊全的Jetson TX2開(kāi)發(fā)板作為主要開(kāi)發(fā)平臺(tái)。人臉檢測(cè)方面,為了提高識(shí)別效率與準(zhǔn)確率,使用Dlib庫(kù)的機(jī)器學(xué)習(xí)算法與庫(kù),實(shí)現(xiàn)基于深度學(xué)習(xí)的人臉檢測(cè)功能。采樣方面,文章使用了ZED雙目攝像頭,其視角較廣、分辨率高,同時(shí)有著景深探測(cè)的功能。無(wú)線信號(hào)偵測(cè)方面,使用無(wú)線網(wǎng)卡與天線結(jié)合來(lái)實(shí)現(xiàn)信號(hào)數(shù)據(jù)抓包,并通過(guò)tcpdump和wireshark進(jìn)行解析[1]。
1 ? ?基于深度學(xué)習(xí)和 CNN 算法的人臉檢測(cè)
關(guān)于人臉檢測(cè),目前有許多經(jīng)典算法,其中比較傳統(tǒng)的例如特征臉?lè)?,其原理是先將圖像灰度化,然后將圖像每行首尾相接拉成列向量。為了降低運(yùn)算量,需要使用PCA降維,并使用分類器進(jìn)行分類,可以使用 KNN,SVM、神經(jīng)網(wǎng)絡(luò)等。其中卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)是近幾年興起的神經(jīng)網(wǎng)絡(luò),可以實(shí)現(xiàn)圖片的特征提取和降維,并且由于使用到了GPU進(jìn)行輔助計(jì)算,效果比傳統(tǒng)的檢測(cè)算法要好得多[2]。
1.1 ?訓(xùn)練模型
卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程分為兩個(gè)階段。第一個(gè)階段是數(shù)據(jù)由低層次向高層次傳播的階段,即前向傳播階段。另一個(gè)階段是,當(dāng)前向傳播得出的結(jié)果與預(yù)期不相符時(shí),將誤差從高層次向底層次進(jìn)行傳播訓(xùn)練的階段,即反向傳播階段。訓(xùn)練過(guò)程為:
(1)網(wǎng)絡(luò)進(jìn)行權(quán)值的初始化。
(2)輸入數(shù)據(jù)經(jīng)過(guò)卷積層、下采樣層、全連接層的前向傳播得到輸出值。
(3)求出網(wǎng)絡(luò)的輸出值與目標(biāo)值之間的誤差。
(4)當(dāng)誤差大于期望值時(shí),將誤差傳回網(wǎng)絡(luò)中,依次求得全連接層、下采樣層、卷積層的誤差。各層的誤差可以理解為對(duì)于網(wǎng)絡(luò)的總誤差,網(wǎng)絡(luò)應(yīng)承擔(dān)多少;當(dāng)誤差等于或小于期望值時(shí),結(jié)束訓(xùn)練。
(5)根據(jù)求得誤差進(jìn)行權(quán)值更新,然后進(jìn)入第二步。
1.2 ?檢測(cè)人臉
得到訓(xùn)練后的人臉模型后,使用分類器將圖片或者視頻流輸入并得到識(shí)別后的輸出。文章采用了Dlib庫(kù)的框架和算法進(jìn)行檢測(cè),首先,將攝像頭捕獲的圖片流進(jìn)行預(yù)處理,例如裁剪、灰度化;其次,使用dlib.cnn_face_detection_model方法進(jìn)行識(shí)別處理。一旦圖片中包含條件足夠識(shí)別出的人臉,該方法會(huì)返回人臉矩形框架的坐標(biāo)矩陣,分別對(duì)應(yīng)人臉框架的左上角、右下角,并在圖片中將人臉框出[3]。
一開(kāi)始采用的并非CNN算法,而是使用的傳統(tǒng)特征提取,雖然也能做到檢測(cè)人臉,但是當(dāng)達(dá)到一定距離,人臉較小,或者光線不夠充足時(shí),檢測(cè)效果便會(huì)大打折扣。而使用了CNN算法之后,即使是較為黑暗的光線環(huán)境或者較遠(yuǎn)的距離,依然能夠做到準(zhǔn)確識(shí)別[4]。
2 ? ?頭部姿態(tài)估計(jì)
頭部姿態(tài)估計(jì)(Head pose Estimation,HPE)是通過(guò)一幅面部圖像來(lái)獲得頭部姿態(tài)角的算法,跟飛機(jī)飛行的原理類似,即計(jì)算pitch,yaw和roll這3個(gè)歐拉角,學(xué)名分別為俯仰角、偏航角和滾轉(zhuǎn)角,其算法步驟一般為:
(1)2D 人臉關(guān)鍵點(diǎn)檢測(cè)。
(2)3D 人臉模型匹配。
(3)求解 3D 點(diǎn)和對(duì)應(yīng) 2D 點(diǎn)的轉(zhuǎn)換關(guān)系。
(4)根據(jù)旋轉(zhuǎn)矩陣求解歐拉角。
2.1 ?2D人臉關(guān)鍵點(diǎn)檢測(cè)
根據(jù)前一項(xiàng)人臉檢測(cè)的結(jié)果,在獲得了人臉的矩形區(qū)域后,便對(duì)其內(nèi)的人臉進(jìn)行關(guān)鍵點(diǎn)檢測(cè)。檢測(cè)過(guò)程同樣采用了Dlib庫(kù)的分類算法,引入了經(jīng)典的人臉68特征點(diǎn)模型("shape_predictor_68_face_landmarks.dat")進(jìn)行匹配。為了簡(jiǎn)化算法并節(jié)約資源,本文只取以下幾個(gè)特征點(diǎn):鼻尖、雙頰、左眼角、右眼角、左嘴角、右嘴角,便足以表示一個(gè)臉的特征。
2.2 ?3D人臉模型匹配
Dlib算法中內(nèi)置了一個(gè)3D人臉模型,把關(guān)鍵點(diǎn)的空間位置全部標(biāo)記出來(lái),充當(dāng)真實(shí)臉的空間位置。
然而,一個(gè)3D模型不能表示所有的人臉,即對(duì)所有人采用同一個(gè)3D人臉模型并不精確,因此,引入三維形變模型(3D Morphable Model,3DMM),對(duì)不同人可以擬出相應(yīng)的3D臉模型,可以使得關(guān)鍵空間點(diǎn)的位置更加精確,但代價(jià)是計(jì)算量變大。
2.3 ?關(guān)系轉(zhuǎn)化與求解歐拉角
一個(gè)物體對(duì)于相機(jī)的姿態(tài)可以用兩個(gè)矩陣表示:平移矩陣和旋轉(zhuǎn)矩陣。其中平移矩陣是指物體相對(duì)于相機(jī)的空間位置關(guān)系矩陣,用T表示;旋轉(zhuǎn)矩陣指物體相對(duì)于相機(jī)的空間姿態(tài)關(guān)系矩陣,用 R 表示。
為了使現(xiàn)實(shí)空間的坐標(biāo)能夠和圖片中像素的坐標(biāo)形成映射,需要引入世界坐標(biāo)系(UVW)、相機(jī)坐標(biāo)系(XYZ)、圖像中心坐標(biāo)系(uv)和像素坐標(biāo)系(xy),轉(zhuǎn)換關(guān)系如下。
世界坐標(biāo)系到相機(jī)坐標(biāo)系:
相機(jī)坐標(biāo)系到像素坐標(biāo)系:
因此,像素坐標(biāo)系和世界坐標(biāo)系的關(guān)系如下:
如此,得到世界坐標(biāo)系中點(diǎn)的位置、像素坐標(biāo)位置和相機(jī)參數(shù)便可以知道旋轉(zhuǎn)和平移矩陣。
求解歐拉角:
這3個(gè)角是文章提到的俯仰角、偏航角和滾轉(zhuǎn)角了,用 y,x,z 來(lái)表示。只要取其中的y,即俯仰角,便可判斷學(xué)生的抬頭低頭姿態(tài)。
3 ? ?基于雙目攝像頭的空間測(cè)距
要獲取目標(biāo)學(xué)生的位置,需要得到該對(duì)象相對(duì)于攝像頭的角度和距離。在距離方面,普通的攝像頭無(wú)法獲取二維圖像中對(duì)象的景深距離,因此使用了ZED雙目景深攝像頭來(lái)完成這一功能。雙目攝像頭的原理與人眼相似,通過(guò)對(duì)兩幅圖像視差的計(jì)算,直接對(duì)前方景物(圖像所拍攝到的范圍)進(jìn)行距離測(cè)量,而無(wú)需判斷前方出現(xiàn)的是什么類型的障礙物。
ZED雙目攝像頭的強(qiáng)大之處在于可以自己計(jì)算拍攝得到景物的景深3D點(diǎn)云圖,便可以憑借景深圖獲取到圖像中任意一點(diǎn)的深度Z。
對(duì)于空間中的任意一點(diǎn),要想知道其相對(duì)于原點(diǎn),也就是相機(jī)的距離,需要得知其3個(gè)維度x,y和z的值。在人臉檢測(cè)中已經(jīng)獲得了人臉矩形框的坐標(biāo)值,因此將矩形框的中點(diǎn)坐標(biāo)x和y帶入并賦值到3D點(diǎn)云圖中,通過(guò)公式sqrt(x2+y2+z2)便能求出空間點(diǎn),也就是某學(xué)生的距離相機(jī)的距離。
4 ? ?無(wú)線信號(hào)偵測(cè)
無(wú)線信號(hào)偵測(cè)與網(wǎng)絡(luò)定位模塊主要使用了接收信號(hào)強(qiáng)度(Received Signal Strength Indicator,RSSI)信號(hào)定位技術(shù),通過(guò)采集空間中的電子足跡,給出移動(dòng)設(shè)備的方位角,從而實(shí)現(xiàn)視覺(jué)—電子信號(hào)雙重定位,提高無(wú)線定位的準(zhǔn)確性。
電子足跡即移動(dòng)設(shè)備的介質(zhì)訪問(wèn)控制(Media Access Control,MAC)地址、IP等,采集空間中的電子足跡,主要通過(guò)網(wǎng)卡抓包解析報(bào)文內(nèi)容,處理電子信號(hào),獲得報(bào)文中的信號(hào)強(qiáng)度,從而定位可能的移動(dòng)設(shè)備相對(duì)于天線的角度,將該結(jié)果返回給系統(tǒng),系統(tǒng)將該結(jié)果與視覺(jué)信號(hào)定位結(jié)果做一個(gè)匹配,檢查該方向上是否有低頭狀態(tài)的學(xué)生,與頭部姿態(tài)估計(jì)模塊的結(jié)果相結(jié)合,得出最終分析結(jié)論。
為了多方位獲取不同方向的電子信號(hào),文章將天線裝在了一個(gè)水平270°旋轉(zhuǎn)的簡(jiǎn)易3D云臺(tái)上,讓其以勻速周期性擺動(dòng),實(shí)現(xiàn)多方位信號(hào)的捕獲。
RSSI是無(wú)線發(fā)送層的可選部分,用來(lái)判定鏈接質(zhì)量,以及是否增大廣播發(fā)送強(qiáng)度。定向天線在不同方向上檢測(cè)到某個(gè)IP信號(hào)的RSSI強(qiáng)度是不同的,當(dāng)天線未對(duì)準(zhǔn)IP所在位置的時(shí)候,天線所檢測(cè)到的信號(hào)強(qiáng)度是微弱的,可是當(dāng)天線對(duì)準(zhǔn)IP所在位置時(shí),所檢測(cè)到的RSSI強(qiáng)度會(huì)有一個(gè)大幅提升,可以通過(guò)接收到的信號(hào)強(qiáng)弱測(cè)定信號(hào)點(diǎn)與接收點(diǎn)的相對(duì)角度,進(jìn)而根據(jù)相應(yīng)數(shù)據(jù)進(jìn)行定位計(jì)算。
RSSI信息儲(chǔ)存在數(shù)據(jù)幀前面一個(gè)叫radiotap的部分,包含了如信號(hào)強(qiáng)度、頻率等信息,是ieee802.11 的標(biāo)準(zhǔn)。內(nèi)容如圖1所示。
其中,Antenna signal是所需要使用的字段。通過(guò)使用定向天線對(duì)不同方向抓包,考慮到所測(cè)試空間之外的電子信號(hào)的影響,會(huì)過(guò)濾掉信號(hào)極其微弱的數(shù)據(jù)包,然后對(duì)比相同MAC地址報(bào)文的信號(hào)強(qiáng)度,就可以找到信號(hào)強(qiáng)度最大的報(bào)文,從而依據(jù)抓包的時(shí)間得到天線抓到信號(hào)強(qiáng)度最大包的角度。說(shuō)明這個(gè)角度方向上有一個(gè)移動(dòng)設(shè)備正在頻繁使用網(wǎng)絡(luò),達(dá)到文章的目的。具體的流程如下。
首先,將無(wú)線網(wǎng)卡設(shè)置成monitor模式,使用iwconfig命令:
# iw wlan0 interface add mon0 type monitor
添加一個(gè)別名mon0,設(shè)置為monitor模式,并用# ifconfig mon0 up 啟用mon0進(jìn)行網(wǎng)絡(luò)監(jiān)聽(tīng)。
其次,啟動(dòng)旋轉(zhuǎn)云臺(tái)使得定向天線開(kāi)始旋轉(zhuǎn),記錄啟動(dòng)時(shí)間,同時(shí)開(kāi)始使用tcpdump工具進(jìn)行抓包,并保存到一個(gè)CAP文件中。在存儲(chǔ)的文件中包含了抓到的每一個(gè)包的時(shí)間、信號(hào)強(qiáng)度、MAC地址等信息。之后使用Python的scapy庫(kù)讀取文件進(jìn)行數(shù)據(jù)包的解析,將需要的數(shù)據(jù)提取出來(lái)并且進(jìn)行篩選分析,最后得出有頻繁報(bào)文交換的角度,和頭部姿態(tài)估計(jì)模塊進(jìn)行整合。
5 ? ?系統(tǒng)構(gòu)成以及初步效果
系統(tǒng)的實(shí)現(xiàn)分為以下幾個(gè)步驟:(1)云臺(tái)帶動(dòng)定向天線做180°周期性轉(zhuǎn)動(dòng)。(2)天線和無(wú)線網(wǎng)卡檢測(cè)方向上信號(hào)強(qiáng)度高的報(bào)文并捕獲。(3)統(tǒng)返回信號(hào)較強(qiáng)的方向角度。(4)攝像頭捕獲當(dāng)前課堂視頻并進(jìn)行人臉檢測(cè)。(5)對(duì)每一個(gè)人臉求出其中心點(diǎn)的距離。(6)求出離 S3 返回方向最近的目標(biāo)人臉。(7)對(duì)該目標(biāo)人臉進(jìn)行頭部姿態(tài)估計(jì),如果檢測(cè)到低頭則判斷為使用電子設(shè)備。初步實(shí)現(xiàn)效果如圖2所示。
對(duì)于每一位學(xué)生,系統(tǒng)對(duì)其劃分以下?tīng)顟B(tài):
(1)正常抬頭,身邊沒(méi)有移動(dòng)終端收發(fā)信號(hào)(標(biāo)綠)。
(2)低頭,身邊沒(méi)有移動(dòng)終端收發(fā)信號(hào)(標(biāo)藍(lán))。
(3)正常抬頭,身邊有移動(dòng)終端收發(fā)信號(hào)(標(biāo)藍(lán))。
(4)低頭,身邊有移動(dòng)終端收發(fā)信號(hào)(標(biāo)紅)。
假設(shè)圖2中3人處于一個(gè)課堂,系統(tǒng)捕捉到了3人的人臉以及距離攝像頭的位置信息。而只有中間的人手持電子設(shè)備并且在使用移動(dòng)設(shè)備收發(fā)信號(hào),但是沒(méi)有低頭,因此系統(tǒng)將此人標(biāo)藍(lán)。再如圖3所示,中間人低頭并且被系統(tǒng)檢測(cè)到之后,符合使用“移動(dòng)終端+低頭”這一條件組合,因此,判定其為在課堂上使用手機(jī)終端信息的行為,將其標(biāo)紅。
6 ? ?結(jié)語(yǔ)
本系統(tǒng)能夠基本實(shí)現(xiàn)對(duì)學(xué)生在小型課堂上是否使用智能終端設(shè)備狀態(tài)的判斷,但是受限于設(shè)備性能,最多只能容納10~20人,識(shí)別的最遠(yuǎn)距離為7~10 m,且準(zhǔn)確率受環(huán)境光照影響較大。此外,即使判斷出學(xué)生在課堂上低頭使用移動(dòng)終端,也不能立刻判斷其行為屬于開(kāi)小差,也有可能是查詢資料等,更加細(xì)致的判斷則需要進(jìn)一步的研究。
[參考文獻(xiàn)]
[1]PATACCHIOLA M,CANGELOSI A.Head pose estimation in the wild using convolutional neural networks and adaptive gradient methods[J].Pattern Recognition,2017(33):71.
[2]劉翠玲,王美琴,高振明.基于Linux的無(wú)線網(wǎng)絡(luò)監(jiān)聽(tīng)方法與實(shí)現(xiàn)[J].山東大學(xué)學(xué)報(bào)(理學(xué)版),2004(5):90-94.
[3]WANG J,CHEN Y,F(xiàn)U X,et al.3DLoc:Three dimensional wireless localization toolkit[C].Chengdu:IEEE International Conference on Distributed Computing Systems,2010.
[4]ZHANG B,TENG J,ZHU J,et al.EV-Loc:Integrating electronic and visual signals for accurate localization[C].South Carolina:Acm Mobihoc.IEEE Press,2012.
Designed on intelligent detection system for classroom
perfprmance based on multivariate data fusion
Li Yuqiao
(Southeast University, Nanjing 211189, China )
Abstract:In order to assess students'behavior in class, this paper used the latest head posture estimation techniques. This technology can capture the current persons head to do a variety of movements and angles, such as bow, turn, head, etc. Since lowering the head is the dominant posture of most students in class, ?can use this technology to monitor their head posture for evaluation. Considering the positioning accuracy of face detection problem, as well as the students action is not necessarily the bowed their heads and the use of mobile phones, this paper also introduced the wireless signal detection technology, capture and detection current caused by students use mobile phones in the classroom signal frequency transceiver terminal location, combined with the positioning of the face detection, cross positioning, in order to gain more accurate positioning results.
Key words:face-detection; head pose estimation; wireless signal detection