Diffusers documentation
Bria Fibo Edit
Bria Fibo Edit
Fibo Edit هو نموذج من صورة إلى صورة بـ 8 مليارات من المعاملات، يُقدّم نموذجًا جديدًا للتحكم المهيكّل، ويعمل على مدخلات JSON مقترنة بصور المصدر لتمكين سير عمل تحرير حتمي وقابل للتكرار. بفضل الأقنعة الأصلية (Native Masking) للدقة الدقيقة، يتجاوز النموذج الانتشار المبني على الأوامر النصية البسيطة ليقدّم تحكمًا صريحًا وقابلًا للتفسير، مُحسَّنًا للبيئات الإنتاجية. تم تصميم بنيته الخفيفة الوزن للتخصيص العميق، مما يمكّن الباحثين من بناء نماذج “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) — نموذج الترانسفورمر لنمذجة الانتشار ثنائي الأبعاد. - scheduler (
FlowMatchEulerDiscreteSchedulerأوKarrasDiffusionSchedulers) — المجدول الذي يُستخدم معtransformerلإزالة الضوضاء من الكمونيات المُرمّزة. - vae (
AutoencoderKLWan) — شبكة ترميز فك ترميز احتمالية (Variational Auto-Encoder) لتشفير الصور وفك تشفيرها إلى تمثيلات كامنة ومنها. - 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، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، فسيتم توليد كائن latents عن طريق الاستخراج باستخدام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
< 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) — مقياس التوجيه للتوجيه الحر من التصنيف. - 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-encode مرجع PIL واحد بحجمه الأصلي ثم حزمه كتيار رموز سياق التحرير.