☰
谢韦尔钢铁缺陷数据集RLE标注解析与YOLO工业质检实战
2026/10/1 1:19:30 网站建设 项目流程

简介:谢韦尔钢铁表面缺陷检测数据集面向工业质检与目标检测任务,适合需要钢铁缺陷样本开展算法验证的研究者与开发者,尤其适用于YOLO系列快速落地,也可迁移至Faster RCNN、SSD等主流检测框架。数据集整体包含6572张图片的缺陷标注信息,压缩包大小97.16MB,共2000个文件,其中1999个txt标签文件记录目标边界框信息,1个yaml文件声明类别配置,标签已预先划分训练集、验证集和测试集,能够直接放入YOLO项目开始训练,无需再做格式转换或数据拆分。目前已有601人下载学习。这一压缩包的核心价值在于省去数据准备环节,拿到即可运行训练脚本,无论是入门目标检测还是复现论文方法,都能把精力集中在模型结构优化与检测效果验证上,特别适合钢铁表面缺陷检测场景的快速起步与算法对比。

1. 谢韦尔钢铁缺陷检测数据集:为什么工业质检复现总绕不开它

做工业缺陷检测的同行,大概率绕不开谢韦尔钢铁缺陷检测数据集(Severstal Steel Defect Detection)。它来自真实冷轧钢板产线的表面图像,标注了轧入氧化皮、斑块、划痕、表面夹杂这四类缺陷,是少数把“产线噪声、类别失衡、超大图像、条状缺陷”同时凑齐的公开数据。对目标检测方向的人来说,它的价值不完全在那几千张图上,而在于能逼着你把标注解析、切片策略、类别不均衡、灰度图训练这些实战问题完整走一遍。适合准备做工业质检落地、或者想用真实数据集检验自己 YOLO 训练流程的工程师。这篇笔记就按我实际复现的路径,从 RLE 标注解析一路写到切片推理。

2. 读懂 RLE 标注:把铁皮上的缺陷串解码成像素级 Mask

2.1 数据集结构里最容易被忽略的三个细节

这个数据集来自 Kaggle 竞赛,文件结构本身不复杂,但有三处细节直接影响后续处理。第一,训练标注在 train.csv 里,字段是 ImageId、ClassId、EncodedPixels,同一张图同一类缺陷可能对应多行记录,每一行代表一个独立的缺陷连通区域。第二,每张图是 1600×256 的灰度 PNG,不是常见的正方形图,直接 resize 会严重变形。第三,标注以 RLE(Run-Length Encoding)形式给出,而不是 COCO 的 polygon 或 box,想喂给 YOLO 必须先解码再转换。

RLE 的原理一句话就能说清:把 mask 拍平成一维数组后,用“起点 + 长度”的成对数字记录连续为 1 的像素段。比如1 5 10 3表示下标 1 到 5、10 到 12 的像素都是缺陷。解析时每两个数一组,把对应区间填 1 就行。关键在于起点从 1 开始计数,代码里要减 1 转成 0 基索引。

字段说明易错点
ImageId图片文件名,不带扩展名划分数据集时必须以它为单位,不能以缺陷实例为单位
ClassId缺陷类别 1~41 轧入氧化皮,2 斑块,3 划痕,4 表面夹杂
EncodedPixelsRLE 字符串,空格分隔同一 (ImageId, ClassId) 可有多行,必须合并

2.2 RLE 解码与可视化:先证明标注解析对了再往下走

我一般会先写一个独立解码脚本,把 mask 可视化叠加到原图上人工确认,而不是直接进入转框流程。解码产物不对,后面所有工作都白做。下面是标准的解码函数,也兼容同一类别多行 RLE 合并的场景。

import numpy as np import pandas as pd import cv2 IMG_H, IMG_W = 256, 1600 def rle_decode(rle_str, height=IMG_H, width=IMG_W): """把 RLE 字符串解码为二值 mask,返回 shape=(h, w) 的 uint8 数组。 <p> <a href="https://download.csdn.net/download/qq_53332949/89705726" style="color:#ec7500;font-size:14px;"> 本文还有配套的精品资源,点击获取 </a> <img alt="menu-r.4af5f7ec.gif" src="https://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif" style="width:16px;margin-left:4px;vertical-align:text-bottom;cursor:text;"> </p>

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询