Diffusers documentation

Bria Fibo Edit

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

Bria Fibo Edit

Fibo Edit — это модель image-to-image с 8 млрд параметров, которая вводит новую парадигму структурированного управления, работая с JSON-вводами в паре с исходными изображениями для обеспечения детерминированных и воспроизводимых рабочих процессов редактирования. Благодаря нативному маскированию для точной детализации, модель выходит за рамки простого prompt-based диффузионного подхода, предлагая явное и интерпретируемое управление, оптимизированное для производственных сред. Его легкая архитектура спроектирована для глубокой кастомизации, позволяя исследователям создавать специализированные модели «Edit» для задач в конкретных областях, обеспечивая при этом эстетическое качество высшего уровня

См. страницу Bria Fibo Edit на Hugging Face, чтобы узнать больше. Доступен дистиллированный чекпоинт Fibo-Edit-1.5-turbo.

Использование

Модель доступна по запросу, поэтому перед её использованием с diffusers вам нужно перейти на страницу Bria Fibo Edit на Hugging Face, заполнить форму и принять условия доступа. После этого необходимо выполнить вход, чтобы система подтвердила, что вы приняли условия.

Используйте команду ниже для входа:

hf auth login

BriaFiboEditPipeline

класс diffusers.BriaFiboEditPipeline

< >

( transformer: BriaFiboTransformer2DModelscheduler: typing.Union[diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler, diffusers.schedulers.scheduling_utils.KarrasDiffusionSchedulers]vae: AutoencoderKLWantext_encoder: SmolLM3ForCausalLMtokenizer: AutoTokenizer )

Параметры

  • transformer (BriaFiboTransformer2DModel) — Модель трансформера для 2D-диффузионного моделирования.
  • scheduler (FlowMatchEulerDiscreteScheduler или KarrasDiffusionSchedulers) — планировщик, используемый вместе с transformer для удаления шума из закодированных латентов.
  • vae (AutoencoderKLWan) — Вариационный автоэнкодер для кодирования изображений в латентные представления и декодирования из них.
  • text_encoder (SmolLM3ForCausalLM) — Текстовый энкодер для обработки входных промптов.
  • tokenizer (AutoTokenizer) — Токенизатор, используемый для обработки входных текстовых промптов для text_encoder.

__call__

< >

( prompt: typing.Union[str, typing.List[str]] = Noneimage: typing.Union[PIL.Image.Image, typing.List[PIL.Image.Image], NoneType] = Nonemask: typing.Union[torch.FloatTensor, PIL.Image.Image, typing.List[PIL.Image.Image], typing.List[torch.FloatTensor], numpy.ndarray, typing.List[numpy.ndarray], NoneType] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 30timesteps: typing.List[int] = Noneseed: int | None = Noneguidance_scale: float = 5negative_prompt: typing.Union[str, typing.List[str], NoneType] = Nonenum_images_per_prompt: typing.Optional[int] = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneoutput_type: str = 'pil'return_dict: bool = Truejoint_attention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int, typing.Dict], NoneType]] = Nonecallback_on_step_end_tensor_inputs: typing.List[str] = ['latents']max_sequence_length: int = 3000do_patching = False_auto_resize: bool = True ) → ~pipelines.flux.BriaFiboPipelineOutput or tuple

Параметры

  • prompt (str или List[str]) — Промпт или промпты для управления генерацией изображения.
  • image (PIL.Image.Image или List[PIL.Image.Image], необязательный) — Одна или несколько опорных изображений для управления генерацией изображения. Список интерпретируется как несколько опорных изображений (а не как батч): каждое опорное изображение кодируется VAE с собственным соотношением сторон и размещается на собственной временной плоскости RoPE 1, 2, … . Если параметр не задан, конвейер генерирует изображение с нуля.
  • mask (PipelineMaskInput, необязательный) — Необязательная маска, определяющая область 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 для достижения наилучших результатов.
  • num_inference_steps (int, необязательный, по умолчанию 30) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • seed (int, необязательный) — Значение, используемое для обеспечения детерминированности генерации.
  • timesteps (List[int], необязательный) — Пользовательские шаги для процесса удаления шума с планировщиками, которые поддерживают аргумент timesteps в их методе set_timesteps. Если не задано, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.
  • guidance_scale (float, необязательный, по умолчанию 5.0) — Масштаб руководства, как определено в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 статьи Imagen Paper. Масштаб руководства включается при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстом prompt, обычно за счёт снижения качества изображения.
  • negative_prompt (str или List[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Игнорируется, если не используется направляющее влияние (то есть игнорируется, если guidance_scale меньше 1).
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • generator (torch.Generator или List[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.FloatTensor, необязательный) — Предварительно сгенерированные зашумленные латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Можно использовать, чтобы корректировать одну и ту же генерацию с разными промптами. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL: PIL.Image.Image или np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать объект ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput вместо простого кортежа.
  • 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, по умолчанию 3000) — максимальная длина последовательности, используемая с prompt.
  • do_patching (bool, необязательный, по умолчанию False) — Использовать ли патчинг.
  • _auto_resize (bool, необязательный, по умолчанию True) — Определяет, следует ли подгонять разрешение вывода по умолчанию (заимствованное из первого референсного изображения) к предпочтительным разрешениям.

Возвращает

~pipelines.flux.BriaFiboPipelineOutput или tuple

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

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

Пример:

import torch
from PIL import Image

from diffusers import BriaFiboEditPipeline
from diffusers.modular_pipelines import ModularPipelineBlocks

# This prompt-to-JSON block calls Gemini and needs GEMINI_API_KEY in the environment.
vlm_pipe = ModularPipelineBlocks.from_pretrained("briaai/FIBO-edit-gemini-prompt-to-JSON", trust_remote_code=True)
vlm_pipe = vlm_pipe.init_pipeline()

pipe = BriaFiboEditPipeline.from_pretrained(
    "briaai/Fibo-Edit-1.5-base",
    torch_dtype=torch.bfloat16,
)
pipe.to("cuda")

image = Image.open("owl.png")
json_prompt = vlm_pipe(image=image, prompt="Make the owl into a cat").values["json_prompt"]

result = pipe(prompt=json_prompt, image=image, num_inference_steps=30, guidance_scale=5)

# Multiple reference images: pass a list. Each reference conditions the edit at its
# own aspect ratio; the output resolution follows the first reference.
owl, forest = Image.open("owl.png"), Image.open("forest.png")
json_prompt = vlm_pipe(
    image=[owl, forest], prompt="Place the owl from the first image in the forest from the second image"
).values["json_prompt"]
result = pipe(
    prompt=json_prompt,
    image=[owl, forest],
    num_inference_steps=30,
    guidance_scale=5,
)

# The distilled Turbo checkpoint edits in 4 steps without classifier-free guidance.
pipe = BriaFiboEditPipeline.from_pretrained("briaai/Fibo-Edit-1.5-turbo", torch_dtype=torch.bfloat16)
pipe.to("cuda")
result = pipe(prompt=json_prompt, image=[owl, forest], num_inference_steps=4, guidance_scale=1)

encode_prompt

< >

( prompt: typing.Union[str, typing.List[str]]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1guidance_scale: float = 5negative_prompt: typing.Union[str, typing.List[str], NoneType] = Nonemax_sequence_length: int = 3000lora_scale: bool | None = None )

Параметры

  • prompt (str или List[str], необязательный) — промпт для кодирования
  • device — (torch.device): устройство torch
  • num_images_per_prompt (int) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • guidance_scale (float) — Масштаб направляющего сигнала для классификаторно-свободного направляющего сигнала (classifier free guidance).
  • negative_prompt (str или List[str], необязательный) — Промпт или промпты, которые не должны направлять генерацию изображения. Игнорируется, если не используется направляющее влияние (то есть игнорируется, если guidance_scale меньше 1).

prepare_reference_latents

< >

( image: Imagenum_channels_latents: intdtype: dtypedevice: devicedo_patching: bool = Falsereference_index: int = 1 )

VAE-кодирование одного эталонного изображения PIL в его собственном размере и упаковка в поток токенов контекста редактирования.

Update on GitHub