目录
🌷🌷1.数据集介绍
🍉1.1输入影像
🍉1.2yolo-seg分割识别数据格式
👍👍2.工业划痕质检实现效果
🍎🍎3.YOLOv8识别工业划痕质检算法步骤
🍋3.1数据准备
🍋3.2模型选择
🍋3.3加载预训练模型
🍋3.4训练过程
🍋3.5训练结果
🏆🏆4.语义分割推理代码
整理不易,欢迎一键三连!!!送你们一条美丽的–分割线–
🌷🌷1.数据集介绍
🍉1.1输入影像
工业划痕质检数据集总共包含800张样本数据,其中训练集700张,验证集100张,影像尺寸为280*120至8600*5000,部分影像展示如下:
🍉1.2yolo-seg分割识别数据格式
YOLO(You Only Look Once)目标检测算法使用特定的数据格式进行训练和预测。以下是常见的YOLO数据格式要求:
- 每个图像对应一个同名的.txt文件
- 每行表示一个边界框,格式为:class_id x1,y1,x2,y2,x3,y3,x4,y4,x5,y5….xn,yn
- 所有坐标值都是相对于图像宽度和高度的归一化值(0-1之间)
- 工业划痕质检数据样本类别包含1类。
0:划痕
images文件夹下存放所有训练原图,示例内容如下:

label为txt格式的yolo语义分割格式,示例txt文件内容为:

👍👍2.工业划痕质检实现效果
🍎🍎3.YOLOv8识别工业划痕质检算法步骤
通过语义分割方法进行工业划痕质检进行识别的方法不限,本文以YOLOv8为例进行说明。
🍋3.1数据准备
工业划痕质检数据集总共包含63张样本数据,由于数据量太小,所以训练和验证集用相同数据。


数据组织:
—-huahen_seg
—-images
—-labels
images文件夹 如下:

labels文件夹如下:

模型训练label部分采用的是YOLO格式的txt文件,所以如果自己的数据集是xml格式或者json格式需要进行转换哦,转换可移步这里。
具体txt格式内容如1.数据集介绍中所示。
🍋3.2模型选择
以YOLO26n为例,模型选择代码如下:
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n-seg.yaml').load('yolov8n.pt') # build from YAML and transfer weights
# Train the model
results = model.train(data='huahen_seg_coco128.yaml',epochs=400,imgsz=640,batch=64)
其中huahen_seg_coco128.yaml的内容可根据自己的数据地址进行模型调整,打开huahen_seg_coco128.yaml显示内容如下:
path: /mnt/data/工业/huahen_seg/ # dataset root dir
train: images # train images (relative to 'path') 128 images
val: images # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes
names:
0: huahen
🍋3.3加载预训练模型
加载预训练模型yolov8ln-seg.pt,可以在第一次运行时自动下载,如果受到下载速度限制,也可以自行下载好(下载链接),放在对应目录下即可。

🍋3.4训练过程
开始训练之后就会开始打印log文件了。如下图所示:

🍋3.5训练结果
训练完成后的结果如下:
其中weights文件夹内会包含2个模型,一个best.pth,一个last.pth。

至此就可以使用best.pth进行推理检测划痕了。
精度效果如下:
wandb: Run summary:
wandb: lr/pg0 2e-05
wandb: lr/pg1 2e-05
wandb: lr/pg2 2e-05
wandb: metrics/mAP50(B) 0.91796
wandb: metrics/mAP50(M) 0.90438
wandb: metrics/mAP50-95(B) 0.81592
wandb: metrics/mAP50-95(M) 0.53813
wandb: metrics/precision(B) 0.99048
wandb: metrics/precision(M) 0.98212
wandb: metrics/recall(B) 0.88104
wandb: metrics/recall(M) 0.87361
wandb: model/GFLOPs 11.48
wandb: model/parameters 3263811
wandb: model/speed_PyTorch(ms) 1.647
wandb: train/box_loss 0.62574
wandb: train/cls_loss 0.48228
wandb: train/dfl_loss 0.91961
wandb: train/seg_loss 1.37895
wandb: val/box_loss 0.56916
wandb: val/cls_loss 0.39778
wandb: val/dfl_loss 0.84192
wandb: val/seg_loss 1.17052



🏆🏆4.语义分割推理代码
批量推理python代码如下:
from ultralytics import YOLO
from PIL import Image
import cv2
import os
model = YOLO('/yolov8/runs/segment/train3/weights/best.pt') # load a custom model
path = '/home/dataset/images/test/' #test_image_path_dir
img_list = os.listdir(path)
for img_path in img_list:
### =============detect=====================
im1 = Image.open(os.path.join(path,img_path))
results = model.predict(source=im1, save=True,save_txt=True)
若需要完整数据集和源代码可以私信。
整理不易,欢迎一键三连!!! 送你们一条美丽的–分割线–
🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷






