风力发电机各部位边缘识别检测数据集 yolo数据集 共7300张
风力发电机各部位边缘识别检测数据集
数据集描述
该数据集是一个专门用于风力发电机各部位边缘识别和检测的数据集,旨在帮助研究人员和开发者训练和评估基于深度学习的目标检测模型。数据集中的图像涵盖了各种环境下的风力发电机,包括不同的光照条件、天气状况以及背景复杂度,确保了模型在不同场景下的鲁棒性。
数据规模
- 总样本数量:7300张图像
- 标注目标:所有图像都带有详细的标注信息,用于训练和验证目标检测模型。
目标类别及数量
数据集中包含以下目标类别及其对应的标注实例数量:
- Hub (轮毂): 1502个标注实例
- Trunk (塔筒): 4639个标注实例
- Leading_s1 (前缘部分1): 665个标注实例
- Leading_s2 (前缘部分2): 542个标注实例
- Leading_s3 (前缘部分3): 733个标注实例
- pressure_s1 (压力面部分1): 872个标注实例
- pressure_s2 (压力面部分2): 960个标注实例
- pressure_s3 (压力面部分3): 901个标注实例
- suction_s1 (吸力面部分1): 905个标注实例
- suction_s2 (吸力面部分2): 1057个标注实例
- suction_s3 (吸力面部分3): 746个标注实例
标注格式
数据集中的标注信息采用了YOLO(You Only Look Once)格式的TXT文件。每个图像都有一个对应的标签文件,记录了每个目标的位置信息(边界框坐标)和类别标签。这种格式可以直接用于YOLO系列模型的训练。
数据集结构
典型的数据集目录结构如下:
1wind_turbine_edge_detection_dataset/
2├── images/
3│ ├── train/
4│ │ ├── img_00001.jpg
5│ │ ├── img_00002.jpg
6│ │ └── ...
7│ ├── val/
8│ │ ├── img_00001.jpg
9│ │ ├── img_00002.jpg
10│ │ └── ...
11│ └── test/
12│ ├── img_00001.jpg
13│ ├── img_00002.jpg
14│ └── ...
15└── labels/
16 ├── train/
17 │ ├── img_00001.txt
18 │ ├── img_00002.txt
19 │ └── ...
20 ├── val/
21 │ ├── img_00001.txt
22 │ ├── img_00002.txt
23 │ └── ...
24 └── test/
25 ├── img_00001.txt
26 ├── img_00002.txt
27 └── ...
应用场景
该数据集可以用于以下应用场景:
- 风电场监控:实时监测风力发电机各部位的状态,及时发现异常情况。
- 维护与检修:辅助技术人员进行定期检查,提高维护效率。
- 故障诊断:通过分析图像数据,快速定位故障位置,减少停机时间。
- 科研分析:用于研究风力发电机部件的检测算法和技术的发展趋势。
示例代码
以下是一个使用Python和相关库(如OpenCV、PIL等)来加载和展示数据集的简单示例代码:
1import os
2import cv2
3import numpy as np
4from PIL import Image
5
6# 数据集路径
7dataset_path = 'path/to/wind_turbine_edge_detection_dataset/'
8
9# 加载图像和标签
10def load_image_and_label(image_path, label_path):
11 # 读取图像
12 image = Image.open(image_path).convert('RGB')
13 # 解析标签文件
14 with open(label_path, 'r') as infile:
15 lines = infile.readlines()
16 objects = []
17 for line in lines:
18 data = line.strip().split()
19 class_id = int(data[0])
20 x_center, y_center, w, h = map(float, data[1:])
21 objects.append([x_center, y_center, w, h, class_id])
22 return image, objects
23
24# 展示图像
25def show_image_with_boxes(image, boxes):
26 img = np.array(image)
27 class_names = ['Hub', 'Trunk', 'Leading_s1', 'Leading_s2', 'Leading_s3',
28 'pressure_s1', 'pressure_s2', 'pressure_s3',
29 'suction_s1', 'suction_s2', 'suction_s3']
30 for box in boxes:
31 x_center, y_center, w, h, class_id = box
32 w, h = int(w * img.shape[1]), int(h * img.shape[0])
33 x_center, y_center = int(x_center * img.shape[1]), int(y_center * img.shape[0])
34 xmin, xmax = x_center - w // 2, x_center + w // 2
35 ymin, ymax = y_center - h // 2, y_center + h // 2
36 cv2.rectangle(img, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)
37 cv2.putText(img, class_names[class_id], (xmin, ymin - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
38 cv2.imshow('Image with Boxes', img)
39 cv2.waitKey(0)
40 cv2.destroyAllWindows()
41
42# 主函数
43if __name__ == "__main__":
44 subset = 'train' # 可以选择 'val' 或 'test'
45 images_dir = os.path.join(dataset_path, 'images', subset)
46 labels_dir = os.path.join(dataset_path, 'labels', subset)
47
48 # 获取图像列表
49 image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
50
51 # 随机选择一张图像
52 selected_image = np.random.choice(image_files)
53 image_path = os.path.join(images_dir, selected_image)
54 label_path = os.path.join(labels_dir, selected_image.replace('.jpg', '.txt'))
55
56 # 加载图像和标签
57 image, boxes = load_image_and_label(image_path, label_path)
58
59 # 展示带有标注框的图像
60 show_image_with_boxes(image, boxes)
这段代码展示了如何加载图像和其对应的YOLO TXT标注文件,并在图像上绘制边界框和类别标签。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。
示例代码:使用预训练模型进行推理
以下是使用YOLO预训练模型进行推理的示例代码:
1import torch
2import cv2
3import numpy as np
4from pathlib import Path
5
6# 数据集路径
7dataset_path = 'path/to/wind_turbine_edge_detection_dataset/'
8subset = 'test' # 可以选择 'train' 或 'val'
9
10# 加载预训练模型
11weights_path = 'path/to/pretrained/yolov8_weights.pt' # 替换成实际的预训练模型路径
12model = torch.hub.load('ultralytics/yolov5', 'custom', path=weights_path, force_reload=True)
13
14# 主函数
15if __name__ == "__main__":
16 images_dir = os.path.join(dataset_path, 'images', subset)
17
18 # 获取图像列表
19 image_files = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
20
21 # 随机选择一张图像
22 selected_image = np.random.choice(image_files)
23 image_path = os.path.join(images_dir, selected_image)
24
25 # 使用预训练模型进行推理
26 results = model(image_path)
27 results.show() # 显示结果
28 results.save() # 保存结果图像
这段代码展示了如何使用YOLO预训练模型进行推理,并显示和保存推理结果。您可以根据实际需求进一步扩展和修改这段代码,以适应您的具体应用场景。如果您需要使用YOLOv8模型进行更高级的功能,如模型微调或增量训练,可以参考YOLOv8的官方文档来进行相应的配置和操作。