關(guān)鍵詞:簽到系統(tǒng);課程簽到;人臉識(shí)別;TrackingJS;百度云人臉識(shí)別API
0 引言(Introduction)
人工智能技術(shù)發(fā)展為教育領(lǐng)域帶來新的發(fā)展機(jī)遇,其中課
程智能簽到系統(tǒng)[1]作為智慧教育的一個(gè)研究方向,旨在高效、低成本地解決學(xué)生課堂簽到問題,并確保簽到的可靠性和防作弊性。課程簽到與公司的上、下班簽到不同,公司簽到通常都有固定時(shí)間,通過指紋識(shí)別[2]打卡機(jī)或人臉識(shí)別[3]打卡機(jī)就能實(shí)現(xiàn)打卡功能。然而,學(xué)校課程簽到方式更為復(fù)雜,涉及不同的時(shí)間段、教室地點(diǎn)、教師和班級(jí)等。由于影響簽到因素眾多,若在每間教室都安裝簽到機(jī),將導(dǎo)致高昂成本和復(fù)雜系統(tǒng)設(shè)計(jì)。簽到分為線上和線下兩種方式。線上簽到適用于慕課、云課堂、視頻會(huì)議等網(wǎng)絡(luò)課程,無特定地點(diǎn)要求;線下簽到則需在實(shí)體場(chǎng)所如教室、會(huì)場(chǎng)進(jìn)行,以確認(rèn)參與者親自到場(chǎng)。本文聚焦于線下簽到功能,利用前端的TrackingJS人臉識(shí)別跟蹤技術(shù)高效抓取完整的人臉圖像,結(jié)合百度云人臉識(shí)別接口完成人臉識(shí)別認(rèn)證,同時(shí)設(shè)計(jì)了一個(gè)基于教師端的手機(jī)攝像頭拍照功能,以綜合解決方案應(yīng)對(duì)學(xué)生課程簽到的各種挑戰(zhàn)。
1 線下簽到技術(shù)分析(Study of off-line attendancetechnologies)
1.1 基于考勤機(jī)器的簽到
在智能手機(jī)普及之前,企事業(yè)單位通常采用考勤機(jī)進(jìn)行員工簽到,由于上班時(shí)間統(tǒng)一,所以一兩臺(tái)考勤機(jī)就能滿足中小企事業(yè)單位的簽到要求。
(1)射頻識(shí)別技術(shù)(RFID)和近場(chǎng)通信(NFC)刷卡機(jī)簽到
刷卡機(jī)簽到方式在企事業(yè)單位得到廣泛應(yīng)用,員工使用卡片刷卡完成考勤,但是這種方式存在作弊風(fēng)險(xiǎn),員工可能代刷。RFID簽到則要求員工人手一張卡和一個(gè)專用讀卡器。有學(xué)者提出通過手機(jī)NFC技術(shù)實(shí)現(xiàn)課堂智能簽到[4],或是在客戶端通過RFID模塊采集學(xué)生的校園一卡通卡號(hào),再通過無線網(wǎng)絡(luò)將考勤信息傳輸?shù)椒?wù)器端[5]。
(2)指紋機(jī)和人臉識(shí)別機(jī)簽到
利用人工智能的圖像識(shí)別技術(shù),通過指紋機(jī)和人臉識(shí)別機(jī)進(jìn)行人員考勤,主要用于企事業(yè)單位。這種方式避免了作弊行為,但是如果在每個(gè)教室安裝一個(gè)簽到機(jī),成本比較高,無法大范圍推廣,例如項(xiàng)新建等[2]設(shè)計(jì)了一款課堂指紋簽到智能管理系統(tǒng)。
(3)聲紋識(shí)別機(jī)和虹膜識(shí)別機(jī)簽到
聲紋識(shí)別機(jī)和虹膜識(shí)別機(jī)成本比較高,因此通常只用在特殊行業(yè),如銀行等對(duì)安全級(jí)別要求很高的單位使用。
1.2 基于智能手機(jī)App簽到
隨著智能手機(jī)技術(shù)的快速發(fā)展,攝像頭、Wi-Fi、GPS技術(shù)已經(jīng)成為手機(jī)的基本配置,通過這些硬件可以實(shí)現(xiàn)手機(jī)App簽到。
(1)基于Wi-Fi和地理位置簽到
植入地理位置識(shí)別功能的簽到App要求簽到者在指定地點(diǎn)簽到,可以防止簽到作弊行為。但是,在高樓或建筑群中,GPS信號(hào)可能受影響,降低了簽到可靠性。Wi-Fi簽到則要求用戶連接特定的Wi-Fi,使用不便。例如,ZHANG等[6]通過位置服務(wù)+ 人臉識(shí)別技術(shù)解決簽到作弊問題,耿申[7]基于WLAN室內(nèi)定位+二維碼技術(shù)開發(fā)了一款簽到系統(tǒng)。
(2)二維碼簽到
例如,釘釘App允許用戶創(chuàng)建線下會(huì)議,填寫相關(guān)信息后會(huì)生成簽到二維碼,參會(huì)者需在會(huì)場(chǎng)通過釘釘App掃描此二維碼進(jìn)行簽到。然而,簽到作弊行為依然可能發(fā)生,參會(huì)者可能會(huì)拍照并將二維碼分享給他人進(jìn)行遠(yuǎn)程簽到,而非在會(huì)場(chǎng)現(xiàn)場(chǎng)簽到。周歡等[8]提出基于主動(dòng)式二維碼+LBS技術(shù)的學(xué)生考勤管理系統(tǒng)應(yīng)用研究,杜絕“代簽到”現(xiàn)象。包蕾[9]設(shè)計(jì)并實(shí)現(xiàn)了一款基于二維碼的代簽規(guī)避系統(tǒng)。
(3)人臉識(shí)別簽到
隨著人工智能技術(shù)的快速發(fā)展,人臉識(shí)別已經(jīng)成為簽到設(shè)計(jì)的主要技術(shù),由于智能手機(jī)基本都配備了攝像頭及基于云技術(shù)的人臉識(shí)別技術(shù),所以降低了開發(fā)簽到App的復(fù)雜性,降低了使用成本,使其成為簽到系統(tǒng)的基本功能。例如,DUAN設(shè)計(jì)了一款人臉識(shí)別課程簽到系統(tǒng)[10]。
2 系統(tǒng)設(shè)計(jì)(System design)
人臉識(shí)別技術(shù)已普遍應(yīng)用于簽到功能,百度云、阿里云、騰訊云等云服務(wù)商均提供了人臉識(shí)別接口,使系統(tǒng)開發(fā)者能更專注于簽到流程的優(yōu)化,解決系統(tǒng)成本高、可靠性不足、無法完全避免作弊行為等問題。設(shè)計(jì)思路主要從以下幾個(gè)方面考慮。
2.1 前端人臉跟蹤
TrackingJS[11]是基于瀏覽器端的人臉檢測(cè)庫(kù),用于實(shí)時(shí)追蹤來自相機(jī)捕獲的圖像。追蹤的數(shù)據(jù)對(duì)象可以是顏色或人的圖像。若追蹤的數(shù)據(jù)對(duì)象為人臉圖像時(shí),還可以設(shè)置具體的追蹤檢測(cè)目標(biāo)為人臉圖像中的眼睛、鼻子、嘴巴,當(dāng)檢測(cè)到目標(biāo)移動(dòng)或者出現(xiàn)時(shí),就會(huì)觸發(fā)JavaScript事件,最終根據(jù)JavaScript的回調(diào)函數(shù)完成完整的動(dòng)態(tài)人臉圖像抓取。
2.2 基于百度云人臉識(shí)別接口
通過百度云人臉識(shí)別API(接口)[12],將前端捕獲的人臉圖像與已注冊(cè)的人臉庫(kù)中的圖片進(jìn)行相似度比對(duì),并返回相似度分值。本系統(tǒng)設(shè)置相似度分值大于80為識(shí)別匹配。
2.3 基于教師端課程簽到
學(xué)生端簽到方式適用于線上網(wǎng)課,教師可以發(fā)送簽到碼或二維碼,學(xué)生則在學(xué)生端通過人臉識(shí)別完成簽到;線下課程簽到方式如果設(shè)計(jì)為學(xué)生端人臉識(shí)別簽到,還要考慮添加GPS或Wi-Fi定位功能,防止學(xué)生作弊。陳維華等[13]設(shè)計(jì)了一款基于網(wǎng)絡(luò)攝像頭設(shè)備的簽到系統(tǒng),需要在每個(gè)教室都布置網(wǎng)絡(luò)攝像頭,并且系統(tǒng)需要處理每個(gè)教室攝像頭發(fā)出的請(qǐng)求,成本較高,系統(tǒng)設(shè)計(jì)復(fù)雜度高。賀一粒[14]設(shè)計(jì)了一款基于深度學(xué)習(xí)框架Keras和Tensor Flow的教師端人臉識(shí)別系統(tǒng),需要對(duì)人臉識(shí)別模型進(jìn)行訓(xùn)練,增大了系統(tǒng)開發(fā)工作量。本系統(tǒng)采用教師手機(jī)端人臉識(shí)別簽到方式,簽到流程為教師手機(jī)發(fā)起簽到,開啟攝像頭并放講臺(tái)上,學(xué)生主動(dòng)掃臉簽到。此方案能有效防止代簽,簡(jiǎn)單易行、成本低且可靠,學(xué)生無手機(jī)或手機(jī)沒電時(shí)也能完成課程簽到。
2.4 課程簽到設(shè)計(jì)
課程簽到方式主要分為線下課簽到、線上課簽到、公開課簽到3種方式。發(fā)起課程簽到狀態(tài)圖如圖1所示。
2.5 功能模塊設(shè)計(jì)
本系統(tǒng)的用戶角色分為管理員、教師、學(xué)生3種。
(1)管理員。管理員用戶的系統(tǒng)權(quán)限主要包括用戶登錄、系統(tǒng)管理、用戶管理、課程管理和系統(tǒng)監(jiān)控,其中系統(tǒng)管理又包含7個(gè)子模塊,主要為菜單管理、角色管理、部門管理、職務(wù)管理、通知公告、字段管理、日志管理;系統(tǒng)監(jiān)控包含在線用戶子模塊。管理員用例圖如圖2所示。
(2)教師。教師用戶的系統(tǒng)權(quán)限主要包括用戶注冊(cè)登錄和課程管理。教師用例圖如圖3所示。
(3)學(xué)生。學(xué)生用戶的系統(tǒng)權(quán)限主要包括用戶登錄、查看首頁(yè)通知、課程學(xué)習(xí)和簽到記錄。學(xué)生用例圖如圖4所示。
3 架構(gòu)設(shè)計(jì)(Architecture design)
依據(jù)智慧教育生態(tài)系統(tǒng)分層架構(gòu)的設(shè)計(jì)思想[15],進(jìn)一步改進(jìn)和優(yōu)化本系統(tǒng)架構(gòu)方案。本系統(tǒng)的后端開發(fā)采用Java語(yǔ)言,基于Spring Boot框架,部署于TOMCAT服務(wù)器,前端采用VueJS框架,部署在Nginx服務(wù)器,并做負(fù)載均衡器。數(shù)據(jù)接口采用Redis數(shù)據(jù)庫(kù)作為緩存,持久化層采用MySQL數(shù)據(jù)庫(kù)。采用MyBatis框架實(shí)現(xiàn)Java對(duì)象與數(shù)據(jù)庫(kù)表的ORM 關(guān)系映射,完成數(shù)據(jù)持久化。
該架構(gòu)要求前端項(xiàng)目和后端項(xiàng)目分別部署于兩個(gè)不同的服務(wù)器上,并且需要獨(dú)立進(jìn)行部署。由于前端和后端是兩個(gè)不同的工程,因此它們有著不同的代碼庫(kù)。同時(shí),前端通過Ajax技術(shù)調(diào)用后端的Restful API,后端再通過跨域訪問百度云人臉識(shí)別接口,從而實(shí)現(xiàn)真正的解耦。前后端分離MVC架構(gòu)模式(圖5)。這種架構(gòu)設(shè)計(jì)主要解決了全校上萬(wàn)學(xué)生同一簽到時(shí)間的阻塞問題。
4 核心功能實(shí)現(xiàn)(Implementation of core functions)
4.1 人臉識(shí)別模塊
人臉識(shí)別模塊主要是為了支持課程簽到服務(wù)而開發(fā)的模塊,包含人臉信息注冊(cè)和人臉識(shí)別認(rèn)證兩個(gè)子功能,確保學(xué)生進(jìn)行課程簽到打卡時(shí)能通過人臉識(shí)別進(jìn)行身份認(rèn)證。人臉信息注冊(cè)功能主要為了將用戶人臉畫像進(jìn)行保存,在用戶使用人臉識(shí)別認(rèn)證功能時(shí),可以將用戶注冊(cè)的人臉畫像進(jìn)行比對(duì),從而判斷是否為用戶本人進(jìn)行操作;人臉識(shí)別認(rèn)證功能主要為了在簽到打卡時(shí)確保是學(xué)生本人的操作,從而預(yù)防作弊行為。
4.2 人臉信息注冊(cè)
人臉信息注冊(cè)主要基于人臉檢測(cè)技術(shù)TrackingJS完成人臉的檢測(cè)追蹤操作,TrackingJS檢測(cè)到人臉后,前端服務(wù)自動(dòng)捕獲人臉畫像,并將人臉畫像轉(zhuǎn)換為BASE64編碼格式,最終使用Axios異步請(qǐng)求后端人臉信息注冊(cè)接口,由后端完成人臉信息本地?cái)?shù)據(jù)庫(kù)保存操作和百度人臉可視化庫(kù)人臉注冊(cè)操作,并將人臉信息注冊(cè)結(jié)果返回前端進(jìn)行渲染后展示給用戶。
4.3 人臉識(shí)別認(rèn)證
人臉識(shí)別認(rèn)證功能主要輔助簽到功能,主要判別學(xué)生簽到時(shí)是否為學(xué)生本人;人臉識(shí)別認(rèn)證功能分為兩種使用場(chǎng)景:一種是單次人臉識(shí)別認(rèn)證,在調(diào)用人臉識(shí)別組件時(shí)將autoClose屬性設(shè)置為true,主要在云課程簽到中使用,學(xué)生用戶在簽到時(shí)進(jìn)行單次人臉識(shí)別,識(shí)別完成后系統(tǒng)自動(dòng)關(guān)閉人臉識(shí)別彈窗;另一種是連續(xù)人臉識(shí)別認(rèn)證,在調(diào)用人臉識(shí)別組件時(shí)將autoClose屬性設(shè)置為1,主要在線下課簽到中使用,教師創(chuàng)建完課程簽到后學(xué)生可依次進(jìn)行人臉識(shí)別認(rèn)證簽到,教師可手動(dòng)關(guān)閉人臉識(shí)別彈窗,同時(shí)系統(tǒng)也支持簽到時(shí)間結(jié)束后自動(dòng)關(guān)閉人臉識(shí)別彈窗。人臉識(shí)別認(rèn)證活動(dòng)圖如圖6所示。
(1)代碼分析
前端通過TrackingJS抓取人臉代碼如下,tracker.on()函數(shù)監(jiān)聽攝像頭抓取到包含眼睛和嘴巴的完整人臉圖像,觸發(fā)回調(diào)函數(shù)處理人臉圖像。
人臉識(shí)別百度云接口調(diào)用代碼如下,aipFace.search()發(fā)起百度云接口調(diào)用,返回的數(shù)據(jù)包存放到responseBody JSON對(duì)象中,若錯(cuò)誤碼為“0”且返回的圖片相似度分值≥80,則返回識(shí)別成功的用戶ID。
4.4 線下課簽到模塊
在線下課簽到場(chǎng)景下,授課教師發(fā)起線下課簽到后,教師端攝像頭自動(dòng)開啟,在教室內(nèi)上課的學(xué)生逐一進(jìn)行刷臉簽到。該簽到方式的應(yīng)用場(chǎng)景類似于學(xué)校門禁刷臉系統(tǒng)。線下課簽到活動(dòng)圖如圖8所示。
線下課(課堂)簽到具體實(shí)現(xiàn)步驟如下。
(1)教師點(diǎn)擊“線下課”發(fā)起簽到(圖9)。
(2)教師填寫簽到信息,包括主題、簽到活動(dòng)時(shí)長(zhǎng)、教室。然后選擇“教師端簽到”,點(diǎn)擊“開始簽到”(圖10)。
(3)教師打開簽到攝像頭和簽到進(jìn)度窗口,如果學(xué)生簽到成功,就會(huì)在簽到進(jìn)度窗顯示學(xué)生頭像圖標(biāo)和姓名(圖11)。
5 未來改進(jìn)方法(Improving the approach inthe future)
未來的主要開發(fā)工作將圍繞提升用戶體驗(yàn)和性能兩個(gè)方面進(jìn)行。
(1)采用PWA(漸進(jìn)式Web應(yīng)用)技術(shù)
由于必須在手機(jī)上打開瀏覽器輸入U(xiǎn)RL地址才能啟動(dòng)Web應(yīng)用,導(dǎo)致用戶體驗(yàn)感不好,因此采用PWA技術(shù)讓系統(tǒng)更接近原生應(yīng)用,實(shí)現(xiàn)在桌面直接啟動(dòng)應(yīng)用系統(tǒng),或者開發(fā)前端微信小程序,提高用戶的體驗(yàn)感。
(2)人臉識(shí)別驗(yàn)證性能優(yōu)化
采用消息隊(duì)列的方式進(jìn)行人臉識(shí)別簽到,將現(xiàn)階段的同步請(qǐng)求百度的人臉識(shí)別API接口改為異步的方式,提高系統(tǒng)的響應(yīng)速度。
(3)配置Nginx服務(wù)器負(fù)載均衡機(jī)制
根據(jù)日志監(jiān)測(cè)流量,充分利用Nginx服務(wù)器負(fù)載均衡機(jī)制,反向代理機(jī)制將動(dòng)態(tài)請(qǐng)求轉(zhuǎn)發(fā)給后臺(tái)Tomcat應(yīng)用服務(wù)器進(jìn)行優(yōu)化處理,或者將Web服務(wù)器遷移到百度云,由云計(jì)算動(dòng)態(tài)調(diào)整負(fù)載均衡機(jī)制。
(4)優(yōu)化Redis數(shù)據(jù)緩存
進(jìn)一步優(yōu)化和調(diào)整Redis緩存數(shù)據(jù)結(jié)構(gòu),提高簽到查詢效率,避免對(duì)數(shù)據(jù)庫(kù)造成過大的壓力,通過日志監(jiān)測(cè)機(jī)制,將數(shù)據(jù)訪問量減少至一個(gè)閾值,及時(shí)同步持久化數(shù)據(jù)。
(5)課堂紀(jì)律監(jiān)控
基于多人臉識(shí)別抓取和肢體識(shí)別技術(shù),教師可以通過手機(jī)攝像頭實(shí)時(shí)監(jiān)控課堂,統(tǒng)計(jì)學(xué)生抬頭聽課與低頭睡覺或玩手機(jī)等課堂行為,以維護(hù)課堂紀(jì)律。
6 結(jié)論(Conclusion)
通過人臉識(shí)別技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了一種教師端課堂人臉識(shí)別簽到系統(tǒng)。完成了基于人臉識(shí)別技術(shù)的簽到系統(tǒng)的界面和數(shù)據(jù)庫(kù)設(shè)計(jì),系統(tǒng)通過教師端手機(jī),開啟簽到攝像頭,通過TrackingJS人臉追蹤技術(shù)動(dòng)態(tài)抓取完整的人臉圖片,通過百度云人臉識(shí)別接口完成人臉驗(yàn)證,并記錄和統(tǒng)計(jì)學(xué)生的簽到信息,導(dǎo)出簽到記錄。通過測(cè)試,系統(tǒng)具備較高的識(shí)別精度和可靠性,滿足了對(duì)學(xué)生簽到管理的實(shí)際需求。系統(tǒng)設(shè)計(jì)中,把課程簽到分為線下課簽到和線上課簽到及公開課簽到3種方式,保證了線下課簽到的可靠性,還能防止學(xué)生出現(xiàn)異地簽到和虛假簽到等情況,系統(tǒng)設(shè)計(jì)思路簡(jiǎn)潔明了,具有較高的實(shí)用性、安全性和可維護(hù)性。