YOLO CRACK-SEG AI训练笔记:从 0 到第一个权重(含训练权重共享)

这一篇文章,我只分享 第一轮训练 的完整流程与代码拆解。
训练后的第一个权重(best.pt)我也会同步上传到 GitHub,任何需要做 crack segmentation 的朋友可以自取,可以节省训练过程。

📌 为什么要做 CRACK-SEG 训练?

我自己的项目需要做建筑裂缝分割识别,但只靠本地数据训练,数量太少、泛化能力弱。
因此我采用经典三阶段训练策略:
但基于技术保密原因,这一篇文章只讲第一轮,但会讲得足够细,包括代码每一行的作用,使用 public dataset —— Crack-Seg 预训练基础 crack segmentation 能力。

🗂 1. 数据准备(Dataset)
我使用的是公开的 CrackSeg 数据集,原图大小介于 500~1000px,不够适合 YOLO-v11-Seg 的大模型训练,所以我统一做了:

resize → 416×416mask 转 PNG(确保 alpha 通道正常)目录结构如下:


datasets/
   crackseg/
      images/
         train/*.jpg
         val/*.jpg
      labels/
         train/*.png   # segmentation masks
         val/*.png

YOLO-Seg 需要 mask 格式统一,因此我在预处理脚本里做了 二值化 + 去伪影,避免训练时 seg_loss 出现 NAN。

如果你想用相同结构,只要替换 root_dir 即可。

🧩 2. YOLO-v11-Seg 的训练 YAML

这是第一轮的配置文件(train_yolo_stage1_crack.yaml):


# CRACK-SEG 第一轮预训练
path: datasets/crackseg
train: images/train
val: images/val

names:
  0: crack

# segmentation 模式
task: segment

imgsz: 416
epochs: 100
batch: 16
device: 0

optimizer: SGD
lr0: 0.01
momentum: 0.937
weight_decay: 0.0005

# 强增强
augment:
  hsv: 0.015
  flipud: 0.0
  fliplr: 0.5
  mosaic: 0.1
  blur: 0.2

为什么 mosaic 用 0.1?

因为裂缝是“线状缺陷”,mosaic 太高会破坏结构,导致模型学到“错误的 crack pattern”。
这也是我做过多次实验后调出来的结果。

🧪 3. 完整训练脚本(并逐行剖析)

这是我的第一轮训练脚本(train_yolo_stage1_crack.sh):


#!/bin/bash
source .venv/bin/activate

python - << 'EOF'
from ultralytics import YOLO

# 1️⃣ 载入预训练的 YOLOv11-Seg
model = YOLO("yolo11s-seg.pt")

# 2️⃣ 开始训练
model.train(
    data="configs/train_yolo_stage1_crack.yaml",
    epochs=100,
    batch=16,
    imgsz=416,
    device=0,
    workers=8,
    amp=True,
    cache=True,
)
EOF

🔍 逐行代码解释(适合读者学习)

🔸 model = YOLO(“yolo11s-seg.pt”)
载入官方预训练分割模型,这一步非常关键,因为:

官方预训练权重已经具备 segmentation 能力让模型更快收敛避免 small dataset 训练不稳定(loss NAN)

🔸 model.train()
是整个训练的核心,它包含了:

参数 作用
data 指向我们的 crackseg 数据集 YAML
imgsz 输入图片尺寸(我选择 1024)
epochs 训练轮数
batch 每次训练的 batch size
device GPU 选择
amp 混合精度,节省显存
cache 提高 IO 性能

📈 4. 第一轮训练结果

经过 60 epoch,日志 CSV 中最典型的改善趋势:

seg_loss 从 0.39 → 0.08precision 约 0.92recall 约 0.87mask mean-IoU 在 0.78~0.80

模型在白墙、灰墙上都能识别基础裂缝结构
第一轮的意义不是“最终效果”,而是奠定 crack 的基础 pattern 认知,让下一轮合训能更快适应高分辨率、真实世界的纹理噪声。

📦 5. 第一轮权重(best.pt)获取方式

你可以从 GitHub 下载我训练好的第一轮权重(使用最顶配游戏显卡进行训练)。
👉 GitHub 链接:


	https://github.com/kennykwan1419/Crack-seg-Weight-60epoch/tree/main

包含内容:

文件 描述

best.pt
第一轮 crack-seg 预训练权重

last.pt
第六十轮 crack-seg 预训练权重

log_trainer.csv
训练曲线数据

README.md
使用说明

你可以用它来继续自己的 crack segmentation 任务,也可以插入到 multi-stage training pipeline。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容