🚀 モデルカード: OWLv2
OWLv2モデル(Open-World Localizationの略称)は、画像内の物体をテキストクエリで検出するゼロショット物体検出モデルです。このモデルは、CLIPをバックボーンとして使用し、画像とテキストの特徴を抽出します。
🚀 クイックスタート
モデルの詳細
OWLv2モデル(Open-World Localizationの略称)は、Matthias Minderer、Alexey Gritsenko、Neil HoulsbyによるScaling Open-Vocabulary Object Detectionで提案されました。OWLv2は、OWL-ViTと同様に、ゼロショットのテキスト条件付き物体検出モデルであり、1つまたは複数のテキストクエリを使用して画像をクエリするために使用できます。
このモデルは、CLIPをマルチモーダルバックボーンとして使用し、ViTのようなTransformerを使用して視覚的特徴を取得し、因果言語モデルを使用してテキスト特徴を取得します。検出にCLIPを使用するために、OWL-ViTはビジョンモデルの最終トークンプーリング層を削除し、軽量の分類とボックスヘッドを各Transformer出力トークンに追加します。オープンボキャブラリ分類は、固定分類層の重みをテキストモデルから取得したクラス名埋め込みで置き換えることで可能になります。著者らはまず、CLIPをゼロからトレーニングし、二部マッチング損失を使用して標準的な検出データセット上で分類とボックスヘッドでエンドツーエンドで微調整します。画像ごとに1つまたは複数のテキストクエリを使用して、ゼロショットのテキスト条件付き物体検出を実行できます。
モデルの日付
2023年6月
モデルの種類
このモデルは、ViT-B/16 Transformerアーキテクチャを持つCLIPバックボーンを画像エンコーダとして使用し、マスク付き自己注意Transformerをテキストエンコーダとして使用します。これらのエンコーダは、対照損失を介して(画像、テキスト)ペアの類似性を最大化するようにトレーニングされています。CLIPバックボーンはゼロからトレーニングされ、物体検出の目的でボックスとクラス予測ヘッドと一緒に微調整されます。
ドキュメント
Transformersでの使用
import requests
from PIL import Image
import numpy as np
import torch
from transformers import AutoProcessor, Owlv2ForObjectDetection
from transformers.utils.constants import OPENAI_CLIP_MEAN, OPENAI_CLIP_STD
processor = AutoProcessor.from_pretrained("google/owlv2-base-patch16")
model = Owlv2ForObjectDetection.from_pretrained("google/owlv2-base-patch16")
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)
def get_preprocessed_image(pixel_values):
pixel_values = pixel_values.squeeze().numpy()
unnormalized_image = (pixel_values * np.array(OPENAI_CLIP_STD)[:, None, None]) + np.array(OPENAI_CLIP_MEAN)[:, None, None]
unnormalized_image = (unnormalized_image * 255).astype(np.uint8)
unnormalized_image = np.moveaxis(unnormalized_image, 0, -1)
unnormalized_image = Image.fromarray(unnormalized_image)
return unnormalized_image
unnormalized_image = get_preprocessed_image(inputs.pixel_values)
target_sizes = torch.Tensor([unnormalized_image.size[::-1]])
results = processor.post_process_object_detection(
outputs=outputs, threshold=0.2, target_sizes=target_sizes
)
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}")
📚 モデルの使用
意図された用途
このモデルは、研究コミュニティ向けの研究成果として意図されています。このモデルが研究者にゼロショットのテキスト条件付き物体検出をよりよく理解し、探索することを可能にすることを期待しています。また、このようなモデルの潜在的な影響に関する学際的研究、特にトレーニング中にラベルが利用できない物体を識別することが一般的に必要な分野での研究にも使用できることを期待しています。
主な意図された用途
これらのモデルの主な意図されたユーザーはAI研究者です。
主に、研究者がコンピュータビジョンモデルのロバスト性、汎化能力、その他の機能、バイアス、制約をよりよく理解するためにこのモデルを使用することを想定しています。
📦 データ
このモデルのCLIPバックボーンは、公開されている画像キャプションデータでトレーニングされました。これは、いくつかのウェブサイトをクロールし、YFCC100Mなどの一般的に使用されている既存の画像データセットを使用することで行われました。データの大部分は、インターネットのクロールから得られています。これは、データがインターネットに最も接続されている人々と社会をより代表していることを意味します。OWL-ViTの予測ヘッドは、CLIPバックボーンとともに、COCOやOpenImagesなどの公開されている物体検出データセットで微調整されています。
(v2用に更新予定)
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