🚀 模型卡片:OWLv2
OWLv2模型(开放世界定位的缩写)是一种零样本、文本条件的目标检测模型,可使用一个或多个文本查询来查询图像。该模型使用CLIP作为其多模态主干,通过ViT类Transformer获取视觉特征,通过因果语言模型获取文本特征。
✨ 主要特性
- 零样本检测:无需针对特定目标进行训练,即可根据文本查询检测图像中的目标。
- 多模态处理:结合视觉和文本特征,实现开放词汇的目标检测。
- 端到端训练:通过对比损失和二分匹配损失进行端到端训练,提高检测性能。
📦 安装指南
使用transformers
库加载模型:
from transformers import Owlv2Processor, Owlv2ForObjectDetection
processor = Owlv2Processor.from_pretrained("google/owlv2-base-patch16-ensemble")
model = Owlv2ForObjectDetection.from_pretrained("google/owlv2-base-patch16-ensemble")
💻 使用示例
基础用法
import requests
from PIL import Image
import torch
from transformers import Owlv2Processor, Owlv2ForObjectDetection
processor = Owlv2Processor.from_pretrained("google/owlv2-base-patch16-ensemble")
model = Owlv2ForObjectDetection.from_pretrained("google/owlv2-base-patch16-ensemble")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
texts = [["a photo of a cat", "a photo of a dog"]]
inputs = processor(text=texts, images=image, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
target_sizes = torch.Tensor([image.size[::-1]])
results = processor.post_process_object_detection(outputs=outputs, target_sizes=target_sizes, threshold=0.1)
i = 0
text = texts[i]
boxes, scores, labels = results[i]["boxes"], results[i]["scores"], results[i]["labels"]
for box, score, label in zip(boxes, scores, labels):
box = [round(i, 2) for i in box.tolist()]
print(f"Detected {text[label]} with confidence {round(score.item(), 3)} at location {box}")
📚 详细文档
🔧 技术细节
模型架构
模型使用CLIP作为多模态主干,其中图像编码器采用ViT-B/16 Transformer架构,文本编码器采用掩码自注意力Transformer。这些编码器通过对比损失进行训练,以最大化(图像,文本)对的相似度。CLIP主干从零开始训练,并与边界框和类别预测头一起进行微调,以实现目标检测。
训练数据
📄 许可证
本模型采用Apache-2.0许可证。
引用信息
@misc{minderer2023scaling,
title={Scaling Open-Vocabulary Object Detection},
author={Matthias Minderer and Alexey Gritsenko and Neil Houlsby},
year={2023},
eprint={2306.09683},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
表格信息
属性 |
详情 |
模型类型 |
使用CLIP主干,图像编码器为ViT-B/16 Transformer架构,文本编码器为掩码自注意力Transformer |
训练数据 |
CLIP主干使用公开图像 - 标题数据,微调使用COCO和OpenImages等目标检测数据集 |