均压环检测数据集
数据集概述
该数据集包含360张均压环图像,标注文件为YOLO格式。数据集分为训练集、验证集和测试集,比例为7:2:1。每个图像包含一个或多个标注框,标注框采用YOLO格式。数据集中共有2个类别,每个类别的图像数量和标注框数量如下:
Junyahuan (均压环):(218张图像,218个标注框)
Junyahuanqingxie (均压环清洁):(377张图像,377个标注框)
总计:360张图像,595个标注框。
数据集结构
假设数据集的目录结构如下:
深色版本
junyahuan_detection_dataset/
├── images/
│ ├── train/
│ │ ├── 000001.jpg
│ │ ├── 000002.jpg
│ │ └── …
│ ├── val/
│ │ ├── 000001.jpg
│ │ ├── 000002.jpg
│ │ └── …
│ ├── test/
│ │ ├── 000001.jpg
│ │ ├── 000002.jpg
│ │ └── …
├── labels/
│ ├── train/
│ │ ├── 000001.txt
│ │ ├── 000002.txt
│ │ └── …
│ ├── val/
│ │ ├── 000001.txt
│ │ ├── 000002.txt
│ │ └── …
│ ├── test/
│ │ ├── 000001.txt
│ │ ├── 000002.txt
│ │ └── …
使用YOLOv8进行训练
安装依赖
首先,确保你已经安装了YOLOv8所需的依赖。你可以通过以下命令安装:
bash
深色版本
pip install ultralytics
配置数据集
创建一个配置文件 junyahuan_detection.yaml,内容如下:
yaml
深色版本
path: junyahuan_detection_dataset # 数据集路径
train: images/train # 训练集图像路径
val: images/val # 验证集图像路径
test: images/test # 测试集图像路径
nc: 2 # 类别数
names: [‘junyahuan’, ‘junyahuanqingxie’] # 类别名称
训练模型
使用以下命令训练YOLOv8模型:
bash
深色版本
yolo train data=junyahuan_detection.yaml model=yolov8n.pt epochs=100 imgsz=640
代码示例
你也可以通过Python代码来训练模型:
python
深色版本
from ultralytics import YOLO
加载预训练模型
model = YOLO(‘yolov8n.pt’)
训练模型
results = model.train(
data=‘junyahuan_detection.yaml’, # 数据集配置文件
epochs=100, # 训练轮数
imgsz=640, # 图像尺寸
batch=16, # 批量大小
name=‘junyahuan_detection’ # 实验名称
)
模型评估
训练完成后,可以使用以下命令评估模型在测试集上的性能:
bash
深色版本
yolo val data=junyahuan_detection.yaml model=runs/detect/junyahuan_detection/weights/best.pt imgsz=640
或者通过Python代码进行评估:
python
深色版本
评估模型
results = model.val(data=‘junyahuan_detection.yaml’, imgsz=640)
可视化结果
你可以使用以下代码来可视化模型的预测结果:
python
深色版本
import cv2
import torch
from ultralytics import YOLO
加载训练好的模型
model = YOLO(‘runs/detect/junyahuan_detection/weights/best.pt’)
读取测试图像
image_path = ‘junyahuan_detection_dataset/images/test/000001.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'{model.names[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()
数据增强
由于部分图片已经进行了增强,确保你在训练过程中不会重复增强这些图片。可以在数据集配置文件中指定是否使用数据增强:
yaml
深色版本
augment: true # 是否使用数据增强
如果部分图片已经增强过,可以在训练时禁用数据增强,以避免过度增强导致模型性能下降:
python
深色版本
results = model.train(
data=‘junyahuan_detection.yaml’, # 数据集配置文件
epochs=100, # 训练轮数
imgsz=640, # 图像尺寸
batch=16, # 批量大小
name=‘junyahuan_detection’, # 实验名称
augment=False # 禁用数据增强
)
总结
以上步骤涵盖了从数据集准备到模型训练、评估和可视化的完整流程。希望这些信息对你有帮助!