ONNXパイプライン・モデル: CLIPマルチモーダル埋込み

ONNXパイプライン・モデルは、イメージとテキストの両方を入力として受け入れ、埋込みを出力として生成するマルチモーダル埋込みモデルを提供します。パイプライン・モデルには、必要な前処理も用意されています。

CLIPマルチモーダル埋込みパイプライン

CLIPモデルはマルチモーダルで、テキスト入力データとイメージ入力データの両方に対して埋込みを実行できます。このモデルの主な利点は、イメージとテキストの類似度を使用できることです。テキスト・スニペットおよび特定のイメージに関連するベクトルを比較して、特定のイメージをより適切に記述できるテキストを理解できます。パイプライン・ジェネレータは、事前トレーニング済CLIPモデルに対して2つのONNXパイプライン・モデルを生成し、その接尾辞で区別します。イメージのパイプライン・モデルの接尾辞は_imgで、テキストのモデルの接尾辞は_txtです。export2dbを使用すると、接尾辞が付いた同じモデルがデータベースにロードされます。イメージ・テキストの類似性などのCLIP関連タスクを実行するには、両方のモデルを推論時に使用する必要があります。

  1. 入力: CLIPモデルは、イメージ埋込みパイプラインとテキスト埋込みパイプラインの2つのパイプラインで構成されます。イメージ・パイプラインは「ONNXパイプライン・モデル: イメージ埋込み」の「イメージ埋込みパイプライン」の項の説明に従ってイメージを受け取り、テキスト・パイプラインは「ONNXパイプライン・モデル: テキスト埋込み」で説明されているようにテキストを受け取ります(テキスト埋込みのサポートはOML4Py 2.0で導入されました)。
  2. 前処理: CLIPモデルのイメージ・パイプラインでは、「ONNXパイプライン・モデル: イメージ埋込み」の「イメージ埋込みパイプライン」の項で説明されているものと同じ前処理戦略が使用されます。つまり、モデルの構成と一致するイメージ・プロセッサを使用してイメージを準備します。テキスト・パイプラインでは、CLIPTokenizer (transformers.models.clip.CLIPTokenizer)という特定のトークナイザが使用されます。
  3. 後処理: 後処理ステップとして、イメージ・パイプラインとテキスト・パイプラインの両方に正規化が追加されます。
  4. 出力: どちらのモデルでも同じ形状のベクトルが生成され、類似度のメジャーを使用して比較できます。

CLIPマルチモーダル埋込みの例

  1. 事前構成済のイメージ・モデルのファイルへのエクスポート:

    次の例では、clip_img.onnxおよびclip_txt.onnxという2つのパイプラインを生成し、イメージおよびテキストの埋込みにそれぞれ使用できます。

    from oml.utils import ONNXPipeline
    pipeline = ONNXPipeline("openai/clip-vit-large-patch14")
    pipeline.export2file("clip")
  2. 事前構成済イメージ・モデルのデータベースへのエクスポート:

    この例では、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")
  3. テンプレートを使用した事前構成済でないモデルをファイルにエクスポート:
    この例は、事前構成されていないクリップ・モデルで機能します。clip_14_img.onnxclip_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を使用したマルチモーダル埋込みの生成」を参照してください。