返回首页

YOLOE:无需微调的目标检测

YOLOE 通过文本和视觉提示扩展 YOLO 的零样本检测能力。RepRTA 在不损失速度的情况下集成嵌入。适用于动态任务,如包装和仓库控制。

YOLOE:无需数据集即可检测万物
Advertisement 728x90

YOLOE:支持文本与视觉提示的通用目标检测器

YOLOE 能够通过文本描述或视觉示例(而非固定类别)检测图像中的任意目标。其主干网络和 PAN 借鉴了标准 YOLO,但检测头通过文本编码器生成的向量与目标嵌入进行比较。RepRTA 模块优化文本嵌入并通过重参数化将其集成到模型中,在保持推理速度的同时不增加额外开销。

模型从预训练权重初始化,类别动态设置:

from ultralytics import YOLOE

model = YOLOE("yoloe-26m-seg.pt")
model.set_classes(["person", "bus"])
results = model.predict("path/to/image.jpg")

架构与核心模块

标准 YOLO 仅限于训练数据集中的类别。在 YOLOE 中,类别嵌入由文本编码器在推理前生成并嵌入权重中。这消除了数据集收集、标注和训练迭代的需求。

Google AdInline article slot

此外,模型通过 SAVPE(语义激活视觉提示编码器)支持视觉提示。用户提供带有边界框的参考图像,模型可搜索相似目标:

import numpy as np
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEVPSegPredictor

model = YOLOE("yoloe-26m-seg.pt")
visual_prompts = dict(
    bboxes=np.array([
        [221.52, 405.8, 344.98, 857.54],  # 人
        [120, 425, 160, 445],              # 公交车
    ]),
    cls=np.array([0, 1]),
)
results = model.predict(
    "ultralytics/assets/bus.jpg",
    refer_image="reference.jpg",
    visual_prompts=visual_prompts,
    predictor=YOLOEVPSegPredictor,
)
results[0].show()

无提示模式使用内置的 1200 多个类别字典:

from ultralytics import YOLOE

model = YOLOE("yoloe-26m-seg-pf.pt")
results = model.predict("path/to/image.jpg")
results[0].show()

应用场景

YOLOE 适用于目标描述清晰的任务。以下是典型用例:

Google AdInline article slot
  • 标签控制:检测传送带上的二维码、损坏标签或包装方向。
  • 区域监控:搜索异物或缺失工具。
  • 仓库库存:计数和分类变化的产品。
  • 视觉检测:表面划痕、缺口或变形。

在这些场景中,提示替代了数据集,加速了开发流程。

局限性与方法选择

模型在视觉相似类别、特定目标或要求 >95% 准确率的任务中表现不足。区分细微细节或未见目标需要微调。

策略:先用 YOLOE 进行基线评估;若不足,则优化编码器或转向传统训练。

Google AdInline article slot

关键要点

  • 动态类别:使用文本或视觉提示替代固定标签。
  • 速度保持:RepRTA 重参数化嵌入,消除运行时开销。
  • 灵活性:SAVPE 支持视觉示例,内置字典实现零提示。
  • 实用性:适用于目标变化的工业任务。
  • 局限性:不适用于高精度或特殊数据。

— Editorial Team

Advertisement 728x90

继续阅读