董圣華 馬麗潔
摘 要:文章通過研究和學(xué)習(xí),尋找出一種合適的人臉識(shí)別算法平臺(tái),能快速簡(jiǎn)單并且準(zhǔn)確的實(shí)現(xiàn)人臉識(shí)別,F(xiàn)ace++平臺(tái)成為我們的首選,最終我們借助Face++的Python SDK的API接口設(shè)計(jì)并在搭載Raspbian的樹莓派上實(shí)現(xiàn)了人臉識(shí)別功能。
關(guān)鍵詞:Face++;人臉識(shí)別;設(shè)計(jì)與實(shí)現(xiàn)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-2945(2018)21-0044-02
Abstract: In this paper, through research and study, we find a suitable face recognition algorithm platform, which can quickly, simply and accurately implement face recognition platform become our first choice. Finally, we design and implement face recognition on raspberry pie with Raspbian with the API interface of Python SDK of Face++.
Keywords: Face++; face recognition; design and implementation
隨著互聯(lián)網(wǎng)技術(shù)的疾速成長(zhǎng)及大數(shù)據(jù)時(shí)代的到來,信息安全問題也隨之提上議程,怎么快速高效率的進(jìn)行身份驗(yàn)證和識(shí)別,仍舊是成為人們?nèi)諠u重視的問題.原有的基于密碼,驗(yàn)證碼和磁卡的身份識(shí)別認(rèn)證方法都存在著明顯的缺陷,易遺失、易損壞、易破譯等等,已經(jīng)完全不能跟上時(shí)代的發(fā)展和達(dá)到人們的需求。在這種時(shí)代背景下,生物識(shí)別技術(shù)也逐漸進(jìn)入人們的視線就是通過固有的生理特征或行為特征進(jìn)行識(shí)別人體, 它比傳統(tǒng)的身份認(rèn)證更有效、更可靠和更安全,近年來得到廣泛的研究和應(yīng)用。如今社會(huì),生物特征識(shí)別技術(shù)應(yīng)用最廣泛的是對(duì)指紋、虹膜和人臉進(jìn)行識(shí)別。其中最熱門的被關(guān)注最多的就是人臉識(shí)別了,人臉識(shí)別聽起來你會(huì)認(rèn)為他已經(jīng)沒有什么大的突破,是比較傳統(tǒng)的并且沒有發(fā)展空間的,然而,伴著計(jì)算機(jī)的普遍推廣應(yīng)用,云計(jì)算能力和算法的大轉(zhuǎn)折,真正的爆點(diǎn)已經(jīng)開始,國(guó)內(nèi)就有著名的北京曠世公司旗下的產(chǎn)品Face++云端識(shí)別平臺(tái),過不了幾年,我相信對(duì)人臉的登陸功能及人臉的搜尋功能都將會(huì)實(shí)現(xiàn)于具體應(yīng)用。
本文通過研究和學(xué)習(xí),尋找出一種合適的人臉識(shí)別算法平臺(tái),能快速簡(jiǎn)單并且準(zhǔn)確的實(shí)現(xiàn)人臉識(shí)別,F(xiàn)ace++平臺(tái)成為我們的首選,最終我們借助Face++的Python SDK的API接口設(shè)計(jì)并在搭載Raspbian的樹莓派上實(shí)現(xiàn)了人臉識(shí)別功能。
1 實(shí)現(xiàn)項(xiàng)目需要具備的條件
硬件:樹莓派一臺(tái)。本項(xiàng)目使用Raspberry Pi 2 Model B,8GB或8GB以上內(nèi)存卡一張,樹莓派專用攝像頭或USB攝像頭一個(gè)。
軟件:樹莓派系統(tǒng)鏡像,F(xiàn)ace++SDK,OpenCV,科大訊飛語音合成SDK.Python運(yùn)行環(huán)境的搭建。
2 環(huán)境搭建步驟
步驟如下:
2.1 下載樹莓派系統(tǒng)鏡像
拿到樹莓派以后我們要搭建樹莓派的系統(tǒng)環(huán)境,才能進(jìn)行后續(xù)的開發(fā)工作,到樹莓派的官方網(wǎng)站:https://www.raspberrypi.org/下載與樹莓派相吻合的系統(tǒng)鏡像,(本項(xiàng)目搭載Raspbian來進(jìn)行開發(fā))拿到鏡像包以后解壓出來以.img為后綴名的系統(tǒng)鏡像。
2.2 給樹莓派燒寫系統(tǒng)鏡像
把內(nèi)存卡插入電腦,(本項(xiàng)目以Ubuntu Linux平臺(tái)燒寫鏡像)使用lsusb命令找到內(nèi)存卡設(shè)備在Linux系統(tǒng)中的設(shè)備號(hào),本項(xiàng)目進(jìn)行時(shí)設(shè)備號(hào)為/dev/sda5,之后用Linux系統(tǒng)中的dd命令來燒寫:sudo dd if=raspberry.img of=/dev/sda5 bs=1M, 在此解釋 一下dd命令的三個(gè)參數(shù),if:intputfile(輸入文件)指要寫入設(shè)備的文件,of:outputfile(輸出文件),指的是要把輸入文件寫入的設(shè)備,bs:blocksize( 字區(qū)大?。┰O(shè)置同時(shí)讀寫的字節(jié)數(shù)。上訴步驟完成之后你就可以把內(nèi)存卡插入樹莓派啟動(dòng)系統(tǒng)了。
2.3 搭建OpenCV環(huán)境
由于Raspbian系統(tǒng)自帶Python開發(fā)環(huán)境,所以,接下來要進(jìn)行OpenCV的環(huán)境搭建。對(duì)于搭建OpenCV環(huán)境,不管是Windows、Linux、MacOS,OpenCV都有詳細(xì)的教程,本項(xiàng)目使用的系統(tǒng)Rasbian是Linux,具體教程參考OpenCV官方教程,在此不再贅述。
2.4 下載Face++官方的SDK套件
首先需要在Face++官網(wǎng)注冊(cè)賬號(hào),然后拿到Face++開發(fā)權(quán)限的Key和Secret之后就可以下載SDK進(jìn)行開發(fā)了,F(xiàn)ace++提供了Python、Java、PHP、C,等編程語言的SDK供開發(fā)者選擇,http://old.faceplusplus.com.cn/dev-tools-sdks/,本項(xiàng)目使用PythonSDK來進(jìn)行開發(fā)。
2.5 下載配置科大訊飛的TTS開發(fā)套件
與Face++相同,你首先要去科大訊飛的官網(wǎng)注冊(cè)一個(gè)賬號(hào)拿到Key和Sercet以便于后續(xù)開發(fā)工作??拼笥嶏w依然提供了諸多的編程語言支持和平臺(tái)支持,值得一說的是,科大訊飛在舊的版本有是支持樹莓派的單獨(dú)的開發(fā)套件的,但是在新版本中移除了他們。所以本項(xiàng)目依然在用老的版本。如果你想要使用新的版本在樹莓派開發(fā)的話可以選擇科大訊飛的RESET的方式來進(jìn)行開發(fā)。拿到開發(fā)套件以后,在配置文件中配置好自己的賬號(hào)和密碼。但是科大訊飛提供的語音轉(zhuǎn)換是C語言寫的,上述內(nèi)容中我們提到過本項(xiàng)目是基于Python語言開發(fā)的,所以我們需要發(fā)揮“膠水語言”的特性,使用Python腳本來調(diào)用C語言。通常我們要運(yùn)行C語言的程序需要把C語言編譯成二進(jìn)制的可執(zhí)行文件,但是如果我們使用Python調(diào)用C語言的話是不需要編譯為可執(zhí)行二進(jìn)制的,而是需要編譯以.so為后綴名的動(dòng)態(tài)庫(kù),所以我們用命令gcc -o libtts.so -shared -fPIC tts_sample.c生成了動(dòng)態(tài)庫(kù)以后就可以調(diào)用了。
調(diào)用方法的py_to_c.py如下:
(1)/usr/bin/evn python2
(2)#coding:utf-8
(3)import ctypes
(4)openC=ctypes.LoadLibrary()
(5)openC.begin_tts()
第一行是指定了解釋器說明我們要用Python2來解釋我們的腳本,第二行指定了編碼方式是使用UTF-8編碼方式,這樣做的目的是為了我們編寫腳本時(shí)不會(huì)因?yàn)橛兄形亩鴪?bào)錯(cuò),由于上述代碼中沒有用到中文,所以不加第二行也可以。第三行是導(dǎo)入了Python調(diào)用C語言的支持庫(kù)。第四行把C語言要用到的C語言本身用到的庫(kù)。第五行表示了調(diào)用C程序里的begin_tts()函數(shù),這個(gè)函數(shù)就是你的C程序中的函數(shù),我的函數(shù)名叫begin_tts()。
上述5步完成之后我們就開始正式的進(jìn)入項(xiàng)目的具體實(shí)現(xiàn)了,在工作目錄下建立Person這個(gè)目錄,Person的中文意思就是“人”的意思,所以這個(gè)目錄下將存放要建立人臉數(shù)據(jù)的每個(gè)人,所以我建立了以人名為名字的目錄, 在每個(gè)人名的目錄下存放每個(gè)人的照片,以便于建立人臉模型;做完照片收集和本地?cái)?shù)據(jù)的建立以后,我們就需要編寫代碼了,首先要編寫在云端識(shí)別平臺(tái)創(chuàng)建組群、創(chuàng)建人物、加入人臉、訓(xùn)練族群的步驟,所以我編寫了detect_and_train.py來具體實(shí)現(xiàn)。
接下來的步驟就是編寫代碼來進(jìn)行后續(xù)的任務(wù),打開攝像頭、從視頻流中檢測(cè)人臉、把人臉寫到新的人臉目錄New_Person下,把照片上傳到Face++檢測(cè)人臉,與云端的數(shù)據(jù)庫(kù)匹配人臉、處理返回的信息、合成語音播放出來。并且把攝像頭拍到的所有人臉都記錄在All_Person目錄下,以便于不斷完善人物的人臉和達(dá)到記錄訪客的作用。
總體來說,本文通過研究和學(xué)習(xí),尋找出一種合適的人臉識(shí)別算法,能快速簡(jiǎn)單并且準(zhǔn)確的實(shí)現(xiàn)人臉識(shí)別,F(xiàn)ace++平臺(tái)都可以達(dá)到這些條件,最終我借助Face++的PythonSDK的API接口設(shè)計(jì)并在搭載Raspbian的樹莓派上實(shí)現(xiàn)了人臉識(shí)別功能。
展望在數(shù)據(jù)爆炸科技愈來愈發(fā)達(dá)的今天,生物特征識(shí)別技術(shù)已然變得愈發(fā)重要。生物識(shí)別中除了人臉識(shí)別技術(shù)是大家都耳濡目染的,還有語音識(shí)別、指紋識(shí)別、虹膜識(shí)別、靜脈識(shí)別。膜識(shí)別、靜脈識(shí)別。
參考文獻(xiàn):
[1]face++文檔http://www.faceplusplus.com.cn/api-overview/.
[2]科大訊飛語音模塊文檔http://www.xfyun.cn/doccenter/linux/.
[3]Opencv文檔http://docs.opencv.org/2.4.13/.
[4]張宏林.Visual C++數(shù)字圖像模式識(shí)別技術(shù)及工程實(shí)踐[M].北
京:人民郵電出版社,2003.