画像生成ガイド

画像生成ツールタスク

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

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

画像生成ツールは、トレーニングまたは再トレーニング中にモデルに提供された特定のコンセプトに基づいて画像を生成することもできます。詳細については、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 が開発したもので、基盤モデルと組み合わせて使用する必要があります。プラグイン モデルを使用すると、Image Generator でテキスト プロンプトとともに条件画像をインプットとして受け取ることができるため、生成された画像の構造を制御できます。このプラグイン モデルは、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 は、1 つの顔の詳細な顔メッシュを提供し、顔の特徴の存在と位置をマッピングします。基盤モデルは、条件画像で示される顔のマッピングを使用して、メッシュ上に新しい顔を生成します。

顔のランドマーク プラグインをダウンロードする

顔のランドマーク プラグインでは、条件画像を作成するために顔のランドマーク モデルバンドルも必要です。このモデルバンドルは、顔ランドマーク検出タスクで使用されるバンドルと同じです。

顔のランドマーク モデル バンドルをダウンロードする

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

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

奥行きプラグイン

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

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 重みを適用してモデルをカスタマイズします。