倪笑宇 周鴻宇 龐永俊
(河北建筑工程學(xué)院,河北 張家口 075000)
如何更有效地防止盜竊是人們普遍關(guān)注的問題.傳統(tǒng)的門禁系統(tǒng),如機(jī)械鎖和單片機(jī)控制,由于它們需要近距離接觸,容易丟失、損壞和重復(fù),無法滿足人們的生活需求.人體的生物學(xué)特性是獨(dú)一無二的,與本體密不可分.如果應(yīng)用于門禁系統(tǒng),它可以彌補(bǔ)傳統(tǒng)門禁系統(tǒng)的缺點(diǎn).隨著計(jì)算機(jī)和生物識(shí)別技術(shù)的發(fā)展,生物識(shí)別技術(shù)已成為開發(fā)高性能安全系統(tǒng)的關(guān)鍵技術(shù).
針對(duì)小型場合(如小型辦公室,家庭等),本文以樹莓派3b+為硬件平臺(tái),利用微信開發(fā)平臺(tái),開發(fā)可與智能終端硬件互動(dòng)的微信程序,基于Python語言和人臉識(shí)別技術(shù)設(shè)計(jì)一款智能門禁系統(tǒng).
主要研究的關(guān)鍵技術(shù)如下:1)人臉識(shí)別算法.人臉識(shí)別算法作為門禁系統(tǒng)的核心,采用何種算法至關(guān)重要,這不僅關(guān)系到系統(tǒng)能否運(yùn)行穩(wěn)定,也關(guān)系到系統(tǒng)的識(shí)別性能.2)微信平臺(tái)開發(fā).本文采用微信小程序作為軟件平臺(tái),需要掌握微信小程序的架構(gòu).此外系統(tǒng)軟件設(shè)計(jì)部分采用python語言,需要對(duì)微信開發(fā)平臺(tái)有所研究.3)原理測試.通過測試實(shí)現(xiàn)系統(tǒng)的主要功能,包括圖像采集、人臉檢測、人臉識(shí)別以及遠(yuǎn)程請(qǐng)求的擴(kuò)展應(yīng)用.
圖1 系統(tǒng)結(jié)構(gòu)框圖
根據(jù)系統(tǒng)組成和系統(tǒng)執(zhí)行流程,本文設(shè)計(jì)的人臉識(shí)別門禁系統(tǒng)分為圖像采集模塊、圖像處理模塊、WiFi通信模塊、遠(yuǎn)程控制模塊和門禁系統(tǒng)執(zhí)行模塊五部分,如圖1所示.
門禁系統(tǒng)的前期硬件的準(zhǔn)備工作,包括人臉識(shí)別設(shè)備(基于樹莓派)安裝在門的一側(cè)和電控鎖安裝在門上.首先需要將用戶的人臉提前錄入到系統(tǒng)之中作為基礎(chǔ)樣本,當(dāng)人站在門前的時(shí)候,攝像頭檢測到人臉,并拍攝人臉的照片,將拍攝的照片與系統(tǒng)之前存儲(chǔ)好的人臉對(duì)比,當(dāng)兩者的相似度達(dá)到一定標(biāo)準(zhǔn)后,則系統(tǒng)可以判定當(dāng)前的人與系統(tǒng)中錄入的用戶為同一個(gè)人,并輸出用戶的個(gè)人信息及當(dāng)前的開門時(shí)間存入數(shù)據(jù)庫中以便微信小程序?qū)﹂_門記錄的讀取,在判定為同一個(gè)人的同時(shí),系統(tǒng)將樹莓派的GPIO引腳中控制電控鎖的引腳置于高電平或低電平,電控鎖做出響應(yīng)控制門的開閉.
圖2 GPIO引腳電路圖
樹莓派與通用單片機(jī)相比,除了相同的IO引腳控制外,由于運(yùn)行相應(yīng)的操作系統(tǒng),可以完成更復(fù)雜的任務(wù)管理和調(diào)度,可以支持更高級(jí)別的應(yīng)用程序的開發(fā).樹莓派將底層硬件與上層應(yīng)用程序連接起來,它的開發(fā)語言不局限于C語言,可以實(shí)現(xiàn)物聯(lián)網(wǎng)的云控制和云管理.樹莓派提供的IO引腳與通用的PC平臺(tái)相比可以直接控制其底層硬件,同時(shí)它的體積更小,成本更低,同樣可以完成一些PC任務(wù)與應(yīng)用.
樹莓派除了超高性價(jià)比和完善的生態(tài)系統(tǒng)外,其開放的40Pin對(duì)外接口至關(guān)重要,如圖2所示.有28個(gè)都是可編程的GPIO,其中部分GPIO可以復(fù)用為IIC,SPI,UART,PWM等等,可以用來驅(qū)動(dòng)各種外設(shè).
在本系統(tǒng)中,控制電控鎖選擇了29和32兩個(gè)引腳,另外還需接34,39兩個(gè)GND引腳,通過控制29和32引腳置于高低電平達(dá)到控制門鎖的目的.
本系統(tǒng)的圖像采集模塊采用樹莓派廣角攝像頭,攝像頭電路板與Raspberry Pi通過一條15芯的排線進(jìn)行連接.僅有兩個(gè)連接座需要連接,排線需要安裝到攝像頭電路板和Raspberry Pi上.對(duì)于攝像頭電路板,排線末端的藍(lán)色標(biāo)記應(yīng)該背對(duì)著電路板.當(dāng)攝像頭與樹莓派正確連接后,需要在樹莓派上配置好攝像頭的運(yùn)行環(huán)境,然后進(jìn)行攝像頭的調(diào)試,所有條件準(zhǔn)備好后才能進(jìn)行圖像的采集.
本系統(tǒng)采用的樹莓派3b+本身集成了連接WiFi進(jìn)行網(wǎng)絡(luò)訪問的功能,進(jìn)入樹莓派的系統(tǒng)開啟它的WiFi模塊再進(jìn)行相關(guān)的配置就可以連接網(wǎng)絡(luò)了.系統(tǒng)中除了需要連接網(wǎng)絡(luò)去訪問互聯(lián)網(wǎng)上的資源之外,還需要使用WiFi通信模塊實(shí)現(xiàn)與客戶端的信息傳輸與通信,所以將樹莓派和客戶端連接至同一局域網(wǎng)下,以便于它們之間的信息傳輸.
本系統(tǒng)選擇電插鎖作為系統(tǒng)開關(guān)門的動(dòng)作執(zhí)行模塊.樹莓派對(duì)應(yīng)的引腳通過信號(hào)線連接到電插鎖控制端,通過控制電插鎖鎖的高低電平來控制電插鎖開關(guān).此外,在實(shí)際應(yīng)用中也有必要考慮異常停電.系統(tǒng)應(yīng)提供備用電源設(shè)備,防止門鎖在停電時(shí)失去防盜功能.如果電插鎖無法控制,還需要專業(yè)人員對(duì)其原因進(jìn)行分析、檢測和故障排除.
人臉圖像的獲取是一切算法進(jìn)行下去的前提,若想獲得一張人臉的圖片,需要借助攝像頭識(shí)別出場景中的人臉進(jìn)行拍照,此時(shí)程序的作用就是檢測出場景中的人臉.
主流的人臉檢測算法一般包括四大類:基于Haar+Adaboost的人臉檢測、基于特征的方法、基于模板的方法以及基于CNN的方法.
圖像采集系統(tǒng)在一個(gè)統(tǒng)一灰度的平面上描繪了眼睛、鼻子和嘴巴的結(jié)構(gòu).首先,根據(jù)平滑柱狀圖對(duì)圖像進(jìn)行粗略分割,然后根據(jù)一定的灰色空間對(duì)人眼進(jìn)行定位,最后確定人臉區(qū)域,如圖3所示.
圖3 人臉檢測過程圖
當(dāng)人臉檢測出來之后,攝像頭進(jìn)行拍照,保存人臉的圖像,接下來就需要將新的人臉圖像與之前系統(tǒng)中保存的樣本進(jìn)行對(duì)比,判斷它們之間的相似度.兩張圖片相似度比對(duì)如“人證合一”場景,其實(shí)并不是直接對(duì)圖片數(shù)據(jù)進(jìn)行比較,而是對(duì)兩張圖片分別進(jìn)行人臉建模特征提取,然后把兩個(gè)特征進(jìn)行相似度比對(duì).
若想實(shí)現(xiàn)硬件與軟件之間的通信必須實(shí)現(xiàn)客戶端與服務(wù)端的通信,本系統(tǒng)將服務(wù)端的程序部署在樹莓派上,用來對(duì)客戶端的請(qǐng)求進(jìn)行響應(yīng).Socket憑借自身能夠監(jiān)控實(shí)時(shí)消息等優(yōu)點(diǎn)廣泛運(yùn)用在服務(wù)端與客戶端的通信中,在本系統(tǒng)中采用http.sever進(jìn)行服務(wù)端與客戶端的通信.
使用微信開發(fā)平臺(tái)編寫微信小程序客戶端代碼,在前端設(shè)計(jì)兩個(gè)可點(diǎn)擊開門和關(guān)門的按鈕,在按鈕上綁定兩個(gè)執(zhí)行函數(shù),同時(shí)在樹莓派上部署服務(wù)端,把樹莓派作為服務(wù)器接收來自微信小程序的請(qǐng)求,以網(wǎng)頁端的App作為中間件,服務(wù)端和客戶端采用http.sever和XMLrequest實(shí)現(xiàn)兩者之間的通信.通信建立后,服務(wù)端實(shí)時(shí)監(jiān)控來自客戶端的請(qǐng)求,當(dāng)用戶點(diǎn)擊按鈕后,其綁定的函數(shù)命令執(zhí)行,隨之向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器接收之后,判斷請(qǐng)求的類型,做出響應(yīng),直接控制樹莓派的GPIO引腳,將相對(duì)應(yīng)的GPIO引腳置于高或低電平,與之相連的電控鎖執(zhí)行開門或關(guān)門動(dòng)作.
使用微信公眾平臺(tái)提供的微信web開發(fā)者工具來進(jìn)行微信小程序的開發(fā).整體流程非常的規(guī)范,相對(duì)于傳統(tǒng)的App來說更加的簡潔.
圖4 原理模型
使用pi攝像頭作為圖像的采集模塊,連接到樹莓派上,樹莓派會(huì)將采集到的圖片進(jìn)行處理,使用樹莓派的GPIO引腳來控制電控鎖的高低電平,采用兩個(gè)不同顏色的發(fā)光二極管模擬門的開關(guān).原理模型如圖4所示.測試結(jié)果表明,識(shí)別準(zhǔn)確率高,系統(tǒng)穩(wěn)定可靠.
基于python+樹莓派的智能門禁系統(tǒng)與PC機(jī)或普通單片機(jī)開發(fā)的門禁系統(tǒng)相比,具有智能化,時(shí)效性好,易擴(kuò)展,成本低等特點(diǎn).同時(shí)采用常用的微信小程序進(jìn)行遠(yuǎn)程控制,操作方便,無需下載額外App應(yīng)用程序,對(duì)于員工人數(shù)較少的小型工作場所或家用門禁,具有良好的指導(dǎo)意義與應(yīng)用價(jià)值.