馮志文, 荊 明, 巫春玲, 潘嘉欣, 李宏俠
(1. 陜西省建筑設(shè)計(jì)研究院(集團(tuán))有限公司,西安 710018;2. 長安大學(xué)電子與控制工程學(xué)院,西安 710064)
本文針對傳統(tǒng)校園考勤簽到方式費(fèi)時(shí)費(fèi)力的問題,提出并設(shè)計(jì)了一種基于人臉識別的智慧校園自動考勤系統(tǒng),通過人臉識別技術(shù)和自動化技術(shù)優(yōu)化學(xué)生考勤方式和流程。
本文主要完成以下研究:對高校課堂傳統(tǒng)考勤方式進(jìn)行討論分析,并對以人臉識別技術(shù)為基礎(chǔ)的考勤系統(tǒng)進(jìn)行可行性分析;設(shè)計(jì)人臉識別考勤系統(tǒng)的總體功能架構(gòu),通過劃分模塊,分別實(shí)現(xiàn)其對應(yīng)的功能;在Pycharm 的開發(fā)環(huán)境下,結(jié)合數(shù)據(jù)庫與HTML 技術(shù),完成算法的編寫設(shè)計(jì),仿真模擬工作;對設(shè)計(jì)出來的系統(tǒng)進(jìn)行實(shí)際測試與分析。
本項(xiàng)目旨在設(shè)計(jì)出一種基于人臉識別技術(shù),利用攝像頭捕捉人臉信息,通過編程算法對采集的人臉照片與系統(tǒng)數(shù)據(jù)庫中已有的樣本信息進(jìn)行比對,從而獲得課堂考勤情況的自動考勤系統(tǒng)。 其功能主要包括圖像采集、人臉識別、考勤、查詢與設(shè)置等五個(gè)模塊。
圖像采集包含人臉采集和提取兩部分,是進(jìn)行人臉識別操作的基礎(chǔ),需要盡可能完整準(zhǔn)確地獲取人物圖像信息。 圖像采集由攝像頭來完成,因此,在攝像頭的選擇上應(yīng)著重于高像素、高對比度、高分辨率、較大取景范圍和較低成本幾方面,確保獲取的圖像擁有更多細(xì)節(jié),便于后期進(jìn)行圖像的預(yù)處理。 除此之外,考慮到采集效果會受到教室內(nèi)設(shè)施布局、采光情況等的影響,本系統(tǒng)選擇在多次測試后合適的攝像頭型號。 同時(shí),利用攝像頭采集需考勤對象的照片,進(jìn)行人員拍照登記,保存在“人臉特征庫”中。
系統(tǒng)在進(jìn)行需考勤對象人臉圖像信息采集時(shí),信息中同時(shí)包含有教室環(huán)境的完整信息,在進(jìn)行圖像預(yù)處理后,需要從圖像中捕獲并檢測人臉,提取出所有的人臉并獲得人臉的位置和大小,以進(jìn)行人臉識別。 由于人的面部具有很多特征,如膚色、發(fā)色、五官輪廓和比例等,通過對這些特征用向量進(jìn)行描述構(gòu)成人臉的特征向量,以此作為判斷人臉的依據(jù),將復(fù)雜的人臉檢測問題轉(zhuǎn)化為向量匹配問題。 通過設(shè)計(jì)算法,使向量匹配自動完成,實(shí)現(xiàn)人臉的自動檢測識別。
系統(tǒng)根據(jù)教室課程時(shí)間、地點(diǎn)等信息,在課程設(shè)置的時(shí)間內(nèi)手動或自動啟動攝像頭進(jìn)行工作,根據(jù)自行設(shè)置的拍攝次數(shù)采集的數(shù)張圖片,提取其中包含的人臉圖像,并與“人臉特征庫”中的信息進(jìn)行比對,人臉、姓名、性別、學(xué)號等信息識別成功后將被更新到考勤表中,標(biāo)識“已到”;未成功,則標(biāo)識“未到”。 最終,在該課堂結(jié)束后,將自動生成最新的考勤表,完成課堂考勤。
為了使本系統(tǒng)對使用者更加友好,增加了學(xué)生設(shè)置、課程設(shè)置等功能。 學(xué)生設(shè)置可對學(xué)生的基本信息進(jìn)行維護(hù);課程設(shè)置可用于設(shè)置課程信息,包括課程名稱、授課教室、開始和結(jié)束時(shí)間等,兩種設(shè)置均能夠?qū)崿F(xiàn)增、刪、改操作。
在本系統(tǒng)中,為方便該課堂老師及時(shí)了解到課考勤情況,為老師將提供一個(gè)查詢界面,老師通過輸入教室、課程時(shí)間等條件進(jìn)行查詢,其查詢結(jié)果考勤表將包含到課名單、到課率、缺勤名單等詳細(xì)信息。
根據(jù)整體功能,可將考勤系統(tǒng)分為四層。
最底層是硬件層,包含服務(wù)器、攝像頭、網(wǎng)絡(luò)設(shè)備。 其中服務(wù)器為考勤系統(tǒng)提供操作系統(tǒng)支撐,攝像頭提供采集的圖像信息,網(wǎng)絡(luò)設(shè)備用于傳輸圖像信息和管理信息。
數(shù)據(jù)庫位于硬件上層,為考勤系統(tǒng)提供數(shù)據(jù)庫環(huán)境,用于保存登記的學(xué)生信息、教室信息、考勤信息等。
數(shù)據(jù)庫層之上由多個(gè)組件構(gòu)成,每個(gè)組件完成一個(gè)功能。 其中圖像采集組件用于采集每個(gè)班級的學(xué)生照片,及上課時(shí)拍下的照片;人臉識別用于對采集到的照片進(jìn)行人臉匹配,識別學(xué)生的到課情況;考勤組件則用于記錄各個(gè)班級的考勤情況;管理組件用于設(shè)置上課時(shí)間、班級等,并可查詢考勤記錄。最頂端為用戶交互界面,用戶通過該界面實(shí)現(xiàn)調(diào)用考勤系統(tǒng)的各項(xiàng)功能。
由于人臉識別考勤系統(tǒng)需要以現(xiàn)場采集的照片作為樣本,并在服務(wù)器上的考勤軟件進(jìn)行考勤操作,故在采樣和傳輸環(huán)節(jié)需要考慮硬件的支持。
考勤系統(tǒng)在硬件層面包含采集終端、網(wǎng)絡(luò)線路和計(jì)算設(shè)備。 采集終端設(shè)備的選擇需根據(jù)考勤系統(tǒng)應(yīng)用環(huán)境、經(jīng)濟(jì)條件和采集方式進(jìn)行合理選型;網(wǎng)絡(luò)線路基于學(xué)校的校園網(wǎng);服務(wù)器可采用虛擬服務(wù)器或?qū)嶓w服務(wù)器。 攝像頭將采集到的圖像經(jīng)過校園網(wǎng)傳送給服務(wù)器,并由服務(wù)器上的考勤軟件進(jìn)行考勤工作。
圖像采集過程主要是實(shí)現(xiàn)圖像的拍攝、傳輸、處理和保存。 具體過程為:使用攝像機(jī)拍攝產(chǎn)生原照,對原照進(jìn)行傳輸和預(yù)處理,隨后進(jìn)行人臉檢測,將檢測到的人臉圖片進(jìn)行保存,完成圖像采集的任務(wù)。 圖像采集流程如圖1 所示。

圖1 圖像采集流程
教室考勤系統(tǒng)需在用于課堂考勤前進(jìn)行學(xué)生人臉圖片信息采集,即人員拍照登記,相當(dāng)于對需考勤的學(xué)生人臉進(jìn)行注冊操作。 通過IP 地址在網(wǎng)絡(luò)上尋找設(shè)備,對攝像頭進(jìn)行初始化工作,設(shè)置幀率、采樣參數(shù)、圖片格式大小等。 設(shè)置完后啟動攝像頭抓拍,抓拍后設(shè)置姓名、學(xué)號等信息,并存入相應(yīng)的班級內(nèi)。
圖像采集部分的基本功能是在上課期間,通過攝像頭對課堂上的學(xué)生人臉進(jìn)行實(shí)時(shí)間斷性的采集保存。 在本系統(tǒng)中,管理員可自行設(shè)置上課期間攝像頭的采集次數(shù),然后自動調(diào)用攝像頭進(jìn)行工作,實(shí)現(xiàn)自動抓拍,課堂結(jié)束后,攝像頭也停止采集圖像并關(guān)閉,完成圖像采集工作。 同時(shí)系統(tǒng)提供手動抓拍模式,通過點(diǎn)擊拍攝獲取攝像頭的一幀圖像。
基于幾何特征的人臉識別技術(shù)需要經(jīng)過三個(gè)步驟,即人臉檢測、人臉特征點(diǎn)提取、人臉識別。 顧名思義,人臉檢測就是提取人臉圖像,人臉特征點(diǎn)提取就是對人臉圖像進(jìn)行特征點(diǎn)定位,提取特征后,再利用歐氏距離判斷是否匹配為同一張人臉。
(1)人臉檢測
人臉檢測又稱為人臉檢測與定位,是人臉識別系統(tǒng)的重要環(huán)節(jié)。 目的是檢測圖像中的人臉并將其從背景中分割出來,即給定一幅靜止圖像或一段動態(tài)圖像序列,從未知的圖像背景中分割、提取并確認(rèn)可能存在的人臉,提取人臉特征。 人臉檢測需要考慮多方面的因素,既要保證較高的檢出率,又要保證較低的誤檢率。
本文采用基于Dlib 的人臉檢測方法。 Dlib 是一個(gè)包含機(jī)器學(xué)習(xí)算法的C++開源工具包,它不依賴于第三方庫,無須安裝和配置。 使用Dlib 中自帶的人臉檢測器,單人、多人,各種角度的人臉都可以被檢測出來。
(2)人臉特征點(diǎn)提取
本設(shè)計(jì)Dlib 中用到的接口是已經(jīng)訓(xùn)練好的ResNet 模型接口,通過ResNet 深度殘差神經(jīng)網(wǎng)絡(luò)抽取特征,再返回一個(gè)128 維的人臉特征向量。 應(yīng)用Python 中的face-recognition 庫去實(shí)現(xiàn)將一張圖片中的所有清晰人臉都提取出來。 程序使用默認(rèn)的給予HOG 模型查找圖像中的所有人臉,程序通過循環(huán)加載face_recognition.face_locations 函數(shù)打印所有人臉模型信息和保存人臉圖片。 經(jīng)過多次測試發(fā)現(xiàn)提取成功度很高,提取后的單獨(dú)人臉可以進(jìn)行人臉識別的操作。
(3)人臉識別
人臉識別可以理解為“分類”,攝像頭采集到某個(gè)人臉時(shí),通過算法判斷該人的身份。 由于前面已經(jīng)檢測到人臉,并提取除了人臉的特征向量,此步驟中只需要進(jìn)行距離匹配,即在獲取特征向量之后使用歐式距離和已登記的人臉特征向量進(jìn)行匹配。人臉識別流程如圖2 所示。

圖2 人臉識別算法流程
(1)HTML5 介紹
HTML5 是由萬維網(wǎng)聯(lián)盟于2014 年10 月29 日宣布的HTML 最新修訂版本,用于取代1999 年所制定的HTML4.01 和XHTML1.0 標(biāo)準(zhǔn)的HTML 版本,是構(gòu)建Web 內(nèi)容的一種語言描述方式。 其新引進(jìn)的語法特征能夠在移動設(shè)備上支持多媒體,更好地適應(yīng)移動端設(shè)備。 新的解析規(guī)則增強(qiáng)了靈活性、新屬性,淘汰過時(shí)的或冗余的屬性,真正地改變了用戶與文檔的交互方式。 HTML5 強(qiáng)化了Web 網(wǎng)頁表現(xiàn)性能,追加了本地?cái)?shù)據(jù)庫等Web 應(yīng)用的功能,能夠更好地提高文本、圖片、視頻的處理效率。
(2)Python 和HTML 的連接
Flask 是一個(gè)輕量級的基于Python 的Web 框架。為了方便系統(tǒng)設(shè)計(jì),將對應(yīng)的查詢功能、登記頁面、上課識別頁面以HTML 文件模塊的形式存放于Flask目錄templates 目錄下,之后對其進(jìn)行調(diào)用,利用render_template 語句進(jìn)行網(wǎng)頁渲染,即可實(shí)現(xiàn)連接。
(3)查詢功能設(shè)計(jì)
本設(shè)計(jì)提供兩種查詢內(nèi)容:1)課程記錄查詢;2)考勤記錄查詢。 分別以record.html 和logs.html模塊文件進(jìn)行保存,保存在templates 目錄下。
課程記錄查詢主要記錄對應(yīng)考勤課程的相關(guān)信息,包括課程次序、班級、課程、上下課時(shí)間、實(shí)到人數(shù)、未到人數(shù),便于老師及管理人員的查看和統(tǒng)計(jì)。
考勤記錄查詢主要記錄學(xué)生的詳細(xì)考勤狀況。其主要信息包括:姓名、第一次識別時(shí)間、最后一次識別時(shí)間以及是否簽到。 簽到條件為在第一次識別至最后一次識別所拍攝的圖片中,能夠至少識別一次對象臉部信息。
(4)登記頁面設(shè)計(jì)
為方便識別對象的初次登記和采集工作,設(shè)計(jì)了登記功能,并設(shè)計(jì)登記頁面方便用戶操作。 創(chuàng)建adduser.html 文件,保存于template 目錄下。 選擇“用戶登記”功能,并打開攝像頭,對識別對象進(jìn)行人臉信息的捕捉,并保存在數(shù)據(jù)庫中作為對比樣本。 同時(shí)由用戶錄入對應(yīng)樣本正確的姓名、班級,并保存在數(shù)據(jù)庫內(nèi)。 利用“檢查”功能實(shí)現(xiàn)對人臉信息和和對象資料的匹配校驗(yàn)。
(5)課堂識別頁面
上課課堂識別頁面用于進(jìn)行人臉識別考勤的開始操作。 創(chuàng)建index.html 文件,保存于template 目錄下。 用戶需要輸入上課日期、時(shí)間、課程名稱和班級,并點(diǎn)擊“上課”后,選擇對應(yīng)的拍攝方式。 在點(diǎn)擊“上課”的情況下,填寫的信息無法進(jìn)行修改,需點(diǎn)擊“下課”后才能更改用戶信息。
拍攝方式有手動抓拍和自動抓拍兩種方式。手動抓拍,即用戶通過點(diǎn)擊“手動抓拍”進(jìn)行單張照片拍攝并進(jìn)行多個(gè)人臉識別,圖片樣本采集數(shù)目由用戶操作次數(shù)決定。 自動抓拍,則是在用戶選擇后每隔1min 自動進(jìn)行捕獲,每次采集一張圖片,并分別進(jìn)行識別。
本“基于人臉識別系統(tǒng)”,完成了對教室的課堂自動考勤系統(tǒng)的設(shè)計(jì),系統(tǒng)主要分三部分:學(xué)生登記功能、人臉識別考勤功能以及考勤記錄查詢功能,主要可實(shí)現(xiàn)圖像采集功能、人臉檢測與識別功能、完成數(shù)據(jù)庫的搭建,滿足學(xué)校的日常考勤需求。