唱藝 王彬 張鄭依明 謝宇飛 李張霞
摘要:近年來,隨著移動互聯(lián)網(wǎng)和通信產(chǎn)業(yè)的飛速發(fā)展,各行各業(yè)對于考勤的需求逐漸增大,但是目前市面上流行的考勤軟件大部分使用的是GPS定位考勤,雖然提高了考勤的效率,但是卻出現(xiàn)了定位不準確、代簽等問題,降低了考勤的準確率,于是如何在保持效率的情況下提高考勤的準確率成為亟待解決的問題。該文就針對這一問題,設(shè)計了一個基于NAO機器人,通過人臉識別進行考勤的系統(tǒng)方案,并基于Android平臺實現(xiàn)了一個考勤系統(tǒng)。
關(guān)鍵詞:Android開發(fā);人臉切割;考勤系統(tǒng);NAO機器人;網(wǎng)絡(luò)數(shù)據(jù)比對
中圖分類號:TP311? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2020)36-0064-03
1 引言
在當下的互聯(lián)網(wǎng)時代,人工智能的飛速發(fā)展帶來的是搭載移動操作系統(tǒng)的智能移動設(shè)備逐漸增多,用戶可以更多地體驗人工智能以及數(shù)字化實體化的轉(zhuǎn)變。
NAO機器人作為仿人型機器人的代表已經(jīng)成功應(yīng)用于醫(yī)療康復(fù)、檢測領(lǐng)域、智能控制領(lǐng)域、圖像處理領(lǐng)域等多個領(lǐng)域。將NAO機器人虛擬仿真軟件Choregraphe圖形編輯程序應(yīng)用到高職人工智能機器人專業(yè)教學(xué)中,可以完成學(xué)生對人工智能機器人認識、編程實踐操作、指令盒數(shù)據(jù)庫及3D仿真演示等,實現(xiàn)了教學(xué)內(nèi)容與工作能力的有效對接,提高了教學(xué)的安全性和趣味性,為后續(xù)人工智能機器人實操實訓(xùn)打下良好基礎(chǔ)。2017年咸陽職業(yè)技術(shù)學(xué)院電子信息學(xué)院引進NAO機器人平臺,并將其用于第二課堂及技能大賽,意在鍛煉學(xué)生的創(chuàng)新能力和科研能力[6]。NAO機器人在自閉癥干預(yù)的應(yīng)用一文中討論了在NAO人機互動和學(xué)校課堂授課兩種情況下對自閉癥障礙譜系兒童的觀察結(jié)果,通過大量實驗表明,患兒在面對NAO人機互動時能有效地減少其自閉癥狀,大大改善其行為結(jié)果[7]。NAO機器人的多用途是基于它可以通過現(xiàn)成的指令塊進行可視化編程,因此它允許用戶探索各種領(lǐng)域、運用各種復(fù)雜程度的編程程序并達到用戶想要體驗的各種不同效果。
目前教學(xué)過程中,學(xué)生的出勤主要通過課堂上的點名簽到或者應(yīng)用手機軟件進行數(shù)字或定位考勤,但這種傳統(tǒng)的考勤方式會由于定位不準確或者學(xué)生之間的代簽問題而無法確切地反饋考勤的結(jié)果。NAO作為教學(xué)的得力助手,正在創(chuàng)造著未來的教育方式。這一教育方式的進展也逐漸開始陸續(xù)進入現(xiàn)實中。常見的NAO機器人具備基礎(chǔ)的拍照功能?;贜AO的圖像采集能力,設(shè)計開發(fā)基于人臉識別技術(shù)的系統(tǒng)用于學(xué)生課堂出勤情況的考核,可有效改善考勤代簽的問題。
本系統(tǒng)基于最新的開發(fā)技術(shù),借助機器人、人臉識別技術(shù)和Android環(huán)境以及網(wǎng)絡(luò)端的數(shù)據(jù)存儲與比對,提供了一種新穎的、自動化和人性化的考勤系統(tǒng)設(shè)計思路,有助于提升考勤的準確率。
2 系統(tǒng)功能設(shè)計
本系統(tǒng)按照功能主要劃分為教師端、學(xué)生端、NAO端三個模塊。
2.1 教師端
教師模塊中主要包含課程信息、考勤記錄、添加考勤、考勤分析四個功能模塊。教師登錄系統(tǒng)后可以查看課程信息,在課程信息界面將依據(jù)教師的教職工號及學(xué)期序號顯示此學(xué)期該教師所任教的全部課程,當點擊課程名稱后,將詳細顯示課程全部的學(xué)生信息以及各學(xué)生的出勤率,點擊不同的學(xué)生頭像可以查看該學(xué)生本課程的詳細出勤記錄??记谟涗浗缑嬖敿氾@示本學(xué)期每門課程的總體出勤率。當教師點擊課程名稱后,將按照日期顯示參與本課程的每個學(xué)生的出勤信息。教師如需添加考勤,先選擇課程名稱,然后點擊開啟考勤。考勤開啟后,機器人使用自帶的圖像模塊進行人臉采集,系統(tǒng)調(diào)用人臉識別算法對照片進行人臉切割,然后上傳至服務(wù)器,服務(wù)器調(diào)用接口進行人臉匹配,將匹配的結(jié)果與人臉數(shù)據(jù)庫進行比對確定學(xué)生的精確出勤情況,并返回到教師端,考勤界面會實時更新學(xué)生的考勤情況,教師可以選擇在一定時間后停止考勤,得出最終的考勤結(jié)果。同時考勤結(jié)果會發(fā)送至學(xué)生端上進行確認,若存在有誤信息學(xué)生可以將其反饋到教師端,對教師進行提示,教師修改出勤信息。當信息全部確認無誤后,考勤結(jié)束。教師還可以查看不同課程的考勤分析情況,系統(tǒng)將會把課程的出勤率以圖表形式進行呈現(xiàn),使任課教師更直觀方便的觀察到考勤總體情況。教師可通過分析數(shù)據(jù)對出勤率較低的課程做出改進,如增加課堂互動、增加考勤次數(shù)等。
2.2 學(xué)生端
學(xué)生登錄系統(tǒng)后,在出勤記錄界面將顯示本學(xué)期該學(xué)生參加的全部課程,點擊課程名稱可顯示該學(xué)生對應(yīng)課程的出勤情況。當教師端發(fā)布考勤后,學(xué)生端將接收提醒,NAO機器人進行拍照比對后,將考勤結(jié)果返回至學(xué)生端進行核實,如果出勤信息有誤,學(xué)生可以通過平臺向教師發(fā)送信息,確認出勤信息無誤,學(xué)生簽到成功。
2.3 NAO端
NAO端的功能主要概括為實現(xiàn)交互。NAO機器人需要在接收教師發(fā)出的開始考勤的請求后,進行人臉采集,并將采集到的圖片發(fā)送給后臺服務(wù)器進行處理,最終接收系統(tǒng)傳回的出勤人數(shù)信息和未出勤學(xué)生信息,開始語音播報,對未出勤的學(xué)生進行提醒。
3 核心處理邏輯
系統(tǒng)的核心業(yè)務(wù)是基于人臉識別進行考勤,即使用人臉識別技術(shù)對機器人采集的集體照片進行人臉切割和比對,比對之后將結(jié)果記錄在指定文件,讀取文件后將簽到信息返回至教師端和學(xué)生端,核心處理邏輯流程圖如圖1所示。
獲取考勤結(jié)果使用java Socket套接字實現(xiàn)。首先需要確保全體學(xué)生連接到服務(wù)器,在服務(wù)器中,使用Map數(shù)據(jù)結(jié)構(gòu)保存從學(xué)生信息的實例到學(xué)生Socket端實例的映射。當教師點擊了“開始簽到”按鈕,即向Controller傳遞該課程的Course ID和教師的身份ID,并通過Controller向Server Socket服務(wù)器發(fā)送簽到請求。當服務(wù)器收到該請求之后,通過Controller傳遞的Course ID和教師的身份ID參數(shù),從數(shù)據(jù)庫中獲取選擇了該課程并由該教師負責(zé)的學(xué)生的全部信息記錄列表。之后,根據(jù)返回的學(xué)生記錄列表,從Map中抽取對應(yīng)的Socket對象并向這些學(xué)生客戶端發(fā)送簽到提醒。然后NAO機器人采集當前課堂內(nèi)所有學(xué)生的照片,進行人臉識別以及比對操作。當教師端點擊了“結(jié)束簽到”按鈕后,服務(wù)器會統(tǒng)一地向之前發(fā)送簽到提醒的學(xué)生的客戶端發(fā)送面部識別結(jié)果,并可以選擇要求學(xué)生客戶端進行反饋(結(jié)果正確、對結(jié)果有疑問或者結(jié)果錯誤),以便更正錯誤或者不準確的簽到信息。如果全部學(xué)生都反饋正確或者全部問題已解決,則對此次簽到情況進行數(shù)據(jù)庫更新,并向教師端提供本次簽到的出勤率以及出勤或者缺勤學(xué)生的名單等信息,至此考勤信息功能流程結(jié)束,如圖2所示。
考勤結(jié)束后,教師可以查看考勤分析情況,考勤統(tǒng)計情況根據(jù)每次考勤的出勤率進行實時更新。教師可以通過分析統(tǒng)計圖來制定考勤計劃,對出勤率較低的課程進行教學(xué)方案的修改。
4 系統(tǒng)實現(xiàn)
4.1 實現(xiàn)過程
基于前述業(yè)務(wù)邏輯和方法,本文使用百度人臉識別接口、MYSQL數(shù)據(jù)庫實現(xiàn)了一個考勤系統(tǒng),服務(wù)端使用J2EE技術(shù),移動端采用Android平臺。
以NAO機器人為載體,使用它的圖像采集模塊,調(diào)用python腳本切割人臉并上傳到服務(wù)器,調(diào)用百度人臉識別接口與預(yù)先準備好的人臉庫進行人臉匹配,從而實現(xiàn)一個班級的人臉識別簽到。在Android手機端有一個實時的反饋,包含:1)學(xué)生端接收簽到成功(失?。┫?2)教師端接收簽到學(xué)生信息。教師和學(xué)生通過系統(tǒng)可以對人臉簽到的結(jié)果反饋的分析結(jié)果進行查看。
NAO機器人端的程序由Python進行編寫,借助NAO官方提供的API編寫NAO語音識別和語音播報的腳本;Android端的程序主要實現(xiàn)客戶端界面的交互;服務(wù)器端由Java語言實現(xiàn),在應(yīng)用層實現(xiàn)操作系統(tǒng)底層調(diào)度和后臺邏輯的處理,同時使用Python腳本處理NAO機器人端的數(shù)據(jù),將數(shù)據(jù)上傳至服務(wù)器,處理完成后將反饋的結(jié)果發(fā)送至客戶端和NAO機器人端,實現(xiàn)數(shù)據(jù)傳輸和交換。
4.2 關(guān)鍵技術(shù)
4.2.1 人臉識別技術(shù)
本系統(tǒng)的人臉識別技術(shù)包含兩部分內(nèi)容,首先是人臉切割,將NAO機器人采集到的圖片進行切割。切割的過程調(diào)用人臉識別庫face_recognition,定位圖片中的所有人臉,對圖片進行切割,切割后的人臉圖片存放入指定文件夾。其次是人臉比對,切割后的人臉被上傳至百度人臉識別接口與人臉庫中事先錄入好的人臉數(shù)據(jù)進行比對,返回比對結(jié)果。對結(jié)果進行分析,得分高于規(guī)定評分(本系統(tǒng)規(guī)定評分為80分)即為識別成功。將信息傳入學(xué)生端和教師端,顯示簽到成功。
4.2.2 多線程技術(shù)
在考勤系統(tǒng)中,服務(wù)器需要經(jīng)常面對多個請求的接收,或者向多個客戶端發(fā)送請求等情況。如果將對于所有客戶端的接收操作或者發(fā)送操作使用串行的方法實現(xiàn),那么執(zhí)行完所有的操作消耗的時間將會非常巨大并且對于每一個使用該系統(tǒng)的用戶來說都是不友好的。因此要將所有操作并行執(zhí)行,本系統(tǒng)采用多線程技術(shù)。鑒于之前所描述的情況,在考勤系統(tǒng)中必然會存在特別頻繁的線程的創(chuàng)建和銷毀,在大量并發(fā)的情況下會造成極大的性能損失。因此我們需要將線程集中管理并重復(fù)利用。由于每個班級的學(xué)生人數(shù)并不固定,使用一個維護固定數(shù)量線程的線程池并不是一個很好的選擇,因此我們需要一個可變大小的線程池。在Java中,使用ThreadPoolExecutor類來創(chuàng)建線程池,我們可以通過該類的構(gòu)造函數(shù)構(gòu)造一個ThreadPoolExecutor的實例在創(chuàng)建一個自定義的線程池,也可以直接使用類似于工廠方法的Executors API創(chuàng)建符合要求的線程池。在考勤系統(tǒng)中,使用Executors.newCachedThreadPool()方法可以非常便捷的創(chuàng)建一個可變大小的線程池實例并交給系統(tǒng)進行維護。
4.2.3 BIO技術(shù)
由于考勤系統(tǒng)連接的客戶端數(shù)量較多,通信頻率較高,但是每個客戶端的通信時長較短,因此比較適合長連接,同時具有這種特點的長連接也比較適合BIO Socket多線程模型進行操作。因此本考勤系統(tǒng)使用BIO Socket多線程模型。專門為本系統(tǒng)設(shè)計的數(shù)據(jù)結(jié)構(gòu)“簽到大廳”,充分利用了線程池和同步阻塞式I/O模型的特點,用于管理每一次考勤并記錄出勤情況,是該考勤系統(tǒng)中的一個核心的邏輯單元。在每一次請求開啟考勤的過程中,都會創(chuàng)建一個“簽到大廳”對本次考勤進行管理,并從數(shù)據(jù)庫中找出相關(guān)的學(xué)生,為每一個學(xué)生創(chuàng)建學(xué)生實例對象并作為參數(shù)交給一個學(xué)生處理器,并將這個學(xué)生處理器加入一個線程池中。由此,一次考勤開始。當一次考勤結(jié)束后,“簽到大廳”還需要負責(zé)返回本次考勤的具體情況。
通過上述環(huán)境的使用與編碼,得到一個基本的功能系統(tǒng),如圖4所示。
用戶登錄項目首頁查看到相關(guān)內(nèi)容,布局上部是有關(guān)主頁面的UI設(shè)計,中部是常用應(yīng)用,如發(fā)起考勤或查看考勤記錄,用于查看項目實現(xiàn)的主要功能與核心數(shù)據(jù),下部為用戶可選擇的應(yīng)用,如首頁、課程信息、考勤信息、考勤分析等功能,在此布局上,用戶可根據(jù)圖標的提示信息來實現(xiàn)相應(yīng)的功能。
項目涉及的基本功能體現(xiàn)在移動端,本系統(tǒng)會根據(jù)用戶身份的不同而設(shè)置不同的使用權(quán)限。對于用戶的權(quán)限分配,還需與登錄功能模塊建立聯(lián)系,不同的用戶身份在登錄時會跳轉(zhuǎn)至不同的功能界面。
如點擊課程信息會顯示課程列表,如圖5所示。其中每一個課程會顯示出課程名稱和授課的時間,教師或?qū)W生可點擊相應(yīng)的課程觸發(fā)點擊事件跳轉(zhuǎn)到相應(yīng)的課程信息界面進行信息查看,如圖6所示。
其他功能如查看考勤記錄,用戶可通過點擊主頁面的考勤記錄或點擊課程列表的下方圖標來切換至考勤記錄界面,如圖7所示。用戶可以查看每一名學(xué)生的出勤情況,根據(jù)考勤數(shù)據(jù)對考勤情況進行合理的分析并歸納相應(yīng)的結(jié)論。
5 結(jié)論
本文基于Android平臺和NAO機器人,使用人臉識別技術(shù),實現(xiàn)了人臉識別考勤系統(tǒng),有效地解決了目前市場上流行的考勤軟件的缺陷,即根據(jù)GPS考勤定位不準,他人代簽到等問題。將課堂考勤與機器人結(jié)合起來,增加了課堂的趣味性,調(diào)動了學(xué)生上課的積極性。未來希望可以提高本系統(tǒng)人臉識別的精度,改善人臉識別的效率,為用戶提供更人性化的簽到體驗。
參考文獻:
[1] 張亞杰.基于Android平臺的移動終端應(yīng)用程序的研究與開發(fā)[D].鄭州:鄭州大學(xué),2013.
[2] 侯建峰.基于Android的名著助讀系統(tǒng)設(shè)計與實現(xiàn)[J].計算機科學(xué)與應(yīng)用,2019, 9(11): 1977-1985.
[3] 陸婕,李少波.基于知識庫的智能客服機器人問答系統(tǒng)設(shè)計[J].計算機科學(xué)與應(yīng)用,2019, 9(11): 2098-2104.
[4] 郭冠良,朱堪日,蔡敏.基于Android平臺的企業(yè)考勤系統(tǒng)設(shè)計與實現(xiàn)[J].無線互聯(lián)科技,2019(1):52-53.
[5] 董崇杰.基于Android的移動定位課堂考勤系統(tǒng)設(shè)計與實現(xiàn)[J].計算機時代,2017(11):27-29.
[6] 郭鉞.基于NAO機器人在高職人工智能機器人專業(yè)教學(xué)中的應(yīng)用[J].科學(xué)大眾(科學(xué)教育),2019(4):126.
[7] 張婷.NAO機器人在自閉癥干預(yù)中的應(yīng)用[J].系統(tǒng)仿真技術(shù),2013,9(4):327-331,338.
【通聯(lián)編輯:代影】