引言

在建筑装修、工程质检和智能制造领域,地面瓷砖的表面缺陷检测是一项重要且具有挑战性的任务。传统的人工目检效率低、成本高,且容易因疲劳产生漏检。随着计算机视觉技术的发展,基于深度学习的自动缺陷检测方案逐渐成为主流,而一个高质量、标注精细的数据集是模型成功的关键。

本文介绍一个开源的地面瓷砖缺陷检测数据集。该数据集包含 3066 张 高质量标注图像,平均识别率达到 79.7%,涵盖了裂缝、弯曲变形、起皮、缺损脱落四种常见缺陷类型。数据集提供 YOLO、COCO JSON、PASCAL VOC XML 多种格式,方便研究者与开发者快速接入主流目标检测框架(如 YOLOv5/v8、MMDetection、Detectron2等)。文末附有完整的模型训练代码,助你从零开始训练自己的缺陷检测模型。

数据集概览

  • 数据总量:3066 张图像(已标注)
  • 缺陷类别:4 类
  • 平均识别率:79.7%
  • 标注格式:YOLO txt、COCO JSON、PASCAL VOC XML
  • 图像分辨率:原始尺寸不一,预处理后可统一至 1920×1080
  • 适用场景:瓷砖生产质检、装修工程验收、工业表面缺陷检测

缺陷类别详解

数据集中包含以下四种典型的地面瓷砖缺陷,其标签与示例如下:

标签 (英文) 标签 (中文) 缺陷描述
crack 裂缝 瓷砖表面出现线性裂开缝隙,但材料未脱落掉块。
buckled 弯曲变形 瓷砖整体形状发生弯曲、翘曲或变形,无开裂或掉皮现象。
exfoliation 起皮 表面涂层或材质像树皮一样呈层状、片状剥离。
spalling 缺损脱落 边角或表面整块碎渣、块状材料脱落,形成缺损。

标签解释

  • crack:只裂开缝隙,材料没有脱落掉块。
  • buckled:整体形状弯曲变形,无开裂掉皮。
  • exfoliation:像树皮一样一层层片状起皮。
  • spalling:整块碎渣、边角块状脱落缺损。

数据集统计与拆分

我们对数据集进行了标准的训练集、验证集、测试集划分,以确保模型评估的公正性。

  • 总图数:7667 张图数
  • 训练集:7048 张图
  • 验证集:296 张图
  • 测试集:323 张图

预处理与增强策略

为提升模型泛化能力,在训练阶段采用了以下预处理与数据增强策略:

  • 自动定向:应用
  • 调整大小:拉伸到 1920×1080
  • 增强
    • 单个训练样本输出份数:3 份
    • 90 度旋转:顺时针、逆时针
    • 边界框同步 90 度旋转:顺时针、逆时针
    • 边界框旋转角度范围:-15° ~ +15°
    • 边界框剪切形变:水平方向 ±10°、垂直方向 ±10°

数据集图片和标注信息示例

下图展示了数据集中部分原图及其对应的标注可视化效果,可以清晰看到边界框(Bounding Box)与缺陷类型的对应关系。

数据集示例图片1

数据集示例图片2

数据集示例图片3

模型训练指标参数

使用本数据集在 YOLOv8 框架下进行训练,得到的模型在测试集上的性能指标如下:

模型训练指标参数图

关键指标包括 Precision(精确率)、Recall(召回率)、mAP@0.5 和 mAP@0.5:0.95,综合识别率达到 79.7%

模型训练过程可视化

训练过程中的损失函数下降曲线和性能指标变化曲线如下图所示,模型收敛平稳。

模型训练过程图

数据集下载

数据集已按不同格式整理好,请根据你的训练框架选择下载:

YOLO模型训练实战

1. 环境准备

下载数据集并解压到你的项目文件夹。假设你使用 YOLOv8 进行训练。

2. 获取训练脚本

从我们的代码仓库克隆或复制训练脚本:

git clone https://gitcode.com/pbymw8iwm/YOLOProject.git

或者直接复制仓库中的 train_yolov8.py 脚本到你的数据集目录下。

3. 开始训练

在数据集根目录下,运行训练命令:

python train_yolov8.py

训练脚本会自动读取数据集配置,开始模型训练。

训练脚本示意图

模型验证与测试

训练完成后,可以使用以下代码加载最佳模型(best.pt)并对单张图片进行推理测试。

# 需要安装 pip install ultralytics
from ultralytics import YOLO
import cv2

# 加载训练好的 YOLO .pt 模型
model = YOLO('best.pt')  # 替换为你实际的 .pt 模型文件路径

# 定义要测试的图片路径
image_path = './image.jpg'  # 替换为你实际的图片文件路径

# 使用模型对图片进行预测
results = model(image_path)

# 获取预测结果
for result in results:
    # 获取绘制了检测框的图片
    annotated_image = result.plot()

    # 显示图片
    cv2.imshow("YOLOv Inference", annotated_image)

    # 等待按键退出
    cv2.waitKey(0)

    # 关闭所有 OpenCV 窗口
    cv2.destroyAllWindows()
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐