YOLOv5 配置与训练笔记

自用备份,Windows 端 YOLOv5 配置和训练为主,代码为核心,记录踩坑和关键点。

环境准备

  • 系统:Windows 10/11
  • Python:3.9(其他版本容易崩)
  • GPU(可选):NVIDIA + CUDA 11.8(CPU 也能跑,慢点)
  • FFmpeg:解压后放根目录(视数据集需求)

下载与安装

直接去 YOLOv5 项目页,点“Code”按钮,选“Download ZIP”。解压到 D:\YOLOv5(路径自定)。

进目录,双击 detect.py 检查环境,或者手动装:

  • Python 3.9:

    python --version  # 确认 3.9.x
    
  • 建虚拟环境:

    python -m venv venv
    venv\Scripts\activate
    
  • 装依赖:

    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  • PyTorch:

    • GPU:
      pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
      
    • CPU:
      pip install torch torchvision torchaudio
      
    • 检查:
      python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
      

数据集准备

  • 打标工具:用 labelImg
    • 安装:
      pip install labelImg
      
    • 运行:
      labelImg
      
    • 注意:保存格式选 YOLO,生成 .txt,每行 class x_center y_center width height(归一化)。
  • 目录结构:
    D:\YOLOv5\data\
      images\
        train\
        val\
      labels\
        train\
        val\
    
  • 配置 data.yaml
    train: D:/YOLOv5/data/images/train
    val: D:/YOLOv5/data/images/val
    nc: 2
    names: ['cat', 'dog']
    
  • 注意:训练集每类至少 50-100 张,验证集 10-20%,太少过拟合。

训练

  1. 跑训练
    python train.py --img 640 --batch 16 --epochs 50 --data data/data.yaml --weights yolov5s.pt
    
    • 参数:--img 图片大小,--batch 批次,--epochs 轮数,--weights 预训练模型。
  2. 输出runs\train\exp\weights\best.pt(最佳权重),runs\train\exp\results.txt(日志)。

TensorBoard 配置

  • 安装:
    pip install tensorboard
    
  • 运行:
    tensorboard --logdir runs/train
    
  • 浏览器打开:http://localhost:6006,看 loss、mAP 等曲线。
  • 注意:训练时日志默认存 runs/train,多实验会分 exp, exp2

推理

  1. 命令行推理
    python detect.py --weights runs/train/exp/weights/best.pt --img 640 --conf 0.25 --source data/images/test
    
    • --source 常用:
      • data/images/test:文件夹
      • image.jpg:单图
      • video.mp4:视频
      • 0:摄像头
  2. 结果runs\detect\exp

WebUI 配置(Gradio)

  • 安装:
    pip install gradio
    
  • 新建 webui.py(放 D:\YOLOv5 下):
    import torch
    import gradio as gr
    
    model = torch.hub.load("./", "custom", path="./runs/train/exp/weights/best.pt", source="local")
    
    title = "基于Gradio的YOLOv5演示项目"
    desc = "这是一个基于Gradio的YOLOv5演示项目"
    
    gr.Interface(inputs=[gr.Image()],
                 outputs=["image"], 
                 title=title,
                 description=desc,
                 fn=lambda img: model(img).render()[0]
                 ).launch()
    
  • 运行:
    python webui.py
    
  • 浏览器打开弹出的地址(默认 http://127.0.0.1:7860),上传图片,显示检测结果。
  • 注意:权重路径改成自己的(比如 runs/train/exp/weights/best.pt)。

属性介绍

  • 模型变体
    • yolov5s:快,低精度
    • yolov5m:平衡
    • yolov5l:高精度,显存多
    • yolov5x:最强,慢
  • 超参数data/hyp.scratch.yaml):
    • lr0:学习率,默认 0.01
    • momentum:动量,默认 0.937
    • box:框损失,默认 0.05
  • 数据增强:默认开 mosaic。

注意

  • 显存不足:调小 --batch 或用 yolov5s
  • 推理慢:加 --half 半精度。
  • 标签错:检查 data.yaml.txt 一致。
  • 数据集小:每类 <50 张精度差。

问题

  • 训练卡住:换源或手动下权重。
  • 检测不出:路径错或 --conf 太高。
  • CUDA 报错:版本不匹配。
  • TensorBoard 空白:确认 runs/train 有日志。
  • WebUI 报错:检查权重路径或 Gradio 版本。

补充

  • 数据集:可用 Roboflow 导出 YOLO 格式。
  • 调试:训练加 --nosave
posted @ 2025-04-09 22:02  TokE648  阅读(334)  评论(0)    收藏  举报