Diffusers documentation

Bria Fibo Edit

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