可视化-谢韦尔钢铁公司带钢缺陷数据集的标注(标注转图像保存)

博客聚焦于谢韦尔钢铁公司带钢缺陷数据集,进行标注的可视化处理,并将标注转换为图像保存,属于信息技术领域的数据处理相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可视化-谢韦尔钢铁公司带钢缺陷数据集的标注(标注转图像保存)

import numpy as np
import pandas as pd
from torchvision import transforms
def rle2mask(rle, imgshape):
    width = imgshape[0]
    height = imgshape[1]

    mask = np.zeros(width * height).astype(np.uint8)

    array = np.asarray([int(x) for x in rle.split()])
    starts = array[0::2]
    lengths = array[1::2]

    current_position = 0
    for index, start in enumerate(starts):
        mask[int(start):int(start + lengths[index])] = 1
        current_position += lengths[index]

    return np.flipud(np.rot90(mask.reshape(height, width), k=1))

tr = pd.read_csv(r"D:\BaiduPan\钢铁类相关缺陷数据集\谢韦尔钢铁公司带钢缺陷数据集\train.csv")
print(len(tr))
tr.head()

df_train = tr[tr['EncodedPixels'].notnull()].reset_index(drop=True)

print(len(df_train))
print(df_train.head())

for index in range(len(df_train)):
    ImageId_ClassId = df_train['ImageId_ClassId'].iloc[index]
    maskName = ImageId_ClassId.split("_")[0]

    mask = rle2mask(df_train['EncodedPixels'].iloc[index], (256, 1600))
    mask = transforms.ToPILImage()(mask)
    # mask = np.array(mask)*255
    mask = mask.point(lambda x: 255 if x >0 else 0)
    mask.show()
    mask.save(maskName)



在这里插入图片描述

### 韦尔钢铁公司带钢缺陷数据集中的缺陷类型 韦尔钢铁公司带钢缺陷数据集中包含了多种类型的缺陷,这些缺陷被清晰地分类并标注。具体来说,该数据集中共有 **4 种缺陷类别**,分别是: 1. **Crack (裂纹)** 这类缺陷指的是材料表面存在的裂缝或断裂现象,通常是由外部应力或其他物理因素引起的[^3]。 2. **Patches (斑点/污渍)** Patches 表示的是表面上的小面积异常区域,可能由污染、氧化物残留等原因造成。 3. **Pitting (腐蚀坑洞)** Pitting 是指金属表面由于化学反应而形成的局部凹陷或孔洞,常见于腐蚀环境下产生的损伤。 4. **Scratches (划痕)** Scratches 描述的是沿某一方向的线性痕迹,通常是机械接触或摩擦的结果,在工业生产过程中较为普遍。 上述每种缺陷均通过专业的标注工具进行了精确标记,并提供了详细的边界框信息以便后续的目标检测任务使用。此外,各类别的标注数量分别为:`crack 框数 = 321`, `patches 框数 = 1911`, `pitting 框数 = 3085`, 和 `scratches 框数 = 14700`,总计达到 20,017 个标注框。 以下是部分代码片段展示如何读取 YOLO 格式的标签文件来获取特定图像上的缺陷类别及其位置信息: ```python def read_yolo_labels(file_path): with open(file_path, 'r') as f: lines = f.readlines() labels = [] for line in lines: class_id, x_center, y_center, width, height = map(float, line.strip().split()) label_info = { "class": int(class_id), "x_center": x_center, "y_center": y_center, "width": width, "height": height } labels.append(label_info) return labels # 示例调用 labels_data = read_yolo_labels('path_to_label_file.txt') print(labels_data) ``` 此函数可以解析单个 `.txt` 文件的内容,返回其中存储的所有目标的位置和类别索引。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值