李智慧,劉明亮,*,王 偉,劉峻伯
(1.黑龍江大學 電子工程學院,哈爾濱 150080;2.黑龍江省氣象數(shù)據(jù)中心,哈爾濱 150030)
近年生物識別技術(shù)的迅猛發(fā)展,使得門禁系統(tǒng)得到了飛躍式的發(fā)展。生物特征識別技術(shù)主要是根據(jù)人類本身所固有的特征來對人的身份實現(xiàn)辨別,且由于生物特征呈現(xiàn)唯一性、穩(wěn)定性及普遍性,生物識別門禁系統(tǒng)具有很高的可靠性[1]。相對比其它的生物識別方式,人臉識別方便快捷,判斷準確可靠,且認證介質(zhì)不會丟失,安全性高[2];用于進行圖像采集的設(shè)備價格較為便宜,成本較低,可適用性強。相較于傳統(tǒng)社區(qū)門禁系統(tǒng),筆者設(shè)計的應用于社區(qū)大門的人臉識別門禁系統(tǒng)具有準確、無接觸等良好特性,且在準確性、經(jīng)濟性等方面有較大優(yōu)勢。
本文設(shè)計的智能門禁系統(tǒng)是面向社區(qū)物業(yè)使用,安裝使用在社區(qū)門口,該智能門禁系統(tǒng)主要有以下功能:①實時監(jiān)控功能:物業(yè)門衛(wèi)處可實時監(jiān)控門禁進出情況;②圖像采集功能:對進入攝像范圍內(nèi)的人物進行抓拍;③人臉識別功能:對抓拍的人物圖像快速進行檢測識別;④門禁控制功能:通過圖像識別結(jié)果發(fā)出的開關(guān)門指令控制繼電器來驅(qū)動電磁鎖;⑤人臉系統(tǒng)管理功能:管理員可通過操作臺管理整個系統(tǒng),進行人臉查詢及管理,增減人臉信息,上傳人臉圖片,查看行人記錄及狀態(tài)信息。
除了以上基本功能外,該門禁系統(tǒng)在軟件、硬件上需具有一定的可擴展性,無網(wǎng)絡(luò)的情況下可保證系統(tǒng)能夠單機運行,并將門禁記錄匯總為Excel表格的形式存儲,以便系統(tǒng)管理員統(tǒng)計和分析。
根據(jù)系統(tǒng)的需求分析與設(shè)計原則,智能社區(qū)門禁系統(tǒng)的總體架構(gòu)設(shè)計見圖1。門禁系統(tǒng)分為:視頻監(jiān)控模塊、門禁控制模塊、管理監(jiān)控平臺3部分。由PC架構(gòu)本地服務器進行數(shù)據(jù)的記錄與存儲,視頻監(jiān)控模塊負責采集目標圖像,并將圖像進行檢測、識別等一系列處理,將處理后的數(shù)據(jù)與數(shù)據(jù)庫中的人臉數(shù)據(jù)進行匹配,根據(jù)比對結(jié)果發(fā)送指令控制門禁系統(tǒng)操作。
圖1 系統(tǒng)總體架構(gòu)Fig.1 System architecture
本人臉識別系統(tǒng)的嵌入式平臺為NVIDIA公司的Jetson Nano開發(fā)板,是一款外型小巧的嵌入式主板,以Linux為操作系統(tǒng),系統(tǒng)環(huán)境為Ubuntu 14.1系統(tǒng),搭載4核Cortex-A57處理器,GPU為128核NVIDIA CUDA核心的NVIDIA Maxwell架構(gòu)顯卡,4 GB的LPDDR4內(nèi)存,存儲則為16 GB eMMC 5.1,支持4 K 60 Hz視頻解碼。其計算性能可以很好地保證門禁系統(tǒng)的實時性,性價比很高,便于以后拓展功能,且符合安全性設(shè)計原則。
智能門禁端的硬件部分主要由Jetson Nano開發(fā)板、視頻監(jiān)控模塊、門禁控制模塊組成,其中視頻監(jiān)控模塊分為人臉監(jiān)控模塊和車牌監(jiān)控模塊,視頻圖像采集設(shè)備使用的是USB攝像頭,兩個攝像頭采集的人臉和車牌圖像通過TCP/IP協(xié)議傳輸?shù)椒掌髦衃3]。Jetson Nano開發(fā)板是嵌入式門禁端的核心部分,所有程序的執(zhí)行和門禁端的控制都由開發(fā)板來完成。
Jetson Nano開發(fā)板配置4個USB 3.0標準接口,DC電源后方還有個獨立安裝CSI攝像頭的接口,另外一個USB 2.0 Micro B型接口,除可以作為5 V電源輸入之外,也是在Nano上進行開發(fā)環(huán)境OpenCV安裝的必要通訊接口。通過2個4K顯示輸出口(HDMI高清接口和DISPLAYPORT接口)連接顯示器,為了更好散熱,在水槽頂部安裝了一個風扇。
由于本文系統(tǒng)攝像頭所采集的圖像需要進行目標的檢測與識別,為了保證識別精度、經(jīng)濟性和實時性,視頻監(jiān)控模塊選擇USB工業(yè)攝像頭SY003HD進行圖像采集,即插即用,無需安裝驅(qū)動,該攝像頭的分辨率為1 920×1 080 P,支持Linux、Ubuntu、Win10等系統(tǒng),幀率為30,可通過USB2.0和3.0接口與Jetson Nano開發(fā)板相連。
本文采用人臉識別技術(shù)與電磁鎖相結(jié)合的門禁系統(tǒng),其原理為利用電磁效應在通電導體周圍產(chǎn)生磁場,通過Jetson Nano開發(fā)板控制繼電器來驅(qū)動電磁鎖實現(xiàn)開關(guān)鎖的操作。系統(tǒng)選擇12 V的門禁電磁鎖,配合12 V的電源適配器使用,當GPIO口輸出高電平時,觸發(fā)門鎖電路打開門鎖。
根據(jù)系統(tǒng)設(shè)計的功能需求,結(jié)合實際情況,本文人臉識別智能門禁系統(tǒng)的軟件設(shè)計部分見圖2,分為以下幾個模塊:通過USB攝像頭進行人臉圖像的采集,并執(zhí)行人臉檢測模塊,若檢測攝像頭采集到的圖像中包含人臉,再執(zhí)行活體檢測模塊[4]。通過眨眼檢測來判斷該人臉圖像是否來自活體,若該人臉圖像來自活體,再讀取人臉數(shù)據(jù)庫中的人臉圖像信息并進行比對,以判斷該人臉圖像是否存在于現(xiàn)有人臉數(shù)據(jù)庫中,從而判定用戶的身份是否合法,并將門禁信息儲存到XML格式文件中。
圖2 人臉識別門禁系統(tǒng)模塊Fig.2 Face recognition access control system module
門禁系統(tǒng)主要功能為將攝像頭采集的目標視頻在Jetson Nano開發(fā)板上進行檢測與識別,通過TCP/IP網(wǎng)絡(luò)通訊協(xié)議連接本地服務平臺,對比SQL Server數(shù)據(jù)庫中住戶信息來判定為本社區(qū)住戶。系統(tǒng)的總體運行流程為:搭建好相關(guān)的開發(fā)環(huán)境后編寫應用程序,能夠?qū)崿F(xiàn)視頻圖像的采集,對攝像頭采集到的圖像選用視頻關(guān)鍵幀提取的幀間差分法從監(jiān)控視頻中提取重要幀進行處理,對獲取的人臉圖像進行檢測與識別等相關(guān)處理,最后匹配數(shù)據(jù)庫中人臉信息,判定來訪者身份的合法性,并根據(jù)處理結(jié)果向系統(tǒng)發(fā)出既定指令來控制電磁鎖的開關(guān)。
為了保證構(gòu)建的系統(tǒng)具有良好的平臺移植性,本系統(tǒng)使用Qt Designer編寫管理員系統(tǒng)界面,Python 作為主要編程語言,用PyQt5編程完成了整個人臉識別系統(tǒng)的搭建,通過Qt Designer可以快速地制作UI,并生成Python的代碼和XML格式的文件[5]。
通過Qt界面設(shè)計實現(xiàn)查詢,添加、刪除人臉圖像功能,輸入住戶姓名、住房門牌號即可查詢數(shù)據(jù)庫中現(xiàn)存信息,可通過管理界面隨時對現(xiàn)存信息進行添加與刪除操作。
門鎖作為門禁系統(tǒng)的最終執(zhí)行機構(gòu),根據(jù)人臉識別的結(jié)果來控制門鎖,嵌入式門禁端的控制程序使用NVIDIA官方提供的Jetson GPIO Library包來控制數(shù)字的輸入和輸出,根據(jù)接收的數(shù)據(jù)庫人臉比對結(jié)果,若判斷結(jié)果為“是”,則控制開發(fā)板的 GPIO 口輸出高電平,觸發(fā)外部門鎖電路打開電磁鎖;若判斷結(jié)果為“否”,則返回等待重新識別的結(jié)果。
YOLO算法(You Only Look Once)是一種用于物體檢測的深度神經(jīng)網(wǎng)絡(luò)模型,是基于卷積神經(jīng)網(wǎng)絡(luò)的算法,使用了端到端的設(shè)計思路,將目標的定位和識別作為一個整體,利用目標分割邊界框和類別概率直接進行回歸[6]。
YOLOv3將輸入圖像縮放到指定大小416*416后,將其劃分為S*S個網(wǎng)格,每個網(wǎng)格負責檢測中心點落在其內(nèi)的目標物體,每單個網(wǎng)格中存在B個目標邊框,每個邊框均由一個五維度的預測值組成,x,y,w,h和置信度,(x,y)為小網(wǎng)格邊界框的中心點坐標,w、h為整張圖片框的寬和高,置信度為預測出的box和ground truth box 的 IOU[7]。定義為
(1)
(2)
根據(jù)式(2)可以得到每個邊框的置信度得分,該得分表示類別出現(xiàn)在框中的概率,同時也表示這些預測的 box 適合物體的程度。pr為每個小網(wǎng)格預測是否含有某種物體的條件概率。
為了防御照片攻擊,人臉識別系統(tǒng)中常使用活體檢測來增強系統(tǒng)的可靠性與防欺詐性,傳統(tǒng)的眨眼檢測方法是根于人眨眼時眼白部分的面積變化來判定的,這種方法對人眼眼白部分面積變化的判斷易產(chǎn)生錯誤,并且計算復雜度高。使用了一種采用人的眼部關(guān)鍵點來判定是否有眨眼動作的方法,這種方法計算簡單且提高了精度,還具有良好的實時性。選用人臉部特征點提取技術(shù),用DLIB函數(shù)庫定位出人臉的68個面部特征點,如眉毛、眼睛、鼻子、嘴巴以及臉部外輪廓,該技術(shù)利用回歸樹集合來定位人臉特征點,速度很快,檢測一張人臉的68個面部特征點點耗時大約為1 ms[8]。
選取的上眼瞼、下眼瞼和眼角共6個特征關(guān)鍵點,A、B間的距離不會發(fā)生改變,當眨眼動作發(fā)生時,C、D和E、F之間的距離會快速降低為0,同時A、B間的距離約等于A、E間的距離和B、E間的距離和。使用的人臉活體鑒別方法就是以此為基礎(chǔ)的,對每一幀圖像進行特征點定位來獲取眼部6個特征關(guān)鍵點,根據(jù)式(3)與式(4)計算得到的值對應著眼部不同的狀態(tài),為增大分子權(quán)重便于閾值的調(diào)整,對兩個公式的分子取平方,并對L1、L2設(shè)定相應的閾值,當L1、L2在閾值上下波動時,以此來判定是否有眨眼動作的發(fā)生。
(3)
(4)
眨眼檢測使用通用USB攝像頭進行圖像采集,拍攝速度為25 fps,幀間間隔為40 ms,在一次眨眼動作的發(fā)生可以拍到6~7張圖像,當L1、L2在閾值上下波動兩次時,即判定發(fā)生眨眼動作兩次,則通過活體驗證。
為了解決one-shot learning(一次學習)問題,選用基于卷積神經(jīng)網(wǎng)絡(luò)的Siamese Network進行人臉識別[9],Siamese網(wǎng)絡(luò)使用的損失函數(shù)為對比損失函數(shù),可以縮小同類別的樣本數(shù)據(jù),增大不同類別的樣本數(shù)據(jù)[10]。
損失函數(shù)如式(5)、式(6):
(5)
L(W,(Y,X1,X2)i)=(1-Y)LG(EW(X1,X2)i)+YL1(EW(X1,X2)i)
(6)
式中:Y為樣本標簽,當圖像X1和X2屬于同一類別時Y為1,當圖像X1和X2不屬于同一類別時Y為0;LG為相同類別對圖片的損失函數(shù);L1為不相同類別對圖片的損失函數(shù);P為訓練的樣本數(shù)量[11]。
采用的模型訓練平臺環(huán)境見表1。
表1 模型訓練平臺環(huán)境Table 1 Model training platform environment
在構(gòu)建好目標檢測模型后,要使用收集好的數(shù)據(jù)集對模型進行訓練,然后進行測試。在本文的研究過程中,圖像數(shù)據(jù)主要通過現(xiàn)場采集、網(wǎng)站搜集等方式獲得,因為搜集到的圖像數(shù)據(jù)存在格式、尺寸等的不統(tǒng)一,而且沒有統(tǒng)一的類別標簽,不能直接拿來進行模型訓練。因此,需對人臉圖像進行標注,使用標注工具labeling,對5 000張人臉圖像進行標注,將待標記圖片以xxxx.jpg形式命名,x為0~9之間的數(shù)字,命名為0000~5000。
實驗使用的數(shù)據(jù)集為自建庫,選用FERET庫、LFW庫等部分人臉組成,約有1 000個目標對象,每個對象約5個圖像樣本。數(shù)據(jù)集中包含明亮和昏暗條件下的場景、部分遮擋目標的圖像,通過手動標注后用于YOLOv3模型的人臉檢測訓練和測試。
訓練池大小為5 000,進行25 000次迭代,訓練批次大小由.cfg文件中設(shè)置的subdivision參數(shù)決定,實驗每一訓練批次(batch)的輸入為64張圖像,.cfg文件中batch=64,subdivision=16輸出見圖3。圖為第25 387、25 388、25 389次共3次迭代的輸出,在Region 16 Avg IOU、Region 23 Avg IOU兩個尺度上預測不同大小的邊界框,16卷積層為最大的預測尺度,使用較大的mask;32卷積層為最小的預測尺度,使用較小的mask。
圖3 迭代輸出數(shù)據(jù)Fig.3 Iterative output data
通過測試結(jié)果可知,在側(cè)臉和有遮擋物的情況下都可以很好地定位出面部特征點,定位出人臉的特征器官,接著對人臉識別效果進行測試。將提取到的面部特征向量與數(shù)據(jù)庫中存儲的128維特征向量進行比對來確認行人的身份信息,并對識別出的人臉圖像大小、位置進行標注。實驗選用自建庫600張,共60人,每人10張多角度圖像,選用400張進行人臉識別模型訓練,200張進行測試,本文設(shè)計的人臉識別系統(tǒng)對現(xiàn)有數(shù)據(jù)集的人臉識別準確率可達到98%。根據(jù)面部特征點來確認來訪者的身份信息,并對識別出的人臉圖像大小、位置進行標注,本文人臉的測試結(jié)果見圖4。
圖4 人臉識別效果圖Fig.4 Effect of face recognition
通過測試結(jié)果可知,本設(shè)計在輕微遮擋面部特征、閉眼以及人臉姿態(tài)左右偏移40°以內(nèi)都可以精準的定位識別人臉,人臉檢測運算時間約0.2 s,人臉識別運算時間約0.8 s,整體識別流程運算時間總用時約1 s,基本上能滿足實時人臉檢測的需求。
本文設(shè)計的智能門禁系統(tǒng)為社區(qū)大門的出入口,人臉的識別是在目標主動配合的情況下實現(xiàn),實驗選取了3種不同光照(正常、強光、弱光)環(huán)境下的目標圖像作為測試圖像,衡量系統(tǒng)性能,不同環(huán)境下的系統(tǒng)檢測效果見圖5。
圖5 門禁系統(tǒng)功能測試效果圖Fig.5 Function test effect diagram of access control system
本文設(shè)計的智能社區(qū)門禁系統(tǒng)利用深度卷積神經(jīng)網(wǎng)絡(luò)與Jetson Nano開發(fā)板來實現(xiàn),測試結(jié)果表明,本系統(tǒng)識別成功率很高,功能性強、精確度高,滿足該系統(tǒng)的使用需求,且通過提取每張圖片中的128個雙精度浮點數(shù)數(shù)據(jù)保存在系統(tǒng)中,比存儲數(shù)字圖像的方法節(jié)約了很多儲存空間,不僅提高了系統(tǒng)的準確性,還能保證實時性的需求。相比于與傳統(tǒng)的機器學習方法易受環(huán)境因素的影響導致識別精度過低,本文的算法結(jié)合了深度卷積神經(jīng)網(wǎng)絡(luò)可達到識別活體的目的,且可直接運行在小巧但功能強大的Jetson Nano開發(fā)板上,在人臉遮擋、拍攝角度、光照等影響情況下都有很高的識別精確度,此系統(tǒng)在智能社區(qū)門禁領(lǐng)域有一定的使用價值和發(fā)展前景。