YOLOv5 从配置到部署

YOLOv5 从配置到部署

YOLOv5

一. 简介

  • You only look once!

  • 单阶段目标检测(Faster RCNN 双阶段)

  • 快速
  • 精度较高
  • 使用方便
  • https://github.com/ultralytics/yolov5

二. 安装 (Ubuntu)

1. 下载源码

git clone git://github.com/ultralytics/yolov5.git
cd yolov5

2. 配置环境

  • 有conda环境(推荐)
conda create -n py38 python=3.8
conda activate py38
pip install -r requirements.txt
  • 无conda环境(需要Python3.8或3.6)
pip3 install -U -r requirements.txt

3. 下载权重

  • 官网下载(能上Github)
  • https://github.com/ultralytics/yolov5
  • 点击右侧Releases
  • 最下方Assets中点击下载相应模型
  • Cmoon复制
git clone git://github.com/Cmoon-cyl/ros-module.git

将ros-module/cmoon/src 中的weights文件夹复制到yolov5文件夹

4. 使用GPU(英伟达显卡)

  • 安装显卡驱动
  • 安装CUDA以及CUDNN
  • 参考博客:

    https://blog.csdn.net/weixin_45294823/article/details/104119863?spm=1001.2014.3001.5501

三.测试

python3 detect.py --source 0 --weights weights/yolov5s.pt

四.数据集

1.准备

  • 新建dataset文件夹 (名字可自定义)
  • 新建images和labels文件夹 (名字不能错)
  • images和labels内分别新建train和val文件夹 (名字不能错)
  • 将准备的图像按大致8 : 2随机分配,放入images的train和val文件夹内,作为训练集和验证集
  • labels文件夹将存放之后生成的txt格式标签
    YOLOv5 从配置到部署

2.标注:

  • labelImg(img的i大写,其他小写)
  • 安装
pip install labelImg
  1. 打开
labelImg 
  1. 设置
    1. 点击”改变存放目录”,选择yolov5/dataset/labels/train
    2. 点击”打开目录”,选择yolov5/dataset/images/train
    3. 设置标注格式为yolo
    4. view中勾选自动保存模式和显示类别
  2. 标注
    • w 创建区块,框选标注的物体,输入标签名称
    • a/d 切换上一张/下一张
    • 选中标签,可拖动或修改大小,右侧”编辑标签”可改变标签名称
    • ctrl + d 复制当前标签
    • ↑↓←→键 微调标签位置
    • ctrl + v 复制上一张图片的标签 (在连续标注相同类别标签时很有用)
  3. 注意
    • 标注后会生成classes.txt文件,里面的顺序应和标注文件内的物体一一对应
    • 第一次出现的物体要注意名称不要打错
    • 多人合作标注一定要保证classes.txt内的顺序一致
    • 标注框应紧贴被标注的物体,不要留有缝隙
    • 注意不要漏标
  4. Roboflow (官方推荐的在线标注网站)
  5. 网址:https://roboflow.com
  6. 创建project (命名随意)
    YOLOv5 从配置到部署
  7. 上传图片(可不分train和val把所有图片都放入)
  8. 标注
    • d 拖拽
    • c 画框
    • ←/→ 切换上一张/下一张
    • 其余操作点击图标
  9. 分配train/val/test (训练集,验证集,测试集)
    YOLOv5 从配置到部署
  10. 选择图片预处理
    YOLOv5 从配置到部署
  11. 选择数据增强
    YOLOv5 从配置到部署
  12. 导出数据集(选择YOLOv5格式)
    YOLOv5 从配置到部署
  13. 下载数据集
    • 自动导出的目录结构与上面我们自己建的不同,两种结构都可以
    • 新建dataset文件夹,将下载的train和val文件夹放入即可
    • 将data.yaml放入data文件夹
    • 下载的文件内容:
      YOLOv5 从配置到部署

3.官方建议

YOLOv5 从配置到部署
  1. 每类图片数量大于1500张 (没那么夸张)
  2. 每类图片的实例(标注的数量)大于10000 (同上)
  3. 图片多样性: 不同光照,不同角度最重要
  4. 标签一致性: 不能有漏标的待检测物体
  5. 标签准确性: 标签需紧贴被标物体,不留空隙,不能漏标
  6. 背景图: 在训练集中加入0~10%的背景图(没有任何标注),以减少假阳性/过拟合 (防止将背景的特征误认为是物体的特征)

; 五.训练

1.准备

  1. 在data文件夹内修改或创建data.yaml (文件名可自定义)
  2. train和val 指定训练集和测试集的图片所在文件夹路径
  3. nc 为训练的classes数量
  4. names 为标签名,需要和classes.txt顺序一一对应
  5. 修改models文件夹中对应预训练模型的yaml文件
  6. 只需修改nc为你训练的classes数量

; 2.本地训练

cd yolov5
python train.py --img 640 --batch 16 --epochs 300 --data data/data.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt
  • 参数说明:
  • img 图片大小
  • batch batch-size 和显卡性能有关,在能设的范围内越大越好,最好为2的倍数(玄学)
  • epochs 训练迭代次数
  • data 指定之前修改的data/data.yaml
  • cfg 模型结构配置文件
  • weights 允许练模型权重
  • resume 如果指定–resume则可以继续上次中断的训练
  • 训练效果
    YOLOv5 从配置到部署
  • 随着训练进度,mAP@.5将从0趋近1
  • 观察多少epochs之后mAP开始趋近1,以在下次训练时修改epochs数
  • 训练过程中best和last模型会实时保存到runs/train/expn/weights中

3.使用Google Colab云训练

  1. 创建谷歌账号
  2. 登录Google Drive
  3. 上传数据集和yolo源码 (点击”新建”,”上传文件夹”)
  4. 新建一个.ipynb文件 (点击”新建”,”更多”,”Google Colaboratory”)
  5. 点击”修改”,”笔记本设置”,”硬件加速器”,”GPU”
  6. 点击右侧”连接”
  7. 查看分配到的GPU
!nvidia-smi
  1. 连接到Google Drive
import os
from google.colab import drive
drive.mount('/content/drive')
  1. cd到yolo目录
%ls
%cd /content/drive/MyDrive/colab/yolov5
  1. 安装依赖
!pip install -qr requirements.txt
!pip install -U pyyaml
  1. 开始训练
!python train.py --img 640 --batch 16 --epochs 300 --data data/data.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt
  1. 注意
  2. 需要科学上网
  3. 用手机也可以训练
  4. 网络需要稳定
  5. 需要时不时检查,防止掉线
  6. 若中途停止训练可以加上–resume从中断处继续训练
  7. 训练过程中best和last模型会自动保存在云盘yolo目录的runs/train/expn/weights中

4.官方建议

  1. 训练小模型或中模型建议使用预训练模型
  2. 训练大模型建议不用预训练模型,从头开始训练
  3. 使用P6模型作为预训练模型可以提高精度,但是会减慢速度,P6模型image size为1280
  4. 初始epochs设为300,如果过拟合减少epochs,欠拟合则增加epochs
  5. 默认image size 640,如果训练小物体检测可将image size设为1280
  6. 训练,测试和部署的image size应一致
  7. 使用硬件所允许最大的batch size

六.部署

1.使用官方detect.py

  1. 将yolov5/runs/train/expn/weights中的best.pt复制到yolov5/weights文件夹
    2.
python detect.py --source 0 --weights weights/best.py

2.使用Cmoon中的Detector.py

  1. 将yolov5/runs/train/expn/weights中的best.pt复制到cmoon/src/weights文件夹
  2. 修改Detector类中的模型名称
self.weights = os.path.dirname(__file__) + '/weights/' + 'best.pt'
  1. 修改最下方device为camera,mode=’realtime’
name = yolo.detect(device='camera', mode='realtime', attributes=None, depth=False, rotate=False)
  1. 运行即可

Original: https://blog.csdn.net/Cmoooon/article/details/122135408
Author: Cmoon-cyl
Title: YOLOv5 从配置到部署

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/520278/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球