画像生成ガイド

画像生成タスク

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

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

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

使ってみる

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

タスクの詳細

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

機能

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

  1. テキスト画像変換 - テキスト プロンプトを使用して画像を生成します。
  2. 条件画像を使用した画像生成 - テキスト プロンプトと参照画像を使用して画像を生成します。Image Generator は、ControlNet と同様の方法で条件画像を使用します。
  3. 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 プラグイン

提供された条件画像と、レンガの強いアウトラインとプロンプトを使用する 2 つの生成画像の出力例

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 プラグイン

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

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 プラグイン

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

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 での LoRA

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