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

news2024/11/28 8:34:38

 

布匹瑕疵检测数据集 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 = root
            self.transforms = transforms
            self.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').text
                label_id = ['hole', 'suspension_wire', 'topbasi', 'dirty'].index(label) + 1
                boxes.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"] = boxes
            target["labels"] = labels
            target["image_id"] = torch.tensor([idx])
    
            if self.transforms is not None:
                img, target = self.transforms(img, target)
    
            return F.to_tensor(img), target
    
        def __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.coloradmin.cn/o/2192408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

近期最佳港片,探讨家庭与希望,结尾让人心碎

在当下的电影环境中,香港电影正在经历一场颇具深意的转变,逐渐将目光投向普通人的生活。这种变化在《但愿人长久》中体现得淋漓尽致,影片通过一个家庭的悲欢离合,让人深刻感受到人性的复杂。吴慷仁在片中扮演的角色,无…

github项目——系统设计入门

今天的github趋势,有几个项目印象感觉很有意思,之后可能会用的上,记录一下 系统设计入门 书籍教程类项目,有中文文档,刚好需要。 https://github.com/donnemartin/system-design-primer/blob/master/README-zh-Hans.md…

从零开始讲PCIe(9)——PCIe总线体系结构

一、分层结构 PCIe定义了一个分层架构,如图2-12所示。这些层逻辑上分为两个部分,分别独立运行:一个用于发送侧,另一个用于接收侧。分层方法对硬件设计者是很有好的,因为如果逻辑划分得当,在迁移到新版本的P…

Semantic Communications With AI Tasks——面向图像分类任务的语义传输系统

论文链接: 2109.14170 (arxiv.org)https://arxiv.org/pdf/2109.14170 1. 背景 无线网络从“万物互联”向“智能互联”转变的范式变化,这与香农和韦弗关于通信演变的预言相一致。传统的无线网络侧重于信号的准确传输(技术层面)&…

《CUDA编程》5.获得GPU加速的关键

从本章起&#xff0c;将关注CDUA程序的性能&#xff0c;即执行速度 1 用CUDA事件计时 在前几章中&#xff0c;使用的是C的<time.h>库进行程序运行计时&#xff0c;CUDA也提供了一种基于CUDA event的计时方式&#xff0c;用来给一段CUDA代码进行计时&#xff0c;这里只介…

数字化营销:开启商业新征程

在当今数字化时代&#xff0c;数字化营销已成为企业竞争的关键利器。 数字化营销有着完整的体系。首先是目标设定与市场分析&#xff0c;明确如提高品牌知名度、增加销量等目标&#xff0c;并通过市场调研了解消费者需求。接着是客户洞察与定位&#xff0c;收集客户数据构建画像…

安装最新 MySQL 8.0 数据库(教学用)

安装 MySQL 8.0 数据库&#xff08;教学用&#xff09; 文章目录 安装 MySQL 8.0 数据库&#xff08;教学用&#xff09;前言MySQL历史一、第一步二、下载三、安装四、使用五、语法总结 前言 根据 DB-Engines 网站的数据库流行度排名&#xff08;2024年&#xff09;&#xff0…

面试官:MySQL 什么时候会出现死锁问题?为什么不推荐使用RR隔离级别?

欢迎关注公众号 【11来了】 &#xff0c;持续 MyBatis 源码系列内容&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址&#xff1a;点击查看文章导读&#xff01; 感谢你的关注&#xff…

WindowsTerminal 美化-壁纸随机更换

目录 一. 相关网址二. 壁纸随机更换思路三. 指定 WindowsTermina 壁纸路径四. 编写脚本&#xff0c;随机替换壁纸4.1 powershell脚本4.2 .bat批处理脚本 四. 配置定时任务&#xff0c;添加触发器五. 效果 一. 相关网址 官方下载 Windows Terminal 官方Github微软商店 美化 Oh …

链式二叉树及二叉树各种接口的实现(C)

二叉树的性质 若规定根节点的层数为1&#xff0c;则一棵非空二叉树的第 i i i层上最多有 2 i − 1 2^{i-1} 2i−1个结点.若规定根节点的层数为1&#xff0c;则深度为h的二叉树的最大结点数是 2 h − 1 2^{h}-1 2h−1对任何一棵二叉树&#xff0c;如果度为0其叶结点个数为 n 0 …

Semantic Communication Meets Edge Intelligence——构造终端共享的知识图谱指导无线物联网通信中文本的传输

论文链接&#xff1a; IEEE Xplore Full-Text PDF:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9979702 1. 背景 随着自动驾驶、智能城市等应用的发展&#xff0c;移动数据流量将大幅增加。传统的香农信息论&#xff08;CIT&#xff09;通信系统已接近其带…

内网穿透工具ngrok

写作背景 最近在公司内购淘了个MAC电脑&#xff0c;想当个Linux服务器起Docker搭建环境用&#xff0c;现在问题是如何在公网上能访问到MAC这个机器上的资源。 之前写了一篇文章Mac当作云服务器&#xff0c;你真的会搞吗 最近想重启一下这台老伙计了&#xff0c;发现ngrok还是…

CIKM 2024 | 时空数据(Spatial-temporal)论文总结

CIKM 2024于10月21号-10月25号在美国爱达荷州博伊西举行&#xff08;Boise, Idaho, USA&#xff09; 本文总结了CIKM 2024有关时空数据&#xff08;spatial-temporal data&#xff09;的相关论文&#xff0c;主要包含交通预测&#xff0c;插补&#xff0c;事故预测&#xff0c…

计算机网络——http和web

无状态服务器——不维护客户端 怎么变成有状态连接 所以此时本地建立代理—— 若本地缓存了——但是服务器变了——怎么办&#xff1f;

CSS元素堆叠

通常我们可能会认为 HTML 网页是个二维的平面&#xff0c;因为页面中的文本、图像或者其它元素都是按照一定顺序排列在页面上的&#xff0c;每个元素之间都有一定的间隙&#xff0c;不会重叠。然而&#xff0c;实际的网页其实是三维的&#xff0c;元素之间可能会发生堆叠&#…

《python语言程序设计》2018版第8章19题几何Rectangle2D类(中)-同志们我要起飞了

前言 昨天的原始绘制两个矩形的代码段draw_rec2原始draw_rec2运行结果我们不是上面往右转90.我怎么往左转90不对吗??? ☺️结果利用已建立完的Rectangle2D类来实现Rectangle2D类的代码可以找上集看,今天是锻炼的一天好几个倒立体式解锁了.祝大家愉快 经过昨天晚上的努力我终…

Python画笔案例-078 绘制 颜色渐变之coloradd

1、绘制纯 颜色渐变之coloradd 通过 python 的turtle 库绘制 颜色渐变之coloradd,如下图: 2、实现代码 绘制 颜色渐变之coloradd,以下为实现代码: """颜色渐变之coloradd.py本程序需要coloradd模块支持,请在cmd窗口,即命令提示符下输入pip install colorad…

VMware桥接模式无法连接网络

windows下打开控制面板&#xff0c;找到WLAN&#xff0c;记住下面的名称&#xff08;带有VMware的都是虚拟机的网卡&#xff0c;要找到物理主机的网卡&#xff09; 回到VMware&#xff0c;编辑——打开虚拟网络编辑器 桥接选择上面的WLAN下的网络名称&#xff0c;确定即可。&…

tortorise数据库迁移变化aerich

数据库迁移 使用场景&#xff0c;当需要修改定义的数据库中表的数据时&#xff0c;就可以利用aerich进行迁移改动 例如 class Asset(models.Model):aid fields.CharField(max_length50, pkTrue)asset_name fields.CharField(max_length150)target_name fields.CharField(…

GO网络编程(三):海量用户通信系统1:登录功能初步

一、准备工作 需求分析 1)用户注册 2)用户登录 3)显示在线用户列表 4)群聊(广播) 5)点对点聊天 6)离线留言 主界面 首先&#xff0c;在项目根目录下初始化mod&#xff0c;然后按照如下结构设计目录&#xff1a; 海量用户通信系统/ ├── go.mod ├── client/ │ ├──…