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)作为一门简洁、高效的编程语言,正逐渐成为开发区块链应用的首选语言。本文将…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
