带标注的焊缝缺陷识别,可识别裂纹,气孔,烧痕数据集,识别率91.8%,5993张图,支持yolo,coco json,voc xml,文末有模型训练代码

📅 2026/7/8 10:11:17 👁️ 阅读次数 📝 编程学习
带标注的焊缝缺陷识别,可识别裂纹,气孔,烧痕数据集,识别率91.8%,5993张图,支持yolo,coco json,voc xml,文末有模型训练代码

本文介绍一个高质量的焊缝缺陷识别数据集,专门用于训练和评估目标检测模型。该数据集包含5993张精心标注的工业焊缝图像,涵盖三种常见缺陷类型:裂纹(Grieta)、气孔(Poro)、烧痕(Quemadura)。经测试,基于该数据集训练的YOLO模型识别率可达91.8%

数据集提供多种标注格式,支持主流目标检测框架:

  • YOLO格式:适用于YOLOv5/v6/v7/v8/v9/v10/v11/v12等版本
  • COCO JSON格式:适用于MMDetection、Detectron2等框架
  • Pascal VOC XML格式:适用于传统目标检测算法

数据集已按标准比例划分为训练集、验证集和测试集,并提供了完整的模型训练代码和验证脚本,方便研究者快速上手。

模型训练指标参数:


模型训练图:

数据集拆分

总图数:5993 张图数
训练集

4195 张图

验证集

1199 张图

测试集

599 张图

预处理

自动定向:应用

调整大小:拉伸到640x640

增强

数据集标签:

[‘Grieta’, ‘Poro’, ‘Quemadura’]

标签音标中文释义西语例句 + 中文翻译
Grieta[ˈgɾjeta]裂缝、裂痕、缝隙(墙体/石材/路面裂纹)La roca tiene una grieta profunda.
这块岩石有一道很深的裂缝。
Poro[ˈpoɾo]微孔、孔隙El aceite tapa los poros de la piel.
油脂会堵塞皮肤毛孔。
Quemadura[kemaˈðuɾa]灼伤;烧灼痕迹Me hice una quemadura con la sartén.
我被平底锅烫伤了。

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


数据集获取与使用

数据集已上传至CSDN资源平台,包含完整的图像文件和三种格式的标注文件。下载后解压即可使用。

下载地址

  • 焊缝缺陷识别数据集下载

文件结构说明

焊缝缺陷数据集/ ├── images/ # 所有图像文件 │ ├── train/ # 训练集图像 │ ├── val/ # 验证集图像 │ └── test/ # 测试集图像 ├── labels/ # YOLO格式标注文件 ├── annotations/ # COCO JSON和VOC XML标注文件 └── README.txt # 数据集说明文档

支持格式

  1. YOLO格式:适用于所有YOLO系列模型
  2. COCO JSON格式:适用于MMDetection、Detectron2等框架
  3. Pascal VOC XML格式:适用于传统目标检测算法

数据集已按标准比例划分,可直接用于模型训练。

YOLO模型训练实践

环境准备与数据准备

  1. 下载数据集:从上述链接下载数据集并解压到项目目录
  2. 获取训练代码:克隆或下载训练脚本仓库
    gitclone https://gitcode.com/pbymw8iwm/YOLOProject.git
    或直接下载仓库中的训练脚本文件

训练步骤

  1. 配置训练环境:确保已安装PyTorch和Ultralytics库

    pipinstalltorch torchvision pipinstallultralytics
  2. 准备数据配置文件:创建data.yaml文件,配置数据集路径和类别信息

    path:./焊缝缺陷数据集# 数据集根目录train:images/train# 训练集路径val:images/val# 验证集路径test:images/test# 测试集路径nc:3# 类别数量names:['Grieta','Poro','Quemadura']# 类别名称
  3. 执行训练:根据使用的YOLO版本选择对应的训练脚本

    # 使用YOLOv8训练python train_yolov8.py

训练过程监控

训练过程中,Ultralytics会自动记录各项指标,包括损失函数变化、精度、召回率等。训练完成后,会在runs/train/目录下生成以下文件:

  • 最佳模型权重文件(best.pt
  • 训练过程可视化图表
  • 验证结果和混淆矩阵
  • 模型性能评估报告

图:YOLO模型训练过程中的损失函数和精度变化曲线

模糊图片在模型训练中的优势分析

该数据集中包含了如果包含了一些模糊图片,这并非数据缺陷,而是一种精心设计的数据增强策略,能为模型训练带来以下显著优势:

  1. 提升模型鲁棒性:现实场景中,可能发生在运动模糊,对焦不准或光线不足的情况下。在训练集中引入模糊样本,可以迫使模型学习更本质的特征,而不是过度依赖清晰的边缘或纹理细节,从而提升模型在复杂、非理想成像条件下的识别能力。
  2. 模拟真实世界噪声:监控摄像头、手机等设备在低光照或快速移动时极易产生模糊。包含此类图片的数据集能让模型提前“见识”并适应这种噪声,减少在实际部署时因图像质量下降而导致的性能骤降。
  3. 防止模型过拟合:如果训练集全是高清、摆拍的完美图片,模型容易记住这些特定场景下的“干净”特征,而对新的、稍有模糊的图片泛化能力差。模糊图片作为一种有效的正则化手段,可以增加数据分布的多样性,防止模型过拟合到有限的清晰样本上。
    总结:因此,数据集中包含的模糊图片,与你看到的“水平翻转”、“剪切形变”、“随机遮挡”等增强操作一样,都是为了构建一个更接近真实世界复杂分布的数据环境,从而训练出更健壮、更泛化、更实用的模型。

模型验证测试情况:

验证测试代码:

#需要安装pip install ultralyticsfromultralyticsimportYOLOimportcv2# ===================== 1. 加载YOLO模型 =====================# 自动下载预训练模型(yolov8n最轻量快速),也可换 yolov8s/m/l/xmodel=YOLO("best.pt")# ===================== 2. 推理配置 =====================image_path="326_jpg.rf.8ad64cc0668df32c4e5f59b50e899e9c.jpg"# 你的图片路径save_result=True# 是否保存标注后的图# ===================== 3. 执行推理 =====================results=model.predict(source=image_path,conf=0.01,# 置信度阈值(低于该值忽略)save=False,# 关闭默认保存,自定义保存verbose=False# 关闭冗余日志)# ===================== 4. 解析结果:目标区域 + 标注信息 =====================print("="*50)print("YOLO 推理结果(目标区域 + 标注信息)")print("="*50)# 获取图片(用于绘制框)img=cv2.imread(image_path)# 遍历所有检测目标foridx,resultinenumerate(results):boxes=result.boxes# 所有检测框forboxinboxes:# ========== 提取目标区域(坐标) ==========# xyxy: 左上角x, 左上角y, 右下角x, 右下角yx1,y1,x2,y2=box.xyxy[0].cpu().numpy()# 宽高w=x2-x1 h=y2-y1# ========== 提取标注信息 ==========cls_id=int(box.cls[0])# 类别IDcls_name=model.names[cls_id]# 类别名称conf=float(box.conf[0])# 置信度# ========== 打印信息 ==========print(f"目标{idx+1}:")print(f" 标注类别:{cls_name}")print(f" 置信度:{conf:.2f}")print(f" 目标区域坐标:")print(f" 左上角 ({x1:.1f},{y1:.1f})")print(f" 右下角 ({x2:.1f},{y2:.1f})")print(f" 宽×高:{w:.1f}×{h:.1f}")print("-"*30)# ========== 在图片上绘制检测框 ==========cv2.rectangle(img,(int(x1),int(y1)),(int(x2),int(y2)),(0,255,0),2)cv2.putText(img,f"{cls_name}{conf:.2f}",(int(x1),int(y1)-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,0),2)# ===================== 5. 保存/显示结果 =====================ifsave_result:cv2.imwrite("yolo_result.jpg",img)print("✅ 标注图片已保存为:yolo_result.jpg")# 显示图片(可选)cv2.imshow("YOLO Result",img)#cv2.waitKey(0)#cv2.destroyAllWindows()