跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

YOLOv11 数据集训练与推理实战指南

YOLOv11 由 Ultralytics 团队发布,支持目标检测、实例分割等任务。教程涵盖数据集标注与格式转换、环境配置、训练及推理流程。包含 VOC 转 YOLO 格式脚本、数据集划分代码、train.py 与 detect.py 实现细节,以及断点续训解决方案,助力快速上手 YOLOv11 模型应用。

1739658202发布于 2025/10/5更新于 2026/7/2945 浏览
YOLOv11 数据集训练与推理实战指南

前言

YOLOv11 由 Ultralytics 团队在 2024 年 9 月 30 日发布,最新的 YOLOv11 模型在之前的 YOLO 版本引入了新功能和改进,以进一步提高性能和灵活性。YOLOv11 快速、准确且易于使用,使其成为各种目标检测和跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。

YOLOv11 性能表现

一、YOLOv11 代码下载地址

官网源码下载地址:Ultralytics GitHub

1. YOLOv11 模型结构图

根据 yolov11.yaml 画出 yolo 整体结构图,如下图所示

YOLOv11 结构图

二、数据集准备

1. 数据集标注软件

推荐使用 labelimg 或 labelme 进行标注。安装命令如下:

pip install labelimg

启动标注软件后,设置自动保存标注生成的文件。

2. VOC 数据集格式转换

如果标注格式为 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]) /  - 
    w = box[] - box[]
    h = box[] - box[]
    x = x * dw
    w = w * dw
    y = y * dh
    h = h * dh
     (x, y, w, h)

 ():
     (xmlpath, , encoding=)  in_file:
        txtname = xmlname[:-] + 
        txtfile = os.path.join(txtpath, txtname)
        tree = ET.parse(in_file)
        root = tree.getroot()
        filename = root.find()
        img = cv2.imdecode(np.fromfile(.(imgpath, xmlname[:-], postfix), np.uint8), cv2.IMREAD_COLOR)
        h, w = img.shape[:]
        res = []
         obj  root.():
            cls = obj.find().text
             cls   classes:
                classes.append(cls)
            cls_id = classes.index(cls)
            xmlbox = obj.find()
            b = ((xmlbox.find().text), (xmlbox.find().text), (xmlbox.find().text), (xmlbox.find().text))
            bb = convert((w, h), b)
            res.append((cls_id) +  + .join([(a)  a  bb]))
         (res) != :
             (txtfile, )  f:
                f.write(.join(res))

 __name__ == :
    postfix = 
    imgpath = 
    xmlpath = 
    txtpath = 
      os.path.exists(txtpath):
        os.makedirs(txtpath, exist_ok=)
    list_dir = os.listdir(xmlpath)
    error_file_list = []
     i  (, (list_dir)):
        :
            path = os.path.join(xmlpath, list_dir[i])
             (  path)  (  path):
                convert_annotation(path, list_dir[i])
                ()
            :
                ()
         Exception  e:
            ()
            ()
            error_file_list.append(list_dir[i])
    ()
    ()
2.0
1
1
0
3
2
return
def
convert_annotation
xmlpath, xmlname
with
open
"r"
'utf-8'
as
4
'.txt'
'filename'
'{}/{}.{}'
format
4
2
for
in
iter
'object'
'name'
if
not
in
'bndbox'
float
'xmin'
float
'xmax'
float
'ymin'
float
'ymax'
str
" "
" "
str
for
in
if
len
0
with
open
'w+'
as
'\n'
if
"__main__"
'png'
r'./images'
r'./annotations'
r'./labels'
if
not
True
for
in
range
0
len
try
if
'.xml'
in
or
'.XML'
in
print
f'file {list_dir[i]} convert success.'
else
print
f'file {list_dir[i]} is not xml format.'
except
as
print
f'file {list_dir[i]} convert error.'
print
f'error message:\n{e}'
print
f'this file convert failure\n{error_file_list}'
print
f'Dataset Classes:{classes}'

修改说明:

  1. postfix 参数填图片后缀(如 png, jpg)。
  2. imgpath 参数填图片所在路径。
  3. xmlpath 参数填标注文件路径。
  4. txtpath 参数填生成的 YOLO 格式文件路径。

3. 数据集划分

划分训练集和验证集代码如下:

import os, shutil
from sklearn.model_selection import train_test_split

val_size = 0.2
postfix = 'jpg'
imgpath = r'./images'
txtpath = r'./labels'
output_train_img_folder = r'./dataset/images/train'
output_val_img_folder = r'./dataset/images/val'
output_train_txt_folder = r'./dataset/labels/train'
output_val_txt_folder = r'./dataset/labels/val'

os.makedirs(output_train_img_folder, exist_ok=True)
os.makedirs(output_val_img_folder, exist_ok=True)
os.makedirs(output_train_txt_folder, exist_ok=True)
os.makedirs(output_val_txt_folder, exist_ok=True)

list_dir = [i for i in os.listdir(txtpath) if 'txt' in i]
train, val = train_test_split(list_dir, test_size=val_size, shuffle=True, random_state=0)

for i in train:
    img_source_path = os.path.join(imgpath, '{}.{}'.format(i[:-4], postfix))
    txt_source_path = os.path.join(txtpath, i)
    img_destination_path = os.path.join(output_train_img_folder, '{}.{}'.format(i[:-4], postfix))
    txt_destination_path = os.path.join(output_train_txt_folder, i)
    shutil.copy(img_source_path, img_destination_path)
    shutil.copy(txt_source_path, txt_destination_path)

for i in val:
    img_source_path = os.path.join(imgpath, '{}.{}'.format(i[:-4], postfix))
    txt_source_path = os.path.join(txtpath, i)
    img_destination_path = os.path.join(output_val_img_folder, '{}.{}'.format(i[:-4], postfix))
    txt_destination_path = os.path.join(output_val_txt_folder, i)
    shutil.copy(img_source_path, img_destination_path)
    shutil.copy(txt_source_path, txt_destination_path)

数据集放置方式有两种,确保训练集和验证集目录结构正确即可。

4. 修改 YOLO 的训练配置文件

在项目下创建 data.yaml 文件,配置训练集、验证集路径及类别名称。

train: ./images/train # train images (relative to 'path')
val: ./images/val # val images (relative to 'path')
nc: 2 # class names
names: ['dog', 'cat']

三、YOLO 环境配置教程

YOLOv11/YOLOv10/YOLOv9/YOLOv8/YOLOv7/YOLOv5 环境通用,只需安装一次。

1. PyTorch 环境安装

参考官方文档安装 PyTorch。

2. 其他依赖安装

安装 requirements.txt 中的环境,建议注释掉已安装的 PyTorch 相关行,避免覆盖版本。

# Ultralytics requirements
# Example: pip install -r requirements.txt
# Base ----------------------------------------
matplotlib>=3.3.0
numpy==1.24.4
opencv-python>=4.6.0
pillow>=7.1.2
pyyaml>=5.3.1
requests>=2.23.0
scipy>=1.4.1
tqdm>=4.64.0

四、YOLOv11 训练

  1. 在根目录新建 Python 文件 train.py。
  2. 复制以下训练代码并修改路径参数。
# -*- coding: utf-8 -*-
import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO(model=r'./cfg/models/11/yolo11.yaml')
    # model.load('yolo11n.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: 输入图像尺寸,默认 640x640。
  • epochs: 训练轮数。
  • batch: 批处理大小,根据显存调整。
  • workers: 数据加载线程数,显存不足可设为 0。
  • device: 设备选择,留空自动选择 GPU 或 CPU。
  • optimizer: 优化器类型。
  • close_mosaic: 关闭 mosaic 数据增强的 epoch 数。
  • resume: 是否从上次中断继续训练。
  • project: 结果保存文件夹。
  • name: 结果文件夹命名。
  • single_cls: 是否将所有类别视为一个类别。
  • cache: 是否缓存数据。

五、YOLOv11 推理

  1. 下载官网预训练模型(如 yolo11n.pt)。
  2. 在根目录新建 Python 文件 detect.py。
  3. 复制以下推理代码并修改路径。
# -*- coding: utf-8 -*-
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO(model=r'./yolo11n-seg.pt')
    model.predict(source=r'./assets/bus.jpg', save=True, show=True,)

参数解释:

  • model: 模型文件路径。
  • source: 图片或视频路径,摄像头则填 0。
  • save: 是否保存推理结果,True 表示保存。
  • show: 是否显示推理结果窗口,True 表示显示。

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

若训练中断,可通过设置 resume=True 继续训练。

model.train(..., resume=True, model='runs/train/exp/weights/last.pt')
  • model: 填入上次中断的模型路径(last.pt)。
  • resume: 设置为 True,加载上一次训练的模型权重和优化器状态。

总结

本文介绍了 YOLOv11 数据集训练与推理的基本流程,涵盖环境配置、数据准备、训练参数设置及断点续训方法,助力快速上手 YOLOv11 模型应用。

目录

  1. 前言
  2. 一、YOLOv11 代码下载地址
  3. 1. YOLOv11 模型结构图
  4. 二、数据集准备
  5. 1. 数据集标注软件
  6. 2. VOC 数据集格式转换
  7. 3. 数据集划分
  8. 4. 修改 YOLO 的训练配置文件
  9. 三、YOLO 环境配置教程
  10. 1. PyTorch 环境安装
  11. 2. 其他依赖安装
  12. Ultralytics requirements
  13. Example: pip install -r requirements.txt
  14. Base ----------------------------------------
  15. 四、YOLOv11 训练
  16. -- coding: utf-8 --
  17. 五、YOLOv11 推理
  18. -- coding: utf-8 --
  19. 六、解决训练过程中断怎么继续上次训练
  20. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 无需 GPU 也能跑:RetinaFace+CurricularFace 轻量级部署实战
  • 华南理工大学开源中文主动健康大模型扁鹊(BianQue)
  • 从多库并存到一库多能:金仓数据库融合架构实践
  • LangChain 输出解析器与 LCEL 链构建详解
  • Flutter 使用 tflite_web 在鸿蒙 Web 环境下实现 AI 推理适配
  • AIGC 工具全解析:文本、图像、代码、视频及音频生成指南
  • 算法优选:前缀和技巧与应用
  • AI 大模型在工业领域的应用模式与实现路径
  • Vector 与 pthread_create 线程函数的使用注意事项
  • Flutter jwt_io 库在 OpenHarmony 上的适配指南
  • C++ 继承:面向对象代码复用的核心机制
  • Qwen2.5-7B 对话机器人微信接入部署指南
  • LLaMaFactory 基于免费 GPU 环境微调大模型教程
  • 大模型算法岗常见面试题汇总与解析
  • 手写 C++ TCP 服务器:自定义协议与粘包处理
  • Java Stream 在 6 个复杂业务场景下的高效实现方案
  • C++ 函数重载:规则、实现与实战案例
  • HTTP 协议核心原理与应用详解
  • LeetCode 202. 快乐数:快慢指针判环解法
  • OpenClaw 漏洞预警:AI 代理日志审计与风险追溯

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online