版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
目錄Ⅰ基于人臉識別的在線學(xué)習(xí)專注度檢測系統(tǒng) 目錄摘要 ⅢAbstract Ⅳ1緒論 11.1研究的背景及意義 11.2國內(nèi)外研究現(xiàn)狀和最新發(fā)展趨勢 11.2.1專注度檢測的發(fā)展概況 11.2.2頭部姿態(tài)估計(jì)算法的發(fā)展概況 11.3課題的主要研究內(nèi)容 21.4設(shè)計(jì)目標(biāo)及論文結(jié)構(gòu) 31.5本章小結(jié) 32系統(tǒng)需求分析 42.1系統(tǒng)需求分析 42.1.1功能需求分析 42.1.2性能需求分析 82.2本章小結(jié) 83系統(tǒng)總體設(shè)計(jì) 93.1總體架構(gòu)設(shè)計(jì) 93.2功能模塊設(shè)計(jì) 103.3數(shù)據(jù)庫設(shè)計(jì) 113.4接口設(shè)計(jì) 143.5本章小結(jié) 154系統(tǒng)詳細(xì)設(shè)計(jì) 164.1交互設(shè)計(jì) 164.2業(yè)務(wù)設(shè)計(jì) 184.3功能模塊設(shè)計(jì) 184.4本章小結(jié) 265系統(tǒng)實(shí)現(xiàn) 275.1人臉特征提取算法實(shí)現(xiàn) 27Ⅱ5.2頭部姿態(tài)估計(jì)算法實(shí)現(xiàn) 285.3系統(tǒng)功能模塊實(shí)現(xiàn) 305.4本章小結(jié) 406系統(tǒng)測試 416.1測試計(jì)劃 416.2測試與結(jié)果分析 416.2.1功能測試 416.2.2非功能性測試 456.3本章小結(jié) 457結(jié)束語 46參考文獻(xiàn) 47附錄 48致謝 59
摘要Ⅲ系統(tǒng)摘要近年來,由于新冠疫情的影響,在線學(xué)習(xí)逐漸成為一種新的上課模式。隨著現(xiàn)代遠(yuǎn)程教育的不斷發(fā)展,越來越多的學(xué)者對于學(xué)生的課堂的專注情況進(jìn)行了研究。因此設(shè)計(jì)一個(gè)檢測在線學(xué)習(xí)的專注度檢測系統(tǒng)很有必要。技術(shù)方面,本系統(tǒng)將采用Django框架實(shí)現(xiàn)后臺管理,在線課堂的視頻識別采用人臉識別技術(shù)進(jìn)行識別和檢測。通過人臉特征提取算法來識別學(xué)生的面部特征,用這些特征判斷學(xué)生的面部。功能方面,本系統(tǒng)提供給用戶視頻識別、專注度檢測、課表查詢等功能。本系統(tǒng)采用了頭部姿態(tài)估計(jì)算法來提高對學(xué)生的專注度判斷,將通過提取得來的學(xué)生的面部特征用于頭部的姿態(tài)估計(jì)來判斷學(xué)生的專注度。綜上,在本文中將以分析學(xué)生學(xué)習(xí)的頭部姿態(tài)來判斷學(xué)生的專注情況,設(shè)計(jì)出一款在線學(xué)習(xí)的專注度檢測系統(tǒng)以便教師課后可以看到學(xué)生的專注情況,方便教師對課堂情況做出客觀的判斷與總結(jié),提高學(xué)生課堂的專注度。在線學(xué)習(xí)、專注度檢測、人臉特征提取、頭部姿態(tài)估計(jì)AbstractOnlinelearningconcentrationdetectionsystembasedonfacerecognitionAbstractInrecentyears,duetotheimpactoftheCOVID-19,onlinelearninghasgraduallybecomeanewteachingmode.Withthecontinuousdevelopmentofmoderndistanceeducation,moreandmorescholarshaveconductedresearchonstudents'classroomfocus.Therefore,itisnecessarytodesignafocusdetectionsystemfordetectingonlinelearning.Intermsoftechnology,thissystemwillusetheDjangoframeworktoachievebackedmanagement,andfacialrecognitiontechnologywillbeusedforvideorecognitionanddetectioninonlineclassrooms.Identifystudents'facialfeaturesthroughfacialfeatureextractionalgorithms,andusethesefeaturestojudgestudents'faces.Intermsoffunctionality,thissystemprovidesuserswithfunctionssuchasvideorecognition,focusdetection,andschedulequery.Thissystemadoptsaheadpostureestimationalgorithmtoimprovethejudgmentofstudents'attention.Theextractedfacialfeaturesofstudentsareusedforheadpostureestimationtodeterminestudents'attention.Insummary,inthisarticle,thefocusofstudentswillbejudgedbyanalyzingtheirlearningposture,andanonlinelearningfocusdetectionsystemwillbedesignedsothatteacherscanseetheirstudents'focusafterclass,makingitconvenientforteacherstomakeobjectivejudgmentsandsummariesoftheclassroomsituation,andimprovingstudents'focusintheclassroom.Keywords:e-learning,concentrationdetection,facefeatureextraction,headposeestimation第1章緒論1緒論在新冠疫情的影響的這幾年,在線學(xué)習(xí)逐漸成為一種新的上課模式。隨著現(xiàn)代遠(yuǎn)程教育的不斷進(jìn)步,越來越多的學(xué)者對于學(xué)生的課堂的專注情況進(jìn)行了研究。在學(xué)生學(xué)習(xí)的過程中,學(xué)生的專注情況是教師在進(jìn)行學(xué)生學(xué)習(xí)效率和教學(xué)質(zhì)量評估時(shí)的一個(gè)重要指標(biāo),但是因?yàn)橥疆惖氐倪h(yuǎn)程課堂,教師無法實(shí)時(shí)觀察學(xué)生的上課專注情況,所以本文擬設(shè)計(jì)出一款在線學(xué)習(xí)的專注度檢測系統(tǒng)以便教師課后可以看到學(xué)生的專注情況,方便教師對教學(xué)情況做出客觀的判斷與總結(jié),提高學(xué)生課堂的專注度。1.2.1專注度檢測關(guān)于專注度檢測,很多的學(xué)者進(jìn)行了相關(guān)的研究,從研究手段來看,傳統(tǒng)方法主要為調(diào)查問卷法、儀器測量法和訪談分析法REF_Ref121044936\r\h[1];新興的方法主要為計(jì)算機(jī)視覺分析法,簡單來說就是利用深度學(xué)習(xí)來分析學(xué)生學(xué)習(xí)時(shí)的表情坐姿REF_Ref121044951\r\h[2]等相關(guān)的生理數(shù)據(jù)。在國內(nèi)外對于專注度的研究中,不同的學(xué)者對其有不同的研究方向。例如國外學(xué)者Kevin&JoyceREF_Ref132756356\r\h[3]在文獻(xiàn)中將專注度定義為:學(xué)生上課時(shí)注意聽講并在學(xué)習(xí)過程中眼睛一直關(guān)注教師或者相關(guān)的學(xué)習(xí)材料。國內(nèi)學(xué)者王潔REF_Ref132756376\r\h[4]認(rèn)為課堂專注行為主要是學(xué)生在進(jìn)行某項(xiàng)學(xué)習(xí)或者作業(yè)任務(wù)時(shí),注意力集中在學(xué)習(xí)任務(wù)上,在課堂上,主要表現(xiàn)為不開小差,安靜的坐在椅子上;注意看老師、黑板等教師要求的動作。所以對于專注度本身的研究以及對專注度評價(jià)的方式研究較少,主要的評價(jià)方式局限于學(xué)生的動作與神情的主觀判斷,但是使用人臉識別技術(shù)對學(xué)生專注度進(jìn)行檢測評價(jià)REF_Ref121044994\r\h[5]的方式少之又少。綜上所述,目前專注度檢測方法還是偏向于運(yùn)用深度學(xué)習(xí)進(jìn)行計(jì)算機(jī)視覺分析,而且更偏向于軟件算法方面的研究REF_Ref132756356\r\h[6]。但是,目前的人臉識別的專注度檢測方法缺少頭部識別結(jié)合客觀環(huán)境因素的多特征的研究方法。因此這一方向是一個(gè)具有很大潛力的研究方向。1.2.2頭部姿態(tài)估計(jì)算法的發(fā)展概況2本文系統(tǒng)設(shè)計(jì)與開發(fā)通過選擇Django作為網(wǎng)站的開發(fā)框架REF_Ref121045061\r\h[11],以Python作為其主要開發(fā)語言進(jìn)行設(shè)計(jì)與實(shí)現(xiàn)。數(shù)據(jù)庫方面則是通過使用關(guān)系型數(shù)據(jù)庫MySQL作為進(jìn)行系統(tǒng)相關(guān)數(shù)據(jù)的構(gòu)建、管理與存儲。Django在一定程度上可以降低網(wǎng)站開發(fā)和維護(hù)的復(fù)雜度,通過配置較少的功能代碼即可實(shí)現(xiàn)復(fù)雜的功能。同時(shí)也通過查看其他相關(guān)使用Django框架進(jìn)行系統(tǒng)設(shè)計(jì)的論文,對其相關(guān)的知識也進(jìn)行了深度的了解與嘗試。關(guān)于人臉識別REF_Ref134199379\r\h[12]與頭部姿態(tài)估計(jì)所涉及的相關(guān)算法,主要通過Opencv+Dlib技術(shù)REF_Ref121045044\r\h[13]進(jìn)行相關(guān)的算法實(shí)現(xiàn),在之前的項(xiàng)目工程實(shí)踐時(shí)沒有過相關(guān)的經(jīng)驗(yàn)與設(shè)計(jì),并通過參考相關(guān)文獻(xiàn),對其所需的數(shù)學(xué)模型和相關(guān)技術(shù)應(yīng)用有了一定的了解。而作為學(xué)生,結(jié)合這幾年線上學(xué)習(xí)的經(jīng)驗(yàn),對本系統(tǒng)的流程有著深刻的理解與體會。本系統(tǒng)主要研究一下幾個(gè)關(guān)鍵技術(shù)和難點(diǎn):(1)為保證在線課堂上的檢測實(shí)時(shí)性,將對視頻流的處理需要將視頻進(jìn)行逐幀處理,這里就需要用到導(dǎo)入Opencv庫進(jìn)行對視頻的處理,捕獲來自默認(rèn)系統(tǒng)攝像頭的輸入信息,從攝像頭中讀取每一幀,計(jì)算攝像頭視頻捕獲流的實(shí)際每秒幀率,并顯示出來REF_Ref121045017\r\h[14]。(2)進(jìn)行專注度評分需要涉及到人臉眼部特征的提取算法和頭部姿態(tài)估計(jì)算法。其中人臉眼部特征的提取需要導(dǎo)入Dlib庫,顯示眼部關(guān)鍵點(diǎn),并在它們的幀/圖像中的位置上畫紅色的圓圈。然后列出眼部Dlib關(guān)鍵點(diǎn)的列表,之后計(jì)算眼部的平均光圈率,得到眼部閉合情況的平均分?jǐn)?shù)以便后續(xù)進(jìn)行專注度的評分。(3)本系統(tǒng)涉及到的頭部姿態(tài)估計(jì)算法,需要用到Opencv+Dlib技術(shù),其中OpenCV的SolvePnP方法計(jì)算REF_Ref134043189\r\h[15]了與相機(jī)坐標(biāo)系有關(guān)的旋轉(zhuǎn)和平移矢量REF_Ref134043189\r\h[16]。系統(tǒng)的旋轉(zhuǎn)和平移矢量,這些矢量是指三維頭部模型點(diǎn),考慮到了相機(jī)矩陣和歪曲系數(shù)。在本系統(tǒng)中還需要使用rotationMatrixToEulerAngles函數(shù)來計(jì)算歐拉角(roll,pitch,yaw)。這個(gè)函數(shù)還檢查我們是否有一個(gè)陀螺儀鎖,并且將角度從弧度轉(zhuǎn)換為度方便后續(xù)的相關(guān)計(jì)算。3在第一章中介紹本課題的研究背景、研究現(xiàn)狀、研究目的和相關(guān)技術(shù);在第二章中主要介紹本系統(tǒng)所涉及的相關(guān)算法的研究;在第三章中主要對系統(tǒng)的業(yè)務(wù)和需求進(jìn)行分析。需求分析時(shí)對功能需求和非功能需求進(jìn)行分析以及對本系統(tǒng)的可行性進(jìn)行分析。對系統(tǒng)的總體架構(gòu)以及各部分功能進(jìn)行分析;將系統(tǒng)的功能模塊進(jìn)行分析,對各模塊進(jìn)行分析;對數(shù)據(jù)庫設(shè)計(jì)進(jìn)行分析,對接口的設(shè)計(jì)進(jìn)行分析;對安全性進(jìn)行分析;在第四章中對系統(tǒng)的對象設(shè)計(jì)、交互設(shè)計(jì)和各功能模塊設(shè)計(jì)進(jìn)行分析;在第五章中進(jìn)行分模塊對系統(tǒng)的具體實(shí)現(xiàn)進(jìn)行分析和介紹;在第六章中介紹系統(tǒng)的測試計(jì)劃;對系統(tǒng)進(jìn)行測試并對結(jié)果進(jìn)行分析;在第七章中總結(jié)自己在系統(tǒng)開發(fā)過程中遇到的問題和解決方法以及對系統(tǒng)發(fā)的不足之處和需要改進(jìn)的地方。在本章中,主要介紹了本篇論文的研究背景、研究意義以及相關(guān)技術(shù)的發(fā)展概況,為本篇論文奠定了理論基礎(chǔ)。另外,也介紹了本文的設(shè)計(jì)目標(biāo)及結(jié)構(gòu),為下文的提供了清晰的脈絡(luò)。第2章系統(tǒng)需求分析2系統(tǒng)需求分析2.1系統(tǒng)需求分析2.1.1功能需求分析a、界面顯示功能。b、圖像檢測和采集管理功能。c、實(shí)時(shí)推理管理功能。d、結(jié)果分析管理功能。e、用戶登錄與權(quán)限管理功能。f、數(shù)據(jù)庫存儲功能。2.1.2性能需求分析a、準(zhǔn)確性在本系統(tǒng)中對于視頻中學(xué)生的臉部識別和頭部姿態(tài)的識別,需要保證實(shí)時(shí)檢測,對于攝像頭導(dǎo)入的視頻流,能夠?qū)崿F(xiàn)對間隔的檢測節(jié)點(diǎn)進(jìn)行行為檢測。b、響應(yīng)時(shí)間響應(yīng)時(shí)間指的是用戶在進(jìn)行交互操作的時(shí)候需要等待的時(shí)間,而用戶等待的時(shí)間越短,就代表時(shí)間性能越好,用戶通常也會根據(jù)響應(yīng)時(shí)間這個(gè)指標(biāo)來評判系統(tǒng)是否出現(xiàn)卡頓的情況。c、易用性易用性指的是用戶在使用本系統(tǒng)時(shí)候,可以簡單快捷的使用產(chǎn)品。主要包括系統(tǒng)安全、數(shù)據(jù)安全等方面,系統(tǒng)設(shè)計(jì)需要考慮一定的安全性。因此,系統(tǒng)需要將多級權(quán)限和用戶角色按實(shí)際情況進(jìn)行劃分,將操作和訪問權(quán)限按需要靈活地授予不同用戶,以有效防止非授權(quán)人員有意無意地對系統(tǒng)進(jìn)行訪問。第一,在前端頁面只顯示當(dāng)前用戶角色可訪問的操作入口;第二,針對惡意模仿接口調(diào)用的行為,在后端接口增加加強(qiáng)驗(yàn)證措施,確保系統(tǒng)安全。a、技術(shù)可行性分析本系統(tǒng)主要使用Django框架進(jìn)行設(shè)計(jì),Django是一種基于Python編寫的Web開發(fā)框架,主要采用MVC的設(shè)計(jì)模式,同時(shí)支持多種插件和自建工具包。Django在一定程度上可以降低網(wǎng)站開發(fā)和維護(hù)的復(fù)雜度,通過配置較少的功能代碼即可實(shí)現(xiàn)復(fù)雜的功能。因此其在系統(tǒng)運(yùn)行的穩(wěn)定性、執(zhí)行效率以及網(wǎng)絡(luò)安全上都是有提升的。其支持HTML5,CSS3和Javascript等技術(shù),非常適合快速開發(fā),容易上手,同時(shí)兼容各種瀏覽器,也支持移動端,社區(qū)支持度非常高。數(shù)據(jù)庫方面使用MySQL,MySQL是一個(gè)開源型數(shù)據(jù)庫管理系統(tǒng),其擁有易于操作、成本低、體積小、效率高、速度快及可移植性強(qiáng)等優(yōu)勢,系統(tǒng)可通過Navicat等數(shù)據(jù)庫可視化管理工具對其進(jìn)行管理。因此,在技術(shù)選擇上是可行的。b、經(jīng)濟(jì)可行性分析基于人臉識別的在線學(xué)習(xí)專注度檢測系統(tǒng)作為課堂專注檢測系統(tǒng)在課堂教學(xué)中處于極其重要的地位。隨著學(xué)生的地位逐步提升以及個(gè)性化學(xué)習(xí)需求的發(fā)展,教師需要不斷地通過觀察學(xué)生的學(xué)習(xí)專注狀況從而對課堂教學(xué)進(jìn)行改進(jìn)。該系統(tǒng)的開發(fā)與實(shí)現(xiàn),有利于減輕教師的負(fù)擔(dān),同時(shí)以技術(shù)化手段進(jìn)行課堂專注檢測,推動個(gè)性化學(xué)習(xí)的發(fā)展,加快現(xiàn)代遠(yuǎn)程教育的進(jìn)程。2.2本章小結(jié)本章節(jié)通過功能需求分析和性能需求分析這兩部分,來很好的闡述系統(tǒng)在功能需求、非功能需求以及各種可行性的內(nèi)容。需求分析體現(xiàn)每個(gè)功能的更深層次的分析,具體地寫出每個(gè)功能達(dá)到的效果和目的;非功能需求分析體現(xiàn)在什么情況下可以執(zhí)行本系統(tǒng)。通過這些詳細(xì)的分析,深刻領(lǐng)略到本次畢業(yè)設(shè)計(jì)的系統(tǒng)的主要角色和其功能模塊。第3章系統(tǒng)總體設(shè)計(jì)3系統(tǒng)總體設(shè)計(jì)3.1總體架構(gòu)設(shè)計(jì)在總體結(jié)構(gòu)設(shè)計(jì)中,主要包含了五個(gè)層次,分別為:用戶層、展現(xiàn)層、應(yīng)用管理層、應(yīng)用支撐層以及數(shù)據(jù)存儲層。本系統(tǒng)是基于Django架構(gòu),以python語言來設(shè)計(jì)并開發(fā)系統(tǒng),圖3.1系統(tǒng)總體架構(gòu)圖首先,用戶層位于客戶端,主要負(fù)責(zé)接收用戶以及外來信息、視頻內(nèi)容等的輸入,并將輸入的信息傳輸?shù)椒?wù)端中,與此同時(shí),用戶層也可以顯示服務(wù)器反饋回來的信息。其次,展現(xiàn)層位于客戶端,其主要為系統(tǒng)的前端展現(xiàn)界面,將系統(tǒng)的整體功能通過門戶的方式進(jìn)行展現(xiàn),用戶通過登錄可以進(jìn)行相關(guān)系統(tǒng)的應(yīng)用以及對所需的資源信息進(jìn)行瀏覽與查詢。然后是位于服務(wù)端的應(yīng)用管理層,其主要功能是對具體業(yè)務(wù)的操作,本系統(tǒng)中對于頭部姿態(tài)的識別、數(shù)據(jù)化以及對課堂專注度分?jǐn)?shù)的評定等一系列復(fù)雜邏輯都將在此完成。之后是位于服務(wù)端的應(yīng)用支撐層,其主要是對相關(guān)的應(yīng)用管理提供支持,其通過使用相關(guān)組件例如工作流、表單、數(shù)據(jù)交換等對相關(guān)應(yīng)用進(jìn)行管理與整合,從而對相關(guān)的功能模塊進(jìn)行快速地搭建。最后,數(shù)據(jù)存儲層位于服務(wù)端,其主要功能為系統(tǒng)數(shù)據(jù)的存儲與管理,在本系統(tǒng)中,我們將系統(tǒng)數(shù)據(jù)庫簡單地劃分為用戶信息庫和資源數(shù)據(jù)庫,用戶信息數(shù)據(jù)主要為注冊用戶的相關(guān)資料信息;資源數(shù)據(jù)庫則是頭部姿態(tài)的識別數(shù)據(jù)以及專注度分?jǐn)?shù)的評價(jià)數(shù)據(jù)等,對于數(shù)據(jù)的管理主要通過MySQL和Python自帶的sqlite3實(shí)現(xiàn)。3.2功能模塊設(shè)計(jì)。具體如圖圖3.2系統(tǒng)功能模塊設(shè)計(jì)圖數(shù)據(jù)獲取模塊主要是打開設(shè)備的攝像頭進(jìn)行課堂監(jiān)控。內(nèi)容識別模塊主要包括頭部姿態(tài)識別模塊和人臉識別模塊。人臉檢測模塊負(fù)責(zé)人臉的檢測和標(biāo)注;頭部姿態(tài)識別模塊基于人臉特征提取和頭部姿態(tài)估計(jì)算法,實(shí)現(xiàn)頭部姿態(tài)的識別和標(biāo)注。專注度分析模塊主要包括個(gè)人專注度分析評定模塊。專注度分析評定模塊基于眼部的閉合程度和頭部姿態(tài)兩方面的權(quán)值,來對學(xué)生行為進(jìn)行評分。后臺管理模塊主要包括用戶管理模塊、資源管理和數(shù)據(jù)管理模塊。用戶管理模塊負(fù)責(zé)用戶的各類賬戶權(quán)限的管理;資源管理模塊主要負(fù)責(zé)資源檢索、資源選擇和資源展示,其中資源主要為用戶的信息、課程和專注度得分。數(shù)據(jù)管理模塊負(fù)責(zé)各種數(shù)據(jù)的管理。3.3數(shù)據(jù)庫設(shè)計(jì)(1)概念結(jié)構(gòu)設(shè)計(jì)(ER圖)針對上述系統(tǒng)功能設(shè)計(jì),根據(jù)實(shí)體本身以及實(shí)體與實(shí)體之間的關(guān)系作出ER圖如下圖3.3.圖3.3數(shù)據(jù)庫ER圖(2)實(shí)體設(shè)計(jì)A、學(xué)生實(shí)體設(shè)計(jì)(如下圖3.4)圖3.4學(xué)生實(shí)體圖B、教師實(shí)體設(shè)計(jì)(如下圖3.5)圖3.5教師實(shí)體圖C、專業(yè)實(shí)體設(shè)計(jì)(如下圖3.6)圖3.6專業(yè)實(shí)體圖D、管理員實(shí)體設(shè)計(jì)(如下圖3.7)圖3.7管理員實(shí)體圖(3)表結(jié)構(gòu)設(shè)計(jì)A、學(xué)生表學(xué)生表的主要用途是為了學(xué)生用戶注冊登錄使用的,具體結(jié)構(gòu)如表3.4所示。表名稱為:Student,該表具體屬性包括:學(xué)生編號ID,該屬性是學(xué)生用戶身份編碼的唯一標(biāo)志;姓名,代表學(xué)生用戶的名字;性別,代表學(xué)生用戶的性別;出生日期,該學(xué)生用戶的出生日期,作為學(xué)生年齡使用;籍貫,為該學(xué)生用戶的地址;專業(yè),為該學(xué)生所屬專業(yè);班級,為學(xué)生所屬班級;密碼,為該學(xué)生用戶的登陸密碼。表的具體結(jié)構(gòu)如下圖所示:表3.4學(xué)生表信息說明字段名字段描述類型及長度是否可為空值是否為主鍵或外鍵StuId在線學(xué)生IDintNY(主鍵)Name在線學(xué)生姓名char(20)NNSex在線學(xué)生性別char(5)NNBirth_day出生日期char(10)NNNative籍貫char(20)NNMajor專業(yè)Char(20)NNClazz班級Char(20)NNPassword密碼Char(20)NNB、教師表教師表的主要用途是為了教師用戶注冊登錄使用的,具體結(jié)構(gòu)如表3.5所示。表名稱為:teacher,該表具體屬性包括:教師編號ID,該屬性是教師用戶身份編碼的唯一標(biāo)志;姓名,代表教師用戶的名字;性別,代表教師用戶的性別;出生日期,代表教師用戶的年齡;密碼,為該教師用戶的登陸密碼。表3.5教師表信息說明字段名字段描述類型及長度是否可為空值是否為主鍵或外鍵TeacherId在線老師IDintNY(主鍵)Name在線老師姓名char(20)NNSex在線老師性別char(5)NNBirth_day出生日期char(10)NNPassword密碼Char(20)NNC、專業(yè)表專業(yè)表的主要用途是為了記錄專業(yè)課程的信息和老師學(xué)生的選課關(guān)系,具體結(jié)構(gòu)如表3.6所示。表名稱為:class,該表具體屬性包括:課程ID編號,該屬性是課程編碼的唯一標(biāo)志;課程名,代表了本次課程的名稱;選課學(xué)生ID,代表了選擇這門課的學(xué)生的ID;任課老師ID,代表了這門課程發(fā)起老師和授課老師的ID;課時(shí)數(shù),代表了這門課的課程有多少課時(shí);已上課時(shí)數(shù),代表了這門課程已經(jīng)進(jìn)行的課時(shí)數(shù)。表3.6課程表信息說明字段名字段描述類型及長度是否可為空值是否為主鍵或外鍵Major_code專業(yè)代碼intNY(主鍵)majorName專業(yè)名char(20)NNClazzId班級名intNY(主鍵)Cur_id課程idintNY(主鍵)Cur_name課程名intNNCur_score專注度得分intNND、管理員表管理員表的主要用途是為了存儲管理信息,具體結(jié)構(gòu)如下表。表3.7課時(shí)表信息說明字段名字段描述類型及長度是否可為空值是否為主鍵或外鍵Id管理員IDintNY(主鍵)Passwor管理員密碼char(20)NN3.4接口設(shè)計(jì)進(jìn)行登錄用戶進(jìn)行注冊[Get]/student/major用戶進(jìn)行專業(yè)查看[Get]/student/clazz用戶可以進(jìn)行班級查看.8[Get]/student/curriculum用戶可以查看自己的課程[Update]/student/student_info用戶可以修改個(gè)人信息3.5本章小結(jié)從項(xiàng)目的總體設(shè)計(jì)出發(fā),描述了項(xiàng)目的架構(gòu)設(shè)計(jì)、功能模塊設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、接口設(shè)計(jì)和安全性設(shè)計(jì)等,通過這幾個(gè)方面更加詳細(xì)的分析了本系統(tǒng)。本章節(jié)的撰寫讓我對畢業(yè)設(shè)計(jì)有個(gè)更好的認(rèn)識,基本掌握并完成了畢業(yè)設(shè)計(jì)的更深層次的設(shè)計(jì),為下一章節(jié)的系統(tǒng)詳細(xì)設(shè)計(jì)做了很好的導(dǎo)入。第4章系統(tǒng)詳細(xì)設(shè)計(jì)4系統(tǒng)詳細(xì)設(shè)計(jì)在上一章中進(jìn)行了系統(tǒng)的總體架構(gòu)設(shè)計(jì)和數(shù)據(jù)庫的設(shè)計(jì),在本章中將對系統(tǒng)的詳細(xì)設(shè)計(jì)進(jìn)行闡述。4.1交互設(shè)計(jì)為了弄清各個(gè)對象之間的交互協(xié)作關(guān)系,下面做出本系統(tǒng)主要功能的時(shí)序圖。1)學(xué)生使用系統(tǒng)時(shí)序作為學(xué)生,可以登錄后臺管理系統(tǒng)查看自己的個(gè)人信息,查看自己專業(yè)的每周課程表,可以查看自己在該課堂上的專注分?jǐn)?shù)。學(xué)生在線上上課時(shí)需要打開視頻檢測用戶端,登錄自己的賬戶,點(diǎn)擊開始檢測。如下圖4.1所示。圖4.1學(xué)生使用系統(tǒng)時(shí)序圖2)教師使用系統(tǒng)時(shí)序作為教師,可以登錄后臺管理系統(tǒng)查看個(gè)人的信息,修改密碼,查看每天的課程,可以為學(xué)生的專注情況打分。如圖4.2所示。圖4.2教師使用系統(tǒng)時(shí)序圖3)管理員使用系統(tǒng)時(shí)序作為管理員,可以在登錄頁面選擇管理員登錄,直接進(jìn)入管理后臺,在后臺中管理員可以修改自己的密碼,可以添加教師和學(xué)生信息,可以添加專業(yè)、班級和課程。如圖4.3所示。圖4.3管理員使用系統(tǒng)時(shí)序圖4.2業(yè)務(wù)設(shè)計(jì)該系統(tǒng)實(shí)現(xiàn)了用戶輸入個(gè)人賬戶信息登錄用戶個(gè)人界面,用戶可以在該界面看到系統(tǒng)開始檢測的實(shí)時(shí)界面,基于人臉識別對視頻中的人物頭像和眼睛進(jìn)行分析處理的過程。視頻檢測區(qū)域內(nèi)可對人臉的位置、學(xué)生注意力集中的識別和標(biāo)記時(shí)間、頭部姿態(tài)估分情況等信息進(jìn)行中標(biāo)注解,視頻檢測區(qū)域內(nèi)也可對注意力集中程度分析結(jié)果進(jìn)行標(biāo)注。在業(yè)務(wù)上,系統(tǒng)可以分為三個(gè)主要的業(yè)務(wù),分別是學(xué)生登錄業(yè)務(wù)、學(xué)生視頻檢測業(yè)務(wù)和學(xué)生專注度分析評分業(yè)務(wù)。1)學(xué)生登錄業(yè)務(wù)學(xué)生登錄業(yè)務(wù)主要包含學(xué)生進(jìn)行用戶注冊模塊和登錄模塊。該業(yè)務(wù)主要利用本系統(tǒng)的登錄、注冊模塊來實(shí)現(xiàn)。2)學(xué)生行為檢測業(yè)務(wù)學(xué)生行為檢測主要是在人臉識別的基礎(chǔ)上對學(xué)生的人臉眼部特征提取和頭部姿態(tài)分別進(jìn)行分析。學(xué)生行為業(yè)務(wù)分為人臉眼部特征提取識別業(yè)務(wù)和頭部姿態(tài)估計(jì)業(yè)務(wù)。人臉特征提取模塊基于人臉特征提取算法通過dlib的68關(guān)鍵點(diǎn)進(jìn)行提取學(xué)生人臉特征,并將結(jié)果標(biāo)注到視頻中。頭部姿態(tài)估計(jì)模塊基于頭部姿態(tài)估計(jì)算法進(jìn)行推理,得到頭部姿態(tài)估計(jì)的結(jié)果,并將其標(biāo)注到視頻中,同時(shí)進(jìn)行專注度分析評價(jià)。用戶可以在視頻檢測區(qū)域看到檢測業(yè)務(wù)檢測后的結(jié)果標(biāo)注。3)專注度分析功能專注度分析功能是基于學(xué)生行為檢測業(yè)務(wù)所得到的結(jié)果,得出學(xué)生的專注度情況。課堂的專注度專注與否,我們可以通過學(xué)生的頭部姿態(tài)和學(xué)生的眼部閉合情況來進(jìn)行分析。當(dāng)學(xué)生的頭部角度偏轉(zhuǎn)過大時(shí),我們就可以認(rèn)為該學(xué)生沒有將注意力放到與學(xué)習(xí)相關(guān)的地方,而是在走神。所以,這種情況在判斷該學(xué)生的專注度程度的時(shí)候,我們就可以給他一個(gè)較低的評分,也就是認(rèn)為該生此刻是不專注的。當(dāng)學(xué)生的頭部角度偏轉(zhuǎn)較小,也就是學(xué)生的頭部是朝向電腦,我們在一定程度上就可以認(rèn)為該生是在認(rèn)真學(xué)習(xí),在專注度分析的時(shí)候,我們可以給該生的專注度評價(jià)中給一個(gè)較高的評分。4.3功能模塊設(shè)計(jì)經(jīng)過前幾章節(jié)的需求分析和系統(tǒng)設(shè)計(jì),系統(tǒng)分為了三大模塊,用戶模塊、數(shù)據(jù)獲取模塊和管理員模塊,在三大模塊功能中還分有一些子功能模塊。1)登錄注冊模塊:本模塊主要包含了系統(tǒng)用戶和管理員登錄和注冊的功能a、登錄功能:登錄功能分為系統(tǒng)用戶登錄或管理員登錄,流程如圖4.1所示:b、注冊功能:注冊功能和登錄功能類似,分為管理員注冊和系統(tǒng)用戶注冊,兩種類型的注冊都要通過正確輸入才能通過。流程圖如圖4.4所示:圖4.4登錄注冊流程圖2)數(shù)據(jù)獲取模塊:數(shù)據(jù)獲取功能主要是通過使用攝像機(jī)、相機(jī)或是監(jiān)控設(shè)備等具有視頻采集的設(shè)備,對人臉進(jìn)行數(shù)據(jù)采集與獲取,并能將其導(dǎo)入到系統(tǒng)中。3)內(nèi)容識別模塊:內(nèi)容識別功能主要分為兩個(gè)模塊:人臉特征提取模塊與頭部姿態(tài)識別模塊。a、人臉特征提取模塊:通過將監(jiān)控設(shè)備中采集到的視頻逐幀分解為圖片的形式進(jìn)行分析,繼而使用人臉識別系統(tǒng)對其進(jìn)行人臉識別,最終導(dǎo)出人臉特征數(shù)據(jù)。流程圖如下4.5。圖4.5人臉識別流程b、頭部姿態(tài)識別功能:通過將監(jiān)控設(shè)備中采集到的視頻進(jìn)行人臉檢測,通過定位其面部關(guān)鍵點(diǎn),進(jìn)而使用頭部姿態(tài)識別系統(tǒng)判斷視頻中學(xué)生的頭部姿態(tài)實(shí)時(shí)變化,將其中可識別出的頭部姿態(tài)角進(jìn)行仰俯角與偏轉(zhuǎn)角的記錄,而無法識別的頭部姿態(tài)情況則記為無效動作進(jìn)行去除,通過逐幀記錄頭部姿態(tài)情況并將其轉(zhuǎn)化為實(shí)時(shí)數(shù)據(jù),最后將數(shù)據(jù)結(jié)果導(dǎo)入專注度評價(jià)系統(tǒng)中進(jìn)行專注度的評價(jià)。具體步驟如圖4.6.21圖4.6頭部姿態(tài)識別流程c、相關(guān)算法(頭部姿態(tài)估計(jì)算法):基于頭部姿態(tài)估計(jì)原理利用視頻中得到的圖片信息來獲取頭部姿態(tài)角,在3D空間中,表示物體的旋轉(zhuǎn)可以由三個(gè)歐拉角來表示如圖所示。分別為pitch圍繞X軸旋轉(zhuǎn)),yaw(圍繞Y軸旋轉(zhuǎn))和roll(圍繞Z軸旋轉(zhuǎn)),分別學(xué)名俯仰角、偏航角和滾轉(zhuǎn)角,通俗講就是抬頭、揺頭和轉(zhuǎn)頭。頭部歐拉角示意圖22為實(shí)現(xiàn)頭部姿態(tài)估計(jì)算法一般步驟為如圖4.7所示:先是利用Dlib模型中的人臉特征點(diǎn)檢測得到人臉的特征點(diǎn)位置,使用numpy數(shù)組將Dlib檢測到的頭部68個(gè)坐標(biāo)點(diǎn)傳入數(shù)組中,將此用作是2D人臉特征點(diǎn)組,然后檢測出3D人臉的相關(guān)坐標(biāo)點(diǎn),將其同樣以數(shù)組的形式呈現(xiàn),然后使用SolvePnP方法計(jì)算2D坐標(biāo)與3D坐標(biāo)的相對旋轉(zhuǎn)矢量和平移向量,將這些數(shù)據(jù)用于指定函數(shù)計(jì)算中旋轉(zhuǎn)矩陣,進(jìn)而得出偏航、俯仰和滾動的歐拉角。圖4.7頭部姿態(tài)估計(jì)算法步驟4)專注度分析模塊:專注度分析功能為個(gè)人專注度評定模塊通過選取相應(yīng)的評估對象(學(xué)生個(gè)體),獲取相應(yīng)評估對象的頭部姿態(tài)結(jié)果進(jìn)行集成與整理,并進(jìn)行相關(guān)的數(shù)據(jù)分析,獲取評估對象的專注度分?jǐn)?shù)情況。同時(shí),通過對采集時(shí)間段的控制,可以得到學(xué)生在每段時(shí)間課堂專注度情況。最后,將評估對象的專注度分?jǐn)?shù)以表格或折線圖的形式呈現(xiàn)。在這個(gè)模塊中,將使用上一模塊中獲得的歐拉角數(shù)據(jù),分別得出俯仰角、偏航角和滾動角數(shù)據(jù),之后設(shè)置姿勢累計(jì)計(jì)數(shù)器檢測俯仰角和偏航角的數(shù)據(jù)是否超過設(shè)定的閾值,如果超過閾值,系統(tǒng)則會判定學(xué)生走神,同時(shí)計(jì)數(shù)器則會累計(jì)并計(jì)算累計(jì)分?jǐn)?shù),如果在閾值的范圍之內(nèi),系統(tǒng)則會判定學(xué)生正在專注,此時(shí)計(jì)算器不會累計(jì)分?jǐn)?shù)。具體步驟如圖4.8。圖4.8個(gè)人專注度評定流程235)后臺管理模塊:后臺管理分為用戶管理、資源管理和數(shù)據(jù)管理。用戶管理可以對本系統(tǒng)中的三類用戶,即教師、學(xué)生與管理員進(jìn)行權(quán)限、信息等管理,便于每一類用戶可以查看到所需要查看的相關(guān)信息資源,三者互不干擾且互相關(guān)聯(lián);資源管理模塊主要負(fù)責(zé)資源檢索、資源選擇和資源展示,其中資源主要為用戶的信息、課程和專注度得分;數(shù)據(jù)管理則是將用戶數(shù)據(jù)、人臉數(shù)據(jù)、頭部姿態(tài)數(shù)據(jù)以及課堂專注度數(shù)據(jù)內(nèi)容進(jìn)行整理與存儲,便于服務(wù)器的選取與調(diào)用。a、教師和學(xué)生登錄流程在用戶管理模塊中,教師和學(xué)生可以選擇自己的身份進(jìn)行登錄,如果是教師身份則登錄后顯示教師信息界面;如果是學(xué)生身份,登錄后則顯示學(xué)生信息界面,流程圖如4.9所示。圖4.9用戶管理流程圖24b、資源檢索流程用戶在注冊登錄過后,進(jìn)入系統(tǒng)的資源選擇界面,在這里用戶可以查看自己的個(gè)人信息,如果是學(xué)生則可以查看自己的課程、專業(yè)、班級和課堂得分情況。如果是教師則可以查看自己的課程,也可以修改學(xué)生在該課程上的得分情況。流程如圖4.10所示。圖4.10資源管理流程25c、數(shù)據(jù)管理流程管理在登錄過后,進(jìn)入管理員頁面,在這里管理員可以對所有的專業(yè)、課程、班級、教師信息和學(xué)生信息等進(jìn)行增加修改,然后系統(tǒng)會鏈接數(shù)據(jù)庫對數(shù)據(jù)進(jìn)行更新存儲。流程如圖4.11所示。圖4.11數(shù)據(jù)管理流程圖第五章系統(tǒng)詳細(xì)設(shè)計(jì)第五章系統(tǒng)詳細(xì)設(shè)計(jì)4.4本章小結(jié)通過本章節(jié)對系統(tǒng)的詳細(xì)設(shè)計(jì)的講解,對系統(tǒng)所有的對象進(jìn)行了具體的描述,同時(shí)對系統(tǒng)運(yùn)行的相關(guān)流程進(jìn)行詳細(xì)的展示。這樣保證系統(tǒng)從對象到交互,功能到算法能夠完好的實(shí)現(xiàn)。第5章系統(tǒng)實(shí)現(xiàn)5系統(tǒng)實(shí)現(xiàn)本章將對已開發(fā)完的系統(tǒng)功能的實(shí)現(xiàn)進(jìn)行詳細(xì)的描述,并輔以相關(guān)算法及頁面實(shí)現(xiàn)的相關(guān)代碼。.1人臉特征提取算法實(shí)現(xiàn)defget_face_area(face):
returnabs((face.left()-face.right())*(face.bottom()-face.top()))
defshow_keypoints(keypoints,frame):
forninrange(0,68):
x=keypoints.part(n).x
y=keypoints.part(n).y
cv2.circle(frame,(x,y),1,(0,0,255),-1)
returnframedefmidpoint(p1,p2):
returnnp.array([int((p1.x+p2.x)/2),int((p1.y+p2.y)/2)])
defget_array_keypoints(landmarks,dtype="int",verbose:bool=False):
points_array=np.zeros((68,2),dtype=dtype)
foriinrange(0,68):
points_array[i]=(landmarks.part(i).x,landmarks.part(i).y)
ifverbose:
print(points_array)
returnpoints_array(3)隨后檢查一個(gè)矩陣是否是旋轉(zhuǎn)矩陣defisRotationMatrix(R):
Rt=np.transpose(R)
shouldBeIdentity=np.dot(Rt,R)
I=np.identity(3,dtype=R.dtype)
n=np.linalg.norm(I-shouldBeIdentity)
returnn<1e-6
defrotationMatrixToEulerAngles(R):
assert(isRotationMatrix(R))
sy=np.sqrt(R[0,0]*R[0,0]+R[1,0]*R[1,0])
singular=sy<1e-6
ifnotsingular:#checkifit'sagymballocksituation
x=np.arctan2(R[2,1],R[2,2])
y=np.arctan2(-R[2,0],sy)
z=np.arctan2(R[1,0],R[0,0])
else:#ifingymballock,usedifferentformulaforyaw,pitchroll
x=np.arctan2(-R[1,2],R[1,1])
y=np.arctan2(-R[2,0],sy)
z=0
returnnp.array([x,y,z])(4)給出一個(gè)框架,框架中的一個(gè)點(diǎn),投影點(diǎn)陣列,繪制三維正交軸。如果通過的話,還可以打印出滾動、俯仰和偏航的信息,相關(guān)代碼如下:defdraw_pose_info(frame,img_point,point_proj,roll=None,pitch=None,yaw=None):
frame=cv2.line(frame,img_point,tuple(
point_proj[0].ravel().astype(int)),(255,0,0),3)
frame=cv2.line(frame,img_point,tuple(
point_proj[1].ravel().astype(int)),(0,255,0),3)
frame=cv2.line(frame,img_point,tuple(
point_proj[2].ravel().astype(int)),(0,0,255),3)
returnframe頭部姿態(tài)估計(jì),實(shí)質(zhì)上是利用計(jì)算機(jī)視覺等技術(shù)來對頭部特征的采集和識別,進(jìn)而分析得到頭部姿態(tài)的一個(gè)估計(jì)值。由于檢測度量方法上的差異,不同的方法有各種不同的限制和優(yōu)點(diǎn)。本文將使用基于檢測器列陣方法實(shí)現(xiàn)。頭部姿勢估計(jì)器類,包含計(jì)算頭部三個(gè)歐拉角的get_pose方法。它使用圖像/幀、dlib檢測到的頭部地標(biāo)和參數(shù)。相關(guān)實(shí)現(xiàn)代碼如下:def__init__(self,camera_matrix=None,dist_coeffs=None,show_axis:bool=False):
self.show_axis=show_axis
self.camera_matrix=camera_matrix
self.dist_coeffs=dist_coeffsdefget_pose(self,frame,landmarks):
self.keypoints=landmarks#使用Dlib獲得的68關(guān)鍵點(diǎn)
self.frame=frame#opencvimagearray
self.axis=np.float32([[200,0,0],
[0,200,0],
[0,0,200]])
#指定3個(gè)投影軸距機(jī)頭的長度的數(shù)組
ifself.camera_matrixisNone:
self.size=frame.shape
self.focal_length=self.size[1]
self.center=(self.size[1]/2,self.size[0]/2)
self.camera_matrix=np.array(
[[self.focal_length,0,self.center[0]],
[0,self.focal_length,self.center[1]],
[0,0,1]],dtype="double"
)
ifself.dist_coeffsisNone:#如果沒有給出畸變系數(shù),則假設(shè)沒有透鏡畸變self.dist_coeffs=np.zeros((4,1))
self.model_points=np.array([#3D頭部模型世界空間點(diǎn)
(0.0,0.0,0.0),#鼻尖
(0.0,-330.0,-65.0),#下巴
(-225.0,170.0,-135.0),#左眼左角
(225.0,170.0,-135.0),#右眼右角
(-150.0,-150.0,-125.0),#左嘴角
(150.0,-150.0,-125.0)#右嘴角
])
self.image_points=np.array([
(landmarks.part(30).x,landmarks.part(30).y),
(landmarks.part(8).x,landmarks.part(8).y),
(landmarks.part(36).x,landmarks.part(36).y),
(landmarks.part(45).x,landmarks.part(45).y),
(landmarks.part(48).x,landmarks.part(48).y),
(landmarks.part(54).x,landmarks.part(54).y)
],dtype="double")
返回用戶信息,通過returnrender(request,’login.html’)。圖5.1系統(tǒng)登錄界面defregister(request):
ifrequest.method=='GET':
returnrender(request,'register.html')
ifrequest.method=='POST':
username=request.POST.get('username',None)
password=request.POST.get('password',None)
password_again=request.POST.get('password-again',None)
typ=request.POST.get('cus_typ',None)
ifnotusernameornotpasswordornotpassword_againornottyp:
returnrender(request,'register.html',context={'messages':['提交的信息不完整']})ifpassword_again!=password:
returnrender(request,'register.html',context={'messages':['兩次輸入的密碼不一致']})
ifAccount.objects.filter(username=username).exists():
returnrender(request,'register.html',context={'messages':['用戶已存在']})
Account(username=username,password=make_password(password),customer_type=typ).save()
returnredirect('/login')圖5.2用戶注冊圖數(shù)據(jù)獲取功能主要是通過使用攝像機(jī)、相機(jī)或是監(jiān)控設(shè)備等具有視頻采集的設(shè)備,對人臉進(jìn)行數(shù)據(jù)采集與獲取,并能將其導(dǎo)入到系統(tǒng)中。該模塊中,通過importcv2庫,調(diào)用攝像頭,通過importdlib庫,采集人臉數(shù)據(jù),人臉數(shù)據(jù)采集68關(guān)鍵點(diǎn)圖如下圖5.3所示,importcv2
importdlib
importnumpyasnp
Detector=dlib.get_frontal_face_detector()
Predictor=dlib.shape_predictor(
"shape_predictor_68_face_landmarks.dat")內(nèi)容識別功能主要分為兩個(gè)模塊:人臉特征提取模塊與頭部姿態(tài)識別模塊。該模塊為本系統(tǒng)的特色模塊,界面如圖5.4所示。A、人臉特征提取模塊:通過importcv2庫,設(shè)置self.keypionts將監(jiān)控設(shè)備中采集到的視頻逐幀分解為圖片的形式進(jìn)行儲存臉部的68個(gè)dlib關(guān)鍵點(diǎn),最終導(dǎo)出人臉特征數(shù)據(jù)。該模塊主要是對用戶的眼部特征進(jìn)行提取,相關(guān)業(yè)務(wù)代碼如下:defshow_eye_keypoints(self,color_frame,landmarks):self.keypoints=landmarks
forninrange(36,48):
x=self.keypoints.part(n).x
y=self.keypoints.part(n).y
cv2.circle(color_frame,(x,y),1,(0,0,255),-1)
returnB、頭部姿態(tài)識別功能:通過camera_matrix:numpy數(shù)組用來捕捉圖像/幀的相機(jī)矩陣。通過dist_coeffs:numpy數(shù)組用來捕捉圖像/畫面的相機(jī)的失真系數(shù)。通過show_axis:bool如果設(shè)置為True,則顯示從鼻子關(guān)鍵點(diǎn)和臉部地標(biāo)點(diǎn)投射出來的頭部姿勢軸線姿勢估計(jì)所使用的頭部姿勢軸(默認(rèn)為"假"),使用頭部姿勢估計(jì)器對象實(shí)例化的屬性估計(jì)頭部姿勢,def__init__(self,camera_matrix=None,dist_coeffs=None,show_axis:bool=False):
self.show_axis=show_axis
self.camera_matrix=camera_matrix
self.dist_coeffs=dist_coeffs
defget_pose(self,frame,landmarks):
self.keypoints=landmarks#dlib68landmarks
self.frame=frame#opencvimagearray
self.axis=np.float32([[200,0,0],
[0,200,0],
[0,0,200]])
ifself.camera_matrixisNone:
self.size=frame.shape
self.focal_length=self.size[1]
self.center=(self.size[1]/2,self.size[0]/2)
self.camera_matrix=np.array(
[[self.focal_length,0,self.center[0]],
[0,self.focal_length,self.center[1]],
[0,0,1]],dtype="double"
)
ifself.dist_coeffsisNone:self.dist_coeffs=np.zeros((4,1))
圖5.4內(nèi)容識別界面def__init__(self,capture_fps:int,ear_tresh,gaze_tresh,perclos_tresh=0.2,ear_time_tresh=4.0,pitch_tresh=35,
yaw_tresh=30,gaze_time_tresh=4.0,roll_tresh=None,pose_time_tresh=4.0,verbose=False):
defeval_scores(self,ear_score,gaze_score,head_roll,head_pitch,head_yaw):
#instantiatingstateofattentionvariables
asleep=False
looking_away=False
distracted=False
ifself.ear_counter>=self.ear_act_tresh:#檢查閉眼的累積計(jì)數(shù)器是否超過了閾值
asleep=True
ifself.gaze_counter>=self.gaze_act_tresh:#檢查凝視累計(jì)計(jì)數(shù)器是否超過了閾值
looking_away=True
ifself.pose_counter>=self.pose_act_tresh:#檢查姿勢累積計(jì)數(shù)器是否超過了閾值
distracted=True
returntired,perclos_score圖5.5專注度分析界面35圖5.6學(xué)生界面圖36圖5.7教師界面圖教師界面defteacher_info(request):user_id=request.session.get('user_id')req_typ=request.GET.get('typ')defteacher_time_table(request):user_id=request.session.get('user_id')ifnotTeacherInfo.objects.filter(user_id=user_id).exists():returnredirect('teacher_info')defteacher_input_score(request):ifrequest.method=='POST':data=request.POST.dict()(2)資源管理模塊:主要包括專業(yè)信息、班級信息、課程信息和專注度得分信息。A、專業(yè)信息界面如圖5.8所示。37圖5.8專業(yè)界面圖管理員可以在該界面添加所有的專業(yè)信息,管理員通過管理員賬號密碼登錄到管理員界面之后,點(diǎn)擊添加專業(yè),系統(tǒng)發(fā)送request請求,請求成功后打開添加專業(yè)界面,通過Post/add_major接口添加專業(yè)信息,然后系統(tǒng)在數(shù)據(jù)庫中更新專業(yè)數(shù)據(jù)。相關(guān)代碼如下:defadd_major(request):ifrequest.method=='GET':returnrender(request,'add_major.html',context={'title':'新增專業(yè)'})else:params=request.POST.dict()forpinparams.values():ifnotp:returnrender(request,'add_major.html',context={'messages':['提交的數(shù)據(jù)不全'],'title':'新增專業(yè)'})try:Major(major_code=params['major_code'],name=params['name']).save()returnrender(request,'add_major.html',context={'messages':['新建專業(yè)成功'],'title':'新增專業(yè)'})exceptExceptionase:returnrender(request,'add_major.html',context={'messages':['專業(yè)已存在,創(chuàng)建失敗'],'title':'新增專業(yè)'})38B、班級界面如圖5.9所示。圖5.9班級界面圖管理員可以在該界面添加所有的班級信息,管理員通過管理員賬號密碼登錄到管理員界面之后,點(diǎn)擊添加班級,系統(tǒng)發(fā)送request請求,請求成功后打開添加班級界面,通過Post/add_clazz接口添加專業(yè)信息,然后系統(tǒng)在數(shù)據(jù)庫中更新班級數(shù)據(jù)。相關(guān)代碼如下:defadd_clazz(request):all_majors=Major.objects.all()ifrequest.method=='GET':returnrender(request,'add_clazz.html',context={'majors':all_majors,'title':'新增班級'})else:params=request.POST.dict()forpinparams.values():ifnotp:returnrender(request,'add_clazz.html',context={'messages':['提交的數(shù)據(jù)不全'],'majors':all_majors,'title':'新增班級'})39C、課程界面如圖5.10所示。圖5.10課程信息界面圖管理員可以在該界面添加所有的課程信息,管理員通過管理員賬號密碼登錄到管理員界面之后,點(diǎn)擊添加課程,系統(tǒng)發(fā)送request請求,請求成功后打開添加課程界面,通過Post/add_curriculum接口添加專業(yè)信息,然后系統(tǒng)在數(shù)據(jù)庫中更新課程數(shù)據(jù)。相關(guān)代碼如下:defadd_curriculum(request):all_teachers=TeacherInfo.objects.all()ifrequest.method=='GET':returnrender(request,'add_curriculum.html',context={'teachers':all_teachers,'title':'新增課程'})elifrequest.method=='POST':params=request.POST.dict()40本章主要通過對系統(tǒng)頁面的展示,將前兩部分對于功能的闡述結(jié)合起來,展現(xiàn)各個(gè)功能模塊以及各個(gè)功能模塊下設(shè)計(jì)的功能頁面,也是通過這章的呈現(xiàn),讓整個(gè)系統(tǒng)的完整度更加高,為下一章系統(tǒng)的測試提供了條件,而系統(tǒng)測試的最終目的就是為了讓系統(tǒng)更好的交付完成。
第6章系統(tǒng)測試416系統(tǒng)測試具體的代碼實(shí)現(xiàn)以及界面設(shè)計(jì)。本章采用黑盒測試的形式對系統(tǒng)進(jìn)行相關(guān)的測試。.2.1功能測試stuserlogin無1用戶賬號和錄按鈕1232用戶賬號和123423號和錯誤密鈕4admin測試userregister成功并無12341密碼,確誤的確認(rèn)密碼789,誤,請重新輸入”432密碼,確確的確認(rèn)密碼1234,,useraddUser功添加12useraddMajor功添加144續(xù)表6.42useraddcurriculum功添加12useraddclazz功添加1245第七章結(jié)束語467結(jié)束語在新興技術(shù)的浪潮沖擊下,在教學(xué)中使用人工智能來輔助教學(xué)已經(jīng)成為了一種趨勢,尤其是關(guān)鍵的教學(xué)評價(jià)方面。但是利用人臉識別等技術(shù)來綜合判斷學(xué)生專注度方面,國內(nèi)外研究較少。在疫情大爆發(fā),越來越多的學(xué)校和機(jī)構(gòu)開展了線上課堂,而針對線上課堂的學(xué)生專注度檢測方法卻少之又少。一種能在在線課堂評判學(xué)生專注度的方法,對于教學(xué)工作者和學(xué)生至關(guān)重要。為此本文設(shè)計(jì)了基于人臉識別的在線學(xué)習(xí)專注度檢測系統(tǒng),來方便教師的教學(xué)。本系統(tǒng)實(shí)現(xiàn)對學(xué)生學(xué)習(xí)時(shí)的專注度進(jìn)行實(shí)時(shí)的檢測反饋;運(yùn)用人臉識別技術(shù)上傳人臉數(shù)據(jù);運(yùn)用特征值提取算法提取人臉特征信息;運(yùn)用目標(biāo)檢測算法檢測學(xué)生頭部姿態(tài)用以代表學(xué)生的專注情況,后臺提供實(shí)時(shí)檢測數(shù)據(jù)反饋;最終達(dá)到對學(xué)生的專注度的檢測的目的。本系統(tǒng)主要包括:用戶模塊、識別模塊、記錄模塊;基于人臉特征值提取算法,目標(biāo)檢測算法進(jìn)行人臉關(guān)鍵點(diǎn)識別和人臉姿態(tài)估計(jì),使用Django開發(fā)網(wǎng)站實(shí)時(shí)監(jiān)控學(xué)生姿態(tài),識別學(xué)生的人臉姿態(tài)進(jìn)行專注度檢測。對于本系統(tǒng),仍然有許多不完善的地方,比如操作界面的交互應(yīng)當(dāng)更為便捷;結(jié)果的輸出的形式是否可以更加直觀;當(dāng)學(xué)生的專注度較低時(shí),系統(tǒng)應(yīng)該給出聲音提示等,這些都是需要在未來可以完善的方面。參考文獻(xiàn)參考文獻(xiàn)張舒藝.基于物聯(lián)網(wǎng)技術(shù)的課堂注意力測評工具開發(fā)[D].華東師范大學(xué).2018.劉法.教室環(huán)境中學(xué)生頭部姿態(tài)估計(jì)與表情識別技術(shù)研究[D].南京航空航天大學(xué),2021.KevinCallahan,JoyceA.Rademacher.UsingSelf-managementStrategiestoinincreasetheOn-TaskBehaviorofaStudentwithAutism[J].JournalofPositiveBehaviorInterventions,1999,1(2):117-122.王潔.“自我管理”策略對提升自閉癥兒童課堂專注行為的成效研究[D].重慶:重慶師范大學(xué),2014.孫亞麗.基于人臉檢測的小學(xué)生課堂專注度研究[D].黃石:湖北師范大學(xué),2016.左國才,王海東,吳小平等.基于深度學(xué)習(xí)的人臉識別技術(shù)在學(xué)習(xí)效果評價(jià)中的應(yīng)用研究[J].智能計(jì)算機(jī)與應(yīng)用,2019,9(03):126-128.陶溢.基于面部表情和頭部姿態(tài)識別的課堂專注度分析與評價(jià)研究[D].云南師范大學(xué),2020.KongWeiyi,YouZhisheng,LvXuebin.3DfacerecognitionalgorithmbasedondeepLaplacianpyramidunderthenormalizationofepidemiccontrol[J].ComputerCommunications,2023,199.廖冬杰.基于Dlib和變種Transformer的哈欠檢測方法[J].汽車技術(shù):1-7.韓俊杰,駱開慶,邱健,劉冬梅,彭力,韓鵬.基于雙目相機(jī)的眼動儀頭部姿態(tài)估計(jì)方法[J].激光與光電子學(xué)進(jìn)展,2021,58(14):310-317.吳春梅,蔣林利,余榮川.基于Python和Django框架的二級學(xué)院資料室圖書管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].無線互聯(lián)科技,2020,17(16):67-70.陳佳佳,邱曉榮,熊宇昊,段莉華.基于Python的人臉識別技術(shù)研究[J].電腦知識與技術(shù),2023,19(08):34-36+39.李洋,郭紅利,管樹林,萬莉,鄒楊.OpenCV+Dlib技術(shù)在課堂教學(xué)中的應(yīng)用與研究[J].電腦知識與技術(shù),2020,16(19):159-1623-225.李慧穎,李薇,邢艷芳,何光威.基于TensorFlow的人臉識別系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)時(shí)代,2020,(09):61-63.ShahSayyedMudassar,SunZhaoyun,ZamanKhalid,HussainAltaf,ShoaibMuhammad,PeiLili.ADriverGazeEstimationMethodBasedonDeepLearning[J].Sensors,2022,22(10).殷樂章.在線課堂學(xué)生專注度檢測系統(tǒng)的研究與實(shí)現(xiàn)[D].中南財(cái)經(jīng)政法大學(xué),2021.附錄附錄附錄A專注度評分代碼:classAttentionScorer:def__init__(self,capture_fps:int,ear_tresh,gaze_tresh,perclos_tresh=0.2,ear_time_tresh=4.0,pitch_tresh=35,yaw_tresh=30,gaze_time_tresh=4.0,roll_tresh=None,pose_time_tresh=4.0,verbose=False):self.fps=capture_fpsself.delta_time_frame=(1.0/capture_fps)self.prev_time=0self.perclos_time_period=60self.perclos_tresh=perclos_treshself.ear_tresh=ear_treshself.ear_act_tresh=ear_time_tresh/self.delta_time_frameself.ear_counter=0self.eye_closure_counter=0self.gaze_tresh=gaze_treshself.gaze_act_tresh=gaze_time_tresh/self.delta_time_frameself.gaze_counter=0self.roll_tresh=roll_treshself.pitch_tresh=pitch_treshself.yaw_tresh=yaw_treshself.pose_act_tresh=pose_time_tresh/self.delta_time_frameself.pose_counter=0self.verbose=verbosedefeval_scores(self,ear_score,gaze_score,head_roll,head_pitch,head_yaw):asleep=Falselooking_away=Falsedistracted=Falseifself.ear_counter>=self.ear_act_tresh:asleep=Trueifself.gaze_counter>=self.gaze_act_tresh:looking_away=Trueifself.pose_counter>=self.pose_act_tresh:distracted=Trueif(ear_scoreisnotNone)and(ear_score<=self.ear_tresh):ifnotasleep:self.ear_counter+=1elifself.ear_counter>0:self.ear_counter-=1if(gaze_scoreisnotNone)and(gaze_score>=self.gaze_tresh):ifnotlooking_away:self.gaze_counter+=1elifself.gaze_counter>0:self.gaze_counter-=1if((self.roll_treshisnotNoneandhead_rollisnotNoneandhead_roll>self.roll_tresh)or(head_pitchisnotNoneandabs(head_pitch)>self.pitch_tresh)or(head_yawisnotNoneandabs(head_yaw)>self.yaw_tresh)):ifnotdistracted:self.pose_counter+=1elifself.pose_counter>0:self.pose_counter-=1ifself.verbose:#printadditionalinfoifverboseisTrue)print(f"是否閉眼:{asleep}\t眼睛正在其他地方:{looking_away}\t是否分心:{distracted}")returnasleep,looking_away,distracteddefget_PERCLOS(self,ear_score):
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年興業(yè)銀行珠海分行社會招聘備考題庫及完整答案詳解1套
- 2025-2026北京化工大學(xué)第一批次教師及研究生輔導(dǎo)員招聘31人備考考試試題及答案解析
- 2025廣西壯族自治區(qū)中醫(yī)藥研究院招聘高層次人才5人模擬筆試試題及答案解析
- 2026年上海普陀區(qū)教育系統(tǒng)公開招聘391名教師模擬筆試試題及答案解析
- 2025年甘肅省平?jīng)鍪徐`臺縣人民法院招聘參考筆試題庫及答案解析
- 2025下半年四川內(nèi)江市部分市本級事業(yè)單位選調(diào)工作人員14人模擬筆試試題及答案解析
- 2025廣西柳州三江縣人社局第十次招聘城鎮(zhèn)公益性崗位人員1人備考考試試題及答案解析
- 2025中國建筑材料工業(yè)地質(zhì)勘查中心福建總隊(duì)招聘注冊巖土工程師2人備考考試題庫及答案解析
- 2025廣西南寧市青秀區(qū)文化廣電體育和旅游局招聘2人備考筆試題庫及答案解析
- 2025年大連市公安局面向社會公開招聘警務(wù)輔助人員348人備考筆試題庫及答案解析
- 麻醉科術(shù)前評估指南
- 2025至2030中國高拍儀行業(yè)項(xiàng)目調(diào)研及市場前景預(yù)測評估報(bào)告
- 2025中國繼續(xù)教育行業(yè)市場發(fā)展現(xiàn)狀與投資策略報(bào)告
- (21)普通高中西班牙語課程標(biāo)準(zhǔn)日常修訂版(2017年版2025年修訂)
- 2025年4月自考習(xí)概部分試題及答案
- 華為培訓(xùn)體系介紹
- 益生元管理師高級考試試卷與答案
- 特種作業(yè)安全工作培訓(xùn)課件
- 住宅電梯更新項(xiàng)目可行性研究報(bào)告
- 廣東省廣州市天河區(qū)2023-2024學(xué)年七年級上學(xué)期期末道德與法治試題(含答案)
- 2024-2025學(xué)年塔里木職業(yè)技術(shù)學(xué)院單招《英語》考前沖刺練習(xí)試題附答案詳解【培優(yōu)B卷】
評論
0/150
提交評論