工程类 如何使用Yolov8训练使用及评估 工地粉尘数据集检测 3833 1类 ‘dust‘ 步骤和代码示例应该如何
摘要:本文介绍了一个包含3833张图像的工地扬尘检测YOLO数据集,其中3066张用于训练,767张用于验证。数据集仅包含1个类别(dust),每张图像都有对应的标注框。文中详细说明了数据集的目录结构、YOLOv8模型的训练步骤(包括环境准备、数据集划分、配置文件创建等),并提供了模型评估和预测结果可视化的代码示例。通过8:2的比例划分训练集和验证集,该数据集适合用于工地扬尘检测模型的开发和优化。
工地扬尘检测YOLO数据集模型3833张 1类
【工地扬尘检测YOLO数据集】共【3833】张,按照8比2划分为训练集和验证集,其中训练集【3066】张,验证集【767】张,模型分为【1】类,分类为:【‘dust’】
每个类别的图片数量和标注框数量如下:
dust: 图片数【3832】,标注框数【3832】
![好的,针对工地扬尘检测的数据集,我们可以使用YOLOv8模型进行训练和评估。以下是详细的步骤和代码示例,帮助你完成这个任务。
1. 环境准备
首先,确保你已经安装了必要的库和工具。你可以使用以下命令安装所需的库:
pip install torch torchvision
pip install numpy
pip install pandas
pip install matplotlib
pip install opencv-python
pip install pyyaml
pip install ultralytics
2. 数据集准备
假设你的数据集目录结构如下:
construction_dust_detection_dataset/
├── images/
│ ├── train/
│ └── val/
├── labels/
│ ├── train/
│ └── val/
└── construction_dust.yaml
每个图像文件和对应的标签文件都以相同的文件名命名,例如 0001.jpg
和 0001.txt
。
3. 创建数据集配置文件
你已经有一个 construction_dust.yaml
文件,内容如下:
train: ../construction_dust_detection_dataset/images/train
val: ../construction_dust_detection_dataset/images/val
nc: 1
names: ['dust']
4. 数据集划分
确保你的数据集已经按照8:2的比例划分成训练集和验证集。如果没有,可以使用以下Python脚本进行划分:
import os
import random
import shutil
# 数据集路径
dataset_dir = 'construction_dust_detection_dataset'
images_dir = os.path.join(dataset_dir, 'images')
labels_dir = os.path.join(dataset_dir, 'labels')
# 创建训练集和验证集目录
train_images_dir = os.path.join(images_dir, 'train')
val_images_dir = os.path.join(images_dir, 'val')
train_labels_dir = os.path.join(labels_dir, 'train')
val_labels_dir = os.path.join(labels_dir, 'val')
os.makedirs(train_images_dir, exist_ok=True)
os.makedirs(val_images_dir, exist_ok=True)
os.makedirs(train_labels_dir, exist_ok=True)
os.makedirs(val_labels_dir, exist_ok=True)
# 获取所有图像文件
all_images = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
random.shuffle(all_images)
# 划分训练集和验证集
train_ratio = 0.8
train_size = int(len(all_images) * train_ratio)
train_images = all_images[:train_size]
val_images = all_images[train_size:]
# 移动文件
for image in train_images:
label = image.replace('.jpg', '.txt')
shutil.move(os.path.join(images_dir, image), os.path.join(train_images_dir, image))
shutil.move(os.path.join(labels_dir, label), os.path.join(train_labels_dir, label))
for image in val_images:
label = image.replace('.jpg', '.txt')
shutil.move(os.path.join(images_dir, image), os.path.join(val_images_dir, image))
shutil.move(os.path.join(labels_dir, label), os.path.join(val_labels_dir, label))
5. 安装YOLOv8
克隆YOLOv8仓库并安装依赖项:
git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e .
6. 训练模型
使用YOLOv8的训练脚本进行训练。确保你已经在 construction_dust.yaml
中指定了正确的路径。
yolo task=detect mode=train model=yolov8n.yaml data=construction_dust.yaml epochs=100 imgsz=640 batch=16
7. 评估模型
训练完成后,可以使用YOLOv8的评估脚本来评估模型在验证集上的性能。
yolo task=detect mode=val model=runs/detect/train/weights/best.pt data=construction_dust.yaml
8. 可视化预测结果
使用以下Python代码来可视化模型的预测结果。
import torch
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 加载模型
model = torch.hub.load('ultralytics/yolov5', 'custom', path='runs/detect/train/weights/best.pt')
# 读取图像
image_path = 'construction_dust_detection_dataset/images/val/0001.jpg'
image = cv2.imread(image_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# 进行预测
results = model(image)
# 绘制预测结果
results.print()
results.show()
9. 模型优化
为了进一步优化模型,可以尝试以下方法:
- 调整超参数:使用不同的学习率、批量大小、权重衰减等。
- 使用预训练模型:使用预训练的YOLOv8模型作为初始化权重。
- 增加数据量:通过数据增强或收集更多数据来增加训练集的多样性。
- 模型融合:使用多个模型进行集成学习,提高预测的准确性。
10. 代码示例
以下是一个完整的代码示例,展示了如何从头开始训练和评估YOLOv8模型。
训练脚本
# 克隆YOLOv8仓库
git clone https://github.com/ultralytics/ultralytics
cd ultralytics
# 安装依赖项
pip install -e .
# 训练模型
yolo task=detect mode=train model=yolov8n.yaml data=construction_dust.yaml epochs=100 imgsz=640 batch=16
评估脚本
# 评估模型
yolo task=detect mode=val model=runs/detect/train/weights/best.pt data=construction_dust.yaml
可视化脚本
import torch
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 加载模型
model = torch.hub.load('ultralytics/yolov5', 'custom', path='runs/detect/train/weights/best.pt')
# 读取图像
image_path = 'construction_dust_detection_dataset/images/val/0001.jpg'
image = cv2.imread(image_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# 进行预测
results = model(image)
# 绘制预测结果
results.print()
results.show()
11. 总结
通过以上步骤,你可以成功地使用YOLOv8模型对工地扬尘检测的数据集进行训练、评估和可视化。如果你有任何问题或需要进一步的帮助,请随时告诉我。](https://i-blog.csdnimg.cn/direct/f2ef52230eaf4745a6e8b44f424ef929.png)

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)