Diffusers documentation
Bria Fibo Edit
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
< source >( 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__
< source >( 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
< source >( 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
< source >( image: Imagenum_channels_latents: intdtype: dtypedevice: devicedo_patching: bool = Falsereference_index: int = 1 )
VAE-кодирование одного эталонного изображения PIL в его собственном размере и упаковка в поток токенов контекста редактирования.