劉 杰, 孫立民
(煙臺大學(xué) 計算機與控制工程學(xué)院, 山東 煙臺 264005)
近年來,建立和健全會議考勤制度是當(dāng)下大部分企業(yè)和相關(guān)單位所關(guān)注的,因為一套完整的、行之有效的會議考勤制度不僅有利于企業(yè)管理者更好地去管理企業(yè)的職工,而且對于職工個人來說,一套完善的會議考勤也能夠?qū)ζ渥陨砥鸬郊s束作用,從而使企業(yè)和相關(guān)用人單位得到良好的發(fā)展[1-2]。會議考勤是企業(yè)召開會議的一個重要組成部分,考勤效率能夠影響到會議的整體效果。傳統(tǒng)的會議考勤主要通過手動簽到的方式來實現(xiàn),但這種方式往往會浪費大量的時間,不僅占用了寶貴的會議時間,考勤效率較低,還影響了與會人員的熱情和積極性。代替?zhèn)鹘y(tǒng)人工考勤的是電子化考勤,與會人員可借助帶有個人身份信息的IC卡以刷卡的方式進(jìn)行簽到考勤[3],這種方式比傳統(tǒng)的手動簽到考勤更加地自動化,但是,對于代簽和早退現(xiàn)象,卻不能夠及時地做出識別。
隨著科學(xué)技術(shù)的發(fā)展,虹膜識別技術(shù)出現(xiàn)了,雖然該技術(shù)具有較高的安全系數(shù),但是該技術(shù)具有設(shè)備昂貴、成本高、特征圖像不方便采集等特點[4-5],而且與傳統(tǒng)考勤方式相似,同樣不能對會議的考勤情況做到實時監(jiān)控,早退、缺勤等問題依然得不到有效的解決。
本項目開發(fā)的基于人臉識別技術(shù)的考勤系統(tǒng)不僅可以提高考勤效率,使考勤人員擺脫繁重的工作任務(wù),而且實施方便,更具自動化和人性化;此外,可以有效地解決代簽和早退問題,彌補上述考勤方式的不足之處。
該系統(tǒng)由會議室里安裝的云平臺攝像機捕捉與會人員的圖像,并將其發(fā)送給后臺人臉識別系統(tǒng)進(jìn)行處理和識別。在后臺,服務(wù)端按照一定的時間間隔從會議室監(jiān)控視頻中捕獲與會人員的圖像,并對圖像進(jìn)行預(yù)處理,再對圖像中的人臉進(jìn)行人臉檢測,此后由系統(tǒng)對檢測到的人臉圖像做人臉識別,最后根據(jù)識別結(jié)果在數(shù)據(jù)庫中錄入與會人員的出勤情況。
該系統(tǒng)主要由4個模塊組成:與會人員人臉圖像信息采集模塊、人臉檢測模塊、人臉識別模塊和會議考勤管理模塊。系統(tǒng)的設(shè)計架構(gòu)如圖1所示。

圖1 系統(tǒng)功能圖
在員工入職時需要采集員工信息,包括員工的工號以及人臉圖像等,然后將采集到的人臉圖像預(yù)處理后保存至員工人臉特征數(shù)據(jù)庫中。當(dāng)進(jìn)行會議時,把會議室捕獲到的監(jiān)控視頻上傳至人臉識別系統(tǒng),利用OpenCV將視頻處理成每一幀圖像,并對處理后的圖像做人臉檢測和人臉識別,將識別結(jié)果記錄在數(shù)據(jù)庫中,以此來統(tǒng)計出會議考勤信息。在會議開始后,整個系統(tǒng)將自動啟動考勤流程進(jìn)行人臉識別,自動獲取考勤記錄,節(jié)省了傳統(tǒng)簽到等方式所浪費的時間,此外,系統(tǒng)每隔一定時間間隔就將監(jiān)控視頻上傳至人臉識別服務(wù)端,這就能夠自動判別早退等虛假情況的出現(xiàn)。
人臉識別是一種提取人臉圖像特征信息進(jìn)行分類識別的生物特征識別技術(shù)。由于其方便、友好,隨著信息技術(shù)的發(fā)展,在安全、航天、醫(yī)療等領(lǐng)域得到了廣泛的應(yīng)用[6]。Viola等人[7-9]提出的結(jié)合AdaBoost級聯(lián)分類器的Haar特征可以快速檢測人臉。從那時起,許多研究者致力于使用更高級的特征來提高人臉檢測的準(zhǔn)確性,如局部二進(jìn)制模式(LBP)[10]、方向梯度直方圖(HOG)[11]、尺度不變特征變換(SIFT)[12]。人臉識別已成為計算機視覺領(lǐng)域的研究熱點。
深度學(xué)習(xí)主要是神經(jīng)網(wǎng)絡(luò)算法的擴展。神經(jīng)網(wǎng)絡(luò)的層是由深度來描述的,利用深度學(xué)習(xí)多層感知器可以解決線性不可分的問題[13],針對淺層學(xué)習(xí)的弊端可以得到有效的彌補。深度學(xué)習(xí)的常見類型有循環(huán)神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)和受限玻爾茲曼機[14-15]。
整個系統(tǒng)通過強大的計算機視覺開源工具包OpenCV和深度學(xué)習(xí)主流框架TensorFlow相結(jié)合的方法實現(xiàn)系統(tǒng)核心模塊人臉檢測和人臉識別功能。此外,還通過Kurento媒體服務(wù)器完成了視頻傳輸部分的功能,Kurento媒體服務(wù)器具有基于插件的可擴展體系結(jié)構(gòu),能夠與深度學(xué)習(xí)框架完美契合,可用于計算機視覺、增強現(xiàn)實、視頻索引和語音分析等[16],不需要第三方插件,可降低開發(fā)和維護(hù)成本,便于維護(hù)工作。
系統(tǒng)整體采用B/S結(jié)構(gòu)設(shè)計,考勤管理人員通過瀏覽器登錄系統(tǒng)查看與會人員的考勤信息,相比較C/S,這種設(shè)計更具安全性、且方便升級和維護(hù)。系統(tǒng)的網(wǎng)絡(luò)架構(gòu)設(shè)計,如圖2所示。

圖2 系統(tǒng)的網(wǎng)絡(luò)架構(gòu)設(shè)計
由圖2分析可知,人臉圖像采集模塊是系統(tǒng)的數(shù)據(jù)采集層,這一模塊的主要功能是采集人臉信息并將每一張人臉圖像做標(biāo)簽后存入本地數(shù)據(jù)庫中;人臉檢測和人臉識別模塊共同構(gòu)成了整個系統(tǒng)的服務(wù)層,在這一層使用OpenCV這一強大的計算機視覺開源工具包做人臉檢測,使用卷積神經(jīng)網(wǎng)絡(luò)來實現(xiàn)人臉識別;會議考勤管理模塊是系統(tǒng)的呈現(xiàn)展示層,這一層的主要功能是將服務(wù)層的識別結(jié)果通過瀏覽器顯示到Web界面,管理員可以通過登錄該系統(tǒng)實時查看會議的考勤情況;最后,系統(tǒng)的數(shù)據(jù)層的功能主要是存儲人臉圖像信息以及部分監(jiān)控視頻信息,可以起到存儲備份的作用。
當(dāng)員工入職時都會在公司或者單位錄入個人信息,包括工號、姓名以及人臉圖像等,本系統(tǒng)將這些采集好的人臉圖像存儲到人臉圖像特征庫中,根據(jù)個人工號給采集到的人臉圖像做手動標(biāo)注,從而實現(xiàn)會議考勤的人臉特征識別庫。
會議室內(nèi)智能云臺攝像機可以全景采集和周期性地巡航,通過對室內(nèi)環(huán)境的全方位覆蓋,從而實現(xiàn)對會議室內(nèi)與會人員的人臉圖像抓取。系統(tǒng)每隔一定時間間隔將通過云臺攝像機捕獲一段實時視頻上傳至人臉識別服務(wù)端,采用這種方式,系統(tǒng)可以自動辨別出缺勤或者早退現(xiàn)象,從而得到較為真實考勤記錄。
在這一部分,采用OpenCV這一開源的計算機視覺工具包來對從視頻流中分割出的幀圖像進(jìn)行人臉的檢測。首先通過調(diào)用VideoCapture函數(shù)來進(jìn)行視頻流到多幀圖像的處理,使用dlib工具包中的frontal_face_detectorh函數(shù)作為本次研究的特征提取器,然后實現(xiàn)圖像中的人臉檢測功能。
本模塊是整個系統(tǒng)的核心部分。該模塊主要功能是識別人臉檢測模塊中檢測到的人臉圖像。首先對上一模塊檢測到的人臉圖像做歸一化處理,接下來提取這些人臉圖像的特征并與考勤人臉圖像特征庫逐一進(jìn)行比較,就可以識別出其身份,同時在會議考勤管理系統(tǒng)中記錄下相關(guān)的出勤情況,人臉識別模塊的設(shè)計流程如圖3所示。

圖3 人臉識別流程圖
該模塊采用的是深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)的人臉識別的功能。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一類包含卷積計算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Networks)[17-18],是深度學(xué)習(xí)(deep learning)的代表算法之一。卷積神經(jīng)網(wǎng)絡(luò)主要由輸入層、卷積層、池化層、全連接層和輸出層組成,卷積神經(jīng)網(wǎng)絡(luò)的典型結(jié)構(gòu)如圖4所示。

圖4 卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖
在這一部分當(dāng)中,通過5個步驟來搭建研究需要的卷積神經(jīng)網(wǎng)絡(luò),對此可闡述分述如下。
步驟1先把數(shù)據(jù)加載到內(nèi)存,即將圖片預(yù)處理之后的圖片集以多維數(shù)組的形式加載到內(nèi)存,并且為每一類樣本數(shù)據(jù)標(biāo)注標(biāo)簽值。
步驟2劃分?jǐn)?shù)據(jù)集,即按照交叉驗證的原則劃分?jǐn)?shù)據(jù)集、驗證集、訓(xùn)練集。交叉驗證是機器學(xué)習(xí)中常用來精度測試的一種方法,使用大部分?jǐn)?shù)據(jù)作模型訓(xùn)練,少部分?jǐn)?shù)據(jù)用于模型驗證,驗證結(jié)果與真實值計算出差平方和,以上過程重復(fù)進(jìn)行,直至差平方和趨于0,模型穩(wěn)定,訓(xùn)練完畢。而在此模型中,導(dǎo)入了sklearn庫的交叉驗證模塊,將會利用train_test_split()函數(shù)來劃分訓(xùn)練集、驗證集和測試集。train_test_split()函數(shù)中的test_size參數(shù)用來指定劃分的比例,另一個參數(shù)random_state是用來指定一個隨機數(shù)種子,從全部數(shù)據(jù)中隨機選取數(shù)據(jù)建立自己的數(shù)據(jù)集、驗證集和訓(xùn)練集。
步驟3采用one-hot編碼,因為本次研究的卷積神經(jīng)網(wǎng)絡(luò)采用了categorical_crossentropy作為本文的損失函數(shù),而這個函數(shù)要求標(biāo)簽集必須采用one-hot編碼。one-hot編碼是一種狀態(tài)位編碼,one-hot采用狀態(tài)寄存器編碼,每一個狀態(tài)值對應(yīng)一個寄存器,且任意時刻,只有一位是有效的。假設(shè),研究中的類別有2種,分別為0和1,0代表自己,1代表others。如果標(biāo)簽為0,編碼為[1 0]表示的是第一位有效;如果標(biāo)簽為1,編碼為[0 1]表示的是第二位有效。這樣做的原因是為了方便CNN操作。
步驟4歸一化圖像數(shù)據(jù),目的是提升網(wǎng)絡(luò)收斂速度,減少模型的訓(xùn)練時間,同時適應(yīng)值域在(0,1)之間的激活函數(shù),增大區(qū)分度。此外,還能夠確保特征值權(quán)重一致。
步驟5確定優(yōu)化器,在最開始使用的是SGD優(yōu)化器,SGD優(yōu)化器隨機梯度下降算法參數(shù)更新針對每一個樣本集x(i) 和y(i) 。批量梯度下降算法在數(shù)據(jù)集規(guī)模較大時會產(chǎn)生大量的冗余計算,比如:每次針對相似樣本都會重新計算。這種情況時,SGD算法每次則只更新一次。因此SGD算法效率更高,并且適合online。但是SGD以高方差進(jìn)行快速更新,這會導(dǎo)致目標(biāo)函數(shù)出現(xiàn)嚴(yán)重抖動的情況。雖然抖動可以讓梯度計算跳出局部最優(yōu),最終到達(dá)一個更好的最優(yōu)點;但另一方面,SGD算法也會因此產(chǎn)生過調(diào)。之后改進(jìn)使用了Adam,Adam算法是另一種自適應(yīng)參數(shù)更新算法,能夠規(guī)避SGD算法的不足。
至此,通過多次修改batch size、迭代次數(shù)等參數(shù)更新權(quán)重,找到損失函數(shù)的最優(yōu)解,使得訓(xùn)練出來的模型測試樣本數(shù)據(jù)的準(zhǔn)確率達(dá)到初期設(shè)定的閾值,模型訓(xùn)練結(jié)束后會在本次研究的項目根目錄下生成一個后綴為data的文件,這就是訓(xùn)練出來的模型,最后通過讀取這個文件,加載模型,進(jìn)行人臉識別。
本模塊是整個系統(tǒng)的最后一個部分。在使用人臉識別進(jìn)行會議考勤時,系統(tǒng)將檢測到的與會人員人臉圖像特征與對應(yīng)的人臉圖像特征庫特征逐個自動進(jìn)行比較驗證,并在服務(wù)器上的考勤登記管理中登記與會人員的出勤情況。識別出的人臉將登記為出勤,沒有識別到的人臉將登記為缺勤,把所有人員的出勤情況記錄到表格中以Web界面展現(xiàn)給考勤管理人員,方便工作人員及時掌握會議的考勤情況。
本模塊對所開發(fā)的基于人臉識別技術(shù)的考勤系統(tǒng)的各項功能進(jìn)行驗證。這里給出研究論述詳情如下。
將攝像機采集到的人臉圖像標(biāo)注后存儲到指定文件夾中。研究時,采集了15個人的人臉圖像以及從人臉識別領(lǐng)域知名數(shù)據(jù)集LFW上選取了部分人臉圖像組成了系統(tǒng)的樣本數(shù)據(jù)集,效果如圖5所示。
每一類樣本采集了180個人臉圖像共同構(gòu)成了系統(tǒng)的樣本數(shù)據(jù)集,效果如圖6和7所示。

圖5 樣本數(shù)據(jù)集類別圖

圖6 單樣本數(shù)據(jù)集1

圖7 單樣本數(shù)據(jù)集2
在采集人臉圖像過程中,研究時隨機增加了光照強度的變化,使得樣本集更具表征能力,進(jìn)而提高模型的魯棒性和泛化能力。
深度學(xué)習(xí)框架TensorFlow提供了一個可視化工具TensorBoard,通過TensorBoard不僅可以更好地管理、調(diào)試和優(yōu)化神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程,而且可以可視化神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練過程中各種指標(biāo)的變化趨勢,直觀地了解神經(jīng)網(wǎng)絡(luò)的訓(xùn)練情況。可視化效果如圖8和圖9所示。

圖8 模型訓(xùn)練準(zhǔn)確率曲線圖
由圖8、圖9分析后可知,利用TensorBoard能夠查看到訓(xùn)練時的人臉識別準(zhǔn)確率和損失曲線,而通過這些曲線圖推理可知模型訓(xùn)練的準(zhǔn)確率達(dá)到了96.3%。
人臉識別系統(tǒng)準(zhǔn)確性測試結(jié)果見表1。

圖9 模型訓(xùn)練Loss曲線圖
表1 人臉識別模塊測試結(jié)果
Tab. 1 Test results of face recognition module

測試序號樣本容量正確識別人數(shù)準(zhǔn)確率/%1161487.502161593.753151493.334151386.675151493.33總計777090.91
本文基于人臉識別技術(shù)實現(xiàn)了會議考勤系統(tǒng)。相對于傳統(tǒng)簽到考勤系統(tǒng),本系統(tǒng)有著實時性、穩(wěn)定性等優(yōu)勢,并成功研發(fā)出自動識別、自動考勤等功能,解決了傳統(tǒng)簽到考勤流程復(fù)雜、耗費時間、不能識別代簽以及缺勤早退現(xiàn)象等問題。
此外,整個系統(tǒng)是B/S架構(gòu),相較于C/S架構(gòu)設(shè)計,在系統(tǒng)維護(hù)方面不僅開銷小,而且升級也很方便,這能夠極大降低維護(hù)成本;基于瀏覽器的B/S架構(gòu)設(shè)計還具備業(yè)務(wù)擴展簡單方便,通過增加網(wǎng)頁即可增加服務(wù)器功能等優(yōu)勢。
對仿真實驗結(jié)果研究分析可知,由于人臉圖像在采集過程中發(fā)生的抖動、光照、以及表情變化等,導(dǎo)致圖像模糊或者圖像不完整造成了誤識別現(xiàn)象,如何解決此類現(xiàn)象的發(fā)生,提高整個系統(tǒng)在非限制條件下人臉識別的準(zhǔn)確率將會是下一步研究工作的重點。