林春青 張永
【摘要】本項目是一個基于uni-app的簽到app。項目在百度地圖的基礎上,將百度AI平臺的人臉識別SDK內(nèi)置于app上,實現(xiàn)人臉的采集和認證,從而實現(xiàn)快速準確的簽到。
【關鍵詞】人臉識別 ?簽到 ?認證
一、引言
眾所周知,課堂簽到是高校老師普遍頭疼的問題之一,由于傳統(tǒng)簽到方式的局限性,傳統(tǒng)簽到方式準確性普遍不高,本項目采用人臉識別簽到技術,實現(xiàn)快速準確的簽到。
同時,本項目采用uni-app框架代替?zhèn)鹘y(tǒng)的android應用開發(fā),uni-app是一個使用Vue.js開發(fā)所有前端應用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、H5、以及各種小程序(微信/支付寶/百度/頭條/QQ/釘釘/淘寶)、快應用等多個平臺,對于開發(fā)者而言,使用uni-app使得app的開發(fā)更加簡單高效。
二、主要功能模塊
(一)地圖定位識別模塊
(1)高德地圖定位。高德地圖定位,主要依靠高德地圖提供的Android定位sdk來實現(xiàn)。其提供了GPS定位,基站定位和WIFI定位三種不同的定位模式。
三種定位模式的優(yōu)缺點如下所示:
GPS定位:根據(jù)設備GPS芯片和GPS衛(wèi)星實現(xiàn)定位,GPS定位在室內(nèi)是不可以使用的。GPS定位精度與芯片以及實際使用環(huán)境有關,一般情況下,GPS定位精度在10m左右;
基站定位:根據(jù)設備獲取的基站信息實現(xiàn)定位,基站定位精度一般不受使用環(huán)境影響,主要和基站的覆蓋半徑有關。百度的基站定位服務精度目前在200m左右;
Wi-Fi定位:根據(jù)設備獲取的Wi-Fi的信息實現(xiàn)定位,Wi-Fi定位精度一般不受使用環(huán)境影響,主要和Wi-Fii半徑、Wi-Fi分布密度有關。
本系統(tǒng)為保證定位的準確性,會根據(jù)用戶所在位置的信號強度以及用戶手機的剩余電量等屬性進行綜合判斷,切換不同的定位模式,以達到更好的定位效果。
切換算法的實現(xiàn)方案如下所示:
在戶外且手機電量充足的情況下優(yōu)先使用gps定位,保證定位的準確性。在基站的覆蓋范圍內(nèi)優(yōu)先使用基站定位。在室內(nèi)時,使用WIFI定位,提升位置信息的準確度。
(2)有效區(qū)域設定。此模塊為管理員提供在地圖上設定有效區(qū)域的功能。即管理員可以在本系統(tǒng)提供的地圖上劃定一個范圍,作為本系統(tǒng)的簽到有效區(qū)域。本系統(tǒng)提供了智能區(qū)域推薦和記憶常用區(qū)域的兩個特色功能。即將常用的區(qū)域設定為模塊,如果管理員不想手動劃分有效范圍,可以通過點擊智能生成的區(qū)域模塊,自動生成有效范圍,實現(xiàn)區(qū)域的智能選擇。此外,為了進一步減小管理員的操作難度,系統(tǒng)還增加記憶管理員常用的設定區(qū)域的功能,對于常用的區(qū)域,管理員能夠直接調(diào)用,無需重新劃分。
(3)目標位置導航。本系統(tǒng)的管理員賬戶可以創(chuàng)建自己的管理組,管理員需要將目標簽到群體加入到自己的管理組當中。在管理員設定完有效區(qū)域后。已經(jīng)加入到管理組的成員可以在本系統(tǒng)上看到目標區(qū)域的位置信息,并且會自動生成推薦路線,方便用戶更快的到達管理員設定的有效區(qū)域。
(二)人臉識別簽到模塊
(1)人臉采集。人臉采集有人臉檢測,人臉跟蹤,人臉關鍵點采集三個關鍵功能。用戶在使用本系統(tǒng)進行簽到時,系統(tǒng)會調(diào)用用戶手機的攝像頭對人臉進行實時監(jiān)測,并對當前檢測到的人臉持續(xù)跟蹤,動態(tài)定位人臉輪廓,并動態(tài)實時展示人臉的核心關鍵點,在人臉的檢測及追蹤過程中,完成人臉圖片采集,并輸出預設的人臉圖片。
(2)人臉庫注冊。系統(tǒng)服務器在接收在接收用戶設備發(fā)來的預設圖片后,會對人臉圖片的姿態(tài)角度,遮擋,清晰度,光照條件等進行實時監(jiān)測,符合質(zhì)量條件的人臉圖片才會被采集。此外,系統(tǒng)會給用戶設定完成相關動作,以此判斷目標是否為活體。只有通過質(zhì)量檢測和活體檢測的人臉圖片才會作為有效圖片存儲在人臉庫中。
(3)人臉搜索比對。在獲得用戶客戶端發(fā)來的符合檢測標準的人臉圖片后,系統(tǒng)服務器會找到對應用戶的人臉集合,將此圖片與人臉集合中的每一張圖片都進行比對,并給出相似度分值。通過對相似度分值進行大小分析,系統(tǒng)會給出人臉比對的結(jié)果,并以此作為人臉驗證是否通過的標準。
(三)考勤統(tǒng)計模塊
系統(tǒng)會對用戶的簽到情況進行統(tǒng)計和分析。管理員可以在系統(tǒng)上實時監(jiān)測自己管理組成員的簽到情況。此外,系統(tǒng)會對近一段時間的成員簽到情況進行總體分析,給出分析結(jié)果和建議。方便管理員快速而又準確地掌握其管理組成員的簽到情況。
三、實現(xiàn)方法
(一)前端部分
前端部分采用uni-app開發(fā),uni-app是以vue.js框架為基礎的開發(fā)框架,開發(fā)者只需要編寫一套代碼,就能發(fā)布到不同端。vue是一套構(gòu)建用戶界面的漸進式框架,采用組件化開發(fā),只需要把應用的各個模塊拆分到一個個組件中,再分別寫好各個組件的實現(xiàn),整個應用就算完成了,開發(fā)效率極高。
在數(shù)據(jù)傳輸部分,主要使用ajax技術進行前后臺交互。
在人臉采集部分,通過百度ai的人臉采集sdk采集到符合要求的人臉后,使用ajax傳輸?shù)胶笈_進行人臉比對,后臺在比對后返回結(jié)果。
(二)后臺部分
后臺部分采用node.js語言,Node.js是一個事件驅(qū)動I/O服務端JavaScript環(huán)境,基于Google的V8引擎,V8引擎執(zhí)行Javascript的速度非??欤阅芊浅:?。而Express 是一個保持最小規(guī)模的靈活的 Node.js Web 應用程序開發(fā)框架,express使得node.js的開發(fā)更為簡單。
在數(shù)據(jù)交互部分,使用express的router模塊,對不同接口進行獨立處理和響應。
在數(shù)據(jù)管理部分,使用mongoose,一個在node.js異步環(huán)境下對mongodb進行便捷操作的對象模型工具,對mongodb數(shù)據(jù)庫進行操作。
(三)數(shù)據(jù)管理部分
數(shù)據(jù)管理部分采用mongodb數(shù)據(jù)庫,MongoDB使用JSON的變種BSON作為內(nèi)部存儲的格式和語法。針對MongoDB的操作都使用JSON風格語法,客戶端提交或接收的數(shù)據(jù)都使用JSON形式來展現(xiàn)。相對于SQL來說,更加直觀,容易理解和掌握。
基金項目:課題資助:南昌航空大學創(chuàng)新創(chuàng)業(yè)教育課程培育項目《C語言程序設計》;南昌航空大學校級教改課題《C語言程序設計》課程融入思政元素的探索與實踐。課題資助:南昌航空大學第14屆“三小”課題。