AI 与模型
YOLOv8 实例分割训练命令与指标速查
在 Windows 上使用 ultralytics 训练 YOLOv8-seg 自定义数据集的目录结构、常见报错绕过与评估指标备忘。
训练自定义数据集的 YOLOv8 实例分割模型(yolov8n-seg)时整理的命令、Windows 常见环境报错与评估指标速查。
1. 数据集目录结构
在虚拟环境中安装带对应 CUDA 版本的 PyTorch 与 ultralytics 后,按标准目录组织数据集(格式不统一时可通过 Roboflow 转换导出):
dataset/
├── data.yaml
├── train/
│ ├── images/
│ └── labels/
├── valid/
│ ├── images/
│ └── labels/
└── test/
├── images/
└── labels/
Windows 下相对路径容易受启动工作目录影响,建议在 data.yaml 中直接写明 train 与 val 的实际目录路径。
2. 启动训练与两个常见 Windows 报错
命令行直接启动:
yolo segment train data=data.yaml model=yolov8n-seg.yaml pretrained=yolov8n-seg.pt batch=16 workers=2 epochs=200 imgsz=640 device=0
Python 脚本方式调用:
from ultralytics import YOLO
if __name__ == "__main__":
model = YOLO("yolov8n-seg.pt")
model.train(
data="data.yaml",
epochs=100,
batch=16,
imgsz=640,
device=0,
cos_lr=True,
workers=2,
)
在 Windows 上主要留意三件事:
- 显存不足:优先下调
batch(如4或1)与workers。 - OpenMP 重复初始化报错(
OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized):在当前 PowerShell 会话临时设置$env:KMP_DUPLICATE_LIB_OK="TRUE"(CMD 下为set KMP_DUPLICATE_LIB_OK=TRUE)。 - 多进程
DataLoader崩溃:当workers > 0时,Python 启动脚本必须将训练入口包在if __name__ == "__main__":内,避免子进程重复导入触发异常。
3. results.png 损失与评估指标速查
- 损失项(越低越收敛):
box_loss:预测框与真实框定位误差(CIoU / DFL);seg_loss:实例分割掩码损失;cls_loss:类别分类损失。
- 验证集指标(越高越好):
P(Precision):预测结果中真正命中的比例(反映误报多少);R(Recall):真实目标被检出的比例(反映漏检多少);mAP50:IoU 阈值为0.5时的平均精度;mAP50-95:IoU 从0.5至0.95步进求均值的平均精度,对边界框与掩码贴合度更敏感。
若训练集 loss 持续下降,而验证集 val_loss 开始回升且 mAP50-95 持续下降,通常说明出现过拟合,需补充数据增强或提前停止训练。