閥門網(wǎng)站建設(shè)國色天香站長工具
本研究提出了一種基于YOLOv8深度學(xué)習(xí)的智慧課堂學(xué)生專注度檢測系統(tǒng),旨在實(shí)現(xiàn)對(duì)課堂中學(xué)生專注度的實(shí)時(shí)分析與評(píng)估。隨著智慧教育的快速發(fā)展,學(xué)生的課堂表現(xiàn)和專注度成為評(píng)估學(xué)習(xí)效果的重要因素之一。然而,傳統(tǒng)的專注度評(píng)估方法往往依賴于主觀觀察或通過問卷調(diào)查收集信息,存在耗時(shí)、效率低下、主觀性強(qiáng)等問題。為了解決這些問題,本文設(shè)計(jì)了一種基于YOLOv8目標(biāo)檢測算法的智能系統(tǒng),結(jié)合深度學(xué)習(xí)技術(shù),對(duì)學(xué)生的面部表情、姿態(tài)、眼動(dòng)等多種行為特征進(jìn)行自動(dòng)檢測和分類,從而對(duì)其專注度進(jìn)行科學(xué)量化。
該系統(tǒng)采用PyQt5作為用戶界面,界面簡潔直觀,用戶能夠通過該平臺(tái)實(shí)時(shí)監(jiān)控課堂中的學(xué)生表現(xiàn)。通過自定義的數(shù)據(jù)集,該系統(tǒng)將學(xué)生的專注度劃分為七個(gè)等級(jí),分別是:中等專注、較高專注、高度專注、沒有專注、低專注、中等偏低專注和較低專注。每個(gè)專注度等級(jí)的劃分基于學(xué)生的多模態(tài)行為特征,尤其是面部表情變化、頭部運(yùn)動(dòng)和眼神專注方向等,深度學(xué)習(xí)模型通過大量數(shù)據(jù)的訓(xùn)練和優(yōu)化,能夠精準(zhǔn)識(shí)別這些特征并做出判斷。
在系統(tǒng)的實(shí)現(xiàn)過程中,本文詳細(xì)描述了數(shù)據(jù)采集、標(biāo)注以及模型訓(xùn)練的全過程。使用的YOLOv8深度學(xué)習(xí)模型因其強(qiáng)大的檢測精度和實(shí)時(shí)性,能夠快速響應(yīng)并處理多名學(xué)生的專注度信息。此外,系統(tǒng)還提供了結(jié)果的可視化功能,教師可以通過界面查看專注度分類結(jié)果,及時(shí)了解課堂中每個(gè)學(xué)生的專注狀態(tài)。系統(tǒng)還支持對(duì)歷史數(shù)據(jù)的統(tǒng)計(jì)和分析,幫助教育工作者從更長遠(yuǎn)的時(shí)間尺度上觀察學(xué)生的專注度變化,為教學(xué)改進(jìn)提供數(shù)據(jù)支持。
實(shí)驗(yàn)部分,本研究在多個(gè)真實(shí)課堂場景中對(duì)系統(tǒng)進(jìn)行了驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,系統(tǒng)在準(zhǔn)確性、魯棒性和實(shí)時(shí)性方面表現(xiàn)優(yōu)異,能夠有效應(yīng)對(duì)不同照明條件、學(xué)生面部遮擋等復(fù)雜場景。與現(xiàn)有方法相比,該系統(tǒng)不僅提高了檢測效率,還減少了教師的負(fù)擔(dān),進(jìn)一步增強(qiáng)了課堂管理的智能化水平。該系統(tǒng)的應(yīng)用前景廣泛,不僅可用于課堂教學(xué),還可以在遠(yuǎn)程教育、個(gè)性化學(xué)習(xí)管理等領(lǐng)域發(fā)揮重要作用。
本文所提出的基于YOLOv8的智慧課堂學(xué)生專注度檢測系統(tǒng),為教育領(lǐng)域的智能化管理提供了一種全新的解決方案。未來,隨著數(shù)據(jù)集的進(jìn)一步豐富和模型性能的持續(xù)優(yōu)化,該系統(tǒng)有望在更大范圍內(nèi)推廣應(yīng)用,推動(dòng)智慧教育的深度發(fā)展。
算法流程
項(xiàng)目數(shù)據(jù)
通過搜集關(guān)于數(shù)據(jù)集為各種各樣的學(xué)生專注度相關(guān)圖像,并使用Labelimg標(biāo)注工具對(duì)每張圖片進(jìn)行標(biāo)注,分7檢測類別,分別是’中等專注’,’較高專注’,’高度專注’,’沒有專注’,’低專注’,’中等偏低專注’,’較低專注’。
目標(biāo)檢測標(biāo)注工具
(1)labelimg:開源的圖像標(biāo)注工具,標(biāo)簽可用于分類和目標(biāo)檢測,它是用python寫的,并使用Qt作為其圖形界面,簡單好用(雖然是英文版的)。其注釋以 PASCAL VOC格式保存為XML文件,這是ImageNet使用的格式。此外,它還支持 COCO數(shù)據(jù)集格式。
(2)安裝labelimg 在cmd輸入以下命令 pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
結(jié)束后,在cmd中輸入labelimg
初識(shí)labelimg
打開后,我們自己設(shè)置一下
在View中勾選Auto Save mode
接下來我們打開需要標(biāo)注的圖片文件夾
并設(shè)置標(biāo)注文件保存的目錄(上圖中的Change Save Dir)
接下來就開始標(biāo)注,畫框,標(biāo)記目標(biāo)的label,然后d切換到下一張繼續(xù)標(biāo)注,不斷重復(fù)重復(fù)。
Labelimg的快捷鍵
(3)數(shù)據(jù)準(zhǔn)備
這里建議新建一個(gè)名為data的文件夾(這個(gè)是約定俗成,不這么做也行),里面創(chuàng)建一個(gè)名為images的文件夾存放我們需要打標(biāo)簽的圖片文件;再創(chuàng)建一個(gè)名為labels存放標(biāo)注的標(biāo)簽文件;最后創(chuàng)建一個(gè)名為 classes.txt 的txt文件來存放所要標(biāo)注的類別名稱。
data的目錄結(jié)構(gòu)如下:
│─img_data
│─images 存放需要打標(biāo)簽的圖片文件
│─labels 存放標(biāo)注的標(biāo)簽文件
└ classes.txt 定義自己要標(biāo)注的所有類別(這個(gè)文件可有可無,但是在我們定義類別比較多的時(shí)候,最好有這個(gè)創(chuàng)建一個(gè)這樣的txt文件來存放類別)
首先在images這個(gè)文件夾放置待標(biāo)注的圖片。
生成文件如下:
“classes.txt”定義了你的 YOLO 標(biāo)簽所引用的類名列表。
(4)YOLO模式創(chuàng)建標(biāo)簽的樣式
存放標(biāo)簽信息的文件的文件名為與圖片名相同,內(nèi)容由N行5列數(shù)據(jù)組成。
每一行代表標(biāo)注的一個(gè)目標(biāo),通常包括五個(gè)數(shù)據(jù),從左到右依次為:類別id、x_center、y_center、width、height。
其中:
–x類別id代表標(biāo)注目標(biāo)的類別;
–x_center和y_center代表標(biāo)注框的相對(duì)中心坐標(biāo);
–xwidth和height代表標(biāo)注框的相對(duì)寬和高。
注意:這里的中心點(diǎn)坐標(biāo)、寬和高都是相對(duì)數(shù)據(jù)!!!
存放標(biāo)簽類別的文件的文件名為classes.txt (固定不變),用于存放創(chuàng)建的標(biāo)簽類別。
完成后可進(jìn)行后續(xù)的yolo訓(xùn)練方面的操作。
模型訓(xùn)練
模型的訓(xùn)練、評(píng)估與推理
1.YOLOv8的基本原理
YOLOv8是一個(gè)SOTA模型,它建立在Yolo系列歷史版本的基礎(chǔ)上,并引入了新的功能和改進(jìn)點(diǎn),以進(jìn)一步提升性能和靈活性,使其成為實(shí)現(xiàn)目標(biāo)檢測、圖像分割、姿態(tài)估計(jì)等任務(wù)的最佳選擇。其具體創(chuàng)新點(diǎn)包括一個(gè)新的骨干網(wǎng)絡(luò)、一個(gè)新的Ancher-Free檢測頭和一個(gè)新的損失函數(shù),可在CPU到GPU的多種硬件平臺(tái)上運(yùn)行。
YOLOv8是Yolo系列模型的最新王者,各種指標(biāo)全面超越現(xiàn)有對(duì)象檢測與實(shí)例分割模型,借鑒了Yolov5、Yolov6、YoloX等模型的設(shè)計(jì)優(yōu)點(diǎn),在全面提升改進(jìn)Yolov5模型結(jié)構(gòu)的基礎(chǔ)上實(shí)現(xiàn),同時(shí)保持了Yolov5工程化簡潔易用的優(yōu)勢(shì)。
Yolov8模型網(wǎng)絡(luò)結(jié)構(gòu)圖如下圖所示:
2.數(shù)據(jù)集準(zhǔn)備與訓(xùn)練
本研究使用了包含學(xué)生專注度相關(guān)圖像的數(shù)據(jù)集,并通過Labelimg標(biāo)注工具對(duì)每張圖像中的目標(biāo)邊框(Bounding Box)及其類別進(jìn)行標(biāo)注。然后主要基于YOLOv8n這種模型進(jìn)行模型的訓(xùn)練,訓(xùn)練完成后對(duì)模型在驗(yàn)證集上的表現(xiàn)進(jìn)行全面的性能評(píng)估及對(duì)比分析。模型訓(xùn)練和評(píng)估流程基本一致,包括:數(shù)據(jù)集準(zhǔn)備、模型訓(xùn)練、模型評(píng)估。本次標(biāo)注的目標(biāo)類別為學(xué)生專注度,數(shù)據(jù)集中共計(jì)包含6469張圖像,其中訓(xùn)練集占5108張,驗(yàn)證集占1361張。部分圖像如下圖所示:
部分標(biāo)注如下圖所示:
圖片數(shù)據(jù)的存放格式如下,在項(xiàng)目目錄中新建datasets目錄,同時(shí)將檢測的圖片分為訓(xùn)練集與驗(yàn)證集放入datasets目錄下。
接著需要新建一個(gè)data.yaml文件,用于存儲(chǔ)訓(xùn)練數(shù)據(jù)的路徑及模型需要進(jìn)行檢測的類別。YOLOv8在進(jìn)行模型訓(xùn)練時(shí),會(huì)讀取該文件的信息,用于進(jìn)行模型的訓(xùn)練與驗(yàn)證。
data.yaml的具體內(nèi)容如下:
train: E:/StudentClassroom_v8/datasets/train/images 訓(xùn)練集的路徑
val: E:/StudentClassroom_v8/datasets/val/images 驗(yàn)證集的路徑
# test: E:/StudentClassroom_v8/datasets/test/images 測試集的路徑
nc: 7
names: [‘hand-raising’, ‘reading’, ‘writing’, ‘sleep’, ‘using phone’, ‘bowing the head’, ‘leaning over the table’]
這個(gè)文件定義了用于模型訓(xùn)練和驗(yàn)證的數(shù)據(jù)集路徑,以及模型將要檢測的目標(biāo)類別。
數(shù)據(jù)準(zhǔn)備完成后,通過調(diào)用train.py文件進(jìn)行模型訓(xùn)練,epochs參數(shù)用于調(diào)整訓(xùn)練的輪數(shù),batch參數(shù)用于調(diào)整訓(xùn)練的批次大小(根據(jù)內(nèi)存大小調(diào)整,最小為1)。
CPU/GPU訓(xùn)練代碼如下:
加載名為 yolov8n.pt 的預(yù)訓(xùn)練YOLOv8模型,yolov8n.pt是預(yù)先訓(xùn)練好的模型文件。
使用YOLO模型進(jìn)行訓(xùn)練,主要參數(shù)說明如下:
(1)data=data_yaml_path: 指定了用于訓(xùn)練的數(shù)據(jù)集配置文件。
(2)epochs=150: 設(shè)定訓(xùn)練的輪數(shù)為150輪。
(3)batch=4: 指定了每個(gè)批次的樣本數(shù)量為4。
(4)optimizer=’SGD’):SGD 優(yōu)化器。
(7)name=’train_v8′: 指定了此次訓(xùn)練的命名標(biāo)簽,用于區(qū)分不同的訓(xùn)練實(shí)驗(yàn)。
3.訓(xùn)練結(jié)果評(píng)估
在深度學(xué)習(xí)的過程中,我們通常通過觀察損失函數(shù)下降的曲線來了解模型的訓(xùn)練情況。對(duì)于YOLOv8模型的訓(xùn)練,主要涉及三類損失:定位損失(box_loss)、分類損失(cls_loss)以及動(dòng)態(tài)特征損失(dfl_loss)。訓(xùn)練完成后,相關(guān)的訓(xùn)練過程和結(jié)果文件會(huì)保存在 runs/ 目錄下,具體如下:
各損失函數(shù)作用說明:
定位損失box_loss:預(yù)測框與標(biāo)定框之間的誤差(GIoU),越小定位得越準(zhǔn);
分類損失cls_loss:計(jì)算錨框與對(duì)應(yīng)的標(biāo)定分類是否正確,越小分類得越準(zhǔn);
動(dòng)態(tài)特征損失(dfl_loss):DFLLoss是一種用于回歸預(yù)測框與目標(biāo)框之間距離的損失函數(shù)。在計(jì)算損失時(shí),目標(biāo)框需要縮放到特征圖尺度,即除以相應(yīng)的stride,并與預(yù)測的邊界框計(jì)算Ciou Loss,同時(shí)與預(yù)測的anchors中心點(diǎn)到各邊的距離計(jì)算回歸DFLLoss。這個(gè)過程是YOLOv8訓(xùn)練流程中的一部分,通過計(jì)算DFLLoss可以更準(zhǔn)確地調(diào)整預(yù)測框的位置,提高目標(biāo)檢測的準(zhǔn)確性。
訓(xùn)練結(jié)果如下:
這張圖展示了YOLOv8模型在訓(xùn)練和驗(yàn)證過程中的多個(gè)重要指標(biāo)的變化趨勢(shì),具體如下:
train/box_loss:
(1)這是訓(xùn)練過程中邊界框損失的變化。邊界框損失用于衡量模型預(yù)測的目標(biāo)框與實(shí)際目標(biāo)框的差異。
(2)隨著訓(xùn)練輪次的增加,損失逐漸下降,表明模型在邊界框定位上的準(zhǔn)確性在提高。
train/cls_loss:
(1)這是訓(xùn)練集上的分類損失。分類損失衡量模型對(duì)目標(biāo)類別的預(yù)測準(zhǔn)確性。
(2)隨著訓(xùn)練的進(jìn)行,分類損失也在不斷下降,說明模型對(duì)目標(biāo)的分類能力在不斷提升。
train/dfl_loss:
(1)這是分布聚焦損失(distribution focal loss),用于幫助模型對(duì)目標(biāo)框的精確定位。
(2)這也是一種用于優(yōu)化邊界框的損失,下降表明模型在邊界框回歸的精細(xì)度上表現(xiàn)越來越好。
metrics/precision(B):
(1)這是訓(xùn)練集上的精度(precision)曲線。精度表示模型在檢測到的目標(biāo)中有多少是真正的目標(biāo)。
(2)圖中精度逐漸提高,說明模型在訓(xùn)練過程中變得越來越準(zhǔn)確。
metrics/recall(B):
(1)這是訓(xùn)練集上的召回率(recall)曲線。召回率表示模型檢測出的真實(shí)目標(biāo)的比例。
(2)圖中的曲線顯示召回率逐漸提高,說明模型能夠找到越來越多的目標(biāo)。
val/box_loss:
(1)這是驗(yàn)證集上的邊界框損失曲線。
(2)隨著訓(xùn)練的進(jìn)行,驗(yàn)證集上的損失也在不斷下降,表明模型在驗(yàn)證集上具有良好的泛化能力。
val/cls_loss:
(1)這是驗(yàn)證集上的分類損失曲線。
(2)隨著訓(xùn)練的進(jìn)行,損失逐漸降低,表明模型對(duì)驗(yàn)證數(shù)據(jù)的分類能力也在提升。
val/dfl_loss:
(1)這是驗(yàn)證集上的分布聚焦損失曲線。
(2)驗(yàn)證集上的分布焦點(diǎn)損失,下降趨勢(shì)表明模型在驗(yàn)證數(shù)據(jù)上的邊界框回歸精度也在不斷提高。
metrics/mAP50(B):
(1)這是驗(yàn)證集上的mAP50曲線,表示在交并比閾值為0.5時(shí)模型的平均精度(mean Average Precision)。
(2)mAP50逐漸上升,說明模型在驗(yàn)證集上的檢測性能在逐步提升。
metrics/mAP50-95(B):
(1)這是驗(yàn)證集上的mAP50-95曲線,表示在不同交并比閾值(從0.5到0.95)下模型的平均精度。
(2)mAP50-95比mAP50更加嚴(yán)格,曲線表明隨著訓(xùn)練的進(jìn)行,模型在更高要求下的表現(xiàn)也逐漸提升。
這些圖表反映了模型的訓(xùn)練和驗(yàn)證過程中的性能變化。整體來看,訓(xùn)練損失和驗(yàn)證損失隨著訓(xùn)練輪次的增加逐漸減少,模型的精度和召回率逐漸提高,驗(yàn)證集上的mAP50和mAP50-95也都在上升,表明模型的檢測能力在不斷改善。
這張圖展示的是 Precision-Recall 曲線,用于評(píng)估模型在不同類別下的檢測性能。以下是詳細(xì)解釋:
各類行為的mAP@0.5值:
(1)hand-raising:0.819
(2)reading:0.794
(3)writing:0.757
(4)sleep:0.930
(5)using phone:0.947
(6)bowing the head:0.845
(7)leaning over the table:0.983
(8)all classes:整體的mAP@0.5為0.868
曲線分析:
(1)leaning over the table的曲線(淺紫色)幾乎緊貼右上角,說明該行為的檢測效果非常好,具有較高的精度和召回率,mAP@0.5也達(dá)到了0.983。
(2)using phone和sleep的曲線(分別為紫色和紅色)也表現(xiàn)較好,精度和召回率都很高,mAP@0.5分別為0.947和0.930。
(3)writing和reading的曲線(分別為綠色和橙色)表現(xiàn)相對(duì)較差,特別是writing這一類別的曲線更靠近下方,表示模型在該類別上的精度和召回率稍低,mAP@0.5分別為0.757和0.794。
總結(jié):
該圖顯示了模型對(duì)不同類別行為的檢測性能??傮w來看,模型在大部分行為上的表現(xiàn)都不錯(cuò),尤其是“l(fā)eaning over the table”和“using phone”類的表現(xiàn)非常好,而“writing”和“reading”類的檢測表現(xiàn)稍差,但整體的mAP@0.5為0.868,表明該模型在智慧課堂場景中的學(xué)生專注度 檢測上具有較高的準(zhǔn)確性。
4.檢測結(jié)果識(shí)別
模型訓(xùn)練完成后,我們可以得到一個(gè)最佳的訓(xùn)練結(jié)果模型best.pt文件,在runs/train/weights目錄下。我們可以使用該文件進(jìn)行后續(xù)的推理檢測。
imgTest.py 圖片檢測代碼如下:
加載所需庫:
(1)from ultralytics import YOLO:導(dǎo)入YOLO模型類,用于進(jìn)行目標(biāo)檢測。
(2)import cv2:導(dǎo)入OpenCV庫,用于圖像處理和顯示。
加載模型路徑和圖片路徑:
(1)path = ‘models/best.pt’:指定預(yù)訓(xùn)練模型的路徑,這個(gè)模型將用于目標(biāo)檢測任務(wù)。
(2)img_path = “TestFiles/imagetest.jpg”:指定需要進(jìn)行檢測的圖片文件的路徑。
加載預(yù)訓(xùn)練模型:
(1)model = YOLO(path, task=’detect’):使用指定路徑加載YOLO模型,并指定檢測任務(wù)為目標(biāo)檢測 (detect)。
(2)通過 conf 參數(shù)設(shè)置目標(biāo)檢測的置信度閾值,通過 iou 參數(shù)設(shè)置非極大值抑制(NMS)的交并比(IoU)閾值。
檢測圖片:
(1)results = model(img_path):對(duì)指定的圖片執(zhí)行目標(biāo)檢測,results 包含檢測結(jié)果。
顯示檢測結(jié)果:
(1)res = results[0].plot():將檢測到的結(jié)果繪制在圖片上。
(2)cv2.imshow(“YOLOv8 Detection”, res):使用OpenCV顯示檢測后的圖片,窗口標(biāo)題為“YOLOv8 Detection”。
(3)cv2.waitKey(0):等待用戶按鍵關(guān)閉顯示窗口
此代碼的功能是加載一個(gè)預(yù)訓(xùn)練的YOLOv8模型,對(duì)指定的圖片進(jìn)行目標(biāo)檢測,并將檢測結(jié)果顯示出來。
執(zhí)行imgTest.py代碼后,會(huì)將執(zhí)行的結(jié)果直接標(biāo)注在圖片上,結(jié)果如下:
這段輸出是基于YOLOv8模型對(duì)圖片“imagetest.jpg”進(jìn)行檢測的結(jié)果,具體內(nèi)容如下:
圖像信息:
(1)處理的圖像路徑為:TestFiles/imagetest.jpg。
(2)圖像尺寸為 544×640 像素。
檢測結(jié)果:
(1)模型在該圖片上檢測到 1 個(gè)沒有專注(”1 sleep”)
處理速度:
(1)預(yù)處理時(shí)間: 4.1ms。
(2)推理時(shí)間: 35.4ms。
(3)后處理時(shí)間: 55.4ms。
這個(gè)輸出表明模型成功識(shí)別了目標(biāo)類別,并給出了每個(gè)階段的處理時(shí)間,顯示了模型在此圖像上的推理效率。
運(yùn)行效果
– 運(yùn)行 MainProgram.py
1.主要功能:
(1)可用于實(shí)時(shí)檢測目標(biāo)圖片中的學(xué)生專注度;
(2)支持圖片、視頻及攝像頭進(jìn)行檢測,同時(shí)支持圖片的批量檢測;
(3)界面可實(shí)時(shí)顯示目標(biāo)位置、目標(biāo)總數(shù)、置信度、用時(shí)等信息;
(4)支持圖片或者視頻的檢測結(jié)果保存。
2.檢測結(jié)果說明:
這張圖表顯示了基于YOLOv8模型的目標(biāo)檢測系統(tǒng)的檢測結(jié)果界面。以下是各個(gè)字段的含義解釋:
用時(shí)(Time taken):
(1)這表示模型完成檢測所用的時(shí)間為0.024秒。
(2)這顯示了模型的實(shí)時(shí)性,檢測速度非???。
目標(biāo)數(shù)目(Number of objects detected):
(1)檢測到的目標(biāo)數(shù)目為19,表示這是當(dāng)前檢測到的第1個(gè)目標(biāo)。
目標(biāo)選擇(下拉菜單):全部:
(1)這里有一個(gè)下拉菜單,用戶可以選擇要查看的目標(biāo)類型。
(2)在當(dāng)前情況下,選擇的是“全部”,意味著顯示所有檢測到的目標(biāo)信息。
結(jié)果(Result):
(1)當(dāng)前選中的結(jié)果為 “高度專注”,表示系統(tǒng)正在高亮顯示檢測到的“writing”。
置信度(Confidence):
(1)這表示模型對(duì)檢測到的目標(biāo)屬于“高度專注”類別的置信度為91.25%。
(2)置信度反映了模型的信心,置信度越高,模型對(duì)這個(gè)檢測結(jié)果越有信心。
目標(biāo)位置(Object location):
(1)xmin: 531, ymin: 174:目標(biāo)的左上角的坐標(biāo)(xmin, ymin),表示目標(biāo)區(qū)域在圖像中的位置。
(2)xmax: 617, ymax: 239:目標(biāo)的右下角的坐標(biāo)(xmax, ymax),表示目標(biāo)區(qū)域的邊界。
這些坐標(biāo)表示在圖像中的目標(biāo)區(qū)域范圍,框定了檢測到的“高度專注”的位置。
這張圖展示了學(xué)生專注度的一次檢測結(jié)果,包括檢測時(shí)間、檢測到的種類、各行為的置信度、目標(biāo)的位置信息等。用戶可以通過界面查看并分析檢測結(jié)果,提升學(xué)生專注度檢測的效率。
3.圖片檢測說明
(1)學(xué)生低專注度
(2)學(xué)生高度專注度
(3)學(xué)生較低專注度
(4)學(xué)生較高專注度
(5)學(xué)生沒有專注度
(6)學(xué)生中等偏低專注度
(7)學(xué)生中等專注度
點(diǎn)擊打開圖片按鈕,選擇需要檢測的圖片,或者點(diǎn)擊打開文件夾按鈕,選擇需要批量檢測圖片所在的文件夾。
操作演示如下:
(1)點(diǎn)擊目標(biāo)下拉框后,可以選定指定目標(biāo)的結(jié)果信息進(jìn)行顯示。
(2)點(diǎn)擊保存按鈕,會(huì)對(duì)檢測結(jié)果進(jìn)行保存,存儲(chǔ)路徑為:save_data目錄下。
檢測結(jié)果:系統(tǒng)識(shí)別出圖片中的學(xué)生專注度,并顯示檢測結(jié)果,包括總目標(biāo)數(shù)、用時(shí)、目標(biāo)類型、置信度、以及目標(biāo)的位置坐標(biāo)信息。
4.視頻檢測說明
點(diǎn)擊視頻按鈕,打開選擇需要檢測的視頻,就會(huì)自動(dòng)顯示檢測結(jié)果,再次點(diǎn)擊可以關(guān)閉視頻。
點(diǎn)擊保存按鈕,會(huì)對(duì)視頻檢測結(jié)果進(jìn)行保存,存儲(chǔ)路徑為:save_data目錄下。
檢測結(jié)果:系統(tǒng)對(duì)視頻進(jìn)行實(shí)時(shí)分析,檢測到學(xué)生專注度并顯示檢測結(jié)果。表格顯示了視頻中多個(gè)檢測結(jié)果的置信度和位置信息。
這個(gè)界面展示了系統(tǒng)對(duì)視頻幀中的多目標(biāo)檢測能力,能夠準(zhǔn)確識(shí)別學(xué)生專注度,并提供詳細(xì)的檢測結(jié)果和置信度評(píng)分。
5.攝像頭檢測說明
點(diǎn)擊打開攝像頭按鈕,可以打開攝像頭,可以實(shí)時(shí)進(jìn)行檢測,再次點(diǎn)擊,可關(guān)閉攝像頭。
檢測結(jié)果:系統(tǒng)連接攝像頭進(jìn)行實(shí)時(shí)分析,檢測到學(xué)生專注度并顯示檢測結(jié)果。實(shí)時(shí)顯示攝像頭畫面,并將檢測到的行為位置標(biāo)注在圖像上,表格下方記錄了每一幀中檢測結(jié)果的詳細(xì)信息。
6.保存圖片與視頻檢測說明
點(diǎn)擊保存按鈕后,會(huì)將當(dāng)前選擇的圖片(含批量圖片)或者視頻的檢測結(jié)果進(jìn)行保存。
檢測的圖片與視頻結(jié)果會(huì)存儲(chǔ)在save_data目錄下。
保存的檢測結(jié)果文件如下:
圖片文件保存的csv文件內(nèi)容如下,包括圖片路徑、目標(biāo)在圖片中的編號(hào)、目標(biāo)類別、置信度、目標(biāo)坐標(biāo)位置。
注:其中坐標(biāo)位置是代表檢測框的左上角與右下角兩個(gè)點(diǎn)的x、y坐標(biāo)。
(1)圖片保存
(2)視頻保存
– 運(yùn)行 train.py
1.訓(xùn)練參數(shù)設(shè)置
(1)data=data_yaml_path: 使用data.yaml中定義的數(shù)據(jù)集。
(2)epochs=150: 訓(xùn)練的輪數(shù)設(shè)置為150輪。
(3)batch=4: 每個(gè)批次的圖像數(shù)量為4(批次大小)。
(4)name=’train_v8′: 訓(xùn)練結(jié)果將保存到以train_v8為名字的目錄中。
(5)optimizer=’SGD’: 使用隨機(jī)梯度下降法(SGD)作為優(yōu)化器。
雖然在大多數(shù)深度學(xué)習(xí)任務(wù)中,GPU通常會(huì)提供更快的訓(xùn)練速度。
但在某些情況下,可能由于硬件限制或其他原因,用戶需要在CPU上進(jìn)行訓(xùn)練。
溫馨提示:在CPU上訓(xùn)練深度學(xué)習(xí)模型通常會(huì)比在GPU上慢得多,尤其是像YOLOv8這樣的計(jì)算密集型模型。除非特定需要,通常建議在GPU上進(jìn)行訓(xùn)練以節(jié)省時(shí)間。
2.訓(xùn)練日志結(jié)果
這張圖展示了使用YOLOv8進(jìn)行模型訓(xùn)練的詳細(xì)過程和結(jié)果。
訓(xùn)練總時(shí)長:
(1)模型在訓(xùn)練了150輪后,總共耗時(shí)3.210小時(shí)。
mAP指標(biāo)
(1)mAP50:在IoU(交并比)閾值為0.5時(shí)的平均精度。IoU是衡量檢測邊界框與真實(shí)標(biāo)注框重疊程度的指標(biāo)。mAP50數(shù)值越高,表示模型檢測性能越好。例如,“l(fā)eaning over the table” 類的mAP50為0.983,說明該類別的檢測性能非常好。
(2)mAP50-95:在IoU閾值從0.5到0.95不等的平均精度,是一個(gè)更嚴(yán)格的檢測標(biāo)準(zhǔn)。mAP50-95值越高,說明模型在不同IoU閾值下都有較好的表現(xiàn)。例如,”leaning over the table” 類的mAP50-95為0.719,相較于其他類別更具魯棒性。
速度:
(1)0.2ms 預(yù)處理時(shí)間
(2)1.3ms 推理時(shí)間
(3)0.9ms 后處理時(shí)間
結(jié)果保存:
(1)Results saved to runs\detect\train_v8:驗(yàn)證結(jié)果保存在 runs\detect\train_v8 目錄下。
完成信息:
(1)Process finished with exit code 0:表示整個(gè)驗(yàn)證過程順利完成,沒有報(bào)錯(cuò)。
該驗(yàn)證結(jié)果表明模型在不同學(xué)生專注度類別上的檢測精度和召回率表現(xiàn)較好,尤其是在”leaning over the table”和”using phone”這些類別中表現(xiàn)突出,但在”sleep”和”writing”這些類別中表現(xiàn)稍差。模型總體檢測效果較為理想,且推理速度較快,適合實(shí)時(shí)檢測應(yīng)用場景。