🚀 モデルカード: OWLv2
OWLv2モデルは、ゼロショットのテキスト条件付き物体検出モデルです。このモデルを使用することで、1つまたは複数のテキストクエリを使って画像内の物体を検出することができます。
🚀 クイックスタート
ライブラリのインポート
import requests
from PIL import Image
import torch
from transformers import Owlv2Processor, Owlv2ForObjectDetection
モデルとプロセッサのロード
processor = Owlv2Processor.from_pretrained("google/owlv2-large-patch14")
model = Owlv2ForObjectDetection.from_pretrained("google/owlv2-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")
物体検出の実行
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}")
✨ 主な機能
- ゼロショットのテキスト条件付き物体検出が可能で、1つまたは複数のテキストクエリを使って画像内の物体を検出できます。
- CLIPをマルチモーダルバックボーンとして使用し、ViTのようなTransformerで視覚特徴を取得し、因果言語モデルでテキスト特徴を取得します。
📦 インストール
このモデルを使用するには、transformers
ライブラリをインストールする必要があります。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
import requests
from PIL import Image
import torch
from transformers import Owlv2Processor, Owlv2ForObjectDetection
processor = Owlv2Processor.from_pretrained("google/owlv2-large-patch14")
model = Owlv2ForObjectDetection.from_pretrained("google/owlv2-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")
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}")
📚 ドキュメント
🔧 技術詳細
モデルの概要
OWLv2モデル(Open-World Localizationの略)は、Matthias Minderer、Alexey Gritsenko、Neil HoulsbyによるScaling Open-Vocabulary Object Detectionで提案されました。OWLv2は、OWL-ViTと同様に、ゼロショットのテキスト条件付き物体検出モデルで、1つまたは複数のテキストクエリを使って画像をクエリすることができます。
モデルの構造
モデルはCLIPをマルチモーダルバックボーンとして使用し、ViT-L/14 Transformerアーキテクチャを画像エンコーダーとして、マスク自己注意Transformerをテキストエンコーダーとして使用します。これらのエンコーダーは、対照損失を通じて(画像、テキスト)ペアの類似度を最大化するように訓練されています。CLIPバックボーンは最初から訓練され、物体検出の目的でボックスとクラス予測ヘッドと共に微調整されます。
モデルの日付
2023年6月
モデルのタイプ
属性 |
详情 |
モデルタイプ |
モデルは、画像エンコーダーとしてViT-L/14 Transformerアーキテクチャを持つCLIPバックボーンを使用し、テキストエンコーダーとしてマスク自己注意Transformerを使用します。これらのエンコーダーは、対照損失を通じて(画像、テキスト)ペアの類似度を最大化するように訓練されています。CLIPバックボーンは最初から訓練され、物体検出の目的でボックスとクラス予測ヘッドと共に微調整されます。 |
データ
モデルのCLIPバックボーンは、公開されている画像キャプションデータで訓練されています。これは、いくつかのウェブサイトをクロールし、YFCC100Mなどの一般的に使用される既存の画像データセットを使用することで行われました。データの大部分はインターネットのクロールから得られています。これは、データがインターネットに最も接続されている人々や社会をより代表していることを意味します。OWL-ViTの予測ヘッドは、CLIPバックボーンと共に、COCOやOpenImagesなどの公開されている物体検出データセットで微調整されています。
BibTeXエントリと引用情報
@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}
}
📄 ライセンス
このモデルはApache-2.0ライセンスの下で提供されています。