YOLOv5:从0搭建你的第一个目标检测模型

本人是一名大一的计科学生,在自学深度学习yolo模型。将自己的收获和总结写出来,希望对大家有帮助。如果有错误或者疑问 可以提出来理性讨论。

环境配置(简略)

第一步下载Anaconda(网上有很多详细的步骤教程 由于本文主要是讲述yolo5v就不详细解释了) 第二步 在电脑下端的搜索栏中输入Anaconda 然后应该会显示出名为"Anaconda Prompt"的一个应用 直接点击 然后就会显示出一个类似终端的黑色界面

如果是类似 (base) C:\Users\EH> 那说明你下载成功了

但是呢你也可能会像我一样没有前缀(base) 那就说明失败了吗?使用conda init对conda进行初始化,然后重启终端就会自动激活base环境,当然你也可以输入conda activate base手动激活

  • 创建虚拟环境conda create -n pytorch (这一步只是创建了名为pytorch的空环境)

注意:这样会使用当前 Anaconda 的默认 Python 版本,而 PyTorch 和 YOLOv5 可能对 Python 版本有兼容性要求。建议在创建时指定一个稳定的版本conda create -n pytorch python=3.8

  • 激活创建的虚拟环境conda activate pytorch
  • 打开pytorch的官网 选择自己电脑的配置之后 复制下方的命令行到Anaconda Prompt中安装 要注意的是 如果您没有NVIDIA显卡,PyTorch 官网生成的命令默认是CUDA,安装后会报错,您需要照着自己电脑的配置来进行修改。

  • 检查安装包pip list 回车后会打印出来一个列表 这时我们需要的package都还没有安装 于是进入YOLOv5 项目目录执行:pip install -r requirements.txt

环境隔离

关于为什么要创建虚拟环境?

  1. 通过 environment.ymlrequirements.txt 文件,可以轻松记录环境的依赖
  2. 虚拟环境完全独立,所有操作都限定在环境内部,不会影响系统 Python
  3. 若不使用 全局安装的包会相互覆盖,导致某些项目无法运行

之后我们在GitHub上clone官方的项目github.com/ultralytics... 然后在vscode里选择虚拟环境

一、制作自己的数据集

1. 收集图片

  • 目标类别:玫瑰花、向日葵。
  • 图片要求:
  1. 格式不限(常用jpg、png),但建议统一格式。
  2. 图片数量越多越好,越多则检测效果越佳。
  3. 将收集到的图片放入新建的文件夹,例如 datasets/images/。
  • 开源数据来源:可参考 Kaggle 等平台获取类似数据集。

2. 图片标注

YOLO训练需要标注好的数据,标注信息通常保存为txt文件

标注工具(LabelImg) • 操作步骤:

  1. 打开软件,选择图片文件夹(Open Dir)和标注文件保存文件夹(Change Save Dir)
  2. 在 View 菜单中开启 Auto Save Mode(自动保存模式),可避免手动保存。
  3. 按 W 键开始标注,框选目标后选择或输入标签名称(如 rose、sunflower)
  4. 标注快捷键:A / D 切换上一张/下一张图片。
  5. 切换为yolo模式 生成的才是.txt文件(其他的.json / .xml 文件都无法用于yolo)
  • 注意事项:由于生成的标签文件是根据文件名来进行配对的 所以在完成标注之后 就不可以再修改图片的文件名了

3.数据集目录

bash 复制代码
datasets/
├── images/        # 图片文件夹
│   ├── train/     # 训练集图片
│   └── val/       # 验证集图片
├── labels/        # 标注文件夹
│   ├── train/     # 训练集标注txt
│   └── val/       # 验证集标注txt
└── classes.txt    # 类别文件(每行一个类别名,隔一行)
  • 划分训练集和验证集:通常将80%图片放入train,20%放入val(可以自己手动创建文件夹后移动)
  • 图片中无论是train还是val都需要对应的标签文件也需要按相同结构存放

二、训练模型(以YOLOv5为例)

YOLOv5训练需要三个配置文件:网络结构配置文件、数据集配置文件、超参数配置文件。 以下详细说明如何修改并运行训练。

  • 准备配置文件
  • 修改配置文件

1. 网络结构配置文件(model.yaml)

• YOLOv5提供了5种不同大小的网络模型:yolov5s.yaml、yolov5m.yaml、yolov5l.yaml、yolov5x.yaml (一般来说 越大的精度就会越高 但是速度也会越慢)

• 从YOLOv5源码的 models/ 目录下复制一个配置文件(如 yolov5s.yaml)到你的数据集文件夹(或项目目录)

• 修改内容:将文件中的 nc(number of classes)修改为你数据集的类别数其他参数一般无需改动

2. 数据集配置文件(my_dataset.yaml)

• 从YOLOv5的 data/ 目录下复制 coco128.yaml 作为模板,重命名为 my_dataset.yaml。

• 修改内容:

path: 数据集的根目录路径 eg.path: /home/user/project/datasets # 数据集根目录

train: 训练集图片路径,相对于 path。例如 images/train(和path是以拼接的形式)

val: 验证集图片路径,相对于 path。例如 images/val(和path是以拼接的形式)

nc: 类别数,与网络配置文件一致。

names: 类别名称列表,与 classes.txt 顺序一致

可选:删除或注释掉文件末尾的下载链接等无关内容

3. 预训练模型

我们这里选用的是官方的模型 我们访问YOLOv5官方Releases页面 打开链接:github.com/ultralytics... 然后在Assets中找到 对应的.pt文件 根据你选的模型配置文件(如 yolov5s.yaml)下载对应的 .pt 文件(如 yolov5s.pt),保持大小版本一致 (你大概率不会直接看到 要点击"Show all assets"展开往下翻才会看到所有文件)

4.打开train.py

parser.add_argument("--cfg", type=str, default="", help="model.yaml path")关于网络的配置 对应的是cfg 复制yolov5s的相对路径到default中(datasets/yolov5s.yaml)

parser.add_argument("--weights", type=str, default=ROOT / "yolov5s.pt", help="initial weights path")加载预训练模型的(注意路径 默认是yolo5s.pt)

parser.add_argument("--data", type=str, default=ROOT / "data/coco128.yaml", help="dataset.yaml path")配置数据集的文件 我们就修改 default 改成我们自己使用的数据集配置文件

5. 其他

  • 超参数配置文件(hyp.yaml)使用YOLOv5默认的超参数文件即可,位于 data/hyps/hyp.scratch-low.yaml(也可根据需要复制修改)
  • 第5行 parser.add_argument("--epochs", type=int, default=100, help="total training epochs")这里的100 对应的是 训练的轮次
  • batch-size 批处理的大小(单独一次加载多少张图片进行处理) 可以改成32,也可以是1
  • parser.add_argument("--workers", type=int, default=8, help="max dataloader workers (per RANK in DDP mode)")一般情况下8普通电脑是跑不了的 改为2(最大加载数 属于多线程的操作)

三.验证模型和推理

打开detect.py

这是yolov5自带的一个官方检测代码(第368行)

parser.add_argument("--weights", nargs="+", type=str, default=ROOT / "yolov5s.pt", help="model path or triton URL")

parser.add_argument("--source", type=str, default=ROOT / "data/images", help="file/dir/URL/glob/screen/0(webcam)")

  • 只用修改前两行
  • 第一行 填的是我们要加载的那个检测模型的路径 在终端输出的是 路径"yolov5s.pt"修改为自己训练好的 也就是best.pt
  • 第二行 修改为你要识别的视频/图片文件 也可以实现读取摄像头检测 default = camera index

四.注意事项

  • 点击运行就可以跑了 然后 这时候终端可能就会提醒你 有很多的package还没有安装 除了一个个安装 还可以直接 在终端中输入pip install -r requirements.txt(但是这要在(pytorch) PS D:\yolov5>项目根目录 中进行)
  • 还有就是关于标签的第一个索引是0 您还需要确保 classes.txt 末尾没有多余的空行,或者检查读取后的列表,过滤掉空字符串(因为一个单行的空格也是算作一个标签 没有注意就可能导致顺序错乱)
相关推荐
TechFind1 小时前
用 OpenClaw 搭建企业微信 AI Agent:从零到自动化客服只需 30 分钟
人工智能·agent
FishCoderh1 小时前
OpenClaw部署后Tools工具权限被禁用?一行配置解决
人工智能
飞哥数智坊3 小时前
openclaw 不是全站第一!但它的爆发,足以引人深思
人工智能
zone77394 小时前
001:LangChain的LCEL语法学习
人工智能·后端·面试
程序员鱼皮4 小时前
微软竟然出了免费的 AI 应用开发课?!我已经学上了
人工智能·程序员·ai编程
DevnullCoffe5 小时前
基于 OpenClaw + Pangolinfo API 的 Amazon 价格监控系统:架构设计与最佳实践
人工智能·架构
Baihai_IDP5 小时前
回头看 RLHF、PPO、DPO、GRPO 与 RLVR 的发展路径
人工智能·llm·强化学习
aristotle5 小时前
Openclow安装保姆级教程
人工智能·程序员
明明如月学长5 小时前
从 Subagent 到 Team:Claude Code 把 AI 协同玩明白了
人工智能