朱曉蒙 符云琴
摘要:基于圖像的課堂考勤系統(tǒng),即能節(jié)省時(shí)間又能提高學(xué)校管理的智能化。整個(gè)圖像課堂點(diǎn)名系統(tǒng)可分為五個(gè)功能模塊,訓(xùn)練學(xué)生的人臉模型模塊、課堂圖像中的人臉檢測模塊和加載檢測到的圖像進(jìn)行人臉識(shí)別模塊以及點(diǎn)名結(jié)果的數(shù)據(jù)顯示等功能。實(shí)現(xiàn)一個(gè)可以節(jié)省大量時(shí)間和使課堂點(diǎn)名更加快速和高效的系統(tǒng),從而提高了教學(xué)質(zhì)量和更加智能的進(jìn)行學(xué)生的出勤記錄管理。
關(guān)鍵詞:人臉識(shí)別;OpenCV;特征臉;課堂考勤
中圖分類號(hào):G484 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):0439-8114(2019)03-0111-05
DOI:10.14088/j.cnki.issn0439-8114.2019.03.029 開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
Abstract: Calling the roll used to be manual statistics, which is wasting time in class. The class attendance system based on image can not only save time but also improve the intelligence of school management. The whole image class roll-call system can be divided into five functional modules:training student's face model module, image model module which can detect class face, image of loading detection for face recognition module and the results of the data display and so on. A system can save a lot of time and make class attendance more rapid and efficient, so as to improve the teaching quality and manage student attendance record more intelligently.
Key words: face recognition;OpenCV;eigenfaces;class attendance
無論是在中小學(xué)課堂還是大學(xué)課堂上,點(diǎn)名是記錄考勤的一個(gè)重要環(huán)節(jié),也是教學(xué)質(zhì)量的一個(gè)重要參考指標(biāo)。在傳統(tǒng)的課堂考勤中,需要對(duì)學(xué)生依次點(diǎn)名,而這樣的方式花費(fèi)了大量的課堂時(shí)間以及增加了教師的工作量。為了讓課堂點(diǎn)名更加信息化和高效化,設(shè)計(jì)了基于圖像的課堂自動(dòng)點(diǎn)名系統(tǒng)。
人臉識(shí)別技術(shù)一直都是一個(gè)非常熱門的研究。在國外有Affective,它起始于MIT的一個(gè)項(xiàng)目,運(yùn)用深度學(xué)習(xí)的算法,不同的表情有不同的特征,通過攝像頭獲取面部動(dòng)作并識(shí)別對(duì)象的面部動(dòng)作,如微笑、挑眉、皺眉、憤怒、假笑等判斷人們的情緒。在國內(nèi)有Face++,它可以自動(dòng)檢測并定位圖片中的人臉,返回高精度的人臉框坐標(biāo),還有云從科技、Linkface等。
基于圖像的課堂點(diǎn)名系統(tǒng)采用了C/S模式,界面框架是Qt,數(shù)據(jù)庫使用的是SQLite,開源庫是OpenCV。該系統(tǒng)中主要是運(yùn)用了OpenCV中的人面部檢測函數(shù)、人面部模型訓(xùn)練函數(shù)、膚色檢測函數(shù)以及人面部識(shí)別函數(shù)。編碼語言采用的是C++。開發(fā)平臺(tái)是QT Create,它是一個(gè)跨系統(tǒng)的、完整的界面開發(fā)環(huán)境[1]。研究詳細(xì)地論述了基于圖像的課堂考勤系統(tǒng)的設(shè)計(jì)與開發(fā)過程。
1)操作人員分為管理員和教師,由管理員獲取學(xué)生的人臉數(shù)據(jù),并將數(shù)據(jù)進(jìn)行分類操作。
2)管理員建立學(xué)校的school.db數(shù)據(jù)庫,然后錄入學(xué)生和教師的基本信息。
3)進(jìn)行本學(xué)校的學(xué)生人臉模型訓(xùn)練,將已經(jīng)分類好的數(shù)據(jù)進(jìn)行模擬,得到一個(gè).xml的模型文件并進(jìn)行保存。
4)點(diǎn)名模塊:①選擇課程的基本信息(上課班級(jí)、課程名稱、上課日期)。②載入在課堂上拍攝的學(xué)生人臉圖像(最好是全部學(xué)生都是正臉)。③檢測圖像中出現(xiàn)的人臉并放到臨時(shí)文件中保存。④載入之前訓(xùn)練好的人臉模型,再將緩存區(qū)中保存的人臉依次放到模型中去識(shí)別并保存識(shí)別結(jié)果。⑤將識(shí)別得到的預(yù)測值和圖像放在臨時(shí)堆棧中,到數(shù)據(jù)庫中提取出該班級(jí)的信息并結(jié)合預(yù)測值,將點(diǎn)名結(jié)果顯示出來。
1 相關(guān)理論技術(shù)介紹
1.1 基于QT平臺(tái)的應(yīng)用程序開發(fā)
QT是一個(gè)非常靈活的跨系統(tǒng)的C++可視化圖形界面應(yīng)用開發(fā)框架。它的特點(diǎn)是“一次編寫,到處編譯”。這樣的方式非常靈活,讓開發(fā)人員可以不受限于系統(tǒng),在數(shù)據(jù)顯示方面還提供了<模型--視圖--委托>的機(jī)制來實(shí)現(xiàn),是Linux系統(tǒng)下開發(fā)C++用戶界面應(yīng)用程序非常好的選擇[2]。
1.2 數(shù)據(jù)庫技術(shù)
SQLite數(shù)據(jù)庫是一款開放源代碼的、非常小的、跨系統(tǒng)的內(nèi)嵌式關(guān)系型數(shù)據(jù)庫,在程序中對(duì)SQLite的操作就像對(duì)相關(guān)的API操作一樣,它的代碼與所操作的應(yīng)用程序代碼是共同存在的。服務(wù)器和客戶端都在一個(gè)進(jìn)程中運(yùn)行[3]。SQLite應(yīng)用十分廣泛,是數(shù)據(jù)庫、編程庫、命令行工具,使用方式多樣:內(nèi)嵌開發(fā)、操作系統(tǒng)服務(wù)、腳本和界面應(yīng)用開發(fā)。它是普通的磁盤文件,所以非常便于操作、傳輸和備份。
1.3 OpenCV開源技術(shù)
OpenCV是一個(gè)跨系統(tǒng)和開放源代碼的機(jī)器視覺庫,可以在多個(gè)操作系統(tǒng)上面運(yùn)行。同時(shí)提供了C++、Python、Ruby、Matlab、Java等語言的接口。OpenCV里面的成員方法有500個(gè),遍布了機(jī)器視覺的許多方面,如食品加工、信息安全、醫(yī)學(xué)成像、攝像機(jī)標(biāo)定、用戶界面、3D視覺等。其中提供的膚色檢測、檢測人臉和識(shí)別人臉?biāo)惴ㄒ捕挤浅3墒?。本研究所用到的人臉檢測、人臉識(shí)別和人臉數(shù)據(jù)模型的訓(xùn)練由OpenCV提供的相關(guān)接口實(shí)現(xiàn)[4]。
2 系統(tǒng)需求分析
2.1 系統(tǒng)可行性分析
2.1.1 需求可行性分析 圖像課堂考勤系統(tǒng)是一個(gè)可應(yīng)用于學(xué)校的點(diǎn)名系統(tǒng),管理人員和教師運(yùn)用系統(tǒng)來輸入圖像實(shí)現(xiàn)自動(dòng)點(diǎn)名功能,并對(duì)相關(guān)數(shù)據(jù)進(jìn)行操作和管理。圖像課堂考勤系統(tǒng)節(jié)省了教師點(diǎn)名時(shí)間并采用計(jì)算機(jī)技術(shù)來實(shí)現(xiàn)點(diǎn)名功能,使課堂點(diǎn)名更加快速化、信息化及高效化。
2.1.2 技術(shù)可行性分析 基于圖像的課堂考勤是一個(gè)界面系統(tǒng)。使用Qt來做GUI設(shè)計(jì),它具有功能強(qiáng)大和方便使用的模板類型,模型、視圖、委托功能,多種顯示圖像框架和自定義需要的顯示數(shù)據(jù)模型視圖。OpenCV提供了強(qiáng)大的對(duì)圖像中的像素進(jìn)行處理函數(shù)的功能,主要有圖像中像素的灰度化、二值化及機(jī)器上的視覺算法。有特征臉模型訓(xùn)練、Haar特征的人臉檢測、RGB的膚色檢測及人臉預(yù)測等算法。經(jīng)過綜合分析,采用應(yīng)用程序開發(fā)框架+OpenCV做圖像處理技術(shù)支持是具備可行性的。
2.1.3 操作可行性分析 系統(tǒng)的用戶界面具有簡潔、易操作等特點(diǎn),可以讓管理人員和教師一看就知道如何去使用系統(tǒng)功能。在實(shí)現(xiàn)課堂點(diǎn)名功能時(shí),載入模型和人臉檢測以及人臉識(shí)別的時(shí)間都不能過長,這樣會(huì)降低工作效率。
2.2 系統(tǒng)性能需求
系統(tǒng)性能需求有系統(tǒng)的安全性、互操作性,程序的可靠性、高效性,系統(tǒng)的可維護(hù)性、可擴(kuò)展性以及可移植性等多個(gè)方面?;趫D像的課堂考勤系統(tǒng)是一個(gè)圖像處理系統(tǒng),管理員或老師在使用系統(tǒng)過程中以實(shí)現(xiàn)對(duì)學(xué)生的課堂考勤進(jìn)行智能化管理。其中最重要的性能是可靠性以及高效性,必須要保證檢測到全部的人臉以及沒有誤檢的基礎(chǔ)上去識(shí)別,還必須保證識(shí)別的結(jié)果是正確無誤的。高效性是要求載入模型時(shí)間必須要短,檢測人臉和進(jìn)行人臉預(yù)測都不能超過一定的時(shí)間。所以系統(tǒng)必須要達(dá)到一定的可靠性和高效性,采用算法疊加進(jìn)行檢測和識(shí)別可以提高系統(tǒng)的可靠性和高效性。
2.3 系統(tǒng)業(yè)務(wù)邏輯
系統(tǒng)業(yè)務(wù)邏輯見圖1所示。
3 系統(tǒng)總體設(shè)計(jì)
3.1 系統(tǒng)功能設(shè)計(jì)
整個(gè)圖像課堂考勤系統(tǒng)可分為四個(gè)功能模塊,學(xué)生人臉模型訓(xùn)練模塊、檢測出課堂圖像中的學(xué)生人臉模塊和識(shí)別學(xué)生人臉模塊以及數(shù)據(jù)庫管理等功能。其中學(xué)生人臉模型訓(xùn)練和識(shí)別學(xué)生人臉模塊是系統(tǒng)的核心功能。
3.1.1 學(xué)生人臉模型訓(xùn)練模塊 OpenCV提供了三種訓(xùn)練模型函數(shù)。①Eigenfaces特征臉createEigenFaceRecognizer();②Fisherfaces createFisherFaceRecognizer();③LPH局部二值直方圖createLBPHFaceReconizer()。
系統(tǒng)中的學(xué)生人臉模型訓(xùn)練運(yùn)用的是OpenCV提供的特征臉模型函數(shù)訓(xùn)練。學(xué)生人臉模型訓(xùn)練功能主要分為4個(gè)步驟。
1)獲取學(xué)生的人臉圖片或者是含人臉的圖片并進(jìn)行分類處理,一般一個(gè)學(xué)生需要獲取多張不同的圖片,分類每位學(xué)生的人臉圖片然后以學(xué)號(hào)為文件夾名稱并放在文件夾中,以便后面生成csv.txt文本文件。每個(gè)文件夾中只包含該學(xué)生的圖像。
2)獲取僅為人臉的圖像數(shù)據(jù):選擇保存人臉數(shù)據(jù)的文件夾,將上面已經(jīng)分類處理的圖像文件一一導(dǎo)入模型進(jìn)行人臉檢測,再將檢測到的人臉矩形數(shù)據(jù)尺寸縮放為90 mm×90 mm的圖像文件并保存到相應(yīng)的文件夾內(nèi),最后將保存的.jpg的格式轉(zhuǎn)換為.pgm圖像格式。
3)把腳本文件放到人臉圖像文件的上一級(jí)目錄中,執(zhí)行(./get_csv.sh)腳本文件生成csv.txt文件。該文件的每行都存儲(chǔ)一張圖像的路徑和標(biāo)簽,用“;”號(hào)隔開,標(biāo)簽指代的是個(gè)人的編號(hào)而非圖像的編號(hào),如圖2所示。
4)開始訓(xùn)練模型。先調(diào)用函數(shù)將csv.txt文件的內(nèi)容讀入到vector
3.1.2 學(xué)生人臉檢測模塊 進(jìn)行班級(jí)、課程及上課時(shí)間等基本信息的選擇。然后載入在課堂中拍攝的學(xué)生人臉圖像,此功能是檢測出圖像中含有的人臉數(shù)量和存在位置并將其勾畫出來。檢測出來的人臉數(shù)據(jù)存儲(chǔ)到臨時(shí)創(chuàng)建或已經(jīng)建立好的文件夾中,再將文件夾中的圖像縮放到大小為90 mm×90 mm的圖像文件。因?yàn)槿绻谟?xùn)練時(shí)采用的是90 mm×90 mm的圖像,那么在預(yù)測函數(shù)中也只能預(yù)測90 mm×90 mm的圖像,否則會(huì)出錯(cuò)[5]。
3.1.3 學(xué)生人臉識(shí)別模塊 人臉識(shí)別方法主要分為五類:基于傳統(tǒng)知識(shí)的方法、基于模式匹配的方法、基于幾何特征的方法、基于統(tǒng)計(jì)的方法及基于外觀的方法。
本研究采用的是類Haar特征和Adaboost算法實(shí)現(xiàn)人臉檢測。它是一種基于傳統(tǒng)知識(shí)的人臉檢測算法。學(xué)生人臉識(shí)別步驟為:①在完成了上一步的人臉檢測后,將已經(jīng)檢測出來的圖像存儲(chǔ)在vector
系統(tǒng)采用的OpenCV提供的三個(gè)人臉識(shí)別方法中的第一個(gè)特征臉方法,它通過下面的方式進(jìn)行識(shí):①把載入的訓(xùn)練數(shù)據(jù)投影到PCA子空間;②把vector
3.2 數(shù)據(jù)庫設(shè)計(jì)
本系統(tǒng)采用的數(shù)據(jù)庫設(shè)計(jì)見表1和表2。
4 系統(tǒng)功能實(shí)現(xiàn)
4.1 系統(tǒng)總體功能實(shí)現(xiàn)
整個(gè)圖像課堂考勤系統(tǒng)可分為四個(gè)功能,學(xué)生的人臉模型訓(xùn)練功能、檢測學(xué)生人臉模塊功能和學(xué)生人臉預(yù)測功能以及數(shù)據(jù)庫管理等功能。登陸進(jìn)入主界面后可選擇訓(xùn)練模型功能或進(jìn)行點(diǎn)名功能??傮w功能流程見圖3。人臉模型訓(xùn)練是實(shí)現(xiàn)人臉識(shí)別的第一步,也是最關(guān)鍵的一步,因?yàn)槿绻四樐P陀?xùn)練不好將會(huì)直接影響到人臉識(shí)別的結(jié)果。系統(tǒng)主界面見圖4。
4.2 人臉模型訓(xùn)練功能
學(xué)生的人臉模型訓(xùn)練是實(shí)現(xiàn)圖像點(diǎn)名的第一步,也是最關(guān)鍵的一步,因?yàn)槿绻四樐P陀?xùn)練不好將會(huì)直接影響到圖像點(diǎn)名的結(jié)果。功能流程見圖5。
4.3 人臉檢測功能
圖像點(diǎn)名功能由四個(gè)小模塊組成,具體為課堂圖像獲取及學(xué)生頭像檢測、圖像預(yù)處理、圖像中的重要特性的獲取以及預(yù)測模塊。
課堂圖像獲?。翰捎脭z像頭或手機(jī)鏡頭將課堂開始時(shí)的學(xué)生圖像拍攝下來。
學(xué)生頭像檢測:學(xué)生的頭像檢測是人臉識(shí)別的基礎(chǔ)步驟,就是在圖像中用一個(gè)矩形框檢測圖像中存在的學(xué)生人臉的個(gè)數(shù)和保存矩形的像素,并將檢測到的人臉圖像轉(zhuǎn)換90 mm×90 mm大小。
人臉圖像預(yù)處理:在進(jìn)行完學(xué)生頭像檢測之后就對(duì)矩形中的像素進(jìn)行處理,因?yàn)闄z測結(jié)果保存的是矩形的像素,并沒有將圖像提取出來,要進(jìn)行提取圖像子圖和對(duì)子圖進(jìn)行灰度轉(zhuǎn)換,直方圖均衡化以及圖像的歸一化處理等[7]。
人臉圖像特征提?。簣D像中的重要特征獲取是運(yùn)用了Haar-like特征的提取。
4.4 人臉預(yù)測功能
學(xué)生人臉預(yù)測算法是采用了OpenCV提供的Eigenfaces算法,它是一個(gè)主成分分析算法(PCA)。預(yù)測的過程就是將已經(jīng)進(jìn)行預(yù)處理的圖像投影到PCA子空間中,在與已經(jīng)訓(xùn)練好的模型中的子空間進(jìn)行相似度比較,相似度最大的視為識(shí)別的結(jié)果[8]。點(diǎn)名功能流程見圖6。
4.5 數(shù)據(jù)顯示功能
將點(diǎn)名結(jié)果簡單清晰地顯示在主界面中,顯示的基本數(shù)據(jù)包括課程的基本信息,如上課班級(jí)、課程名稱、上課時(shí)間和班級(jí)人數(shù)、到勤人數(shù)以及出勤率等一些基本信息。主要的顯示信息是學(xué)生的基本信息:學(xué)號(hào)、姓名、院系、專業(yè)、班級(jí)、是否到勤、學(xué)生頭像以及檢測到和識(shí)別為此學(xué)生的圖像。
具體的實(shí)現(xiàn)技術(shù):Qt采用了<模型---視圖---委托>來實(shí)現(xiàn)數(shù)據(jù)可視化功能。數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)顯示是分離的,不相關(guān)的,這樣的好處就是一個(gè)數(shù)據(jù)模型可以有多種方式來顯示,同時(shí),一個(gè)可視化窗口也可以顯示多種數(shù)據(jù)模型,只要你在顯示的時(shí)候?qū)⒛P秃涂梢暬丶M(jìn)行關(guān)聯(lián)。在Qt中存儲(chǔ)數(shù)據(jù)的模型基類是QAbstractItemModel,其他的數(shù)據(jù)存儲(chǔ)模型都是基于此類派生出來的。視圖類的基類是QAbstractItemView,其他的視圖類都是由此類派生出來。本系統(tǒng)中運(yùn)用到的數(shù)據(jù)存儲(chǔ)模型有QStabdardItemModel,它是一個(gè)用于表格的模型,還有運(yùn)用到QsqlTableModel,一個(gè)用于操作數(shù)據(jù)表的數(shù)據(jù)模型。視圖類運(yùn)用的是QtableView,一個(gè)用于顯示表格的視圖類[9-15]。模型和視圖類都是基于int和text的顯示機(jī)制,如果要實(shí)現(xiàn)復(fù)雜的類型就需要用到委托類,比如本系統(tǒng)中要實(shí)現(xiàn)在單元格中繪制圖像和添加一個(gè)可操作的復(fù)選框??梢詾橐恍谢蛞涣刑砑幼远x的委托,來實(shí)現(xiàn)自己想要實(shí)現(xiàn)的功能。點(diǎn)名結(jié)果顯示見圖7。
5 小結(jié)
由于編程思想和開發(fā)經(jīng)驗(yàn)的不足,基于圖像的課堂考勤系統(tǒng)還存在諸多的問題。在以后的工作中應(yīng)不斷完善圖像的課堂點(diǎn)名系統(tǒng),對(duì)系統(tǒng)的訓(xùn)練學(xué)生的人臉模型和檢測學(xué)生人臉以及人臉預(yù)測功能不斷地改進(jìn)和完善。下一步工作在圖像課堂考勤系統(tǒng)中加入膚色檢測技術(shù),使膚色檢測和Haar特征檢測相結(jié)合,從而改進(jìn)單獨(dú)使用Haar進(jìn)行檢測時(shí)產(chǎn)生的誤檢。多次修改訓(xùn)練模型的圖像格式和預(yù)處理的結(jié)果,找出最好的訓(xùn)練模型圖像格式和預(yù)處理方法。對(duì)可以進(jìn)行重新構(gòu)造的類和方法函數(shù)進(jìn)行重新構(gòu)造,提高代碼的簡潔性。針對(duì)寫得不好的代碼進(jìn)行不斷的優(yōu)化,使代碼更加易懂。深入對(duì)Qt的GUI框架學(xué)習(xí),對(duì)信號(hào)和槽加深學(xué)習(xí),對(duì)布局管理和模型視圖機(jī)制多加應(yīng)用并設(shè)計(jì)出一個(gè)更加友好、簡潔、優(yōu)雅的設(shè)計(jì)界面。編寫一份完整的使用文檔,來幫助使用者更快、更易使用基于圖像的課堂考勤系統(tǒng)。
參考文獻(xiàn):
[1] JASMIN B,MARK S.C++ GUI Qt4編程[M].北京:電子工業(yè)出版社,2013.
[2] MARK S.Qt高級(jí)編程[M].北京:清華大學(xué)出版社,2011.
[3] MIKE O.SQLite權(quán)威指南[M].北京:電子工業(yè)出版社,2013.
[4] GARY B.學(xué)習(xí)OpenCV[M].北京:清華大學(xué)出版社,2009.
[5] 趙 黎.基于OpenCV的人臉檢測系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].科技信息(科學(xué)教研),2008(18):351,403.
[6] 齊興敏.基于PCA的人臉識(shí)別技術(shù)的研究[D].武漢:武漢理工大學(xué),2007.
[7] 何 榮.基于OpenCV的人臉識(shí)別系統(tǒng)設(shè)計(jì)[D].廣州:華南理工大學(xué),2013.
[8] 黃 昉,張寶昌,劉金琨.PCA在人臉識(shí)別中的改進(jìn)算法[J].中國科技論文在線,2011,6(1):54-58.
[9] 王 進(jìn),頡小鳳,胡明星,等.基于LBP預(yù)處理和子圖像特征采樣的人臉識(shí)別[J].江蘇大學(xué)學(xué)報(bào)(自然科學(xué)版),2016,37(1):85-91.
[10] 張靜端.基于人臉識(shí)別技術(shù)的圖書館門禁系統(tǒng)的研究[J].現(xiàn)代電子技術(shù),2016,39(18):99-103.
[11] 周水生,鄭 穎,穆新亮.基于Cholesky分解的K2DPCA人臉識(shí)別研究[J].系統(tǒng)工程理論與實(shí)踐,2016,36(2):528-535.
[12] 聶海濤,龍科慧,馬 軍,等.基于快速SIFT算法和模糊控制的人臉識(shí)別[J].吉林大學(xué)學(xué)報(bào)(工學(xué)版),2016,46(2):549-555.
[13] 徐曉艷.人臉識(shí)別技術(shù)綜述[J].電子測試,2015(10):30-35,45.
[14] 代 雷,吳 迪,張 健.基于OpenCV視覺庫的ESPI圖像增強(qiáng)技術(shù)研究[J].電子測量與儀器學(xué)報(bào),2013,27(10):975-979.
[15] 馬新明,趙曉莉,時(shí) 雷,等.基于OpenCV的圖像處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].河南農(nóng)業(yè)大學(xué)學(xué)報(bào),2014,48(1):87-90.