如何用Yolov8训练——风力发电风扇检测数据集 附:数据集+weight 风力发电叶片数据集


数据集目录结构
假设你的数据集目录结构如下:
深色版本
dataset/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── labels/
├── train/
├── val/
└── test/
- 创建数据集配置文件
创建一个名为 wind_turbine.yaml 的文件,内容如下:
yaml
深色版本
数据集路径
train: ./dataset/images/train/
val: ./dataset/images/val/
test: ./dataset/images/test/
类别数量
nc: 4

类别名称
names: [‘blade’, ‘hub’, ‘tower’, ‘nacelle’]
2. 安装必要的库
确保已经安装了 ultralytics 库和其他依赖项:
bash
深色版本
pip install ultralytics
3. 编写训练脚本
以下是一个详细的训练脚本:
python
深色版本
import os
from ultralytics import YOLO
1. 加载预训练模型
你可以使用官方提供的预训练权重,或者使用你自己的预训练权重
model = YOLO(‘yolov8n.yaml’) # 你可以选择不同的预训练权重,如’yolov8s’, 'yolov8m’等
如果你有自己的预训练权重文件,可以这样加载
model = YOLO(‘path/to/your/weights.pt’)
2. 设置数据集路径
data_yaml_path = ‘wind_turbine.yaml’
3. 配置训练参数
training_config = {
‘data’: data_yaml_path, # 数据集配置文件路径
‘epochs’: 100, # 训练轮次
‘imgsz’: 640, # 输入图像大小
‘batch’: 16, # 批量大小
‘name’: ‘wind_turbine_detection’, # 日志保存名称
‘patience’: 50, # 如果验证集上的性能没有提升,等待多少个epoch后停止训练
‘device’: ‘cuda’, # 使用GPU进行训练
‘cache’: False, # 是否缓存数据
‘project’: ‘runs/train’, # 项目保存路径
‘exist_ok’: False, # 如果项目已存在是否覆盖
‘save_period’: -1, # 每隔多少个epoch保存一次模型
‘rect’: False, # 是否使用矩形训练
‘cos_lr’: False, # 是否使用余弦退火学习率
‘label_smoothing’: 0.0, # 标签平滑
‘upload_dataset’: False, # 是否上传数据集到HUB
‘bbox_interval’: -1, # 每隔多少个epoch保存一次bbox
‘artifact_alias’: ‘latest’ # 保存的模型别名
}
4. 开始训练
results = model.train(**training_config)
5. 模型评估
metrics = model.val()
6. 保存模型
model.save(‘wind_turbine_model.pt’)
7. 可视化训练结果
if results:
print(“Training completed successfully!”)
print(f"Final validation metrics: {metrics}")
else:
print(“Training failed.”)
8. 清理临时文件
if training_config[‘cache’]:
os.system(‘rm -rf runs/dataset_cache’)
print(“Training and evaluation complete.”)
4. 运行训练脚本
将上述脚本保存为 train_wind_turbine.py,然后在终端中运行:
bash
深色版本
python train_wind_turbine.py
5. 监控训练过程
训练过程中,你可以在 runs/train/wind_turbine_detection 目录下找到训练日志和模型保存文件。你可以使用TensorBoard等工具来监控训练过程:
bash
深色版本
tensorboard --logdir runs/train
6. 测试模型
训练完成后,你可以使用以下代码测试模型:
python
深色版本
from ultralytics import YOLO
import cv2
加载训练好的模型
model = YOLO(‘wind_turbine_model.pt’)
加载测试图像
test_image_path = ‘path/to/test/image.jpg’
image = cv2.imread(test_image_path)
进行推理
results = model(image)
显示结果
for result in results:
boxes = result.boxes # 获取检测框
for box in boxes:
x1, y1, x2, y2 = box.xyxy[0] # 获取边界框坐标
conf = box.conf # 获取置信度
cls = int(box.cls) # 获取类别
label = model.names[cls] # 获取类别名称
color = (0, 255, 0) # 绿色框
thickness = 2
cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), color, thickness)
cv2.putText(image, f’{label} {conf:.2f}', (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, color, 2)
显示图像
cv2.imshow(‘Result’, image)
cv2.waitKey(0)
cv2.destroyAllWindows()
7. 模型优化
如果你发现模型性能不佳,可以尝试以下方法进行优化:
数据增强:增加数据增强策略,如随机裁剪、翻转等。
调整超参数:调整学习率、批量大小、训练轮次等。
使用更强大的模型:尝试使用更大的YOLOv8模型,如yolov8l或yolov8x。
增加训练数据:如果可能,增加更多标注数据以提高模型泛化能力。
希望这些详细的步骤能帮助你成功训练风力发电风扇检测模型。
