2594 字
13 分钟
YOLO26 项目实现本地图像识别

🎯 YOLO26 完整教程:从安装到训练到部署#

✨ 本教程面向零基础初学者,手把手教你用 Ultralytics YOLO26 实现目标检测

📚 目录#

  1. YOLO26简介
  2. 环境安装
  3. 快速开始:用预训练模型预测
  4. 数据准备:标注你的数据集
  5. 模型训练:训练专属检测器
  6. 验证与评估:看模型学得怎么样
  7. 模型导出与部署
  8. 常见问题排查
  9. 附录:关键参数速查

🔹 1. YOLO26简介#

什么是YOLO?#

YOLO = You Only Look Once(你只看一次)

  • 🔄 实时目标检测算法:单次前向传播即可完成检测
  • ⚡ 速度快:适合视频流、移动端、边缘设备部署
  • 🎯 精度高:持续迭代,在COCO等数据集上表现优秀
  • 🔧 易用性强:Ultralytics提供统一API,Python/CLI均可操作

YOLO26 核心创新 ✨#

特性说明优势
🔹 端到端无NMS移除后处理NMS步骤推理更快,部署更简单
🔹 MuSGD优化器SGD + Muon混合优化器训练更稳定,收敛更快
🔹 移除DFL模块简化模型结构边缘设备兼容性提升
🔹 CPU加速43%专为边缘优化无GPU也能实时推理

🔹 2. 环境安装#

2.1 基础要求#

Terminal window
# Python版本
Python >= 3.8
# PyTorch版本(根据你的CUDA选择)
PyTorch >= 1.8
CUDA 11.0+(GPU训练推荐)

2.2 安装Ultralytics库#

Terminal window
# ✅ 推荐:使用pip安装最新版
pip install -U ultralytics
# 🔄 如果网络慢,使用国内镜像
pip install -U ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
# 🔍 验证安装成功
yolo checks

2.3 可选:GPU加速配置#

# 检查CUDA是否可用(Python中)
import torch
print(torch.cuda.is_available()) # 应输出: True
print(torch.cuda.get_device_name(0)) # 显示GPU型号

🔹 3. 快速开始:用预训练模型预测#

3.1 命令行预测(最简单)#

Terminal window
# 🔹 预测单张图片
yolo predict model=yolo26n.pt source=your_image.jpg show=True
# 🔹 预测视频
yolo predict model=yolo26n.pt source=your_video.mp4 save=True
# 🔹 实时摄像头检测
yolo predict model=yolo26n.pt source=0 show=True

3.2 Python代码预测(更灵活)#

from ultralytics import YOLO
# 🔹 1. 加载预训练模型
model = YOLO("yolo26n.pt") # n/s/m/l/x: 模型从小到大
# 🔹 2. 预测图片
results = model.predict(
source="your_image.jpg",
conf=0.25, # 置信度阈值
iou=0.45, # NMS IoU阈值(YOLO26默认end2end=True时此参数无效)
save=True, # 保存结果图
show=True, # 弹窗显示
)
# 🔹 3. 获取检测结果
for result in results:
boxes = result.boxes
for box in boxes:
print(f"类别: {box.cls[0]}, 置信度: {box.conf[0]:.2f}")
print(f"坐标: {box.xyxy[0]}") # [x1, y1, x2, y2]

3.3 关键参数说明#

参数默认值作用
modelyolo26n.pt模型权重文件,n最小最快,x最大最准
source必填输入源:图片路径/视频/摄像头编号/URL
conf0.25置信度阈值,越低检测越多但误检也越多
saveFalse(Python)/True(CLI)是否保存结果图
showFalse是否弹窗显示结果(Windows需注意窗口闪退)
end2endNone(YOLO26默认True)是否启用端到端无NMS模式

🔹 4. 数据准备:标注你的数据集#

4.1 数据集目录结构(标准格式)#

my_dataset/
├── images/
│ ├── train/ # 训练图片
│ │ ├── img1.jpg
│ │ └── img2.jpg
│ └── val/ # 验证图片
│ ├── img3.jpg
│ └── img4.jpg
├── labels/ # ⚠️ 注意是labels不是label!
│ ├── train/ # 训练标注(YOLO格式.txt)
│ │ ├── img1.txt
│ │ └── img2.txt
│ └── val/ # 验证标注
│ ├── img3.txt
│ └── img4.txt
└── dataset.yaml # 数据集配置文件 ⭐

4.2 YOLO标注格式说明#

# 每个txt文件对应一张图片,每行一个目标:
# <class_id> <x_center> <y_center> <width> <height>
# 示例(检测"猫",类别ID=0):
# 坐标归一化到[0,1],相对于图片宽高
0 0.523 0.612 0.145 0.321 # 一只猫

4.3 用LabelImg标注(新手友好)#

Terminal window
# 1. 安装LabelImg
pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
# 2. 启动LabelImg
labelimg
# 3. 关键:切换保存格式为YOLO
# 方法A:菜单栏 View → 勾选 Auto Save mode → File → Change Save Format → YOLO
# 方法B:快捷键 Ctrl+R → 选择 YOLO
# ✅ 验证:窗口左下角显示 "YOLO"
# 4. 标注流程:
# Open Dir → 选图片文件夹 → W画框 → 输入类别名(如cat) → Ctrl+S保存 → D下一张

4.4 创建 dataset.yaml 配置文件#

# 📄 my_dataset/dataset.yaml
# 数据集路径(推荐用相对路径避免拼接错误)
path: . # 表示"当前目录"
train: images/train # 训练集图片相对路径
val: images/val # 验证集图片相对路径
# 类别信息(从0开始编号)
names:
0: cat # 类别0叫"cat"
1: dog # 如果有第二个类别
# 可选:测试集(评估用)
# test: images/test

4.5 验证数据是否正确#

from ultralytics.data.utils import check_det_dataset
# 检查数据集配置
check_det_dataset("my_dataset/dataset.yaml")
# ✅ 成功标志:打印出图片数量、类别数等信息
# ❌ 失败:报错"images not found"或"no labels found"

🔹 5. 模型训练:训练专属检测器#

5.1 命令行训练(推荐新手)#

Terminal window
# 🔹 基础训练命令(先切换到数据集目录更安全)
cd my_dataset
yolo train model=yolo26n.pt data=dataset.yaml epochs=50 imgsz=640 batch=4 device=cpu
# 🔹 参数详解:
# model=yolo26n.pt : 使用YOLO26最小预训练模型(迁移学习)
# data=dataset.yaml : 数据集配置文件
# epochs=50 : 训练50轮(小数据集50轮足够)
# imgsz=640 : 输入图像尺寸(32的倍数)
# batch=4 : 批次大小(CPU训练建议4~8)
# device=cpu : 使用CPU训练(有GPU可改为device=0)

5.2 Python代码训练(更灵活)#

from ultralytics import YOLO
# 🔹 1. 加载预训练模型
model = YOLO("yolo26n.pt")
# 🔹 2. 训练模型
results = model.train(
data="my_dataset/dataset.yaml", # 数据集配置
epochs=50, # 训练轮数
imgsz=640, # 输入图像尺寸
batch=4, # 批次大小
device="cpu", # 训练设备
workers=4, # 数据加载线程数
patience=20, # 早停耐心值
project="runs/detect", # 结果保存目录
name="my_cat_train", # 本次训练名称
exist_ok=True, # 允许覆盖同名实验
)
# 🔹 3. 训练完成后自动保存最佳模型
# 路径: runs/detect/my_cat_train/weights/best.pt

5.3 断点续训(训练中断后继续)#

Terminal window
# 🔹 命令行续训
yolo train model=runs/detect/my_cat_train/weights/last.pt resume=True
# 🔹 Python续训
model = YOLO("runs/detect/my_cat_train/weights/last.pt")
results = model.train(resume=True)

5.4 训练过程监控#

训练时终端会输出:

Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
1/50 0G 1.234 0.567 0.890 10 640
...
50/50 0G 0.123 0.045 0.067 10 640
指标含义正常范围
box_loss边界框回归损失<1.0 较好
cls_loss分类损失<2.0 较好,越低越好
dfl_loss分布焦点损失<0.5 较好
Instances每批检测到的目标数>0 表示标注被正确加载

🔹 6. 验证与评估:看模型学得怎么样#

6.1 命令行验证#

Terminal window
yolo val model=runs/detect/my_cat_train/weights/best.pt \
data=my_dataset/dataset.yaml \
imgsz=640 \
save_json=True

6.2 Python验证#

from ultralytics import YOLO
# 加载训练好的模型
model = YOLO("runs/detect/my_cat_train/weights/best.pt")
# 在验证集上评估
metrics = model.val(data="my_dataset/dataset.yaml")
# 查看关键指标
print(f"mAP50-95: {metrics.box.map}") # 主要指标
print(f"mAP50: {metrics.box.map50}") # 宽松阈值
print(f"Precision: {metrics.box.mp}") # 精确率
print(f"Recall: {metrics.box.mr}") # 召回率

6.3 关键指标解读#

指标含义目标值
mAP50-95平均精度(IoU从0.5到0.95)🔥 核心指标,越高越好
mAP50IoU=0.5时的平均精度>0.7 较好
Precision精确率:预测为正的样本中真正为正的比例>80% 较好
Recall召回率:真正为正的样本中被正确预测的比例>80% 较好
F1-ScorePrecision和Recall的调和平均综合指标

🔹 7. 模型导出与部署#

7.1 支持导出格式#

Terminal window
# 🔹 导出为ONNX(通用格式,推荐)
yolo export model=best.pt format=onnx imgsz=640
# 🔹 导出为TensorRT(NVIDIA GPU加速)
yolo export model=best.pt format=engine imgsz=640 device=0
# 🔹 导出为OpenVINO(Intel CPU/VPU)
yolo export model=best.pt format=openvino imgsz=640
# 🔹 导出为CoreML(Apple设备)
yolo export model=best.pt format=coreml imgsz=640
# 🔹 导出为TFLite(移动端)
yolo export model=best.pt format=tflite imgsz=640

7.2 部署建议#

平台推荐格式备注
🖥️ 服务器GPUTensorRT / ONNX速度最快
💻 普通电脑ONNX / PyTorch兼容性好
📱 Android/iOSTFLite / CoreML移动端优化
🤖 边缘设备OpenVINO / ONNXRK3588等支持

🔹 8. 常见问题排查#

❌ 问题1:FileNotFoundError: dataset.yaml does not exist#

Terminal window
# ✅ 解决方案:
# 1. 确认dataset.yaml文件存在
dir my_dataset\dataset.yaml
# 2. 用相对路径避免拼接错误
cd my_dataset
yolo train model=yolo26n.pt data=dataset.yaml ...
# 3. 检查yaml内容path是否为"."(当前目录)

❌ 问题2:WARNING no labels found in detect set#

Terminal window
# ✅ 解决方案:
# 1. 确认目录名是 labels(不是label)
# 2. 确认.txt文件内容格式正确:0 0.5 0.6 0.1 0.2
# 3. 确认类别ID与yaml中names对应(如0:cat → txt第一列必须是0)
# 4. 用记事本打开一个.txt验证不是XML格式

❌ 问题3:窗口一闪而过(show=True无效)#

# ✅ 解决方案:用Python+cv2.waitKey控制显示
from ultralytics import YOLO
import cv2
model = YOLO("best.pt")
results = model.predict(source="test.jpg", show=True)
cv2.waitKey(0) # 按任意键关闭窗口
cv2.destroyAllWindows()

❌ 问题4:训练太慢/显存不足#

Terminal window
# ✅ 解决方案:
# 1. 减小batch size: batch=2
# 2. 减小imgsz: imgsz=416
# 3. 使用更小模型: yolo26n.pt(n < s < m < l < x)
# 4. CPU训练时增加workers: workers=2

🔹 附录:关键参数速查#

训练参数(train)#

参数默认值说明
epochs100训练总轮数
batch16批次大小,可设-1自动适配显存
imgsz640输入图像尺寸
deviceNone训练设备:0=GPU0, cpu=CPU, mps=Apple芯片
lr00.01初始学习率
momentum0.937优化器动量
weight_decay0.0005L2正则化系数
patience100早停耐心值(验证指标不提升多少轮停止)
save_period-1每多少轮保存一次checkpoint,-1=只存best/last

预测参数(predict)#

参数默认值说明
conf0.25置信度阈值,过滤低分检测
iou0.7NMS IoU阈值(YOLO26 end2end=True时无效)
max_det300单图最大检测数量
augmentFalse启用测试时增强(慢但准)
agnostic_nmsFalse类别无关NMS(同类目标重叠时用)
classesNone只检测指定类别,如classes=[0]只检测cat
streamFalse流式处理视频,节省内存

数据增强参数(训练时自动应用)#

参数默认值作用
hsv_h0.015色调随机偏移(模拟不同光照)
hsv_s0.7饱和度随机变化
hsv_v0.4亮度随机变化
fliplr0.550%概率水平翻转
mosaic1.0100%概率使用马赛克增强(4图拼1图)
degrees0.0随机旋转角度(0=不旋转)
translate0.1随机平移10%

🎁 附加资源#

🔗 官方文档#

🧪 快速测试代码(复制即用)#

# quick_test.py - 5分钟验证环境
from ultralytics import YOLO
# 1. 加载模型
model = YOLO("yolo26n.pt")
# 2. 预测网络示例图
results = model.predict(
source="https://ultralytics.com/images/zidane.jpg",
save=True,
show=False
)
# 3. 查看结果路径
print(f"结果保存在: {results[0].save_dir}")

💬 最后鼓励#

🚀 记住:训练不是魔法,是”喂数据→调参数→看结果”的循环 🐱 从识别你家猫开始,你离做出爆款应用只差100小时练习 ✨ 遇到问题别慌:90%的报错都是路径/格式小问题,对照本教程一步步查

现在,去创造属于你的AI吧! 😺🔥

YOLO26 项目实现本地图像识别
https://fuwari.vercel.app/posts/yolo26/yolo/
作者
disparaître
发布于
2026-02-26
许可协议
CC BY-NC-SA 4.0