当前位置: 首页 > news >正文

布匹瑕疵检测数据集 4类 2800张 布料缺陷 带标注 voc yolo

 

布匹瑕疵检测数据集 4类 2800张 布料缺陷 带标注 voc yolo

对应标注,格式VOC (XML),选配Y0L0(TXT)
label| pic_ num| box_ _num 
hole: (425, 481)
suspension_ wire: (1739, 1782)
topbasi: (46, 46)
dirty: (613, 1425)
total: (2823, 3734)
破洞,勾线,污染等

 

布匹瑕疵检测数据集介绍

数据集名称

布匹瑕疵检测数据集 (Fabric Defect Detection Dataset)

数据集概述

该数据集是一个专门用于训练和评估布料缺陷检测模型的数据集。数据集包含2800张图像,每张图像都带有详细的标注信息,标注格式包括VOC(Pascal VOC)和YOLO格式。这些图像涵盖了各种布料上的常见缺陷类型,如破洞、勾线、污染等。通过这个数据集,可以训练出能够准确检测和定位布料上不同类型的瑕疵的模型,从而帮助进行质量控制、生产过程监控等应用。

数据集特点
  • 高质量图像:数据集中的图像具有高分辨率,能够提供丰富的细节信息。
  • 带标注:每张图像都有详细的标注信息,包括缺陷的位置和大小。
  • 多格式标注:标注信息同时以VOC和YOLO格式提供,方便不同框架的使用。
  • 实际应用场景:适用于需要精确检测布料缺陷的场景,如纺织品生产线、质量控制部门等。
数据集结构
fabric_defect_detection_dataset/
├── images/                            # 图像文件
│   ├── 00001.jpg                      # 示例图像
│   ├── 00002.jpg
│   └── ...
├── annotations/                       # 标注文件
│   ├── VOC/                           # Pascal VOC格式标注
│   │   ├── 00001.xml                  # 示例VOC标注文件
│   │   ├── 00002.xml
│   │   └── ...
│   ├── YOLO/                          # YOLO格式标注(选配)
│   │   ├── 00001.txt                  # 示例YOLO标注文件
│   │   ├── 00002.txt
│   │   └── ...
├── data.yaml                          # 类别描述文件
├── README.md                          # 数据集说明
数据集内容
  1. images/

    • 功能:存放图像文件。
    • 内容
      • 00001.jpg:示例图像。
      • 00002.jpg:另一张图像。
      • ...
  2. annotations/

    • 功能:存放标注文件。
    • 内容
      • VOC/:存放Pascal VOC格式的标注文件。
        • 00001.xml:示例VOC标注文件。
        • 00002.xml:另一张图像的VOC标注文件。
        • ...
      • YOLO/:存放YOLO格式的标注文件(选配)。
        • 00001.txt:示例YOLO标注文件。
        • 00002.txt:另一张图像的YOLO标注文件。
        • ...
  3. data.yaml

    • 功能:定义数据集的类别和其他相关信息。
    • 内容
      train: fabric_defect_detection_dataset/images
      val: fabric_defect_detection_dataset/images
      nc: 4
      names: ['hole', 'suspension_wire', 'topbasi', 'dirty']
  4. README.md

    • 功能:数据集的详细说明文档。
    • 内容
      • 数据集的来源和用途。
      • 数据集的结构和内容。
      • 如何使用数据集进行模型训练和评估。
      • 其他注意事项和建议。
数据集统计
  • 总图像数量:2800张
  • 总标注框数量:3734个
  • 类别:4类
  • 平均每张图像的标注框数量:约1.33个

具体类别及其统计如下:

  • hole(破洞):(425, 481)
  • suspension_wire(勾线):(1739, 1782)
  • topbasi(顶基):(46, 46)
  • dirty(污染):(613, 1425)
使用说明
  1. 环境准备

    • 安装依赖库:
      pip install -r requirements.txt
    • 确保安装了常用的深度学习库,例如torchtorchvisionnumpy等。
  2. 数据集路径设置

    • 将数据集解压到项目目录下,确保路径正确。
  3. 训练模型

     

    以下是一个使用PyTorch和torchvision库进行布匹瑕疵检测的示例代码。我们将使用预训练的Faster R-CNN模型,并对其进行微调以适应我们的数据集。

    import torch
    import torchvision
    from torchvision.models.detection.faster_rcnn import FastRCNNPredictor
    from torchvision.models.detection import FasterRCNN
    from torchvision.models.detection.rpn import AnchorGenerator
    from torchvision.transforms import functional as F
    from torch.utils.data import DataLoader, Dataset
    from PIL import Image
    import os
    import xml.etree.ElementTree as ET# 自定义数据集类
    class FabricDefectDetectionDataset(Dataset):def __init__(self, root, transforms=None):self.root = rootself.transforms = transformsself.imgs = list(sorted(os.listdir(os.path.join(root, "images"))))self.annotations = list(sorted(os.listdir(os.path.join(root, "annotations", "VOC"))))def __getitem__(self, idx):img_path = os.path.join(self.root, "images", self.imgs[idx])annotation_path = os.path.join(self.root, "annotations", "VOC", self.annotations[idx])img = Image.open(img_path).convert("RGB")annotation_root = ET.parse(annotation_path).getroot()boxes = []labels = []for obj in annotation_root.findall('object'):xmin, ymin, xmax, ymax = [int(obj.find('bndbox').find(tag).text) for tag in ('xmin', 'ymin', 'xmax', 'ymax')]label = obj.find('name').textlabel_id = ['hole', 'suspension_wire', 'topbasi', 'dirty'].index(label) + 1boxes.append([xmin, ymin, xmax, ymax])labels.append(label_id)boxes = torch.as_tensor(boxes, dtype=torch.float32)labels = torch.as_tensor(labels, dtype=torch.int64)target = {}target["boxes"] = boxestarget["labels"] = labelstarget["image_id"] = torch.tensor([idx])if self.transforms is not None:img, target = self.transforms(img, target)return F.to_tensor(img), targetdef __len__(self):return len(self.imgs)# 数据预处理
    def get_transform(train):transforms = []if train:transforms.append(torchvision.transforms.RandomHorizontalFlip(0.5))return torchvision.transforms.Compose(transforms)# 加载数据集
    dataset = FabricDefectDetectionDataset(root='fabric_defect_detection_dataset', transforms=get_transform(train=True))
    dataset_test = FabricDefectDetectionDataset(root='fabric_defect_detection_dataset', transforms=get_transform(train=False))indices = torch.randperm(len(dataset)).tolist()
    dataset = torch.utils.data.Subset(dataset, indices[:-500])
    dataset_test = torch.utils.data.Subset(dataset_test, indices[-500:])data_loader = DataLoader(dataset, batch_size=2, shuffle=True, num_workers=4, collate_fn=lambda x: tuple(zip(*x)))
    data_loader_test = DataLoader(dataset_test, batch_size=1, shuffle=False, num_workers=4, collate_fn=lambda x: tuple(zip(*x)))# 定义模型
    model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
    num_classes = 5  # 4类缺陷 + 背景
    in_features = model.roi_heads.box_predictor.cls_score.in_features
    model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)# 设置设备
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    model.to(device)# 定义优化器
    params = [p for p in model.parameters() if p.requires_grad]
    optimizer = torch.optim.SGD(params, lr=0.005, momentum=0.9, weight_decay=0.0005)# 训练模型
    num_epochs = 10
    for epoch in range(num_epochs):model.train()for images, targets in data_loader:images = list(image.to(device) for image in images)targets = [{k: v.to(device) for k, v in t.items()} for t in targets]loss_dict = model(images, targets)losses = sum(loss for loss in loss_dict.values())optimizer.zero_grad()losses.backward()optimizer.step()print(f'Epoch {epoch+1}/{num_epochs}, Loss: {losses.item()}')# 验证模型model.eval()with torch.no_grad():for images, targets in data_loader_test:images = list(image.to(device) for image in images)targets = [{k: v.to(device) for k, v in t.items()} for t in targets]outputs = model(images)# 保存模型
    torch.save(model.state_dict(), 'fabric_defect_detection_model.pth')
注意事项
  • 数据格式:确保输入的数据格式正确,特别是图像文件和标注文件的格式。
  • 超参数调整:根据实际情况调整学习率、批大小等超参数,以获得最佳训练效果。
  • 硬件要求:建议使用GPU进行训练和推理,以加快处理速度。如果没有足够的计算资源,可以考虑使用云服务提供商的GPU实例。
  • 数据增强:可以通过数据增强技术(如随机翻转、旋转等)来增加模型的鲁棒性。
  • 模型选择:除了Faster R-CNN,还可以尝试其他目标检测模型,如YOLOv5、SSD等,以找到最适合当前任务的模型。

http://www.lryc.cn/news/455301.html

相关文章:

  • 灵动微高集成度电机MCU单片机
  • 陪护小程序|护理陪护系统|陪护小程序成品
  • 【JVM】基础篇
  • 软件测试工程师 朝哪里进阶?
  • Obsidian Plugin Release Pre-check
  • Unity中实现预制体自动巡逻与攻击敌人的完整实现指南
  • OpenJudge | Shortest Prefixes
  • 速盾:高防服务器是如何防御CC攻击的?
  • Android阶段学习思维导图
  • React生命周期案例详解
  • 【ubuntu】ubuntu20.04安装显卡驱动
  • Mongo Java Driver使用getCollection做分页查询遇到的一些坑
  • RK3568笔记六十四:SG90驱动测试
  • 31 基于51单片机的水位监测系统仿真
  • Docker 实践与应用举例
  • 公开数据集网站分享
  • 实验OSPF路由协议(课内实验)
  • GPU Puzzles讲解(一)
  • 滚雪球学Oracle[1.3讲]:内存与进程架构
  • Nginx的正向与反向代理
  • esp8266 at指令链接wifi时一直connect disconnest
  • 基于SpringBoot博物馆游客预约系统【附源码】
  • 【JVM】内存区域划分,类加载的过程,.class文件的格式
  • esp32-camera入门(基于ESP-IDF)
  • react中类式组件与函数式组件的区别
  • 【D3.js in Action 3 精译_030】3.5 给 D3 条形图加注图表标签(下):Krisztina Szűcs 人物专访 + 3.6 本章小结
  • 【重学 MySQL】五十六、位类型
  • Centos7 NTP客户端
  • 手机号归属地查询-手机号归属地-手机号归属地-运营商归属地查询-手机号码归属地查询手机号归属地-运营商归属地
  • CoppeliaSim和Matlab建立远程连接教程