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训练环境以及测试环境的过程,主要包括以下内容:
YOLOv5
对应版本的源码下载Pytorch
的适配版本安装与测试YOLOv5
源码的依赖安装与测试- 其他依赖的版本调整与测试
- 字体文件、预训练模型的下载
- 训练流程的测试
注:如果需要快速安装推理环境(不需要训练),参考[[YOLOv5快速推理方法]]
二· 依赖环境(prerequisites
)
本文档主要记录的是 YOLOv5
v6.1
版本的环境部署与测试,使用 Anaconda
或 miniconda
进行虚拟环境和包管理器,因此在执行安装之前,需要确认机器的预安装环境。
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
Anaconda3
或miniconda3
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 安装Pytorch
与torchvision
访问Pytorch
官方网站,查询符合本地硬件配置与软件环境安装指令,这里选择 适配 CUDA 11.3
的Pytorch 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.3
的Pytorch v1.8.1
版本. 没有选择最新版。
注:
Pytorch
官方安装文档中,v1.8+
只提供了适配11.8
、11.7
、11.6
、11.3
和10.2
的CUDA
版本, 通过查询部分资料得知,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
安装完成,且能够加载 GPU
和 CUDA
,则输出True
, 否则输出 False
注:如果校验失败,则重新按照 [[#3.2 安装
Pytorch
与torchvision
]] 中的内容,更换一种方式重新安装,例如,将conda
安装方式更换为pip
安装方式。
3.4 下载 YOLOv5
v6.1
源码
可直接通过 git
命令,下载指定 v6.1
版本的 YOLOv5
源码,如下所示:
git clone -b v6.1 https://github.com/ultralytics/yolov5.git
源代码下载完成后,会回滚到 v6.1
版本的代码。如下图所示:
或通过官方网站下载源码压缩包,解压到本地。地址:YOLOv5
对比上述图片,可以看到,对应提交的记录号码是一致的。
3.5 安装 YOLOv5
依赖
进入 YOLOv5
源码目录,执行以下命令,安装依赖:
cd yolov5# 安装依赖
pip install -r requirements.txt
等待安装完成,如下图所示:
3.6 下载预训练模型
通过访问github地址,定位到对应的 v6.1
标签的release版本,下载预训练模型,文件链接地址 , 如下图所示:
注 :一定要下载与源代码版本号对应的预训练模型,避免因模型结构不一致导致加载时报错。
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
运行成功后,会输出检测结果,如下图所示:
打开位于 runs/detect/exp2
路径保存的图片,可以看到检测结果,如下图所示:
3.9 测试训练流程
通过运行 train.py
脚本,对项目自带的测试数据集(位于 data/coco128
路径),测试训练流程是否正确,如下所示:
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt
运行指令后,会自动下载 COCO128
数据集,然后开始训练,如下图所示:
如果因网速问题,下载失败,可以手动下载数据集,然后解压到与 yolov5
的统计文件夹 datasets
目录下即可,如下所示:
datasets
|--coco128
| |--images
| |--labels
yolov5
|--data
.
.
.
训练正式启动后,每个 epoch
会有进度条显示当前的训练进度,如下图所示:
至此,YOLOv5
v6.1
版本的源代码方式安装的训练环境已完成.
四· 参考链接
- [YOLOv5 GitHub](https://
- Pytorch 安装指南
- ultralytics docs
相关文章:

Windows系统部署YOLOv5 v6.1版本的训练与推理环境保姆级教程
文章目录 一 概述二 依赖环境(prerequisites)2.1 硬件环境2.2 软件环境 三 环境安装3.1 创建并激活虚拟环境3.2 安装Pytorch与torchvision3.3 校验Pytorch安装3.4 下载 YOLOv5 v6.1 源码3.5 安装 YOLOv5 依赖3.6 下载预训练模型3.7 安装其他依赖3.8 测试环境安装3.9 测试训练流…...
[RK3588-Android12] 关于EDP屏外设为Panel,不支持HPD的配置
问题描述 直接附上dts配置,也可自行查看先关文档RKDocs\common\display\Rockchip_RK3588_User_Guide_eDP_CN.pdf 解决方案: // EDP屏参数panel-edp {compatible "simple-panel";// 屏en脚 自行根据原理图配置enable-gpios <&gpioX R…...

142.栈和队列:用栈实现队列(力扣)
题目描述 代码解决 class MyQueue { public:stack<int> stIn; // 输入栈,用于push操作stack<int> stOut; // 输出栈,用于pop和peek操作MyQueue() {}void push(int x) {stIn.push(x); // 将元素压入输入栈}int pop() {// 如果输出栈为空&…...

乡村振兴的乡村产业创新发展:培育乡村新兴产业,打造乡村产业新名片,促进乡村经济多元化发展
目录 一、引言 二、乡村产业创新发展的必要性 (一)适应新时代发展要求 (二)满足消费升级需求 (三)促进农民增收致富 三、培育乡村新兴产业策略 (一)加强科技创新引领 &#…...

数据库|基于T-SQL创建数据库
哈喽,你好啊,我是雷工! SQL Server用于操作数据库的编程语言为Transaction-SQL,简称T-SQL。 本节学习基于T-SQL创建数据库。以下为学习笔记。 01 打开新建查询 首先连接上数据库,点击【新建查询】打开新建查询窗口, …...

智能家居ZigBee网关选型定制指南:主控,操作系统,天线设计,助力IoT开发者
随着科技的发展和人们生活水平的提高,智能家居以其便捷、舒适、安全等特点,逐渐走进千家万户,成为家装消费品换新升级的重要方向。在智能家居系统中,网关扮演着中枢控制器的角色,负责将各种设备连接到互联网上…...

QT截图程序,可多屏幕截图二,增加调整截图区域功能
上一篇QT截图程序,可多屏幕截图只是实现了最基本的截图功能,虽然能用但是缺点也有,没办法更改选中的区域,这在实际使用时不太方便。这篇增加了这个功能。先看看效果。 实现代码为: 头文件 #ifndef MASKWIDGET_H #de…...
开源浪潮与闭源堡垒:大模型未来的双重奏
从数据隐私、商业应用和社区参与等方面来看,开源大模型和闭源大模型各有优劣势。开源模型在透明度、社区协作和成本效益方面具有优势,而闭源模型在安全性、合规性和商业竞争力方面表现出色。因此,我更倾向于认为,未来的大模型发展…...

postman教程-6-发送delete请求
领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了postman发送put请求的方法,本小节我们讲解一下postman发送delete请求的方法。 HTTP DELETE 请求是一种用于删除指定资源的请求方法。在RESTful API 设计中,DELETE 请求…...
java小技能: 数字和字母组合的验证码图片(生成验证码字符并加上噪点,干扰线)
文章目录 引言I 验证码的作用1.1 验证使用计算机的是一个人,而非计算机程序。1.2 提供一个很短的时间窗的一次性密码。II 数字和字母组合的验证码图片2.1 获取验证码图片2.2 生成验证码字符并加上噪点,干扰线see also引言 世界上没有绝对的信息安全,但是有防范得好和坏的分…...

网络故障与排除
一、Router-ID冲突导致OSPF路由环路 路由器收到相同Router-ID的两台设备发送的LSA,所以查看路由表看到的OSPF缺省路由信息就会不断变动。而当C1的缺省路由从C2中学到,C2的缺省路由又从C1中学到时,就形成了路由环路,因此出现路由不…...
Cocos Creator 编辑器的数据绑定详解
Cocos Creator 是一款由 Cocos 平台推出的游戏开发工具,它集成了图形化编辑器、脚本引擎和资源管理器等功能,方便开发者快速地创建游戏。其中,数据绑定是 Cocos Creator 编辑器中非常重要的一个功能,它可以帮助开发者实现页面元素…...
解决Selenium NameError: name ‘By’ is not defined
解决Selenium NameError: name ‘By’ is not defined 文章目录 解决Selenium NameError: name By is not defined背景错误原因解决方法1. 检查导入语句2. 修正拼写和大小写3. 验证Selenium库安装4. 重启IDE或终端5. 检查环境变量 验证总结 背景 在使用Selenium进行Web自动化测…...

创建特定结构的二维数组:技巧与示例
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:二维数组的奇妙世界 二、方法一:直接初始化 1. 初始化一个…...
React Native 之 BackHandler (二十)
react-native 中的 BackHandler 是一个用于处理 Android 设备上的硬件返回按钮(back button)和 iOS 设备上的手势返回(swipe back gesture)的模块。在 React Native 应用中,当用户按下返回按钮或执行返回手势时&#x…...

一篇文章讲透排序算法之快速排序
前言 本篇博客难度较高,建议在学习过程中先阅读一遍思路、浏览一遍动图,之后研究代码,之后仔细体会思路、体会动图。之后再自己进行实现。 一.快排介绍与思想 快速排序相当于一个对冒泡排序的优化,其大体思路是先在文中选取一个…...

kubernetes-PV与PVC、存储卷
一、PV和PVC详解 当前,存储的方式和种类有很多,并且各种存储的参数也需要非常专业的技术人员才能够了解。在Kubernetes集群中,放了方便我们的使用和管理,Kubernetes提出了PV和PVC的概念,这样Kubernetes集群的管理人员就…...
643. 子数组最大平均数 I
给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。 任何误差小于 10-5 的答案都将被视为正确答案。 示例 1: 输入:nums [1,12,-5,-6,50,3], k 4 输出ÿ…...

Node性能如何进行监控以及优化?
一、 是什么 Node作为一门服务端语言,性能方面尤为重要,其衡量指标一般有如下: CPU内存I/O网络 CPU 主要分成了两部分: CPU负载:在某个时间段内,占用以及等待CPU的进程总数CPU使用率:CPU时…...
ToList()和ToArray()的区别
以下是具体分析: 1. 返回类型 ToList():返回一个泛型列表 List<T>,其中 T 是列表中元素的类型。 ToArray():返回一个 Object 类型的数组。如果需要特定类型的数组,必须使用重载的 ToArray(T[] a) 方法&#x…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...

C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
ArcPy扩展模块的使用(3)
管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

未授权访问事件频发,我们应当如何应对?
在当下,数据已成为企业和组织的核心资产,是推动业务发展、决策制定以及创新的关键驱动力。然而,未授权访问这一隐匿的安全威胁,正如同高悬的达摩克利斯之剑,时刻威胁着数据的安全,一旦触发,便可…...

若依项目部署--传统架构--未完待续
若依项目介绍 项目源码获取 #Git工具下载 dnf -y install git #若依项目获取 git clone https://gitee.com/y_project/RuoYi-Vue.git项目背景 随着企业信息化需求的增加,传统开发模式存在效率低,重复劳动多等问题。若依项目通过整合主流技术框架&…...