このトピックでは、[ビジュアル ベクター化モデル](ModelScope)を使用して画像データをベクター化し、DashVector にベクターをインポートしてベクター検索を行う方法について説明します。
ModelScope は、次世代のオープンソースモデル・アズ・ア・サービス (MaaS) プラットフォームを構築し、汎 AI 開発者に柔軟で使いやすく、費用対効果の高いワンストップモデルを提供することを目指しています。
ModelScope は、業界をリードする事前学習済みモデルをまとめて、反復的な研究開発コストを削減し、環境に優しく、よりオープンな AI 開発環境とモデルサービスを提供することを目指しています。このように、ModelScope はデジタル経済の発展に貢献できます。 ModelScope は、さまざまな種類の高品質モデルをオープンソース方式で提供しています。開発者は、ModelScope から無料でモデルをダウンロードして体験できます。
ModelScope では、次のことができます。
事前学習済みモデルを無料で使用およびダウンロードする。
コマンドラインベースのモデル予測を実行して、モデルの効果を簡単かつ迅速に検証する。
独自のデータでモデルを微調整してカスタマイズする。
理論と実践のトレーニングに参加して、研究開発能力を効果的に向上させる。
アイデアをコミュニティ全体と共有する。
前提条件
DashVector:
クラスタが作成されます。 詳細については、「クラスタの作成」をご参照ください。
API キーが取得されます。 詳細については、「API キーの管理」をご参照ください。
最新バージョンの SDK がインストールされています。詳細については、「DashVector SDK のインストール」をご参照ください。
ModelScope:
最新バージョンの SDK がインストールされています
pip install -U modelscopeコマンドを実行します。
商品画像から抽出された商品特性に基づく類似検索モデル
概要
このモデルは、商品画像に基づいて商品特性を抽出し、特性をベクトル化し、消費者が同じまたは類似の商品の大規模検索を実行できるようにします。モデルは、荷物製品の画像のマット処理を自動的に実行し、追加の入力なしで画像のマット処理結果に基づいて製品特性を抽出します。
モデル ID | ベクトル次元 | 距離メトリック | ベクトルデータ型 | 備考 |
damo/cv_resnet50_product-bag-embedding-models | 512 | コサイン | Float32 |
詳細については、「商品画像から抽出された商品特性に基づく類似検索モデル」をご参照ください。
例
コードを正しく実行するには、次の操作を実行する必要があります。
サンプルコードの {your-dashvector-api-key} を DashVector API キーに置き換えます。
サンプルコードの {your-dashvector-cluster-endpoint} を DashVector クラスタのエンドポイントに置き換えます。
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from dashvector import Client
product_embedding = pipeline(
Tasks.product_retrieval_embedding,
model='damo/cv_resnet50_product-bag-embedding-models'
)
def generate_embeddings(img: str):
# 画像から埋め込みベクトルを生成します。
result = product_embedding(img)
return result['img_embedding']
# DashVector クライアントを作成します。
client = Client(
api_key='{your-dashvector-api-key}',
endpoint='{your-dashvector-cluster-endpoint}'
)
# DashVector コレクションを作成します。
rsp = client.create('resnet50-embedding', dimension=512)
assert rsp
collection = client.get('resnet50-embedding')
assert collection
# テキストをベクトルに変換し、DashVector に保存します。
img_url = 'https://mmsearch.oss-cn-zhangjiakou.aliyuncs.com/maas_test_img/tb_image_share_1666002161794.jpg'
collection.insert(
('ID1', generate_embeddings(img_url))
)
# ベクトル検索を実行します。
docs = collection.query(
generate_embeddings(img_url)
)
print(docs)