QualityInspector 工业质检数据集准备实战:以磁砖缺陷数据为例的三种任务格式转换全指南
人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载工业缺陷数据集通常没有统一的数据组织形式而 QualityInspector 工业质检全流程解决方案支持检测、分割、检测RoI 分割串联等多种任务方案不同方案对数据格式的要求各不相同。本文以 Magnetic-tile-defect磁砖表面缺陷公开数据集为例完整讲解如何在 QualityInspector 中把一份原始缺陷图像数据逐步转换为 PaddleSeg 全图分割、RoI 区域分割和 COCO 检测标注三种标准格式并深入解析 tools/dataset/MT_dataset.py、tools/convert_tools/ 下三个转换工具的源码实现与参数含义。读完本文你将能够独立完成任意工业质检数据集从原始标注到多任务训练输入的整理工作并知晓转换后的数据如何接入检测、RoI 分割与端到端全流程配置。一、背景工业质检数据为何需要三步转换工业质检场景数据存在两个显著特点数据集组织形式不统一不同厂商、不同产线、不同论文发布的缺陷数据集其文件组织、标签编码方式千差万别难以直接喂给统一的训练框架任务方案多样QualityInspector 支持检测、分割单模型以及检测RoI 分割串联结合后处理的解决方案见 QualityInspector README 简介每种方案需要的标注输入格式不同。因此QualityInspector 在 tools/dataset/ 和 tools/convert_tools/ 中提供了一组数据通用工具脚本以先统一为全图分割格式再按需派生其他任务格式的思路完成数据准备流程可概括为下载原始数据集了解其目录结构与标签编码转换为全图分割训练格式PaddleSeg 标准images/annos/train.txt/val.txt按需派生需要区域分割则转 RoI 格式需要检测/实例分割则转 COCO 格式 json需要标注则配合 EISeg 等工具详见 数据分析工具 与 PaddleSeg 数据标注说明 marker_cn.md。下面以磁砖缺陷数据为例逐步展开。二、公开数据集下载与原始目录结构2.1 数据集来源与类别Magnetic-tile-defect-datasets 是论文 Saliency of magnetic tile surface defects 发布的磁砖表面缺陷数据集收集了6 类常见磁砖图像其中 Free 为正常无缺陷 OK 图并提供了像素级标注分割掩码。数据集示例可视化如下图所示上、下两组分别展示各缺陷类别的原始磁砖灰度图Image与其像素级标注掩码GT白色区域精确标定缺陷位置与范围Free 类掩码为全黑。2.2 原始目录结构将下载的数据集解压保存到dataset目录后其组织方式为按缺陷类别分目录、每目录下Imgs存放图像与同名 PNG 标注Magnetic-Tile-Defect | |--MT_Blowhole | |--Imgs | | |--exp1_xxx.jpg | | |--exp1_xxx.png | | ... |--MT_Break | |--Imgs | | |--exp1_xxx.jpg | | |--exp1_xxx.png | | ... | ... |--MT_Free | |--Imgs |--MT_Uneven | |--Imgs从转换脚本源码 MT_dataset.py 可以确认 6 个类别与标签 id 的对应关系类别目录类别名称标签 id含义MT_FreeFree0无缺陷作为背景MT_BlowholeBlowhole1气孔MT_BreakBreak2断裂MT_CrackCrack3裂纹MT_FrayFray4磨损/破损MT_UnevenUneven5表面不均注意背景Free的标签 id 是 0其余 5 类缺陷 id 为 1~5。这直接决定了后续转换命令中--class_num 5的含义——class_num统计的是除背景外的缺陷类别数。三、转换为全图分割训练数据格式PaddleSeg 标准格式3.1 转换命令下载原始数据集后执行以下命令完成转换dataset_path为原始数据目录output_path为保存目录python3 tools/dataset/MT_dataset.py --dataset_path ./dataset/Magnetic-Tile-Defect --output_path ./dataset/MT_dataset/执行完成后转换结果保存在dataset/MT_dataset/路径下为标准 PaddleSeg 分割训练格式。3.2 输出目录结构MT_dataset | |--images | |--train | | |--exp1_xxx.jpg | | |--exp1_xxx.jpg | | ... | |--val | | |--exp6_xxx.jpg | | |--exp6_xxx.jpg |--annos | |--train | | |--exp1_xxx.png | | |--exp1_xxx.png | | ... | |--val | | |--exp6_xxx.png | | |--exp6_xxx.png |--train.txt |--val.txt其中train.txt和val.txt每一行保存一对原图路径 对应标签图像路径供分割训练直接读取。3.3 源码原理剖析从 MT_dataset.py 源码可以看到转换的核心逻辑训练/验证划分规则L30-L31以文件名的 exp 前缀划分TRAIN_PREFIX [exp0, exp1, exp2, exp3, exp4]归入 trainVAL_PREFIX [exp5, exp6]归入 val前缀不匹配任何集合时抛出ValueError标注二值化L92-L94用cv2.imread(..., -1)以灰度模式读取与图像同名的 PNG 标注将像素值 240的置为 0背景 240的置为当前类别的标签 id从而把原始灰度标注归一化为 0~5 的类别索引图Free 类处理Free 的标签 id 为 0其标注经过二值化后全部为 0即全黑背景图作为无缺陷负样本参与训练列表文件生成L102-L115同步向train.txt/val.txt写入图像路径 空格 标注路径。实用提示来自源码的细节源码中 L60-L65 实际创建的标注目录名为anno单数而文档示例结构写作annos。运行脚本后请以实际生成目录名为准在后续命令中正确指定--anno_path否则会因目录不存在而报错。四、全图分割数据转 RoI 分割文件若希望尝试检测RoI 分割的质检方案RoI 分割模块只对检测框裁剪出的区域做缺陷分割需要将全图分割标签转为 RoI 区域分割格式。完整工具说明见 数据转换工具。4.1 转换命令python3 tools/convert_tools/convert_mask_to_RoI.py --image_path dataset/MT_dataset/images/train --anno_path dataset/MT_dataset/annos/train --class_num 5 --output_path dataset/MT_dataset/RoI/ --suffix .png --to_binary磁砖数据除去背景共 5 类缺陷因此--class_num填 5。4.2 参数说明参数名含义默认值--image_path需要转化的原图目录必填--anno_path原图对应的分割标签目录必填--class_num除背景外的分割类别数必填--to_binary是否将标签转为 2 类0 背景 / 1 前景训练False--suffix标签文件名相对图像名的后缀含扩展名如xxx.jpg对应xxx.png时填.png.png--pad_scale裁剪框的 pad 尺度0.5--output_pathRoI 图像、标签与列表的保存目录./output/RoI/4.3 输出与源码原理转换后得到三部分产物见 convert_mask_to_RoI.pyoutput_path/images/RoI 裁剪图像文件名为原始图像名 类别 id RoI id如exp1_xxx_1_3.pngoutput_path/anno/对应的 RoI 分割标签0 为背景1 为前景指定--to_binary时output_path/RoI.txt图像与标签路径列表每行一对供分割训练直接使用。源码处理流程L108-L133对每个类别 id 构造类别掩码class_map等于该 id 的像素置 1用cv2.connectedComponentsWithStats找出每个缺陷的连通域及其包围盒调用 bbox_utils.adjust_bbox 对包围盒做先补成正方形、再按pad_scale向外扩边的处理并裁剪图像与标签--to_binary开启时将裁剪标签中所有 0的像素置 1使 RoI 分割退化为前景/背景二分类磁砖案例中即缺陷/无缺陷二分类。该输出正对应 RoI 分割训练配置的输入在 ocrnet_hrnetw18_RoI_defect_256x256_40k.yml 中train_path指向dataset/MT_dataset/RoI/train/RoI.txtval_path指向dataset/MT_dataset/RoI/val/RoI.txt且num_classes: 2。五、全图分割数据转 COCO 格式 json 文件若希望尝试检测或实例分割算法需要把全图分割标签转换为 COCO 格式的 json 标注文件。完整工具说明见 数据转换工具。5.1 转换命令python3 tools/convert_tools/convert_mask_to_coco.py --image_path dataset/MT_dataset/images/train --anno_path dataset/MT_dataset/annos/train --class_num 5 --label_file dataset/MT_dataset/mt_catIDs.json --output_name dataset/MT_dataset/train.json --suffix .png由于除去背景是 5 类缺陷--class_num同样填 5。执行后在dataset/MT_dataset/train.json得到 train 数据的 COCO 格式检测训练文件。若要生成验证集val.json将--image_path、--anno_path、--output_name中的train改为val再执行一次即可。5.2 参数说明参数名含义默认值--image_path需要转化的原图目录必填--anno_path原图对应的分割标签目录必填--class_num除背景外的分割类别数必填--label_file保存类别 id ↔ 类别名字典的 json 文件None--suffix标签文件名相对图像名的后缀含扩展名.png--output_name输出的 json 文件名coco.json5.3 输出与源码原理生成的标准 COCO json 包含images、annotations、categories三个字段见 convert_mask_to_coco.pyimages每张图像的file_name、id、宽高annotations每个缺陷实例的bbox、area、segmentation多边形轮廓点、category_id、iscrowdcategories每个类别的 id 与名称。源码实现要点L91-L122与 RoI 转换类似先按类别构造掩码并做连通域分析得到每个缺陷实例的包围盒通过cv2.findContours提取连通域轮廓flatten()后作为segmentation多边形写入标注category_id直接沿用分割标签的类别 id1~5--label_file若提供则用其字典内容覆写 categories 中的类别名称不设置时categories里类别的name直接为类别序号str(class_id)如 1、2。从源码L123-L126可以推断--label_file是一个字符串类别 id → 类别名称的 JSON 字典例如{1: Blowhole, 2: Break, 3: Crack, 4: Fray, 5: Uneven}用于让生成的 COCO 文件携带可读的类别名。六、转换结果如何接入 QualityInspector 训练与全流程数据转换的最终目的是被下游训练与推理配置消费以磁砖案例在 QualityInspector 中的使用方式为例6.1 检测任务消费 COCO jsonconfigs/det/datasets/defect_detection.yml 中TrainDataset与EvalDataset的anno_path分别指向./dataset/MT_dataset/train.json与./dataset/MT_dataset/val.jsonnum_classes: 5与转换时的--class_num 5保持一致。数据集加载器类型为COCODataSet即直接读取上一步生成的 COCO 文件进行检测训练具体训练命令见 检测分割训练与验证。6.2 RoI 分割任务消费 RoI.txtocrnet_hrnetw18_RoI_defect_256x256_40k.yml 通过train_path/val_path读取RoI.txt列表num_classes: 2对应--to_binary产生的二分类 RoI 标签配合 DiceLoss权重[0.4, 0.6]缓解前景像素稀少问题训练区域分割模型。6.3 端到端全流程串联消费两种数据在 e2e_det_RoI_seg.yml 中PipeLine依次串联Detection读取检测模型与score_threshold、CropSegmentation按pad_scale: 0.5裁剪 RoI 并送入分割模型、PostProcess按类别 id 配置score_threshold、len_thresh、area_thresh等规则做缺陷判定完整展示了检测 → RoI 裁剪 → 区域分割 → 后处理的工业质检落地方案如何复用本节准备的两种数据格式。七、数据质量检查与更多转换方向完成转换后建议先做可视化与统计检查再进入训练详见 数据分析工具COCO 数据可视化python3 tools/dataset/visualize_coco.py --json_path ./dataset/MT_dataset/train.json --root_path ./ --save_path ./show/检查 json 是否正确转换分割标签可视化python3 tools/dataset/visualize_annotation.py --file_path ./dataset/MT_dataset/train.txt --save_path ./show/检查分割数据是否对应正确类别统计与损失权重python3 tools/dataset/cal_class_weights.py --anno_path ./dataset/MT_dataset/annos/val --temperature 0.8 --num_workers 4输出各类别频率矩阵与加权权重temperature越大权重越平滑用于指导类别不平衡场景下的损失加权。此外若你的原始数据本身就是 COCO 检测标注而后续需要 RoI 分割模块可以使用第三个工具 convert_coco_to_RoI_mask.py--json_path指定 COCO 文件、--seg_classid 1 2指定需要分割的类别、--pad_scale 0.5控制裁剪 padding将 COCO 多边形标注还原为 RoI 前景二值分割其内部通过polygons_to_bitmask将多边形栅格化为掩码再按包围盒裁剪详见 conver_tools.md 3.3从而打通检测数据 → RoI 分割数据的反向转换链路。八、注意事项小结class_num语义始终为除背景外的类别数。磁砖案例背景 Free 的 id 为 05 类缺陷故所有转换命令--class_num 5目录名差异MT_dataset.py 源码实际创建标注目录anno单数而文档示例写作annos请以实际生成目录为准suffix语义指标签名相对图像名的后缀含扩展名如图像xxx.jpg、标签xxx.png时填.pngtrain/val 划分MT_dataset.py 按文件名 exp 前缀划分exp0~exp4 训练exp5~exp6 验证转换其他数据集时需仿照该脚本改写划分逻辑RoI 转换的跳过逻辑convert_mask_to_RoI.py中若整图掩码和为 0无缺陷则跳过该图符合工业质检OK 图不进入缺陷分割训练的常规做法实验性说明convert_tools 目前为实验性功能见 conver_tools.md使用中如遇问题建议结合源码排查并向项目反馈。至此一份磁砖缺陷原始数据集已经完成全图分割 → RoI 分割 → COCO 检测三种格式的转换与质量校验可直接支撑 QualityInspector 下的检测、RoI 分割及端到端全流程方案的训练与评测。其他工业质检数据集如纺织、金属、3C 电子等亦可套用本文的先统一分割格式、再按需派生方法论完成准备。赞分享人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载相关推荐工业级PCB缺陷检测数据集完全指南从数据到实战应用工业级PCB缺陷检测数据集完全指南从数据到实战应用 在电子制造业智能化转型的关键时期PCB缺陷检测数据集成为推动自动化质检技术突破的核心要素。DeepPCB数据集计算机视觉工业制造whisper-timestamped测试与验证确保转录准确性的专业方法whisper timestamped测试与验证确保转录准确性的专业方法 whisper timestamped是一款强大的多语言自动语音识别工具它不仅能将语音人工智能音频DeepPCB工业级PCB缺陷检测数据集的完整实战指南DeepPCB工业级PCB缺陷检测数据集的完整实战指南 还在为PCB缺陷检测项目找不到高质量数据集而苦恼吗DeepPCB开源数据集为你提供专业级的解决方案数据集计算机视觉工业制造上一篇Infinite Scroll开发环境搭建从源码到测试的完整流程下一篇Apache APISIX SSL 协议配置指南静态与动态 TLS 版本控制实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

NLP学术速递工作流:精准筛选与可操作知识提取

NLP学术速递工作流:精准筛选与可操作知识提取

1. 这不是“新闻简报”,而是一份NLP研究者的日常补给清单你有没有过这种体验:早上打开arXiv,看到27篇新上传的NLP论文标题,扫了一眼“LLM-based Reasoning over Knowledge Graphs with Adaptive Prompting”,心里一紧—…

2026/9/25 5:55:41 阅读更多 →
CLI Agent 实战:OpenRouter 与 MCP 工具链整合指南

CLI Agent 实战:OpenRouter 与 MCP 工具链整合指南

1. 从"treg"这个标题说起:一个被低估的CLI工具链整合思路第一次看到"treg"这个词,我脑子里蹦出来的第一反应是"这又是什么新造的名词"。翻了一圈热词列表才反应过来,这大概率是一个把OpenRouter、Agent、CLI、…

2026/9/25 5:54:39 阅读更多 →
手把手教你搭建IEEE33节点配电网Simulink模型

手把手教你搭建IEEE33节点配电网Simulink模型

我研究生第一年接触的第二个“正经任务”,就是导师扔给我一张IEEE33节点配电网的单线图和一句话:“先把这个网络在Simulink里跑起来,再谈后面的重构算法。”当时我以为33个节点算什么,无非是多布几条线,结果真正动手之…

2026/9/25 5:54:39 阅读更多 →

最新新闻

网络安全应急演练实战:从ATTCK场景设计到自动化处置剧本

网络安全应急演练实战:从ATTCK场景设计到自动化处置剧本

简介:这份文档资料面向政府机构、企事业单位的安全管理人员及专业应急处理人员,系统讲解网络安全应急响应预案的培训与演练方法,帮助组织在遭遇网络攻击、数据泄露等突发事件时做到临危不乱、快速处置。内容围绕演练目的、预案培训、实战演练…

2026/9/25 9:43:43 阅读更多 →
系统安全与网络安全:双线防御的落地实践与衔接技巧

系统安全与网络安全:双线防御的落地实践与衔接技巧

简介:《计算机系统安全与计算机网络安全》是一份PDF格式的学习参考资料,定位面向计算机专业学生、网络管理员及网络安全入门者,用于建立计算机系统安全与网络安全的基础知识框架。资源包仅包含1个PDF文件,大小约1.07MB&#xff0c…

2026/9/25 9:43:43 阅读更多 →
红蜘蛛管控系统深度卸载与网络无感禁用指南

红蜘蛛管控系统深度卸载与网络无感禁用指南

1. 红蜘蛛不是“普通软件”,而是一套深度驻留的教室管控系统很多人第一次面对红蜘蛛(3000soft Red Spider)时,下意识把它当成一个双击就能关掉的普通教学软件——点右上角、任务栏右键退出、甚至进任务管理器结束进程,…

2026/9/25 9:43:43 阅读更多 →
CTMS系统架构设计:从状态机到合规审计的落地指南

CTMS系统架构设计:从状态机到合规审计的落地指南

简介:CTMS 系统架构说明是一份面向客户与开发者的技术文档,旨在解决 CTMS 系统部署前的容量规划、性能评估与数据安全等关键问题。内容覆盖系统架构(一般型与扩充型)与软件架构分层,说明两种架构的适用场景——一般型适…

2026/9/25 9:43:43 阅读更多 →
程序员用AI写AI代码:TaoToken统一Key接入Copilot的settings.json配置与验证

程序员用AI写AI代码:TaoToken统一Key接入Copilot的settings.json配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 9:43:43 阅读更多 →
PCB功率电感底部铺铜还是挖空?EMI与热设计的工程平衡法则

PCB功率电感底部铺铜还是挖空?EMI与热设计的工程平衡法则

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 9:42:43 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →