陳光婷 王政 謝丹艷
摘要:隨著國家對本科生教育的嚴(yán)格要求,課堂考勤方式層出不窮。調(diào)查顯示,大多學(xué)校主要通過老師點(diǎn)名進(jìn)行課堂考勤,存在費(fèi)時、費(fèi)力、低效等問題?;贠penCV的人臉識別技術(shù)課堂簽到系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)是以Python為開發(fā)語言,采用SQLite數(shù)據(jù)庫,使用Django+Celery 作為主體框架,實(shí)現(xiàn)了攝像頭實(shí)時捕捉學(xué)生人臉信息,發(fā)送給celery 做特征提取和人臉分類,利用機(jī)器視覺技術(shù),可以有效地減少簽到時間、簽到成本,提高課堂效率、自動化程度,加快識別速度,使簽到變得更加標(biāo)準(zhǔn)化科學(xué)化。
關(guān)鍵詞:人臉識別;Python語言;OpenCV;SQLite
中圖分類號:TP391? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2022)25-0041-03
開放科學(xué)(資源服務(wù)) 標(biāo)識碼(OSID) :
1 引言
人工智能理論的深入研究和優(yōu)秀的深度學(xué)習(xí)算法的相繼出現(xiàn),我國開始著重于對大數(shù)據(jù)、深度學(xué)習(xí)的研究,這極大推動了計(jì)算機(jī)視覺技術(shù)的發(fā)展。人臉識別是機(jī)器視覺領(lǐng)域的主要研究對象之一,人臉識別驗(yàn)證速度快、識別準(zhǔn)確率高、用戶體驗(yàn)良好的特點(diǎn),而且人臉識別具有唯一性、擴(kuò)展性高、不用接觸就可以完成驗(yàn)證的優(yōu)點(diǎn),在當(dāng)今新冠肺炎疫情的大環(huán)境下被廣泛應(yīng)用在醫(yī)療、金融、教育等多個領(lǐng)域[1]。
人臉識別相對于其他的較為先進(jìn)的生物識別方式如虹膜識別、指紋識別等具有方便、準(zhǔn)確率高、實(shí)現(xiàn)簡單的優(yōu)勢。用戶使用攝像頭捕獲用戶靜態(tài)人臉的特征信息或者通過動態(tài)視頻流來捕捉目標(biāo)用戶人臉信息,將捕獲的人臉通過特征分析得出人臉信息[2]與系統(tǒng)中數(shù)據(jù)庫人臉信息比對,得出對比信息后從而進(jìn)行下一步操作處理。依照當(dāng)前科學(xué)技術(shù)的研究趨勢,人臉識別系統(tǒng)可能廣泛運(yùn)用于生產(chǎn)制造生活中,商業(yè)服務(wù)要求也會更高。迫切需要簡單化人臉識別系統(tǒng)的生產(chǎn)流程,完成更迅速、更可靠的生產(chǎn)流程[3]。
很多高校也開始引進(jìn)人臉識別考勤機(jī),但是考勤機(jī)的數(shù)量需要量之大加上安裝程序復(fù)雜這直接導(dǎo)致簽到效率并未提高。本系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)改善了人臉識別考勤機(jī)的部分缺點(diǎn),讓人臉識別課堂簽到變得更加標(biāo)準(zhǔn)化科學(xué)化。利用機(jī)器視覺技術(shù),可以提高人臉識別的考勤機(jī)的自動化程度、識別速度,同時也減少了課堂簽到的成本。
2 軟件設(shè)計(jì)
基于OpenCV[4]的人臉識別技術(shù)課堂簽到系統(tǒng)的平臺架構(gòu)[5]圖主要分為五層,分別是用戶層、業(yè)務(wù)層、服務(wù)層、數(shù)據(jù)層、設(shè)備層。這5層的邏輯架構(gòu)圖如圖1所示。
開發(fā)的人臉識別簽到系統(tǒng),可分為4個模塊??煞譃椋喝四樞畔⒉杉K、個人中心登錄模塊、課堂出勤模塊、后臺管理模塊。各個模塊的功能結(jié)構(gòu)如圖2所示。
人臉識別簽到系統(tǒng)的主要有3個角色,分別是:學(xué)生、教師和管理員。其中學(xué)生需要錄入學(xué)生個人的人臉信息,同時可以查看自己的簽到情況。教師可以查看本班某個時間段內(nèi)班級的出勤率,管理員要對教師和學(xué)生的注冊信息進(jìn)行審核以及添加、修改學(xué)生的簽到情況。其中管理員系統(tǒng)功能如圖3所示。
3 系統(tǒng)實(shí)現(xiàn)
3.1 人臉識別課堂簽到系統(tǒng)登錄
本系統(tǒng)的用戶,除了學(xué)生在上課之前需要簽到之外,所有用戶在使用系統(tǒng)時候需要先登錄到系統(tǒng)。本系統(tǒng)沒有設(shè)置學(xué)生登錄、教師登錄或者管理員登錄的區(qū)別界面、一方面減少代碼的開發(fā)量,由此可以提高代碼的復(fù)用性,另一方面,在登錄界面將輸入的信息傳入數(shù)據(jù)庫[6]的時候,每一種角色id作為該角色數(shù)據(jù)庫的主鍵,可以直接將其區(qū)分。用戶必須輸入正確的用戶名以及密碼,系統(tǒng)按照用戶名的不同進(jìn)入不同的系統(tǒng)。
3.2 人臉識別課堂簽到系統(tǒng)注冊
學(xué)生在人臉識別課堂簽到系統(tǒng)中,需要學(xué)生事先注冊自己基本信息,注冊的要求根據(jù)角色的不同相對的注冊信息也不一樣,學(xué)生再注冊的時候需要添加三張人臉的圖片,分別是正臉人臉照片、左側(cè)臉照片、右側(cè)臉照片。進(jìn)入127.0.0.1:8000/register中,注冊時def register(request)函數(shù)中img = request.POST.get("face").replace()函數(shù)將攝像頭捕捉到的三張人臉圖像替換數(shù)據(jù)庫中的原始空白圖片,通過face_task中g(shù)et_face_encoding(imgs)函數(shù),來編碼頭像的信息,傳入的是BytesI0對象或者是數(shù)組。在get_face_encoding(imgs)函數(shù)中定義獲取編碼函數(shù),見圖片轉(zhuǎn)化成對應(yīng)的矩陣,然后使用dlib找出人臉,將人臉圖片轉(zhuǎn)化成160*160的大小,通過expand_dims(face_pixels,aixs=0)來增加一個圖片的數(shù)量維度,最后通過face_model.predict()人臉特征提取的神經(jīng)網(wǎng)絡(luò)提取人臉特征。注冊界面如圖4所示。
3.3 學(xué)生簽到識別
教師在瀏覽器中打開http://127.0.0.1:8000/進(jìn)入簽到界面,此時系統(tǒng)使用OpenCV.js來動態(tài)實(shí)時捕捉系統(tǒng)攝像頭的畫面。當(dāng)系統(tǒng)攝像頭能夠正常運(yùn)行時,教師點(diǎn)擊開始簽到,系統(tǒng)就會捕捉人臉開始簽到。簽到系統(tǒng)使用post向后端Django發(fā)送請求,在Django[7]接收請求后就可以進(jìn)行課堂,簽到定義函數(shù)base_match_faces(face_encoding,known_face_encodings,? known_face_names)是為了傳入人臉特征,將捕獲到的人臉信息,按照行向量進(jìn)行處理求出know_face_encodings-face_encoding的范數(shù),給出人臉距離的水平方向的最小值的下標(biāo),如果在face_distance數(shù)組中該下標(biāo)的值對應(yīng)的數(shù)值小于6,則將在know_face_names中取出該下標(biāo)所對應(yīng)的姓名,load_all_users()函數(shù)還會輸出其他一些學(xué)生的個人信息。在數(shù)據(jù)庫中還會存儲學(xué)生的簽到的相關(guān)的基本信息。簽到界面如圖5所示。
3.4 學(xué)生簽到查詢
教師學(xué)生登錄個人中心,在個人中心可以查詢自己在某個時間段內(nèi)的簽到情況,教師可以查詢自己的課程的簽到情況,作為管理員可以通過模糊搜索,搜索整個學(xué)校的出勤率。查詢界面如圖6所示。
3.5 人臉識別課堂簽到系統(tǒng)管理功能
在本系統(tǒng)中,管理員有且只有一位,不可注冊,一方面防止管理員過多,同時對數(shù)據(jù)進(jìn)行操作的時候會出現(xiàn)沖突,另一方面保護(hù)了數(shù)據(jù)的安全性。管理員可以對教師、學(xué)生這兩種角色進(jìn)行批量刪除、指定修改以及對注冊學(xué)生和教師信息進(jìn)行審核,管理員界面如圖7、圖8所示。
4 人臉識別課堂簽到系統(tǒng)運(yùn)行過程
使用人臉識別課堂簽到系統(tǒng)需要事先將人臉信息錄入數(shù)據(jù)庫,同時將學(xué)生基本信息錄入,在數(shù)據(jù)庫中創(chuàng)建唯一學(xué)生人臉信息庫。在數(shù)據(jù)庫中每一個人臉信息唯一對應(yīng)一位學(xué)生信息。
啟動人臉識別課堂簽到系統(tǒng)對測試人臉進(jìn)行測試,如果識別成功則顯示簽到成功,系統(tǒng)將生成簽到記錄,如果沒有反應(yīng)表示識別失敗。該檢測檢驗(yàn)人臉在有無遮擋(如圖9) 、是否露出嘴巴(如圖10) 、不同識別姿勢(如圖11) 、光線較暗(如圖12) 等情況下人臉檢測情況。
在對人臉識別中可能出現(xiàn)的學(xué)生簽到情況進(jìn)行測試,當(dāng)學(xué)生在簽到過程中如果對半側(cè)臉進(jìn)行遮擋,系統(tǒng)不會檢測到人臉的存在。如果學(xué)生佩戴口罩進(jìn)行簽到,系統(tǒng)會檢測到人臉,但是無法將捕捉的人臉信息與數(shù)據(jù)庫中的人臉信息比對,從而無法完成簽到。學(xué)生正臉簽到,則會顯示簽到成功,并顯示學(xué)生簽到信息。學(xué)生在光線較弱的條件下,使用側(cè)臉進(jìn)行人臉識別簽到,發(fā)現(xiàn)仍然可以簽到成功。
5 結(jié)束語
基于OpenCV的人臉識別課堂簽到系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),通過對課題背景的研究發(fā)現(xiàn)人臉識別可運(yùn)用在課堂簽到中,近幾年來自從卷積神經(jīng)網(wǎng)絡(luò)算法的出現(xiàn),機(jī)器視覺在各個領(lǐng)域運(yùn)用廣泛并且發(fā)揮著舉足輕重的作用。本文介紹了利用OpenCV開源庫將Python、SQLite等技術(shù)結(jié)合起來實(shí)現(xiàn)了人臉識別課堂簽到系統(tǒng)的開發(fā)。
系統(tǒng)開發(fā)成功之后還需完善,后期可以將人臉識別簽到系統(tǒng)與學(xué)校的教務(wù)系統(tǒng)相連,老師可以在教務(wù)系統(tǒng)中更為方便地查看簽到記錄,還可以將學(xué)生的簽到記錄作為平時成績的重要依據(jù)。
參考文獻(xiàn):
[1] 胡娟.人臉識別技術(shù)在高校智慧校園管理中的應(yīng)用現(xiàn)狀[J].電腦知識與技術(shù),2021,17(18):6-8.
[2] 肖陽.基于OpenCV的人臉識別的算法研究與實(shí)現(xiàn)[D].武漢:湖北工業(yè)大學(xué),2018.
[3] 董佳慧,陳蕾,楊凱,等.基于OpenCV的學(xué)生人臉識別簽到系統(tǒng)[J].電腦知識與技術(shù),2021,17(4):179-180,183.
[4] 周宇.基于OpenCV-Python的圖像分割技術(shù)的設(shè)計(jì)和應(yīng)用[J].電子世界,2018(3):116-117.
[5] 童樂.基于Django開發(fā)框架的在線教育系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中師范大學(xué),2020.
[6] 韓貝.SQLite數(shù)據(jù)庫研究與應(yīng)用[D].南京:南京郵電大學(xué),2019.
[7] Eldarion Media Contact;Eldarion(R)Open Sources its DevOps Platform as a Service for Django and Python[J].Computers,Networks & Communications,2016.
【通聯(lián)編輯:謝媛媛】