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