画像生成ガイド

画像生成ツールのタスク

MediaPipe Image Generator タスクを使用すると、テキスト プロンプトに基づいて画像を生成できます。このタスクでは、テキストから画像へのモデルを使用して、拡散手法で画像を生成します。

このタスクは、テキスト プロンプトを入力として受け取り、モデルが補強して生成の参照として使用できる条件画像(省略可)も受け取ります。条件付きテキストから画像への生成の詳細については、条件付きテキストから画像への生成用のオンデバイス拡散プラグインをご覧ください。

Image Generator は、トレーニングまたは再トレーニング中にモデルに提供された特定のコンセプトに基づいて画像を生成することもできます。詳細については、LoRA でカスタマイズするをご覧ください。

使ってみる

このタスクを使用するには、対象プラットフォーム向けの次のいずれかの実装ガイドに沿って操作します。これらのプラットフォーム固有のガイドでは、デフォルト モデルと推奨構成オプションを使用するコード例を使用して、このタスクの基本的な実装について説明します。

タスクの詳細

このセクションでは、このタスクの機能、入力、出力、構成オプションについて説明します。

機能

画像生成ツールを使用すると、次のことができます。

  1. テキストから画像の生成 - テキスト プロンプトを使用して画像を生成します。
  2. 条件画像による画像生成 - テキスト プロンプトと参照画像を使用して画像を生成します。Image Generator は、ControlNet と同様に条件画像を使用します。
  3. 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 プラグインをダウンロード

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 エッジ検出機能をご覧ください。

顔のランドマーク プラグイン

スケッチされた顔の提供された条件画像と 2 つの異なるプロンプトを使用して生成された 2 つの画像の出力例。同じ条件画像を使用して、非常に異なる外観の画像を生成できることを示しています

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

これらの構成オプションの仕組みについて詳しくは、顔ランドマークタスクをご覧ください。

深度プラグイン

生成された 2 つの画像の出力例。車の一般的な形状を示す提供された条件画像を使用して、Depth プラグインで平坦な画像に奥行きを追加する画像を作成できることを示しています。

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 を使用した LoRA

詳細については、カスタマイズ ガイドをご覧ください。Vertex AI の Model Garden を使用して、基盤モデルに LoRA 重みを適用してモデルをカスタマイズします。