Buckets:

hf-doc-build/doc / diffusers /main /ar /api /pipelines /bria_fibo_edit.md
mishig's picture
|
download
raw
14.4 kB

Bria Fibo Edit

Fibo Edit هو نموذج من صورة إلى صورة بـ 8 مليارات من المعاملات، يُقدّم نموذجًا جديدًا للتحكم المهيكّل، ويعمل على مدخلات JSON مقترنة بصور المصدر لتمكين سير عمل تحرير حتمي وقابل للتكرار. ويتميز بـ masking أصلي للدقة الدقيقة، مما يتجاوز الانتشار المبني على الأوامر النصية البسيطة ليقدّم تحكمًا صريحًا وقابلًا للتفسير، مُحسَّنًا للبيئات الإنتاجية. صُممت بنيته الخفيفة الوزن للتخصيص العميق، مما يمكّن الباحثين من بناء نماذج "Edit" متخصصة للمهام المحددة لكل مجال، مع تقديم جودة جمالية من الطراز الأول.

راجع صفحة Bria Fibo Edit على Hugging Face لمعرفة المزيد. يتوفر نقطة تفتيش مُصغّرة في Fibo-Edit-1.5-turbo.

الاستخدام

بما أن النموذج محمي، فقبل استخدامه مع diffusers عليك أولاً الانتقال إلى صفحة Bria Fibo Edit على Hugging Face، وملء النموذج وقبول شروط الحماية. بعد الدخول، عليك تسجيل الدخول حتى يعرف نظامك أنك قد قبلت شروط الحماية.

استخدم الأمر أدناه لتسجيل الدخول:

hf auth login

BriaFiboEditPipeline[[diffusers.BriaFiboEditPipeline]]

diffusers.BriaFiboEditPipeline[[diffusers.BriaFiboEditPipeline]]

diffusers.BriaFiboEditPipeline(transformer: BriaFiboTransformer2DModel, scheduler: typing.Union[diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler, diffusers.schedulers.scheduling_utils.KarrasDiffusionSchedulers], vae: AutoencoderKLWan, text_encoder: SmolLM3ForCausalLM, tokenizer: AutoTokenizer)

المصدر

المعاملات:

transformer (BriaFiboTransformer2DModel) : نموذج الترانسفورمر لنمذجة الانتشار ثنائي الأبعاد.

scheduler (FlowMatchEulerDiscreteScheduler أو KarrasDiffusionSchedulers) : الجدولة المستخدمة مع transformer لإزالة الضوضاء من الكمونيات المُرمّزة.

vae (AutoencoderKLWan) : مُشفِّر ذاتي تبايني (Variational Auto-Encoder) لتشفير الصور وفك تشفيرها إلى تمثيلات كامنة ومنها.

text_encoder (SmolLM3ForCausalLM) : مُشفِّر للنصوص لمعالجة أوامر الإدخال.

tokenizer (AutoTokenizer) : مُعالِج النصوص (Tokenizer) المستخدم لمعالجة نصوص الإدخال (prompts) الخاصة بـ text_encoder.

call[[diffusers.BriaFiboEditPipeline.call]]

__call__(prompt: typing.Union[str, typing.List[str]] = None, image: typing.Union[PIL.Image.Image, typing.List[PIL.Image.Image], NoneType] = None, mask: typing.Union[torch.FloatTensor, PIL.Image.Image, typing.List[PIL.Image.Image], typing.List[torch.FloatTensor], numpy.ndarray, typing.List[numpy.ndarray], NoneType] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 30, timesteps: typing.List[int] = None, seed: int | None = None, guidance_scale: float = 5, negative_prompt: typing.Union[str, typing.List[str], NoneType] = None, num_images_per_prompt: typing.Optional[int] = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, output_type: str = 'pil', return_dict: bool = True, joint_attention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int, typing.Dict], NoneType]] = None, callback_on_step_end_tensor_inputs: typing.List[str] = ['latents'], max_sequence_length: int = 3000, do_patching = False, _auto_resize: bool = True)

المصدر

المعاملات:

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 بدلاً من tuple عادي.

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، اختياري) : قائمة مدخلات المصفوفات (tensors) لدالة callback_on_step_end. سيتم تمرير المصفوفات المحددة في القائمة كحجة callback_kwargs. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية ._callback_tensor_inputs لفئة خط الأنابيب (pipeline) الخاص بك.

max_sequence_length (int الافتراضي 3000) : أقصى طول تسلسل يُستخدم مع prompt.

do_patching (bool، اختياري، الافتراضي False) : ما إذا كان سيتم استخدام التصحيح (patching).

_auto_resize (bool، اختياري، القيمة الافتراضية True) : ما إذا كان يجب تقريب دقة الإخراج الافتراضية (المأخوذة من صورة المرجع الأولى) إلى الدقات المفضلة.

يعيد: ~pipelines.flux.BriaFiboPipelineOutput أو tuple

~pipelines.flux.BriaFiboPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع 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[[diffusers.BriaFiboEditPipeline.encode_prompt]]

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

المصدر

المعاملات:

prompt (str أو List[str]، اختياري) : النص الذي سيتم ترميزه

device : (torch.device): جهاز torch

num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه

guidance_scale (float) : مقياس التوجيه للتوجيه الحر من التصنيف.

negative_prompt (str أو List[str]، اختياري) : الأمر أو الأوامر التي لا ينبغي أن توجه توليد الصورة. يتم تجاهلها عند عدم استخدام التوجيه (أي يتم تجاهلها إذا كان guidance_scale أقل من 1).

prepare_reference_latents[[diffusers.BriaFiboEditPipeline.prepare_reference_latents]]

prepare_reference_latents(image: Image, num_channels_latents: int, dtype: dtype, device: device, do_patching: bool = False, reference_index: int = 1)

المصدر

VAE-encode مرجع PIL واحد بحجمه الأصلي ثم حزمه كتيار رموز سياق التحرير.

Xet Storage Details

Size:
14.4 kB
·
Xet hash:
4bf6a75245facadea14f983db5adea706b311f26244eeebe0ff58b05ff306d9b

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.