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 中,类别嵌入由文本编码器在推理前生成并嵌入权重中。这消除了数据集收集、标注和训练迭代的需求。
此外,模型通过 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 适用于目标描述清晰的任务。以下是典型用例:
- 标签控制:检测传送带上的二维码、损坏标签或包装方向。
- 区域监控:搜索异物或缺失工具。
- 仓库库存:计数和分类变化的产品。
- 视觉检测:表面划痕、缺口或变形。
在这些场景中,提示替代了数据集,加速了开发流程。
局限性与方法选择
模型在视觉相似类别、特定目标或要求 >95% 准确率的任务中表现不足。区分细微细节或未见目标需要微调。
策略:先用 YOLOE 进行基线评估;若不足,则优化编码器或转向传统训练。
关键要点
- 动态类别:使用文本或视觉提示替代固定标签。
- 速度保持:RepRTA 重参数化嵌入,消除运行时开销。
- 灵活性:SAVPE 支持视觉示例,内置字典实现零提示。
- 实用性:适用于目标变化的工业任务。
- 局限性:不适用于高精度或特殊数据。
— Editorial Team
暂无评论。