云计算百科
云计算领域专业知识百科平台

YOLO26来了,更好、更快、更小的 YOLO 模型,使用YOLO26训练自己的数据集和推理(附YOLO26网络结构图),租用 GPU 服务器训练教程,YOLO26创新点解析

在这里插入图片描述


目录

  • 摘要
  • YOLO26更新点
    • ⚡⚡C3k2 小优化
      • ☑️ YOLO26 C3k2代码
      • ☑️ YOLO11 C3k2代码
    • ⚡⚡移除分布焦点损失(DFL)
    • ⚡⚡端到端、无需 NMS 推理
    • ⚡⚡ProgLoss 与 STAL
      • ☑️ProgLoss
      • ☑️STAL (小目标感知标签分配)
    • ⚡⚡MuSGD优化器
  • 从机器人到制造业:YOLO26 的用例
  • 🐴一、YOLO26 源码下载与模型下载
    • ⚡⚡YOLO26模型结构图
    • ⚡⚡1.源码下载
    • ⚡⚡2.官网的预训练模型下载
  • 🐴二、数据集准备
    • ⚡⚡LabelImg & Labelme
      • ☑️ LabelImg(仅限矩形检测框)
      • ☑️ Labelme
    • ⚡⚡ X-AnyLabeling
    • ⚡⚡ 旋转框 (OBB) 标注工具:roLabelImg
    • ⚡⚡1.目标检测数据集标注软件
    • ⚡⚡2.voc数据集格式转换
    • ⚡⚡3.数据集划分
    • ⚡⚡4.修改yolo的训练配置文件
  • 🐴三、YOLO环境配置教程
    • ⚡⚡1.pytorch环境安装
    • ⚡⚡2.其他依赖安装
  • 🐴四、YOLO26训练
    • ⚡⚡本地训练
    • ⚡⚡租用 GPU 服务器训练 (AutoDL 平台)
    • ⚡⚡租用 CSDN 的星图 AI 训练,博主已经配置好 YOLO 训练和推理的环境(星图 AI 平台)
      • ☑️4.1 激活环境与切换工作目录
      • ☑️4.2 模型推理
      • ☑️4.3 模型训练
      • ☑️4.4 下载数据
      • ☑️4.5 已包含权重文件
      • ☑️4.6 常见问题
      • ☑️4.7 参考资料
    • 📗📗Xshell7 和 Xftp7 安装
    • 📗📗Xftp 连接服务器,上传数据与下载数据
    • 📗📗Xftp 双击“此电脑“强制退出并弹窗“Error Report“,Program has stoppedworking窗口
    • 📗📗Xshell 连接服务器
  • 🐴五、YOLO26推理
  • 🐴六、解决训练过程中断怎么继续上次训练
  • 总结

摘要

9 月低,在 YV25 发布会上,正式宣布了 YOLO26,从官网文档中得知最新的 YOLO26 推理速度更快、准确性更高和更容易部署,简单来说,YOLO26 是一个更好、更快、更小的视觉 AI 模型。YOLO26 在 2026年1月14日 正式发布。下图(摘自Ultralytics官网)是不同目标检测模型在 COCO 数据集上的精度(mAP) 对比结果,可以看出 YOLO26 的检测精度最高。

在这里插入图片描述


YOLO26更新点

官网给出的更新点如下: 在这里插入图片描述

以下是 YOLO26 创新点:

  • 移除 DFL 模块:作者从模型架构中移除了分布焦点损失(DFL)模块。无论图像中目标尺寸如何,YOLO26 都能高效运行,同时生成量身定制的边界框。

  • 端到端、无需 NMS 的推理:YOLO26 新增了一种可选模式,无需执行非极大值抑制(NMS)——这一步骤通常用于消除重复预测,从而使实时应用中的部署更简单、更快速。

  • ProgLoss 与 STAL:通过改进的损失函数,官网说了提升了训练稳定性,并大幅度增强了检测精度,在复杂场景中对小目标的识别能力更强。

  • MuSGD 优化器:YOLO26 采用了一种新型优化器,融合了 Muon 和 SGD 两种优化器的优势,帮助模型更快学习并达到更高精度。

官网说,YOLO26 最小的版本在标准 CPU 上的运行速度最高提升了 43%在没有 GPU 的设备上速度也是杠杠的,特别适合对速度和效率要求极高的移动应用、智能摄像头及其他边缘设备。

⚡⚡C3k2 小优化

代码在 ultralytics/nn/modules/block.py 文件里面打开文件后,用快捷键 Ctrl + F 搜索 C3k2 就可以找到

YOLO26 C3k2 多了一个分支,那就是 Bottleneck + PSA ,剩下跟 YOLO11 一样 在这里插入图片描述

模型配置文件的参数可以看出,YOLO26 配置文件的 args 参数传入了两个 True,即走第一个分支 : 在这里插入图片描述

☑️ YOLO26 C3k2代码

class C3k2(C2f):
"""Faster Implementation of CSP Bottleneck with 2 convolutions."""

def __init__(
self,
c1: int,
c2: int,
n: int = 1,
c3k: bool = False,
e: float = 0.5,
attn: bool = False,
g: int = 1,
shortcut: bool = True,
):
"""Initialize C3k2 module.

Args:
c1 (int): Input channels.
c2 (int): Output channels.
n (int): Number of blocks.
c3k (bool): Whether to use C3k blocks.
e (float): Expansion ratio.
attn (bool): Whether to use attention blocks.
g (int): Groups for convolutions.
shortcut (bool): Whether to use shortcut connections.
"""
super().__init__(c1, c2, n, shortcut, g, e)
self.m = nn.ModuleList(
nn.Sequential(
Bottleneck(self.c, self.c, shortcut, g),
PSABlock(self.c, attn_ratio=0.5, num_heads=max(self.c // 64, 1)),
)
if attn
else C3k(self.c, self.c, 2, shortcut, g)
if c3k
else Bottleneck(self.c, self.c, shortcut, g)
for _ in range(n)
)

☑️ YOLO11 C3k2代码

class C3k2(C2f):
"""Faster Implementation of CSP Bottleneck with 2 convolutions."""

def __init__(self, c1, c2, n=1, c3k=False, e=0.5, g=1, shortcut=True):
"""Initializes the C3k2 module, a faster CSP Bottleneck with 2 convolutions and optional C3k blocks."""
super().__init__(c1, c2, n, shortcut, g, e)
self.m = nn.ModuleList(C3k(self.c, self.c, 2, shortcut, g) if c3k else Bottleneck(self.c, self.c, shortcut, g) for _ in range(n))

⚡⚡移除分布焦点损失(DFL)

代码在 ultralytics/utils/loss.py 文件里面打开文件后,用快捷键 Ctrl + F 搜索 BboxLoss 就可以找到

YOLO26 配置文件的设置 reg_max = 1 控制是否移除分布焦点损失(DFL) 在这里插入图片描述 从代码来看,走的分支是 L1 损失(平均绝对误差) ,应该是为了提升速度,而DFL 目的是提高模型精度,它是通过 reg_max 分布值提高定位精度,但会增加计算量。 在这里插入图片描述

⚡⚡端到端、无需 NMS 推理

YOLO26 有点类似 YOLOv10 的双标签分配思路,也是实现 “无 NMS 后处理” 的端到端检测。在训练时都同时使用两个分支,推理时只有 One-to-One:

  • One-to-Many (一对多):一个真实物体会对应多个预测框作为正样本,提升模型对复杂场景的鲁棒性。
  • One-to-One (一对一):让一个目标只对应一个预测框,无须 NMS(非极大值抑制)后处理,大幅降低推理延迟。

可以去 ultralytics/nn/modules/head.py 查看 在这里插入图片描述 后处理在 ultralytics/utils/nms.py 文件的 non_max_suppression 方法,大家去看看就行 在这里插入图片描述

⚡⚡ProgLoss 与 STAL

☑️ProgLoss

ProgLoss 在 ultralytics/utils/loss.py 文件 E2ELoss 类里面

ProgLoss 大概思路就是在训练过程中,动态调整一对多 (One-to-Many)分支和一对一 (One-to-One)分支的损失权重。在训练初期侧重一对多以快速提取特征,在训练后期侧重一对一以实现无 NMS,从代码可以看出 在这里插入图片描述 动态衰减逻辑如下: 在这里插入图片描述

☑️STAL (小目标感知标签分配)

对于小目标,候选锚点质量不稳定。STAL 通过先用较大的 topk 覆盖潜在区域,再用 topk2 精准锁定最匹配的那个锚点。在 YOLO26 中对极小目标处理就是:如果目标太小,将其宽高放大到第二个步长的大小进行候选筛选,在 ultralytics/utils/tal.py 文件 select_candidates_in_gts 方法核心代码如下: 在这里插入图片描述 STAL 配合 ProgLoss(渐进式损失),在训练不同阶段,实现分配器对小目标的分类分值和定位精度有不同的偏好。一句话就是提高模型在小目标或被遮挡目标的检测精度。

⚡⚡MuSGD优化器

MuSGD优化器代码在 ultralytics/optim/muon.py ,MuSGD 将 Muon 和 SGD 结合一起,两个比重各占一半。

  • Muon 部分:负责结构化更新,用 Newton-Schulz 迭代对梯度进行正交化处理,这是在大模型(如 LLM)中常用的处理方法,应该是防止梯度消失或爆炸,整体上实现更稳定的训练和更快的收敛速度
  • SGD 部分:采用随机梯度下降 SGD ,提高计算效率。

在这里插入图片描述

好了 YOLO26 创新点解析到此结束,个人观点仅供参考,文中有错误欢迎各位大佬和观众指正。

从机器人到制造业:YOLO26 的用例

YOLO26 支持的任务如下: 在这里插入图片描述

YOLO26模型可用于缺陷检测,与人工检测相比,它可以更快、更准确地自动识别生产线上的缺陷。以下图(摘自Ultralytics官网)使用 YOLO26 检测工业瓶子:

在这里插入图片描述

🐴一、YOLO26 源码下载与模型下载

⚡⚡YOLO26模型结构图

yolov11.yaml 和 yolo26.yaml 几乎一样,更多细节体现在代码里面,结构图如下图所示: 在这里插入图片描述

⚡⚡1.源码下载

官网的源码下载地址 :官网源码,下载方式如下图,目前我下载版本为 ultralytics-8.4.2

如果官网打不开的话,我已经下载好 YOLO26 源码+预训练模型+训练脚本+推理脚本+训练测试数据集+数据集处理脚本,从文章末尾的公众号发送关键字 :YOLO26源码 ,即可获取完整源码

在这里插入图片描述

⚡⚡2.官网的预训练模型下载

进入官网,往下面拉,看到模型位置,YOLO26 针对不同的场景和应用提供了 YOLO26n、YOLO26n-cls、YOLO26n-seg、YOLO26n-pose、YOLO26n-obb等不同大小的模型,具体看官网提供的,需要下载哪个,鼠标左键单击下载就行。 在这里插入图片描述

在这里插入图片描述

🐴二、数据集准备

在 YOLO 系列任务中,不同的任务(Detection, Segmentation, Keypoints, OBB)对标注格式有不同要求。我主要使用目标检测比较多,也可以在网上使用比较好用的标注自己搜索就行,下面分析主流的标注工具,有好的标注工具大家也可以推荐一下。

⚡⚡LabelImg & Labelme

☑️ LabelImg(仅限矩形检测框)

  • 适合的任务:目标检测 (Detection)
  • 优点:小巧、原生支持 YOLO 格式(.txt)。
  • 教程:
  • 安装:pip install labelimg
  • 启动:在终端输入 labelimg。
  • 配置:左侧工具栏选择 “YOLO” 格式。
  • 操作:按 W 绘制框,A 前一张,D 后一张。
  • 注意:生成的 classes.txt 必须与图片放在一起。

☑️ Labelme

  • 适配任务:语义/实例分割 (Segmentation)、关键点、目标检测。
  • 优点:支持多边形绘制等。
  • 教程:
  • 安装:pip install labelme
  • 启动:终端输入 labelme。
  • 操作:点击 “Create Polygons” 勾勒物体轮廓。
  • 导出:保存为 .json 文件。
  • YOLO转换:YOLO 无法直接用 JSON,需使用脚本将 Labelme JSON 转换为 YOLO Segmentation 格式(x1 y1 x2 y2… 归一化坐标)。

⚡⚡ X-AnyLabeling

听说这是目前开发者社区最喜欢的工具,集成了大量的自动标注模型,简直是解放双手。

  • 适配任务:检测、分割、关键点、OBB (旋转框)。
  • 核心优势:自动标注。内置了 Segment Anything (SAM)、YOLOv8、RT-DETR 等模型,点一下就能自动抠图。
  • 教程:
  • 下载:去 GitHub 下载编译好的 .exe 或源码。
  • 加载模型:点击左侧机器人图标,选择 “Segment Anything” 或其他预训练模型。
  • 标注 OBB:支持绘制旋转矩形,直接导出为 YOLO OBB 格式。
  • 导出:直接支持多种格式(JSON, YOLO, VOC)。

⚡⚡ 旋转框 (OBB) 标注工具:roLabelImg

  • 适合的任务:旋转目标检测 (Oriented Bounding Box)。
  • 场景:常用于遥感影像、倾斜文本、紧密排列的物体。
  • 教程:
  • 安装:需要从 GitHub 克隆源码编译。
  • 操作:按 Z X C V 等快捷键调整矩形框的角度。
  • 输出:通常输出 XML,需转换成 YOLO OBB 的格式(x1 y1 x2 y2 x3 y3 x4 y4)。

除了上述主流工具,也有一些非常实用的工具:

  • AnyLabeling:
    • 和 X-AnyLabeling 类似,也是基于 SAM 的全能标注工具,UI 非常清爽。
  • LabelBee:
    • 针对高精地图和工业场景,支持非常复杂的关键点和 3D 点云标注。
  • IsLabeler:
    • 一款支持自动标注的软件,对中文支持非常好,适合小白快速上手。
  • Make Sense:
    • 网址:makesense.ai。无需安装,直接在浏览器拖入图片即可标注,支持导出 YOLO 格式,适合临时紧急标注几张图。
  • Label Studio
    • 适合任务有检测、分类、音频、文本、关键点。安装方法: pip install label-studio -> 浏览器打开 -> 配置 Labeling Config。
  • 大家根据需求选择合适标注工具就行

    任务类型推荐工具理由
    目标检测 (Rect) LabelImg 或 X-AnyLabeling 前者极简,后者有 AI 辅助。
    实例分割 (Segment) X-AnyLabeling 或 Labelme AnyLabeling可以用 SAM (Segment Anything) 辅助,手动拉点会疯掉。
    关键点 (Pose) Labelme 或 其他 Labelme 需要自己定义点顺序。
    旋转框 (OBB) X-AnyLabeling 或 其他 支持最友好,直接出旋转框坐标。

    ⚡⚡1.目标检测数据集标注软件

    我的数据是目标检测多,目标检测数据集标注我这里推荐两个标注软件,一个是 labelimg,另外一个是 labelme,可以在python环境,使用 pip install labelimg 或者 pip install labelme 进行安装,看你选择哪个标注工具标注了,我使用 labelimg 标注工具

    安装完成在终端输入命令启动标注软件 在这里插入图片描述 下面是软件界面 在这里插入图片描述 设置自动保存标注生成的标注文件 在这里插入图片描述

    ⚡⚡2.voc数据集格式转换

    标注格式如果选择VOC格式,后面需要代码转换格式,如果选择yolo格式就不用转换,voc格式转换yolo格式代码如下:

    import xml.etree.ElementTree as ET
    import os, cv2
    import numpy as np
    from os import listdir
    from os.path import join

    classes = []

    def convert(size, box):
    dw = 1. / (size[0])
    dh = 1. / (size[1])
    x = (box[0] + box[1]) / 2.0 1
    y = (box[2] + box[3]) / 2.0 1
    w = box[1] box[0]
    h = box[3] box[2]
    x = x * dw
    w = w * dw
    y = y * dh
    h = h * dh
    return (x, y, w, h)

    def convert_annotation(xmlpath, xmlname):
    with open(xmlpath, "r", encoding='utf-8') as in_file:
    txtname = xmlname[:4] + '.txt'
    txtfile = os.path.join(txtpath, txtname)
    tree = ET.parse(in_file)
    root = tree.getroot()
    filename = root.find('filename')
    img = cv2.imdecode(np.fromfile('{}/{}.{}'.format(imgpath, xmlname[:4], postfix), np.uint8), cv2.IMREAD_COLOR)
    h, w = img.shape[:2]
    res = []
    for obj in root.iter('object'):
    cls = obj.find('name').text
    if cls not in classes:
    classes.append(cls)
    cls_id = classes.index(cls)
    xmlbox = obj.find('bndbox')
    b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),
    float(xmlbox.find('ymax').text))
    bb = convert((w, h), b)
    res.append(str(cls_id) + " " + " ".join([str(a) for a in bb]))
    if len(res) != 0:
    with open(txtfile, 'w+') as f:
    f.write('\\n'.join(res))

    if __name__ == "__main__":
    postfix = 'png' # 图像后缀
    imgpath = r'E:\\A-毕业设计代做数据\\helmet\\test\\images' # 图像文件路径
    xmlpath = r'E:\\A-毕业设计代做数据\\helmet\\test\\annotations' # xml文件文件路径
    txtpath = r'E:\\A-毕业设计代做数据\\helmet\\test\\labels' # 生成的txt文件路径

    if not os.path.exists(txtpath):
    os.makedirs(txtpath, exist_ok=True)

    list = os.listdir(xmlpath)
    error_file_list = []
    for i in range(0, len(list)):
    try:
    path = os.path.join(xmlpath, list[i])
    if ('.xml' in path) or ('.XML' in path):
    convert_annotation(path, list[i])
    print(f'file {list[i]} convert success.')
    else:
    print(f'file {list[i]} is not xml format.')
    except Exception as e:
    print(f'file {list[i]} convert error.')
    print(f'error message:\\n{e}')
    error_file_list.append(list[i])
    print(f'this file convert failure\\n{error_file_list}')
    print(f'Dataset Classes:{classes}')

    代码需要修改的地方如下:

  • postfix参数填图片的后缀,需要注意图片格式要统一,是png格式就写png,是jpg格式就写jpg
  • imgpath参数填图片所在的路径
  • xmlpath参数填标注文件的路径
  • txtpath参数填生成的yolo格式的文件
  • 在这里插入图片描述

    ⚡⚡3.数据集划分

    划分训练集、验证集、测试集代码如下:

    # -*- coding: utf-8 -*-
    """
    @Auth :落花不写码
    @File :split_yolo_train_val_test.py
    @IDE :PyCharm
    @Motto :学习新思想,争做新青年
    """

    import os
    import shutil
    from sklearn.model_selection import train_test_split
    from pathlib import Path

    test_ratio = 0.6 # 测试集比例
    val_ratio = 0.1 # 验证集比例
    imgpath = r'E:\\5-dataset\\mask\\images' # 图片路径
    txtpath = r'E:\\5-dataset\\mask\\labels' # 标签路径

    BASE_DIR = Path(r'E:\\5-dataset\\mask\\dataset-mask') # 输出目录

    SUPPORTED_IMG_EXTS = ['.jpg', '.jpeg', '.png']

    folders = {
    'train': {'img': BASE_DIR / 'images' / 'train', 'lbl': BASE_DIR / 'labels' / 'train'},
    'val': {'img': BASE_DIR / 'images' / 'val', 'lbl': BASE_DIR / 'labels' / 'val'},
    'test': {'img': BASE_DIR / 'images' / 'test', 'lbl': BASE_DIR / 'labels' / 'test'},
    }

    for f in folders.values():
    f['img'].mkdir(parents=True, exist_ok=True)
    f['lbl'].mkdir(parents=True, exist_ok=True)

    txt_files = [f for f in os.listdir(txtpath) if f.endswith('.txt')]

    def find_image_file(stem, img_dir, exts):
    for ext in exts:
    img_path = os.path.join(img_dir, stem + ext)
    if os.path.exists(img_path):
    return img_path, ext
    return None, None

    paired_files = []
    missing_imgs = []

    for txt_file in txt_files:
    stem = txt_file[:4]
    img_file, _ = find_image_file(stem, imgpath, SUPPORTED_IMG_EXTS)
    if img_file:
    paired_files.append((txt_file, img_file))
    else:
    missing_imgs.append(txt_file)

    if missing_imgs:
    print(f"{len(missing_imgs)} 个标签文件找不到对应图像,例如:{missing_imgs[:3]}")

    txt_list = [pair[0] for pair in paired_files]
    trainval_txt, test_txt = train_test_split(txt_list, test_size=test_ratio, random_state=42)
    relative_val_ratio = val_ratio / (1 test_ratio)
    train_txt, val_txt = train_test_split(trainval_txt, test_size=relative_val_ratio, random_state=42)

    split_map = {}
    for t in train_txt:
    split_map[t] = 'train'
    for v in val_txt:
    split_map[v] = 'val'
    for te in test_txt:
    split_map[te] = 'test'

    def copy_file_pair(txt_file, img_file, split):
    # 目标路径
    dst_img = folders[split]['img'] / os.path.basename(img_file)
    dst_lbl = folders[split]['lbl'] / txt_file

    shutil.copy(img_file, dst_img)
    shutil.copy(os.path.join(txtpath, txt_file), dst_lbl)

    for txt_file, img_file in paired_files:
    split = split_map[txt_file]
    copy_file_pair(txt_file, img_file, split)

    total_files = len(paired_files)
    print(f"训练集: {len(train_txt)}")
    print(f"验证集: {len(val_txt)} ")
    print(f"测试集: {len(test_txt)} ")
    print("数据集已保存到:", BASE_DIR)

    需要修改的地方如下 在这里插入图片描述 划分出来如下图这样的格式 在这里插入图片描述

    数据集有以下两种方式放置,都可以进行训练,常见的数据集放置是第一种,也有开源的数据集按照第二种方式放置的,我都遇见过,也能训练起来 在这里插入图片描述

    ⚡⚡4.修改yolo的训练配置文件

    我们需要在项目下创建一个data.yaml的文件,文件名根据数据集名称取,我这里方便演示直接叫data.yaml,如下图所示 在这里插入图片描述

    代码如下:

    train: E:\\Desktop\\newyolov9\\yolotest\\images\\train # train images (relative to 'path') 4 images
    val: E:\\Desktop\\newyolov9\\yolotest\\images\\val # val images (relative to 'path') 4 images

    nc: 2

    # class names
    names: ['dog','cat']

    🐴三、YOLO环境配置教程

    YOLO26/YOLOv11/YOLOv10/YOLOv9/YOLOv8/YOLOv7/YOLOv5 环境都是通用的,只需要安装一次就行

    ⚡⚡1.pytorch环境安装

    抖音:☑️☑️☑️手把手安装YOLO环境教程 1(非常推荐)链接参考链接: YOLO环境配置教程视频,YOLO环境在4分53秒开始

    b站:☑️☑️☑️手把手安装YOLO环境教程 1(非常推荐)链接参考链接: YOLO环境配置教程视频,YOLO环境在4分53秒开始

    备用: 手把手pytorch安装教程 2 链接参考链接: pytorch环境安装教程视频

    如果已经配置好环境可以忽略此步骤

    ⚡⚡2.其他依赖安装

    安装requirements.txt文件的环境,需要注释掉下面两行,前面的步骤已经安装了,不注释的话会覆盖前面的会安装最新版本的pytorch,所以注释掉

    在这里插入图片描述 没有这个文件可以自己新建一个requirements.txt,然后把下面代码复制进去就好了 在这里插入图片描述

    在这里插入图片描述

    # Ultralytics requirements
    # Example: pip install -r requirements.txt

    # Base —————————————-
    matplotlib>=3.3.0
    numpy==1.24.4 # pinned by Snyk to avoid a vulnerability
    opencvpython>=4.6.0
    pillow>=7.1.2
    pyyaml>=5.3.1
    requests>=2.23.0
    scipy>=1.4.1
    tqdm>=4.64.0

    # Logging ————————————-
    # tensorboard>=2.13.0
    # dvclive>=2.12.0
    # clearml
    # comet

    # Plotting ————————————
    pandas>=1.1.4
    seaborn>=0.11.0

    # Export ————————————–
    # coremltools>=7.0 # CoreML export
    # onnx>=1.12.0 # ONNX export
    # onnxsim>=0.4.1 # ONNX simplifier
    # nvidia-pyindex # TensorRT export
    # nvidia-tensorrt # TensorRT export
    # scikit-learn==0.19.2 # CoreML quantization
    # tensorflow>=2.4.1 # TF exports (-cpu, -aarch64, -macos)
    # tflite-support
    # tensorflowjs>=3.9.0 # TF.js export
    # openvino-dev>=2023.0 # OpenVINO export

    # Extras ————————————–
    psutil # system utilization
    pycpuinfo # display CPU info
    thop>=0.1.1 # FLOPs computation
    # ipython # interactive notebook
    # albumentations>=1.0.3 # training augmentations
    # pycocotools>=2.0.6 # COCO mAP
    # roboflow

    在终端输入下面命令即可,不懂的话参考视频教学

    pip install r requirements.txt

    在这里插入图片描述

    🐴四、YOLO26训练

    ⚡⚡本地训练

    (1)在根目录新建一个 python 文件,取名为:train.py,如果之前看过我的文章,已经新建过就不用重新新建了 在这里插入图片描述

    (2)把训练代码复制到 train.py 文件,如果之前看过我的文章,已经复制过了就不用重新复制了,只需修改参数就行 训练的代码如下:

    # -*- coding: utf-8 -*-
    """
    @Auth :落花不写码
    @File :train.py
    @IDE :PyCharm
    @Motto :学习新思想,争做新青年
    """

    import warnings
    warnings.filterwarnings('ignore')
    from ultralytics import YOLO

    if __name__ == '__main__':
    model = YOLO(model=r'D:\\1-Python\\1-YOLO\\YOLO26\\ultralytics-8.4.2\\ultralytics\\cfg\\models\\26\\yolo26.yaml')
    model.load('yolo26n.pt') # 加载预训练权重,改进或者做对比实验时候不建议打开,因为用预训练模型整体精度没有很明显的提升
    model.train(data=r'data.yaml',
    imgsz=640,
    epochs=50,
    batch=4,
    workers=0,
    device='',
    optimizer='SGD',
    close_mosaic=10,
    resume=False,
    project='runs/train',
    name='exp',
    single_cls=False,
    cache=False,
    )

    注意注意注意:模型配置路径改成你自己的路径,还有数据集配置文件也修改成你自己的路径

    在这里插入图片描述 训练代码的参数解释:

    • model参数:该参数填入模型配置文件的路径,改进的话建议不需要填预训练模型权重
    • data参数:该参数可以填入训练数据集配置文件的路径
    • imgsz参数:该参数代表输入图像的尺寸,指定为 640×640 像素
    • epochs参数:该参数代表训练的轮数
    • batch参数:该参数代表批处理大小,电脑显存越大,就设置越大,根据自己电脑性能设置
    • workers参数:该参数代表数据加载的工作线程数,出现显存爆了的话可以设置为0,默认是8
    • device参数:该参数代表用哪个显卡训练,留空表示自动选择可用的GPU或CPU
    • optimizer参数:该参数代表优化器类型
    • close_mosaic参数:该参数代表在多少个 epoch 后关闭 mosaic 数据增强
    • resume参数:该参数代表是否从上一次中断的训练状态继续训练。设置为False表示从头开始新的训练。如果设置为True,则会加载上一次训练的模型权重和优化器状态,继续训练。这在训练被中断或在已有模型的基础上进行进一步训练时非常有用。
    • project参数:该参数代表项目文件夹,用于保存训练结果
    • name参数:该参数代表命名保存的结果文件夹
    • single_cls参数:该参数代表是否将所有类别视为一个类别,设置为False表示保留原有类别
    • cache参数:该参数代表是否缓存数据,设置为False表示不缓存。

    注意注意注意:一般做科研改进工作时候可以不用预训练权重,因为用预训练模型整体精度很难提高

    我这里演示加载预训练权重,训练输出如下所示: 在这里插入图片描述

    ⚡⚡租用 GPU 服务器训练 (AutoDL 平台)

    一切深度学习、AI 大模型、YOLO、机器学习等模型可以参考下面这篇教程训练模型

    本地训练不起来,参考下面的教程,通用的租用 GPU 训练教程: AutoDL使用教程,以PaddleOCR在服务器训练为例子,使用AI远程服务器训练深度学习、多模态、AI大模型训练等,包括Xshell和Xftp安装、服务器环境配置等,linux常用命令,超w字教程

    ⚡⚡租用 CSDN 的星图 AI 训练,博主已经配置好 YOLO 训练和推理的环境(星图 AI 平台)

    本地训练不起来,可以使用星图 AI 训练,YOLO 训练环境已经配置好了,部署我的镜像即可使用: YOLO26 训练和推理镜像

    注意:该镜像可以训练 YOLOv8、YOLOv11、YOLO26,只需上传数据集就行,环境已经配置好了

    使用教程如下:

    点击我的链接跳转到我配置好的镜像,之后在下面这个界面取消自动续费,根据需求租多久就行,最后点击立即部署 在这里插入图片描述 之后在我的算力,启动 jupyter 在这里插入图片描述 启动完是这样的 在这里插入图片描述

    ☑️4.1 激活环境与切换工作目录

    在使用前,请先激活的 Conda 环境,命令如下:

    conda activate yolo

    在这里插入图片描述

    镜像启动后,默认代码存放在系统盘。为了方便修改代码,请先将代码文件夹复制到数据盘,命令如下:

    cp r /root/ultralytics8.4.2 /root/workspace/

    在这里插入图片描述

    之后进入代码目录:

    cd /root/workspace/ultralytics-8.4.2

    在这里插入图片描述 在这里插入图片描述

    ☑️4.2 模型推理

    修改 detect.py 文件,如下图所示: 在这里插入图片描述

    # -*- coding: utf-8 -*-
    """
    @Auth :落花不写码
    @File :detect.py
    @IDE :PyCharm
    @Motto :学习新思想,争做新青年
    """

    from ultralytics import YOLO

    if __name__ == '__main__':

    # Load a model
    model = YOLO(model=r'yolo26n-pose.pt')
    model.predict(source=r'./ultralytics/assets/zidane.jpg',
    save=True,
    show=False,
    )

    推理代码的参数解释 1.model参数:该参数可以填入模型文件路径 2.source参数:该参数可以填入需要推理的图片或者视频路径,如果打开摄像头推理则填入0就行 3.save参数:该参数填入True,代表把推理结果保存下来,默认是不保存的,所以一般都填入True 4.show参数:该参数填入True,代表把推理结果以窗口形式显示出来,默认是显示的,这个参数根据自己需求打开就行,不显示你就填 False 就行

    使用以下命令测试推理效果:

    python detect.py

    在这里插入图片描述 在这里插入图片描述

    推理结果终端会显示的,自己去查看即可。

    ☑️4.3 模型训练

    模型训练还需要修改 data.yaml 数据集配置文件,需要自己上传 YOLO 格式数据集,并在 data.yaml 中修改对应的路径。示例如下:

    在这里插入图片描述 data.yaml 参数解析如图所示:

    在这里插入图片描述 之后修改 train.py 文件,如下图所示:

    在这里插入图片描述

    我的 train.py 文件代码如下,参考一下:

    # -*- coding: utf-8 -*-
    """
    @Auth :落花不写码
    @File :train.py
    @IDE :PyCharm
    @Motto :学习新思想,争做新青年
    """
    import warnings
    warnings.filterwarnings('ignore')
    from ultralytics import YOLO

    if __name__ == '__main__':
    model = YOLO(model='/root/workspace/ultralytics-8.4.2/ultralytics/cfg/models/26/yolo26.yaml')
    model.load('yolo26n.pt') # 加载预训练权重,改进或者做对比实验时候不建议打开,因为用预训练模型整体精度没有很明显的提升
    model.train(data=r'data.yaml',
    imgsz=640,
    epochs=200,
    batch=128,
    workers=8,
    device='0',
    optimizer='SGD',
    close_mosaic=10,
    resume=False,
    project='runs/train',
    name='exp',
    single_cls=False,
    cache=False,
    )

    修改完成后,在终端使用以下命令训练自己的模型:

    python train.py

    训练过程如下,会输出保存的结果路径在哪里的,自己去查看和下载就行 在这里插入图片描述

    ☑️4.4 下载数据

    服务器训练完,会保存模型,下载到本地就可以拿去用了,通过 Xftp 拖拉拽下载文件夹/文件,从 右边拖拽 文件夹/文件到左边的文件夹就行,文件的话可以鼠标双击就可以下载了,一般数据集比较大压缩后在下载,节约下载时间,反正上传和下载数据操作一样,只是拖拉拽方向不同。 双击传输的任务,就可以看到传输状态了 在这里插入图片描述

    ☑️4.5 已包含权重文件

    镜像内已预下载权重文件,放置在代码的跟目录下,如下图所示 在这里插入图片描述

    ☑️4.6 常见问题

    • 数据集准备: 请将您的数据集按照 YOLO 格式组织,并在 data.yaml 中修改对应的路径。
    • 环境激活: 镜像启动后默认进入 torch25 环境,请务必执行 conda activate yolo 切换环境。

    ☑️4.7 参考资料

    • 官方仓库: ultralytics/ultralytics
    • 文档说明: 详细用法请参考官方库中的 README.md。

    📗📗Xshell7 和 Xftp7 安装

    免安装版,下载链接: 软件包,下载完,可以把 Xshell 和 Xftp 发送到桌面快捷方式,可以点击 Xshell.exe 和 Xftp.exe 打开软件 在这里插入图片描述 在这里插入图片描述 关闭 Xftp 自动检测更新 在这里插入图片描述

    📗📗Xftp 连接服务器,上传数据与下载数据

    开机实例后,找到 SSH 登录指令,复制登录指令为(具体请以您的实例为准):ssh -p 44562 root@gpu-oabg4p85su.ssh.gpu.csdn.net(这个只有你自己知道,不要泄露), 44562 是端口号,root 是用户名 ,gpu-oabg4p85su.ssh.gpu.csdn.net 就是远程服务器主机的地址,知道这些后面通过工具连接要用到 在这里插入图片描述

    点击新建 在这里插入图片描述

    窗口填写规则: 名称:随便取,方便记住就行 主机:远程服务器主机的地址,如服务器的 ip 地址、gpu-oabg4p85su.ssh.gpu.csdn.net(服务器地址) 端口号:远程服务器主机的端口号 协议:记得选择 SFTP 用户名:远程服务器主机的用户名,一般是 root 密码:远程服务器主机的登录的密码

    在这里插入图片描述

    连接成功,就可以在从左边窗口是本地,右边是服务器,可以通过拖拽方式 上传/下载 数据 在这里插入图片描述

    📗📗Xftp 双击“此电脑“强制退出并弹窗“Error Report“,Program has stoppedworking窗口

    在 Win11 系统,使用 XFtp 7 版本,双击“此电脑”图标会导致程序崩溃自动退出,并弹出错误对话框。 在这里插入图片描述 解决 Xftp 双击“此电脑“强制退出并弹窗“Error Report“,Program has stoppedworking 窗口

    如果此电脑下存在百度网盘快捷方式、迅雷等其他,则需要关闭 在这里插入图片描述

    再次点击 “此电脑” 就可以正常开启了

    📗📗Xshell 连接服务器

    开机实例后,找到 SSH 登录指令,复制登录指令为(具体请以您的实例为准):ssh -p 44562 root@region-1.autodl.com(这个只有你自己知道,不要泄露), 44562 是端口号,root 是用户名 ,region-1.autodl.com 就是远程服务器主机的地址,知道这些后面通过工具连接要用到 在这里插入图片描述 由于 XShell 命令格式较特殊,需要您手动修改格式为:

    ssh root@region1.autodl.com 44562

    即将端口号置于末尾,无需添加 -p 参数。官方的例子如下:

    在这里插入图片描述 如果已经配置了 SSH 登录,那么可以使用 XShell 提供的 xftp 进行文件传输,方式如下: 在这里插入图片描述

    🐴五、YOLO26推理

    我的源码包已经下载好了模型了,如果需要其他权重自行下载就行

    (2)在根目录新建一个 python 文件,取名为:detect.py 在这里插入图片描述 (3)把推理代码复制到 detect.py 文件 注意注意注意:模型路径改成你自己的路径,还有预测图像也改成你自己的路径 推理的代码如下:

    # -*- coding: utf-8 -*-
    """
    @Auth :落花不写码
    @File :detect.py
    @IDE :PyCharm
    @Motto :学习新思想,争做新青年
    """

    from ultralytics import YOLO

    if __name__ == '__main__':

    # Load a model
    model = YOLO(model=r'yolo26n-seg.pt')
    model.predict(source=r'D:\\1-Python\\1-YOLO\\YOLO26\\ultralytics-8.4.2\\ultralytics\\assets\\bus.jpg',
    save=True,
    show=False,
    )

    推理代码的参数解释

  • model参数:该参数可以填入模型文件路径
  • source参数:该参数可以填入需要推理的图片或者视频路径,如果打开摄像头推理则填入0就行
  • save参数:该参数填入True,代表把推理结果保存下来,默认是不保存的,所以一般都填入True
  • show参数:该参数填入True,代表把推理结果以窗口形式显示出来,默认是显示的,这个参数根据自己需求打开就行,不显示你就填False就行
  • 关键点模型推理结果如下: 在这里插入图片描述

    分割模型推理结果如下: 在这里插入图片描述 目标检测模型推理结果如下: 在这里插入图片描述

    🐴六、解决训练过程中断怎么继续上次训练

    在训练过程不小心中断了,那怎么继续上次的训练了,这里先不慌,官网也的代码写得非常好,它有这个断点训练功能,那么 YOLOv8 v10 v11 26 处理的方法都是一模一样,接下来直接看图操作就行: 在这里插入图片描述

    • model参数:该参数填入上次中断的模型,为 last.pt

    • resume参数:该参数设置为True,则会加载上一次训练的模型权重和优化器状态,继续训练。


    总结

    YOLO26 跟 YOLO11、YOLOv8 改进方法基本一样,改进和系统项目持续更新中,有问题可以留言,创作不易,请帮忙点个爱心呗,谢谢

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » YOLO26来了,更好、更快、更小的 YOLO 模型,使用YOLO26训练自己的数据集和推理(附YOLO26网络结构图),租用 GPU 服务器训练教程,YOLO26创新点解析
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!