基于YOLOv8的学生课堂行为检测系统(深度学习模型+UI界面+Python代码+训练数据集)

   

目录

  UI界面

背景和意义

数据集

训练结果

1、weights目录

2、confusion_matrix_normalized.png、confusion_matrix.png

3、F1_curve.png

4、labels.jpg

5、labels_correlogram.jpg

6.P_curve.png

7、R_curve.png

8、PR_curve.png

9、results.png

10.args.yaml

11.results.csv

12.train_batch(N).jpg

YOLOv8介绍

YOLOv8的主要特点和创新:

YOLOv8的应用场景:

YOLOv8与前一版本的对比:


  UI界面

(采用开源ui界面,界面不收取任何费用,下方链接领取界面,如有侵权请联系及时删除)

通过网盘分享的文件:深度学习YOLO检测系统.rar
链接: https://pan.baidu.com/s/1djUQGeabjziXkgip8xXY4g?pwd=8888 提取码: 8888

数据集(2000 张)

以下是项目类别:

  1. hand-raising - 举手
  2. reading - 阅读
  3. writing - 书写
  4. using phone - 使用手机
  5. bowing the head - 低头
  6. leaning over the table - 趴桌

data.yaml
train: E:/YOLOv10学生课堂行为检测系统/datasets/images/train
val: E:/YOLOv10学生课堂行为检测系统/datasets/images/val
test: E:/YOLOv10学生课堂行为检测系统/datasets/images/test
 
 
##/datasets/dataset/images/test
# number of classes
nc: 6
 
# class names
names:  [ 'hand-raising', 'reading', 'writing','using phone', 'bowing the head', 'leaning over the table']

训练结果

1、weights目录

该目录下保存了两个训练时的权重:

last.pt:

“last.pt” 一般指代模型训练过程中最后一个保存的权重文件。在训练过程中,模型的权重可能会定期保存,而 “last.pt” 就是最新的一次保存的模型权重文件。这样的文件通常用于从上一次训练的断点继续训练,或者用于模型的推理和评估。

best.pt:

“best.pt” 则通常指代在验证集或测试集上表现最好的模型权重文件。在训练过程中,会通过监视模型在验证集上的性能,并在性能提升时保存模型的权重文件。“best.pt” 可以被用于得到在验证集上表现最好的模型,以避免模型在训练集上过拟合的问题。

2、confusion_matrix_normalized.png、confusion_matrix.png

混淆矩阵是对分类问题预测结果的总结,通过计数值汇总正确和不正确预测的数量,并按每个类别进行细分,展示了分类模型在进行预测时对哪些部分产生混淆。该矩阵以行表示预测的类别(y轴),列表示真实的类别(x轴),具体内容如下:

            |  Predicted 0  |  Predicted 1  |

------------|---------------|---------------|

Actual 0    |      TN       |      FP       |

------------|---------------|---------------|

Actual 1    |      FN       |      TP       |

其中:

TP(True Positive)表示将正类预测为正类的数量,即正确预测的正类样本数。

FN(False Negative)表示将正类预测为负类的数量,即错误预测的正类样本数。

FP(False Positive)表示将负类预测为正类的数量,即错误预测的负类样本数。

TN(True Negative)表示将负类预测为负类的数量,即正确预测的负类样本数。

混淆矩阵的使用有助于直观了解分类模型的错误类型,特别是了解模型是否将两个不同的类别混淆,将一个类别错误地预测为另一个类别。这种详细的分析有助于克服仅使用分类准确率带来的局限性。

精确率(Precision)和召回率(Recall)是常用于评估分类模型性能的指标,其计算方法如下:

精确率(Precision):

公式:Precision = TP / (TP + FP)

解释:精确率是指在所有被模型预测为正例(Positive)的样本中,实际为正例的比例。它衡量了模型在正例预测中的准确性。

召回率(Recall):

公式:Recall = TP / (TP + FN)

解释:召回率是指在所有实际为正例的样本中,模型成功预测为正例的比例。它衡量了模型对正例的识别能力。

3、F1_curve.png

为了能够评价不同算法的优劣,在Precision和Recall的基础上提出了F1值的概念,来对Precision和Recall进行整体评价。F1的定义如下:

F1曲线是一种多分类问题中常用的性能评估工具,尤其在竞赛中得到广泛应用。它基于F1分数,这是精确率和召回率的调和平均数,取值范围介于0和1之间。1代表最佳性能,而0代表最差性能。

通常情况下,通过调整置信度阈值(判定为某一类的概率阈值),可以观察到F1曲线在不同阈值下的变化。在阈值较低时,模型可能将许多置信度较低的样本判定为真,从而提高召回率但降低精确率。而在阈值较高时,只有置信度很高的样本才被判定为真,使得模型的类别判定更为准确,进而提高精确率。

4、labels.jpg

从左往右按顺序排列:

宫格1:训练集的数据量,显示每个类别包含的样本数量。

宫格2:框的尺寸和数量,展示了训练集中边界框的大小分布以及相应数量。

宫格3:中心点相对于整幅图的位置,描述了边界框中心点在图像中的位置分布情况。

宫格4:图中目标相对于整幅图的高宽比例,反映了训练集中目标高宽比例的分布状况。

5、labels_correlogram.jpg

展示了目标检测算法在训练过程中对标签之间相关性的建模情况。每个矩阵单元代表模型训练时使用的标签,而单元格的颜色深浅反映了对应标签之间的相关性。

深色单元格表示模型更强烈地学习了这两个标签之间的关联性。

浅色单元格则表示相关性较弱。

对角线上的颜色代表每个标签自身的相关性,通常是最深的,因为模型更容易学习标签与自身的关系。

可以直观识别到哪些标签之间存在较强的相关性,这对于优化训练和预测效果至关重要。如果发现某些标签之间的相关性过强,可能需要考虑合并它们,以简化模型并提高效率。最上面的图(0,0)至(3,3)分别表示中心点横坐标x、中心点纵坐标y、框的宽和框的高的分布情况。

6.P_curve.png

PCC图的横坐标表示检测器的置信度,纵坐标表示精度(或召回率)。曲线的形状和位置反映了检测器在不同信心水平下的性能。

在PCC图中,当曲线向上并向左弯曲时,表示在较低置信度下仍能保持较高的精度,说明检测器在高召回率的同时能够保持低误报率,即对目标的识别准确性较高。

相反,当曲线向下并向右弯曲时,说明在较高置信度下才能获得较高的精度,这可能导致漏检率的增加,表示检测器的性能较差。

因此,PCC图对于评估检测器在不同信心水平下的表现提供了有用的信息。在图中,曲线向上并向左弯曲是期望的效果,而曲线向下并向右弯曲则表示改进的空间。

7、R_curve.png

在理想情况下,希望算法在保持高召回率的同时能够保持较高的精度。

在RCC图中,当曲线在较高置信度水平下呈现较高召回率时,说明算法在目标检测时能够准确地预测目标的存在,并在过滤掉低置信度的预测框后依然能够维持高召回率。这反映了算法在目标检测任务中的良好性能。

值得注意的是,RCC图中曲线的斜率越陡峭,表示在过滤掉低置信度的预测框后,获得的召回率提升越大,从而提高模型的检测性能。

在图表中,曲线越接近右上角,表示模型性能越好。当曲线靠近图表的右上角时,说明模型在保持高召回率的同时能够维持较高的精度。因此,RCC图可用于全面评估模型性能,帮助找到平衡模型召回率和精度的合适阈值。

8、PR_curve.png

PR_curve是精确率(Precision)和召回率(Recall)之间的关系。精确率表示预测为正例的样本中真正为正例的比例,而召回率表示真正为正例的样本中被正确预测为正例的比例。

在PR Curve中,横坐标表示召回率,纵坐标表示精确率。通常情况下,当召回率升高时,精确率会降低,反之亦然。PR Curve反映了这种取舍关系。曲线越靠近右上角,表示模型在预测时能够同时保证高的精确率和高的召回率,即预测结果较为准确。相反,曲线越靠近左下角,表示模型在预测时难以同时保证高的精确率和高的召回率,即预测结果较为不准确。

通常,PR Curve与ROC Curve一同使用,以更全面地评估分类模型的性能。 PR Curve提供了对模型在不同任务下性能表现的更详细的洞察。

9、results.png

损失函数在目标检测任务中扮演关键角色,它用于衡量模型的预测值与真实值之间的差异,直接影响模型性能。以下是一些与目标检测相关的损失函数和性能评价指标的解释:

定位损失(box_loss):

定义: 衡量预测框与标注框之间的误差,通常使用 GIoU(Generalized Intersection over Union)来度量,其值越小表示定位越准确。

目的: 通过最小化定位损失,使模型能够准确地定位目标。

置信度损失(obj_loss):

定义: 计算网络对目标的置信度,通常使用二元交叉熵损失函数,其值越小表示模型判断目标的能力越准确。

目的: 通过最小化置信度损失,使模型能够准确判断目标是否存在。

分类损失(cls_loss):

定义: 计算锚框对应的分类是否正确,通常使用交叉熵损失函数,其值越小表示分类越准确。

目的: 通过最小化分类损失,使模型能够准确分类目标。

Precision(精度):

定义: 正确预测为正类别的样本数量占所有预测为正类别的样本数量的比例。

目的: 衡量模型在所有预测为正例的样本中有多少是正确的。

Recall(召回率):

定义: 正确预测为正类别的样本数量占所有真实正类别的样本数量的比例。

目的: 衡量模型能够找出真实正例的能力。

mAP(平均精度):

定义: 使用 Precision-Recall 曲线计算的面积,mAP@[.5:.95] 表示在不同 IoU 阈值下的平均 mAP。

目的: 综合考虑了模型在不同精度和召回率条件下的性能,是目标检测任务中常用的评价指标。

在训练过程中,通常需要关注精度和召回率的波动情况,以及 mAP@0.5 和 mAP@[.5:.95] 评估训练结果。这些指标可以提供关于模型性能和泛化能力的有用信息。

10.args.yaml

训练时的超参数:

task: detect

mode: train

model: yolov8n.pt

data: E:/BaiduNetdiskDownload/class_Detection_end5.1/class_Detection_end/datasets/dataset/data.yaml

epochs: 250

time: null

patience: 100

batch: 4

imgsz: 640

save: true

save_period: -1

cache: false

device: null

workers: 8

project: null

name: train9

exist_ok: false

pretrained: true

optimizer: auto

verbose: true

seed: 0

deterministic: true

single_cls: false

rect: false

cos_lr: false

close_mosaic: 10

resume: false

amp: true

fraction: 1.0

profile: false

freeze: null

multi_scale: false

overlap_mask: true

mask_ratio: 4

dropout: 0.0

val: true

split: val

save_json: false

save_hybrid: false

conf: null

iou: 0.7

max_det: 300

half: false

dnn: false

plots: true

source: null

vid_stride: 1

stream_buffer: false

visualize: false

augment: false

agnostic_nms: false

classes: null

retina_masks: false

embed: null

show: false

save_frames: false

save_txt: false

save_conf: false

save_crop: false

show_labels: true

show_conf: true

show_boxes: true

line_width: null

format: torchscript

keras: false

optimize: false

int8: false

dynamic: false

simplify: false

opset: null

workspace: 4

nms: false

lr0: 0.01

lrf: 0.01

momentum: 0.937

weight_decay: 0.0005

warmup_epochs: 3.0

warmup_momentum: 0.8

warmup_bias_lr: 0.1

box: 7.5

cls: 0.5

dfl: 1.5

pose: 12.0

kobj: 1.0

label_smoothing: 0.0

nbs: 64

hsv_h: 0.015

hsv_s: 0.7

hsv_v: 0.4

degrees: 0.0

translate: 0.1

scale: 0.5

shear: 0.0

perspective: 0.0

flipud: 0.0

fliplr: 0.5

bgr: 0.0

mosaic: 1.0

mixup: 0.0

copy_paste: 0.0

auto_augment: randaugment

erasing: 0.4

crop_fraction: 1.0

cfg: null

tracker: botsort.yaml

save_dir: runs\detect\train9

11.results.csv

模型训练时每次迭代结果:

12.train_batch(N).jpg

对应batch_size这个超参,这里设置为8所以一次读取8张图片:

13、val_batch(N)_labels.jpg 和 val_batch(N)_pred.jpg

通过网盘分享的文件:深度学习YOLO检测系统.rar
链接: https://pan.baidu.com/s/1djUQGeabjziXkgip8xXY4g?pwd=8888 提取码: 8888

YOLOv8介绍

YOLOv8 在准确性和速度方面提供了尖端的性能。在前几版 YOLO 的基础上,YOLOv8 引入了新的功能和优化,使其成为各种目标检测任务的理想选择,适用于广泛的应用场景。

主要特点

  • 先进的主干和颈部架构:YOLOv8 采用了最先进的主干和颈部架构,提升了特征提取和目标检测性能。
  • 无锚分割 Ultralytics 头:YOLOv8 采用无锚分割的 Ultralytics 头,相较于基于锚点的方法,能够提供更好的准确性和更高效的检测过程。
  • 优化的准确性与速度平衡:YOLOv8 在保持准确性与速度之间的最佳平衡上做了优化,使其非常适合实时目标检测任务,适用于多种应用领域。
  • 多样化的预训练模型:YOLOv8 提供了一系列预训练模型,能够满足不同任务和性能需求,帮助用户更轻松地选择适合特定应用场景的模型。

支持的任务和模式

YOLOv8 系列提供多种模型,每个模型都针对计算机视觉中的特定任务进行了优化。这些模型可以满足从目标检测到更复杂任务(如实例分割、姿态/关键点检测、定向目标检测和分类等)的各种需求。

YOLOv8 系列的每个变体都针对其特定任务进行了优化,确保高性能和高准确性。此外,这些模型支持多种操作模式,包括推理、验证、训练和导出,方便在不同的部署和开发阶段使用。

这张表格概述了 YOLOv8 模型的不同变体,突出了它们在特定任务中的适用性以及与多种操作模式(如推理、验证、训练和导出)的兼容性。表格展示了 YOLOv8 系列的多功能性和强大性,使其适用于计算机视觉领域中的多种应用。

使用示例

以下示例提供了 YOLOv8 训练和推理的基本示例。有关这些操作模式及其他模式的完整文档,请参阅 PredictTrainValExport 文档页面。

请注意,以下示例是针对 YOLOv8 Detect 模型的目标检测任务。对于其他支持的任务,请查看 SegmentClassifyOBBPose 文档。

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")

YOLOv8(You Only Look Once version 8)是YOLO(You Only Look Once)系列目标检测模型的一个更新版本。YOLOv8的目标是继续提升目标检测精度、速度和鲁棒性,进一步优化处理速度和对资源的需求,同时在精度上不断追求突破。与之前的YOLO版本相比,YOLOv8在多个方面进行了创新和改进。

YOLOv8的主要特点和创新:

  1. 网络架构优化

    • YOLOv8采用了新的深度学习架构,优化了网络的层次结构,提高了卷积操作的效率。
    • 模型引入了更轻量化的结构设计,能够在保持较高精度的同时提高计算效率,适合于部署在低资源环境下。
  2. 自适应锚框(Anchor-free)

    • YOLOv8可能采用了自适应锚框(anchor-free)的设计。传统YOLO版本依赖于预定义的锚框来进行边界框预测,而YOLOv8在这方面有所创新,通过自适应算法优化框架预测,减少了人工调参的复杂度。
  3. 高效的多尺度特征融合

    • YOLOv8加强了不同尺度的特征融合,在不同尺度的检测任务中具有更好的表现,尤其是在处理小物体和大物体时都能提供较高的准确度。
  4. 更高的精度和召回率

    • YOLOv8通过改进的损失函数和训练策略,提升了目标检测的精度,减少了误检和漏检现象。
    • 在与前一版本YOLOv5或YOLOv7的比较中,YOLOv8通常能达到更高的mAP(mean Average Precision,平均精度均值)和更低的推理时间。
  5. 模型压缩与量化

    • YOLOv8进一步支持模型压缩和量化技术,使得模型更加适用于嵌入式设备和移动设备。这些技术帮助YOLOv8在低功耗环境下进行实时检测。
  6. 优化的训练过程

    • YOLOv8改进了训练过程,包括更加精细的学习率调节和训练策略,使得模型可以更快地收敛并在大规模数据集上达到更好的泛化能力。
  7. 跨平台支持

    • YOLOv8提供了更好的跨平台支持,能够在多个硬件平台上进行高效部署,包括GPU、TPU、移动端的加速等。
  8. 支持更多任务

    • YOLOv8不仅仅局限于传统的目标检测任务,还增加了对实例分割、关键点检测、姿态估计等任务的支持,拓宽了应用范围。

YOLOv8的应用场景:

  • 自动驾驶:通过对道路、行人、交通标志等目标的实时检测,支持自动驾驶技术的安全性和准确性。
  • 视频监控:在实时视频监控系统中,YOLOv8能够高效地检测入侵者、车辆等目标,提升安全防护水平。
  • 无人机:利用YOLOv8进行无人机的实时视觉感知,实现目标追踪、航拍分析等应用。
  • 智能制造与机器人:在智能工厂或机器人应用中,YOLOv8能够进行物体识别、缺陷检测等任务。
  • 医疗影像分析:在医学影像中,YOLOv8能够帮助识别异常病灶,辅助医生做出诊断。

YOLOv8与前一版本的对比:

特性YOLOv8YOLOv7YOLOv5
精度更高的mAP(平均精度均值)较高,但略逊色于YOLOv8精度较好,适用于大部分场景
推理速度极致优化,适用于实时检测高效,但YOLOv8优化更为突出推理速度优秀,但不及YOLOv8
模型大小更轻量化,适合嵌入式应用模型较大,需要更多计算资源模型相对较大,适用于服务器环境
应用范围支持更多任务(如实例分割、关键点检测等)主要集中在目标检测任务上主要用于目标检测

 通过网盘分享的文件:深度学习YOLO检测系统.rar
链接: https://pan.baidu.com/s/1djUQGeabjziXkgip8xXY4g?pwd=8888 提取码: 8888

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人工智能_SYBH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值