吳麗娟, 梁岱立, 關(guān)貴明, 任海清, 黃 堯
(1. 沈陽(yáng)師范大學(xué) 物理科學(xué)與技術(shù)學(xué)院, 沈陽(yáng) 110034;2. 北部戰(zhàn)區(qū) 31441部隊(duì), 沈陽(yáng) 110001)
20世紀(jì)60年代開(kāi)始, 學(xué)者們展開(kāi)了對(duì)人臉檢測(cè)技術(shù)的研究, 經(jīng)過(guò)幾十年的發(fā)展, 目前該技術(shù)已經(jīng)在很多領(lǐng)域中得到了應(yīng)用[1]。將人臉檢測(cè)和頭部姿態(tài)識(shí)別技術(shù)引入教學(xué)活動(dòng), 了解學(xué)生的聽(tīng)課狀態(tài), 對(duì)課堂教學(xué)評(píng)價(jià)具有積極意義。
近年來(lái),基于深度學(xué)習(xí)的人臉檢測(cè)算法有很多,主流算法有兩大類[2]:一類是二階段深度學(xué)習(xí)算法,主要包括Fast-R-CNN[3], Faster-R-CNN[4], Mask-R-CNN[5]等;一類是一階段深度學(xué)習(xí)算法,主要包括YOLO系列[6-8]及SSD(single shot multibox detector)[9-11]。后者較前者有更快的檢測(cè)速度。SSD網(wǎng)絡(luò)結(jié)構(gòu)是2016年由Liu提出的,此網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)潔明了,提升了模型的精度和運(yùn)行速度。針對(duì)SSD模型對(duì)小目標(biāo)檢測(cè)效果較差的問(wèn)題,FU等[12]提出了DSSD結(jié)構(gòu),此方法雖然可以提高模型的精度,但是卻以犧牲模型的運(yùn)行速度為代價(jià),還有學(xué)者提出了DSOD模型[13]等,這些算法都表現(xiàn)出了不錯(cuò)的性能。
對(duì)于基于模型的頭部姿態(tài)識(shí)別來(lái)說(shuō),準(zhǔn)確的前提是能夠快速精準(zhǔn)地獲取人臉信息。本文結(jié)合SSD算法模型的應(yīng)用場(chǎng)景,在保證檢測(cè)精度的同時(shí),致力于提高檢測(cè)的效率,對(duì)SSD算法在特征圖的選取和檢測(cè)后處理的非極大值抑制(NMS)算法上進(jìn)行了改進(jìn),在基于模型的頭部姿態(tài)識(shí)別能夠判斷2種頭部動(dòng)作(點(diǎn)頭和搖頭)的基礎(chǔ)上,設(shè)計(jì)了4種頭部姿態(tài)檢測(cè):向左看、向右看、向上看和向下看,從而判斷出學(xué)生的聽(tīng)課狀態(tài)。
SSD算法模型融合不同尺度的特征圖進(jìn)行網(wǎng)絡(luò)提取,分類和定位都被擬合為回歸問(wèn)題,既保持了YOLO模型速度快的特性,也保證了窗口預(yù)測(cè)與Faster-R-CNN模型一樣的精度。SSD算法模型主體架構(gòu)如圖1所示,主要分為基底網(wǎng)絡(luò)、輔助卷積層和用于特征圖預(yù)測(cè)的預(yù)測(cè)特征層[14]3個(gè)部分。SSD算法模型的基底網(wǎng)絡(luò)基于VGG-16網(wǎng)絡(luò)模型,將VGG-16網(wǎng)絡(luò)后面的三層全連接層和Softmax層用Conv6(FC6)和Conv7(FC7)卷積層代替;輔助卷積網(wǎng)絡(luò)是在SSD的基底網(wǎng)絡(luò)后面增添的卷積層,使特征表示在復(fù)雜背景下更加具有魯棒性。SSD算法模型中共有6層預(yù)測(cè)特征層(detecton& classifier)用于多尺度預(yù)測(cè)。在檢測(cè)后處理過(guò)程中,利用非極大值抑制(NMS)算法對(duì)預(yù)測(cè)特征層檢測(cè)的結(jié)果進(jìn)行處理,得到最優(yōu)候選框。
圖1 SSD算法模型架構(gòu)Fig.1 SSD algorithm model architecture
SSD算法模型使用了6張大小不同的預(yù)測(cè)特征圖來(lái)檢測(cè)不同尺度的目標(biāo),分別來(lái)自conv4_3,conv7,conv8_2,conv9_2,conv10_2和conv11_2卷積層,前端網(wǎng)絡(luò)提取的特征圖尺寸大,細(xì)節(jié)性較好,適用于檢測(cè)小物體。隨著特征圖尺寸的變小,細(xì)節(jié)性也隨之變差,適用于檢測(cè)大物體。除此之外,SSD網(wǎng)絡(luò)設(shè)置了不同寬高比的預(yù)測(cè)候選框并且使用了放大和縮小2種數(shù)據(jù)增強(qiáng)方式,可以有更多的訓(xùn)練樣本參與訓(xùn)練,使得檢測(cè)結(jié)果更加準(zhǔn)確。
圖2 原NMS算法的檢測(cè)結(jié)果Fig.2 The detection results of the original NMS algorithm
SSD算法默認(rèn)候選框的選取機(jī)制會(huì)導(dǎo)致很多窗口和其他窗口之間存在很?chē)?yán)重的重疊情況,需要非極大值抑制(NMS)算法[15]來(lái)選擇這些相近區(qū)域里置信度最高的候選框,同時(shí)去除置信度不高的候選框,最后得出檢測(cè)結(jié)果。SSD算法模型中的NMS算法對(duì)候選框的選取不夠精準(zhǔn),仍然存在候選框重疊問(wèn)題,如圖2所示,本文在原NMS算法的基礎(chǔ)上對(duì)其進(jìn)行了優(yōu)化。
優(yōu)化算法設(shè)計(jì):以每個(gè)候選框左上角的坐標(biāo)信息為出發(fā)點(diǎn),數(shù)組A中存放所有候選框的左上角和右下角的坐標(biāo);取數(shù)組A中的第1個(gè)候選框的坐標(biāo)信息放入數(shù)組B中,將數(shù)組A中所有候選框的左上角橫坐標(biāo)與數(shù)組B中的第1個(gè)候選框的左上角橫坐標(biāo)相減,絕對(duì)值相差小于40個(gè)像素點(diǎn)的候選框坐標(biāo)存放到數(shù)組B中,并將其在數(shù)組A中刪掉,此時(shí),數(shù)組B中存放的是所有與數(shù)組A中第1個(gè)候選框相近的候選框坐標(biāo);本文選取數(shù)組B中左上角橫坐標(biāo)最小的候選框作為最終候選框,將其左上角和右下角坐標(biāo)存入數(shù)組C中……重復(fù)以上步驟直到數(shù)組A中為空,數(shù)組C為去除冗余后得到的候選框坐標(biāo)信息。若數(shù)組A中只存放了一個(gè)候選框的坐標(biāo)信息,則無(wú)需進(jìn)行優(yōu)化,直接存入數(shù)組C中,作為最后的檢測(cè)結(jié)果,算法設(shè)計(jì)如圖3所示。
圖3 對(duì)NMS算法的優(yōu)化流程Fig.3 Optimization process of NMS algorithm
圖4 優(yōu)化NMS算法后的檢測(cè)結(jié)果Fig.4 Inspection results after optimizing the NMS algorithm
優(yōu)化結(jié)果如圖4所示,能夠可以看出優(yōu)化后的NMS算法可以有效地去除冗余候選框。
SSD算法模型的應(yīng)用范圍較廣,適用于復(fù)雜場(chǎng)景下的物體檢測(cè)。原SSD模型中的Conv 8,Conv 9,Conv 10和Conv 11這4個(gè)卷積的目的是保證檢測(cè)效果在復(fù)雜背景下依然準(zhǔn)確,針對(duì)本文而言,應(yīng)用場(chǎng)景為教室,相對(duì)簡(jiǎn)單,且待檢測(cè)的人臉屬于中等和較小的目標(biāo),不需要提取后端網(wǎng)絡(luò)的特征圖就可以保證檢測(cè)結(jié)果的準(zhǔn)確性。因此,對(duì)SSD算法模型做了如下調(diào)整,在進(jìn)行檢測(cè)時(shí),程序?qū)⑻^(guò)原SSD模型中的Conv8_2,Conv9_2,Conv10_2和Conv11_2這4層輸出的預(yù)測(cè)特征圖,只在Conv4_3和Conv7輸出的2層預(yù)測(cè)特征圖上做預(yù)測(cè)。改進(jìn)后的SSD算法模型網(wǎng)絡(luò)架構(gòu)如圖5所示。
圖5 改進(jìn)后的SSD網(wǎng)絡(luò)架構(gòu)Fig.5 Improved SSD network architecture
當(dāng)只保留第一層預(yù)測(cè)特征圖時(shí),模型未檢測(cè)到人臉;保留Conv4_3和Conv7輸出的2層預(yù)測(cè)特征圖的結(jié)果如圖6所示,6層特征圖全部保留的檢測(cè)結(jié)果如圖7所示,即原SSD算法模型的檢測(cè)結(jié)果。
在相同的教室背景及相同的電腦環(huán)境配置下,采用平衡樣本進(jìn)行測(cè)試。改進(jìn)后的SSD算法模型與原SSD算法模型的識(shí)別正確率Accuracy和識(shí)別速率FPS見(jiàn)表1。其中,正確率Accuracy為檢測(cè)正確的樣本數(shù)與總樣本數(shù)的比值,識(shí)別速率FPS為每秒算法可以檢測(cè)圖片的幀數(shù)。由此可見(jiàn),改進(jìn)后的SSD算法模型較改進(jìn)前在正確率上稍有下降,但沒(méi)有太大差別,在檢測(cè)效率上提高了16.17%。
圖6 保留2層預(yù)測(cè)特征圖檢測(cè)結(jié)果Fig.6 The result of the two-layer feature map
圖7 原SSD模型的檢測(cè)結(jié)果Fig.7 The result of the original SSD model
表1 SSD改進(jìn)前后對(duì)比Table 1 Comparison of SSD before and after improvement
學(xué)生頭部姿態(tài)識(shí)別系統(tǒng)共包含4個(gè)環(huán)節(jié):輸入視頻流、人臉檢測(cè)、頭部姿態(tài)識(shí)別及課堂行為結(jié)果的保存環(huán)節(jié)。首先,對(duì)輸入的視頻流進(jìn)行預(yù)處理,每3 min截取60幀視頻圖像。然后,利用改進(jìn)的SSD算法找到視頻中的人臉并將其裁剪下來(lái);接下來(lái)將裁剪好的人臉信息送入頭部姿態(tài)識(shí)別算法中,對(duì)學(xué)生的頭部姿態(tài)進(jìn)行判斷;最后,根據(jù)學(xué)生的頭部姿態(tài)分析出學(xué)生的學(xué)習(xí)狀態(tài)。其流程如圖8所示。
圖8 學(xué)生頭部姿態(tài)識(shí)別流程Fig.8 Student head posture recognition process
1) 視頻流預(yù)處理
由于在教室環(huán)境下的學(xué)生處于運(yùn)動(dòng)之中,利用第一幀視頻進(jìn)行人臉檢測(cè)得到的面部位置會(huì)在幾分鐘之后不再適用。因此,本文對(duì)輸入視頻流進(jìn)行等間隔截取操作,每3 min截取60幀視頻,將這60幀視頻作為人臉檢測(cè)的輸入,以此來(lái)更新學(xué)生面部的位置變化。
2) 人臉檢測(cè)
學(xué)生的頭部姿態(tài)識(shí)別是建立在學(xué)生面部準(zhǔn)確檢測(cè)的基礎(chǔ)之上,要想實(shí)現(xiàn)頭部姿態(tài)識(shí)別,首先要進(jìn)行人臉檢測(cè),本文在SSD算法的基礎(chǔ)上,針對(duì)應(yīng)用場(chǎng)景對(duì)其進(jìn)行了修改,在此環(huán)節(jié)中,不僅要得到每個(gè)學(xué)生面部的位置信息,還要對(duì)每個(gè)位置上對(duì)應(yīng)的學(xué)生面部進(jìn)行裁剪。為了匹配視頻流預(yù)處理操作,每3 min對(duì)SSD算法進(jìn)行一次更新,得到新的學(xué)生面部位置和裁剪后每個(gè)學(xué)生的面部信息,將每個(gè)學(xué)生的面部信息作為頭部姿態(tài)識(shí)別算法的輸入。
圖9 人臉關(guān)鍵點(diǎn)坐標(biāo)Fig.9 Key point coordinates
3) 頭部姿態(tài)識(shí)別
本文采用的頭部姿態(tài)識(shí)別的方法是基于模型的方法,即首先獲得人臉關(guān)鍵點(diǎn)信息,然后,根據(jù)這些人臉關(guān)鍵點(diǎn)信息以設(shè)定閾值的方式對(duì)頭部姿態(tài)進(jìn)行識(shí)別。在獲取到每個(gè)學(xué)生的面部信息之后,利用face_landmark_localization人臉關(guān)鍵點(diǎn)檢測(cè)模型[16]得到人臉68個(gè)關(guān)鍵點(diǎn)信息,取其中的19個(gè)關(guān)鍵點(diǎn),如圖9所示。然后,根據(jù)獲得的19個(gè)關(guān)鍵點(diǎn)利用PnP算法得到學(xué)生頭部旋轉(zhuǎn)歐拉角,其計(jì)算公式為公式(1)。
其中,R為3×3的旋轉(zhuǎn)矩陣,如公式(2)所示,T為3×1的平移矢量,本文主要利用旋轉(zhuǎn)矩陣R來(lái)獲得頭部旋轉(zhuǎn)歐拉角。(Xw,Yw,Zw,1)T是頭部標(biāo)準(zhǔn)3D關(guān)鍵點(diǎn)坐標(biāo),Zc為face_landmark_localization模型預(yù)測(cè)的19個(gè)關(guān)鍵點(diǎn)坐標(biāo)。
(1)
(2)
公式(3)和公式(4)分別為頭部偏航歐拉角θx和頭部俯仰歐拉角θy的求取公式。
通過(guò)頭部偏航角和俯仰角信息,以設(shè)置閾值的方式判定學(xué)生的頭部姿態(tài),本文采取動(dòng)態(tài)的判定方式,以連續(xù)的15幀為一個(gè)檢測(cè)周期,判定規(guī)則見(jiàn)表2。其中,Y代表頭部偏航角,P代表頭部俯仰角。
表2 學(xué)生頭部姿態(tài)判定規(guī)則Table 2 Judgment rules of student head posture
4) 將頭部姿態(tài)結(jié)果保存成視頻
得到學(xué)生頭部姿態(tài)信息后,為了后續(xù)查看校驗(yàn)方便將識(shí)別結(jié)果錄制成視頻。
圖10 頭部姿態(tài)識(shí)別系統(tǒng)識(shí)別結(jié)果Fig.10 Recognition result of head posture recognition system
學(xué)生頭部姿態(tài)識(shí)別系統(tǒng)的識(shí)別結(jié)果如圖10所示,本系統(tǒng)沒(méi)有對(duì)面向前方的頭部姿態(tài)進(jìn)行識(shí)別,只對(duì)搖頭、點(diǎn)頭、向左看、向右看、向上看及向下看這些疑似沒(méi)有認(rèn)真聽(tīng)課的動(dòng)作和姿態(tài)進(jìn)行識(shí)別和記錄。誤檢率和漏檢率見(jiàn)表3,是0.008和0.012。這一結(jié)果對(duì)學(xué)生課堂狀態(tài)分析的影響在誤差允許的范圍內(nèi)。
表3 頭部姿態(tài)識(shí)別系統(tǒng)的誤檢率和漏檢率
本文基于教室的教學(xué)環(huán)境,對(duì)SSD算法網(wǎng)絡(luò)架構(gòu)和檢測(cè)后處理中的NMS算法進(jìn)行了改進(jìn),應(yīng)用改進(jìn)后的SSD算法模型與頭部姿態(tài)識(shí)別相結(jié)合的方式對(duì)教室中學(xué)生的頭部姿態(tài)進(jìn)行識(shí)別,實(shí)現(xiàn)了處于教室背景下在不降低檢測(cè)效果的同時(shí)提高檢測(cè)效率,可以準(zhǔn)確地識(shí)別學(xué)生點(diǎn)頭、搖頭的2種頭部動(dòng)作及向左看、向右看、向上看和向下看的4種頭部姿態(tài)。經(jīng)過(guò)修改的SSD算法與頭部姿態(tài)識(shí)別相結(jié)合,對(duì)學(xué)生頭部動(dòng)作和姿態(tài)識(shí)別準(zhǔn)確率較高,為后續(xù)實(shí)現(xiàn)跟蹤監(jiān)測(cè)每個(gè)學(xué)生的課堂學(xué)習(xí)狀態(tài)研究奠定了基礎(chǔ)。