钢铁焊缝缺陷数据集,支持目标检测与实例分割数据集

在这里插入图片描述

用于Yolo的实例分割与缺陷检测

在这里插入图片描述


数据集焊缝缺陷目标检测数据集6000张存在缺陷的图片。

在这里插入图片描述

4类缺陷类别:
1、Crack - 裂纹
2、Porosity - 孔洞
3、Spatters - 飞溅
4、Welding line - 焊接
 

在这里插入图片描述


1
 

在这里插入图片描述


如何使用YOLOv5进行目标检测和Mask R-CNN进行实例分割。YOLO系列模型主要针对目标检测任务,对于实例分割任务,Mask R-CNN是一个更为合适的选择。

焊缝缺陷检测(目标检测)

1. 环境准备

首先确保安装了必要的依赖项:

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip install -r requirements.txt
2. 数据准备

创建一个data.yaml文件来定义数据集路径和类别信息:

train: ./path/to/train/images
val: ./path/to/val/images

nc: 4  # 类别数量
names: ['Crack', 'Porosity', 'Spatters', 'Welding line']

请根据实际情况调整路径。

3. 模型训练

使用YOLOv5进行训练:

python train.py --img 640 --batch 16 --epochs 100 --data path/to/data.yaml --weights yolov5s.pt
4. 推理及可视化

对新的图片进行推理并可视化结果:

python detect.py --weights runs/train/exp/weights/best.pt --source ./path/to/new/image.jpg --conf-thres 0.5 --save-txt --save-conf

焊缝缺陷分割(实例分割)

对于实例分割任务,我们将使用Detectron2框架中的Mask R-CNN模型。

1. 环境准备

安装Detectron2及相关依赖:

pip install torch torchvision
pip install 'git+https://github.com/facebookresearch/detectron2.git'
2. 数据准备

Detectron2需要COCO格式的数据集。假设您的数据已经转换为COCO格式(包括annotations.json和图像目录)。如果没有,请先转换数据格式。

3. 配置与训练

编写配置文件并开始训练:

from detectron2.config import get_cfg
from detectron2.engine import DefaultTrainer, default_argument_parser, default_setup, launch
from detectron2.data.datasets import register_coco_instances

# 注册自定义数据集
register_coco_instances("weld_defect_train", {}, "./path/to/train/annotations.json", "./path/to/train/images")
register_coco_instances("weld_defect_val", {}, "./path/to/val/annotations.json", "./path/to/val/images")

cfg = get_cfg()
cfg.merge_from_file("./detectron2/configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
cfg.DATASETS.TRAIN = ("weld_defect_train",)
cfg.DATASETS.TEST = ()
cfg.DATALOADER.NUM_WORKERS = 2
cfg.MODEL.WEIGHTS = "detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl"  # 预训练权重
cfg.SOLVER.IMS_PER_BATCH = 2
cfg.SOLVER.BASE_LR = 0.00025
cfg.SOLVER.MAX_ITER = 300    # 300次迭代。您可以根据需要调整
cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = 128   # 较小的值更快,但可能不太准确。可以尝试不同的值
cfg.MODEL.ROI_HEADS.NUM_CLASSES = 4  # 类别数量

os.makedirs(cfg.OUTPUT_DIR, exist_ok=True)
trainer = DefaultTrainer(cfg) 
trainer.resume_or_load(resume=False)
trainer.train()
4. 推理及可视化

加载训练好的模型并对新图片进行推理:

from detectron2.utils.visualizer import ColorMode, Visualizer
from detectron2.engine import DefaultPredictor
import cv2

cfg.MODEL.WEIGHTS = os.path.join(cfg.OUTPUT_DIR, "model_final.pth")  # 加载最佳模型权重
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5  # 设置阈值
predictor = DefaultPredictor(cfg)

# 对新图片进行预测
im = cv2.imread("./path/to/new/image.jpg")
outputs = predictor(im)

# 可视化结果
v = Visualizer(im[:, :, ::-1], metadata=weld_defect_metadata, scale=0.8, instance_mode=ColorMode.IMAGE_BW)
v = v.draw_instance_predictions(outputs["instances"].to("cpu"))
cv2.imshow('image', v.get_image()[:, :, ::-1])
cv2.waitKey(0)

总结

上述步骤分别为焊缝缺陷检测(使用YOLOv5)和焊缝缺陷分割(使用Mask R-CNN)完整的流程,包括环境设置、数据准备、模型训练、推理及结果可视化。可以做个参考,同学们。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐