Diffusers documentation

Flux

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Flux

LoRA MPS

Flux — это серия моделей генерации изображений по текстовому описанию, основанных на диффузионных трансформерах. Чтобы узнать больше о Flux, ознакомьтесь с оригинальной статьей в блоге от создателей Flux, компании Black Forest Labs.

Оригинальные контрольные точки модели Flux можно найти здесь. Исходный код для инференса доступен здесь.

Запуск Flux на потребительском оборудовании может быть довольно дорогим. Однако вы можете применить ряд оптимизаций, чтобы ускорить его работу и снизить потребление памяти. Подробнее об этом читайте в этом разделе. Кроме того, для повышения эффективности использования памяти Flux можно квантовать, что, однако, приведёт к увеличению задержки вывода. Дополнительную информацию см. в этой статье. Полный список ресурсов доступен в этом gist.

Кэширование также может ускорить инференс за счёт хранения и повторного использования промежуточных результатов.

Flux доступен в следующих вариантах:

тип моделиидентификатор модели
Дистилляция по временным шагамblack-forest-labs/FLUX.1-schnell
Дистилляция с наведениемblack-forest-labs/FLUX.1-dev
Заполнение Inpainting/Outpainting (с дистиллированным руководством)black-forest-labs/FLUX.1-Fill-dev
Canny Control (с дистиллированным руководством)black-forest-labs/FLUX.1-Canny-dev
Управление глубиной (с дистиллированным руководством)black-forest-labs/FLUX.1-Depth-dev
Canny Control (LoRA)black-forest-labs/FLUX.1-Canny-dev-lora
Управление глубиной (LoRA)black-forest-labs/FLUX.1-Depth-dev-lora
Redux (адаптер)black-forest-labs/FLUX.1-Redux-dev
Kontextblack-forest-labs/FLUX.1-kontext

Все контрольные точки имеют различное назначение, которое мы подробно описываем ниже.

Дистилляция по временным шагам

  • max_sequence_length не может превышать 256.
  • guidance_scale должен быть равен 0.
  • Поскольку это модель с дистилляцией по временным шагам, она выигрывает от меньшего количества шагов сэмплирования.
import torch
from diffusers import FluxPipeline

pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", dtype=torch.bfloat16)
pipe.enable_model_cpu_offload()

prompt = "A cat holding a sign that says hello world"
out = pipe(
    prompt=prompt,
    guidance_scale=0.,
    height=768,
    width=1360,
    num_inference_steps=4,
    max_sequence_length=256,
).images[0]
out.save("image.png")

Дистилляция с наведением

  • Вариант с дистилляцией guidance требует примерно 50 шагов сэмплирования для генерации хорошего качества.
  • Ограничений на max_sequence_length нет.
import torch
from diffusers import FluxPipeline

pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16)
pipe.enable_model_cpu_offload()

prompt = "a tiny astronaut hatching from an egg on the moon"
out = pipe(
    prompt=prompt,
    guidance_scale=3.5,
    height=768,
    width=1360,
    num_inference_steps=50,
).images[0]
out.save("image.png")

Заполнение Inpainting/Outpainting

  • Пайплайн Flux Fill не требует входного параметра strength, в отличие от обычных пайплайнов инпейнтинга.
  • Он поддерживает как inpainting, так и outpainting.
import torch
from diffusers import FluxFillPipeline
from diffusers.utils import load_image

image = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/cup.png")
mask = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/cup_mask.png")

repo_id = "black-forest-labs/FLUX.1-Fill-dev"
pipe = FluxFillPipeline.from_pretrained(repo_id, dtype=torch.bfloat16).to("cuda")  # or "mps", "xpu", "cpu"

image = pipe(
    prompt="a white paper cup",
    image=image,
    mask_image=mask,
    height=1632,
    width=1232,
    max_sequence_length=512,
    generator=torch.Generator("cpu").manual_seed(0)
).images[0]
image.save(f"output.png")

Canny Control

Примечание: black-forest-labs/Flux.1-Canny-dev не является моделью ControlNetModel. Модели ControlNet представляют собой отдельный компонент от UNet/Transformer, остатки которого добавляются к фактической базовой модели. Canny Control — это альтернативная архитектура, которая достигает практически тех же результатов, что и модель ControlNet, за счет поканального объединения с входным управляющим условием и обеспечения того, чтобы трансформер обучался управлению структурой, следуя условию как можно точнее.

# !pip install -U controlnet-aux
import torch
from controlnet_aux import CannyDetector
from diffusers import FluxControlPipeline
from diffusers.utils import load_image

pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-Canny-dev", dtype=torch.bfloat16).to("cuda")  # or "mps", "xpu", "cpu"

prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")

processor = CannyDetector()
control_image = processor(control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024)

image = pipe(
    prompt=prompt,
    control_image=control_image,
    height=1024,
    width=1024,
    num_inference_steps=50,
    guidance_scale=30.0,
).images[0]
image.save("output.png")

Управление Canny Control также возможно с использованием варианта LoRA этого условия. Использование выглядит следующим образом:

# !pip install -U controlnet-aux
import torch
from controlnet_aux import CannyDetector
from diffusers import FluxControlPipeline
from diffusers.utils import load_image

pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16).to("cuda")  # or "mps", "xpu", "cpu"
pipe.load_lora_weights("black-forest-labs/FLUX.1-Canny-dev-lora")

prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")

processor = CannyDetector()
control_image = processor(control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024)

image = pipe(
    prompt=prompt,
    control_image=control_image,
    height=1024,
    width=1024,
    num_inference_steps=50,
    guidance_scale=30.0,
).images[0]
image.save("output.png")

Управление глубиной

Примечание: black-forest-labs/Flux.1-Depth-dev — это не модель ControlNet. Модели ControlNetModel представляют собой отдельный компонент от UNet/Transformer, остатки которого добавляются к фактической базовой модели. Depth Control — это альтернативная архитектура, которая достигает практически тех же результатов, что и модель ControlNet, за счёт поканального объединения с входным управляющим условием и обеспечения того, чтобы трансформер обучался управлению структурой, следуя условию как можно точнее.

# !pip install git+https://github.com/huggingface/image_gen_aux
import torch
from diffusers import FluxControlPipeline, FluxTransformer2DModel
from diffusers.utils import load_image
from image_gen_aux import DepthPreprocessor

pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-Depth-dev", dtype=torch.bfloat16).to("cuda")  # or "mps", "xpu", "cpu"

prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")

processor = DepthPreprocessor.from_pretrained("LiheYoung/depth-anything-large-hf")
control_image = processor(control_image)[0].convert("RGB")

image = pipe(
    prompt=prompt,
    control_image=control_image,
    height=1024,
    width=1024,
    num_inference_steps=30,
    guidance_scale=10.0,
    generator=torch.Generator().manual_seed(42),
).images[0]
image.save("output.png")

Управление глубиной также возможно с использованием варианта LoRA этого условия. Использование выглядит следующим образом:

# !pip install git+https://github.com/huggingface/image_gen_aux
import torch
from diffusers import FluxControlPipeline, FluxTransformer2DModel
from diffusers.utils import load_image
from image_gen_aux import DepthPreprocessor

pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16).to("cuda")  # or "mps", "xpu", "cpu"
pipe.load_lora_weights("black-forest-labs/FLUX.1-Depth-dev-lora")

prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")

processor = DepthPreprocessor.from_pretrained("LiheYoung/depth-anything-large-hf")
control_image = processor(control_image)[0].convert("RGB")

image = pipe(
    prompt=prompt,
    control_image=control_image,
    height=1024,
    width=1024,
    num_inference_steps=30,
    guidance_scale=10.0,
    generator=torch.Generator().manual_seed(42),
).images[0]
image.save("output.png")

Redux

  • Пайплайн Flux Redux представляет собой адаптер для базовых моделей FLUX.1. Он может использоваться как с flux-dev, так и с flux-schnell для генерации изображений по образцу (image-to-image).
  • Сначала можно использовать FluxPriorReduxPipeline, чтобы получить prompt_embeds и pooled_prompt_embeds, а затем передать их в FluxPipeline для генерации изображений по образцу.
  • При использовании FluxPriorReduxPipeline с базовым пайплайном можно установить text_encoder=None и text_encoder_2=None в базовом пайплайне, чтобы сэкономить VRAM.
import torch
from diffusers import FluxPriorReduxPipeline, FluxPipeline
from diffusers.utils import load_image
device = "cuda"  # or "mps", "xpu", "cpu"
dtype = torch.bfloat16


repo_redux = "black-forest-labs/FLUX.1-Redux-dev"
repo_base = "black-forest-labs/FLUX.1-dev" 
pipe_prior_redux = FluxPriorReduxPipeline.from_pretrained(repo_redux, dtype=dtype).to(device)
pipe = FluxPipeline.from_pretrained(
    repo_base, 
    text_encoder=None,
    text_encoder_2=None,
    dtype=torch.bfloat16
).to(device)

image = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/style_ziggy/img5.png")
pipe_prior_output = pipe_prior_redux(image)
images = pipe(
    guidance_scale=2.5,
    num_inference_steps=50,
    generator=torch.Generator("cpu").manual_seed(0),
    **pipe_prior_output,
).images
images[0].save("flux-redux.png")

Kontext

Flux Kontext — это модель, которая позволяет управлять процессом генерации изображений в контексте, обеспечивая редактирование, доработку, пересветку, перенос стиля, кастомизацию персонажей и многое другое.

import torch
from diffusers import FluxKontextPipeline
from diffusers.utils import load_image

pipe = FluxKontextPipeline.from_pretrained(
    "black-forest-labs/FLUX.1-Kontext-dev", dtype=torch.bfloat16
)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png").convert("RGB")
prompt = "Make Pikachu hold a sign that says 'Black Forest Labs is awesome', yarn art style, detailed, vibrant colors"
image = pipe(
    image=image,
    prompt=prompt,
    guidance_scale=2.5,
    generator=torch.Generator().manual_seed(42),
).images[0]
image.save("flux-kontext.png")

Flux Kontext поставляется с проверщиком целостности, который следует запускать после этапа генерации изображения. Чтобы запустить проверщик, установите официальный репозиторий black-forest-labs/flux и добавьте следующий код:

from flux.content_filters import PixtralContentFilter

# ... pipeline invocation to generate images

integrity_checker = PixtralContentFilter(torch.device("cuda"))
image_ = np.array(image) / 255.0
image_ = 2 * image_ - 1
image_ = torch.from_numpy(image_).to("cuda", dtype=torch.float32).unsqueeze(0).permute(0, 3, 1, 2)
if integrity_checker.test_image(image_):
    raise ValueError("Your image has been flagged. Choose another prompt/image or try again.")

Kontext Inpainting

FluxKontextInpaintPipeline позволяет изменять изображение в пределах фиксированной маски. В настоящее время поддерживаются как текстовые условия, так и условия на основе опорного изображения.

только текст
условие на изображение
import torch
from diffusers import FluxKontextInpaintPipeline
from diffusers.utils import load_image

prompt = "Change the yellow dinosaur to green one"
img_url = (
    "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/dinosaur_input.jpeg?raw=true"
)
mask_url = (
    "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/dinosaur_mask.png?raw=true"
)

source = load_image(img_url)
mask = load_image(mask_url)

pipe = FluxKontextInpaintPipeline.from_pretrained(
    "black-forest-labs/FLUX.1-Kontext-dev", dtype=torch.bfloat16
)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

image = pipe(prompt=prompt, image=source, mask_image=mask, strength=1.0).images[0]
image.save("kontext_inpainting_normal.png")

Сочетание Flux Turbo LoRAs с Flux Control, Fill и Redux

Мы можем объединять Flux Turbo LoRAs с Flux Control и другими пайплайнами, такими как Fill и Redux, чтобы обеспечить инференс за несколько шагов. Пример ниже показывает, как это сделать для Flux Control LoRA для глубины и turbo LoRA из ByteDance/Hyper-SD.

from diffusers import FluxControlPipeline
from image_gen_aux import DepthPreprocessor
from diffusers.utils import load_image
from huggingface_hub import hf_hub_download
import torch

control_pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16)
control_pipe.load_lora_weights("black-forest-labs/FLUX.1-Depth-dev-lora", adapter_name="depth")
control_pipe.load_lora_weights(
    hf_hub_download("ByteDance/Hyper-SD", "Hyper-FLUX.1-dev-8steps-lora.safetensors"), adapter_name="hyper-sd"
)
control_pipe.set_adapters(["depth", "hyper-sd"], adapter_weights=[0.85, 0.125])
control_pipe.enable_model_cpu_offload()

prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")

processor = DepthPreprocessor.from_pretrained("LiheYoung/depth-anything-large-hf")
control_image = processor(control_image)[0].convert("RGB")

image = control_pipe(
    prompt=prompt,
    control_image=control_image,
    height=1024,
    width=1024,
    num_inference_steps=8,
    guidance_scale=10.0,
    generator=torch.Generator().manual_seed(42),
).images[0]
image.save("output.png")

Примечание об unload_lora_weights() при использовании Flux LoRAs

When unloading the Control LoRA weights, call pipe.unload_lora_weights(reset_to_overwritten_params=True) to reset the pipe.transformer completely back to its original form. The resultant pipeline can then be used with methods like DiffusionPipeline.from_pipe(). More details about this argument are available in this PR.

IP-Adapter

Ознакомьтесь с IP-Adapter, чтобы узнать больше о том, как работают IP-адаптеры.

IP-Adapter позволяет использовать изображения в качестве промпта для Flux наряду с текстовым промптом. Это особенно полезно, когда нужно описать сложные концепции, которые трудно передать только текстом, и у вас есть референсные изображения.

import torch
from diffusers import FluxPipeline
from diffusers.utils import load_image

pipe = FluxPipeline.from_pretrained(
    "black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16
).to("cuda")  # or "mps", "xpu", "cpu"

image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flux_ip_adapter_input.jpg").resize((1024, 1024))

pipe.load_ip_adapter(
    "XLabs-AI/flux-ip-adapter",
    weight_name="ip_adapter.safetensors",
    image_encoder_pretrained_model_name_or_path="openai/clip-vit-large-patch14"
)
pipe.set_ip_adapter_scale(1.0)

image = pipe(
    width=1024,
    height=1024,
    prompt="wearing sunglasses",
    negative_prompt="",
    true_cfg_scale=4.0,
    generator=torch.Generator().manual_seed(4444),
    ip_adapter_image=image,
).images[0]

image.save('flux_ip_adapter_output.jpg')
Примеры IP-Adapter с промптом «wearing sunglasses»

Оптимизация

Flux — очень большая модель, для загрузки всех компонентов моделирования требуется ~50 ГБ ОЗУ/Видеопамяти. Включите некоторые из оптимизаций ниже, чтобы снизить требования к памяти.

Групповая разгрузка

Групповая разгрузка снижает потребление VRAM за счёт разгрузки групп внутренних слоёв, а не всей модели или весов целиком. Необходимо применить apply_group_offloading() ко всем компонентам модели в конвейере. Параметр offload_type позволяет переключаться между разгрузкой на уровне блоков и на уровне листьев. Если установить его в значение leaf_level, то на CPU будут разгружаться параметры нижнего уровня (листья), а не модули целиком.

На устройствах CUDA, поддерживающих асинхронную передачу данных, установите use_stream=True, чтобы наложить передачу данных и вычисления друг на друга и ускорить инференс.

Возможно смешивать выгрузку на уровне блоков и на уровне листьев для разных компонентов в конвейере.

import torch
from diffusers import FluxPipeline
from diffusers.hooks import apply_group_offloading

model_id = "black-forest-labs/FLUX.1-dev"
dtype = torch.bfloat16
pipe = FluxPipeline.from_pretrained(
	model_id,
	dtype=dtype,
)

apply_group_offloading(
    pipe.transformer,
    offload_type="leaf_level",
    offload_device=torch.device("cpu"),
    onload_device=torch.device("cuda"),
    use_stream=True,
)
apply_group_offloading(
    pipe.text_encoder, 
    offload_device=torch.device("cpu"),
    onload_device=torch.device("cuda"),
    offload_type="leaf_level",
    use_stream=True,
)
apply_group_offloading(
    pipe.text_encoder_2, 
    offload_device=torch.device("cpu"),
    onload_device=torch.device("cuda"),
    offload_type="leaf_level",
    use_stream=True,
)
apply_group_offloading(
    pipe.vae, 
    offload_device=torch.device("cpu"),
    onload_device=torch.device("cuda"),
    offload_type="leaf_level",
    use_stream=True,
)

prompt="A cat wearing sunglasses and working as a lifeguard at pool."

generator = torch.Generator().manual_seed(181201)
image = pipe(
    prompt,
    width=576,
    height=1024,
    num_inference_steps=30,
    generator=generator
).images[0]
image

Запуск FP16-инференса

Flux может генерировать изображения высокого качества в формате FP16 (то есть для ускорения инференса на GPU Turing/Volta), но при этом результаты отличаются от тех, что получаются в FP32/BF16. Проблема в том, что при работе в FP16 некоторые активации в текстовых энкодерах необходимо ограничивать (clip), что влияет на итоговое изображение. Принудительный запуск текстовых энкодеров с инференсом в FP32 устраняет эту разницу в результатах. Подробности — здесь.

Код для инференса в FP16:

import torch
from diffusers import FluxPipeline

pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", dtype=torch.bfloat16) # can replace schnell with dev
# to run on low vram GPUs (i.e. between 4 and 32 GB VRAM)
pipe.enable_sequential_cpu_offload()
pipe.vae.enable_slicing()
pipe.vae.enable_tiling()

pipe.to(torch.float16) # casting here instead of in the pipeline constructor because doing so in the constructor loads all models into CPU memory at once

prompt = "A cat holding a sign that says hello world"
out = pipe(
    prompt=prompt,
    guidance_scale=0.,
    height=768,
    width=1360,
    num_inference_steps=4,
    max_sequence_length=256,
).images[0]
out.save("image.png")

Квантование

Квантование помогает снизить требования к памяти для очень больших моделей, храня веса модели в формате данных с меньшей точностью. Однако влияние квантования на качество видео может различаться в зависимости от используемой модели видео.

См. обзор Quantization, чтобы узнать больше о поддерживаемых бэкендах квантования и о том, как выбрать бэкенд, подходящий для вашей задачи. Пример ниже показывает, как загрузить квантованный FluxPipeline для инференса с помощью bitsandbytes.

import torch
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, FluxTransformer2DModel, FluxPipeline
from transformers import BitsAndBytesConfig as BitsAndBytesConfig, T5EncoderModel

quant_config = BitsAndBytesConfig(load_in_8bit=True)
text_encoder_8bit = T5EncoderModel.from_pretrained(
    "black-forest-labs/FLUX.1-dev",
    subfolder="text_encoder_2",
    quantization_config=quant_config,
    dtype=torch.float16,
)

quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
transformer_8bit = FluxTransformer2DModel.from_pretrained(
    "black-forest-labs/FLUX.1-dev",
    subfolder="transformer",
    quantization_config=quant_config,
    dtype=torch.float16,
)

pipeline = FluxPipeline.from_pretrained(
    "black-forest-labs/FLUX.1-dev",
    text_encoder_2=text_encoder_8bit,
    transformer=transformer_8bit,
    dtype=torch.float16,
    device_map="balanced",
)

prompt = "a tiny astronaut hatching from an egg on the moon"
image = pipeline(prompt, guidance_scale=3.5, height=768, width=1360, num_inference_steps=50).images[0]
image.save("flux.png")

Загрузка одного файла для FluxTransformer2DModel

Модель FluxTransformer2DModel поддерживает загрузку контрольных точек в исходном формате, поставляемом Black Forest Labs. Это также полезно при попытке загрузить дообученные или квантованные версии моделей, опубликованные сообществом.

FP8 inference может быть нестабильной в зависимости от типа GPU, версии CUDA и версии torch, которые вы используете. Рекомендуется использовать библиотеку optimum-quanto для запуска FP8 inference на вашем компьютере.

Следующий пример демонстрирует, как запустить Flux с менее чем 16 ГБ видеопамяти.

Сначала установите optimum-quanto

pip install optimum-quanto

Затем выполните следующий пример

import torch
from diffusers import FluxTransformer2DModel, FluxPipeline
from transformers import T5EncoderModel, CLIPTextModel
from optimum.quanto import freeze, qfloat8, quantize

bfl_repo = "black-forest-labs/FLUX.1-dev"
dtype = torch.bfloat16

transformer = FluxTransformer2DModel.from_single_file("https://huggingface.co/Kijai/flux-fp8/blob/main/flux1-dev-fp8.safetensors", dtype=dtype)
quantize(transformer, weights=qfloat8)
freeze(transformer)

text_encoder_2 = T5EncoderModel.from_pretrained(bfl_repo, subfolder="text_encoder_2", dtype=dtype)
quantize(text_encoder_2, weights=qfloat8)
freeze(text_encoder_2)

pipe = FluxPipeline.from_pretrained(bfl_repo, transformer=None, text_encoder_2=None, dtype=dtype)
pipe.transformer = transformer
pipe.text_encoder_2 = text_encoder_2

pipe.enable_model_cpu_offload()

prompt = "A cat holding a sign that says hello world"
image = pipe(
    prompt,
    guidance_scale=3.5,
    output_type="pil",
    num_inference_steps=20,
    generator=torch.Generator("cpu").manual_seed(0)
).images[0]

image.save("flux-fp8-dev.png")

FluxPipeline

класс diffusers.FluxPipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = None )

Параметры

  • transformer (FluxTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.
  • vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (CLIPTextModel) — CLIP, а именно вариант clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel) — T5, а именно вариант google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — токенизатор класса CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast) — Второй токенизатор класса T5TokenizerFast.

Пайплайн Flux для генерации изображений по тексту.

Ссылка: https://blackforestlabs.ai/announcing-black-forest-labs/

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonenegative_prompt: str | list[str] = Nonenegative_prompt_2: str | list[str] | None = Nonetrue_cfg_scale: float = 1.0height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 3.5num_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_ip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.flux.FluxPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
  • prompt_2 (str or list[str], необязательный) — Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2. Если не задан, вместо него будет использоваться prompt.
  • negative_prompt (str or list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, если true_cfg_scale не больше 1).
  • negative_prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения, передаваемые в tokenizer_2 и text_encoder_2. Если не задан, во всех текстовых кодировщиках используется negative_prompt.
  • true_cfg_scale (float, необязательный, по умолчанию 1.0) — True classifier-free guidance (масштаб руководства) включается, когда true_cfg_scale > 1 и предоставлен negative_prompt.
  • height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • num_inference_steps (int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • sigmas (list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргумент sigmas в их методе set_timesteps. Если не задано, будет использоваться поведение по умолчанию при передаче num_inference_steps.
  • guidance_scale (float, необязательный, по умолчанию 3,5) — Встроенный масштаб guidance включается при установке guidance_scale > 1. Более высокое значение guidance_scale поощряет модель генерировать изображения, более точно соответствующие prompt , в ущерб качеству изображения.

    Модели, полученные с помощью дистилляции guidance, аппроксимируют истинный classifer-free guidance для guidance_scale > 1. Подробнее см. в статье.

  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • ip_adapter_image — (PipelineImageInput, необязательный): Необязательное входное изображение для работы с IP-адаптерами.
  • ip_adapter_image_embeds (list[torch.Tensor], необязательный) — Предварительно сгенерированные эмбеддинги изображений для IP-Adapter. Должен представлять собой список, длина которого равна количеству IP-адаптеров. Каждый элемент должен быть тензором формы (batch_size, num_images, emb_dim). Если не указан, эмбеддинги вычисляются на основе входного аргумента ip_adapter_image.
  • negative_ip_adapter_image — (PipelineImageInput, необязательный): Необязательное изображение для работы с IP-адаптерами.
  • negative_ip_adapter_image_embeds (list[torch.Tensor], необязательный) — Предварительно сгенерированные эмбеддинги изображений для IP-Adapter. Должен представлять собой список, длина которого равна количеству IP-адаптеров. Каждый элемент должен быть тензором формы (batch_size, num_images, emb_dim). Если не указан, эмбеддинги вычисляются на основе входного аргумента ip_adapter_image.
  • negative_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргумента negative_prompt.
  • negative_pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передан, пул-эмбеддинги negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL: PIL.Image.Image или np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~pipelines.flux.FluxPipelineOutput вместо обычного кортежа.
  • joint_attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в модуле diffusers.models.attention_processor.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, необязательный) — Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса пайплайна.
  • max_sequence_length (int, по умолчанию 512) — максимальная длина последовательности, используемая с prompt.

Возвращает

~pipelines.flux.FluxPipelineOutput или tuple

~pipelines.flux.FluxPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import FluxPipeline

>>> pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "A cat holding a sign that says hello world"
>>> # Depending on the variant being used, the pipeline call will slightly vary.
>>> # Refer to the pipeline documentation for more details.
>>> image = pipe(prompt, num_inference_steps=4, guidance_scale=0.0).images[0]
>>> image.save("flux.png")

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 512lora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые передаются в tokenizer_2 и text_encoder_2. Если не задан, во всех text-encoders используется prompt
  • device — (torch.device): устройство torch
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • lora_scale (float, необязательный) — Масштаб LoRA, который будет применён ко всем слоям LoRA текстового кодировщика, если слои LoRA загружены.

FluxImg2ImgPipeline

класс diffusers.FluxImg2ImgPipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = None )

Параметры

  • transformer (FluxTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.
  • vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (CLIPTextModel) — CLIP, а именно вариант clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel) — T5, а именно вариант google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — токенизатор класса CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast) — Второй токенизатор класса T5TokenizerFast.

Пайплайн Flux для инпейнтинга изображений.

Ссылка: https://blackforestlabs.ai/announcing-black-forest-labs/

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonenegative_prompt: str | list[str] = Nonenegative_prompt_2: str | list[str] | None = Nonetrue_cfg_scale: float = 1.0image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 0.6num_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 7.0num_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_ip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.flux.FluxPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2. Если не задан, вместо него будет использоваться prompt
  • negative_prompt (str or list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, если true_cfg_scale не больше 1).
  • negative_prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения, передаваемые в tokenizer_2 и text_encoder_2. Если не задан, во всех текстовых кодировщиках используется negative_prompt.
  • true_cfg_scale (float, необязательный, по умолчанию 1.0) — True classifier-free guidance (масштаб руководства) включается, когда true_cfg_scale > 1 и предоставлен negative_prompt.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет [0, 1]. Если передан тензор или список тензоров, ожидаемая форма должна быть (B, C, H, W) или (C, H, W). Если передан массив numpy или список массивов, ожидаемая форма должна быть (B, H, W, C) или (H, W, C). Также можно передавать латенты изображений в качестве image, но при прямой передаче латентов они не кодируются повторно.
  • height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • strength (float, необязательный, по умолчанию 1.0) — Определяет степень трансформации исходного image. Значение должно находиться в диапазоне от 0 до 1. image используется как стартовая точка, и чем выше strength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когда strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Значение 1 по сути игнорирует image.
  • num_inference_steps (int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • sigmas (list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргумент sigmas в их методе set_timesteps. Если не задано, будет использоваться поведение по умолчанию при передаче num_inference_steps.
  • guidance_scale (float, необязательный, по умолчанию 7.0) — Масштаб руководства, определенный в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 статьи Imagen Paper. Масштаб руководства включается при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстом prompt, обычно за счет снижения качества изображения.
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • negative_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргумента negative_prompt.
  • negative_pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передан, пул-эмбеддинги negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
  • ip_adapter_image — (PipelineImageInput, необязательный): Необязательное входное изображение для работы с IP-адаптерами.
  • ip_adapter_image_embeds (list[torch.Tensor], необязательный) — Предварительно сгенерированные эмбеддинги изображений для IP-Adapter. Должен представлять собой список, длина которого равна количеству IP-адаптеров. Каждый элемент должен быть тензором формы (batch_size, num_images, emb_dim). Если не указан, эмбеддинги вычисляются на основе входного аргумента ip_adapter_image.
  • negative_ip_adapter_image — (PipelineImageInput, необязательный): Необязательное изображение для работы с IP-адаптерами.
  • negative_ip_adapter_image_embeds (list[torch.Tensor], необязательный) — Предварительно сгенерированные эмбеддинги изображений для IP-Adapter. Должен представлять собой список, длина которого равна количеству IP-адаптеров. Каждый элемент должен быть тензором формы (batch_size, num_images, emb_dim). Если не указан, эмбеддинги вычисляются на основе входного аргумента ip_adapter_image.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL: PIL.Image.Image или np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~pipelines.flux.FluxPipelineOutput вместо обычного кортежа.
  • joint_attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в модуле diffusers.models.attention_processor.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, необязательный) — Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса пайплайна.
  • max_sequence_length (int, по умолчанию 512) — максимальная длина последовательности, используемая с prompt.

Возвращает

~pipelines.flux.FluxPipelineOutput или tuple

~pipelines.flux.FluxPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch

>>> from diffusers import FluxImg2ImgPipeline
>>> from diffusers.utils import load_image

>>> device = "cuda"
>>> pipe = FluxImg2ImgPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16)
>>> pipe = pipe.to(device)

>>> url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
>>> init_image = load_image(url).resize((1024, 1024))

>>> prompt = "cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney, 8k"

>>> images = pipe(
...     prompt=prompt, image=init_image, num_inference_steps=4, strength=0.95, guidance_scale=0.0
... ).images[0]

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 512lora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые передаются в tokenizer_2 и text_encoder_2. Если не задан, во всех text-encoders используется prompt
  • device — (torch.device): устройство torch
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • lora_scale (float, необязательный) — Масштаб LoRA, который будет применён ко всем слоям LoRA текстового кодировщика, если слои LoRA загружены.

FluxInpaintPipeline

класс diffusers.FluxInpaintPipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = None )

Параметры

  • transformer (FluxTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.
  • vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (CLIPTextModel) — CLIP, а именно вариант clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel) — T5, а именно вариант google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — токенизатор класса CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast) — Второй токенизатор класса T5TokenizerFast.

Пайплайн Flux для инпейнтинга изображений.

Ссылка: https://blackforestlabs.ai/announcing-black-forest-labs/

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonenegative_prompt: str | list[str] = Nonenegative_prompt_2: str | list[str] | None = Nonetrue_cfg_scale: float = 1.0image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemasked_image_latents: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = Nonestrength: float = 0.6num_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 7.0num_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_ip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.flux.FluxPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2. Если не задан, вместо него будет использоваться prompt
  • negative_prompt (str or list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, если true_cfg_scale не больше 1).
  • negative_prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения, передаваемые в tokenizer_2 и text_encoder_2. Если не задан, во всех текстовых кодировщиках используется negative_prompt.
  • true_cfg_scale (float, необязательный, по умолчанию 1.0) — True classifier-free guidance (масштаб руководства) включается, когда true_cfg_scale > 1 и предоставлен negative_prompt.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет [0, 1]. Если передан тензор или список тензоров, ожидаемая форма должна быть (B, C, H, W) или (C, H, W). Если передан массив numpy или список массивов, ожидаемая форма должна быть (B, H, W, C) или (H, W, C). Также можно передавать латенты изображений в качестве image, но при прямой передаче латентов они не кодируются повторно.
  • mask_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений для маскирования image. Белые пиксели в маске перекрашиваются, а чёрные сохраняются. Если mask_image — это изображение PIL, оно преобразуется в один канал (яркость) перед использованием. Если это массив numpy или тензор pytorch, он должен содержать один цветовой канал (L) вместо трёх, поэтому ожидаемая форма для тензора pytorch — (B, 1, H, W), (B, H, W), (1, H, W), (H, W). А для массива numpy — (B, H, W, 1), (B, H, W), (H, W, 1) или (H, W).
  • masked_image_latents (torch.Tensor, list[torch.Tensor]) — Tensor, представляющий пакет изображений для маскирования image, сгенерированного VAE. Если не указано, тензор маскированных латентов будет сгенерирован с помощью mask_image.
  • height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • padding_mask_crop (int, необязательный, по умолчанию None) — Размер поля, которое добавляется при обрезке изображения и маски. Если None, обрезка не применяется к изображению и mask_image. Если padding_mask_crop не равно None, сначала находится прямоугольная область с тем же соотношением сторон, что и у изображения, содержащая всю замаскированную область, а затем эта область расширяется на величину padding_mask_crop. После этого изображение и mask_image обрезаются по расширенной области перед масштабированием до исходного размера изображения для inpainting. Это полезно, когда замаскированная область мала, а изображение велико и содержит информацию, не относящуюся к inpainting, например фон.
  • strength (float, необязательный, по умолчанию 1.0) — Определяет степень трансформации исходного image. Значение должно находиться в диапазоне от 0 до 1. image используется как стартовая точка, и чем выше strength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когда strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Значение 1 по сути игнорирует image.
  • num_inference_steps (int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • sigmas (list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргумент sigmas в их методе set_timesteps. Если не задано, будет использоваться поведение по умолчанию при передаче num_inference_steps.
  • guidance_scale (float, необязательный, по умолчанию 7.0) — Масштаб руководства, определенный в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 статьи Imagen Paper. Масштаб руководства включается при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстом prompt, обычно за счет снижения качества изображения.
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • negative_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргумента negative_prompt.
  • negative_pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передан, пул-эмбеддинги negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
  • ip_adapter_image — (PipelineImageInput, необязательный): Необязательное входное изображение для работы с IP-адаптерами.
  • ip_adapter_image_embeds (list[torch.Tensor], необязательный) — Предварительно сгенерированные эмбеддинги изображений для IP-Adapter. Должен представлять собой список, длина которого равна количеству IP-адаптеров. Каждый элемент должен быть тензором формы (batch_size, num_images, emb_dim). Если не указан, эмбеддинги вычисляются на основе входного аргумента ip_adapter_image.
  • negative_ip_adapter_image — (PipelineImageInput, необязательный): Необязательное изображение для работы с IP-адаптерами.
  • negative_ip_adapter_image_embeds (list[torch.Tensor], необязательный) — Предварительно сгенерированные эмбеддинги изображений для IP-Adapter. Должен представлять собой список, длина которого равна количеству IP-адаптеров. Каждый элемент должен быть тензором формы (batch_size, num_images, emb_dim). Если не указан, эмбеддинги вычисляются на основе входного аргумента ip_adapter_image.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL: PIL.Image.Image или np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~pipelines.flux.FluxPipelineOutput вместо обычного кортежа.
  • joint_attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в модуле diffusers.models.attention_processor.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, необязательный) — Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса пайплайна.
  • max_sequence_length (int, по умолчанию 512) — максимальная длина последовательности, используемая с prompt.

Возвращает

~pipelines.flux.FluxPipelineOutput или tuple

~pipelines.flux.FluxPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import FluxInpaintPipeline
>>> from diffusers.utils import load_image

>>> pipe = FluxInpaintPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "Face of a yellow cat, high resolution, sitting on a park bench"
>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
>>> source = load_image(img_url)
>>> mask = load_image(mask_url)
>>> image = pipe(prompt=prompt, image=source, mask_image=mask).images[0]
>>> image.save("flux_inpainting.png")

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 512lora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые передаются в tokenizer_2 и text_encoder_2. Если не задан, во всех text-encoders используется prompt
  • device — (torch.device): устройство torch
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • lora_scale (float, необязательный) — Масштаб LoRA, который будет применён ко всем слоям LoRA текстового кодировщика, если слои LoRA загружены.

FluxControlNetInpaintPipeline

класс diffusers.FluxControlNetInpaintPipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelcontrolnet: diffusers.models.controlnets.controlnet_flux.FluxControlNetModel | list[diffusers.models.controlnets.controlnet_flux.FluxControlNetModel] | tuple[diffusers.models.controlnets.controlnet_flux.FluxControlNetModel] | diffusers.models.controlnets.controlnet_flux.FluxMultiControlNetModel )

Параметры

  • transformer (FluxTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.
  • vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (CLIPTextModel) — CLIP, а именно вариант clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel) — T5, а именно вариант google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — токенизатор класса CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast) — Второй токенизатор класса T5TokenizerFast.

Пайплайн Flux controlnet для инпейнтинга.

Ссылка: https://blackforestlabs.ai/announcing-black-forest-labs/

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemasked_image_latents: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 0.6padding_mask_crop: int | None = Nonesigmas: list[float] | None = Nonenum_inference_steps: int = 28guidance_scale: float = 7.0control_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0control_mode: int | list[int] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 1.0num_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.flux.FluxPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения.
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2.
  • image (PIL.Image.Image или list[PIL.Image.Image] или torch.FloatTensor) — Изображение(я) для инпейнтинга.
  • mask_image (PIL.Image.Image или list[PIL.Image.Image] или torch.FloatTensor) — Маска(и) для использования при inpainting. Белые пиксели в маске будут перерисованы, а чёрные — сохранены.
  • masked_image_latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные латенты маскированного изображения.
  • control_image (PIL.Image.Image или list[PIL.Image.Image] или torch.FloatTensor) — Условие входа для ControlNet. Изображение, управляющее генерацией.
  • height (int, необязательный, по умолчанию self.default_sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях.
  • width (int, необязательный, по умолчанию self.default_sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях.
  • strength (float, необязательный, по умолчанию 0.6) — Концептуально указывает, насколько сильно следует инпейнтить замаскированную область. Должно быть в диапазоне от 0 до 1.
  • padding_mask_crop (int, необязательный) — Размер отступов, используемый при обрезке маски.
  • num_inference_steps (int, необязательный, по умолчанию 28) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • sigmas (list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргумент sigmas в их методе set_timesteps. Если не задано, будет использоваться поведение по умолчанию при передаче num_inference_steps.
  • guidance_scale (float, необязательный, по умолчанию 7.0) — Масштаб управления, как определено в Classifier-Free Diffusion Guidance.
  • control_guidance_start (float или list[float], необязательный, по умолчанию 0.0) — Доля от общего числа шагов, с которой ControlNet начинает применяться.
  • control_guidance_end (float или list[float], необязательный, по умолчанию 1.0) — Доля от общего числа шагов, на которой ControlNet прекращает применяться.
  • control_mode (int или list[int], необязательный) — Режим для ControlNet. Если используется несколько ControlNet, это должно быть список.
  • controlnet_conditioning_scale (float или list[float], необязательный, по умолчанию 1.0) — Выходы ControlNet умножаются на controlnet_conditioning_scale перед добавлением к остаточному соединению в исходном трансформере.
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или несколько генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные зашумленные латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Можно использовать, чтобы корректировать одну и ту же генерацию с помощью разных промптов.
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите между PIL.Image и np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~pipelines.flux.FluxPipelineOutput вместо обычного кортежа.
  • joint_attention_kwargs (dict, необязательный) — Дополнительные именованные аргументы, передаваемые в механизм совместного внимания.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса.
  • callback_on_step_end_tensor_inputs (list[str], необязательный) — Список тензорных входных данных для функции callback_on_step_end.
  • max_sequence_length (int, необязательный, по умолчанию 512) — Максимальная длина генерируемой последовательности.

Возвращает

~pipelines.flux.FluxPipelineOutput или tuple

~pipelines.flux.FluxPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import FluxControlNetInpaintPipeline
>>> from diffusers.models import FluxControlNetModel
>>> from diffusers.utils import load_image

>>> controlnet = FluxControlNetModel.from_pretrained(
...     "InstantX/FLUX.1-dev-controlnet-canny", torch_dtype=torch.float16
... )
>>> pipe = FluxControlNetInpaintPipeline.from_pretrained(
...     "black-forest-labs/FLUX.1-schnell", controlnet=controlnet, torch_dtype=torch.float16
... )
>>> pipe.to("cuda")

>>> control_image = load_image(
...     "https://huggingface.co/InstantX/FLUX.1-dev-Controlnet-Canny-alpha/resolve/main/canny.jpg"
... )
>>> init_image = load_image(
...     "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
... )
>>> mask_image = load_image(
...     "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
... )

>>> prompt = "A girl holding a sign that says InstantX"
>>> image = pipe(
...     prompt,
...     image=init_image,
...     mask_image=mask_image,
...     control_image=control_image,
...     control_guidance_start=0.2,
...     control_guidance_end=0.8,
...     controlnet_conditioning_scale=0.7,
...     strength=0.7,
...     num_inference_steps=28,
...     guidance_scale=3.5,
... ).images[0]
>>> image.save("flux_controlnet_inpaint.png")

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 512lora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые передаются в tokenizer_2 и text_encoder_2. Если не задан, во всех text-encoders используется prompt
  • device — (torch.device): устройство torch
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • lora_scale (float, необязательный) — Масштаб LoRA, который будет применён ко всем слоям LoRA текстового кодировщика, если слои LoRA загружены.

FluxControlNetImg2ImgPipeline

класс diffusers.FluxControlNetImg2ImgPipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelcontrolnet: diffusers.models.controlnets.controlnet_flux.FluxControlNetModel | list[diffusers.models.controlnets.controlnet_flux.FluxControlNetModel] | tuple[diffusers.models.controlnets.controlnet_flux.FluxControlNetModel] | diffusers.models.controlnets.controlnet_flux.FluxMultiControlNetModel )

Параметры

  • transformer (FluxTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.
  • vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (CLIPTextModel) — CLIP, а именно вариант clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel) — T5, а именно вариант google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — токенизатор класса CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast) — Второй токенизатор класса T5TokenizerFast.

Пайплайн Flux controlnet для генерации изображений по изображению.

Ссылка: https://blackforestlabs.ai/announcing-black-forest-labs/

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 0.6num_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 7.0control_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0control_mode: int | list[int] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 1.0num_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.flux.FluxPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения.
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2.
  • image (PIL.Image.Image или list[PIL.Image.Image] или torch.FloatTensor) — Изображение или список изображений, которые нужно изменить с помощью конвейера.
  • control_image (PIL.Image.Image или list[PIL.Image.Image] или torch.FloatTensor) — Условие входа для ControlNet. Изображение, управляющее генерацией.
  • height (int, необязательный, по умолчанию self.default_sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях.
  • width (int, необязательный, по умолчанию self.default_sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях.
  • strength (float, необязательный, по умолчанию 0.6) — Концептуально указывает, насколько сильно трансформировать исходное image. Значение должно быть в диапазоне от 0 до 1.
  • num_inference_steps (int, необязательный, по умолчанию 28) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • sigmas (list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргумент sigmas в их методе set_timesteps. Если не задано, будет использоваться поведение по умолчанию при передаче num_inference_steps.
  • guidance_scale (float, необязательный, по умолчанию 7.0) — Масштаб управления, как определено в Classifier-Free Diffusion Guidance.
  • control_mode (int или list[int], необязательный) — Режим для ControlNet. Если используется несколько ControlNet, это должно быть список.
  • controlnet_conditioning_scale (float или list[float], необязательный, по умолчанию 1.0) — Выходы ControlNet умножаются на controlnet_conditioning_scale перед добавлением к остаточному соединению в исходном трансформере.
  • control_guidance_start (float или list[float], необязательный, по умолчанию 0.0) — Доля от общего числа шагов, с которой ControlNet начинает применяться.
  • control_guidance_end (float или list[float], необязательный, по умолчанию 1.0) — Доля от общего числа шагов, на которой ControlNet прекращает применяться.
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или несколько генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные зашумленные латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Можно использовать, чтобы корректировать одну и ту же генерацию с помощью разных промптов.
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите между PIL.Image и np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~pipelines.flux.FluxPipelineOutput вместо обычного кортежа.
  • joint_attention_kwargs (dict, необязательный) — Дополнительные именованные аргументы, передаваемые в механизм совместного внимания.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса.
  • callback_on_step_end_tensor_inputs (list[str], необязательный) — Список тензорных входных данных для функции callback_on_step_end.
  • max_sequence_length (int, необязательный, по умолчанию 512) — Максимальная длина генерируемой последовательности.

Возвращает

~pipelines.flux.FluxPipelineOutput или tuple

~pipelines.flux.FluxPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import FluxControlNetImg2ImgPipeline, FluxControlNetModel
>>> from diffusers.utils import load_image

>>> device = "cuda" if torch.cuda.is_available() else "cpu"

>>> controlnet = FluxControlNetModel.from_pretrained(
...     "InstantX/FLUX.1-dev-Controlnet-Canny-alpha", torch_dtype=torch.bfloat16
... )

>>> pipe = FluxControlNetImg2ImgPipeline.from_pretrained(
...     "black-forest-labs/FLUX.1-schnell", controlnet=controlnet, torch_dtype=torch.float16
... )

>>> pipe.text_encoder.to(torch.float16)
>>> pipe.controlnet.to(torch.float16)
>>> pipe.to("cuda")

>>> control_image = load_image("https://huggingface.co/InstantX/SD3-Controlnet-Canny/resolve/main/canny.jpg")
>>> init_image = load_image(
...     "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
... )

>>> prompt = "A girl in city, 25 years old, cool, futuristic"
>>> image = pipe(
...     prompt,
...     image=init_image,
...     control_image=control_image,
...     control_guidance_start=0.2,
...     control_guidance_end=0.8,
...     controlnet_conditioning_scale=1.0,
...     strength=0.7,
...     num_inference_steps=2,
...     guidance_scale=3.5,
... ).images[0]
>>> image.save("flux_controlnet_img2img.png")

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 512lora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые передаются в tokenizer_2 и text_encoder_2. Если не задан, во всех text-encoders используется prompt
  • device — (torch.device): устройство torch
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • lora_scale (float, необязательный) — Масштаб LoRA, который будет применён ко всем слоям LoRA текстового кодировщика, если слои LoRA загружены.

FluxControlPipeline

класс diffusers.FluxControlPipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModel )

Параметры

  • transformer (FluxTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.
  • vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (CLIPTextModel) — CLIP, а именно вариант clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel) — T5, а именно вариант google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — токенизатор класса CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast) — Второй токенизатор класса T5TokenizerFast.

Конвейер Flux для управляемой генерации изображений по тексту с использованием условий на изображениях.

Справочник: https://bfl.ai/flux-1-tools

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 3.5num_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.flux.FluxPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2. Если не задан, вместо него будет использоваться prompt
  • control_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], list[np.ndarray], list[list[torch.Tensor]], list[list[np.ndarray]] или list[list[PIL.Image.Image]]): Условие входа ControlNet, задающее направление для unet при генерации. Если тип указан как torch.Tensor, значение передаётся в ControlNet без изменений. Также допускается изображение в формате PIL.Image.Image. Размеры выходного изображения по умолчанию совпадают с размерами image. Если переданы высота и/или ширина, image масштабируется соответственно. Если в init указано несколько ControlNet, изображения необходимо передавать в виде списка, чтобы каждый элемент списка мог быть корректно сгруппирован в батч для входа в один ControlNet.
  • height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • num_inference_steps (int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • sigmas (list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргумент sigmas в их методе set_timesteps. Если не задано, будет использоваться поведение по умолчанию при передаче num_inference_steps.
  • guidance_scale (float, необязательный, по умолчанию 3.5) — Масштаб встроенного руководства включается при установке guidance_scale > 1. Более высокое значение guidance_scale поощряет модель генерировать изображения, более точно соответствующие промпту, за счёт снижения качества изображения.

    Модели, полученные с помощью дистилляции guidance, аппроксимируют истинный classifier-free guidance для guidance_scale > 1. Подробнее см. в статье.

  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL: PIL.Image.Image или np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~pipelines.flux.FluxPipelineOutput вместо обычного кортежа.
  • joint_attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в модуле diffusers.models.attention_processor.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, необязательный) — Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса пайплайна.
  • max_sequence_length (int, по умолчанию 512) — максимальная длина последовательности, используемая с prompt.

Возвращает

~pipelines.flux.FluxPipelineOutput или tuple

~pipelines.flux.FluxPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from controlnet_aux import CannyDetector
>>> from diffusers import FluxControlPipeline
>>> from diffusers.utils import load_image

>>> pipe = FluxControlPipeline.from_pretrained(
...     "black-forest-labs/FLUX.1-Canny-dev", torch_dtype=torch.bfloat16
... ).to("cuda")

>>> prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
>>> control_image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png"
... )

>>> processor = CannyDetector()
>>> control_image = processor(
...     control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024
... )

>>> image = pipe(
...     prompt=prompt,
...     control_image=control_image,
...     height=1024,
...     width=1024,
...     num_inference_steps=50,
...     guidance_scale=30.0,
... ).images[0]
>>> image.save("output.png")

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 512lora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые передаются в tokenizer_2 и text_encoder_2. Если не задан, во всех text-encoders используется prompt
  • device — (torch.device): устройство torch
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • lora_scale (float, необязательный) — Масштаб LoRA, который будет применён ко всем слоям LoRA текстового кодировщика, если слои LoRA загружены.

FluxControlImg2ImgPipeline

класс diffusers.FluxControlImg2ImgPipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModel )

Параметры

  • transformer (FluxTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.
  • vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (CLIPTextModel) — CLIP, а именно вариант clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel) — T5, а именно вариант google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — токенизатор класса CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast) — Второй токенизатор класса T5TokenizerFast.

Пайплайн Flux для инпейнтинга изображений.

Ссылка: https://blackforestlabs.ai/announcing-black-forest-labs/

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 0.6num_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 7.0num_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.flux.FluxPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2. Если не задан, вместо него будет использоваться prompt
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет [0, 1]. Если передан тензор или список тензоров, ожидаемая форма должна быть (B, C, H, W) или (C, H, W). Если передан массив numpy или список массивов, ожидаемая форма должна быть (B, H, W, C) или (H, W, C). Также можно передавать латенты изображений в качестве image, но при прямой передаче латентов они не кодируются повторно.
  • control_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], list[np.ndarray], list[list[torch.Tensor]], list[list[np.ndarray]] или list[list[PIL.Image.Image]]): Условие входа ControlNet, задающее направление для unet при генерации. Если тип указан как torch.Tensor, значение передаётся в ControlNet без изменений. Также допускается изображение в формате PIL.Image.Image. Размеры выходного изображения по умолчанию совпадают с размерами image. Если переданы высота и/или ширина, image масштабируется соответственно. Если в init указано несколько ControlNet, изображения необходимо передавать в виде списка, чтобы каждый элемент списка мог быть корректно сгруппирован в батч для входа в один ControlNet.
  • height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • strength (float, необязательный, по умолчанию 1.0) — Определяет степень трансформации исходного image. Значение должно находиться в диапазоне от 0 до 1. image используется как стартовая точка, и чем выше strength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когда strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Значение 1 по сути игнорирует image.
  • num_inference_steps (int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • sigmas (list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргумент sigmas в их методе set_timesteps. Если не задано, будет использоваться поведение по умолчанию при передаче num_inference_steps.
  • guidance_scale (float, необязательный, по умолчанию 7.0) — Масштаб руководства, определенный в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 статьи Imagen Paper. Масштаб руководства включается при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстом prompt, обычно за счет снижения качества изображения.
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL: PIL.Image.Image или np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~pipelines.flux.FluxPipelineOutput вместо обычного кортежа.
  • joint_attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в модуле diffusers.models.attention_processor.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, необязательный) — Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса пайплайна.
  • max_sequence_length (int, по умолчанию 512) — максимальная длина последовательности, используемая с prompt.

Возвращает

~pipelines.flux.FluxPipelineOutput или tuple

~pipelines.flux.FluxPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from controlnet_aux import CannyDetector
>>> from diffusers import FluxControlImg2ImgPipeline
>>> from diffusers.utils import load_image

>>> pipe = FluxControlImg2ImgPipeline.from_pretrained(
...     "black-forest-labs/FLUX.1-Canny-dev", torch_dtype=torch.bfloat16
... ).to("cuda")

>>> prompt = "A robot made of exotic candies and chocolates of different kinds. Abstract background"
>>> image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/watercolor-painting.jpg"
... )
>>> control_image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png"
... )

>>> processor = CannyDetector()
>>> control_image = processor(
...     control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024
... )

>>> image = pipe(
...     prompt=prompt,
...     image=image,
...     control_image=control_image,
...     strength=0.8,
...     height=1024,
...     width=1024,
...     num_inference_steps=50,
...     guidance_scale=30.0,
... ).images[0]
>>> image.save("output.png")

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 512lora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые передаются в tokenizer_2 и text_encoder_2. Если не задан, во всех text-encoders используется prompt
  • device — (torch.device): устройство torch
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • lora_scale (float, необязательный) — Масштаб LoRA, который будет применён ко всем слоям LoRA текстового кодировщика, если слои LoRA загружены.

FluxPriorReduxPipeline

класс diffusers.FluxPriorReduxPipeline

< >

( image_encoder: SiglipVisionModelfeature_extractor: SiglipImageProcessorPilimage_embedder: ReduxImageEncodertext_encoder: CLIPTextModel = Nonetokenizer: CLIPTokenizer = Nonetext_encoder_2: T5EncoderModel = Nonetokenizer_2: T5Tokenizer = None )

Параметры

  • image_encoder (SiglipVisionModel) — модель зрения SIGLIP для кодирования входного изображения.
  • feature_extractor (SiglipImageProcessor) — Обработчик изображений для предобработки изображений для модели SIGLIP.
  • image_embedder (ReduxImageEncoder) — кодировщик изображений Redux для обработки эмбеддингов SIGLIP.
  • text_encoder (CLIPTextModel, необязательный) — CLIP, а именно вариант clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel, необязательный) — T5, а именно вариант google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer, необязательный) — токенизатор класса CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast, необязательный) — Второй токенизатор класса T5TokenizerFast.

Пайплайн Flux Redux для генерации изображений по изображению.

Справочник: https://blackforestlabs.ai/flux-1-tools/

__call__

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneprompt_embeds_scale: float | list[float] | None = 1.0pooled_prompt_embeds_scale: float | list[float] | None = 1.0return_dict: bool = True ) → ~pipelines.flux.FluxPriorReduxPipelineOutput or tuple

Параметры

  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет [0, 1]. Если это тензор или список тензоров, ожидаемая форма должна быть (B, C, H, W) или (C, H, W). Если это массив numpy или список массивов, ожидаемая форма должна быть (B, H, W, C) или (H, W, C)
  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. экспериментальная функция: чтобы использовать эту функцию, убедитесь, что текстовые энкодеры явно загружены в пайплайн. Промпты будут проигнорированы, если текстовые энкодеры не загружены.
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2.
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста.
  • prompt_embeds_scale (float или list[float], необязательный, по умолчанию 1.0) — Коэффициент масштабирования (или список коэффициентов для каждого изображения), применяемый к эмбеддингам промпта redux перед их возвратом.
  • pooled_prompt_embeds_scale (float или list[float], необязательный, по умолчанию 1.0) — Коэффициент масштабирования (или список коэффициентов для каждого изображения), применяемый к объединённым эмбеддингам промпта redux перед их возвратом.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать объект ~pipelines.flux.FluxPriorReduxPipelineOutput вместо обычного кортежа.

Возвращает

~pipelines.flux.FluxPriorReduxPipelineOutput или tuple

~pipelines.flux.FluxPriorReduxPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import FluxPriorReduxPipeline, FluxPipeline
>>> from diffusers.utils import load_image

>>> device = "cuda"
>>> dtype = torch.bfloat16

>>> repo_redux = "black-forest-labs/FLUX.1-Redux-dev"
>>> repo_base = "black-forest-labs/FLUX.1-dev"
>>> pipe_prior_redux = FluxPriorReduxPipeline.from_pretrained(repo_redux, torch_dtype=dtype).to(device)
>>> pipe = FluxPipeline.from_pretrained(
...     repo_base, text_encoder=None, text_encoder_2=None, torch_dtype=torch.bfloat16
... ).to(device)

>>> image = load_image(
...     "https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/style_ziggy/img5.png"
... )
>>> pipe_prior_output = pipe_prior_redux(image)
>>> images = pipe(
...     guidance_scale=2.5,
...     num_inference_steps=50,
...     generator=torch.Generator("cpu").manual_seed(0),
...     **pipe_prior_output,
... ).images
>>> images[0].save("flux-redux.png")

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 512lora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые передаются в tokenizer_2 и text_encoder_2. Если не задан, во всех text-encoders используется prompt
  • device — (torch.device): устройство torch
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • lora_scale (float, необязательный) — Масштаб LoRA, который будет применён ко всем слоям LoRA текстового кодировщика, если слои LoRA загружены.

FluxFillPipeline

класс diffusers.FluxFillPipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModel )

Параметры

  • transformer (FluxTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.
  • vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (CLIPTextModel) — CLIP, а именно вариант clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel) — T5, а именно вариант google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — токенизатор класса CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast) — Второй токенизатор класса T5TokenizerFast.

Пайплайн Flux Fill для инпейнтинга/аутпейнтинга изображений.

Справочник: https://blackforestlabs.ai/flux-1-tools/

__call__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Optional[torch.FloatTensor] = Nonemask_image: typing.Optional[torch.FloatTensor] = Nonemasked_image_latents: typing.Optional[torch.FloatTensor] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 1.0num_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float = 30.0num_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512 ) → ~pipelines.flux.FluxPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2. Если не задан, вместо него будет использоваться prompt
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет [0, 1]. Если это тензор или список тензоров, ожидаемая форма должна быть (B, C, H, W) или (C, H, W). Если это массив numpy или список массивов, ожидаемая форма должна быть (B, H, W, C) или (H, W, C).
  • mask_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений для маскирования image. Белые пиксели в маске перекрашиваются, а чёрные сохраняются. Если mask_image — это изображение PIL, оно преобразуется в один канал (яркость) перед использованием. Если это массив numpy или тензор pytorch, он должен содержать один цветовой канал (L) вместо трёх, поэтому ожидаемая форма для тензора pytorch — (B, 1, H, W), (B, H, W), (1, H, W), (H, W). А для массива numpy — (B, H, W, 1), (B, H, W), (H, W, 1) или (H, W).
  • masked_image_latents (torch.Tensor, list[torch.Tensor]) — Tensor, представляющий пакет изображений для маскирования image, сгенерированного VAE. Если не указано, тензор маскированных латентов будет сгенерирован с помощью mask_image.
  • height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • strength (float, необязательный, по умолчанию 1.0) — Определяет степень трансформации исходного image. Значение должно находиться в диапазоне от 0 до 1. image используется как стартовая точка, и чем выше strength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когда strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Значение 1 по сути игнорирует image.
  • num_inference_steps (int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • sigmas (list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргумент sigmas в их методе set_timesteps. Если не задано, будет использоваться поведение по умолчанию при передаче num_inference_steps.
  • guidance_scale (float, необязательный, по умолчанию 30.0) — Масштаб руководства, определенный в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 статьи Imagen Paper. Масштаб руководства включается при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстом prompt, обычно за счет снижения качества изображения.
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL: PIL.Image.Image или np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~pipelines.flux.FluxPipelineOutput вместо обычного кортежа.
  • joint_attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в модуле diffusers.models.attention_processor.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, необязательный) — Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса пайплайна.
  • max_sequence_length (int, по умолчанию 512) — максимальная длина последовательности, используемая с prompt.

Возвращает

~pipelines.flux.FluxPipelineOutput или tuple

~pipelines.flux.FluxPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import FluxFillPipeline
>>> from diffusers.utils import load_image

>>> image = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/cup.png")
>>> mask = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/cup_mask.png")

>>> pipe = FluxFillPipeline.from_pretrained("black-forest-labs/FLUX.1-Fill-dev", torch_dtype=torch.bfloat16)
>>> pipe.enable_model_cpu_offload()  # save some VRAM by offloading the model to CPU

>>> image = pipe(
...     prompt="a white paper cup",
...     image=image,
...     mask_image=mask,
...     height=1632,
...     width=1232,
...     guidance_scale=30,
...     num_inference_steps=50,
...     max_sequence_length=512,
...     generator=torch.Generator("cpu").manual_seed(0),
... ).images[0]
>>> image.save("flux_fill.png")

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 512lora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые передаются в tokenizer_2 и text_encoder_2. Если не задан, во всех text-encoders используется prompt
  • device — (torch.device): устройство torch
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • lora_scale (float, необязательный) — Масштаб LoRA, который будет применён ко всем слоям LoRA текстового кодировщика, если слои LoRA загружены.

FluxKontextPipeline

класс diffusers.FluxKontextPipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = None )

Параметры

  • transformer (FluxTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.
  • vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (CLIPTextModel) — CLIP, а именно вариант clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel) — T5, а именно вариант google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — токенизатор класса CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast) — Второй токенизатор класса T5TokenizerFast.

Пайплайн Flux Kontext для генерации изображений по изображению и по тексту.

Ссылка: https://bfl.ai/announcements/flux-1-kontext-dev

__call__

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneprompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonenegative_prompt: str | list[str] = Nonenegative_prompt_2: str | list[str] | None = Nonetrue_cfg_scale: float = 1.0height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 3.5num_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_ip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512max_area: int = 1048576_auto_resize: bool = True ) → ~pipelines.flux.FluxPipelineOutput or tuple

Параметры

  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений, который будет использоваться в качестве начальной точки. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет [0, 1]. Если передан тензор или список тензоров, ожидаемая форма должна быть (B, C, H, W) или (C, H, W). Если передан массив numpy или список массивов, ожидаемая форма должна быть (B, H, W, C) или (H, W, C). Также можно передавать латенты изображений в качестве image, но при прямой передаче латентов они не кодируются повторно.
  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
  • prompt_2 (str or list[str], необязательный) — Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2. Если не задан, вместо него будет использоваться prompt.
  • negative_prompt (str or list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, если true_cfg_scale не больше 1).
  • negative_prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения, передаваемые в tokenizer_2 и text_encoder_2. Если не задан, во всех текстовых кодировщиках используется negative_prompt.
  • true_cfg_scale (float, необязательный, по умолчанию 1.0) — Если значение больше 1.0 и указан negative_prompt, включает true classifier-free guidance.
  • height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • num_inference_steps (int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • sigmas (list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргумент sigmas в их методе set_timesteps. Если не задано, будет использоваться поведение по умолчанию при передаче num_inference_steps.
  • guidance_scale (float, необязательный, по умолчанию 3.5) — Масштаб встроенного руководства включается при установке guidance_scale > 1. Более высокое значение guidance_scale поощряет модель генерировать изображения, более точно соответствующие промпту, за счёт снижения качества изображения.

    Модели, полученные с помощью дистилляции guidance, аппроксимируют истинный classifier-free guidance для guidance_scale > 1. Подробнее см. в статье.

  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • ip_adapter_image — (PipelineImageInput, необязательный): Необязательное входное изображение для работы с IP-адаптерами.
  • ip_adapter_image_embeds (list[torch.Tensor], необязательный) — Предварительно сгенерированные эмбеддинги изображений для IP-Adapter. Должен представлять собой список, длина которого равна количеству IP-адаптеров. Каждый элемент должен быть тензором формы (batch_size, num_images, emb_dim). Если не указан, эмбеддинги вычисляются на основе входного аргумента ip_adapter_image.
  • negative_ip_adapter_image — (PipelineImageInput, необязательный): Необязательное изображение для работы с IP-адаптерами.
  • negative_ip_adapter_image_embeds (list[torch.Tensor], необязательный) — Предварительно сгенерированные эмбеддинги изображений для IP-Adapter. Должен представлять собой список, длина которого равна количеству IP-адаптеров. Каждый элемент должен быть тензором формы (batch_size, num_images, emb_dim). Если не указан, эмбеддинги вычисляются на основе входного аргумента ip_adapter_image.
  • negative_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргумента negative_prompt.
  • negative_pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передан, пул-эмбеддинги negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL: PIL.Image.Image или np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~pipelines.flux.FluxPipelineOutput вместо обычного кортежа.
  • joint_attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в модуле diffusers.models.attention_processor.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, необязательный) — Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса пайплайна.
  • max_sequence_length (int, по умолчанию 512) — Максимальная длина последовательности, используемая с prompt.
  • max_area (int, по умолчанию 1024 ** 2) — Максимальная площадь генерируемого изображения в пикселях. Высота и ширина будут скорректированы так, чтобы уложиться в эту площадь, сохраняя при этом соотношение сторон.
  • _auto_resize (bool, необязательный, по умолчанию True) — Определяет, следует ли автоматически изменять размер входного изображения до предпочтительных разрешений.

Возвращает

~pipelines.flux.FluxPipelineOutput или tuple

~pipelines.flux.FluxPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import FluxKontextPipeline
>>> from diffusers.utils import load_image

>>> pipe = FluxKontextPipeline.from_pretrained(
...     "black-forest-labs/FLUX.1-Kontext-dev", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")

>>> image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png"
... ).convert("RGB")
>>> prompt = "Make Pikachu hold a sign that says 'Black Forest Labs is awesome', yarn art style, detailed, vibrant colors"
>>> image = pipe(
...     image=image,
...     prompt=prompt,
...     guidance_scale=2.5,
...     generator=torch.Generator().manual_seed(42),
... ).images[0]
>>> image.save("output.png")

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 512lora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые передаются в tokenizer_2 и text_encoder_2. Если не задан, во всех text-encoders используется prompt
  • device — (torch.device): устройство torch
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • lora_scale (float, необязательный) — Масштаб LoRA, который будет применён ко всем слоям LoRA текстового кодировщика, если слои LoRA загружены.

FluxKontextInpaintPipeline

класс diffusers.FluxKontextInpaintPipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = None )

Параметры

  • transformer (FluxTransformer2DModel) — Архитектура условного Transformer (MMDiT) для удаления шума из закодированных латентов изображения.
  • scheduler (FlowMatchEulerDiscreteScheduler) — планировщик, используемый в связке с transformer для удаления шума из закодированных латентов изображения.
  • vae (AutoencoderKL) — Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (CLIPTextModel) — CLIP, а именно вариант clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel) — T5, а именно вариант google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — токенизатор класса CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast) — Второй токенизатор класса T5TokenizerFast.

Пайплайн Flux Kontext для генерации изображений по тексту.

Ссылка: https://blackforestlabs.ai/announcing-black-forest-labs/

__call__

< >

( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneimage_reference: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneprompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonenegative_prompt: str | list[str] = Nonenegative_prompt_2: str | list[str] | None = Nonetrue_cfg_scale: float = 1.0height: int | None = Nonewidth: int | None = Nonestrength: float = 1.0padding_mask_crop: int | None = Nonenum_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 3.5num_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_ip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 512max_area: int = 1048576_auto_resize: bool = True ) → ~pipelines.flux.FluxPipelineOutput or tuple

Параметры

  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений для инпейнтинга (какие части изображения следует замаскировать с помощью mask_image и перерисовать в соответствии с prompt и image_reference). Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет [0, 1]. Если передается тензор или список тензоров, ожидаемая форма должна быть (B, C, H, W) или (C, H, W). Если передается массив numpy или список массивов, ожидаемая форма должна быть (B, H, W, C) или (H, W, C). Также можно передавать латенты изображений в качестве image, но при прямой передаче латентов они не кодируются повторно.
  • image_reference (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений, используемый в качестве исходной точки для маскированной области. Для массивов numpy и тензоров pytorch ожидаемый диапазон значений составляет [0, 1]. Если это тензор или список тензоров, ожидаемая форма должна быть (B, C, H, W) или (C, H, W). Если это массив numpy или список массивов, ожидаемая форма должна быть (B, H, W, C) или (H, W, C). Также можно передавать латенты изображений в качестве image, но при прямой передаче латентов они не кодируются повторно.
  • mask_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений для маскирования image. Белые пиксели в маске перекрашиваются, а чёрные сохраняются. Если mask_image — это изображение PIL, оно преобразуется в один канал (яркость) перед использованием. Если это массив numpy или тензор pytorch, он должен содержать один цветовой канал (L) вместо трёх, поэтому ожидаемая форма для тензора pytorch — (B, 1, H, W), (B, H, W), (1, H, W), (H, W). А для массива numpy — (B, H, W, 1), (B, H, W), (H, W, 1) или (H, W).
  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
  • prompt_2 (str or list[str], необязательный) — Промпт или промпты, которые будут переданы в tokenizer_2 и text_encoder_2. Если не задан, вместо него будет использоваться prompt.
  • negative_prompt (str or list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется guidance (то есть игнорируется, если true_cfg_scale не больше 1).
  • negative_prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения, передаваемые в tokenizer_2 и text_encoder_2. Если не задан, во всех текстовых кодировщиках используется negative_prompt.
  • true_cfg_scale (float, необязательный, по умолчанию 1.0) — True classifier-free guidance (масштаб руководства) включается, когда true_cfg_scale > 1 и предоставлен negative_prompt.
  • height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Высота генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) — Ширина генерируемого изображения в пикселях. По умолчанию установлено значение 1024 для достижения наилучших результатов.
  • strength (float, необязательный, по умолчанию 1.0) — Определяет степень трансформации исходного image. Значение должно находиться в диапазоне от 0 до 1. image используется как стартовая точка, и чем выше strength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когда strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Значение 1 по сути игнорирует image.
  • padding_mask_crop (int, необязательный, по умолчанию None) — Размер поля, которое добавляется при обрезке изображения и маски. Если None, обрезка не применяется к изображению и mask_image. Если padding_mask_crop не равно None, сначала находится прямоугольная область с тем же соотношением сторон, что и у изображения, содержащая всю замаскированную область, а затем эта область расширяется на величину padding_mask_crop. После этого изображение и mask_image обрезаются по расширенной области перед масштабированием до исходного размера изображения для inpainting. Это полезно, когда замаскированная область мала, а изображение велико и содержит информацию, не относящуюся к inpainting, например фон.
  • num_inference_steps (int, необязательный, по умолчанию 50) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • sigmas (list[float], необязательный) — Пользовательские сигмы для процесса удаления шума в планировщиках, поддерживающих аргумент sigmas в их методе set_timesteps. Если не задано, будет использоваться поведение по умолчанию при передаче num_inference_steps.
  • guidance_scale (float, необязательный, по умолчанию 3,5) — Масштаб встроенного руководства включается при установке guidance_scale > 1. Более высокое значение guidance_scale поощряет модель генерировать изображения, более точно соответствующие prompt , в ущерб качеству изображения.

    Модели, полученные с помощью дистилляции guidance, аппроксимируют истинный classifier-free guidance для guidance_scale > 1. Подробнее см. в статье.

  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • ip_adapter_image — (PipelineImageInput, необязательный): Необязательное входное изображение для работы с IP-адаптерами.
  • ip_adapter_image_embeds (list[torch.Tensor], необязательный) — Предварительно сгенерированные эмбеддинги изображений для IP-Adapter. Должен представлять собой список, длина которого равна количеству IP-адаптеров. Каждый элемент должен быть тензором формы (batch_size, num_images, emb_dim). Если не указан, эмбеддинги вычисляются на основе входного аргумента ip_adapter_image.
  • negative_ip_adapter_image — (PipelineImageInput, необязательный): Необязательное изображение для работы с IP-адаптерами.
  • negative_ip_adapter_image_embeds (list[torch.Tensor], необязательный) — Предварительно сгенерированные эмбеддинги изображений для IP-Adapter. Должен представлять собой список, длина которого равна количеству IP-адаптеров. Каждый элемент должен быть тензором формы (batch_size, num_images, emb_dim). Если не указан, эмбеддинги вычисляются на основе входного аргумента ip_adapter_image.
  • negative_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные отрицательные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передано, negative_prompt_embeds будет сгенерировано из входного аргумента negative_prompt.
  • negative_pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные отрицательные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не передан, пул-эмбеддинги negative_prompt_embeds будут сгенерированы из входного аргумента negative_prompt.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL: PIL.Image.Image или np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~pipelines.flux.FluxPipelineOutput вместо обычного кортежа.
  • joint_attention_kwargs (dict, необязательный) — Словарь kwargs, который при указании передается в AttentionProcessor, определенный в self.processor в модуле diffusers.models.attention_processor.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, необязательный) — Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса пайплайна.
  • max_sequence_length (int, по умолчанию 512) — Максимальная длина последовательности, используемая с prompt.
  • max_area (int, по умолчанию 1024 ** 2) — Максимальная площадь генерируемого изображения в пикселях. Высота и ширина будут скорректированы так, чтобы уложиться в эту площадь, сохраняя при этом соотношение сторон.
  • _auto_resize (bool, необязательный, по умолчанию True) — Определяет, следует ли автоматически изменять размер входного изображения до предпочтительных разрешений.

Возвращает

~pipelines.flux.FluxPipelineOutput или tuple

~pipelines.flux.FluxPipelineOutput, если return_dict равно True, иначе tuple. При возврате кортежа первым элементом является список с сгенерированными изображениями.

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

Инпейнтинг только с текстом

>>> import torch
>>> from diffusers import FluxKontextInpaintPipeline
>>> from diffusers.utils import load_image

>>> prompt = "Change the yellow dinosaur to green one"
>>> img_url = (
...     "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/dinosaur_input.jpeg?raw=true"
... )
>>> mask_url = (
...     "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/dinosaur_mask.png?raw=true"
... )

>>> source = load_image(img_url)
>>> mask = load_image(mask_url)

>>> pipe = FluxKontextInpaintPipeline.from_pretrained(
...     "black-forest-labs/FLUX.1-Kontext-dev", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")

>>> image = pipe(prompt=prompt, image=source, mask_image=mask, strength=1.0).images[0]
>>> image.save("kontext_inpainting_normal.png")

Инпейнтинг с условием по изображению

>>> import torch
>>> from diffusers import FluxKontextInpaintPipeline
>>> from diffusers.utils import load_image

>>> pipe = FluxKontextInpaintPipeline.from_pretrained(
...     "black-forest-labs/FLUX.1-Kontext-dev", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")

>>> prompt = "Replace this ball"
>>> img_url = "https://images.pexels.com/photos/39362/the-ball-stadion-football-the-pitch-39362.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"
>>> mask_url = (
...     "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/ball_mask.png?raw=true"
... )
>>> image_reference_url = (
...     "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTah3x6OL_ECMBaZ5ZlJJhNsyC-OSMLWAI-xw&s"
... )

>>> source = load_image(img_url)
>>> mask = load_image(mask_url)
>>> image_reference = load_image(image_reference_url)

>>> mask = pipe.mask_processor.blur(mask, blur_factor=12)
>>> image = pipe(
...     prompt=prompt, image=source, mask_image=mask, image_reference=image_reference, strength=1.0
... ).images[0]
>>> image.save("kontext_inpainting_ref.png")

encode_prompt

< >

( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 512lora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • prompt_2 (str или list[str], необязательный) — Промпт или промпты, которые передаются в tokenizer_2 и text_encoder_2. Если не задан, во всех text-encoders используется prompt
  • device — (torch.device): устройство torch
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • pooled_prompt_embeds (torch.FloatTensor, необязательный) — Предварительно сгенерированные пул-эмбеддинги текста. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлено, пул-эмбеддинги текста будут сгенерированы из входного аргумента prompt.
  • lora_scale (float, необязательный) — Масштаб LoRA, который будет применён ко всем слоям LoRA текстового кодировщика, если слои LoRA загружены.
Update on GitHub