YOLO系列环境配置及训练
目录
前言
一、下载所需
1、Anaconda安装
2、NVIDIA 驱动程序安装
3、CUDA安装
4、CUDNN下载及配置
二、环境配置
1、虚拟环境创建
2、Pytorch安装
3、pycharm环境切换及剩余库的安装
4、YOLO代码的测试及训练配置步骤
(1)测试
(2)数据集准备
(3)开始训练
补充
可能报错及解决:
前言
为方便整理,一下以最经典的YOLOv5为基准,其他YOLO系列代码亦可参考以下步骤
一、下载所需
1、Anaconda安装
Anaconda下载地址:Free Download | Anaconda
正常下载后,我们一路默认安装即可(PS:安装路径可自行选择,为方便下面的路径叙述,本文采用默认安装路径C:\ProgramData\anaconda3),接下来找到系统的环境变量板块,如下:
进入“环境变量”编辑
进入系统变量的Path:
找到Anaconda安装的目录,并将下面四个文件夹的地址录入Path:
确定保存后,我们进入Anaconda Prompt,并输入下方命令检查安装情况:
conda --version
若出现conda及其对应版本,则视为成功:

2、NVIDIA 驱动程序安装
NVIDIA 驱动程序下载:官方驱动 | NVIDIA
根据电脑配置搜索并下载安装:

安装完毕后,进入Anaconda Prompt 输入,如下指令查看显卡支持的最高CUDA版本:
nvidia-smi

3、CUDA安装
CUDA下载地址:CUDA Toolkit Archive | NVIDIA Developer
为与后面的Pytorch安装做准备,请务必进入Pytorch官网查看对应CUDA版本要求
Pytorch官网:PyTorch

例如上图,我们选择对应的CUDA版本下载:

进入后,按照电脑配置依次选择:
下载完成后打开安装包,安装路径选择默认即可,并选择自定义,全选,等待安装完毕:


4、CUDNN下载及配置
CUDNN下载地址:cuDNN Archive | NVIDIA Developer 选择对应的CUDA版本下载


下载完成 并 解压缩后,将其如下三个文件夹内的 内容,拷贝一份进CUDA安装目录下的对应文件夹中:
二、环境配置
1、虚拟环境创建

进入Anaconda Prompt 输入,如下指令:
conda create --name {自己命名的环境名称} {追加指定Python版本}例如:
conda create --name road python=3.8
输入 “Y” 继续:
结束后可输入以下命令查看所有环境,以及进入所需环境:
查看环境
conda env list

进入环境
activate road
如下,前置括号显示环境名则视为成功进入:
2、Pytorch安装
pytorch官网: PyTorch
根据之前的CUDA版本选择后,复制框内命令:
粘贴至 已切换到虚拟环境的Anaconda Prompt中进行 torch的安装,中途输入“Y”继续:
安装完毕后,在终端依次输入如下命令检查,若为“True”,则视为成功: 
3、pycharm环境切换及剩余库的安装
打开pycharm,在右下角进入环境选择:

选择完后,确定即可
下载一份YOLOv5源码,并在Pycharm中打开:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite
找到主目录下的requirements.txt,并注释掉torch的安装(默认会下载CPU版本,固在上面独立安装torch):
在已切换至对应环境的Anaconda Prompt中,将路径切换至requirements.txt对应目录下,并输入如下命令(若因网络问题,可临时换源进行下载):
pip install -r requirements.txt临时换源安装:
pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
等待剩余库安装完毕即可
4、YOLO代码的测试及训练配置步骤
(1)测试
我们找到主目录下的detect.py文件直接运行测试,如下图所示,runs/detect中有运行结果,则视为成功:
(2)数据集准备
准备一份数据集(有图片及对应的标签),按如下分配方式将图片放至images文件夹中,标签文件放至labels文件夹中:


在images文件夹中,将图片按照比例分至train,val文件夹中(如有需要可再增加test文件夹) ,labels文件夹中对应的标签文件做同样的处理:

注意: 各个标签文件夹中为保险起见,都加入名为classes.txt的文件,里面按列保存所有标签名
数据集准备完毕后,我们在data中新建一个后缀为.yaml的文件,内容如下:(路径不得含有中文)

接着,在models文件夹中选择自己所需的模型配置文件,并打开修改里面的标签类型总数:
(3)开始训练
最后在train.py文件的parse_opt函数中修改一下对应参数:
从上到下依次为 ①权重文件;②模型配置文件;③模型配置文件;④训练轮数设置;⑤显存占用大小设置(就是一次往GPU哪里塞多少张图片);⑥线程数设置;
其中,第一行所需的weights权重文件可在YOLO官方文档中下载:
GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

设置好后,则可以运行train.py开始训练
若出现以下界面则视为成功:
补充
可能报错及解决:
若出现以下错误:
ImportError: Failed to initialize: Bad git executable.
可在train.py文件的头部加上下面代码解决:
os.environ["GIT_PYTHON_REFRESH"] = "quiet"

相关文章:
YOLO系列环境配置及训练
目录 前言 一、下载所需 1、Anaconda安装 2、NVIDIA 驱动程序安装 3、CUDA安装 4、CUDNN下载及配置 二、环境配置 1、虚拟环境创建 2、Pytorch安装 3、pycharm环境切换及剩余库的安装 4、YOLO代码的测试及训练配置步骤 (1)测试 (…...
推荐PHP付费进群源码
PHP付费进群源码带自动定位基于ThinkPHP框架开发的,可以快速搭建知识付费粉丝进群。 更新: 1.首页付款轮播 2.城市定位功能 3.更新及优化域名库及支付设置 4.新增一张图模板设置模式,简化后台模板设置 5.前后台其他优化 演示地址:…...
Maven修改仓库和镜像地址
目录 1、修改仓库地址2、修改镜像地址 1、修改仓库地址 使用IDEA时,如果不指定自己下载的Maven,idea会默认使用自带的Maven 3(bundle)。maven 3默认的仓库路径一般是在c盘的用户文件夹中的.m2目录下: 当maven下的pom文件中的依赖逐渐增加时,maven仓库下…...
【m98】接收udp包到变为CopyOnWriteBuffer的rtp包及call模块传递的过程
RtpTransport::OnReadPacket ice和Dtls 传输的创建及1个简单的SFU转发实例 实例生动的再现了这一过程: 【webrtc】接收/发送的rtp包、编解码的VCM包、CopyOnWriteBuffer 对于m98的代码,进行走读,大体了解到类似的过程: \src\pc\rtp_transport.cc 收到的data指针和长度len 直…...
synchronized 到底锁的是谁?
synchronized 到底锁的是谁? 修饰方法: 1、静态方法 2、非静态方法,锁住的是方法的调用者 修饰代码块 1、synchronized修饰非静态方法 锁住的是方法的调用者 锁住实例 流程: 1、线程A先拿到synModel对象然后给这个 synModel对象…...
第六章:进制转换与数据存储
系列文章目录 文章目录 系列文章目录前言一、进制二、进制的转换三、原码、反码、补码总结 前言 进制转换是程序员的基本功。 一、进制 进制组成二进制0-1 ,满2进1以0b或0B开头十进制0-9 ,满10进1八进制0-7,满8进1以数字0开头表示十六进制0…...
【微服务】mysql + elasticsearch数据双写设计与实现
目录 一、前言 二、为什么使用mysqles双写 2.1 单用mysql的问题 2.2 为什么不直接使用es 2.2.1 非关系型表达 2.2.2 不支持事务 2.2.3 多字段将造成性能低下 三、mysqles双写方案设计要点 3.1 全新设计 VS 中途调整架构 3.2 全表映射 VS 关键字段存储 3.2.1 最大程度…...
《向量数据库指南》——用了解向量数据库Milvus Cloud搭建高效推荐系统
了解向量数据库 ANN 搜索是关系型数据库无法提供的功能。关系型数据库只能用于处理具有预定义结构、可直接比较值的表格型数据。因此,关系数据库索引也是基于这一点来比较数据。但是 Embedding 向量无法通过这种方式直接相互比较。因为我们不知道向量中的每个值代表什么意思,…...
EtherCAT主站SOEM -- 4 -- SOEM之ethercatprint.h/c文件解析
EtherCAT主站SOEM -- 4 -- SOEM之ethercatprint.h/c文件解析 一 ethercatprint.h/c文件功能预览:二 ethercatprint.h/c 文件的主要函数的作用:2.1.1 char* ec_sdoerror2string(uint32 sdoerrorcode)2.1.2 char* ec_ALstatuscode2string(uint16 ALstatusc…...
Redis01-缓存击穿、穿透和雪崩
目录 开场白-追命3连 使用场景 01缓存穿透场景与方案 02布隆过滤器 03缓存击穿场景与方案 04缓存雪崩场景与方案 开场白-追命3连 看你项目中有说用到Redis,都是哪些场景使用了Redis呢? 如果发生了缓存穿透、击穿、雪崩如何应对呢?缓存…...
multiple kernel learning(MKL)多核学习
历史上之所以会出现多核学习(MKL)这个词,是因为在深度学习流行起来以前,kernel是处理非线性的默认方法,那个年代优化一个非线性函数不容易,每加一层复杂性可能就需要多设计一个优化算法,MKL就是…...
JS匿名函数之函数表达式与立即执行函数
匿名函数是什么?和具名函数有什么区别?让我为大家介绍一下吧! 没有名字的函数,无法直接使用 一.函数表达式 将匿名函数赋值给一个变量,并且通过变量名去调用,我们将这个称为函数表达式 语法: …...
WebGL:基础练习 / 简单学习 / demo / canvas3D
一、前置内容 canvas:理解canvas / 基础使用 / 实用demo-CSDN博客 WebGL:开始学习 / 理解 WebGL / WebGL 需要掌握哪些知识 / 应用领域 / 前端值得学WebGL吗_webgl培训-CSDN博客 二、在线运行HTML 用来运行WebGL代码,粘贴--运行ÿ…...
Python基础入门例程44-NP44 判断列表是否为空(条件语句)
最近的博文: Python基础入门例程43-NP43 判断布尔值(条件语句)-CSDN博客 Python基础入门例程42-NP42 公式计算器(运算符)-CSDN博客 Python基础入门例程41-NP41 二进制位运算(运算符)-CSDN博客…...
【每日一题Day369】LC187重复的DNA序列 | 字符串哈希
重复的DNA序列【LC187】 DNA序列 由一系列核苷酸组成,缩写为 A, C, G 和 T.。 例如,"ACGAATTCCG" 是一个 DNA序列 。 在研究 DNA 时,识别 DNA 中的重复序列非常有用。 给定一个表示 DNA序列 的字符串 s ,返回所有在 DNA…...
服务器密码机主要功能及特点 安当加密
服务器密码机的主要功能包括: 数据加密:密码机使用各种加密算法对数据进行加密,确保只有拥有正确密钥的接收者才能解密和查看数据。数据解密:密码机使用相应的解密算法和密钥对已加密的数据进行解密,使其恢复成原始数据…...
RIP路由配置
RIP路由配置步骤与命令: 1.启用RIP路由:router rip 2.通告直连网络:network 直连网络 3.启用RIPv2版本:version 2 4.禁用自动汇总:no auto-summary 注意:静态路由通告远程网络,动态路由通告…...
尚硅谷Docker基础篇和Dockerfile超详细整合笔记
Docker基础篇DockerFile Docker:您要如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复?而这个就是使用容器。Docker解决了运行环境和配置问题…...
JavaScript_Date对象_实例方法_get类
计算这一年还剩多少天: <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Document&…...
Go语言在区块链开发中的应用
引言 区块链是近年来备受关注的技术领域,它不仅改变了传统的数据交换和存储方式,还为各种应用场景提供了全新的解决方案。而Go语言(Golang)作为一门简洁、高效的编程语言,正逐渐成为开发区块链应用的首选语言。本文将…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
