这一篇文章,我只分享 第一轮训练 的完整流程与代码拆解。
训练后的第一个权重(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
包含内容:
| 文件 | 描述 |
|---|---|
|
第一轮 crack-seg 预训练权重 |
|
第六十轮 crack-seg 预训练权重 |
|
训练曲线数据 |
|
使用说明 |
你可以用它来继续自己的 crack segmentation 任务,也可以插入到 multi-stage training pipeline。


















暂无评论内容