46.6kデモを予約するログイン無料で始める
オープンAI

オープンAI / clip-vit-base-patch32

画像エンコードにViT-B/32トランスフォーマ・アーキテクチャを、テキストエンコードにマスク自己アテンション・トランスフォーマを利用したCLIPマルチモーダルモデル・バリアント。

clip-vit-base-patch32 の紹介

OpenAIによって開発されたCLIPモデルは、コンピュータビジョンタスクにおける頑健性を理解し、事前の訓練なしに新しい画像分類タスクに汎化するモデルの能力をテストすることを目的としている。clip-vit-base-patch32`変種は、画像エンコードにViT-B/32トランスフォーマーアーキテクチャを利用し、テキストエンコードにマスクされた自己注意トランスフォーマーを利用する。これらのエンコーダを訓練することで、(画像とテキスト)のペアの類似度をコントラスト損失を通して最大化し、モデルは画像と対応するテキストの説明を関連付けることを学習する。

clip-vit-base-patch32でマルチモーダル埋め込みを作成する方法

ベクトル埋め込みを生成するには、主に2つの方法があります:

1.Zilliz Cloud Pipelines](https://zilliz.com/zilliz-cloud-pipelines):Zilliz Cloud(マネージドMilvus)内の組み込み機能で、clip-vit-base-patch32モデルをシームレスに統合します。テキストや画像のベクトル埋め込みを簡単に作成・取得できる、すぐに使えるソリューションです。 2.SentenceTransformers: sentence_transformers 用の Python ライブラリ。

ベクトル埋め込みが生成されると、それらはZilliz Cloud(Milvusによって提供される完全に管理されたベクトルデータベースサービス)に保存され、意味的類似性検索に使用することができます。以下は、4つの重要なステップである:

1.1.サインアップ Zilliz Cloudアカウントを無料で取得する。 2.サーバーレスクラスターのセットアップ](https://docs.zilliz.com/docs/create-cluster#set-up-a-free-cluster)とパブリックエンドポイントとAPIキーを取得する。 3.ベクター・コレクションを作成し、ベクター埋め込みを挿入します。 4.**セマンティック検索を実行する。

Zilliz Cloud Pipelines経由でベクトル埋め込みを生成し、類似検索を実行します。

ステップバイステップの手順については、以下のリソースを参照してください。

  • Zilliz Cloud Pipelines ドキュメント](https://docs.zilliz.com/docs/building-a-rag-app-with-pipelines)
  • Zilliz Cloud Pipelinesデモ動画](https://zilliz.com/zilliz-cloud-pipelines)

SentenceTransformer でベクトル埋め込みを生成し、Zilliz Cloud に挿入して類似検索を行う。

from PIL import Image
from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient
インポートリクエスト

#CLIPモデルのロード
model = SentenceTransformer('clip-ViT-B-32')

# 画像埋め込みを生成する
image_urls = [
    "https://raw.githubusercontent.com/milvus-io/milvus-docs/v2.4.x/assets/milvus_logo.png"、
]
images = [Image.open(requests.get(url, stream=True).raw) for url in image_urls].
image_embeddings = model.encode(images)

# テキスト埋め込みを生成する
queries = ["青いロゴ"]
query_embeddings = model.encode(queries)

# Public EndpointとAPI Keyを使ってZilliz Cloudに接続する
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT、
    token=ZILLIZ_API_KEY)

COLLECTION = "documents"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    コレクション名=COLLECTION、
    dimension=512、
    auto_id=True)

for image_url, embedding in zip(image_urls, image_embeddings):
    client.insert(COLLECTION, {"url": image_url, "vector": embedding})
    
results = client.search(
    コレクション名=COLLECTION、
    data=query_embeddings、
    consistency_level="Strong"、
    output_fields=["text"])

詳しくはHuggingFaceのモデルページを参照してください。