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

Windows系统部署YOLOv5 v6.1版本的训练与推理环境保姆级教程

文章目录

  • 一· 概述
  • 二· 依赖环境(`prerequisites`)
    • 2.1 硬件环境
    • 2.2 软件环境
  • 三· 环境安装
    • 3.1 创建并激活虚拟环境
    • 3.2 安装`Pytorch`与`torchvision`
    • 3.3 校验`Pytorch`安装
    • 3.4 下载 `YOLOv5` `v6.1` 源码
    • 3.5 安装 `YOLOv5` 依赖
    • 3.6 下载预训练模型
    • 3.7 安装其他依赖
    • 3.8 测试环境安装
    • 3.9 测试训练流程
  • 四· 参考链接

一· 概述

本文档主要记录使用工程源代码,部署YOLOv5训练环境以及测试环境的过程,主要包括以下内容:

  1. YOLOv5对应版本的源码下载
  2. Pytorch的适配版本安装与测试
  3. YOLOv5源码的依赖安装与测试
  4. 其他依赖的版本调整与测试
  5. 字体文件、预训练模型的下载
  6. 训练流程的测试

注:如果需要快速安装推理环境(不需要训练),参考[[YOLOv5快速推理方法]]

二· 依赖环境(prerequisites)

本文档主要记录的是 YOLOv5 v6.1 版本的环境部署与测试,使用 Anacondaminiconda 进行虚拟环境和包管理器,因此在执行安装之前,需要确认机器的预安装环境。

2.1 硬件环境

  • GPU : NVIDIA GeForce GTX2060
  • RAM : 16GB
  • CPU : Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz
  • ROM : 512GB SSD

注: 一般情况下,训练都会在GPU上进行,因此GPU的性能对训练速度有较大的影响。确保本地已安装NVIDIA独立显卡,否则训练耗时会非常长。

2.2 软件环境

  • 操作系统 : Windows 10
  • Anaconda3miniconda3
  • Python : 3.8+
  • NVIDIA驱动 : latest
  • CUDA : 11.2
  • cuDNN : 8.2.1

三· 环境安装

注: 确保上述软硬件环境已经安装完毕,不在赘述。

3.1 创建并激活虚拟环境

# 创建虚拟环境
conda create -n yolo python=3.8 -y# 激活虚拟环境
conda activate yolo

3.2 安装Pytorchtorchvision

访问Pytorch官方网站,查询符合本地硬件配置与软件环境安装指令,这里选择 适配 CUDA 11.3Pytorch v1.12.1,安装指令如下:

# CUDA 11.3
conda install pytorch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 cudatoolkit=11.3 -c pytorch -c conda-forge -y
# CUDA 11.1
pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html

注: 考虑到版本兼容性问题,本文档中选择适配CUDA 11.3Pytorch v1.8.1版本. 没有选择最新版。

注: Pytorch官方安装文档中,v1.8+ 只提供了适配 11.811.711.611.310.2CUDA 版本, 通过查询部分资料得知,CUDA v11版本中,部分小版本向前兼容,表现形式为版本号标为CUDA v11.x,经过测试,Pytorch v1.8.1 适配 CUDA 11.3 版本可以正常使用。

3.3 校验Pytorch安装

python -c "import torch; print(torch.__version__)"

环境安装正确,则输出 1.8.1+cu111

python -c "import torch; print(torch.cuda.is_available())"

Pytorch 安装完成,且能够加载 GPUCUDA ,则输出True, 否则输出 False

1200

注:如果校验失败,则重新按照 [[#3.2 安装Pytorchtorchvision]] 中的内容,更换一种方式重新安装,例如,将 conda 安装方式更换为 pip 安装方式。

3.4 下载 YOLOv5 v6.1 源码

可直接通过 git 命令,下载指定 v6.1版本的 YOLOv5 源码,如下所示:

git clone -b v6.1  https://github.com/ultralytics/yolov5.git

源代码下载完成后,会回滚到 v6.1 版本的代码。如下图所示:
1000

或通过官方网站下载源码压缩包,解压到本地。地址:YOLOv5

1000

对比上述图片,可以看到,对应提交的记录号码是一致的。

3.5 安装 YOLOv5 依赖

进入 YOLOv5 源码目录,执行以下命令,安装依赖:

cd yolov5# 安装依赖
pip install -r requirements.txt

等待安装完成,如下图所示:

1200

3.6 下载预训练模型

通过访问github地址,定位到对应的 v6.1 标签的release版本,下载预训练模型,文件链接地址 , 如下图所示:

1000

注 :一定要下载与源代码版本号对应的预训练模型,避免因模型结构不一致导致加载时报错。

3.7 安装其他依赖

为避免报错 ImportError: DLL load failed while importing _imaging: 找不到指定的模块。 ,需要重新安装 Pillow 依赖,如下所示:

pip install Pillow==9.5.0

为避免后续训练过程中,因为 numpy 版本不兼容导致 API 调用报错,需要重新安装 numpy 1.20.3 依赖,如下所示:

 pip install numpy==1.20.3 --force-reinstall

3.8 测试环境安装

通过运行 detect.py 脚本,对项目自带的测试图片(位于 data/images 路径),测试环境安装是否正确,如下所示:

python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images/bus.jpg

运行成功后,会输出检测结果,如下图所示:
1000

打开位于 runs/detect/exp2 路径保存的图片,可以看到检测结果,如下图所示:
800

3.9 测试训练流程

通过运行 train.py 脚本,对项目自带的测试数据集(位于 data/coco128 路径),测试训练流程是否正确,如下所示:

python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt

运行指令后,会自动下载 COCO128 数据集,然后开始训练,如下图所示:
800

如果因网速问题,下载失败,可以手动下载数据集,然后解压到与 yolov5 的统计文件夹 datasets 目录下即可,如下所示:

datasets
|--coco128
|  |--images
|  |--labels
yolov5
|--data
.
.
.

训练正式启动后,每个 epoch 会有进度条显示当前的训练进度,如下图所示:
1000

至此,YOLOv5 v6.1 版本的源代码方式安装的训练环境已完成.

四· 参考链接

  • [YOLOv5 GitHub](https://
  • Pytorch 安装指南
  • ultralytics docs
http://www.lryc.cn/news/358097.html

相关文章:

  • [RK3588-Android12] 关于EDP屏外设为Panel,不支持HPD的配置
  • 142.栈和队列:用栈实现队列(力扣)
  • 乡村振兴的乡村产业创新发展:培育乡村新兴产业,打造乡村产业新名片,促进乡村经济多元化发展
  • 数据库|基于T-SQL创建数据库
  • 智能家居ZigBee网关选型定制指南:主控,操作系统,天线设计,助力IoT开发者
  • QT截图程序,可多屏幕截图二,增加调整截图区域功能
  • 开源浪潮与闭源堡垒:大模型未来的双重奏
  • postman教程-6-发送delete请求
  • java小技能: 数字和字母组合的验证码图片(生成验证码字符并加上噪点,干扰线)
  • 网络故障与排除
  • Cocos Creator 编辑器的数据绑定详解
  • 解决Selenium NameError: name ‘By’ is not defined
  • 创建特定结构的二维数组:技巧与示例
  • React Native 之 BackHandler (二十)
  • 一篇文章讲透排序算法之快速排序
  • kubernetes-PV与PVC、存储卷
  • 643. 子数组最大平均数 I
  • Node性能如何进行监控以及优化?
  • ToList()和ToArray()的区别
  • 11.RedHat认证-Linux文件系统(中)
  • windows系统电脑外插键盘驱动出现感叹号或者显示未知设备,键盘无法输入的解决办法
  • 【开源项目】Excel数据表自动生成工具v1.0版
  • Docker-一文详解容器通信的基础网络模式及衍生的自定义网络模式
  • Convolutional Occupancy Networks【ECCV】
  • Android Studio 问题集锦
  • J.搬砖【蓝桥杯】/01背包+贪心
  • 拥塞控制的微观行为与力学解释
  • 每日一读: 硬件网卡tx支持哪些功能特性offload(ixgbe驱动为例)
  • MyBatis的坑(动态SQL会把0和空串比较相等为true)
  • Springboot事务控制中A方法调用B方法@Transactional生效与不生效情况实战总结