ONNXパイプライン・モデル: イメージ埋込み
ONNXパイプライン・モデルは、イメージを入力として受け入れ、埋込みを出力として生成するイメージ埋込みモデルを提供します。パイプライン・モデルには、必要な前処理も用意されています。
イメージ埋込みパイプライン
- 入力: パイプラインへの入力はイメージです。各イメージはバイトの配列として表されます。これは、SQLを使用する場合はBLOB、またはPythonの
io.ByetIO
のような同様のインメモリー・バイト表現にすることができます。 - 前処理: イメージ埋込みパイプラインは、前処理ステップでイメージ・プロセッサを利用します。イメージ・プロセッサは、Hugging Faceリポジトリのモデル構成に依存します。事前トレーニング済イメージ・モデル("google/vit-base-patch16-224"など)を指定すると、パイプライン・ビルダーはモデルの構成からイメージ・プロセッサ・クラスを検索し、パイプライン・ビルダー・テンプレートでイメージ・プロセッサ名を検索して、それがサポートされているかどうかを判断します。一致が見つかった場合は、特定のイメージ・プロセッサがテンプレートに従ってロードおよび構成されます。次の表に、パイプライン・ビルダー・テンプレートとそれに対応するイメージ・プロセッサ・クラスの関係を示します。イメージ・プロセッサ・クラスは、トランスフォーマ・ライブラリによって提供されます。
ノート:
事前構成済のイメージ・モデルを使用する場合は、これらのテンプレートを参照する必要はありません。ただし、事前構成されていないモデルはテンプレートに基づいており、そのようなモデルにはこれらのテンプレートを使用できます。テンプレート イメージ・プロセッサ・クラス Image_ViT
transformers.ViTImageProcessor
Image_ConvNext
transformers.ConvNextImageProcessor
各イメージ・プロセッサには、特定の方法で入力イメージを変更する複数の操作があります。これらの各操作は、イメージ・プロセッサ・テンプレートの構成で表されます。これらの操作およびそれぞれの構成の変更はサポートされていません。この構成は表示でき、認識しておく必要があります。次の表に、イメージ操作とそれぞれの構成を示します:
表4-1 イメージ・プロセッサの構成
イメージ・プロセッサの操作 説明 デコード
圧縮されたイメージを3Dラスター形式に変換します。
サイズ変更
指定されたイメージを新しい形状にサイズ変更します。
スケール変更
イメージを数値でスケール変更します(要素別の乗算)。
正規化
(イメージ - 平均) / 標準偏差という公式を使用して、指定された平均と標準偏差(std)を使用してイメージを正規化します(ピクセルの強度値を目的の範囲(多くの場合、0から1の間)に調整します)。
CenterCrop
イメージを中央から固定サイズで切り取ります。
ノート:
イメージ・プリプロセッサは固定とみなされ、変更できません。これらの詳細は情報と理解のために公開しています。 - 元のモデル: Hugging Faceリポジトリからの事前トレーニング済のPyTorchモデル。このリポジトリには、既存の指定を持つ事前構成済モデルも含まれています。事前構成済リストのすべてのモデル名のリストを取得するには、
show_preconfigured
関数を使用します。前述のテンプレートを開始点として使用して、独自の指定を作成することもできます。 - 出力: パイプラインによって、入力イメージごとに埋込みが生成されます。
イメージ埋込みの例
- 事前構成済のイメージ・モデルのエクスポート:
from oml.utils import ONNXPipeline pipeline =ONNXPipeline("google/vit-base-patch16-224") pipeline.export2file("your_preconfig_model_name")
この例では、OML4Py 2.1に同梱されている事前構成済モデルである
google/vit-base-patch16-224
モデルを使用します。パイプラインはファイルにエクスポートされ、その結果、現在のディレクトリにyour_preconfig_model_name.onnxファイルが作成されます。このモデルは、オプションでpipeline.export2db関数を使用してデータベースに直接エクスポートできます。エクスポートされたパイプラインでは、分類出力ではなく、単に埋込みが生成されますが、OML分類モデルをトレーニングして、これらの埋込みを取得し、目的の分類を生成できます。 - テンプレートを使用した事前構成されていないモデルのエクスポート:
ノート:
テンプレートの詳細は、この項を参照してくださいfrom oml.utils import ONNXPipeline,ONNXPipelineConfig import oml config = ONNXPipelineConfig.from_template("Image_ViT") pipeline = ONNXPipeline("nateraw/food",config=config) oml.connect("pyquser","pyquser",dsn="pydsn") oml.export2db("your_preconfig_model_name")
nateraw/food
モデルはOML4Py 2.1に事前構成済モデルとして含まれていないため、この例ではテンプレートによる方法が選択されています。これはViTベースのモデルであるため、ViTテンプレートが選択されます。
ONNX形式に変換されたイメージ・モデルをロードするプロセスは、テキストから生成されたONNX形式モデルと非常によく似ています。ONNXモデルをロードしてさらに使用する方法については、「ONNXパイプライン・モデル: テキスト埋込み」のステップ6から9を参照してください。
親トピック: ONNX形式での事前トレーニング済モデルのインポート