如何使用Yolov8训练——GC10-DET钢材缺陷数据集 2293张图像,10种瑕疵类型:包括VOC和YOLO两种格式,YOLO格式给出yaml文件,yolov8可直接跑

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
GC10-DET钢材缺陷数据集,并提供使用YOLOv8进行训练的详细步骤和代码。

数据集介绍在这里插入图片描述

  1. 数据集概述
    数据集名称:GC10-DET钢材缺陷数据集
    图像数量:2293张图像
    瑕疵类型:10种,包括冲孔(Pu)、焊缝(Wl)、新月形缝隙(Cg)、水斑(Ws)、油斑(Os)、丝斑(Ss)、夹杂物(In)、轧坑(Rp)、折痕(Cr)、腰部折痕(Wf)
    数据格式:包含VOC和YOLO两种格式
    数据集划分:已划分好训练集、验证集和测试集
  2. 数据集结构
    假设你的数据集已经按照以下结构组织:

深色版本
gc10_det_dataset/
├── images/
│ ├── trai

### 将 GC10-DET 数据集转换为 YOLO 格式的具体方法 为了将 GC10-DET 数据集转换为适用于目标检测模型(如 YOLOv8YOLOv5)的格式,需要遵循特定的数据结构标注文件的标准。以下是详细的说明: #### 1. **数据目录结构调整** YOLO 模型通常要求数据按照以下目录结构组织[^1]: ``` gc10_det_dataset/ ├── images/ │ ├── train/ │ │ └── image_1.jpg │ │ └── ... │ ├── val/ │ │ └── image_val_1.jpg │ │ └── ... │ └── test/ │ └── image_test_1.jpg └── labels/ ├── train/ │ └── image_1.txt │ └── ... └── val/ └── image_val_1.txt └── ... ``` 其中 `images` 文件夹存储原始图片,而 `labels` 文件夹则对应每图片的目标框标签。 --- #### 2. **标签文件格式转换** YOLO 的标签文件采用 `.txt` 格式,每一行表示一个边界框,其格式如下: ``` <class_id> <x_center> <y_center> <width> <height> ``` 各字段的具体含义为: - `<class_id>`:类别索引,从 0 开始计数。 - `<x_center>` `<y_center>`:目标中心点相对于整幅图像宽度高度的比例坐标,范围为 `[0, 1]`。 - `<width>` `<height>`:目标宽高相对于整幅图像宽度高度的比例尺寸,范围也为 `[0, 1]`。 假设原数据集中提供了 VOC 格式的 XML 文件,则可以通过脚本将其转换为上述 YOLO 格式。下面是一个 Python 脚本示例[^3]: ```python import xml.etree.ElementTree as ET import os def convert(size, box): dw = 1./size[0] dh = 1./size[1] x = (box[0] + box[1]) / 2.0 y = (box[2] + box[3]) / 2.0 w = box[1] - box[0] h = box[3] - box[2] x = x * dw w = w * dw y = y * dh h = h * dh return (x, y, w, h) def convert_annotation(xml_file, output_dir, class_names): tree = ET.parse(xml_file) root = tree.getroot() size = root.find('size') width = int(size.find('width').text) height = int(size.find('height').text) with open(output_dir, 'w') as out_file: for obj in root.iter('object'): difficult = obj.find('difficult').text cls_name = obj.find('name').text if cls_name not in class_names or int(difficult) == 1: continue cls_id = class_names.index(cls_name) xml_box = obj.find('bndbox') b = ( float(xml_box.find('xmin').text), float(xml_box.find('xmax').text), float(xml_box.find('ymin').text), float(xml_box.find('ymax').text) ) bb = convert((width, height), b) out_file.write(f"{cls_id} {' '.join([f'{i:.6f}' for i in bb])}\n") # 示例调用 input_xml_folder = './gc10_det_dataset/annotations' output_label_folder = './gc10_det_dataset/labels/train' if not os.path.exists(output_label_folder): os.makedirs(output_label_folder) classes = ['type1', 'type2', ..., 'type10'] # 替换为实际类名列表 for file in os.listdir(input_xml_folder): if file.endswith('.xml'): convert_annotation( os.path.join(input_xml_folder, file), os.path.join(output_label_folder, f"{file.split('.')[0]}.txt"), classes ) ``` 此脚本会读取每个 XML 文件中的对象信息并写入对应的 TXT 文件中。 --- #### 3. **验证数据一致性** 完成转换后,建议通过可视化工具确认标签是否正确加载到图片上。可以利用 OpenCV 或其他库绘制边框来检查结果。 --- #### 4. **配置文件准备** 最后,在训练前需创建 YAML 配置文件指定数据路径及类别名称。例如: ```yaml path: ./gc10_det_dataset train: images/train val: images/val test: images/test names: 0: type1 1: type2 ... 9: type10 ``` 保存该文件以便后续传递给 YOLO 训练命令。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值