当前位置: 首页 > news >正文

2. YOLOv5 搭建一个完整的目标检测系统核心步骤

以 YOLOv5 为例,搭建一个完整的目标检测系统通常需要以下 5 个核心步骤。我会为你进行一个详细的拆解:

步骤 1: 环境准备

首先,你需要一个能运行 YOLOv5 的计算机环境。推荐使用带有 NVIDIA 显卡的电脑,因为训练过程非常依赖 GPU 进行加速。

  1. 安装操作系统:

    • 推荐使用 Ubuntu 18.04/20.04,Linux 系统在深度学习领域有更好的兼容性和性能。
    • 如果你只有 Windows 电脑,也可以使用,但后续步骤会略有不同,且某些依赖库的安装可能更复杂。
  2. 安装 GPU 驱动、CUDA 和 cuDNN:

    • GPU 驱动: 从 NVIDIA 官网下载并安装对应型号的显卡驱动。
    • CUDA Toolkit: YOLOv5 依赖于 CUDA 进行 GPU 计算。需要安装与你的驱动和将要安装的 PyTorch 版本兼容的 CUDA(例如 CUDA 11.3)。
    • cuDNN: NVIDIA 提供的深度学习加速库,需要与 CUDA 版本匹配。
  3. 安装 Anaconda (推荐):

    • Anaconda 可以方便地管理不同的 Python 环境,避免包版本冲突。
    • 下载并安装 Anaconda 后,创建一个新的环境:
      conda create -n yolov5 python=3.8
      conda activate yolov5
      
  4. 克隆 YOLOv5 仓库并安装依赖:

    • 打开终端,克隆 ultralytics 官方的 YOLOv5 仓库:
      git clone https://github.com/ultralytics/yolov5.git
      cd yolov5
      
    • 安装所有必需的 Python 库。推荐使用 requirements.txt 文件:
      pip install -r requirements.txt
      
      这会自动安装 PyTorch、TorchVision、OpenCV 等一系列库。

验证环境:
在 YOLOv5 目录下,运行以下命令。如果能成功下载预训练权重并在屏幕上显示检测结果,说明你的环境配置成功了。

python detect.py --source data/images/zidane.jpg --weights yolov5s.pt --conf 0.25

步骤 2: 数据准备与标注

这是最耗费人力但至关重要的一步。你需要为你的特定任务准备图像数据并进行标注。

  1. 收集图像:

    • 收集大量包含你想要识别的物体的图像。图像应该尽可能多样化,包括不同的角度、光照条件、背景和物体姿态。
    • 一个好的起点是收集几百到上千张高质量图像。
  2. 标注数据:

    • 你需要使用标注工具在图像上框出物体,并为每个框分配一个类别标签。
    • 推荐工具:
      • LabelImg: 一个简单易用的图形化标注工具,生成 YOLO 格式的 .txt 文件。
      • CVAT: 一个更强大的在线标注平台,支持团队协作,适合大规模项目。
    • 标注格式: YOLO 使用一种特定的文本格式。对于每张图片 image.jpg,会有一个对应的 image.txt 文件,其中每一行代表一个物体:
      <class_id> <x_center> <y_center> <width> <height>
      
      • class_id: 物体类别的索引(从 0 开始)。
      • x_center, y_center, width, height: 归一化后的坐标(范围在 0 到 1 之间)。
  3. 组织数据集目录:

    • 将你的数据集按照以下结构组织,这是 YOLOv5 推荐的格式:
      /path/to/your/dataset
      ├── images
      │   ├── train
      │   │   ├── image1.jpg
      │   │   └── image2.jpg
      │   └── val
      │       ├── image3.jpg
      │       └── image4.jpg
      └── labels├── train│   ├── image1.txt│   └── image2.txt└── val├── image3.txt└── image4.txt
      
    • 训练集 (train): 用于训练模型的主要数据(通常占 80-90%)。
    • 验证集 (val): 用于在训练过程中评估模型性能,防止过拟合(通常占 10-20%)。

步骤 3: 配置文件修改

在开始训练前,你需要修改两个关键的配置文件。

  1. 创建数据集配置文件:

    • yolov5/data/ 目录下,复制一个现有的配置文件(如 coco128.yaml)并改名,例如 my_custom_data.yaml
    • 打开 my_custom_data.yaml 并修改以下内容:
      # train and val data paths
      train: /path/to/your/dataset/images/train  # 训练集图片目录的绝对路径
      val: /path/to/your/dataset/images/val    # 验证集图片目录的绝对路径# number of classes
      nc: 2  # 你的数据集有多少个类别 (例如,识别苹果和橙子,nc=2)# class names
      names: ['Apple', 'Orange']  # 类别名称列表,顺序必须和标注时的 class_id 对应
      
  2. 选择并修改模型配置文件:

    • YOLOv5 提供了多个不同大小的模型(yolov5s.yaml, yolov5m.yaml, yolov5l.yaml, yolov5x.yaml)。s 代表 small,模型最小,速度最快,但精度可能稍低。对于初学者,建议从 yolov5s.yaml 开始。
    • 打开你选择的模型配置文件(如 models/yolov5s.yaml)。
    • 只需要修改一个地方: 将 nc: 80 (默认是 COCO 数据集的 80 个类别) 修改为你的数据集的类别数,例如 nc: 2

步骤 4: 开始训练

一切准备就绪后,就可以启动训练了。在 YOLOv5 根目录下运行以下命令:

python train.py --img 640 --batch 16 --epochs 100 --data my_custom_data.yaml --weights yolov5s.pt --cache

命令参数解释:

  • --img 640: 训练时将图像缩放至 640x640 像素。
  • --batch 16: 每个批次处理 16 张图片。这个值受限于你的 GPU 显存,显存越大,batch 可以设置得越大。如果显存不足,可以减小它,例如 --batch 8--batch 4
  • --epochs 100: 训练将进行 100 个轮次。一个轮次意味着模型将学习完整个训练数据集一次。
  • --data my_custom_data.yaml: 指定你刚刚创建的数据集配置文件。
  • --weights yolov5s.pt: 指定预训练权重。使用 yolov5s.pt 可以让模型在 COCO 数据集上的知识基础上进行迁移学习,这会极大地加快训练速度并提高最终性能。如果你想从零开始训练(不推荐),可以使用 --weights ''
  • --cache: 将数据集缓存到内存中,加速训练。

训练过程中:

  • 你会看到一个进度条,显示当前的轮次、损失值(loss)等信息。
  • 训练过程中的结果(如模型权重、验证集上的预测图像)会保存在 runs/train/exp/ 目录下(每次运行 train.pyexp 会递增为 exp1, exp2 等)。
  • 训练结束后,最佳的模型权重会被保存为 best.pt,最后一轮的权重为 last.pt

步骤 5: 使用训练好的模型进行检测

训练完成后,你可以使用 best.pt 这个最佳模型来对新的图片或视频进行预测。

python detect.py --source path/to/your/test_image.jpg --weights runs/train/exp/weights/best.pt --conf 0.4

命令参数解释:

  • --source path/to/your/test_image.jpg: 指定输入源。可以是单张图片、一个图片目录、一段视频,甚至是电脑的摄像头 (--source 0)。
  • --weights runs/train/exp/weights/best.pt: 指定你训练好的模型权重文件的路径。
  • --conf 0.4: 设置置信度阈值。只有检测框的置信度高于 0.4 时,才会被显示出来。

查看结果:
检测结果图像或视频会保存在 runs/detect/exp/ 目录下。打开后,你就能看到你的模型在新数据上的识别效果了!

后续优化

模型第一次训练的结果可能并不完美。你可以通过以下方式进行迭代优化:

  1. 分析结果: 查看 runs/train/exp/ 目录下的 results.png,它展示了训练过程中各项指标的变化曲线。如果验证集的指标(如 mAP)不再提升甚至下降,说明可能发生了过拟合。
  2. 增加数据: 收集更多、更具多样性的图像数据是最有效的改进方法。
  3. 检查标注: 回顾你的标注数据,确保没有错误(如漏标、错标、框位置不准确)。
  4. 调整超参数: 你可以修改 data/hyps/hyp.scratch-low.yaml 等超参数文件,然后在训练时通过 --hyp 参数指定它,以探索更好的模型性能。
  5. 尝试更大的模型: 如果 yolov5s 的精度不够,可以尝试 yolov5myolov5l,它们拥有更深、更宽的网络,能学习到更复杂的特征,但训练和推理速度会变慢。

按照以上步骤,你就可以成功地使用 YOLOv5 训练出一个属于你自己的物体识别模型了。祝你成功!

http://www.dtcms.com/a/613782.html

相关文章:

  • discuz培训网站模板下载wordpress直接显示文章
  • R语言编程基础与应用 | 探索数据分析的无限可能
  • 北京网站设计网站设计公司价格工商做年报网站
  • 商丘网站建设网站推广镇江做网站的
  • Nginx安全策略
  • NumPy 从数值范围创建数组
  • 网站备案贵州电话学产品设计的可以找什么工作
  • 刷网站排名 优帮云企业所得税什么时候申报缴纳
  • P5736 【深基7.例2】质数筛题解(重置版!)
  • Qt--通过JLinkARM.dll实现Jlink自动烧写
  • gitlab cicd 模块解释
  • 如何实现带历史记录功能的控制台2048游戏
  • gitlab cicd首次操作
  • 建设学院网站意义比价 wordpress 插件下载
  • 电子毕业设计代做网站上海雷蒙威手表网站
  • LangChain Memory
  • 【ZeroRange WebRTC】NACK(Negative Acknowledgment)技术深度分析
  • 物联网架构
  • 网站推广公司兴田德润在哪儿wordpress 手机支付
  • 如何在 VSCode 中创建 Vue 项目
  • 【ZeroRange WebRTC】PLI(Picture Loss Indication)技术深度分析
  • 神马影视 8.8 源码 2025 版,HDR + 杜比音效 + 零卡顿
  • MFC编程实战:全面掌握Combo Box(组合框)控件的高级应用
  • 归并排序 (BM20 数组中的逆序对)
  • Spring @Around 注解
  • 建设企业网站需要考虑的因素有哪些店铺logo设计免费
  • 50019_基于微信小程序的校园互助系统
  • (120页PPT)ChatGPT与数字化转型的业财融合(附下载方式)
  • Java面试中等测试题
  • 爱站库全栈网站开发工程师