YOLO系列模型通用搭建流程——YOLOv26为例
引言
很多教程虽然教了怎么搭建YOLO但是解释的较为笼统,YOLO官方也有搭建流程,但是对于新手不友好,今天以YOLOv26为例,完整的详细的搭建整套YOLOv26训练流程,让小白也可以轻松上手最新版YOLO模型。
本篇文章字数近万,如果你是纯新手我建议从头开始慢慢看,中间很多章节可以跳过;如果你是中手可以跳着看,大部分内容都知道;如果你是老手或者只是想知道某个部分的内容,我建议通过目录来找一下到底想看哪里。
1、环境搭建
首先是环境的搭建,我这里有一套完整到不能再完整的流程,以Linux服务器为例,如果你是windows我也附上了教程,直接按照下面指令的顺序安装即可
#Linux
#1️⃣ 安装conda 如果下载过慢可以先在本地直接进入https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh下载后再拖进服务器
sudo wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sudo chmod +x Miniconda3-latest-Linux-x86_64.sh————————————可不执行
./Miniconda3-latest-Linux-x86_64.sh #有enter按enter 有yes输入yes
#⭐️如果你是windows,则可以访问这个地址安装miniconda:https://blog.csdn.net/ming12131342/article/details/140233867
#2️⃣ 重启一下终端 然后开始安装环境 torch是环境名 可以改变
conda create -n torch python=3.12 #安装python3.12 我只推荐12 其他版本我觉得要么太新要么太老 而且对于Python12来说,对于torch cuda等依赖也比较全面且符合大部分机型
conda activate torch
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple #切换镜像源安装更快
pip config debug
pip config list #查看镜像源是否切换成功
#3️⃣ 安装torch环境
pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 matplotlib tqdm pyyaml sentry-sdk einops timm pandas scipy seaborn scikit-learn
#这里需要检查一下nvidia-smi
#第一行最后得大于等于12.2:
NVIDIA-SMI 535.183.01 Driver Version: 535.183.01 ⭐️CUDA Version: 12.2⭐️
#如果小于12.2则需要降低torch版本
这里需要解释一下,torch的版本对应关系,访问该网址:download.pytorch.org/whl/torch/
按照你的版本比如CUDA Version版本为12.2就如我上面那样,去该网址搜索cu12(即Cuda12版本的相关安装包),如下图:

红框中框选出来的就是版本对应,以torch-2.1.0+cu121-cp38-cp38-win_amd64.whl举例,表示torch版本2.1.0则需要CUDA版本为12.1以上,python版本3.8以上,后面的win_amd64表示windows系统,如果是linux_x86_64则是linux系统,相应的如果要安装torch2.2.0则至少需要python3.10,以此类推即可。
下面继续安装
# 4️⃣安装其他依赖
conda install opencv ——>自动安装libgl1-mesa-glx或libglx-mesa0 和 libglib2.0-0
# 这里需要使用conda来安装,保证会自动安装libgl1-mesa-glx或libglx-mesa0 和 libglib2.0-0,这两个对于深度学习有用。
如果要给conda换镜像源的话可以复制以下命令到cmd中:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/
conda config --set show_channel_urls yes #检查镜像源
🪐安装完成以后使用以下代码检查一下环境,看安装出来的pytorch是不是cuda版本
import torch
# 1. 打印PyTorch版本和CUDA版本信息
print(f"PyTorch版本: {torch.__version__}")
print(f"CUDA版本(编译时): {torch.version.cuda}")
# 2. 检查CUDA(即GPU)是否可用(这是最关键的判断)
print(f"CUDA是否可用: {torch.cuda.is_available()}")
# 3. 如果可用,查看GPU设备信息
if torch.cuda.is_available():
print(f"可用GPU数量: {torch.cuda.device_count()}")
print(f"当前GPU设备: {torch.cuda.current_device()}")
print(f"GPU设备名称: {torch.cuda.get_device_name(0)}")
else:
print("CUDA不可用。当前安装的可能是CPU版本的PyTorch,或者显卡驱动/CUDA Toolkit未正确安装。")
这样基本环境就安装完毕了,其他深度学习这套基本安装流程都可以使用,以便于更好的管理环境,也可以安装一个基准环境,后面环境可以直接克隆。
2、ultralytics两种安装方式以及通过Git管理
首先安装Git:
- 如果是windows安装git则参考这篇文章:https://blog.csdn.net/mukes/article/details/115693833
- 如果是linux则是:
sudo apt-get install git
git --version # 检查git版本
2.1 第一种 直接安装ultralytics
这种适合仅仅使用YOLO系列模型的同学,首先创建你需要运行的YOLO,比如创建文件夹YOLOv26表示使用YOLOv26模型,然后进入其中启动你的编辑器,接下来按照以下执行命令:
conda activate torch # 启动名为torch的虚拟环境
pip install ultralytics # 直接安装ultralytics
# 接下来就和正常流程一致,使用下面的教程使用YOLO即可
然后就可以使用from ultralytics import YOLO来使用YOLO系列模型了。
具体使用流程可以参考官网:使用 Ultralytics YOLO 进行模型训练 - Ultralytics YOLO 文档
或者参考该链接:YOLOv11来了,使用YOLOv11训练自己的数据集和推理(附YOLOv11网络结构图)-CSDN博客
2.2 第二种 需要对网络进行修改的手动安装ultralytics
去官网ultralytics/ultralytics: Ultralytics YOLO 🚀使用Download zip下载整个项目,然后将整个项目放置在你创建好的项目文件夹中,或者将ultralytics-main改名为你自己的项目名。最终会变成以下样子:

三个箭头从上到下分别是项目名YOLOv26,下载的ultralytics-main主项目,以及其中的ultralytics依赖,其中最有用的是ultralytics依赖,如果你觉得项目名YOLOv26下面还有个主项目名很重复,可以将ultralytics-main改成你的项目名,然后上移一级即可。
同样的这样也算安装好了ultralytics,但是和直接安装不一样的是,这样手动安装项目是可以对YOLO本身进行修改的,举个简单例子如下:

比如我要对YOLOv26的模型进行修改,我就可以去ultralytics-main/ultralytics/cfg/models/26/yolo26.yaml中,对backbone进行修改,这是直接安装难以实现的,手动安装的好处就是可以加以创新。
之后就是跟直接安装类似,不过最好在ultralytics-main中定义自己的训练文件,方便调用ultralytics。
2.3 使用Git对项目进行管理
上面两种方式都可以对项目进行管理,下面以Gitee为例,命令形式都是一致的,如果是Github改个命令名即可,如果实在不确定就问AI让他告诉你命令:
首先在你的Gitee或者Github上面创建好一个空仓库,空仓库就是指,仅仅填写了仓库名称然后直接创建的仓库,不需要其他的初始化什么,省得合并麻烦。
2.3.1 如果你是完全自行创建的项目
在你的项目中执行以下命令,这是没有使用git clone的情况,即全程都是自行创建的项目,并没有别人的git版本记录。
# 1. 检查当前目录状态,确认是否已存在Git仓库或有哪些待跟踪文件
git status
# 输出若为 "fatal: not a git repository..." 说明这是一个新目录,可初始化。
# 2. 将当前目录初始化为一个新的Git仓库,创建隐藏的 .git 文件夹
git init
# 3. (关键步骤) 创建或编辑 .gitignore 文件,忽略不需要版本控制的文件
# 对于深度学习项目,通常需要忽略数据集、模型权重、日志、虚拟环境等
# 示例内容:
# data/
# weights/*.pt
# runs/
# __pycache__/
# .venv/
# *.pyc
# 您可以使用编辑器创建此文件。
# 4. 将当前目录下的所有文件(除.gitignore中声明的)添加到暂存区
git add .
# 也可以用 `git add <文件名>` 添加特定文件
# 5. 将暂存区的文件创建为一个永久的快照(提交),并附上说明性信息
git commit -m "初始提交: 项目框架搭建完成"
# 提交信息应清晰,便于日后回溯。
# 6. 将本地仓库与您已在Gitee上创建的远程仓库关联起来
git remote add origin https://gitee.com/<用户名>/<仓库名>.git
# 远程仓库的别名为 origin,这是惯例。
# 7. 首次将本地提交推送到远程仓库的 main 分支,并建立追踪关系
git push -u origin main
# 如果您的默认分支是 master,请将 `main` 替换为 `master`
# `-u` 参数设置了上游分支,之后在此分支可直接用 `git push`
这样就完成了第一次提交,之后按照类似逻辑修改完成之后再提交,之后再修改再提交即可,比较简单。
2.3.2 如果你是git clone别人的仓库
这时候上面的方法可能行不通,因为有别人的git管理记录,即.git文件,会让某些操作失效。
分为以下几种情况:
1、完全重新开始
执行以下命令:
# 1. 先退回到您想操作的目录的上一层(确保不在要删除的仓库内)
cd /path/to/your/target_directory
# 2. 删除.git文件夹,使其变为普通目录
# Windows (PowerShell) 管理员身份运行
Remove-Item -Recurse -Force .git
# Linux/macOS
rm -rf .git
# 3. 现在,这个目录就“自由”了,您可以重新 `git init`
2、保留别人的历史记录
当然也可以不删除原始的git,而在这基础上继续提交,命令如下:
# 1. 克隆原项目
git clone https://gitee.com/<别人的用户名>/<别人的仓库名>.git
cd <别人的仓库名>
# 2.1 【关键】修改远程仓库地址,指向您自己的仓库
# 首先查看当前的远程地址(通常叫 origin)
git remote -v
# 输出示例:origin https://gitee.com/<别人的用户名>/<别人的仓库名>.git (fetch)
# 修改 origin 指向您自己的仓库
git remote set-url origin https://gitee.com/<用户名>/<仓库名>.git
# 再次验证
git remote -v
# 现在应显示为您自己的Gitee仓库地址
# 2.2 如果你不想删除原始仓库,想以后对方修改了自己可以同步,可以添加原仓库为上游仓库,方便日后同步官方更新
git remote add upstream https://gitee.com/<别人的用户名>/<别人的仓库名>.git
# 现在您有两个远程:origin(您的)、upstream(原作者的)
# 3. 将本地所有分支和提交推送到您自己的远程仓库
git push -u origin main
#⭐️这其中的origin 是指git remote -v 显示的最前面的默认值,如果你不小心修改了命令也要进行相应的修改
#⭐️这其中的main 是你的仓库分支,一般叫做main,如你的不叫main,会提交不上去,可以使用
git branch # 查看
3、 超简洁ultralytics
如果你觉得上面创建的项目看起来很繁琐不够干净,推荐一个项目https://gitee.com/likewater123/ultralytics.git
这是我自行创建的一个超简洁项目,仅仅包含3个文件夹和4个文件,保留了核心功能,去掉了多余的一般用不到的比如docker(除非你用Docker部署),docs等等,需要注意的是该项目仅用作学习用途,参考自原始项目ultralytics/ultralytics: Ultralytics YOLO 🚀:
examples # 各种部署和推理的示例代码。例如ONNX Runtime、OpenVINO、C++推理等。
tests # 单元测试和集成测试。在修改源码后,运行测试是验证功能是否被破坏的黄金标准。
ultralytics # 项目核心源代码。所有模型架构、引擎、工具函数的实现都在这里。
.gitignore # 告知Git哪些文件或目录应被忽略,不纳入版本管理。
LICENSE # 软件许可证文件,规定了他人使用、修改和分发您代码的法律条款。
pyproject.toml # 现代Python项目的核心配置文件。
README.md # 项目的中文版说明文档。
具体完整的操作使用流程如下:
- 1、首先创建一个通用项目文件夹比如Projects,或者ultralytics,或者YOLO-series等等你觉得不错的。
- 2、然后使用命令克隆这个仓库,这里不管是公用电脑还是私用电脑都可以
git clone https://gitee.com/likewater123/ultralytics.git
- 3、接下来修改主项目名,就是之前提到的ultralytics-mian,但是这个项目名就叫做ultralytics,总之把你还没进入之前的项目名改成你想要的,比如:yolov11,yolov26等等,然后从你的通用项目文件夹Projects进入该项目。接下来是重点:
- 3.1 如果你是个人电脑,使用以下命令,切换成自己的仓库,然后按照上面的git流程进行相应的操作就可以了:
git remote -v # 查看现有仓库名
git remote set-url origin https://gitee.com/<用户名>/<仓库名>.git # 🌟改成自己的仓库
- 3.2 如果不是你的电脑,或者说是公用电脑,别人的电脑,那么就要注意了,这时候你再进行推送是会报错了,一般错误代码是403,表示没有权限,这是因为一台电脑上面的git默认凭证或者ssh密钥只有一个,那就是主机的Git,而且ssh一般也只认默认的账户,所以这时候需要添加一个新的Git(即你的账户)才能够推送,执行以下的命令:
# 1. 打开 PowerShell (建议以管理员身份运行)
# 为你的 Git 账户生成密钥
ssh-keygen -t ed25519 -C "<邮箱>" -f ~/.ssh/id_ed25519_gitee_<你的用户名>
# 执行后会提示输入密码,可以为空(直接回车)。
# 2. 生成后,查看公钥内容,需要添加到Gitee
cat ~/.ssh/id_ed25519_gitee_<你的用户名>.pub
# 3.创建或编辑 ~/.ssh/config文件,这是实现多密钥智能路由的核心。
# windows的.ssh/config 创建在C:\Users\<电脑用户名>\.ssh下面
# 在其中加入以下信息:
——————————————————————————————————————————————————————————————————————————————————————
# Gitee 配置 - <你的用户名>
# 使用别名 <你的用户名> 连接时,会自动使用对应的私钥
Host gitee-<用户名>
HostName gitee.com
User git
IdentityFile ~/.ssh/id_ed25519_gitee_<用户名>
IdentitiesOnly yes
ServerAliveInterval 30
ServerAliveCountMax 3
TCPKeepAlive yes
# 默认的Gitee配置 即主机Git账户
# 当使用 git@gitee.com 时,将默认使用此密钥 <主机用户名>就是ssh下面的另一个id_ed25519或者rsa的文件
Host gitee.com
HostName gitee.com
User git
IdentityFile ~/.ssh/id_ed25519_gitee_<主机用户名>
IdentitiesOnly yes
ServerAliveInterval 30
ServerAliveCountMax 3
TCPKeepAlive yes
——————————————————————————————————————————————————————————————————————————————————————
- 3.2 这样就添加好了两个Git各自分别的信息,接下来继续,使用ssh-agent来管理两个ssh密钥,windows和linux指令如下:
# WINDOWS 管理员打开powershell
# 1. 确保 ssh-agent 服务正在运行(Windows 10/11 通常内置)
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
# 2. 将两把新私钥添加到 ssh-agent
ssh-add ~/.ssh/id_ed25519_gitee_<你的用户名>
ssh-add ~/.ssh/id_ed25519_gitee_<主机用户名>
# 3. 查看已添加的密钥列表
ssh-add -l
——————————————————————————————————————————————————————————————————
# LINUX
# 1. 启动 ssh-agent 并将环境变量添加到当前shell
eval "$(ssh-agent -s)"
# 2. 将两把新私钥添加到 ssh-agent
ssh-add ~/.ssh/id_ed25519_gitee_<你的用户名>
ssh-add ~/.ssh/id_ed25519_gitee_<主机用户名>
# 3. 查看已添加的密钥列表
ssh-add -l
# 4. (重要)将启动ssh-agent的命令添加到 ~/.bashrc 或 ~/.zshrc
# 这样每次打开终端都会自动加载
echo 'eval "$(ssh-agent -s)"' >> ~/.bashrc
# 如果您使用 zsh
# echo 'eval "$(ssh-agent -s)"' >> ~/.zshrc
- 3.2 然后测试链接是否成功:
# 测试你的账户连接
ssh -T git@gitee-<你的用户名>
# 成功应看到:Hi <你的用户名>! You've successfully authenticated, ...
# 测试主机账户连接
ssh -T git@gitee.com
# 成功应看到:Hi <主机用户名>! You've successfully authenticated, ...
- 3.2 然后就可以安装上面的方法进行正常的推拉啦!这里唯一需要注意的地方就是因为你的账户索引方式改变了,所以你不能直接使用git@gitee.com来索引仓库,那样的话索引的是主机用户的仓库,所以你需要使用以下命令:
# 进入您的项目目录
cd /path/to/your/project/yolo
# 1. 修改远程地址,使用为 chris-stars 配置的别名
git remote set-url origin git@gitee-<你的用户名>:<你的项目仓库>
# 2. 验证远程地址
git remote -v
# 应显示:origin git@gitee-<你的用户名>:<你的项目仓库> (fetch)
# 3. 设置本地提交者信息(与密钥邮箱一致),这里就是设置的本地信息 如果设置不好去掉--local
git config --local user.name "<你的用户名>"
git config --local user.email "<你的邮箱>"
# 4. 验证本地配置已生效
git config --local user.email
git config --local user.name
# 5. 现在可以正常推送
# 添加更改到暂存区
git add .
# 或 git add <特定文件>
# 提交更改。此时提交者将显示为您在本地配置中设置的信息。
git commit -m "描述您的更改内容"
git push -u origin main
# 如果您的默认分支是 ‘master‘,请将 ‘main‘ 替换为 ‘master‘
4、到此问题基本上全部解决!接下来是让YOLOv26跑起来
4.1 创建相应文件夹和文件
1、主项目文件夹下创建以下文件:datasets、train.py、predict.py,三个文件即可,其中datasets文件夹目录格式如下:
datasets
└─coco8
├─images
│ ├─test
│ ├─train
│ └─val
└─labels
├─test
├─train
└─val
2、datasets下的coco8还需要创建一个coco8.yaml文件,文件内容如下:
# 数据集形式有两种:
# 第一种
# └─coco8
# ├─images
# │ ├─test
# │ ├─train
# │ └─val
# └─labels
# ├─test
# ├─train
# └─val
# 第二种
# └─coco8
# ├─train
# │ ├─images
# │ └─labels
# └─val
# │ ├─images
# │ └─labels
# └─test
# ├─images
# └─labels
# 第三种
# dataset/
# ├── images/ # 所有图片混合存放
# ├── labels/ # 所有标签混合存放
# ├── train.txt # 记录训练集图片路径
# ├── val.txt # 记录验证集图片路径
# └── test.txt # 记录测试集图片路径
# 三种均可,三种均可不用test测试集
# 第一种写法
path: datasets/coco8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: images/test # test images (optional)
#————————————————————————————————或——————————————————————————————————————
# train: datasets/coco8/images/train
# val: datasets/coco8/images/val
# test: datasets/coco8/images/test
# 第二种写法
# train: datasets/coco8/train/images
# val: datasets/coco8/val/images
# test: datasets/coco8/test/images
# 第三种写法
# train: datasets/train.txt
# val: datasets/val.txt
# test: datasets/test.txt
# Classes
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush
# Download script/URL (optional)
# download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip
3、train.py 和 predict.py文件内容如下:
train.py
from ultralytics import YOLO
def main():
model = YOLO(model=r'ultralytics/cfg/models/26/yolo26n.yaml')
model.load('yolo26n.pt')
# 加载预训练权重 也可以写成model.YOLO('yolo26n.pt') 如果训练自己的数据集不用加载
# Train the model on the COCO8 dataset for 100 epochs 训练100轮
model.train(
data=r"datasets/coco8/coco8.yaml", # Path to dataset configuration file 就是数据集下面的配置文件
epochs=50, # Number of training epochs
imgsz=640, # Image size for training
batch=2, # 批量大小
)
# 如果仅仅是训练 上面的已经足够了————————————————————————————————————————————————————————————————————————————————————
# Evaluate the model's performance on the validation set 评估模型
metrics = model.val()
# Perform object detection on an image 去一张图片用来验证
results = model(r"datasets/coco8/images/val/000000000036.jpg",save=True) # Predict on an image
results[0].show() # Display results 展示结果
if __name__ == '__main__':
main()
predict.py
from ultralytics import YOLO
def main():
model = YOLO(model=r'runs/detect/train/weights/best.pt') # 加载你训练好的权重文件
# 去一张图片用来预测
results = model(r"datasets/coco8/images/val/000000000061.jpg",show=True,save=True)
results[0].show() # 展示结果
if __name__ == '__main__':
main()
4.2创建完成之后,cd进入主项目,运行train.py即可进行训练,运行predict.py可以进行预测。
最终的项目结构如下:

其中的yolo26n.pt启动train.py训练之后会自行下载。
4.3 到此就完成了整个训练流程,大家也可以替换成自己的数据集进行训练预测。
如果你使用的公用电脑,完事后想要删除相对应的信息,那么直接将Git账户上面的私钥删除,然后将公用电脑上面的私钥也删除即可,就是将.ssh文件夹下的两个
id_ed25519_gitee_<你的用户名>
文件删掉,这样别人就无法访问并控制您的Git账户了。
5、后话与结语
如果你遇到了问题或者遇到了错误,可以思考下面几个问题:
- 是否是你的ssh私钥没有配置到你的Git账户中?
- 是否创建了config,并且把配置加入了其中?如果还不行请重启终端。
- 是否是操作流程有问题导致没法正常的运行?
- 文章没有完全看完导致出现问题?
整个项目目前到此为止,整体上是一个完整的流程,但是还存在许多瑕疵,大家如果有不懂的地方可以私信或者在评论区留言,只要是我能够解决的问题,我都会一一解答,后续如果还有时间的话我会对这个项目进行更加细致的讲解,以便于跟大家深入理解YOLO系列项目。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)