OWLv2

OWLv2 是一个开放词汇目标检测器,由 Google Research 开发,它把图像区域拿去和一个 CLIP 式编码器输出的文本嵌入向量打分。LibreYOLO 把它包装成开放词汇检测器层里一个仅支持预测的家族。

任务
detection
尺寸
b16, l14 at 960 to 1008 px
安装
pip install libreyolo
支持层级
兄弟层级,自 v 起。一个独立的产品面,有自己的工厂和契约。
上游
OWLv2,由 Google Research 发布,采用 Apache-2.0 许可。论文源码
许可
代码采用 MIT,权重采用 Apache-2.0。商用

安装

OWLv2 通过 LibreYOLO 的开放词汇检测器层加载,这一层需要 openvocab extra:

bash
pip install "libreyolo[openvocab]"

这个 extra 会装上 transformerstimm,也就是这一层调用的那两个 Hugging Face 库。

预测

OWLv2 不是 LibreYOLO 通过 LibreYOLO() 加载的检查点(checkpoint)。它通过同级的 LibreOpenVocab 工厂加载,后者在首次使用时下载一份 Hugging Face 快照,并缓存在 weights/ 下。

Python
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("owlv2-b16")model.set_classes(["person", "dog", "skateboard"]) result = model.predict(SAMPLE_IMAGE, conf=0.1)for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
默认词汇表
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE # 不调用 set_classes() 就保留这一层默认的 COCO-80 词汇表model = LibreOpenVocab("owlv2-l14")result = model.predict(SAMPLE_IMAGE, conf=0.1)print(result.names)

set_classes() 设定一个粘住不放的文本词汇表:再调用一次就能替换整个列表,不调用 则保留默认的 COCO-80 标签。每个标签在送进文本塔之前都会被套进一个固定的提示词模 板,和 transformersOwlv2ForObjectDetection 训练时的做法保持一致。

OWLv2 没有文本 token 阈值:只有 conf 会过滤检测结果,传入 text_threshold 会 抛错。iou 为了 API 兼容性会被接受,但会发出警告并且没有任何作用,因为这里没有 任何东西跑非极大值抑制。imgszaugment=True 会被直接拒绝:缩放由 transformers 的 processor 负责,而测试时增强不在这一层的范围内。对单张图像调用 predict() 返回的是一个 Results,不是列表;传入一个目录、一个图像列表,或者对 视频源用 stream=True,才会得到多个。这个家族没有 CLI 路径,libreyolo predict 只通过 LibreYOLO() 加载 .pt 检查点,所以 LibreOpenVocab 家族从 Python 里运 行。数据源类型和流式处理见预测

变体

两个检查点,b16(base,patch 尺寸 16)和 l14(large,patch 尺寸 14)。b16 是这一层未指定尺寸时的默认尺寸。两者都通过 transformersOwlv2ForObjectDetection 镜像官方的 Google Research 发布版,一次性下载到一份保 留了上游文件的 LibreYOLO 托管 Hugging Face 快照里。这个家族目前还没有发布任何精 度或延迟数字。

训练、数据集验证和导出都不在这一层的范围内:train()val()export() 都 无条件抛出 NotImplementedError。这是一个围绕已发布检查点的、仅支持预测的封装。

检查点

这个家族已发布的全部权重文件。

文件输入(px)权重许可
Detection
LibreOWLv2b16.pt960apache-2.0
LibreOWLv2l14.pt1008apache-2.0

上面的每个文件目前都在 LibreYOLO 组织中,并会在首次使用时下载。

许可证

请检查你所下载的具体权重在 Hugging Face 仓库中的许可。LibreYOLO 组织里的每个检查点都附有许可,同一家族内也不一定相同。该仓库是权威来源;以下摘要说明本页上次验证时适用的情况。

这里只说明涉及的许可证,不构成法律意见。如果答案对商用很重要,请自行阅读许可证并咨询法律顾问。

原始工作
OWLv2, Google Research
上游许可
Apache-2.0
LibreYOLO 代码
MIT
权重
采用 Apache-2.0 许可,重新发布在 huggingface.co/LibreYOLO
解读
Apache-2.0 is a permissive license, so these checkpoints can be used in commercial and closed-source products. It asks you to keep the license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. LibreYOLO vendors no OWLv2 model source of its own: LibreOWLv2 calls the Apache-2.0 `transformers` implementation, `Owlv2ForObjectDetection`, directly, and downloads the official checkpoints into a LibreYOLO-hosted mirror repository that preserves the upstream snapshot files.

引用

@article{minderer2023scaling,
  title={Scaling Open-Vocabulary Object Detection},
  author={Matthias Minderer, Alexey Gritsenko, Neil Houlsby},
  journal={NeurIPS},
  year={2023},
}

复制自作者在 github.com/google-research/scenic/blob/main/scenic/projects/owl_vit/README.md#references 上提供的引用块。

已针对 LibreYOLO v1.5.0 验证。本页的支持表、检查点和基准测试数据由已发布的库和权重生成,并非手工编写。