基于深度学习的钢铁焊接缺陷检测系统源码(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)

1.系统功能

✅ 图片检测:可对单张图片进行检测,返回检测框及类别信息。

✅ 批量图片检测:支持文件夹输入,一次性检测多张图片,生成批量检测结果。

✅ 视频检测:支持视频文件输入,检测视频中每一帧的情况。

✅ 摄像头实时检测:连接USB 摄像头,实现实时监测。

 

 

 

 

 

 

 

 

 

 

2. 数据集配置文件 (data.yaml)

创建一个data.yaml文件,配置数据集的路径和类别信息:

path: ./weld_defect_dataset  # 数据集路径
train: images/train  # 训练集图像路径
val: images/val  # 验证集图像路径

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

 

 

3. 训练脚本 (train.py)

from ultralytics import YOLO

def train_model(data_yaml_path, model_config, epochs, batch_size, img_size, augment):
    # 加载模型
    model = YOLO(model_config)

    # 训练模型
    results = model.train(
        data=data_yaml_path,
        epochs=epochs,
        batch=batch_size,
        imgsz=img_size,
        augment=augment
    )

    # 保存模型
    model.save("runs/train/weld_defect/best.pt")

if __name__ == "__main__":
    data_yaml_path = 'weld_defect_dataset/data.yaml'
    model_config = 'yolov8n.yaml'  # 你可以选择不同的YOLOv8模型配置,如yolov8s.yaml, yolov8m.yaml等
    epochs = 100
    batch_size = 16
    img_size = 640
    augment = True

    train_model(data_yaml_path, model_config, epochs, batch_size, img_size, augment)

 

4. 预测脚本 (predict.py)

import cv2
import torch
from ultralytics import YOLO

def predict_image(image_path, model_path, img_size=640):
    # 加载模型
    model = YOLO(model_path)

    # 读取图像
    image = cv2.imread(image_path)
    image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

    # 进行预测
    results = model(image_rgb, size=img_size)

    # 处理预测结果
    for result in results:
        boxes = result.boxes.xyxy.cpu().numpy()
        scores = result.boxes.conf.cpu().numpy()
        labels = result.boxes.cls.cpu().numpy().astype(int)

        for box, score, label in zip(boxes, scores, labels):
            x1, y1, x2, y2 = map(int, box)
            class_name = ['Crack', 'Porosity', 'Spatters', 'Welding line'][label]
            color = (0, 255, 0) if label == 0 else (0, 0, 255)
            cv2.rectangle(image, (x1, y1), (x2, y2), color, 2)
            cv2.putText(image, f'{class_name} {score:.2f}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, color, 2)

    # 显示图像
    cv2.imshow('Prediction', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == "__main__":
    image_path = 'path_to_your_image.jpg'
    model_path = 'runs/train/weld_defect/best.pt'
    predict_image(image_path, model_path)

5. 运行脚本

  1. 训练模型:

    python train.py
    
    • 1
  2. 进行预测:

    python predict.py
    
    • 1

6. 详细解释

数据集配置文件 (data.yaml)
  • path: 数据集的根目录路径。
  • train: 训练集图像的路径。
  • val: 验证集图像的路径。
  • nc: 类别数。
  • names: 类别名称列表。
训练脚本 (train.py)
  1. 导入依赖项:

    • from ultralytics import YOLO:导入YOLOv8模型。
  2. 定义训练函数:

    • train_model:加载模型,设置训练参数,训练模型,并保存最佳模型。
  3. 主函数:

    • 设置数据集路径、模型配置、训练参数等。
    • 调用train_model函数进行训练。
预测脚本 (predict.py)
  1. 导入依赖项:

    • import cv2:导入OpenCV库。
    • import torch:导入PyTorch库。
    • from ultralytics import YOLO:导入YOLOv8模型。
  2. 定义预测函数:

    • predict_image:加载模型,读取图像,进行预测,处理预测结果,并显示带有标注的图像。
  3. 主函数:

    • 设置图像路径和模型路径。
    • 调用predict_image函数进行预测。

7. 注意事项

  1. 数据集路径:确保数据集路径正确,特别是data.yaml文件中的路径。
  2. 模型配置:可以选择不同的YOLOv8模型配置,如yolov8s.yamlyolov8m.yaml等,根据你的计算资源和需求选择合适的模型。
  3. 图像大小:img_size可以根据实际需求调整,通常使用640或1280。
  4. 数据增强:augment参数控制是否启用数据增强,可以在训练过程中提高模型的泛化能力。

项目下载链接:

https://m.tb.cn/h.h0UIVWu?tk=mJzfVr8lINQ

联系QQ:1214562663

posted @ 2025-04-10 16:03  Smile4090  阅读(79)  评论(0)    收藏  举报