YOLOV5环境搭建及框架详解

目录

Pytorch 环境搭建

使用conda命令行创建虚拟环境

查看本机硬件配置

YOLOV5项目

项目下载地址

项目环境搭建

运行detect.py文件

常见报错解决方法

参数设置及模型训练

detect.py 参数设置

train.py 参数设置

本地训练

云端训练

自制数据集及训练

标注数据集

整理文件夹

训练数据集

验证结果

结果可视化


Pytorch 环境搭建

使用conda命令行创建虚拟环境

# 查看环境
conda env list 
# 创建环境
conda create -n 名字 python=版本
# 添加通道
conda config --add channels 通道地址
# 镜像加速
conda create -n 名字 python=版本 -c 镜像地址
# 镜像地址
清华:https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
北京外国语:https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
阿里巴巴:http://mirrirs.aliyun.com/anaconda/pkgs/main
# 查看通道
conda config --get
# 删除环境
conda remove -n 名字 --all

查看本机硬件配置

【命令行窗口输入 nvidia-smi即可查看】

  • 最终确定使用CUDA版本

  • 下载 pytorch 12.1 (官网:PyTorch

    conda activate 环境名称
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
  •  验证pytorch是否安装成功
    conda activate 环境名称
    conda list (看看有没有pytorch或者torch)
    输入python
    输入import torch
    输入torch.cuda.is_available()
    #如果显示True,说明安装成功

    YOLOV5项目

  • 项目下载地址

  • 项目环境搭建

    • 在Pycharm中选择刚刚创建的pytorch虚拟环境下的Python编译器
    •  打开命令行,激活pytorch环境
conda activate 环境名称
pip install -r requirements.txt
  • 运行detect.py文件

                

  • 常见报错解决方法

 问题1:AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘地址

1.在 common.py 文件中添加SPPF类

class SPPF(nn.Module):
    # Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
    def __init__(self, c1, c2, k=5):  # equivalent to SPP(k=(5, 9, 13))
        super().__init__()
        c_ = c1 // 2  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c_ * 4, c2, 1, 1)
        self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)

    def forward(self, x):
        x = self.cv1(x)
        with warnings.catch_warnings():
            warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warning
            y1 = self.m(x)
            y2 = self.m(y1)
            return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))

2.重新下载模型yolov5s.pt ,替换原来的文件

3.路径改为全英路径,不能有中文

问题2:训练完成后不显示检测标注

在 detect.py 主函数中添加代码:cudnn.benchmark=True

参数设置及模型训练

detect.py 参数设置

--weights:选择模型,默认yolov5s.pt
--source:选择文件路径
--img-size:选择图片尺寸,根据模型要求调整
--conf-thres:置信度,默认0.25
--iou-thres:IOU阈值(交/并),默认0.45
--device:设备,默认是CPU

action参数:设置方法如下

-view-img:是否实时显示检测结果,设置action参数则为True,或者在终端、或者如下图
--save-txt:是否保存为txt
--save-conf:是否保存置信度
--nosave:不要保存图片、视频
--classes:检测类别,nargs='+'代表检测多个类别。如果只想检测“人”,可设置--class 0
--agnostic-nms:增强nms检测
--augment:增强
--project:结果保存的路径
--name:文件夹名字
--exist-ok:不同批次训练的结果是否放在同一文件夹下

train.py 参数设置

--weights:训练模型
--cfg:设置模型 models-yolov5s.yaml
--data:设置数据集 data-coco128.yaml
--hyp:超参数
--epochs:训练轮数
--batch-size:多少个数据打包成一个batch进行训练
--img-size:设置图片大小
--rect:矩阵训练方式
--resume:是否在模型基础上进行训练
--nosave:是否只保存最后一次训练的数据
--notest:是否只对最后一个epoch进行测试
--noautoanchor:是否取消采用锚点
--evolve:是否对超参数进行遗传算法
--cache-images:是否对图片进行缓存
--image-weights:对训练过程中不太好的数据加权重
--device:设备
--multi-scale:对图片尺寸进行变换
--single-cls:设置数据集是单、多类别
--adam:是否使用优化器
带有DDP的参数不要改动
--project:存放结果的文件夹路径
--name:结果的文件夹名
--linear-lr:学习速率
--label-smoothing:防止过拟合

本地训练

--workers:设置为0,不宜太大
  • 常见报错解决方法

问题1:wandb报错

解决:wandb.errors.UsageError: api_key not configured (no-tty). call wandb.login(key=[your_api__学习那点事的博客-CSDN博客

问题2: numpy版本问题

【已解决】AttributeError: module ‘numpy‘ has no attribute ‘int‘._AI浩的博客-CSDN博客

PackagesNotFoundError: The following packages are not available from current channels的解决办法-CSDN博客

环境要求:numpy>=1.18.5
解决报错:安装 1.20 以下的版本
conda uninstall numpy
pip install numpy==1.19.5
或者
conda install -c cctbx202105 numpy
或者在conda官网 https://anaconda.org/

问题3:RuntimeError: result type Float can't be cast to the desired output type __i

知识经验分享——YOLOv5-6.0训练出错及解决方法(RuntimeError) - 知乎

云端训练

1.打开google colab(colab.google),设置为GPU

2.打包压缩项目文件夹,注意是.zip格式,上传至云端

3.解压

# 解压文件
!unzip /content/yolov5-5.0.zip -d /content/yolov5

# 删除文件
!rm -rf 路径

# 进入文件夹
%cd 路径

# 安装环境
!pip install -r requirements.txt

# 添加插件
%load_ext tensorboard
%tensorboard --logdir-runs/train

# 运行train.py进行训练
!python train.py --rect  

# 下载best.pt在detect.py中进行测试,将--weights的default改为best.pt,查看测试结果

自制数据集及训练

1.自己获得数据集–人工标注/半人工标注

2.使用仿真数据集(GAN网络生成:搜索 synthetic data object detection github)

标注数据集

标注工具:Make Sense

整理文件夹

 新建mydata文件夹,删除前面下载数据集部分,更改train val路径、nc类别数量、调整name类别名称及顺序 。

训练数据集

更改train.py文件中 - -data路径,运行代码

路径报错:将路径改为绝对地址,注意路径的正确!

验证结果

将detect.py文件- -weights参数改为训练好的best.py文件路径,- -source参数改为train文件夹路径,运行代码

结果可视化

Weights & Biases

 更多关于YOLOV5的框架详解:

YOLOv5网络详解_yolov5网络结构详解-CSDN博客

【pytorch】目标检测:新手也能彻底搞懂的YOLOv5详解 - 知乎

YOLOv5网络模型的结构原理讲解(全)

文章参考视频:目标检测 YOLOv5 开源代码项目调试与讲解实战【土堆 x 布尔艺数】_哔哩哔哩_bilibili

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木(。・ω・。)ノ♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值