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

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

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

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

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

圖5 樣本數據集類別圖

圖6 單樣本數據集1

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

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

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

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