睡岗数据集。
数据集中有相当一部分图片是监控摄像头下的真实画面。数据集已经标注好,txt格式,yolo格式,适用于训练yolo系列目标检测模型。
数据集已经划分好训练集420张,验证集105张,包含类别标签文件,数据集分为两类:sleep、unsleep。数据集亲测可用,yolov8m实测map50为80.6%
好的,让我们详细介绍这个睡岗数据集,并展示如何使用它来训练YOLOv8目标检测模型。以下是详细的步骤和代码示例。
数据集介绍
基本信息
- 类别:
sleep
和unsleep
- 格式: 图片(JPEG/PNG)和标注文件(TXT)
- 标注格式: YOLO 格式(类别ID 中心X 中心Y 宽度 高度)
- 划分:
- 训练集: 420 张图片
- 验证集: 105 张图片
- 性能: 使用YOLOv8m实测 mAP@0.5 为 80.6%
数据集结构
假设数据集的目录结构如下:
sleep_detection_dataset/
├── images/
│ ├── train/
│ │ ├── img1.jpg
│ │ ├── img2.jpg
│ │ └── ...
│ └── val/
│ ├── img1.jpg
│ ├── img2.jpg
│ └── ...
├── labels/
│ ├── train/
│ │ ├── img1.txt
│ │ ├── img2.txt
│ │ └── ...
│ └── val/
│ ├── img1.txt
│ ├── img2.txt
│ └── ...
├── data.yaml
└── README.md
类别标签文件 (data.yaml
)
如何训练YOLOv8模型
我们将使用Ultralytics的YOLOv8库来进行训练。以下是详细步骤:
-
安装依赖项
首先,确保你已经安装了必要的Python库:
pip install ultralytics opencv-python
-
准备数据集
确保你的数据集目录结构如上述所示,并且
data.yaml
文件正确配置。 -
编写训练脚本
创建一个训练脚本来启动训练过程。
[<title=“YOLOv8 训练脚本”>]
from ultralytics import YOLO # 加载预训练的YOLOv8m模型 model = YOLO('yolov8m.pt') # 训练模型 results = model.train( data='sleep_detection_dataset/data.yaml', epochs=50, batch=16, imgsz=640, save_period=-1, # 不保存中间权重 project='runs/detect/sleep_detection', name='yolov8m_sleep' )
-
运行训练脚本
在终端中运行训练脚本:
python train_yolov8.py
-
评估模型
训练完成后,可以使用验证集评估模型性能。
[<title=“YOLOv8 评估脚本”>]
from ultralytics import YOLO # 加载训练好的模型 model = YOLO('runs/detect/sleep_detection/yolov8m_sleep/weights/best.pt') # 评估模型 metrics = model.val(data='sleep_detection_dataset/data.yaml') print(metrics)
-
推理与测试
使用训练好的模型进行推理和测试。
[<title=“YOLOv8 推理脚本”>]
from ultralytics import YOLO import cv2 # 加载训练好的模型 model = YOLO('runs/detect/sleep_detection/yolov8m_sleep/weights/best.pt') # 读取图像 image_path = 'path/to/test/image.jpg' img = cv2.imread(image_path) # 进行预测 results = model(img) # 显示结果 for result in results: boxes = result.boxes.cpu().numpy() for box in boxes: r = box.xyxy[0].astype(int) cls = int(box.cls[0]) conf = box.conf[0] label = f'{model.names[cls]} {conf:.2f}' cv2.rectangle(img, (r[0], r[1]), (r[2], r[3]), (0, 255, 0), 2) cv2.putText(img, label, (r[0], r[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) cv2.imshow('Inference Result', img) cv2.waitKey(0) cv2.destroyAllWindows()
可视化训练结果
你可以使用Ultralytics提供的工具来可视化训练过程中的损失曲线、mAP等指标。
tensorboard --logdir runs/detect/sleep_detection/yolov8m_sleep
总结
。这个模型能够有效地识别监控摄像头下的“睡岗”和“非睡岗”状态。希望这些详细的信息和代码示例对你有所帮助