YOLOE: 实时视觉万物

介绍

YOLOE 提示选项

YOLOE (Real-Time Seeing Anything) 是零样本、可提示 YOLO 模型的一项新进展,专为开放词汇检测和分割而设计。与以往仅限于固定类别的 YOLO 模型不同,YOLOE 使用文本、图像或内部词汇提示,实现对任意对象类别的实时检测。YOLOE 基于 YOLOv10 构建并受 YOLO-World 的启发,在几乎不影响速度和精度的情况下实现了最先进的零样本性能



Watch: How to use Ultralytics YOLOE-26 (New) | Open Vocabulary & Real-Time Seeing Anything 🚀

与早期的 YOLO 模型相比,YOLOE 显著提高了效率和准确性。在 LVIS 数据集上,它比 YOLO-Worldv2 提升了 +3.5 AP,同时仅使用了三分之一的训练资源,并将推理速度提高了 1.4 倍。在 COCO 上进行微调后,YOLOE-v8-large 以近 4 倍的训练时间缩减超越了 YOLOv8-L 0.1 mAP。这体现了 YOLOE 在准确性、效率和通用性之间卓越的平衡。以下章节将探讨 YOLOE 的架构、基准测试对比以及与 Ultralytics 框架的集成。

架构概览

YOLOE Architecture

YOLOE 保留了标准的 YOLO 结构——用于特征提取的卷积骨干网络 (backbone)(如 CSP-Darknet)、用于多尺度融合的颈部 (neck)(如 PAN-FPN),以及(如 YOLOv8/YOLO11 中的)无锚点、解耦式检测头 (head),独立预测物体性、类别和边界框。YOLOE 引入了三个旨在实现开放词汇检测的新颖模块:

  • 可重参数化区域-文本对齐 (RepRTA):通过小型辅助网络细化文本 embeddings(例如来自 CLIP 的),从而支持文本提示检测。在推理阶段,该网络会折叠进主模型,确保零开销。因此,YOLOE 能够检测任意文本标记的对象(如从未见过的“红绿灯”),且不会带来运行时惩罚。

  • 语义激活视觉提示编码器 (SAVPE):通过轻量级嵌入分支支持视觉提示检测。给定一张参考图像,SAVPE 会对语义和激活特征进行编码,使模型能够检测视觉上相似的对象——这是一种对于 logo 或特定部件非常有用的单样本检测能力。

  • 惰性区域提示对比 (LRPC):在无提示模式下,YOLOE 使用在海量词汇(来自 LVIS 和 Objects365 的 1200 多个类别)上训练出的内部嵌入进行开放集识别。无需外部提示或编码器,YOLOE 通过嵌入相似度查找来识别对象,从而在推理时高效处理大规模标签空间。

此外,YOLOE 通过在检测头中添加掩码预测分支(类似于 YACT 或 YOLOv8-Seg)实现了实时实例分割,并带来了极小的额外开销。

至关重要的是,当 YOLOE 作为常规闭集 YOLO 使用时,其开放世界模块不会引入推理成本。训练后,YOLOE 参数可以重参数化为标准 YOLO 头,保持相同的 FLOPs 和速度(例如与 YOLO11 完全一致)。

可用模型、支持的任务和操作模式

本节详细介绍了可用模型及其特定的预训练权重、它们支持的任务,以及它们与各种操作模式(如 InferenceValidationTrainingExport)的兼容性,其中 ✅ 表示支持模式,❌ 表示不支持模式。

文本/视觉提示模型

模型类型预训练权重支持的任务推理验证训练导出
YOLOE-11Syoloe-11s-seg.pt实例分割
YOLOE-11Myoloe-11m-seg.pt实例分割
YOLOE-11Lyoloe-11l-seg.pt实例分割
YOLOE-v8Syoloe-v8s-seg.pt实例分割
YOLOE-v8Myoloe-v8m-seg.pt实例分割
YOLOE-v8Lyoloe-v8l-seg.pt实例分割
YOLOE-26Nyoloe-26n-seg.pt实例分割
YOLOE-26Syoloe-26s-seg.pt实例分割
YOLOE-26Myoloe-26m-seg.pt实例分割
YOLOE-26Lyoloe-26l-seg.pt实例分割
YOLOE-26Xyoloe-26x-seg.pt实例分割

无提示模型

模型类型预训练权重支持的任务推理验证训练导出
YOLOE-11S-PFyoloe-11s-seg-pf.pt实例分割
YOLOE-11M-PFyoloe-11m-seg-pf.pt实例分割
YOLOE-11L-PFyoloe-11l-seg-pf.pt实例分割
YOLOE-v8S-PFyoloe-v8s-seg-pf.pt实例分割
YOLOE-v8M-PFyoloe-v8m-seg-pf.pt实例分割
YOLOE-v8L-PFyoloe-v8l-seg-pf.pt实例分割
YOLOE-26N-PFyoloe-26n-seg-pf.pt实例分割
YOLOE-26S-PFyoloe-26s-seg-pf.pt实例分割
YOLOE-26M-PFyoloe-26m-seg-pf.pt实例分割
YOLOE-26L-PFyoloe-26l-seg-pf.pt实例分割
YOLOE-26X-PFyoloe-26x-seg-pf.pt实例分割
YOLOE-26 性能

有关 YOLOE-26 模型详细的性能基准,请参阅 YOLO26 文档

使用示例

YOLOE 模型很容易集成到你的 Python 应用中。Ultralytics 提供了用户友好的 Python APICLI 命令 来简化开发。

训练使用

在自定义数据集上进行微调

你可以针对检测和实例分割任务,在你的自定义 YOLO 数据集上微调任何 预训练 YOLOE 模型



Watch: How to Train YOLOE on Car Parts Segmentation Dataset | Open-Vocabulary Model, Prediction & Export 🚀
示例

实例分割

微调 YOLOE 预训练检查点主要遵循 标准的 YOLO 训练流程。关键区别在于显式地将 YOLOEPESegTrainer 作为 trainer 参数传递给 model.train()

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPESegTrainer

model = YOLOE("yoloe-26s-seg.pt")

# Fine-tune on your segmentation dataset
results = model.train(
    data="coco128-seg.yaml",  # Segmentation dataset
    epochs=80,
    patience=10,
    trainer=YOLOEPESegTrainer,  # <- Important: use segmentation trainer
)

目标检测

所有 预训练 YOLOE 模型 默认都会执行实例分割。若要使用这些预训练检查点来训练检测模型,请使用 YAML 配置文件从零开始初始化一个检测模型,然后加载相同规模的预训练分割检查点。请注意,我们使用的是 YOLOEPETrainer 而不是 YOLOEPESegTrainer,因为我们正在训练一个检测模型:

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPETrainer

# Initialize a detection model from a config
model = YOLOE("yoloe-26s.yaml")

# Load weights from a pretrained segmentation checkpoint (same scale)
model.load("yoloe-26s-seg.pt")

# Fine-tune on your detection dataset
results = model.train(
    data="coco128.yaml",  # Detection dataset
    epochs=80,
    patience=10,
    trainer=YOLOEPETrainer,  # <- Important: use detection trainer
)

预测用法

YOLOE 支持文本提示和视觉提示。使用提示很简单——只需按照下文所示通过 predict 方法传递它们即可:

示例

文本提示允许你通过文本描述指定你希望检测的类别。以下代码展示了如何使用 YOLOE 来检测图像中的人和公交车:

from ultralytics import YOLOE

# Initialize a YOLOE model
model = YOLOE("yoloe-26l-seg.pt")  # or yoloe-26s/m-seg.pt for different sizes

# Set text prompt to detect person and bus. You only need to do this once after you load the model.
model.set_classes(["person", "bus"])

# Run detection on the given image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

验证用法

数据集上的模型验证可以按如下方式简化:

示例
from ultralytics import YOLOE

# Create a YOLOE model
model = YOLOE("yoloe-26l-seg.pt")  # or yoloe-26s/m-seg.pt for different sizes

# Conduct model validation on the COCO128-seg example dataset
metrics = model.val(data="coco128-seg.yaml")

导出使用

导出过程与其他 YOLO 模型类似,增加了处理文本和视觉提示的灵活性:

导出的模型是静态的

Classes configured with set_classes() (or via refer_image for visual prompts) are baked into the exported weights. Once exported, the model can no longer accept new prompts: calling set_classes() or passing visual_prompts=... to predict() on a loaded export will fail. To change the detected classes, re-export from the original .pt checkpoint with the new prompts configured. The exported file behaves like a standard YOLO detector and can also be loaded with YOLO() instead of YOLOE().

示例
from ultralytics import YOLOE

# Select yoloe-26s/m-seg.pt for different sizes
model = YOLOE("yoloe-26l-seg.pt")

# Configure the set_classes() before exporting the model
model.set_classes(["person", "bus"])

export_model = model.export(format="onnx")
model = YOLOE(export_model)

# Run detection on the given image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

训练官方模型

准备数据集

注意

Training official YOLOE models needs segment annotations for train data, here's the script provided by official team that converts datasets to segment annotations, powered by SAM2.1 models. Or you can directly download the provided Processed Segment Annotations in following table provided by official team.

  • 训练数据
  • 验证数据
数据集类型标注文件
LVIS minival检测minival.txt

从零开始启动训练

注意

Visual Prompt 模型是在训练好的 Text Prompt 模型基础上进行微调的。

示例
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOESegTrainerFromScratch

# Option 1: Use Python dictionary
data = dict(
    train=dict(
        yolo_data=["Objects365.yaml"],
        grounding_data=[
            dict(
                img_path="flickr/full_images/",
                json_file="flickr/annotations/final_flickr_separateGT_train_segm.json",
            ),
            dict(
                img_path="mixed_grounding/gqa/images",
                json_file="mixed_grounding/annotations/final_mixed_train_no_coco_segm.json",
            ),
        ],
    ),
    val=dict(yolo_data=["lvis.yaml"]),
)

# Option 2: Use YAML file (yoloe_data.yaml)
# train:
#   yolo_data:
#     - Objects365.yaml
#   grounding_data:
#     - img_path: flickr/full_images/
#       json_file: flickr/annotations/final_flickr_separateGT_train_segm.json
#     - img_path: mixed_grounding/gqa/images
#       json_file: mixed_grounding/annotations/final_mixed_train_no_coco_segm.json
# val:
#   yolo_data:
#     - lvis.yaml

model = YOLOE("yoloe-26l-seg.yaml")
model.train(
    data=data,  # or data="yoloe_data.yaml" if using YAML file
    batch=128,
    epochs=30,
    close_mosaic=2,
    optimizer="AdamW",
    lr0=2e-3,
    warmup_bias_lr=0.0,
    weight_decay=0.025,
    momentum=0.9,
    workers=4,
    trainer=YOLOESegTrainerFromScratch,
    device="0,1,2,3,4,5,6,7",
)

YOLOE 性能对比

YOLOE 在 COCO 和 LVIS 等标准基准测试中,达到了与封闭集 YOLO 模型相当或更高的精度,同时不牺牲速度或模型大小。下表对比了 YOLOE-L(基于 YOLO11 构建)和 YOLOE26-L(基于 YOLO26 构建)与对应封闭集模型的表现:

模型COCO mAP50-95LVIS mAP50-95推理速度 (T4)参数量GFLOPs (640px)
YOLOv8-L (封闭集)52.9%-9.06 ms (110 FPS)43.7 M165.2 B
YOLO11-L (封闭集)53.5%-6.2 ms (161 FPS)26.2 M86.9 B
YOLOE-L (开放词汇)52.6%35.2%6.2 ms (161 FPS)26.2 M86.9 B
YOLOE26-L (开放词汇)-36.8%6.2 ms (161 FPS)32.3 M88.3 B

YOLOE-L 与 YOLO11-L 架构相同,YOLOE26-L 与 YOLO26-L 架构相同,因此推理速度和 GFLOPs 相近。

YOLOE26-L 实现了 36.8% LVIS mAP,拥有 32.3M 参数88.3B FLOPs,在 T4 GPU 上处理 640×640 图像的速度为 6.2 ms (161 FPS)。相比 YOLOE-L 的 35.2% LVIS mAP 有所提升,同时保持了相同的推理速度。关键在于,YOLOE 的开放词汇模块不会产生额外的推理成本,展现了其 “无免费午餐权衡” 的设计理念。

在零样本任务中,YOLOE26 显著优于之前的开放词汇检测器:在 LVIS 上,YOLOE26-S 达到 29.9% mAP,比 YOLO-World-S 高出 +11.4 AP;YOLOE26-L 达到 36.8% mAP,比 YOLO-World-L 高出 +10.0 AP。YOLOE26 在 T4 GPU 上保持了 161 FPS 的高效推理,非常适合实时开放词汇应用。

注意

基准测试条件: YOLOE 的结果来自在 Objects365、GoldG 和 LVIS 上预训练,随后在 COCO 上微调或评估的模型。YOLOE 相比 YOLOv8 的微小 mAP 优势源于大规模预训练。若不进行此开放词汇训练,YOLOE 与同等大小的 YOLO 模型表现相当,证明了其在不牺牲性能的情况下具备 SOTA 精度和开放世界灵活性。

与先前模型的对比

YOLOE 在先前的 YOLO 模型和开放词汇检测器的基础上带来了显著的进步:

  • YOLOE vs YOLOv5: YOLOv5 提供了良好的速度与精度平衡,但需要针对新类别进行重训练,且使用基于锚框(anchor-based)的头。相比之下,YOLOE 是**无锚框(anchor-free)**的,并能动态检测新类别。YOLOE 基于 YOLOv8 的改进,不仅精度更高(在 COCO 上为 52.6% vs YOLOv5 的 ~50% mAP),还集成了实例分割,这是 YOLOv5 所不具备的。

  • YOLOE vs YOLOv8: YOLOE 扩展了 YOLOv8 的重构架构,精度相当或更优(52.6% mAP,参数量 ~26M vs YOLOv8-L 的 52.9% mAP,参数量 ~44M)。得益于更强大的预训练,其训练时间显著缩短。关键的进步是 YOLOE 的开放世界能力,它可以通过提示词检测未见过的物体(例如“bird scooter”或“peace symbol”),这与 YOLOv8 的封闭集设计不同。

  • YOLOE vs YOLO11: YOLO11 在 YOLOv8 的基础上提升了效率并减少了参数量(约减少 22%)。YOLOE 直接继承了这些收益,在匹配 YOLO11 的推理速度和参数量(约 26M 参数)的同时,增加了开放词汇检测和分割功能。在封闭集场景下,YOLOE 等同于 YOLO11,但关键点在于增加了检测未见类别的适应性,实现了 YOLO11 + 开放世界能力,且不影响速度。

  • YOLOE26 vs YOLOE (基于 YOLO11): YOLOE26 基于 YOLO26 的架构构建,继承了其无需 NMS 的端到端设计以实现更快推理。在 LVIS 上,YOLOE26-L 达到了 36.8% mAP,相比 YOLOE-L 的 35.2% mAP 有所提升。YOLOE26 提供了所有五种模型规模 (N/S/M/L/X),而 YOLOE 为三种 (S/M/L),为不同的部署场景提供了更大的灵活性。

  • YOLOE26 vs 先前的开放词汇检测器: 早期的开放词汇模型(GLIP、OWL-ViT、YOLO-World)严重依赖视觉语言 transformers,导致推理缓慢。在 LVIS 上,YOLOE26-S 达到 29.9% mAP(比 YOLO-World-S 高 +11.4 AP),YOLOE26-L 达到 36.8% mAP(比 YOLO-World-L 高 +10.0 AP),同时在 T4 GPU 上保持了 161 FPS 的实时推理。与基于 Transformer 的方法(如 GLIP)相比,YOLOE26 的推理速度快了几个数量级,有效地弥合了开放集检测中精度与效率的差距。

总之,YOLOE 和 YOLOE26 保持了 YOLO 著名的速度和效率,在精度上超越了前辈,集成了分割功能,并引入了强大的开放世界检测。YOLOE26 通过采用 YOLO26 的无需 NMS 的端到端推理进一步优化了架构,使其成为实时开放词汇应用的不二之选。

用例与应用

YOLOE 的开放词汇检测和分割能力使其能够实现超越传统固定类别模型的多种应用:

  • 开放世界目标检测: 非常适合 机器人技术 等动态场景,机器人可以通过提示词识别以前从未见过的物体,或 安防系统 无需重训练即可快速适应新威胁(如危险物品)。

  • 少样本与单样本检测: 使用视觉提示(SAVPE),YOLOE 可以从单张参考图像中快速学习新物体——非常适合 工业检测(即时识别零件或缺陷)或 自定义监控,从而以最少的设置实现视觉搜索。

  • 大词汇量与长尾识别: YOLOE 配备了 1000 多种类别的词汇表,擅长处理 生物多样性监测(检测稀有物种)、博物馆藏品零售库存电子商务 任务,无需进行大规模的类间训练即可可靠地识别众多类别。

  • 交互式检测与分割: YOLOE 支持实时交互式应用,如 可搜索的视频/图像检索增强现实 (AR) 和直观的 图像编辑,并由自然输入(文本或视觉提示)驱动。用户可以使用分割掩码动态地精确隔离、识别或编辑物体。

  • 自动化数据标注与引导: YOLOE 通过提供初始边界框和分割标注来促进数据集的快速创建,从而显著减少人工标注的工作量。这对 大型媒体集分析 特别有价值,它可以自动识别现有物体,协助更快地构建专业模型。

  • 任意物体的分割: 通过提示扩展了对任意物体的分割能力——这对 医学影像显微镜检查卫星图像分析 特别有益,无需专业预训练模型即可自动识别并精确分割结构。与 SAM 等模型不同,YOLOE 可以自动同时识别并分割物体,有助于 内容创作场景理解 等任务。

在所有这些用例中,YOLOE 的核心优势在于多功能性,为动态场景下的检测、识别和分割提供了一个统一的模型。其效率确保了在资源受限设备上的实时性能,非常适合机器人、自动驾驶、国防等领域。

提示

根据你的需求选择 YOLOE 模式:

  • 封闭集模式: 适用于固定类别任务(最大化速度和精度)。
  • 提示词模式: 通过文本或视觉提示快速添加新物体。
  • 无提示词开放集模式: 跨多种类别的通用检测(适合编目和发现)。

通常,结合多种模式(例如无提示词发现后跟目标提示词)可以充分发挥 YOLOE 的潜力。

训练与推理

YOLOE 与 Ultralytics Python APICLI 无缝集成,与其他 YOLO 模型(YOLOv8、YOLO-World)类似。以下是如何快速上手:

使用 YOLOE 进行训练与推理
from ultralytics import YOLO

# Load pretrained YOLOE model and train on custom data
model = YOLO("yoloe-26s-seg.pt")
model.train(data="path/to/data.yaml", epochs=50, imgsz=640)

# Run inference using text prompts ("person", "bus")
model.set_classes(["person", "bus"])
results = model.predict(source="test_images/street.jpg")
results[0].save()  # save annotated output

在这里,YOLOE 默认表现为一个标准检测器,但可以通过指定类别 (set_classes) 轻松切换到提示词检测模式。结果包含边界框、掩码和标签。

其他支持的任务

  • 验证: 使用 model.val()yolo val 轻松评估精度。
  • 导出: 将 YOLOE 模型 (model.export()) 导出为 ONNX、TensorRT 等格式,以便于部署。
  • 追踪: 集成后 YOLOE 支持目标追踪 (yolo track),可用于追踪视频中提示词定义的类别。
注意

YOLOE 的推理结果中自动包含 分割掩码 (results[0].masks),简化了诸如物体提取或测量等像素级精确任务,无需额外的模型。

入门指南

按照以下步骤快速使用 Ultralytics 设置 YOLOE:

  1. 安装: 安装或更新 Ultralytics 包:

    pip install -U ultralytics
  2. 下载 YOLOE 权重: 预训练的 YOLOE 模型(如 YOLOE-v8-S/L、YOLOE-11 变体)可从 YOLOE GitHub 发布页面获取。只需下载所需的 .pt 文件,即可加载到 Ultralytics YOLO 类中。

  3. 硬件要求:

    • 推理: 推荐 GPU(NVIDIA,显存 ≥4-8GB)。小型模型可在边缘 GPU(如 Jetson)或 CPU 上以较低分辨率高效运行。如需在紧凑型工作站上进行高性能推理,请查看我们的 NVIDIA DGX Spark 指南。
    • 训练: 在自定义数据上微调 YOLOE 通常仅需一个 GPU。作者使用的大规模开放词汇预训练(LVIS/Objects365)需要相当大的算力(8× RTX 4090 GPU)。
  4. 配置: YOLOE 配置使用标准的 Ultralytics YAML 文件。默认配置(如 yoloe-26s-seg.yaml)通常已足够,但你可以根据需要修改骨干网络、类别或图像大小。

  5. 运行 YOLOE:

    • 快速推理(无提示词):

      yolo predict model=yoloe-26s-seg-pf.pt source="image.jpg"
    • 提示词检测(文本提示示例):

      from ultralytics import YOLO
      
      model = YOLO("yoloe-26s-seg.pt")
      model.set_classes(["bowl", "apple"])
      results = model.predict("kitchen.jpg")
      results[0].save()
  6. 集成提示:

    • 类名: 默认 YOLOE 输出使用 LVIS 类别;使用 set_classes() 指定你自己的标签。
    • 速度: 除非使用提示词,否则 YOLOE 没有额外开销。文本提示影响极小;视觉提示影响稍大。
    • NMS 行为: YOLOE 在预测时自动使用 agnostic_nms=True,合并跨类别的重叠框。这防止了当同一物体在 YOLOE 的大词汇表(1200+ LVIS 类别)中匹配多个类别时出现重复检测。你可以显式传递 agnostic_nms=False 来覆盖此行为。
    • 批量推理: 直接支持 (model.predict([img1, img2]))。对于图像特定的提示词,请逐个运行图像。

Ultralytics 文档 提供了更多资源。YOLOE 让你可以轻松在熟悉的 YOLO 生态系统中探索强大的开放世界功能。

提示

专业提示: 为最大限度地提高 YOLOE 的零样本精度,请从提供的检查点进行微调,而不是从头开始训练。使用与常见训练标签一致的提示词(见 LVIS 类别)以提高检测精度。

引文与致谢

如果 YOLOE 对你的研究或项目有所帮助,请引用由 Ao Wang, Lihao Liu, Hui Chen, Zijia Lin, Jungong Han, and Guiguang Ding(清华大学)撰写的原始论文:

引用
@misc{wang2025yoloerealtimeseeing,
      title={YOLOE: Real-Time Seeing Anything},
      author={Ao Wang and Lihao Liu and Hui Chen and Zijia Lin and Jungong Han and Guiguang Ding},
      year={2025},
      eprint={2503.07465},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2503.07465},
}

如需进一步阅读,原始 YOLOE 论文可在 arXiv 上获取。项目的源代码及其他资源可通过其 GitHub 仓库 访问。

常见问题 (FAQ)

YOLOE 与 YOLO-World 有何不同?

虽然 YOLOE 和 YOLO-World 都支持开放词汇检测,但 YOLOE 具有多项优势。YOLOE 在 LVIS 上的精度比 YOLO-Worldv2 高 +3.5 AP,同时使用的训练资源减少了 3 倍,运行速度快了 1.4 倍。YOLOE 还支持三种提示模式(文本、视觉和内部词汇),而 YOLO-World 主要侧重于文本提示。此外,YOLOE 包含内置的 实例分割 功能,无需额外开销即可为检测到的物体提供像素级精确的掩码。

我可以使用 YOLOE 作为常规的 YOLO 模型吗?

是的,YOLOE 的功能完全可以像标准 YOLO 模型一样运行,且不会有性能损失。当在封闭集模式(无提示词)下使用时,YOLOE 的开放词汇模块被重参数化为标准检测头,从而达到与同等 YOLO11 模型一致的速度和精度。这使得 YOLOE 极其灵活——你可以将其用作传统检测器以实现最大速度,仅在需要时切换到开放词汇模式。

我可以使用哪些类型的提示词与 YOLOE 一起使用?

YOLOE 支持三种类型的提示词:

  1. 文本提示: 使用自然语言指定物体类别(例如 “person”、“traffic light”、“bird scooter”)
  2. 视觉提示: 提供你想检测的物体的参考图像
  3. 内部词汇: 使用 YOLOE 内置的 1200+ 类别词汇表,无需外部提示词

这种灵活性使你无需重训练模型即可将 YOLOE 适应各种场景,使其特别适用于检测需求频繁变化的动态环境。

YOLOE 如何处理实例分割?

YOLOE 通过在检测头中添加掩码预测分支,直接将其架构集成到实例分割中。这种方法类似于 YOLOv8-Seg,但适用于任何提示词指定的物体类别。分割掩码会自动包含在推理结果中,并可以通过 results[0].masks 访问。这种统一的方法消除了对单独检测和分割模型的需求,简化了需要像素级精确物体边界的应用工作流。

YOLOE 如何使用自定义提示词处理推理?

YOLO-World 类似,YOLOE 支持一种利用离线词汇表来提高效率的 “先提示后检测” 策略。诸如字幕或特定物体类别之类的自定义提示词会被预先编码并作为离线词汇嵌入进行存储。这种方法简化了检测过程,无需进行重训练。你可以在模型中动态设置这些提示词,以使其适应特定的检测任务:

from ultralytics import YOLO

# Initialize a YOLOE model
model = YOLO("yoloe-26s-seg.pt")

# Define custom classes
model.set_classes(["person", "bus"])

# Execute prediction on an image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

评论