gc10-det钢材缺陷数据集已划分好训练,验证,测试 按8:1:1已处理 去除错误和没有label的图片已转化成yolo的txt格式直接训练两千多张图片,voc和yolo格式

gc10-det数据集
已经划分好训练,验证,测试 按8:1:1
已处理 去除错误和没有label的图片
已转化成yolo的txt格式可以直接训练
一共两千多张图片,voc和yolo格式都有

90ef61e221e34f118c72bb442d58ff35.png

 

GC10-Det 数据集

摘要

GC10-Det 数据集是一个专为工业检测任务设计的数据集,包含2000多张高质量的图像,并且已经按照8:1:1的比例划分好了训练集、验证集和测试集。数据集中的每张图像都经过了严格的处理,去除了错误和没有标签的图片,并且提供了VOC和YOLO两种格式的标注信息。该数据集旨在帮助研究人员和工程师开发更精确的工业检测模型,适用于目标检测任务。

数据集特点

  • 多类别:数据集中包含多个不同的类别,具体类别数量根据实际应用而定。
  • 高质量图像:图像分辨率高,清晰度好,能够准确反映工业检测对象的情况。
  • 详细的标注信息:每张图像都有边界框和类别的标注信息,确保了标注的准确性。
  • 标准化格式:数据集同时提供PASCAL VOC和YOLO两种格式的标注文件,便于使用现有的目标检测框架进行训练。
  • 易于使用:数据集已经划分好了训练集、验证集和测试集,并且去除了错误和没有标签的图片,可以直接用于训练目标检测模型。

数据集构成

af55f25337204fa686c881e181039a47.png

  • 总图像数量:2000多张
  • 类别数:具体类别数量根据实际应用而定
  • 数据集划分
    • 训练集: 约1600张
    • 验证集: 约200张
    • 测试集: 约200张
  • 数据量:具体大小取决于图像的分辨率,但通常在几GB左右。

数据集结构

数据集的文件结构如下:

gc10_det_dataset/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
├── labels_voc/
│   ├── train/
│   ├── val/
│   └── test/
└── labels_yolo/
    ├── train/
    ├── val/
    └── test/
  • images/ 目录下存放图像文件。
  • labels_voc/ 目录下存放对应的PASCAL VOC格式的XML标注文件。
  • labels_yolo/ 目录下存放对应的YOLO格式的文本标注文件。

标注信息

PASCAL VOC格式

每个XML标注文件包含一个或多个<object>标签,每个标签描述了一个目标的边界框。例如:

<annotation>
    <folder>train</folder>
    <filename>000001.jpg</filename>
    <size>
        <width>800</width>
        <height>600</depth>
        <depth>3</depth>
    </size>
    <object>
        <name>Class1</name>
        <bndbox>
            <xmin>100</xmin>
            <ymin>150</ymin>
            <xmax>300</xmax>
            <ymax>400</ymax>
        </bndbox>
    </object>
    <object>
        <name>Class2</name>
        <bndbox>
            <xmin>200</xmin>
            <ymin>250</ymin>
            <xmax>400</xmax>
            <ymax>500</ymax>
        </bndbox>
    </object>
</annotation>

YOLO格式

每个YOLO格式的标注文件包含一个或多个边界框的标注信息,每行描述一个边界框。例如:

0 0.487500 0.531250 0.250000 0.375000
1 0.625000 0.750000 0.375000 0.500000

每一行的格式为:

  • <class> <x_center> <y_center> <width> <height>
    • <class>:类别索引(从0开始)
    • <x_center>:边界框中心点的x坐标(归一化到0-1之间)
    • <y_center>:边界框中心点的y坐标(归一化到0-1之间)
    • <width>:边界框的宽度(归一化到0-1之间)
    • <height>:边界框的高度(归一化到0-1之间)

示例代码

以下是一个详细的Python脚本示例,用于加载数据集中的一对图像-标签对,并可视化其中的标注信息。此外,还包括了如何使用常用的YOLOv5进行训练的基本步骤。

加载并可视化图像与标签

import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
from xml.etree.ElementTree import parse

# 数据集目录路径
data_dir = 'path/to/gc10_det_dataset'
train_image_dir = os.path.join(data_dir, 'images/train')
train_label_voc_dir = os.path.join(data_dir, 'labels_voc/train')
train_label_yolo_dir = os.path.join(data_dir, 'labels_yolo/train')

# 选取一张训练图像及其对应标签
image_files = os.listdir(train_image_dir)
image_file = image_files[0]  # 假设取第一张图
label_voc_file = os.path.splitext(image_file)[0] + '.xml'  # VOC格式的标签
label_yolo_file = os.path.splitext(image_file)[0] + '.txt'  # YOLO格式的标签

image_path = os.path.join(train_image_dir, image_file)
label_voc_path = os.path.join(train_label_voc_dir, label_voc_file)
label_yolo_path = os.path.join(train_label_yolo_dir, label_yolo_file)

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

# 解析VOC格式标签
def parse_voc_label(label_path):
    tree = parse(label_path)
    root = tree.getroot()
    bboxes = []
    for obj in root.findall('object'):
        name = obj.find('name').text
        bbox = obj.find('bndbox')
        xmin = int(bbox.find('xmin').text)
        ymin = int(bbox.find('ymin').text)
        xmax = int(bbox.find('xmax').text)
        ymax = int(bbox.find('ymax').text)
        bboxes.append((name, xmin, ymin, xmax, ymax))
    return bboxes

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

# 解析标签
bboxes_voc = parse_voc_label(label_voc_path)
bboxes_yolo = parse_yolo_label(label_yolo_path, width, height)

# 可视化标注
fig, ax = plt.subplots(figsize=(10, 10))
ax.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

colors = ['#FFA500', '#00FF00', '#FF0000', '#0000FF']  # 不同颜色表示不同类别
names = ['Class1', 'Class2', 'Class3', 'Class4']  # 类别名称

# 绘制VOC格式的标注
for bbox, color_name in zip(bboxes_voc, colors):
    name, x_min, y_min, x_max, y_max = bbox
    rect = Rectangle((x_min, y_min), x_max - x_min, y_max - y_min, linewidth=2, edgecolor=color_name, facecolor='none')
    ax.add_patch(rect)
    ax.text(x_min, y_min - 10, name, color=color_name, fontsize=8)

# 绘制YOLO格式的标注
for bbox, color_name in zip(bboxes_yolo, colors):
    class_id, x_min, y_min, x_max, y_max = bbox
    rect = Rectangle((x_min, y_min), x_max - x_min, y_max - y_min, linewidth=2, edgecolor=colors[class_id], facecolor='none', linestyle='--')
    ax.add_patch(rect)
    ax.text(x_min, y_min - 10, names[class_id], color=colors[class_id], fontsize=8)

plt.title('GC10-Det Dataset')
plt.axis('off')
plt.show()

使用YOLOv5进行训练

假设你已经安装了YOLOv5,并且配置文件(例如gc10_det.yaml)已经准备好,以下是使用YOLOv5进行训练的基本步骤:

  1. 克隆YOLOv5仓库(如果尚未完成):深色版本

  2. pip install -r requirements.txt
  3. 创建数据配置文件(如果尚未创建): 创建一个名为gc10_det.yaml的文件,内容如下:

    train: path/to/gc10_det_dataset/images/train
    val: path/to/gc10_det_dataset/images/val
    test: path/to/gc10_det_dataset/images/test
    
    nc: 4  # 类别数
    names: ['Class1', 'Class2', 'Class3', 'Class4']
  4. 开始训练

    python train.py --img 640 --batch 16 --epochs 100 --data gc10_det.yaml --weights yolov5s.pt

    其中,--img 640指定输入图像大小,--batch 16指定批量大小,--epochs 100指定训练轮数,--data gc10_det.yaml指定数据配置文件,--weights yolov5s.pt指定预训练权重。

  5. 评估模型: 训练完成后,你可以使用以下命令来评估模型性能:

    python val.py --img 640 --batch 16 --data gc10_det.yaml --weights runs/train/exp/weights/best.pt
  6. 推理和可视化: 你还可以使用训练好的模型进行推理,并可视化结果:

    python detect.py --source path/to/your_test_images --weights runs/train/exp/weights/best.pt --save-txt --save-conf --save-crop

通过上述步骤,你可以轻松地使用这个数据集来训练一个高效的工业检测模型。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值