模型:

google/owlvit-large-patch14

英文

模型卡片: OWL-ViT

模型详情

OWL-ViT(Open-World Localization的视觉Transformer)是由Matthias Minderer,Alexey Gritsenko,Austin Stone,Maxim Neumann,Dirk Weissenborn,Alexey Dosovitskiy,Aravindh Mahendran,Anurag Arnab,Mostafa Dehghani,Zhuoran Shen,Xiao Wang,Xiaohua Zhai,Thomas Kipf和Neil Houlsby于 Simple Open-Vocabulary Object Detection with Vision Transformers 年提出的。OWL-ViT是一种零样本文本条件下的目标检测模型,可用于使用一个或多个文本查询来查询图像。

OWL-ViT使用CLIP作为其多模态骨干,其中包括类似ViT的Transformer用于获取视觉特征,并使用因果语言模型获取文本特征。为了在目标检测中使用CLIP,OWL-ViT移除了视觉模型的最后一个令牌池化层,并将轻量级分类和框架头部连接到每个Transformer输出令牌上。在开放词汇分类中,通过使用从文本模型获得的类名嵌入来替换固定的分类层权重来实现。作者首先从头开始训练CLIP,并使用双分图匹配损失在标准检测数据集上端到端地对其进行微调,包括分类和框架头部。可使用一个或多个文本查询来执行零样本文本条件下的目标检测。

模型日期

2022年5月

模型类型

该模型使用CLIP骨干,其中包括ViT-L/14 Transformer架构作为图像编码器,还使用掩码自注意力Transformer作为文本编码器。这些编码器通过对比损失函数来最大化图像与文本对之间的相似性。CLIP骨干是从头开始训练的,并通过目标检测目标与框架和类别预测头部一起进行微调。

文档

与Transformers一起使用

import requests
from PIL import Image
import torch

from transformers import OwlViTProcessor, OwlViTForObjectDetection

processor = OwlViTProcessor.from_pretrained("google/owlvit-large-patch14")
model = OwlViTForObjectDetection.from_pretrained("google/owlvit-large-patch14")

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")
outputs = model(**inputs)

# Target image sizes (height, width) to rescale box predictions [batch_size, 2]
target_sizes = torch.Tensor([image.size[::-1]])
# Convert outputs (bounding boxes and class logits) to COCO API
results = processor.post_process(outputs=outputs, target_sizes=target_sizes)

i = 0  # Retrieve predictions for the first image for the corresponding text queries
text = texts[i]
boxes, scores, labels = results[i]["boxes"], results[i]["scores"], results[i]["labels"]

# Print detected objects and rescaled box coordinates
score_threshold = 0.1
for box, score, label in zip(boxes, scores, labels):
    box = [round(i, 2) for i in box.tolist()]
    if score >= score_threshold:
        print(f"Detected {text[label]} with confidence {round(score.item(), 3)} at location {box}")

模型用途

预期用途

该模型旨在成为研究社区的研究成果。我们希望这个模型能够帮助研究人员更好地理解和探索零样本、文本条件下的目标检测。我们还希望它能够用于跨学科研究,以评估这种模型的潜在影响,特别是在常常需要识别在训练过程中未知标签的对象的领域。

主要预期用途

这些模型的主要使用者是AI研究人员。

我们主要想象这个模型将被研究人员用于更好地理解计算机视觉模型的鲁棒性、泛化性和其他能力、偏见和限制。

数据

该模型的CLIP骨干是在公开可用的图像字幕数据上进行训练的。这是通过抓取一些网站和使用常用的现有图像数据集(如 YFCC100M )的组合来实现的。数据的很大一部分来自于我们对互联网的抓取。这意味着数据更具代表性,适用于与互联网相连的人和社会。OWL-ViT的预测头部和CLIP骨干还通过公开可用的目标检测数据集(如 COCO OpenImages )进行微调。

BibTeX条目和引用信息

@article{minderer2022simple,
  title={Simple Open-Vocabulary Object Detection with Vision Transformers},
  author={Matthias Minderer, Alexey Gritsenko, Austin Stone, Maxim Neumann, Dirk Weissenborn, Alexey Dosovitskiy, Aravindh Mahendran, Anurag Arnab, Mostafa Dehghani, Zhuoran Shen, Xiao Wang, Xiaohua Zhai, Thomas Kipf, Neil Houlsby},
  journal={arXiv preprint arXiv:2205.06230},
  year={2022},
}