YOLOv8小白中的小白安装环境教程!没一个字废话,看一遍不踩坑!

文章目录

    • 去哪里下代码?
    • 怎么下代码?
    • 怎么装环境?
    • 命令行界面(CLI)指令和Python脚本区别?
    • 附录1 conda常用指令
    • 附录2 git常用指令
    • 附录3 项目代码文件作用


去哪里下代码?

下载代码请大家直接去 YOLOv8的官方仓库下载,名字叫 ultralytics,有些镜像网站和个人发的等来历不明的代码不要用!

官方仓库长这样子,先别着急下,看完这篇文章你会学到更高级的方法~

在这里插入图片描述


怎么下代码?

下载代码方式有三种:

  1. 直接下载代码压缩包

    • 直接下主分支代码压缩包(不推荐!)

    • 下发行版压缩包(可以,但有更好的方法!)

  2. pip install ultralytics (不要用!)

  3. git clone https://github.com/ultralytics/ultralytics.git (推荐!但有些人不会用git!😭)


直接下载主分支,不推荐!下文解释为什么。

在这里插入图片描述

下发行版,可以!发行版下载下来名字有-8.1.0后缀的。注意区分!

在这里插入图片描述

在这里插入图片描述

git没用过没关系,Linux一般都预装了,winmac直接来这里下载,无脑安装。

Git - Downloads (git-scm.com)


怎么装环境?

非常简单,就记住一条核心,别用 pip install ultralytics 这条指令!

pip install ultralytics 的确是一种装v8环境的方式,但是这不是给你们想对代码做改进的同学用的,是给那些不想对YOLOv8源代码做改动的同学用的!

如果你做改进,一定要将项目源代码放到本地的工作区!那就只能下载压缩包或者clone源代码

但是下载和clone也要注意,YOLOv8有很多的版本,版本是怎么产生的呢?在项目开发过程中,随着新功能的添加、旧问题的修复以及性能的优化,项目会不断地演进。每次对代码的重大更新或稳定的改进之后,开发者通常会发布一个新的版本,这样用户就可以使用到最新的功能和最佳的性能,这些版本没更新一次都更新到了v8项目的”主分支“,就是你每次默认下载的代码版本。

YOLOv8这个项目维护的非常的频繁,如果你每次都下载主分支,那你可能每次的代码都是不一样的,所以为了保证教程和学习的统一,我们一般使用”发行版“代码。

发行版是指在软件开发中,当一个产品或项目的特定版本准备好被广泛使用时,正式发布给公众的版本。发行版通常包含了从上一个正式发布的版本以来的所有更新,如新功能、改进、和bug修复。发行版通常都是非常稳定的,而且功能上也是很完整的,最主要的是用发行版可以保持你使用的代码版本和我教程的代码版本统一!

在这里插入图片描述

目前YOLOv8项目有两个发行版,v8.1.0v8.2.0 ,我这里使用的都是 v8.1.0,所以下面我的教程都是针对 v8.1.0 ,如果你想改进的是YOLO模型,不需要刻意追求最新的发行版, v8.1.0 对你来说完全够用。v8.1.0v8.2.0差别不是很大。

# 克隆代码
git clone https://github.com/ultralytics/ultralytics.git --branch v8.1.0# 克隆后将路径切换到和pyproject.toml文件同级别,不然装环境会报错
cd ultralytics/

在这里插入图片描述
代码下到本地后开始安装依赖环境!

# 新建一个conda环境
conda create --name yolov8_env python=3.10 -y# 切换到你新建的conda环境
conda activate yolov8_env# 安装yolov8项目所需要的包
pip install -e .

如果在你训练时显示没有用到 gpu, 说明 torch ``torchvision这些包版本没对应,可以去Pytorch官网选择自己的安装指令,但是肯定有人不会选,那就输入下面的指令:

pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113 -i https://pypi.tuna.tsinghua.edu.cn/simple

所以,从下代码到装环境,用下面的指令就可以无脑解决!就是这么简单。

  1. 克隆v8.1.0发行版代码
git clone https://github.com/ultralytics/ultralytics.git --branch v8.1.0
  1. 克隆后将路径切换到和 pyproject.toml 文件同级别,不然装环境会报错
cd ultralytics/
  1. 新建一个conda环境
conda create --name yolov8_env python=3.10 -y
  1. 切换到你新建的conda环境
conda activate yolov8_env
  1. 安装yolov8项目所需要的包
pip install -e .
  1. 如果无法使用GPU
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113 -i https://pypi.tuna.tsinghua.edu.cn/simple

命令行界面(CLI)指令和Python脚本区别?

当你YOLO环境安装好后你有两种训练方式:

  1. 一种就是用CLI,也就是 yolo task=detect mode=train model=yolov8n.pt args
  2. 第二种就是用我给的python脚本,【训练】【验证】【推理】

CLI是很方便快捷,但是很多指令你不会用!用不明白为什么非得用呢,用我给的脚本不好吗,各种参数,各种功能给你写的轻轻楚楚。


附录1 conda常用指令

  1. 创建新环境

    • conda create --name myenv:创建一个名为myenv的新环境。
    • conda create --name myenv python=3.8:创建一个包含指定Python版本(例如Python 3.8)的环境。
  2. 激活和停用环境

    • conda activate myenv:激活名为myenv的环境。
    • conda deactivate:停用当前环境。
  3. 安装包

    • conda install numpy:在当前活动环境中安装NumPy包。
    • conda install numpy=1.18:安装指定版本的NumPy。
    • conda install numpy scipy pandas:同时安装多个包。
  4. 查看环境列表

    • conda env listconda info --envs:列出所有Conda环境。
  5. 查看已安装的包

    • conda list:在当前环境中列出所有已安装的包。
    • conda list -n myenv:在指定环境myenv中列出所有已安装的包。
  6. 更新和删除包

    • conda update numpy:更新当前环境中的NumPy包。
    • conda remove numpy:从当前环境中删除NumPy包。
  7. 克隆环境

    • conda create --name myenv2 --clone myenv:从现有环境myenv克隆到新环境myenv2
  8. 删除环境

    • conda remove --name myenv --all:删除名为myenv的环境。
  9. 导出和导入环境

    • conda env export > environment.yml:导出当前环境到environment.yml文件。
    • conda env create -f environment.yml:根据environment.yml文件创建环境。

附录2 git常用指令

新手会 git clonegit pull 就够了!

  1. 配置用户信息

    • git config --global user.name "Your Name":设置全局用户名。
    • git config --global user.email "your.email@example.com":设置全局用户邮箱。
  2. 初始化和克隆仓库

    • git init:在当前目录初始化一个新的 Git 仓库。
    • git clone https://github.com/user/repo.git:克隆远程仓库到本地。
  3. 添加和提交更改

    • git add filename:将文件添加到暂存区。
    • git add .:将所有更改(当前目录及其子目录中的更改)添加到暂存区。
    • git commit -m "Commit message":提交暂存区的更改,并附加提交消息。
  4. 查看状态和日志

    • git status:查看当前工作目录状态(更改的文件、未追踪的文件等)。
    • git log:查看提交历史。
    • git log --oneline:查看压缩的提交历史。
  5. 分支管理

    • git branch:列出所有本地分支。
    • git branch new-branch:创建一个名为 new-branch 的新分支。
    • git checkout branch-name:切换到指定分支 branch-name
    • git checkout -b new-branch:创建并切换到新分支 new-branch
  6. 合并和解决冲突

    • git merge other-branch:将 other-branch 分支合并到当前分支。
    • 在合并过程中,如果遇到冲突,需手动解决冲突的文件,然后使用 git add 将其标记为已解决。
  7. 推送和拉取

    • git push origin branch-name:将本地分支 branch-name 推送到远程仓库。
    • git pull origin branch-name:从远程仓库拉取 branch-name 分支并自动合并到当前分支。
  8. 撤销操作

    • git checkout -- filename:放弃对文件的未暂存的更改。
    • git reset HEAD filename:从暂存区撤销对文件的添加。
    • git reset --hard commitID:重置当前分支到指定提交,丢弃此后的所有更改。
  9. 查看更改

    • git diff:显示暂存区和工作目录的差异。
    • git diff --staged:显示已暂存的与上次提交的差异。

附录3 项目代码文件作用

在这里插入图片描述

  • assets - 存放图片资源,用于模型测试或示例。

    • bus.jpg - 测试图片,公交车图像。
    • zidane.jpg - 测试图片,足球运动员齐达内的图像。
  • cfg - 配置文件目录,包含模型和数据集的配置。

    • datasets - 各种数据集的配置文件,如COCO、DOTA等。
    • models - 各种模型的配置文件,如YOLOv3、YOLOv5等。
    • trackers - 跟踪算法的配置文件,如ByteTrack、BOTSort等。
  • data - 与数据处理相关的脚本和模块。

    • annotator.py - 数据注释工具。
    • augment.py - 数据增强模块。
    • dataset.py - 数据集加载和处理。
  • engine - 模型训练、评估、导出等核心功能。

    • exporter.py - 模型导出工具。
    • trainer.py - 模型训练器。
    • validator.py - 模型验证器。
  • hub - 与模型集成和管理相关的模块。

    • auth.py - 授权和认证处理。
    • session.py - 会话管理。
  • models - 包含多种不同模型的定义和训练逻辑。

    • rtdetr - RT-DETR模型的实现。
    • yolo - YOLO模型系列的实现,包括检测、姿态估计、目标跟踪等。
  • nn - 神经网络基础模块,如层定义、块定义等。

    • autobackend.py - 自动选择后端处理。
    • modules - 网络层和组件的定义。
  • solutions - 特定问题的解决方案,如目标计数、速度估计等。

    • object_counter.py - 目标计数。
    • speed_estimation.py - 速度估计。
  • trackers - 目标跟踪算法的实现。

    • byte_tracker.py - ByteTrack算法的实现。
    • utils - 跟踪相关的工具,如卡尔曼滤波器等。
  • utils - 各种工具和辅助功能。

    • downloads.py - 下载工具。
    • torch_utils.py - PyTorch相关的工具和辅助函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/11476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP和HTTPS的区别和联系

目录 1. 简介2. TLS 握手过程3. 常见的加密算法3.1 对称加密算法3.2 非对称加密算法 1. 简介 HTTPS在HTTP的基础上引入了一个TLS层,采用密文进行传输,结合对称加密技术和非对称加密技术来实现数据的安全性和完整性。 客户端会生成随机密钥,…

让 计算机 将 数学 公式 表达式 的计算过程绘制出来 【mathematical-expression(MAE)】

目录 文章目录 目录介绍开始实战引入数学表达式计算库引入流程图代码生成库开始进行生成 介绍 大家好 今天我们来分享一个新知识,将数学表达式的整个计算过程,以及计算繁多结果在 Java 中绘制出来,计算机中的数学表达式计算的功能很常见了&a…

react 对输入做出反应与状态

React 提供了一种操作 UI 的声明性方式。您无需直接操作 UI 的各个部分,而是描述组件可能处于的不同状态,并在它们之间切换以响应用户输入。 声明式 UI 与命令式 UI 的比较 在设计 UI 交互时,可能会考虑 UI 如何响应用户操作而更改。考虑一…

[C语言]总览

目录 1. 框架、默认数据类型 2. 分支结构 (1). if ... else ... (2). switch ... case ... 3. 循环结构 (1). while (2). for (3). do ... while 4. 函…

区块链的跨链交互:从学校间交流看跨链技术

区块链是一种去中心化的分布式账本技术,它通过加密学和共识机制来确保数据的安全性和不可篡改性。每个区块链就像一所独立的学校,有自己的制度、学生和重点专业。它们各自运行,有时在同一领域展开不同的活动。随着区块链技术的不断发展&#…

【组合博弈】Outcome Classes

Outcome Classes 一个游戏 G G G的outcome函数代表这个游戏最终的结果,就是说这个游戏最后的赢家是谁。outcome函数是一个从游戏 G G G映射到四个结果的函数,四个结果分别是 L , R , P , N L, R, P, N L,R,P,N。意义如下表: ClassNameDefin…

学习笔记:Adaptive Platform(AP)适配到RTOS

一、背景 1、AP版本 Adaptive Platform AUTOSAR R20-11版本标准支持C14。CM模块支持DDS、SOME/IP协议 2、RTOS RTOS-A核,当前完全支持POSIX PSE51、POSIX PSE52接口,POSIX PSE53部分支持,POSIX PSE54基本不支持。详细接口参考&#xff1a…

第十四天:PHP 开发,输入输出类留言板访问 IPUA 头来源

1.PHP-全局变量$_SERVER 2.MYSQL-插入语法INSERT 3.输入输出-XSS&反射&存储 4.安全问题-XSS跨站&CSRF等 1.输入输出类安全问题 反射性xss 这个先准备一个数据,随便弄一个表名字,在随便弄一点数据存入即可 作为连接的数据库&#xff0c…

排序-归并排序(merge sort)

归并排序(Merge Sort)是一种分而治之的算法,它将原始数组分成越来越小的子数组,直到每个子数组只有一个元素,然后将这些子数组两两合并,过程中保持排序状态,最终合并成一个完全有序的数组。归并…

《一》Word文字编辑软件---架构设计分析

1,简单介绍 今天,我们来模拟offic软件中的word文档,运行如图: 运行程序后会出现主界面,顶端的菜单栏包括“文件”“编辑”“格式”“窗口”和“帮助五个主菜单。 菜单栏下面是工具栏,包含了系统常用的功能按…

如何判断海外住宅ip的好坏?

在海外IP代理中,住宅IP属于相对较好的资源,无论是用于工作、学习、还是娱乐,都能得到较好的使用效果。作为用户,该如何判断海外住宅IP的好坏呢? 稳定性与可靠性:海外住宅IP相比动态IP地址,通常具…

Java全局异常处理,@ControllerAdvice异常拦截原理解析【简单易懂】

https://www.bilibili.com/video/BV1sS411c7Mo 文章目录 一、全局异常处理器的类型1-1、实现方式一1-2、实现方式二 二、全局异常拦截点2-1、入口2-2、全局异常拦截器是如何注入到 DispatcherServlet 的 三、ControllerAdvice 如何解析、执行3-1、解析3-2、执行 四、其它4-1、设…

电脑提示找不到ffmpeg.dll无法继续执行代码怎么办?

电脑提示找不到找不到ffmpeg.dll无法继续执行代码怎么办,有什么好的解决办法,出现这样的弹出就会导致软件无法打开或者是异常关闭,找不到dll文件,是一个非常重要的电脑使用问题,会给使用者带来许多的麻烦。那么找不到d…

LeetCode746:使用最小花费爬楼梯

题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 代码 …

MongoDB和AI 赋能行业应用:制造业和汽车行业

欢迎阅读“MongoDB和AI 赋能行业应用”系列的第一篇。 本系列重点介绍AI应用于不同行业的关键用例,涵盖制造业和汽车行业、金融服务、零售、电信和媒体、保险以及医疗保健行业。 随着人工智能(AI)在制造业和汽车行业的集成,传统…

CDN的工作原理及流程

CDN(Content Delivery Network,内容分发网络)是一种构建在数据网络上的分布式内容分发网络。 CDN利用全局负载均衡技术,将用户的访问请求指向离用户最近且工作正常的流媒体服务器上,由流媒体服务器直接响应用户的请求…

Tableau学习2.0版——复习

官网下载链接:https://www.tableau.com/zh-cn/support/releases 学生账户申请链接:https://www.tableau.com/zh-cn/academic/students。直接去学信网下载学籍在线验证作为申请证明。 目录 1、可视化原理 2、基础图表制作 2.1 对比分析(比…

@游戏行业er!MongoDB广州线下沙龙邀您报名!

随着游戏和应用程序的发展,数据变得越来越重要。在为您的下一个游戏选择数据库时,数据库管理者常常会面对灵活性、可扩展性、可靠性、运营效率等问题或挑战。 MongoDB在游戏开发领域有着广泛的应用,灵活数据模型可以存储和处理各种类型的数据…

JPA ENTITY EXTEND

1. Overview Relational databases don’t have a straightforward way to map class hierarchies onto database tables. To address this, the JPA specification provides several strategies: MappedSuperclass – the parent classes, can’t be entitiesSingle Table …

webpack处理js和css模块化导入导出示例:

webpack默认并不能处理js模块化的导入和导出,依赖于ts-loader和babel-loader webpack.config,js module.exports {entry: ./src/index.ts,output: {filename: main.js,},mode: development, // 或者 productionmodule: {rules: [{test: /\.ts/,exclude: /(node_modules)/,use:…