ONNXパイプライン・モデル: CLIPマルチモーダル埋込み
ONNXパイプライン・モデルは、イメージとテキストの両方を入力として受け入れ、埋込みを出力として生成するマルチモーダル埋込みモデルを提供します。パイプライン・モデルには、必要な前処理も用意されています。
CLIPマルチモーダル埋込みパイプライン
CLIPモデルはマルチモーダルで、テキスト入力データとイメージ入力データの両方に対して埋込みを実行できます。このモデルの主な利点は、イメージとテキストの類似度を使用できることです。テキスト・スニペットおよび特定のイメージに関連するベクトルを比較して、特定のイメージをより適切に記述できるテキストを理解できます。パイプライン・ジェネレータは、事前トレーニング済CLIPモデルに対して2つのONNXパイプライン・モデルを生成し、その接尾辞で区別します。イメージのパイプライン・モデルの接尾辞は_imgで、テキストのモデルの接尾辞は_txtです。export2dbを使用すると、接尾辞が付いた同じモデルがデータベースにロードされます。イメージ・テキストの類似性などのCLIP関連タスクを実行するには、両方のモデルを推論時に使用する必要があります。
- 入力: CLIPモデルは、イメージ埋込みパイプラインとテキスト埋込みパイプラインの2つのパイプラインで構成されます。イメージ・パイプラインは「ONNXパイプライン・モデル: イメージ埋込み」の「イメージ埋込みパイプライン」の項の説明に従ってイメージを受け取り、テキスト・パイプラインは「ONNXパイプライン・モデル: テキスト埋込み」で説明されているようにテキストを受け取ります(テキスト埋込みのサポートはOML4Py 2.0で導入されました)。
- 前処理: CLIPモデルのイメージ・パイプラインでは、「ONNXパイプライン・モデル: イメージ埋込み」の「イメージ埋込みパイプライン」の項で説明されているものと同じ前処理戦略が使用されます。つまり、モデルの構成と一致するイメージ・プロセッサを使用してイメージを準備します。テキスト・パイプラインでは、CLIPTokenizer (transformers.models.clip.CLIPTokenizer)という特定のトークナイザが使用されます。
- 後処理: 後処理ステップとして、イメージ・パイプラインとテキスト・パイプラインの両方に正規化が追加されます。
- 出力: どちらのモデルでも同じ形状のベクトルが生成され、類似度のメジャーを使用して比較できます。
CLIPマルチモーダル埋込みの例
- 事前構成済のイメージ・モデルのファイルへのエクスポート:
次の例では、clip_img.onnxおよびclip_txt.onnxという2つのパイプラインを生成し、イメージおよびテキストの埋込みにそれぞれ使用できます。
from oml.utils import ONNXPipeline pipeline = ONNXPipeline("openai/clip-vit-large-patch14") pipeline.export2file("clip")
- 事前構成済イメージ・モデルのデータベースへのエクスポート:
この例では、clip_imgおよびclip_txtという2つのデータベース内モデルを生成し、イメージおよびテキストの埋込みにそれぞれ使用できます。
fromoml.utils import ONNXPipeline import oml pipeline = ONNXPipeline("openai/clip-vit-large-patch14") oml.connect("pyquser","pyquser",dsn="pydsn") pipeline.export2db("clip")
- テンプレートを使用した事前構成済でないモデルをファイルにエクスポート:
この例は、事前構成されていないクリップ・モデルで機能します。clip_14_img.onnxとclip_14_txt.onnxという2つのファイルが作成されます。
from oml.utils import ONNXPipeline, ONNXPipelineConfig config = ONNXPipelineConfig.from_template("multimodal_clip") pipeline = ONNXPipeline("openai/clip-vit-base-patch16",config=config) pipeline.export2file("clip_16")
CLIPを使用してマルチモーダル埋込みを生成するエンド・ツー・エンドの例については、「CLIPを使用したマルチモーダル埋込みの生成」を参照してください。
親トピック: ONNX形式での事前トレーニング済モデルのインポート