FLUX.1-Kontext-dev: 画像拡張AIモデル

テキスト指示を使って画像を拡張するためのAIモデル

目次

ブラックフォレスト・ラボズは、FLUX.1-Kontext-devという高度な画像から画像へのAIモデルをリリースしました。このモデルは、テキストの指示を使って既存の画像を補強します。

FLUX.1-devとは異なり、FLUX.1-Kontext-devは入力画像とテキストのプロンプトの両方を使って、重要な要素を保持しながら画像を変更したバージョンを作成します。

gopher on a bycicle この画像は、FLUX.1-Kontext-devが画像を補強する能力を示しています。

オリジナルのGoのマスコット画像:

Gopher go logo

は、「このゴッパは山間の道を自転車に乗っている」という指示を使って変換されました。なかなか良い結果ではありませんか?

FLUX.1-Kontext-devとは?

FLUX.1-Kontext-devは、文脈に応じた画像生成と編集のために設計されています。主な特徴は以下の通りです:

  • キャラクターの一貫性: 複数のシーンにわたってユニークな要素(キャラクターやオブジェクトなど)を保持
  • 局所的な編集: 画像の一部を変更しつつ、他の部分には影響を与えない
  • スタイルの参照: 参考画像のスタイルを保持しつつ、新しいシーンを生成
  • 画像の補強: テキストの指示に基づいて画像を変換

インストール

事前準備

以下のものを用意する必要があります:

  • 16GB以上のVRAM(NVIDIA RTXが推奨)
  • Python 3.8以上とpip
  • Hugging Faceへのアクセス(アカウントとトークン)

セットアップ手順

  1. Hugging Faceのアカウントを作成していない場合は、huggingface.coにアクセスしてください。

  2. モデルのページへアクセス: https://huggingface.co/black-forest-labs/FLUX.1-Kontext-dev

  3. ライセンス契約書に同意(非商用利用のみ)

  4. Writeアクセス用トークンを作成: https://huggingface.co/settings/tokens

  5. モデルをダウンロード:

git clone https://huggingface.co/black-forest-labs/FLUX.1-Kontext-dev

またはコード内で直接モデルパスを使用することも可能です。

インストール

必要なPythonパッケージをインストールします:

pip install -U diffusers torch transformers pillow accelerate sentencepiece

またはuvを使用する場合:

cd tools/fkon
uv sync

使い方

基本的なPythonスクリプト

FLUX.1-Kontext-devを使用する完全な例です:

import torch
from diffusers import FluxKontextPipeline
from PIL import Image

# モデルの読み込み
model_path = "/path/to/FLUX.1-Kontext-dev"
pipe = FluxKontextPipeline.from_pretrained(
    model_path, 
    torch_dtype=torch.bfloat16
)

# VRAMを節約するためにCPUオフロードを有効にする
pipe.enable_model_cpu_offload()
pipe.enable_sequential_cpu_offload()

# 入力画像の読み込み
input_image = Image.open("path/to/your/image.png").convert("RGB")

# 補強用のプロンプトの定義
prompt = "this gopher rides on the bicycle on the hilly road"

# 補強画像の生成
result = pipe(
    prompt=prompt,
    image=input_image,
    height=496,
    width=680,
    guidance_scale=3.5,
    num_inference_steps=60,
    max_sequence_length=512,
    generator=torch.Generator("cpu").manual_seed(42)
)

# 結果の保存
output_image = result.images[0]
output_image.save("augmented_image.jpg")

次元の処理

FLUX.1-Kontext-devには特定の次元要件があります:

  • 16の倍数: 次元は16の倍数である必要があります
  • 自動調整: モデルは必要に応じて次元を調整することがあります
  • 出力のリサイズ: ツールは自動的にリクエストされた次元に戻して出力します

ツールは以下の手順で処理します:

  1. リクエストされた次元を16の倍数に丸めます
  2. 入力画像を丸めた次元にリサイズします
  3. 画像を生成(モデルがさらに調整する可能性があります)
  4. 出力をリクエストされた次元に戻してリサイズします

例の使用ケース

  1. キャラクターの変換

キャラクターを変換しつつ一貫性を保つ:

prompt = "this gopher rides on the bicycle on the hilly road"
  1. 不要なオブジェクトの削除

不要な要素を削除する:

prompt = "please remove the human dressed as minnie mouse from this photo"

ヒントとベストプラクティス

  1. VRAMの管理: VRAMが限られている場合はenable_model_cpu_offload()を使用してください
  2. 次元の計画: 16の倍数の次元をリクエストすることで調整を最小限に抑えられます
  3. プロンプトの明確さ: テキストの指示を具体的にすることで、より良い結果が得られます
  4. バッチ生成: 複数のバリエーション(--n 4)を生成して、最適な結果を得ましょう
  5. シードの制御: 再現可能な結果を得るために手動でシードを使用してください

制限事項

  • 非商用ライセンス: 事業利用には商用ライセンスが必要です
  • ハードウェア依存: 大規模なVRAMを持つ強力なGPUが必要です
  • 次元の制約: 次元が自動的に調整されることがあります
  • 処理時間: ハードウェアによっては10〜15分かかることがあります

有用なリンク