当前位置: 首页 > news >正文

工业焊缝场景 焊缝缺陷数据集 6400张图片 支持YOLO格式 YOLO模型如何训练焊缝缺陷检测数据集

焊缝缺陷数据集 6400张图片 支持YOLO格式
图片清晰,带标注,直接可以用YOLO系列模型训练
适合做焊缝检测、裂纹、孔洞、飞溅、焊接线等目标识别

标注:
Crack 裂纹
Porosity 气孔
Spatters 焊渣
Welding line 熔接线

焊缝缺陷目标检测数据集 完整说明 + YOLO训练代码

一、数据集核心信息表

项目详情
数据总量6400张 工业焊缝实拍图像
标注格式标准YOLO .txt 格式,每张图对应同名标签文件
目标类别4类焊缝缺陷+1类焊接线,共4个检测类别
适用场景工业焊缝质量检测、缺陷识别、智能制造项目、学业研究实验
图像特点工业现场实拍,覆盖不同光照、角度、焊缝类型,画面清晰,缺陷特征明确
数据划分推荐训练集:验证集:测试集 = 8:1:1,可直接使用预设划分
适配模型YOLOv5/YOLOv8/YOLOv11 全系列目标检测模型

二、数据集类别详情表

类别ID英文名称中文名称检测目标
0Crack裂纹焊缝表面的裂纹、开裂缺陷
1Porosity气孔焊缝内部/表面的气孔、空洞缺陷
2Spatters焊渣/飞溅焊缝表面的焊渣、焊接飞溅物
3Welding line熔接线/焊缝焊缝的熔合线、焊接轨迹

三、标注格式说明表

格式类型规则说明示例
YOLO TXT每行格式:类别ID x y w h,坐标为归一化值(0-1之间),顺序为:类别ID、中心点x、中心点y、宽度w、高度h0 0.425 0.318 0.224 0.196(裂纹)
1 0.510 0.422 0.081 0.075(气孔)
VOC XML(可选兼容)标准PASCAL VOC格式,包含图片尺寸、目标边界框、类别名称见下方格式转换脚本

四、数据集目录结构(标准YOLO格式)

weld_defect_dataset/ ├── images/ │ ├── train/ # 训练集图片(约5120张) │ ├── val/ # 验证集图片(约640张) │ └── test/ # 测试集图片(约640张) ├── labels/ │ ├── train/ # 训练集YOLO标签(.txt) │ ├── val/ # 验证集YOLO标签(.txt) │ └── test/ # 测试集YOLO标签(.txt) └── weld_defect.yaml # YOLO数据集配置文件

五、数据集配置文件weld_defect.yaml

放在数据集根目录,直接复制使用,适配YOLO全系列训练:

# 数据集根路径(根据你的实际文件路径修改)path:./weld_defect_datasettrain:images/trainval:images/valtest:images/test# 类别数量 & 类别名称(和标注ID严格对应)nc:4names:0:Crack1:Porosity2:Spatters3:Welding line

六、环境依赖安装

# 安装YOLO核心库+工业场景辅助依赖pipinstallultralytics opencv-python numpy tqdm lxml

七、配套辅助脚本

1. 数据集自动划分脚本(8:1:1拆分)

如果你的数据集还未划分,运行该脚本自动拆分图片+标签到训练/验证/测试集:

importosimportrandomimportshutil# 配置参数img_dir="./weld_defect_dataset/JPEGImages"# 你的原图文件夹label_dir="./weld_defect_dataset/labels"# 你的标签文件夹save_root="./weld_defect_dataset"train_ratio=0.8val_ratio=0.1test_ratio=0.1# 创建标准目录defmake_dir(path):ifnotos.path.exists(path):os.makedirs(path)# 生成目录路径img_train=os.path.join(save_root,"images/train")img_val=os.path.join(save_root,"images/val")img_test=os.path.join(save_root,"images/test")label_train=os.path.join(save_root,"labels/train")label_val=os.path.join(save_root,"labels/val")label_test=os.path.join(save_root,"labels/test")# 创建所有目录fordin[img_train,img_val,img_test,label_train,label_val,label_test]:make_dir(d)# 获取所有图片文件img_list=[fforfinos.listdir(img_dir)iff.endswith((".jpg",".png",".jpeg"))]random.shuffle(img_list)# 随机打乱total_num=len(img_list)# 计算划分数量train_num=int(total_num*train_ratio)val_num=int(total_num*val_ratio)# 拆分数据集train_set=img_list[:train_num]val_set=img_list[train_num:train_num+val_num]test_set=img_list[train_num+val_num:]# 复制文件函数defcopy_files(file_list,dst_img,dst_label):forfileinfile_list:name=os.path.splitext(file)[0]# 复制图片shutil.copy(os.path.join(img_dir,file),os.path.join(dst_img,file))# 复制对应标签txt_file=name+".txt"ifos.path.exists(os.path.join(label_dir,txt_file)):shutil.copy(os.path.join(label_dir,txt_file),os.path.join(dst_label,txt_file))# 执行复制copy_files(train_set,img_train,label_train)copy_files(val_set,img_val,label_val)copy_files(test_set,img_test,label_test)print(f"数据集划分完成:")print(f"训练集:{len(train_set)}张")print(f"验证集:{len(val_set)}张")print(f"测试集:{len(test_set)}张")

2. VOC XML 转 YOLO TXT 格式转换脚本

如果你的标注是VOC格式,运行该脚本一键转为YOLO格式:

importosimportxml.etree.ElementTreeasET# 类别映射(和yaml文件严格对应)class_names=["Crack","Porosity","Spatters","Welding line"]xml_dir="./weld_defect_dataset/Annotations"# VOC标签文件夹save_txt_dir="./weld_defect_dataset/labels"# 输出YOLO标签文件夹# 创建输出目录ifnotos.path.exists(save_txt_dir):os.makedirs(save_txt_dir)# 转换函数defxml_to_yolo(xml_file):tree=ET.parse(xml_file)root=tree.getroot()# 获取图片尺寸size=root.find("size")img_w=int(size.find("width").text)img_h=int(size.find("height").text)# 生成txt文件路径txt_name=os.path.basename(xml_file).replace(".xml",".txt")txt_path=os.path.join(save_txt_dir,txt_name)withopen(txt_path,"w",encoding="utf-8")asf:# 遍历所有目标forobjinroot.iter("object"):cls_name=obj.find("name").textifcls_namenotinclass_names:continuecls_id=class_names.index(cls_name)# 获取边界框坐标bndbox=obj.find("bndbox")x1=float(bndbox.find("xmin").text)y1=float(bndbox.find("ymin").text)x2=float(bndbox.find("xmax").text)y2=float(bndbox.find("ymax").text)# 转换为YOLO归一化格式x_center=(x1+x2)/2.0/img_w y_center=(y1+y2)/2.0/img_h width=(x2-x1)/img_w height=(y2-y1)/img_h# 写入txtf.write(f"{cls_id}{x_center:.6f}{y_center:.6f}{width:.6f}{height:.6f}\n")# 批量转换forxml_fileinos.listdir(xml_dir):ifxml_file.endswith(".xml"):xml_to_yolo(os.path.join(xml_dir,xml_file))print("VOC转YOLO格式转换完成!")

八、YOLOv8 训练代码(工业焊缝场景优化版)

新建train_weld_defect.py,直接运行即可训练:

fromultralyticsimportYOLOdeftrain_weld_defect():# 加载预训练模型:# yolov8n = 轻量快速 | yolov8s = 平衡精度速度 | yolov8m = 高精度(工业检测推荐)model=YOLO("yolov8m.pt")# 工业焊缝场景专属训练参数results=model.train(data="./weld_defect_dataset/weld_defect.yaml",# 数据集配置文件路径epochs=120,# 训练轮数,工业缺陷建议100-150轮imgsz=640,# 输入尺寸,小缺陷可调高至800batch=16,# 批次大小,显存不足改为8/4device=0,# GPU编号,无GPU改为 device="cpu"workers=4,# 数据加载线程patience=20,# 早停机制:20轮无精度提升则停止,防止过拟合pretrained=True,# 使用COCO预训练权重optimizer="Adam",# 优化器,工业场景Adam收敛更稳定lr0=0.001,# 初始学习率lrf=0.01,warmup_epochs=5,# 热身轮数,稳定训练初期# 数据增强配置(适配工业焊缝场景)mosaic=0.8,# 马赛克增强,降低比例避免破坏缺陷特征mixup=0.1,copy_paste=0.0,hsv_h=0.015,# 色相增强,适配不同光照的焊缝图像hsv_s=0.7,hsv_v=0.4,# 保存配置project="runs/weld_train",name="yolov8_weld_defect",exist_ok=True,# 缺陷检测专属阈值conf=0.25)print("训练完成!")print(f"最优模型保存路径:{results.save_dir/'weights/best.pt'}")if__name__=="__main__":train_weld_defect()

九、推理测试代码(训练后使用)

新建predict_weld.py,用于检测图片/视频/摄像头:

fromultralyticsimportYOLO# 加载训练好的最优模型model=YOLO("./runs/weld_train/yolov8_weld_defect/weights/best.pt")# 1. 单张图片检测# results = model("test_weld.jpg", save=True, conf=0.3)# 2. 文件夹批量图片检测# results = model(source="./test_images", save=True, conf=0.3)# 3. 视频检测# results = model("weld_video.mp4", save=True, conf=0.3)# 4. 实时摄像头检测results=model(source=0,save=True,conf=0.3)print("推理完成,结果已保存到 runs/detect 目录")

十、完整使用流程

  1. 整理6400张图片和对应标签,放入数据集对应文件夹;
  2. 运行voc2yolo.py(如果是VOC格式)生成YOLO标签;
  3. 运行split_dataset.py完成数据集划分;
  4. 核对weld_defect.yaml中的文件路径和类别;
  5. 安装依赖包,运行train_weld_defect.py开始训练;
  6. 训练完成后,用predict_weld.py测试检测效果。

十一、工业焊缝场景调优建议

  1. 小缺陷漏检:调高imgsz=800,降低训练/推理conf=0.2~0.25,增加patience=25
  2. 背景杂物误检:降低mosaic=0.6,关闭mixup,减少强数据增强对缺陷特征的破坏;
  3. 显存不足:减小batch,使用yolov8n.pt轻量模型,关闭不必要的增强;
  4. 暗光/反光焊缝效果差:保留HSV色域增强,增加brightness相关增强,提升图像鲁棒性;
  5. 类别不均衡:如果某类缺陷样本少,在训练参数中添加cls权重,增加小样本类别的损失权重。
http://www.jsqmd.com/news/1183156/

相关文章:

  • 常用环境部署(十四)——Docker部署MinIO(OSS)
  • 2026最新Java程序员转行AI大模型全攻略(小白零基础可学)
  • 3分钟掌握Free Texture Packer:如何将游戏性能提升200%的终极免费方案
  • 【独家首发】DeepSeek-R1长文本微调SOP(含Prompt Engineering黄金模板+评估指标白皮书)
  • 【小程序计算机毕业设计案例】地方特色农产品推介与电商交易小程序设计与实现 农产品分类展销、评价与订单管理系统的设计与实现(程序+文档+讲解+定制)
  • Windows 11终极优化指南:使用Win11Debloat一键清理系统垃圾,提升性能与隐私保护
  • 戴尔笔记本风扇控制终极指南:DellFanManagement让你的笔记本更安静更凉爽
  • Linux操作系统 --- 进程
  • 【小程序计算机毕业设计案例】智慧便民服务共享雨伞租赁平台的设计与实现 小程序实现的共享雨伞自助租借归还系统(程序+文档+讲解+定制)
  • 液氦管路哪家质量好探秘真空绝热与焊接工艺如何决定低温传输的长期可靠性 - 品牌推荐大师
  • 室内液体泼洒检测数据集 YOLOV11室内漏液检测数据集 室内跑冒滴漏检测数据集
  • 2026年土工材料供应厂家:土工布/土工格栅/土工膜/土工格室/玻纤及钢塑土工格栅等专业生产商深度解读 - 品牌发掘
  • 终极免费指南:如何解锁Wand专业版功能并实现手机远程游戏控制
  • FanControl完整指南:让Windows风扇控制变得简单高效
  • AI解说员诞生记:YOLOv8如何用“上帝视角”解构每一帧绿茵密码
  • Copilot代码质量评测标准缺失之痛,企业级落地必须绕过的7个认知陷阱,你踩中几个?
  • 关于Dockerfile中执行指令的两种模式
  • 从概念到落地:2026年AIOps实战观察与思考
  • 收藏必看!2026大模型落地核心选型:RAG与微调深度对比,小白少走99%弯路
  • 真力时中国官方售后服务中心服务热线及全部维修地址实地考察报告_多信源验证(2026年7月最新) - 亨得利官方服务中心
  • 惠州定制全铝阳台柜,这几家靠谱又耐用 - 资讯速览
  • 突破传统限制:Asset-Harvester如何解决自动驾驶3D资产创建的5大难题
  • 怎样轻松保存网络视频?Video Download Helper免费插件实用指南
  • 电力配网、主网绝缘子缺陷检测数据集深度学习基于YOLOV11电无人机力配网绝缘子缺陷检测数据集 无人机电力主网缺陷检测数据集的训练及英语
  • 【关注可白嫖源码】--课程设计--毕业设计--springboot鲜花销售系统[编号:project91056](案件分析)
  • 如何快速入门PHP DDD:state-of-the-union项目10个核心概念解析 [特殊字符]
  • OpenAI Codex代码生成实战指南
  • 请推荐性价比高的刻槽机,兼顾预算与效率的选型对比分析 - 品牌推荐大师
  • 从零开始:使用MLX-OptiQ工具包量化大型语言模型的完整流程
  • 2026年7月最新杭州雅典官方售后热线及客户服务网点地址 - 亨得利官方服务中心