FLUX.1-Kontext-dev:图像增强AI模型

用于根据文本指令增强图像的AI模型

目录

Black Forest Labs 已发布 FLUX.1-Kontext-dev,这是一款先进的图像到图像 AI 模型,它可以通过文本指令增强现有图像。

FLUX.1-dev 仅通过文本生成图像不同,FLUX.1-Kontext-dev 会同时使用输入图像和文本提示来创建修改版本,同时保留关键元素。

gopher on a bycicle 此图像展示了 FLUX.1-Kontext-dev 增强图像的能力。

原始的 Go 标志图像:

Gopher go logo

通过指令 this gopher rides on the bicycle on the hilly road 进行了转换。结果还不错,对吧?

什么是 FLUX.1-Kontext-dev?

FLUX.1-Kontext-dev 是专为 上下文图像生成和编辑 而设计的。主要功能包括:

  • 角色一致性:在多个场景中保留独特的元素(如角色或对象)
  • 局部编辑:仅修改图像的特定部分,而不会影响其他部分
  • 风格参考:在保持参考图像风格的同时生成新场景
  • 图像增强:根据文本指令转换图像

安装

先决条件

您需要:

  • 16GB+ 显存 的 GPU(推荐使用 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. 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
)

# 启用 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. 显存管理:如果显存有限,使用 enable_model_cpu_offload() 以节省显存
  2. 尺寸规划:请求为 16 的倍数的尺寸以减少调整
  3. 提示清晰度:在文本指令中具体说明以获得更好的结果
  4. 批量生成:生成多个变体(--n 4)以获得最佳结果
  5. 种子控制:使用手动种子以获得可重复的结果

限制

  • 非商业许可:商业用途需要商业许可
  • 硬件要求高:需要具有大量显存的 GPU
  • 尺寸限制:可能会自动调整尺寸
  • 处理时间:根据硬件不同,每张图像可能需要 10-15 分钟

有用的链接