張寅東,陳曉填,張宇雯
(廣州大學計算機科學與網(wǎng)絡(luò)工程學院,廣州 510006)
人臉作為顯著的生物特征,被廣泛用于生活中個人身份的識別,例如:安保系統(tǒng)、銀行結(jié)算、手機解鎖、刑事偵查等。相比于指紋識別,人臉具有易獲取、難偽造的優(yōu)點,能夠克服傳統(tǒng)的考勤方式下他人代替考勤這一問題,適合作為考勤系統(tǒng)的身份識別依據(jù)。同時樹莓派以體積小,價格低的優(yōu)點常被用于嵌入式開發(fā)。構(gòu)建考勤系統(tǒng)時,只需要在配置好系統(tǒng)環(huán)境的樹莓派中安裝TensorFlow、OpenCV等框架,以及MySQL數(shù)據(jù)庫、QT界面和依賴的第三方庫,通過SSH連接樹莓派并執(zhí)行指令開啟圖形界面執(zhí)行程序,就可以實現(xiàn)一個簡單的嵌入式考勤系統(tǒng)。
本文旨在設(shè)計一個能精確識別人臉且搭載于輕量化微型電腦上的考勤系統(tǒng)。所以我們的核心思想是通過關(guān)聯(lián)的USB攝像頭和人臉檢測算法來獲取人臉,并利用深度學習算法提取特征值和人臉識別算法識別待考勤人員,最終將人員考勤記錄保存到關(guān)聯(lián)數(shù)據(jù)庫中。管理員可隨時查看所有人員的考勤情況。
考勤系統(tǒng)分為前臺和后臺兩部分,前臺功能主要包括待考勤人員基本信息的錄入、人臉的采集、人員刷臉考勤以及考勤情況的顯示,后臺功能主要包括管理員對待考勤人員信息的修改以及對考勤信息進行管理,各部分的流程如下。
(1)管理員對信息的錄入
①管理員完成身份認證后登錄到信息管理系統(tǒng);②管理員錄入待考勤人員的信息,基本信息包括待考勤人員的ID、姓名、人臉信息,其中人臉的采集可以是現(xiàn)場采集,即通過攝像頭現(xiàn)場拍攝一張正臉照片,或是由員工自己提供一張電子版的個人證件照,將大小調(diào)整后通過本地傳入。系統(tǒng)將利用深度學習算法將獲取到的人臉特征存至數(shù)據(jù)庫以便后期的刷臉考勤打卡對比,同時為了使后期的識別更加精確,在錄入圖片的時候需要盡量錄入幾張不同角度的人臉照片,如稍微左右側(cè)臉、仰頭或者低頭等角度。
(2)刷臉考勤的流程
①通過樹莓派關(guān)聯(lián)的攝像頭和人臉檢測算法實時獲取人臉;②當有人臉出現(xiàn)在攝像頭前時,系統(tǒng)利用模型中的深度學習算法提取當前人臉圖像的特征,并與預先保存在數(shù)據(jù)庫中的特征進行比對,若當前人臉圖像的特征值與數(shù)據(jù)庫中預留的人臉特征值之間歐氏距離小于設(shè)定的閾值時,即可認為兩張圖片的特征值匹配,當待考勤人員與數(shù)據(jù)庫中預留照片的特征值匹配時,系統(tǒng)便判定兩張人臉圖像是同一個人,這時便會自動記錄下該人員的考勤信息,同時在考勤界面顯示打卡成功的消息。刷臉考勤流程如圖1所示。
圖1 刷臉考勤流程圖
(3)管理員對考勤信息的檢索
在數(shù)據(jù)庫中有刷臉考勤的記錄后,管理員可以驗證身份進入管理系統(tǒng),對考勤情況進行查詢檢索,如對每天遲到、缺勤的人員信息檢索,對某人的考勤信息檢索,對某天的考勤信息檢索等。同時考勤系統(tǒng)具有按月統(tǒng)計考勤次數(shù)的功能,管理人員可以利用該功能檢索出每人每月的考勤次數(shù)。
系統(tǒng)共涉及兩部分的深度學習算法,一部分是錄入人臉信息以及刷臉考勤時的人臉檢測算法,另一部分是刷臉考勤時的人臉識別算法,兩部分算法的算法原理如下。
人臉檢測采用的傳統(tǒng)方法是OpenCV中訓練好的Haar級聯(lián)分類器[1]。進行人臉檢測時,先將圖片灰度化,提取特征值,然后調(diào)用相應(yīng)的級聯(lián)分類器來檢測人臉,但是單靠一個級聯(lián)分類器來檢測人臉,有一定的局限,如在多人臉圖或?qū)崟r檢測環(huán)境下就會出現(xiàn)較大的誤判,同時模型還要實現(xiàn)在樹莓派CPU上較為快速的處理,因此我們采用了由中科院提出的人臉檢測框架FaceBoxes這一輕量化且能依賴CPU的人臉檢測模型[2],其原理如圖2所示,它由快速消解的卷積層(Rapidly Digested Convolutional Layers,RDCL)和多尺度卷積層(Multiple Scale Convolutional Layers,MSCL)構(gòu)成。RDCL主要通過適當?shù)膬?nèi)核大小快速縮小輸入空間,同時利用CReLU激活功能減少輸出通道的數(shù)量,使模型能夠在CPU設(shè)備上達到實時處理速度;而MSCL的目的是在不同層上豐富感受野和離散化錨點,其算法實現(xiàn)主要是通過沿網(wǎng)絡(luò)深度維度和沿網(wǎng)絡(luò)寬度維度的多尺度設(shè)計,即對Faster R-CNN網(wǎng)絡(luò)的改進,以便處理不同尺度的面部。
圖2 FaceBoxes原理[2]
在傳統(tǒng)的OpenCV自帶的LBPH算法基礎(chǔ)上,本文針對人臉識別所需圖像要求1:N的情況,采用了Google提出的FaceNet深度學習通用型網(wǎng)絡(luò)[3]。該網(wǎng)絡(luò)在傳統(tǒng)CNN人臉識別模式的基礎(chǔ)上進行了改進,并且模型訓練與傳統(tǒng)模式相比也有了很大的變化。傳統(tǒng)方法先提取人臉特征,然后再利用分類算法進行分類。而FaceNet直接通過學習將特征變?yōu)槭掀矫嫔系囊粋€點,然后通過比較點之間的距離來進行類別判斷。模型利用三元組損失函數(shù)進行優(yōu)化,最后輸出128維度的向量。三元組損失函數(shù)的約束條件如公式(1)所示:
該公式表示左邊類內(nèi)的距離(加上邊際)要小于右邊類間的距離,這個約束需要在所有的三元組上都成立。其中α表示正樣本對((錨點)(正樣本))和負樣本對((錨點)(負樣本))間的一個約束范圍,T表示訓練集內(nèi)任何可能的三元組集合,其基數(shù)為N,將公式進行優(yōu)化后,得到損失函數(shù)如公式(2)所示。
最后通過減小損失函數(shù)的值,來實現(xiàn)對模型的優(yōu)化。輸入的三元組主要包括一張樣本圖像縮略圖,一張與樣本同類的圖像略縮圖和一張與樣本不同類的圖像縮略圖。損失函數(shù)則主要對這三元組通過距離邊界進行劃分后得出正負類,最終拉近同一樣本之間的歐氏距離,推遠非同一樣本之間的歐氏距離,損失函數(shù)的原理如圖3所示。當兩張圖像之間的歐氏距離越近時表示是同一個人,反之則不是同一個人。
圖3 三元組損失函數(shù)的原理
樹莓派(Raspberry Pi)是一款基于ARM的微型電腦主板,以SD卡為內(nèi)存硬盤,卡片主板周圍有USB接口、HDMI高清視頻輸出接口和以太網(wǎng)接口,可連接鍵盤、鼠標、顯示器、攝像頭、網(wǎng)線等I/O設(shè)備,具備所有PC的基本功能,同時它擁有低能耗、移動便攜性和GPIO等特性,很多在普通電腦上難以做好的事情,在樹莓派上卻能很輕易地做到。
Raspbian為樹莓派官方深度定制的硬件驅(qū)動與軟件程序,是一個官方推薦的Linux系統(tǒng),其內(nèi)部自帶Python 2和Python 3環(huán)境,本文使用的是該系統(tǒng)下的Python 3環(huán)境。
Labeled Faces in the Wild(LFW)人臉數(shù)據(jù)庫主要用于研究自然環(huán)境下的人臉識別問題[4]。如圖4所示,該數(shù)據(jù)集包含了從互聯(lián)網(wǎng)上收集的約13k張具有不同朝向、表情及光照環(huán)境等非受限環(huán)境的人臉圖像,每張人臉圖像都標注有對應(yīng)的人物名字。在LFW數(shù)據(jù)庫中,人臉的光照條件、姿態(tài)多種多樣,有的人臉還存在部分遮擋的情況,使得該數(shù)據(jù)集中的圖像識別難度較大,因此該數(shù)據(jù)集主要用于測試人臉識別的準確率。測試過程中,LFW給出一張人臉圖像,然后把其與待測試的人臉圖像進行比較判斷是否屬于同一個人,最后經(jīng)過測試6k對的人臉測試圖得出屬于同一個人的人臉圖張數(shù)與真實數(shù)量的比值,即獲得人臉識別準確率。
圖4 LFW部分圖像[4]
經(jīng)測試,本文在LFW數(shù)據(jù)集上的人臉識別正確率約為97.83%,識別精度可以滿足大部分環(huán)境下的識別要求。以下是對系統(tǒng)各功能測試的實驗結(jié)果。圖5是人員刷臉考勤時的界面,圖6和圖7分別是對考勤數(shù)據(jù)的查詢和統(tǒng)計。
人員考勤時,點擊打卡按鈕,系統(tǒng)會自動檢測攝像頭前的人臉,并別當前打卡的人,并將成功打卡的信息顯示至主界面,刷臉考勤成功的界面如圖5所示。
圖5 考勤人員識別
考勤信息的檢索分為按照姓名查詢,按照ID號查詢,按照日期查詢。按照姓名查詢的結(jié)果如圖6所示。
圖6 按照姓名查詢考勤信息
圖7 考勤系統(tǒng)統(tǒng)計功能
考勤信息的統(tǒng)計功能可以顯示所有人員每個月的考勤的總次數(shù)。通過該功能,管理員可以記錄缺勤人員的信息。
本文設(shè)計實現(xiàn)了一個基于樹莓派的人臉識別考勤系統(tǒng),該系統(tǒng)利用了Python語言和人臉識別框架,在傳統(tǒng)人臉識別方法的基礎(chǔ)上進行了改進,實現(xiàn)了人臉的精準定位與識別。我們對于人臉的檢測主要是使用輕量化的FaceBoxes模型,對于人臉的識別主要是使用FaceNet模型。另外,我們還利用樹莓派實現(xiàn)嵌入式開發(fā),克服了傳統(tǒng)考勤方式中的漏洞和傳統(tǒng)人臉識別算法的不足。經(jīng)數(shù)據(jù)集和實際使用的測試,該考勤系統(tǒng)可以實現(xiàn)考勤系統(tǒng)所需的各項功能,具有較高的準確率,在高校和企業(yè)的考勤中具有較高的使用價值。