MediaPipe Image Generator タスクでは、テキスト プロンプトに基づいて画像を生成できます。このタスクでは、テキストから画像へのモデルを使用して、拡散手法で画像を生成します。
このタスクは、テキスト プロンプトを入力として受け入れます。また、オプションの条件画像も受け取ります。この条件画像は、モデルが拡張し、生成の参照として使用できます。条件付きテキストから画像の生成の詳細については、条件付きテキストから画像生成のためのオンデバイス拡散プラグインをご覧ください。
画像生成ツールでは、トレーニング中または再トレーニング中にモデルに提供された特定のコンセプトに基づいて画像を生成することもできます。詳細については、LoRA でカスタマイズするをご覧ください。
使ってみる
このタスクの使用を開始するには、ターゲット プラットフォームの実装ガイドのいずれかに沿って操作します。以下のプラットフォーム固有のガイドでは、デフォルト モデルと推奨される構成オプションを使用するコード例とともに、このタスクの基本的な実装について説明します。
タスクの詳細
このセクションでは、このタスクの機能、入力、出力、構成オプションについて説明します。
機能
Image Generator を使用すると、以下を実装できます。
- テキストから画像の生成 - テキスト プロンプトを使用して画像を生成します。
- 条件画像による画像生成 - テキスト プロンプトと参照画像を含む画像を生成します。Image Generator では、ControlNet と同様に条件画像を使用します。
- LoRA の重み付けによる画像生成 - カスタマイズしたモデルの重み付けを使用して、テキスト プロンプトで特定の人物、物、スタイルの画像を生成します。
タスクの入力 | タスクの出力 |
---|---|
Image Generator は以下の入力を受け入れます。
|
Image Generator は、次の結果を出力します。
|
構成オプション
このタスクには、次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 |
---|---|---|
imageGeneratorModelDirectory |
モデルの重み付けが格納される画像生成モデルのディレクトリ。 | PATH |
loraWeightsFilePath |
LoRA 重みファイルのパスを設定します。省略可。モデルが LoRA でカスタマイズされている場合にのみ適用されます。 | PATH |
errorListener |
オプションのエラーリスナーを設定します。 | N/A |
タスクはプラグイン モデルもサポートしています。これにより、ユーザーはタスク入力に条件画像を含めることができます。この画像を基盤モデルで拡張し、生成の参照として使用できます。これらの条件画像には、顔のランドマーク、エッジの輪郭、深度推定値があります。モデルはこれらを、画像を生成するための追加のコンテキストと情報として使用します。
プラグイン モデルを基盤モデルに追加する場合は、プラグインのオプションも構成します。顔ランドマーク プラグインは faceConditionOptions
、Canny Edge プラグインは edgeConditionOptions
、Depth プラグインは depthConditionOptions
を使用します。
Canny Edge のオプション
edgeConditionOptions
で次のオプションを構成します。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
threshold1 |
ヒステリシス手順の 1 つ目のしきい値です。 | 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 重みを使用して基盤モデルをカスタマイズすることは、オブジェクト、人物、スタイルなどの特定のコンセプトを基盤モデルに学習させ、生成された画像に挿入するオプションです。
基盤モデル
基盤モデルは、テキスト プロンプトから画像を生成する潜在的なテキストから画像の拡散モデルです。Image Generator では、次のモデルに基づいて、基盤モデルが runwayml/stable-diffusion-v1-5 EMA-only
モデル形式と一致する必要があります。
次の基盤モデルも画像生成ツールと互換性があります。
基盤モデルをダウンロードしたら、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 と同様の機能を備え、デバイス上の拡散に特化した新しいアーキテクチャを備えています。
プラグイン モデルはベース オプションで指定する必要があります。また、場合によっては追加のモデルファイルをダウンロードする必要があります。各プラグインには、画像生成ツールで生成できる条件画像に関する固有の要件があります。
Canny Edge プラグイン
Canny Edge プラグインは、生成された画像の意図された端を概説する条件画像を受け入れます。基盤モデルは、条件画像で暗黙的に示唆されるエッジを使用し、テキスト プロンプトに基づいて新しい画像を生成します。Image Generator には、条件画像を作成する組み込み機能があり、プラグイン モデルのダウンロードのみが必要です。
Canny Edge プラグインには、次の構成オプションが含まれています。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
threshold1 |
ヒステリシス手順の 1 つ目のしきい値です。 | Float |
100 |
threshold2 |
ヒステリシス手順の 2 つ目のしきい値。 | Float |
200 |
apertureSize |
Sobel オペレーターの絞りサイズ。通常は 3 ~ 7 の範囲です。 | Integer |
3 |
l2Gradient |
デフォルトの L1 ノルムではなく、L2 ノルムを使用して画像勾配の大きさを計算するかどうか。 | BOOLEAN |
False |
EdgePluginModelBaseOptions |
プラグイン モデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
これらの構成オプションの仕組みの詳細については、Canny エッジ検出器をご覧ください。
Face Landscape プラグイン
顔のランドマーク プラグインは、MediaPipe の Face Landscapeer からの出力を条件画像として受け入れます。顔のランドマークは、1 つの顔の詳細な顔メッシュを提供し、顔の特徴の有無と位置をマッピングします。基盤モデルは、条件画像によって暗黙的に示される顔のマッピングを使用して、メッシュ上に新しい顔を生成します。
顔のランドマーク プラグインでは、条件画像を作成するための Face Landscapeer モデルバンドルも必要です。このモデルバンドルは、顔のランドマーク er タスクで使用されるバンドルと同じです。
顔のランドマーク プラグインには、次の設定オプションが含まれています。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
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 プラグインには、条件画像を作成するための深度推定モデルも必要です。
Depth プラグインには、次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
depthModelBaseOptions |
条件画像を作成するモデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
depthPluginModelBaseOptions |
プラグイン モデルのパスを設定する BaseOptions オブジェクト。 |
BaseOptions オブジェクト |
N/A |
LoRA によるカスタマイズ
LoRA を使用してモデルをカスタマイズすると、画像生成ツールで、トレーニング中に一意のトークンによって識別される特定のコンセプトに基づいて画像を生成できます。トレーニング後に新しい LoRA の重みを使用すると、テキスト プロンプトでトークンが指定されると、モデルは新しいコンセプトの画像を生成できます。
LoRA の重みを作成するには、特定のオブジェクト、人物、スタイルの画像で基盤モデルをトレーニングする必要があります。これにより、モデルは新しいコンセプトを認識し、画像の生成時に適用できるようになります。LoRa の重みを作成して特定の人物や顔の画像を生成する場合、このソリューションは、権限を与えられている人物の顔または顔にのみ使用してください。
以下は、DreamBooth データセットのティーポットの画像でトレーニングされたカスタム モデルの出力です。トレーニングには、トークン「monadikos teapot」を使用します。
プロンプト: 鏡の横にあるモナディコスのティーポット
カスタマイズされたモデルは、プロンプトでトークンを受け取り、LoRA の重みから学習したティーポットを挿入し、プロンプトで要求されたとおりに画像を鏡の横に配置します。
詳細については、カスタマイズ ガイドをご覧ください。このガイドでは、Vertex AI の Model Garden を使用して、LoRA の重みを基盤モデルに適用してモデルをカスタマイズします。