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