跳转到内容

YOLOv8模型训练

YOLOv8官方文档:文档地址

  1. 每张图片对应一个 .txt 文件

  2. 每一行代表一个目标框:

    Terminal window
    class_id x y w h
  3. 字段说明:

    • class_id:类别编号
    • x:中心点x(归一化)
    • y:中心点y(归一化)
    • w:宽度(归一化)
    • h:高度(归一化)
  4. 示例:

    Terminal window
    0 0.5 0.5 0.2 0.3

    表示:

    • 类别0
    • 位于图片中心
    • 宽20%,高30%

  1. 本地目录结构(以保存在yolo_test为例)

    Terminal window
    D:/yolo_test
    ├── images
    ├── train
    └── val
    ├── labels
    ├── train
    └── val
    └── data.yaml
  2. 容器内对应路径(以保存在yolo_data为例):

    Terminal window
    /yolo_data/images/train
    /yolo_data/labels/train
  3. data.yaml 示例:

    path: /yolo_data
    train: images/train
    val: images/val
    names:
    0: person
    1: helmet

  1. 安装 Docker Desktop(Windows) 官网下载:https://www.docker.com/products/docker-desktop/

  2. 启动 Docker,并确保运行正常

  3. 配置文件共享

    打开 Docker Desktop → Settings → Resources → File Sharing

    添加本地目录:D:\yolo_test(用于挂载 Docker 容器,存储数据集和结果)

    保存后重启 Docker


  1. 打开 PowerShell(管理员模式)

  2. 执行命令拉取官方镜像或Docker Desktop → Docker Hub → 搜索ultralytics → Pull:

    Terminal window
    docker pull ultralytics/ultralytics:latest
  3. 验证镜像是否存在:

    Terminal window
    docker images

  1. 执行运行命令:

    Terminal window
    docker run -it --rm -v D:/yolo_test:/yolo_data --name yolo_v8 ultralytics/ultralytics:latest
  2. 参数说明:

    • -it:进入交互式终端
    • --rm:容器退出自动删除
    • -v:挂载本地目录到容器
    • --name:容器命名
  3. 退出容器:exit


  1. 准备测试图片

    D:\yolo_test 目录下放入:test.jpg

    ⚠️ 注意:

    • 文件名必须完全一致(区分大小写)
  2. 执行检测命令(容器内)

    Terminal window
    yolo detect predict model=yolov8n.pt source=/yolo_data/test.jpg save=True project=/yolo_data/runs name=detect
  3. 参数说明:

    • model=yolov8n.pt:轻量模型
    • source:输入图片路径
    • save=True:保存检测结果
    • project:输出目录
    • name:结果文件夹名称

  1. 检测成功后,终端会输出类似日志:

    Terminal window
    image 1/1 /yolo_data/test.jpg: 640x480 ... Results saved to /yolo_data/runs/detect
  2. 查看本地结果目录:D:\yolo_test\runs\detect

  3. 成功标志:

    • 出现带检测框的图片
    • 正确识别目标

  1. 打开容器
    Terminal window
    docker run -it --gpus all --shm-size=8g -v D:/yolo_test:/yolo_data --name yolo_v8 ultralytics/ultralytics:latest
  2. 参数说明:
    • gpus all :启用GPU
    • shm-size=8g :防止DataLoader崩溃

  1. 在容器内执行训练命令:

    Terminal window
    yolo detect train model=yolov8n.pt data=/yolo_data/data.yaml epochs=10 imgsz=640 batch=4 workers=2 device=0 project=/yolo_data/runs name=exp1
  2. 参数说明:

    • model:预训练模型
    • data:数据配置文件
    • epochs:训练轮数
    • imgsz:输入尺寸
    • batch:批大小
    • workers:数据加载线程数
    • device:GPU编号(0表示第一张卡)
    • project:输出目录
    • name:输出模型的文件名

  1. 模型输出路径:

    Terminal window
    /yolo_data/runs/exp1/weights/best.pt
  2. 重要文件:

    • best.pt:最佳模型(推荐使用)
    • last.pt:最后一轮模型
  3. 可查看内容:

    • loss 曲线
    • 精度指标(mAP)
    • 训练日志

  1. 执行检测命令:

    Terminal window
    yolo detect predict model=/yolo_data/runs/exp1/weights/best.pt source=/yolo_data/images/val project=/yolo_data/runs name=predict
  2. 输出内容:

    • 检测图片(带框)
    • 默认不输出标签文件
  3. 输出路径:

    Terminal window
    /yolo_data/runs/predict

  1. 执行命令:

    Terminal window
    yolo detect predict model=/yolo_data/runs/exp1/weights/best.pt source=/yolo_data/images/val save_txt=True save_conf=True project=/yolo_data/runs name=predict
  2. 输出内容:

    • .txt 标注文件
    • 每个框的置信度
  3. 输出路径:

    Terminal window
    /yolo_data/runs/predict
    /yolo_data/runs/predict/labels