当前位置: 首页 > 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

相关文章:

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配置&#xff0c;也可自行查看先关文档RKDocs\common\display\Rockchip_RK3588_User_Guide_eDP_CN.pdf 解决方案&#xff1a; // EDP屏参数panel-edp {compatible "simple-panel";// 屏en脚 自行根据原理图配置enable-gpios <&gpioX R…...

142.栈和队列:用栈实现队列(力扣)

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

乡村振兴的乡村产业创新发展:培育乡村新兴产业,打造乡村产业新名片,促进乡村经济多元化发展

目录 一、引言 二、乡村产业创新发展的必要性 &#xff08;一&#xff09;适应新时代发展要求 &#xff08;二&#xff09;满足消费升级需求 &#xff08;三&#xff09;促进农民增收致富 三、培育乡村新兴产业策略 &#xff08;一&#xff09;加强科技创新引领 &#…...

数据库|基于T-SQL创建数据库

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

智能家居ZigBee网关选型定制指南:主控,操作系统,天线设计,助力IoT开发者

随着科技的发展和人们生活水平的提高&#xff0c;智能家居以其便捷、舒适、安全等特点&#xff0c;逐渐走进千家万户&#xff0c;成为家装消费品换新升级的重要方向。在智能家居系统中&#xff0c;网关扮演着中枢控制器的角色&#xff0c;负责将各种设备连接到互联网上&#xf…...

QT截图程序,可多屏幕截图二,增加调整截图区域功能

上一篇QT截图程序&#xff0c;可多屏幕截图只是实现了最基本的截图功能&#xff0c;虽然能用但是缺点也有&#xff0c;没办法更改选中的区域&#xff0c;这在实际使用时不太方便。这篇增加了这个功能。先看看效果。 实现代码为&#xff1a; 头文件 #ifndef MASKWIDGET_H #de…...

开源浪潮与闭源堡垒:大模型未来的双重奏

从数据隐私、商业应用和社区参与等方面来看&#xff0c;开源大模型和闭源大模型各有优劣势。开源模型在透明度、社区协作和成本效益方面具有优势&#xff0c;而闭源模型在安全性、合规性和商业竞争力方面表现出色。因此&#xff0c;我更倾向于认为&#xff0c;未来的大模型发展…...

postman教程-6-发送delete请求

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了postman发送put请求的方法&#xff0c;本小节我们讲解一下postman发送delete请求的方法。 HTTP DELETE 请求是一种用于删除指定资源的请求方法。在RESTful API 设计中&#xff0c;DELETE 请求…...

java小技能: 数字和字母组合的验证码图片(生成验证码字符并加上噪点,干扰线)

文章目录 引言I 验证码的作用1.1 验证使用计算机的是一个人,而非计算机程序。1.2 提供一个很短的时间窗的一次性密码。II 数字和字母组合的验证码图片2.1 获取验证码图片2.2 生成验证码字符并加上噪点,干扰线see also引言 世界上没有绝对的信息安全,但是有防范得好和坏的分…...

网络故障与排除

一、Router-ID冲突导致OSPF路由环路 路由器收到相同Router-ID的两台设备发送的LSA&#xff0c;所以查看路由表看到的OSPF缺省路由信息就会不断变动。而当C1的缺省路由从C2中学到&#xff0c;C2的缺省路由又从C1中学到时&#xff0c;就形成了路由环路&#xff0c;因此出现路由不…...

Cocos Creator 编辑器的数据绑定详解

Cocos Creator 是一款由 Cocos 平台推出的游戏开发工具&#xff0c;它集成了图形化编辑器、脚本引擎和资源管理器等功能&#xff0c;方便开发者快速地创建游戏。其中&#xff0c;数据绑定是 Cocos Creator 编辑器中非常重要的一个功能&#xff0c;它可以帮助开发者实现页面元素…...

解决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自动化测…...

创建特定结构的二维数组:技巧与示例

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;二维数组的奇妙世界 二、方法一&#xff1a;直接初始化 1. 初始化一个…...

React Native 之 BackHandler (二十)

react-native 中的 BackHandler 是一个用于处理 Android 设备上的硬件返回按钮&#xff08;back button&#xff09;和 iOS 设备上的手势返回&#xff08;swipe back gesture&#xff09;的模块。在 React Native 应用中&#xff0c;当用户按下返回按钮或执行返回手势时&#x…...

一篇文章讲透排序算法之快速排序

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

kubernetes-PV与PVC、存储卷

一、PV和PVC详解 当前&#xff0c;存储的方式和种类有很多&#xff0c;并且各种存储的参数也需要非常专业的技术人员才能够了解。在Kubernetes集群中&#xff0c;放了方便我们的使用和管理&#xff0c;Kubernetes提出了PV和PVC的概念&#xff0c;这样Kubernetes集群的管理人员就…...

643. 子数组最大平均数 I

给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且 长度为 k 的连续子数组&#xff0c;并输出该最大平均数。 任何误差小于 10-5 的答案都将被视为正确答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,12,-5,-6,50,3], k 4 输出&#xff…...

Node性能如何进行监控以及优化?

一、 是什么 Node作为一门服务端语言&#xff0c;性能方面尤为重要&#xff0c;其衡量指标一般有如下&#xff1a; CPU内存I/O网络 CPU 主要分成了两部分&#xff1a; CPU负载&#xff1a;在某个时间段内&#xff0c;占用以及等待CPU的进程总数CPU使用率&#xff1a;CPU时…...

ToList()和ToArray()的区别

以下是具体分析&#xff1a; 1. 返回类型 ToList()&#xff1a;返回一个泛型列表 List<T>&#xff0c;其中 T 是列表中元素的类型。 ToArray()&#xff1a;返回一个 Object 类型的数组。如果需要特定类型的数组&#xff0c;必须使用重载的 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 …...

优选算法第十二讲:队列 + 宽搜 优先级队列

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

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用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 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如&#xff0c;可以更新、修复或替换图层数据源&#xff0c;修改图层的符号系统&#xff0c;甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

未授权访问事件频发,我们应当如何应对?

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

若依项目部署--传统架构--未完待续

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