首页 > 其他分享 >风力发电机叶片表面缺陷识别检测数据集yolo数据集 共7000张

风力发电机叶片表面缺陷识别检测数据集yolo数据集 共7000张

时间:2024-09-29 20:48:53浏览次数:3  
标签:叶片 image yolo surface height width path 7000 数据

风力发电机叶片表面缺陷识别检测数据集yolo数据集 共7000张

风力发电机叶片表面缺陷识别数据集(Wind Turbine Blade Defects Recognition Dataset, WTBDRD)

摘要

WTBDRD 是一个专门为风力发电机叶片表面缺陷识别而设计的数据集,旨在为相关领域的研究人员提供一个标准化的训练和评估平台。该数据集包含了7000张高分辨率的叶片图像,这些图像来自多个不同型号的风力发电机叶片。每张图像都被详细地标注了叶片表面的各种缺陷类型和位置,包括腐蚀、裂纹、隐藏裂纹、表面附着物、表面腐蚀、表面损伤、表面油污以及雷击痕迹等。数据集的设计目标是帮助研究人员更好地理解叶片表面缺陷的特征和规律,从而提高叶片维护和管理的效率。

数据集特点

  • 全面的叶片缺陷分类:数据集涵盖了常见的叶片表面缺陷类型,包括腐蚀、裂纹、隐藏裂纹、表面附着物、表面腐蚀、表面损伤、表面油污以及雷击痕迹等。
  • 高质量的叶片图像:所有的图像都是由专业的工业相机拍摄,具有高分辨率和清晰度,能够准确反映叶片的真实状态。
  • 详细的标注信息:每张图像都经过专业人员的仔细标注,包括缺陷的位置、形状、大小等关键信息。
  • 丰富的叶片型号:数据集中的叶片来自多种型号的风力发电机,可以满足不同研究需求。
  • 易于使用:数据集已经按照YOLO格式整理,可以直接用于训练和评估YOLO系列的目标检测模型。
  • 广泛的应用场景:适用于风电行业叶片维护与管理、故障预测等领域。
数据集构成

  • 图像数量:总共有7000张叶片图像。
  • 类别数:8类
  • 类别名称及对应数量
    • corrosion: 腐蚀 (1058张)
    • craze: 裂纹 (36张)
    • hide_craze: 隐藏裂纹 (1172张)
    • surface_attach: 表面附着物 (1410张)
    • surface_corrosion: 表面腐蚀 (6714张)
    • surface_eye: 表面损伤 (206张)
    • surface_injure: 表面油污 (3182张)
    • thunderstrike: 雷击痕迹 (240张)
示例代码

以下是一个简单的Python脚本示例,用于加载数据集中的一对图像-标签对,并可视化其中的标注信息:

import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

# 数据集目录路径
data_dir = 'path/to/wtbdrd_dataset'
train_image_dir = os.path.join(data_dir, 'images/train')
train_label_dir = os.path.join(data_data, 'labels/train')

# 选取一张训练图像及其对应标签
image_files = os.listdir(train_image_dir)
image_file = image_files[0]  # 假设取第一张图
label_file = os.path.splitext(image_file)[0] + '.txt'

image_path = os.path.join(train_image_dir, image_file)
label_path = os.path.join(train_label_dir, label_file)

# 加载图像
image = cv2.imread(image_path, cv2.IMREAD_COLOR)
height, width, _ = image.shape

# 解析YOLO格式标签
def parse_yolo_label(label_path, image_width, image_height):
    bboxes = []
    with open(label_path, 'r') as f:
        lines = f.readlines()
        for line in lines:
            class_id, x_center, y_center, box_width, box_height = map(float, line.strip().split())
            x_min = int((x_center - box_width / 2) * image_width)
            y_min = int((y_center - box_height / 2) * image_height)
            box_width = int(box_width * image_width)
            box_height = int(box_height * image_height)
            bboxes.append((class_id, x_min, y_min, box_width, box_height))

    return bboxes

# 解析标签
bboxes = parse_yolo_label(label_path, width, height)

# 可视化标注
fig, ax = plt.subplots(figsize=(10, 10))
ax.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
colors = ['red', 'blue', 'green', 'orange', 'purple', 'yellow', 'pink', 'brown', 'gray']
names = ['corrosion', 'craze', 'hide_craze', 'surface_attach', 'surface_corrosion', 'surface_eye', 'surface_injure', 'thunderstrike']
for bbox, color_name in zip(bboxes, colors):
    class_id, x, y, w, h = bbox
    rect = Rectangle((x, y), w, h, linewidth=2, edgecolor=color_name, facecolor='none')
    ax.add_patch(rect)
    ax.text(x, y - 10, names[int(class_id)], color=color_name, fontsize=8)

plt.title('Wind Turbine Blade Defects Recognition Dataset')
plt.axis('off')
plt.show()
数据集使用指南
  1. 数据准备

    • 确认数据集路径是否正确,并且图像和标签文件均存在指定的目录下。
    • 检查数据集是否有损坏或缺失的文件,确保所有图像和对应的标注文件都是完整的。
  2. 数据集划分

    • 数据集已经划分为训练集、验证集和测试集,可以直接使用。
  3. 配置文件

    • 根据所使用的深度学习框架创建相应的配置文件。对于YOLOv5等模型,通常需要一个data.yaml文件来描述数据集路径和类别信息。

    • data.yaml示例内容如下:

      train: path/to/wtbdrd_dataset/images/train
      val: path/to/wtbdrd_dataset/images/validation
      test: path/to/wtbdrd_dataset/images/test
      
      nc: 8
      names: ['corrosion', 'craze', 'hide_craze', 'surface_attach', 'surface_corrosion', 'surface_eye', 'surface_injure', 'thunderstrike']
  4. 模型训练

    • 选择适合任务的深度学习框架(如YOLOv5, YOLOv7, Detectron2等)。
    • 配置训练参数,包括学习率、批次大小、迭代次数等。
    • 使用提供的数据集开始训练模型。确保在训练过程中监控模型的

标签:叶片,image,yolo,surface,height,width,path,7000,数据
From: https://blog.csdn.net/2401_83580557/article/details/142504303

相关文章

  • 数据库离程序员有多远 - cnblogs救园行动感想
    这两周,我参与了博客园的“2024救园行动”,成了终身会员。说实话,当初报名的时候,我心里还挺兴奋的,想着这下能和不少老朋友在这个社区里再次相聚。毕竟,在数据库行业摸爬滚打了这么多年,自认为也认识不少圈内人士,更不用说程序员群体了。可结果却有点出乎意料。当我翻看那500位终身会员的......
  • 数据在内存中的存储以及练习(一篇带你清晰搞懂)
    一:数据在内存中的存储首先,如果要了解数据在内存中的存储,我们首先要了解一个概念大小端是什么?1:什么是大小端?其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储,下面是具体的概念:大端(存储)模式:是......
  • Java中的队列数据结构及其应用
    Java中的队列数据结构及其应用队列是一种线性数据结构,遵循先进先出(FIFO)的原则,即最先插入的元素最先被移除。队列的基本操作包括入队(enqueue)、出队(dequeue)和查看队头元素(peek)。本文将介绍队列的基本结构、操作及在JDK中的应用。队列的基本结构一个简单的队列可以用数组或......
  • Python和C++及MATLAB距离相关性生物医学样本统计量算法及数据科学
    ......
  • Java-数据结构-Map和Set-(二)-哈希表 |ू・ω・` )
    文本目录:❄️一、哈希表:  ☑1、概念:    ☑2、冲突-概念:    ☑3、冲突-避免:     ☞1)、避免冲突-哈希函数的设计:     ☞2)、避免冲突-负载因子调节(重点):    ☑4、冲突-解决:      ➷1)、解决冲突-闭散列: ......
  • 三分钟学会yolo目标检测(附源码和中文论文)
    本文通过一个车辆目标检测案例,教会你如何使用yolov3训练自己的目标检测模型;案例相关yolov3代码、数据集以及yolov3中文版论文放于文末获取;提供的代码经过严格调试,在windows10下可一键启动训练。目录项目介绍模型训练模型使用资源获取▍项目介绍任务概述:本篇文章,我们......
  • 在Android开发中获取数据的方法有哪些?
    目录1.从SharedPreferences获取数据2.从数据库(SQLite)获取数据3.从文件中读取数据4.从网络请求获取数据(使用HttpURLConnection或OkHttp)5.从内容提供者(ContentProvider)获取数据6.从Intent获取数据7.从Bundle获取数据8.从传感器获取数据9.......
  • Python NumPy 数据清洗:高效处理数据异常与缺失
    PythonNumPy数据清洗:高效处理数据异常与缺失文章目录PythonNumPy数据清洗:高效处理数据异常与缺失一数据预处理的常见问题二待处理的数据三数据预处理四清洗数据1查看第一列学号2查看第二列年龄结果解析函数解释1)`~np.isnan(data[:,1])`2)`data[~np.isnan(data......
  • pg结果子查询转换数据不正确
    1、问题同样的sql,执行思路,在测试环境,可以正常获取结果,生产环境数据就是不对,怀疑是PG版本不同。sql如下:xx的意思:查询completion_date,6天后的日期(跳过节假日),结果数据都没有转换 SELECTdistinct   A.input_user,   A.acqtn_mode,   A.assemble_idAS......
  • jsp爱宠宠物医院管理系统设计与实现0685i--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、课题名称爱宠宠物医院管理系统设计与实现二、研究背景与意义随着宠物市场的不断扩大,宠物医院作为宠物健康保障的重要环节,其管理效率和服务质......