黃慧 曾志 龍賽 譚婷
摘要:本文設計了一種以V3版Face++人臉識別技術為基礎,以新浪云為云平臺結合OpenCV庫的微信公眾號智能考勤系統。該設計主要目的是結合微信公眾號這一覆蓋率極高的APP應用科學有效地統計課堂學生的出勤情況信息,為以后的基于人臉識別的其他應用及針對課堂的大數據分析打開思路。
關鍵詞:微信公眾平臺;新浪云引擎;Face++API;智能考勤系統
中圖分類號:TP391.41 文獻標識碼:A 文章編號:1007-9416(2018)04-0164-02
1 本考勤方式特點
本次設計了一種基于微信公眾平臺的人臉識別簽到方法。相較于微電腦機械打卡考勤、刷卡考勤、指紋考勤,本考勤方式解決了傳統打卡考勤系統“只認卡、不認人”的弊端。相較于普通的人臉識別考勤,在微信的公眾號上進行開發應用,微信方便實時,普及率高,且成本較低。對于教師來說,只要有一部裝有微信的手機,便可讓多位教師實時地掌握同學們的到課情況,可以通過數據統計掌握學生們的近期表現,并給予相應的指導方案,可以說是將學院所有學生的到課情況裝進了口袋。并且由于該考勤系統是基于微信公眾號,還可以實時推送一些重要校園事件,比如開學、放假時間、重大會議時間等等,讓學生能夠更好地進行時間的規劃。基于微信公眾平臺的考勤系統,具有非接觸,自定義功能,方便,價格便宜等等的特點,將考勤裝進口袋,為以后的基于人臉識別的其他應用及針對課堂的大數據分析開拓了思路。
2 FACE++簡介
Face++ 人工智能開放平臺是北京曠視科技有限公司(后稱曠視科技)推出的、面向開發者的開放平臺。Face++ 以 API 或 SDK 的形式,將領先的、基于深度學習的計算機視覺技術開放給開發者。
2.1 調用規則
Face++人工智能開放平臺API是HTTP API。常用的編程語言都能發起HTTP請求(通過第三方庫或自帶API),使用者向我們的服務器發起HTTP請求,并加上合適的參數,其中必不可少的是api_key和api_secret。服務器將會對請求進行處理,得到結果,返回的為一個JSON字符串。
2.2 開放能力
(1)人臉識別.Face++ 提供了人臉檢測、83個關鍵點檢測與跟蹤、人臉分析、1:1人臉比對或1:N人臉搜索的能力。開發者在此基礎上做進一步開發,即可輕松實現美顏、面部貼圖、身份驗證、任務識別、照片聚類等功能;(2)證件識別.利用Face++的OCR技術,開發者的產品可以識別出身份證、駕照、行駛證上的文字,快速采集證件內的文本信息;(3)圖像識別. 利用Face++ 的圖像識別技術,開發者的產品可以識別出圖片中的文字、場景和物體。
3 系統設計
本系統可以使用兩種方式調用攝像頭獲取照片:一種是使用openCV庫調用攝像頭獲取其中的某幀;另一種是使用微信公眾平臺提供的自定義菜單功能調用攝像頭。各自都有自己的優缺點。如圖1將照片傳送至公眾平臺或者直接傳送至服務器,應不同情況而定。在識別照片中的人臉和向微信公眾平臺返回信息前,需要將微信公眾平臺,新浪云服務器關聯起來即使用云平臺搭建公眾號,主要就是配置token。當普通微信用戶向公眾賬號發消息時,微信服務器將POST消息的XML數據包到開發者填寫的URL上,而開發者根據數據包格式進行相應的消息處理。而圖片人臉識別的話,開發者只需將圖片的URL作為調用API時的參數即可進行人臉處理,在調用face++API時我們是使用CURL向face++服務器發送HTTP請求的。
3.1 Token驗證
Token是一個用戶自定義的任意字符串。在成功提交了開發者自定義的這個字符串之后,Token的值會保存到微信后臺。只有服務器和微信后臺知道這字符串,于是Token就成了這兩臺服務器之間的秘鑰,它可以讓公眾賬號服務器確認請求是來自微信后臺還是惡意的第三方。以下是Token驗證的具體過程:1)微信后臺再向公眾號服務器發送數據的時候,會額外帶上4個參數:timestamp、signature、nonce、echostr。其中timestamp是時間戳,nonce是一個隨機數,signature是對timestamp、nonce和Token進行SHA1加密后的字符串,SHA1的加密過程是不可逆的,即不能通過timestamp、signature和nonce計算出Token是什么。2)在公眾賬號是服務器受到timestamp、signature和nonce之后,同樣對nonce、timestamp和Token使用SHA2加密算法,得到自己的簽名,如果自己的簽名和請求中的signature是一樣的,那么說明請求是來自微信后臺而不是惡意的第三方。
3.2 微信接收消息
當微信用戶向公眾號發消息時,微信服務器會將用戶消息發送到所填寫的URL上。目前支持接收有文本,圖片,地理位置,語音,視頻消息,關注/取消關注事件等消息。微信服務器會將用戶的消息以XML形式封裝并返回給開發者的服務器(本次我們使用的是SAE)。在此過程開發者可以對獲取的XML數據進行處理。
所有xml包格式和參數說明在微信開發者文檔有說明。
3.3 使用CURL發送HTTP請求
CURL是一個非常強大的開源庫,支持很多協議,包括HTTP,FTP,TELNET等,我們使用它來發送HTTP請求。它給我們帶來的好處是可以通過靈活的選項設置不同的HTTP協議參數,并且支持HTTPS。如圖2,微信中的獲取ACCESS TOKEN和自定義菜單的接口URL地址都是HTTPS協議的,CURL可以根據URL前綴是“http”還是“https”自動選擇是否加密發送內容。使用CURL的PHP擴展完成一個HTTP請求的發送一般有以下幾個步驟:(1)初始化連接句柄;(2)設置CURL選項;(3)執行并獲取結果;(4)釋放CURL連接句柄。
以下是本組用CURL發送HTTP請求的代碼:
//初始化
$ch=curl_init();
//設置選項
curl_setopt($ch,CURLOPT_URL,$faceUrl);
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"POST");
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0(compatible;MSIE5.01;Windows NT 5.0)');
curl_setopt($ch,CURLOPT_AUTOREFERER,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
執行并獲取html
$info=curl_exec($ch);
if(curl_errno($ch)){
echo 'Errno'.curl_error($ch);
//釋放句柄
curl_close($ch) ;
3.4 face++接口邏輯設計(圖3)
4 結論與展望
基于face++微信公眾基于Face++庫在微信公眾號中實現的智能考勤系統,通過調用攝像頭,不需要被檢測人的配合、非侵犯性,系統借助微信這一具有廣大受眾的平臺,極具便捷性。系統成本低、便捷、可靠。并行簽到方式,節省時間。項目研究成果可以擴展到企業內部員工考勤、會議簽到等需要現場鑒別身份信息的業務中,結合使用良好的生物特征檢測方案,可更加準確地獲取到場人員信息,為管理工作提供了便利。
參考文獻
[1]薛峰,譚忠.一種基于微信公眾號的考勤管理方法[P].CN10692 0075A,2017.
[2]敬永紅.基于微信公眾平臺的高校體育管理系統的分析與設計[J].科技訊,2017,15(12):31-32.
[3]戴濤明,李亞崗,張亦弛等.基于iBeacon和微信平臺的課堂考勤系統設計與實現[J].人力資源管理, 2017,(12):402-403.
[4]朱智星,白鵬飛,羅智杰,等.基于微信公眾平臺的云智能采集系統的設計[J].電子技術應用,2015,41(8):17-19.
[5]陳東偉,譚建新,溫家成,等.基于微信的考勤信息管理系統設計與實現[J].信息技術,2017,(5):85-88.