布匹瑕疵检测数据集 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 # 数据集说明
数据集内容
-
images/
- 功能:存放图像文件。
- 内容:
00001.jpg
:示例图像。00002.jpg
:另一张图像。- ...
-
annotations/
- 功能:存放标注文件。
- 内容:
VOC/
:存放Pascal VOC格式的标注文件。00001.xml
:示例VOC标注文件。00002.xml
:另一张图像的VOC标注文件。- ...
YOLO/
:存放YOLO格式的标注文件(选配)。00001.txt
:示例YOLO标注文件。00002.txt
:另一张图像的YOLO标注文件。- ...
-
data.yaml
- 功能:定义数据集的类别和其他相关信息。
- 内容:
train: fabric_defect_detection_dataset/images val: fabric_defect_detection_dataset/images nc: 4 names: ['hole', 'suspension_wire', 'topbasi', 'dirty']
-
README.md
- 功能:数据集的详细说明文档。
- 内容:
- 数据集的来源和用途。
- 数据集的结构和内容。
- 如何使用数据集进行模型训练和评估。
- 其他注意事项和建议。
数据集统计
- 总图像数量:2800张
- 总标注框数量:3734个
- 类别:4类
- 平均每张图像的标注框数量:约1.33个
具体类别及其统计如下:
hole
(破洞):(425, 481)suspension_wire
(勾线):(1739, 1782)topbasi
(顶基):(46, 46)dirty
(污染):(613, 1425)
使用说明
-
环境准备
- 安装依赖库:
pip install -r requirements.txt
- 确保安装了常用的深度学习库,例如
torch
,torchvision
,numpy
等。
- 安装依赖库:
-
数据集路径设置
- 将数据集解压到项目目录下,确保路径正确。
-
训练模型
以下是一个使用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等,以找到最适合当前任务的模型。
相关文章:

布匹瑕疵检测数据集 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&…...
灵动微高集成度电机MCU单片机
由于锂电技术的持续进步、消费者需求的演变、工具种类的革新以及应用领域的扩展,电动工具行业正呈现出无绳化、锂电化、大功率化、小型化、智能化和一机多能化的发展趋势。无绳化和锂电化的电动工具因其便携性和高效能的特性,已成为市场增长的重要驱动力…...

陪护小程序|护理陪护系统|陪护小程序成品
智能化,作为智慧医疗宏伟蓝图的基石,正引领着一场医疗服务的深刻变革。在这场变革的浪潮中,智慧医院小程序犹如璀璨新星,迅速崛起,而陪护小程序的诞生,更是如春风化雨,细腻地触及了老年病患、家…...

【JVM】基础篇
1 初识JVM 1.1 什么是JVM JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。 Java源代码执行流程如下: 分为三个步骤: 1、编写Java源代码文件。 …...
软件测试工程师 朝哪里进阶?
软件测试工程师 朝哪里进阶? 这里浅谈一下我的看法。 软件测试工程师 朝哪里进阶呢? 当我们测试工程师工作了2-3年后,就需要往前走往高走,就像一句名言说的:我们需要像ceo一样工作。 将自己的边界扩大一点࿰…...
Obsidian Plugin Release Pre-check
- [ ] 修改代码 - [ ] 修改README.md - [ ] 修改manifest.json - [ ] --将上述修改push到GitHub-- - [ ] 修改release版本 git tag git tag -a 1.0.6 -m "1.0.6" git push origin 1.0.6 ------------------------------------------- 备忘https://semver.org/lang/…...

Unity中实现预制体自动巡逻与攻击敌人的完整实现指南
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
OpenJudge | Shortest Prefixes
总时间限制: 1000ms 内存限制: 65536kB 描述 A prefix of a string is a substring starting at the beginning of the given string. The prefixes of “carbon” are: “c”, “ca”, “car”, “carb”, “carbo”, and “carbon”. Note that the empty string is not co…...
速盾:高防服务器是如何防御CC攻击的?
高防服务器是一种专门用于防御DDoS(分布式拒绝服务)攻击的服务器。其中一种常见的DDoS攻击就是CC(连续性攻击),它通过向目标服务器发送大量的请求来耗尽服务器资源,使网站无法正常运行。高防服务器采用多种…...

Android阶段学习思维导图
前言 记录下自己做的一个对Android原生应用层的思维导图,方便个人记忆扩展;这里只露出二级标题。 后语 虽然有些内容只是初步了解,但还是记录了下来;算是对过去一段学习的告别。...
React生命周期案例详解
React 组件的生命周期是指组件从创建、渲染、更新到卸载的整个过程。在 React 16 及之前的版本中,生命周期方法被分为几个不同的阶段:挂载(Mounting)、更新(Updating)、卸载(Unmounting…...

【ubuntu】ubuntu20.04安装显卡驱动
1.安装 点击右下角Apply Changes。 等安装好之后,重启。 现在的nvidia驱动已经很好安装了,比早期时安装出现黑屏等情况好了很多。 2.验证 nvidia-smi...
Mongo Java Driver使用getCollection做分页查询遇到的一些坑
背景 最近在做Mongo上的表数据的迁移,原本应该是DBA要干的活,但是想着DBA排期比较长,加上我们开发的权限又非常有限,而且数据量又没有多少,就想着自己开发个小小的程序从旧实例上查,写到新实例上去算了。于…...

RK3568笔记六十四:SG90驱动测试
若该文为原创文章,转载请注明原文出处。 前面有测试过PWM驱动,现在使用两种方式来产生PWM驱动SG90,实现舵机旋转任意角度 方法一:使用硬件PWM 方法二:使用高精度定时器,GPIO模拟PWM. 一、PWM子系统框架 二、SG90控制方法 舵机的控制需要MCU产生一个周期为20ms的脉冲信号…...

31 基于51单片机的水位监测系统仿真
目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,DHT11温湿度检测,水位检测,通过LCD1602显示,超过阈值报警,继电器驱动电机转动。通过矩阵按键切换选择设置各项参数阈值。 …...
Docker 实践与应用举例
一、容器化Web应用: 创建一个Docker容器来运行一个简单的Web应用,例如一个基于Node.js的Express应用。首先,编写Dockerfile来定义容器的构建过程,然后使用Docker命令来构建和运行容器。 使用Docker Compose来定义和管理多个容器组…...

公开数据集网站分享
参考链接:常用的医学组织切片细胞图像数据集_细胞分割数据集-CSDN博客文章浏览阅读1.3w次,点赞32次,收藏133次。乳腺癌细胞图像数据集、血细胞图像数据集、HE染色切片、疟疾细胞图像图像识别、分类、分割_细胞分割数据集https://blog.csdn.ne…...

实验OSPF路由协议(课内实验)
实验1:OSPF路由协议 实验目的及要求: 通过实验,能够理解链路状态型路由协议OSPF协议的工作原理,掌握如何实现单区域 OSPFv2配置指令,能够熟练的应用各种OSPF协议相关的配置指令完善网络设计。掌握验证OSPFv2网络连接…...

GPU Puzzles讲解(一)
GPU-Puzzles项目可以让你学习到GPU编程和cuda核心并行编程的概念,通过一个个小问题让你理解cuda的编程和调用,创建共享显存空间,实现卷积和矩阵乘法等,通过每个小问题之后还会奖励一个狗狗小视频😁 下面是项目的仓库&…...
滚雪球学Oracle[1.3讲]:内存与进程架构
全文目录: 前言一、SGA的深度解析1.1 SGA的作用与构成SGA的大小与调整 1.2 数据库缓冲区缓存(DB Cache)DB Cache的工作原理案例演示:调整DB Cache的大小 1.3 共享池(Shared Pool)的构成与调优共享池的组成部…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...