MediaPipe Image Generator タスクを使用すると、テキスト プロンプトに基づいて画像を生成できます。このタスクでは、テキスト画像変換モデルを使用して拡散技術で画像を生成します。
このタスクは、テキスト プロンプトを入力として受け取り、モデルが拡張して生成の参照として使用できる条件画像をオプションで受け取ります。条件付きテキストから画像への生成について詳しくは、条件付きテキストから画像への生成のためのデバイス上の拡散プラグインをご覧ください。
画像生成ツールは、トレーニングまたは再トレーニング中にモデルに提供された特定のコンセプトに基づいて画像を生成することもできます。詳細については、LoRA でカスタマイズするをご覧ください。
使ってみる
このタスクの使用を開始するには、対象プラットフォームの次のいずれかの実装ガイドに沿って操作します。これらのプラットフォーム固有のガイドでは、デフォルトのモデルと推奨の構成オプションを使用するコード例を示しながら、このタスクの基本的な実装について説明します。
タスクの詳細
このセクションでは、このタスクの機能、入力、出力、構成オプションについて説明します。
機能
画像生成ツールを使用すると、次のことを実装できます。
- テキスト画像変換 - テキスト プロンプトを使用して画像を生成します。
- 条件画像を使用した画像生成 - テキスト プロンプトと参照画像を使用して画像を生成します。Image Generator は、ControlNet と同様の方法で条件画像を使用します。
- LoRA 重みを使用した画像生成 - カスタマイズされたモデルの重みを使用して、テキスト プロンプトで特定の人物、オブジェクト、スタイルの画像を生成します。
タスク入力 | タスク出力 |
---|---|
画像生成ツールでは、次の入力を使用できます。
|
画像生成ツールは次の結果を出力します。
|
構成オプション
このタスクには、次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 |
---|---|---|
imageGeneratorModelDirectory |
モデルの重みを保存する画像生成モデル ディレクトリ。 | PATH |
loraWeightsFilePath |
LoRA 重みファイルのパスを設定します。省略可。LoRA でモデルがカスタマイズされている場合にのみ適用されます。 | PATH |
errorListener |
オプションのエラー リスナーを設定します。 | N/A |
このタスクはプラグイン モデルもサポートしています。これにより、ユーザーはタスク入力に条件画像を含めることができます。基盤モデルは、この画像を拡張して生成の参照として使用できます。これらの条件画像は、顔のランドマーク、エッジの輪郭、深度の推定値などです。モデルは、これらを画像生成のための追加のコンテキストと情報として使用します。
基盤モデルにプラグイン モデルを追加する場合は、プラグイン オプションも構成します。顔のランドマーク プラグインは faceConditionOptions
を使用し、Canny エッジ プラグインは edgeConditionOptions
を使用し、深度プラグインは 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 |
モデル
画像生成ツールには基盤モデルが必要です。これは、拡散技術を使用して新しい画像を生成するテキスト画像 AI モデルです。このセクションに記載されている基盤モデルは、ハイエンド スマートフォンで実行するように最適化された軽量モデルです。
プラグイン モデルは省略可能で、基盤モデルを補完します。これにより、ユーザーはテキスト プロンプトとともに条件画像をさらに指定して、より具体的な画像を生成できます。LoRA 重みを使用して基盤モデルをカスタマイズすると、オブジェクト、人物、スタイルなどの特定のコンセプトを基盤モデルに学習させ、生成された画像に挿入できます。
基盤モデル
基盤モデルは、テキスト プロンプトから画像を生成する潜在的テキスト画像変換拡散モデルです。画像生成ツールでは、次のモデルに基づいて、基盤モデルが stable-diffusion-v1-5/stable-diffusion-v1-5 EMA-only
モデル形式と一致している必要があります。
次の基盤モデルも Image Generator と互換性があります。
基盤モデルをダウンロードしたら、image_generator_converter を使用して、モデルを画像生成ツールに適したオンデバイス形式に変換します。
必要な依存関係をインストールします。
$ 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 が開発したもので、基盤モデルと組み合わせて使用する必要があります。プラグイン モデルを使用すると、画像生成ツールはテキスト プロンプトとともに条件画像を入力として受け取ることができるため、生成された画像の構造を制御できます。このプラグイン モデルは、ControlNet と同様の機能を備えており、オンデバイス拡散専用の新しいアーキテクチャを採用しています。
プラグイン モデルはベース オプションで指定する必要があります。追加のモデルファイルをダウンロードする必要がある場合もあります。各プラグインには、Image Generator で生成できる条件画像に関する独自の要件があります。
Canny Edge プラグイン
Canny Edge プラグインは、生成された画像の意図するエッジを概説する条件画像を受け取ります。基盤モデルは、条件画像によって示されるエッジを使用し、テキスト プロンプトに基づいて新しい画像を生成します。画像生成ツールには、条件画像を作成する機能が組み込まれており、プラグイン モデルをダウンロードするだけで使用できます。
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 プラグイン
Face Landmark プラグインは、MediaPipe の Face Landmarker からの出力を条件画像として受け入れます。Face Landmarker は、単一の顔の詳細な顔メッシュを提供し、顔の特徴の存在と位置をマッピングします。基盤モデルは、条件画像で示される顔のマッピングを使用して、メッシュ上に新しい顔を生成します。
顔のランドマーク プラグインでは、条件画像を作成するために顔のランドマーカーのモデルバンドルも必要です。このモデルバンドルは、顔ランドマーク検出タスクで使用されるバンドルと同じです。
Face Landmark プラグインには、次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
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 プラグインには、次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
depthModelBaseOptions |
条件画像を作成するモデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
depthPluginModelBaseOptions |
プラグイン モデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
LoRA を使用したカスタマイズ
LoRA でモデルをカスタマイズすると、画像生成ツールは、トレーニング中に一意のトークンで識別される特定のコンセプトに基づいて画像を生成できます。トレーニング後の新しい LoRA 重みを使用すると、テキスト プロンプトでトークンが指定されたときに、モデルが新しいコンセプトの画像を生成できるようになります。
LoRA 重みを作成するには、特定のオブジェクト、人物、スタイルの画像で基盤モデルをトレーニングする必要があります。これにより、モデルは新しいコンセプトを認識し、画像を生成するときにそのコンセプトを適用できます。特定の人物や顔の画像を生成するために LoRA 重みを作成する場合は、このソリューションは、その人物または人物の顔について使用の許可を得ている場合にのみ使用してください。
以下は、DreamBooth データセットのティーポットの画像でトレーニングされたカスタマイズ モデルの出力です。トークン「monadikos teapot」を使用しています。
プロンプト: 鏡の横にある monadikos ティーポット
カスタマイズされたモデルは、プロンプトでトークンを受け取り、LoRA 重みから学習したティーポットを挿入し、プロンプトでリクエストされたとおりに、鏡の横に配置します。
詳細については、カスタマイズ ガイドをご覧ください。このガイドでは、Vertex AI の Model Garden を使用して、基盤モデルに LoRA 重みを適用してモデルをカスタマイズします。