如何通过Yolov8训练使用——安全防护检测数据集 3500张 PPE 动火 带标注 voc yolo 安全帽头盔 手套 面罩 靴子等安全行为检测数据集

安全防护检测数据集在这里插入图片描述

以下是安全防护检测数据集的详细信息,包括各类别的图片张数和标注个数。数据集包含12个类别,总共4034张图片和55844个标注。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

类别 图片张数 标注个数
helmet 3649 10494
no_goggles 2197 4545
no_mask 2986 6918
no_vest 2602 7462
boots 1802 7657
no_gloves 2278 6350
gloves 1527 3602
no_helmet 756 2048
vest 1735 4286
goggles 1108 1965
no_boots 99 266
mask 167 251
总计 4034 55844
使用YOLOv8进行训练的代码
环境准备
确保已安装以下软件包:
在这里插入图片描述

Python
PyTorch
Ultralytics
你可以使用pip安装它们:

bash
深色版本
pip install torch torchvision
pip install ultralytics
数据集准备
假设数据集的目录结构如下:

深色版本
safety_detection_dataset/
├── images/
│ ├── train/
│ ├── valid/
│ ├── test/
├── labels/
│ ├── train/
│ ├── valid/
│ ├── test/
配置文件
创建一个配置文件 safety_detection.yaml,内容如下:

yaml
深色版本
path: safety_detection_dataset # 数据集路径
train: images/train # 训练集图像路径
val: images/valid # 验证集图像路径
test: images/test # 测试集图像路径

nc: 12 # 类别数
names: [‘helmet’, ‘no_goggles’, ‘no_mask’, ‘no_vest’, ‘boots’, ‘no_gloves’, ‘gloves’, ‘no_helmet’, ‘vest’, ‘goggles’, ‘no_boots’, ‘mask’] # 类别名称
训练模型
python
深色版本
from ultralytics import YOLO

加载预训练模型

model = YOLO(‘yolov8n.pt’)

训练模型

results = model.train(
data=‘safety_detection.yaml’, # 数据集配置文件
epochs=100, # 训练轮数
imgsz=640, # 图像尺寸
batch=16, # 批量大小
name=‘safety_detection’ # 实验名称
)
模型评估
训练完成后,可以使用以下命令评估模型在验证集上的性能:

python
深色版本

评估模型

results = model.val(data=‘safety_detection.yaml’, imgsz=640)
可视化结果
你可以使用以下代码来可视化模型的预测结果:

python
深色版本
import cv2
import torch
from ultralytics import YOLO

加载训练好的模型

model = YOLO(‘runs/detect/safety_detection/weights/best.pt’)

读取测试图像

image_path = ‘safety_detection_dataset/images/test/image1.jpg’
image = cv2.imread(image_path)

进行预测

results = model(image)

可视化预测结果

for result in results:
boxes = result.boxes.xyxy # 获取边界框
confidences = result.boxes.conf # 获取置信度
class_ids = result.boxes.cls # 获取类别ID

for box, confidence, class_id in zip(boxes, confidences, class_ids):
    x1, y1, x2, y2 = map(int, box)
    label = f'{["helmet", "no_goggles", "no_mask", "no_vest", "boots", "no_gloves", "gloves", "no_helmet", "vest", "goggles", "no_boots", "mask"][int(class_id)]} {confidence:.2f}'
    color = (0, 255, 0)  # 绿色
    cv2.rectangle(image, (x1, y1), (x2, y2), color, 2)
    cv2.putText(image, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)

显示图像

cv2.imshow(‘Prediction’, image)
cv2.waitKey(0)
cv2.destroyAllWindows()
改进策略
为了提高模型的性能,可以尝试以下改进策略:

数据增强:
使用更多的数据增强技术,如随机裁剪、旋转、翻转等。
使用MixUp、CutMix等高级数据增强方法。
模型架构改进:
替换主干网络,例如使用ResNet、EfficientNet等更强大的主干网络。
引入注意力机制,如SENet、CBAM等。
使用更高效的特征融合方法,如BiFPN、ASFF等。
优化器和学习率调度:
尝试不同的优化器,如AdamW、RMSprop等。
使用更复杂的学习率调度策略,如Cosine Annealing、OneCyclePolicy等。
损失函数:
尝试不同的损失函数,如Focal Loss、Dice Loss等。
正则化:
使用Dropout、L2正则化等技术防止过拟合。
多尺度训练:
在不同尺度的图像上进行训练,提高模型的泛化能力。
集成学习:
训练多个模型,然后进行集成,提高整体性能。
示例代码
以下是一个示例代码,展示如何在训练时应用一些常见的改进策略:

python
深色版本
from ultralytics import YOLO
import albumentations as A
from albumentations.pytorch import ToTensorV2

定义数据增强

transform = A.Compose([
A.RandomCrop(width=450, height=450),
A.HorizontalFlip(p=0.5),
A.VerticalFlip(p=0.5),
A.RandomRotate90(p=0.5),
A.Cutout(num_holes=8, max_h_size=64, max_w_size=64, fill_value=0, p=0.5),
A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
ToTensorV2()
])

加载预训练模型

model = YOLO(‘yolov8n.pt’)

训练模型

results = model.train(
data=‘safety_detection.yaml’, # 数据集配置文件
epochs=100, # 训练轮数
imgsz=640, # 图像尺寸
batch=16, # 批量大小
name=‘safety_detection_improved’, # 实验名称
augment=True, # 使用数据增强
transform=transform # 自定义数据增强
)
总结
以上步骤涵盖了从数据集准备到模型训练、评估和可视化的完整流程,并提供了一些常见的改进策略

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值