文章目录
- 去哪里下代码?
- 怎么下代码?
- 怎么装环境?
- 命令行界面(CLI)指令和Python脚本区别?
- 附录1 conda常用指令
- 附录2 git常用指令
- 附录3 项目代码文件作用
去哪里下代码?
下载代码请大家直接去 YOLOv8
的官方仓库下载,名字叫 ultralytics,有些镜像网站和个人发的等来历不明的代码不要用!
官方仓库长这样子,先别着急下,看完这篇文章你会学到更高级的方法~
怎么下代码?
下载代码方式有三种:
-
直接下载代码压缩包
-
直接下主分支代码压缩包(不推荐!)
-
下发行版压缩包(可以,但有更好的方法!)
-
-
pip install ultralytics (不要用!)
-
git clone https://github.com/ultralytics/ultralytics.git (推荐!但有些人不会用git!😭)
直接下载主分支,不推荐!下文解释为什么。
下发行版,可以!发行版下载下来名字有-8.1.0
后缀的。注意区分!
git
没用过没关系,Linux
一般都预装了,win
和mac
直接来这里下载,无脑安装。
Git - Downloads (git-scm.com)
怎么装环境?
非常简单,就记住一条核心,别用 pip install ultralytics
这条指令!
pip install ultralytics
的确是一种装v8
环境的方式,但是这不是给你们想对代码做改进的同学用的,是给那些不想对YOLOv8
源代码做改动的同学用的!
如果你做改进,一定要将项目源代码放到本地的工作区!那就只能下载压缩包或者clone源代码。
但是下载和clone
也要注意,YOLOv8
有很多的版本,版本是怎么产生的呢?在项目开发过程中,随着新功能的添加、旧问题的修复以及性能的优化,项目会不断地演进。每次对代码的重大更新或稳定的改进之后,开发者通常会发布一个新的版本,这样用户就可以使用到最新的功能和最佳的性能,这些版本没更新一次都更新到了v8项目的”主分支“,就是你每次默认下载的代码版本。
YOLOv8
这个项目维护的非常的频繁,如果你每次都下载主分支,那你可能每次的代码都是不一样的,所以为了保证教程和学习的统一,我们一般使用”发行版“代码。
发行版是指在软件开发中,当一个产品或项目的特定版本准备好被广泛使用时,正式发布给公众的版本。发行版通常包含了从上一个正式发布的版本以来的所有更新,如新功能、改进、和bug修复。发行版通常都是非常稳定的,而且功能上也是很完整的,最主要的是用发行版可以保持你使用的代码版本和我教程的代码版本统一!
目前YOLOv8
项目有两个发行版,v8.1.0
和 v8.2.0
,我这里使用的都是 v8.1.0
,所以下面我的教程都是针对 v8.1.0
,如果你想改进的是YOLO
模型,不需要刻意追求最新的发行版, v8.1.0
对你来说完全够用。v8.1.0
和 v8.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
所以,从下代码到装环境,用下面的指令就可以无脑解决!就是这么简单。
- 克隆
v8.1.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
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
环境安装好后你有两种训练方式:
- 一种就是用
CLI
,也就是yolo task=detect mode=train model=yolov8n.pt args
- 第二种就是用我给的
python
脚本,【训练】【验证】【推理】
CLI
是很方便快捷,但是很多指令你不会用!用不明白为什么非得用呢,用我给的脚本不好吗,各种参数,各种功能给你写的轻轻楚楚。
附录1 conda常用指令
-
创建新环境:
conda create --name myenv
:创建一个名为myenv
的新环境。conda create --name myenv python=3.8
:创建一个包含指定Python版本(例如Python 3.8)的环境。
-
激活和停用环境:
conda activate myenv
:激活名为myenv
的环境。conda deactivate
:停用当前环境。
-
安装包:
conda install numpy
:在当前活动环境中安装NumPy包。conda install numpy=1.18
:安装指定版本的NumPy。conda install numpy scipy pandas
:同时安装多个包。
-
查看环境列表:
conda env list
或conda info --envs
:列出所有Conda环境。
-
查看已安装的包:
conda list
:在当前环境中列出所有已安装的包。conda list -n myenv
:在指定环境myenv
中列出所有已安装的包。
-
更新和删除包:
conda update numpy
:更新当前环境中的NumPy包。conda remove numpy
:从当前环境中删除NumPy包。
-
克隆环境:
conda create --name myenv2 --clone myenv
:从现有环境myenv
克隆到新环境myenv2
。
-
删除环境:
conda remove --name myenv --all
:删除名为myenv
的环境。
-
导出和导入环境:
conda env export > environment.yml
:导出当前环境到environment.yml
文件。conda env create -f environment.yml
:根据environment.yml
文件创建环境。
附录2 git常用指令
新手会 git clone
和 git pull
就够了!
-
配置用户信息:
git config --global user.name "Your Name"
:设置全局用户名。git config --global user.email "your.email@example.com"
:设置全局用户邮箱。
-
初始化和克隆仓库:
git init
:在当前目录初始化一个新的 Git 仓库。git clone https://github.com/user/repo.git
:克隆远程仓库到本地。
-
添加和提交更改:
git add filename
:将文件添加到暂存区。git add .
:将所有更改(当前目录及其子目录中的更改)添加到暂存区。git commit -m "Commit message"
:提交暂存区的更改,并附加提交消息。
-
查看状态和日志:
git status
:查看当前工作目录状态(更改的文件、未追踪的文件等)。git log
:查看提交历史。git log --oneline
:查看压缩的提交历史。
-
分支管理:
git branch
:列出所有本地分支。git branch new-branch
:创建一个名为new-branch
的新分支。git checkout branch-name
:切换到指定分支branch-name
。git checkout -b new-branch
:创建并切换到新分支new-branch
。
-
合并和解决冲突:
git merge other-branch
:将other-branch
分支合并到当前分支。- 在合并过程中,如果遇到冲突,需手动解决冲突的文件,然后使用
git add
将其标记为已解决。
-
推送和拉取:
git push origin branch-name
:将本地分支branch-name
推送到远程仓库。git pull origin branch-name
:从远程仓库拉取branch-name
分支并自动合并到当前分支。
-
撤销操作:
git checkout -- filename
:放弃对文件的未暂存的更改。git reset HEAD filename
:从暂存区撤销对文件的添加。git reset --hard commitID
:重置当前分支到指定提交,丢弃此后的所有更改。
-
查看更改:
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相关的工具和辅助函数。