張正旺

【摘 要】傳統考勤系統耗時耗力,且易出代考勤現象。基于人臉識別的課堂自動考勤系統借助深度學習技術和有攝像頭的計算機可實現自動考勤,依據人臉自動生成標記好的考勤表,既省時又省力,并可有效防范代課現象。
【關鍵詞】人臉識別;深度學習;自動考勤系統
中圖分類號: TP183 文獻標識碼: A 文章編號: 2095-2457(2019)27-0017-002
DOI:10.19694/j.cnki.issn2095-2457.2019.27.007
0 引言
出勤率是實現課堂教學預期效果的基礎和前提,學生末出席,教學效果自然無從談起。對大多數教師而言,考勤是保證學生出勤率的一種必要手段。傳統的考勤方法是教師借用上課時間一一點名,并對出席或缺勤的在考勤表上作出標記,這種方法既耗時耗力,又效果不佳。一些學生為了應付老師點名,甚至會花錢請人代課,部分高校內還出現了專門的有償代課簇。由于學生人數眾多,教師一般無法準確識別代課學生,對于代課這種現象,課堂點名方式有點束手無策。隨著深度學習等計算機相關技術的發展,人臉識別的準確率大大提高,其實現成本也大為降低,借助人臉識別進行課堂考勤,可有效防止代課現象。為了減少課堂點名時間,提高考勤效果,作者開發設計了一個基于人臉識別的課堂自動考勤系統。
1 系統框架
如圖1所示,基于人臉識別的課堂自動考勤系統的由三大模塊構成:照片采集模塊、人臉識別模塊與考勤記錄模塊。照片采集模塊負責采集學生的人臉信息;人臉識別模塊將攝像頭當前捕捉到的人像與數據庫中的人臉進行對比,識別出學生姓名;考勤記錄模塊實現讀取與自動記錄考勤表(EXCEL表格)。
2 系統實現
2.1 實現基礎
系統所采用的編程語言為Python。Python是一種強大的、面向對象的高級程序設計語言,由于它的簡潔和穩健性,被廣泛應用于軟件開發、網頁開發、數據科學等方面,在IEEE于2017年與2018年發布的編程語言排行榜上,連續兩年高居榜首[1]。如圖1所示,照片采集模塊采用Python接口的OpenCV計算機視覺庫;人臉識別模塊需要用OpenCV、dlib、face recognition等Python庫,dlib庫[2]提供了非常優秀的人臉檢測與人臉識別算法,face recognition是一個基于dlib的深度學習人臉識別庫,其號稱為全球最簡單的Pyhton人臉識別API,使用該庫可以輕易且準確地識別出各種人臉;考勤記錄模塊利用Openyxl庫實現。所需硬件為帶內置或外置攝像頭的計算機。
2.2 實現過程
從學校教務系統下載EXCEL格式的考勤表,以班級名稱命名,保存在以班級名稱命名的目錄下。自動考勤系統首先利用Openyxl庫的load_workbook函數載入考勤表,讀取班級學生名單,班級名稱與當前考勤次數由教師手工輸入。首次上課時,要求學生面對攝像頭進行人臉圖像采集,使用Opencv庫中的VideoCapture函數實時捕捉攝像頭,將捕獲的圖像幀以學生名稱命名并保存到當前班級目錄,保存格式為jpg或png。采集好學生人臉信息后,系統即可正式開始自動考勤。上課前要求學生經過攝像頭,系統讀取到人像信息后,調用face recognition庫中的face_locations函數識別當前圖像中的人臉,并使用該庫中的face_encodings函數對識別出的人臉編碼,然后調用compare_faces函數將識別出人臉編碼與采集到的人臉編碼進行對比,判斷當前人臉是否為班級中的某位學生,如是班上學生,在視頻上提示學生名稱,利用Openyxl庫標記考勤表并保存,如與采集的人臉信息都對不上,則提示“您非本班學生或尚未采集照片,如需采集照片請按鍵盤上的X”。
3 系統應用
實例所采用操作系統為Ubuntu(Python為跨操作系統的編程語言,因此本系統在其他的操作系統下亦可無縫應用),考勤系統的源代碼文件為autoattendence.py。假設被考勤班級名稱為1811,則下載的考勤表應命名為1811.xlsx。首先建立一個名為autoattendence的目錄 ,將1811.xlsx和autoattendence.py置于該目錄下。在終端進入這個目錄并輸入命令;python autoattendence.py運行自動考勤系統。考勤過程如圖2所示,最終得到的考勤表如圖3所示,系統自動對出現在攝像頭前的學生在考勤表中用大寫的“O”作出標識。
4 結論
基于人臉識別的課堂自動考勤系統在設置好一些考勤信息后,無需人工干預,學生只需上課前經過攝像頭,即可自動完成考勤工作并生成標記好的考勤表。該系統與傳統的考勤系統相比,省時省力,并可有效防止代課現象,實現成本也不高,部署容易,人臉識別準確率高。由于此系統未進行“活體”檢測(判斷人像信息是一個真正的人還僅僅是一張照片或視頻),手持照片亦可欺騙該系統,即某人拿上班級上某學生的照片,也可替該學生代考勤,但考勤時任課教師通常在教室,此現象一般難以出現。后續系統可增加“活體”檢測模塊,徹底避免代考勤現象。
【參考文獻】
[1]https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2018.
[2]Davis E. King. Dlib-ml:A Machine Learning Toolkit. Journal of Machine Learning Research,2009,10,1755-1758.