薛 凱,鄧福興,王 菁,焦日升,曹盛楠
(1.國網(wǎng)吉林省電力有限公司培訓(xùn)中心,吉林 長春 132022;2.東北電力大學(xué)電氣工程學(xué)院,吉林 吉林 132012)
在線學(xué)習(xí)又稱虛擬課堂,是指通過網(wǎng)絡(luò)開展的師生同步直播學(xué)習(xí)或者非同步的學(xué)習(xí)方式[1].基于移動客戶端的在線學(xué)習(xí)因其具有學(xué)習(xí)方式和時間靈活,學(xué)習(xí)覆蓋面大的特點已經(jīng)成為企業(yè)常用的員工培訓(xùn)手段和高校的輔助教學(xué)手段.例如,南方電網(wǎng)在2013年就開始使用在線直播技術(shù)培訓(xùn)員工[1].高校在線學(xué)習(xí)的技術(shù)和手段則更為豐富.例如,高校普遍使用的超星學(xué)習(xí)通可以實現(xiàn)非同步的在線學(xué)習(xí)和同步的語音直播[2-3].另外,有些高校使用雨課堂進行同步的視頻直播[4-5].由于2020年的新型冠狀病毒疫情,學(xué)生的在線學(xué)習(xí)和員工的在線培訓(xùn)已經(jīng)成為了高校和部分企業(yè)的必然選擇.
然而,在線學(xué)習(xí)是在沒有教師監(jiān)督的情況下學(xué)員自主學(xué)習(xí)[6].從教師的角度看,在上課過程中難以面對面的監(jiān)督學(xué)生的學(xué)習(xí)狀態(tài).從學(xué)員角度看,在上課過程中,由于缺少監(jiān)督難免會產(chǎn)生不重視學(xué)習(xí)的心里.甚至自律性差的學(xué)員,可能僅僅是打開了在線學(xué)習(xí)客戶端而沒有真正學(xué)習(xí).因此,在線學(xué)習(xí)客戶端需要在不干擾學(xué)員學(xué)習(xí)的情況下采用技術(shù)手段對學(xué)員的學(xué)習(xí)狀態(tài)進行監(jiān)督.
本文提出了一種基于人臉識別技術(shù)的移動客戶端學(xué)員學(xué)習(xí)狀態(tài)監(jiān)督方法.本方法的目的是在上課過程中實時監(jiān)督學(xué)生是否在客戶端屏幕前聽課.為了達到監(jiān)督的實時性和不干擾學(xué)員學(xué)習(xí)的目的.本文使用YOLOv3深度神經(jīng)網(wǎng)絡(luò)檢測學(xué)員的人臉.YOLO網(wǎng)絡(luò)是原名為“你只看一次”系列網(wǎng)絡(luò)(You Only Look Once,YOLO)的縮寫.YOLOv3是該系列網(wǎng)絡(luò)的第三個版本.YOLOv3是一種準(zhǔn)確且高效的圖像檢測方法.YOLOv3對尺寸為320×320的圖片進行目標(biāo)檢測僅耗時22毫秒.因此,使用YOLOv3作為學(xué)員人臉檢測方法可以做到不干擾學(xué)員聽課.由于聽課學(xué)員會有不同的姿勢,學(xué)員的人臉會存在不同的角度和不同的尺度.本文采用了尺度不變特征(Scale-Invariant Feature Tansform,SIFT)提取人臉特征向量.提取到的人臉特征和預(yù)先上傳的學(xué)員照片比對以識別學(xué)員身份.學(xué)習(xí)狀態(tài)監(jiān)督算法被學(xué)員客戶端定期調(diào)用.人臉檢測和識別這兩個監(jiān)督步驟在客戶端的后臺運行,監(jiān)督過程不會被學(xué)員感知,因此不影響學(xué)員聽課.
本文提出的基于人臉識別技術(shù)的移動客戶端學(xué)員學(xué)習(xí)狀態(tài)監(jiān)督方法流程圖,如圖1所示.每隔t時刻,學(xué)習(xí)客戶端調(diào)用如圖1所示的學(xué)員學(xué)習(xí)狀態(tài)監(jiān)督方法.該方法通過移動客戶端(一般是智能手機)的前置攝像頭拍攝照片.為了保證處理速度,我們將前置攝像頭的圖像尺寸統(tǒng)一縮放為800×800像素.之后,使用YOLOv3人臉檢測神經(jīng)網(wǎng)絡(luò)檢測該照片中是否存在人臉.若存在人臉則從檢測框中的人臉圖像中提取人臉的SIFT特征向量,并與學(xué)員注冊時上傳照片的特征向量進行比對識別.若YOLOv3未檢測到人臉,或者人臉對比識別失敗,則將人臉識別失敗計數(shù)器fn加1.如果人臉識別多次失敗,即fn大于閾值n,則學(xué)習(xí)狀態(tài)監(jiān)督程序?qū)⑺臄z的照片發(fā)送給該課程的講師或者系統(tǒng)管理員以提示相關(guān)人員該學(xué)員可能沒有專心學(xué)習(xí).
圖1 學(xué)員學(xué)習(xí)狀態(tài)監(jiān)督方法流程
學(xué)習(xí)狀態(tài)監(jiān)督方法中相關(guān)參數(shù)可以由系統(tǒng)管理員設(shè)置.參數(shù)t表示兩次調(diào)用學(xué)習(xí)狀態(tài)監(jiān)督過程的時間間隔.由于人臉檢測和識別過程會受到學(xué)員聽課姿勢,光照,攝像頭是否有效等多種情況干擾.為了避免誤報對課堂造成干擾,在某學(xué)員的客戶端人臉識別失敗的情況下系統(tǒng)并不立刻通知講師或者系統(tǒng)管理員,而是要等待人臉識別失敗計數(shù)器fn大于閾值n,即該學(xué)員在一定時間內(nèi)人臉識別失敗次數(shù)達到一定數(shù)量時才認(rèn)為該學(xué)員未認(rèn)真聽課.閾值n表示當(dāng)有多少次人臉識別失敗的情況下系統(tǒng)通知講師或者系統(tǒng)管理員.閾值n的值可以由系統(tǒng)管理員根據(jù)實際情況設(shè)置.
2016年,Redmon[8]首次提出了一種基于端到端的檢測算法:“你只看一次”神經(jīng)網(wǎng)絡(luò)(You Only Look Once,YOLO).該算法通過一個卷積網(wǎng)絡(luò)同時預(yù)測圖像中目標(biāo)的類別和坐標(biāo).YOLO只包含一個神經(jīng)網(wǎng)絡(luò),因此稱之為端到端的檢測算法.YOLO系列目標(biāo)檢測深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)是一種端到端的一共有三個版本[7,8,11].YOLO的檢測速度遠高于之前的很多兩階段的檢測方法[9-10],但版本1和版本2對圖像中一些較小的目標(biāo)檢測性能較差.YOLOv3版本的網(wǎng)絡(luò)結(jié)構(gòu)使得該網(wǎng)絡(luò)對于各個尺度目標(biāo)的檢測能力都顯著提高.YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)的簡略示意圖,如圖2所示.
圖2 簡化的YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)示意圖
YOLOv3網(wǎng)絡(luò)由兩部分組成,即自下而上的特征提取網(wǎng)絡(luò)和自上而下的多尺度檢測網(wǎng)絡(luò).前者負(fù)責(zé)提取輸入圖像的低層細(xì)節(jié)特征.后者從底層細(xì)節(jié)特征中提取高層語義特征.然后將這些高層次特征與相應(yīng)的低層次特征連接起來,對檢測網(wǎng)絡(luò)中的不同尺度的目標(biāo)進行檢測.自上而下的特征提取網(wǎng)絡(luò)的骨干作者稱為Darknet53.Darknet53的深度為75層,由53個卷積層和22個快捷連接層疊加而成.Darknet53網(wǎng)絡(luò)可細(xì)分為單個DBL模塊和Res1、Res2、Res8、Res8、Res4五個殘差模塊.DBL是YOLOv3的基本組成部分.DBL由卷積層、批處理規(guī)范化操作和ReLU激活函數(shù)組成.Resn表示每個殘差模塊含n個剩余單元.每個殘差模塊由兩個串聯(lián)的DBL模塊組成.為了便于分析,我們將Darknet53分為三個階段.每個階段Darknet53提取到的特征圖的尺寸各不相同.我們用圖2左側(cè)的三個方框A1、B1、C1來表示Darknet53的三個階段所提取到的特征圖.由圖2可知,特征圖尺寸由下至上越來越小.
右邊的三個藍色框A1、B1、C1表示一個自上而下的多尺度檢測網(wǎng)絡(luò).該網(wǎng)絡(luò)主要用于預(yù)測三種不同尺度的輸出特征圖.
學(xué)員學(xué)習(xí)時面部距離攝像頭的遠近不同,這就導(dǎo)致所拍攝的人臉占畫面的比例不同.因此YOLOv3神經(jīng)網(wǎng)絡(luò)能夠檢測大、中、小不同比例目標(biāo)的特性就特別適合學(xué)員人臉檢測任務(wù).
我們使用無約束自然場景人臉檢測數(shù)據(jù)集(FDDB)[12]作為訓(xùn)練數(shù)據(jù)集,訓(xùn)練YOLOv3神經(jīng)網(wǎng)絡(luò).FDDB數(shù)據(jù)集包含了2845張圖像.在這些圖像中包含5171個人臉.每個人臉在圖像中的坐標(biāo)位置都進行了標(biāo)注.我們將訓(xùn)練得到的YOLOv3人臉檢測模型的參數(shù)直接導(dǎo)入到學(xué)習(xí)狀態(tài)監(jiān)督APP的中YOLOv3網(wǎng)絡(luò)中.這樣學(xué)習(xí)狀態(tài)監(jiān)督APP的中YOLOv3網(wǎng)絡(luò)就可以直接應(yīng)用訓(xùn)練完畢后的模型參數(shù)進行人臉檢測.
尺度不變特征變換[13](Scale-Invariant Feature Transform,SIFT)是一種提取圖像局部特征點的算法.因SIFT對于圖像的尺度、旋轉(zhuǎn)和位置具有非常高的魯棒性,出現(xiàn)了大量使用其作為局部特征點提取的應(yīng)用[14-15].將SIFT應(yīng)用于人臉識別[16-17]可以解決因人臉尺度、不同姿勢、不同角度而造成的識別率降低,而且SIFT具有占用內(nèi)存空間小,實時性高等優(yōu)點.
提取圖像SIFT特征的主要步驟有建立多尺度空間、極值點搜索、確定關(guān)鍵特征點、特征向量生成.SIFT算法尺度空間,如圖3所示.
通過對尺度空間中的每個像素點與其同尺度的8鄰域、以及相鄰尺度的8鄰域共26個點相比較,找到尺度空間中的極值點.之后對于極值點進行篩選.刪除對比度低的和不穩(wěn)定的邊緣極值點,篩選后剩下的點為關(guān)鍵特征點.將關(guān)鍵特征點鄰域內(nèi)像素用提法方向直方圖表示.該直方圖中最大值所對應(yīng)的梯度方向為關(guān)鍵特征點的主方向.將關(guān)鍵特征點為中心的16×16像素的區(qū)域4等分.分別計算每個小區(qū)域內(nèi)的8個梯度方向,最后可以得到4×4×8=128維的特征向量.我們只提取人臉檢測算法所確定的檢測框中像素的SIFT特征向量.對每個人臉提取的特征點數(shù)為N.特征點的數(shù)量可以由用戶指定.特征點數(shù)越多識別準(zhǔn)確率越高,但會使得識別速度降低,相反則有更高的識別速度.在本文中我們通過試驗發(fā)現(xiàn)設(shè)置人臉特征點的個數(shù)為40時效果就能令人滿意.
圖3 SIFT算法尺度空間示意圖
我們使用歐式距離衡量所提取到的人臉特征向量和學(xué)員上傳的證件照片的人臉特征向量的差值.如果歐式距離的最小值與歐式距離的次小值的比值小于某一閾值時則認(rèn)為這一對特征點匹配成功.當(dāng)兩個人臉圖片的匹配成功的特征點數(shù)量超過總特征點數(shù)量的一定比例時認(rèn)為兩個圖片為同一個人的人臉.在實驗中我們設(shè)置這個比例為85%.
為了驗證本文提出的基于人臉識別技術(shù)的移動客戶端學(xué)員學(xué)習(xí)狀態(tài)監(jiān)督方法的有效性,我們實現(xiàn)了基于Android客戶端的學(xué)習(xí)狀態(tài)監(jiān)督程序并進行了如下實驗.我們首先使用學(xué)員的聽課圖片測試了人臉檢測算法的效果.之后,我們建立了一個學(xué)員照片數(shù)據(jù)集,并采用人臉檢測率、人臉識別率和有效監(jiān)督率來衡量所提出的學(xué)員學(xué)習(xí)狀態(tài)監(jiān)督方法在學(xué)員照片數(shù)據(jù)集上的表現(xiàn).最后,我們從圖片的處理效率角度衡量了所提出的學(xué)習(xí)效率監(jiān)督方法.
人臉檢測算法是學(xué)員學(xué)習(xí)效果監(jiān)督的第一個步驟.我們使用學(xué)員的聽課圖片測試了人臉檢測算法的效果.為了增加測試難度,我們還選擇了一些帶有遮擋,甚至遮擋較大的人臉圖片作為測試圖片.人臉檢測的效果,如圖4所示.
圖4 人臉檢測效果圖
從圖4中可以看出,當(dāng)學(xué)員面部沒有遮擋的時,檢測算法可以從學(xué)員的正面、側(cè)面、歪頭、托腮等聽課姿勢圖片中找到人臉的位置.當(dāng)學(xué)員面部有不嚴(yán)重遮擋時(例如圖4中第三排照片1和照片4,學(xué)員只遮擋了嘴巴),檢測算法仍可以檢測到人臉.當(dāng)學(xué)員面部有嚴(yán)重遮擋時(例如圖4中第三排照片3和照片5),檢測失敗.圖4中第三排照片2雖然遮擋不嚴(yán)重,但是遮擋位于面部中心,使得人臉的連續(xù)性被破壞,檢測算法也不能檢測到人臉.
使用嚴(yán)重遮擋的圖片測試檢測算法效果的目的是測試檢測算法的弱點.在實際應(yīng)用學(xué)習(xí)狀態(tài)監(jiān)督方法時,應(yīng)當(dāng)提示學(xué)員盡量避免遮擋面部.
(a)
(b)圖5 測試集圖片樣本
我們采集了10位學(xué)員的110張在線學(xué)習(xí)照片.在這個學(xué)習(xí)照片數(shù)據(jù)集中,每個學(xué)員都有11種聽課姿態(tài)分別為:面向屏幕、左/右托腮、左/右歪頭、左/右側(cè)臉、仰頭、低頭、有輕微遮擋、人離開屏幕.其中兩位學(xué)員的在線學(xué)習(xí)照片,如圖5所示.我們采用人臉檢測率、識別率和有效監(jiān)督率三個指標(biāo)來衡量所提出的學(xué)員學(xué)習(xí)狀態(tài)監(jiān)督方法的表現(xiàn).人臉檢測率是為了衡量人臉檢測算法的性能.數(shù)據(jù)集中學(xué)員11種學(xué)習(xí)動作對應(yīng)的照片如果被檢測出有人臉則認(rèn)為檢測正確.數(shù)據(jù)集中共有10張人離開屏幕的照片.如果這些照片未被檢測出人臉則認(rèn)為檢測正確.即被正確檢測的照片數(shù)等于存在且被檢測到人臉的照片數(shù)加上沒有人臉且沒有被檢測到人臉的照片數(shù).被正確檢測的照片數(shù)除以總?cè)藬?shù)就是人臉檢測率.人臉檢測率的計算公式定義為
(1)
在人臉檢測之后,再對被檢測到的人臉做進一步的身份識別.人臉識別率是為了衡量人臉識別算法的性能.人臉識別率等于被人臉識別算法正確確認(rèn)身份的人臉數(shù)除以存在人臉且被正確檢測到的人臉數(shù).人臉識別率的公式定義為
(2)
有效監(jiān)督率是為了衡量所提出的學(xué)習(xí)監(jiān)督方法的性能.在所有存在人臉的照片中,被正確的檢測出人臉且被正確確認(rèn)身份的照片是被進行了有效監(jiān)督的照片.對于數(shù)據(jù)集中的無人照片,如果這些照片未被檢測出人臉,則認(rèn)為這些照片被進行了有效監(jiān)督.有效監(jiān)督率的計算公式定義為
(3)
采用學(xué)員照片數(shù)據(jù)集測試本文所提出的學(xué)員學(xué)習(xí)狀態(tài)監(jiān)督方法得到的人臉檢測率、識別率和有效監(jiān)督率,如表1所示.
表1 學(xué)員學(xué)習(xí)狀態(tài)監(jiān)督方法的測試結(jié)果
在人臉檢測的過程中,99張有人臉的圖片檢測到人臉,有1張存在人臉的照片檢測失敗,10張無人臉的照片均未檢測到人臉(即檢測成功).之后,使用有人臉且檢測成功的99照片測試人臉識別算法.人臉識別算法成功識別了其中97張照片的身份.人臉檢測算法中有1張照片檢測失敗,人臉識別算法中有2張照片識別失敗.因此,其余的107張照片被認(rèn)為是進行了有效監(jiān)督的照片.
表2 各算法的平均耗時(毫秒ms)
我們在學(xué)員聽課照片數(shù)據(jù)集上分別運行了人臉檢測算法,人臉識別算法和我們提出的學(xué)員學(xué)習(xí)狀態(tài)監(jiān)督算法.我們測試算法的Android手機的參數(shù)為:CPU主頻2253MHz,運行內(nèi)存6GB,操作系統(tǒng)內(nèi)核版本4.9.1.各個算法處理數(shù)據(jù)集所有照片的平均耗時,如表2所示.從表2中可知,本文提出的學(xué)習(xí)狀態(tài)監(jiān)督算法處理數(shù)據(jù)集中110張照片的平均耗時為502毫秒,即0.5秒,可以滿足實時性的監(jiān)督需求.
本文提出了一種基于人臉識別技術(shù)的移動客戶端學(xué)員學(xué)習(xí)狀態(tài)監(jiān)督方法.該方法分別采用YOLOv3神經(jīng)網(wǎng)絡(luò)和SIFT特征點作為人臉檢測和識別算法.為了驗證本文所提出方法的有效性,本文建立了含有100張學(xué)員在線學(xué)習(xí)圖像的測試數(shù)據(jù)集.在該數(shù)據(jù)集上的測試結(jié)果表明,本文所提出的移動客戶端學(xué)員學(xué)習(xí)狀態(tài)監(jiān)督方法對于學(xué)員是否認(rèn)真聽課的識別率達到了97%.同時該方法對于一張圖片的處理速度約為0.5秒,滿足實時識別和監(jiān)督的需要.因此,該方法可以在不干擾課程的情況下,準(zhǔn)確的識別出未認(rèn)真聽課的學(xué)員.