MediaPipe Image Generator タスクを使用すると、テキスト プロンプトに基づいて画像を生成できます。このタスクでは、テキストから画像へのモデルを使用して、拡散手法で画像を生成します。
このタスクは、テキスト プロンプトを入力として受け取り、モデルが補強して生成の参照として使用できる条件画像(省略可)も受け取ります。条件付きテキストから画像への生成の詳細については、条件付きテキストから画像への生成用のオンデバイス拡散プラグインをご覧ください。
Image Generator は、トレーニングまたは再トレーニング中にモデルに提供された特定のコンセプトに基づいて画像を生成することもできます。詳細については、LoRA でカスタマイズするをご覧ください。
使ってみる
このタスクを使用するには、対象プラットフォーム向けの次のいずれかの実装ガイドに沿って操作します。これらのプラットフォーム固有のガイドでは、デフォルト モデルと推奨構成オプションを使用するコード例を使用して、このタスクの基本的な実装について説明します。
タスクの詳細
このセクションでは、このタスクの機能、入力、出力、構成オプションについて説明します。
機能
画像生成ツールを使用すると、次のことができます。
- テキストから画像の生成 - テキスト プロンプトを使用して画像を生成します。
- 条件画像による画像生成 - テキスト プロンプトと参照画像を使用して画像を生成します。Image Generator は、ControlNet と同様に条件画像を使用します。
- LoRA 重みによる画像生成 - カスタマイズされたモデル重みを使用して、テキスト プロンプトから特定の人、オブジェクト、スタイルの画像を生成します。
タスク入力 | タスクの出力 |
---|---|
画像生成ツールは、次の入力を受け入れます。
|
Image Generator の出力結果は次のようになります。
|
構成オプション
このタスクには、次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 |
---|---|---|
imageGeneratorModelDirectory |
モデルの重みを保存する画像生成モデル ディレクトリ。 | PATH |
loraWeightsFilePath |
LoRA 重みファイルのパスを設定します。省略可。モデルが LoRA でカスタマイズされている場合にのみ適用されます。 | PATH |
errorListener |
オプションのエラー リスナーを設定します。 | N/A |
このタスクはプラグイン モデルもサポートしています。これにより、ユーザーはタスク入力に条件画像を含めることができます。基盤モデルは、この画像を拡張して生成のリファレンスとして使用できます。これらの条件画像には、顔の特徴点、エッジの輪郭、深度推定などがあり、モデルは追加のコンテキストと情報として画像の生成に使用します。
基盤モデルにプラグイン モデルを追加する場合は、プラグイン オプションも構成します。顔ランドマーク プラグインは faceConditionOptions
、Canny エッジ プラグインは edgeConditionOptions
、Depth プラグインは depthConditionOptions
を使用します。
Canny エッジのオプション
edgeConditionOptions
で次のオプションを設定します。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
threshold1 |
ヒステリシス手順の最初のしきい値。 | Float |
100 |
threshold2 |
ヒステリシス手順の 2 番目のしきい値。 | Float |
200 |
apertureSize |
Sobel 演算子のアパーチャサイズ。一般的な範囲は 3 ~ 7 です。 | Integer |
3 |
l2Gradient |
デフォルトの L1 ノルムの代わりに、L2 ノルムを使用して画像勾配の振幅を計算するかどうか。 | BOOLEAN |
False |
EdgePluginModelBaseOptions |
プラグイン モデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
これらの構成オプションの仕組みについて詳しくは、Canny エッジ検出機能をご覧ください。
顔のランドマークのオプション
faceConditionOptions
で次のオプションを設定します。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
minFaceDetectionConfidence |
顔検出が成功とみなされるための最小信頼スコア。 | Float [0.0,1.0] |
0.5 |
minFacePresenceConfidence |
顔のランドマーク検出における顔の存在スコアの最小信頼度スコア。 | Float [0.0,1.0] |
0.5 |
faceModelBaseOptions |
状態画像を作成するモデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
FacePluginModelBaseOptions |
プラグイン モデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
これらの構成オプションの仕組みについて詳しくは、顔ランドマークタスクをご覧ください。
奥行きのオプション
depthConditionOptions
で次のオプションを設定します。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
depthModelBaseOptions |
状態画像を作成するモデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
depthPluginModelBaseOptions |
プラグイン モデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
モデル
Image Generator には、拡散手法を使用して新しい画像を生成するテキストから画像の AI モデルである基盤モデルが必要です。このセクションに記載されている基盤モデルは、ハイエンドのスマートフォンでの実行に最適化された軽量モデルです。
プラグイン モデルはオプションで、基本モデルを補完します。これにより、ユーザーはテキスト プロンプトとともに追加の条件画像を指定して、より具体的な画像を生成できます。LoRA 重みを使用して基盤モデルをカスタマイズするオプションは、オブジェクト、人物、スタイルなどの特定のコンセプトを基盤モデルに学習させ、生成された画像に挿入するオプションです。
基盤モデル
基盤モデルは、テキスト プロンプトから画像を生成する潜在的テキスト画像変換拡散モデルです。Image Generator では、次のモデルに基づいて、基盤モデルが runwayml/stable-diffusion-v1-5 EMA-only
モデル形式と一致している必要があります。
次の基盤モデルも画像生成ツールに対応しています。
基盤モデルをダウンロードしたら、image_generator_converter を使用して、モデルを Image Generator に適したオンデバイス形式に変換します。
必要な依存関係をインストールします。
$ pip install torch typing_extensions numpy Pillow requests pytorch_lightning absl-py
convert.py
スクリプトを実行します。
$ python3 convert.py --ckpt_path <ckpt_path> --output_path <output_path>
プラグイン モデル
このセクションのプラグイン モデルは Google によって開発されており、基盤モデルと組み合わせて使用する必要があります。プラグイン モデルを使用すると、Image Generator はテキスト プロンプトとともに条件画像を入力として受け入れることができるため、生成される画像の構造を制御できます。プラグイン モデルは、ControlNet に似た機能を提供します。デバイス上の拡散専用の新しいアーキテクチャを備えています。
プラグイン モデルはベース オプションで指定する必要があります。追加のモデル ファイルをダウンロードすることが必要になる場合があります。各プラグインには、Image Generator によって生成できる条件画像に固有の要件があります。
Canny Edge プラグイン
Canny Edge プラグインは、生成された画像の目的のエッジの輪郭を示す条件画像を受け入れます。基盤モデルは、条件画像に暗黙的に含まれるエッジを使用して、テキスト プロンプトに基づいて新しい画像を生成します。Image Generator には、条件画像を作成する機能が組み込まれています。必要なのはプラグイン モデルのダウンロードのみです。
Canny Edge プラグインには、次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
threshold1 |
ヒステリシス手順の最初のしきい値。 | Float |
100 |
threshold2 |
ヒステリシス手順の 2 番目のしきい値。 | Float |
200 |
apertureSize |
Sobel 演算子のアパーチャサイズ。一般的な範囲は 3 ~ 7 です。 | Integer |
3 |
l2Gradient |
デフォルトの L1 ノルムの代わりに、L2 ノルムを使用して画像勾配の振幅を計算するかどうか。 | BOOLEAN |
False |
EdgePluginModelBaseOptions |
プラグイン モデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
これらの構成オプションの仕組みについて詳しくは、Canny エッジ検出機能をご覧ください。
顔のランドマーク プラグイン
Face Landmark プラグインは、MediaPipe Face Landmarker の出力を条件画像として受け入れます。顔ランドマークは、顔の特徴の存在と位置をマッピングする、1 つの顔の詳細な顔メッシュを提供します。基盤モデルは、状態画像に暗黙的に含まれる顔マッピングを使用して、メッシュ上に新しい顔を生成します。
顔のランドマーク プラグインでは、状態画像を作成するために Face Landmarker のモデル バンドルも必要です。このモデル バンドルは、顔ランドマークタスクで使用されているのと同じバンドルです。
顔の特徴点プラグインには、次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
minFaceDetectionConfidence |
顔検出が成功とみなされるための最小信頼スコア。 | Float [0.0,1.0] |
0.5 |
minFacePresenceConfidence |
顔のランドマーク検出における顔の存在スコアの最小信頼度スコア。 | Float [0.0,1.0] |
0.5 |
faceModelBaseOptions |
状態画像を作成するモデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
FacePluginModelBaseOptions |
プラグイン モデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
これらの構成オプションの仕組みについて詳しくは、顔ランドマークタスクをご覧ください。
深度プラグイン
Depth プラグインは、オブジェクトの単眼奥行きを指定する条件画像を受け入れます。基盤モデルは、条件画像を使用して生成するオブジェクトのサイズと深さを推測し、テキスト プロンプトに基づいて新しい画像を生成します。
また、Depth プラグインでは、条件画像を作成するために深度推定モデルも必要です。
depth estimation model をダウンロードする
Depth プラグインには、次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
depthModelBaseOptions |
状態画像を作成するモデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
depthPluginModelBaseOptions |
プラグイン モデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
LoRA によるカスタマイズ
LoRA でモデルをカスタマイズすると、Image Generator はトレーニング中に一意のトークンで識別される特定のコンセプトに基づいて画像を生成できます。トレーニング後の新しい LoRA 重みにより、テキスト プロンプトでトークンが指定されると、モデルは新しいコンセプトの画像を生成できます。
LoRA 重みを作成するには、特定のオブジェクト、人物、スタイルの画像で基盤モデルをトレーニングする必要があります。これにより、モデルは新しいコンセプトを認識し、画像生成時に適用できるようになります。特定の人物や顔の画像を生成するために LoRa 重みを作成する場合は、このソリューションを自分の顔または許可を得た人物の顔にのみ使用してください。
トークン「monadikos teapot」を使用して、DreamBooth データセットのティーポットの画像でトレーニングされたカスタマイズされたモデルの出力を次に示します。
プロンプト: 鏡の横にある monadikos ティーポット
カスタマイズされたモデルは、プロンプト内のトークンを受け取ると、LoRA 重みから描画することを学習したティーポットを挿入し、プロンプトでリクエストされたように、ミラーの横に画像を配置します。
詳細については、カスタマイズ ガイドをご覧ください。Vertex AI の Model Garden を使用して、基盤モデルに LoRA 重みを適用してモデルをカスタマイズします。