OWLv2
OWLv2 是一个开放词汇目标检测器,由 Google Research 开发,它把图像区域拿去和一个 CLIP 式编码器输出的文本嵌入向量打分。LibreYOLO 把它包装成开放词汇检测器层里一个仅支持预测的家族。
- 任务
- detection
- 尺寸
- b16, l14 at 960 to 1008 px
- 安装
pip install libreyolo- 支持层级
- 兄弟层级,自 v 起。一个独立的产品面,有自己的工厂和契约。
- 许可
- 代码采用 MIT,权重采用 Apache-2.0。商用
安装
OWLv2 通过 LibreYOLO 的开放词汇检测器层加载,这一层需要 openvocab extra:
pip install "libreyolo[openvocab]"这个 extra 会装上 transformers 和 timm,也就是这一层调用的那两个 Hugging
Face 库。
预测
OWLv2 不是 LibreYOLO 通过 LibreYOLO() 加载的检查点(checkpoint)。它通过同级的
LibreOpenVocab 工厂加载,后者在首次使用时下载一份 Hugging Face 快照,并缓存在
weights/ 下。
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 标签。每个标签在送进文本塔之前都会被套进一个固定的提示词模
板,和 transformers 的 Owlv2ForObjectDetection 训练时的做法保持一致。
OWLv2 没有文本 token 阈值:只有 conf 会过滤检测结果,传入 text_threshold 会
抛错。iou 为了 API 兼容性会被接受,但会发出警告并且没有任何作用,因为这里没有
任何东西跑非极大值抑制。imgsz 和 augment=True 会被直接拒绝:缩放由
transformers 的 processor 负责,而测试时增强不在这一层的范围内。对单张图像调用
predict() 返回的是一个 Results,不是列表;传入一个目录、一个图像列表,或者对
视频源用 stream=True,才会得到多个。这个家族没有 CLI 路径,libreyolo predict
只通过 LibreYOLO() 加载 .pt 检查点,所以 LibreOpenVocab 家族从 Python 里运
行。数据源类型和流式处理见预测。
变体
两个检查点,b16(base,patch 尺寸 16)和 l14(large,patch 尺寸 14)。b16
是这一层未指定尺寸时的默认尺寸。两者都通过 transformers 的
Owlv2ForObjectDetection 镜像官方的 Google Research 发布版,一次性下载到一份保
留了上游文件的 LibreYOLO 托管 Hugging Face 快照里。这个家族目前还没有发布任何精
度或延迟数字。
训练、数据集验证和导出都不在这一层的范围内:train()、val() 和 export() 都
无条件抛出 NotImplementedError。这是一个围绕已发布检查点的、仅支持预测的封装。
检查点
这个家族已发布的全部权重文件。
| 文件 | 输入(px) | 权重许可 |
|---|---|---|
| Detection | ||
| LibreOWLv2b16.pt | 960 | apache-2.0 |
| LibreOWLv2l14.pt | 1008 | apache-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 上提供的引用块。