Buckets:
Flux
Flux هو سلسلة من نماذج توليد الصور من النص تعتمد على محولات الانتشار. لمعرفة المزيد عن Flux، راجع المنشور الأصلي على المدونة من قبل مبتكري Flux، وهم Black Forest Labs.
يمكن العثور على نقاط التفتيش الأصلية لنموذج Flux هنا. ويمكن العثور على كود الاستدلال الأصلي هنا.
قد يكون تشغيل Flux مكلفًا إلى حد كبير على أجهزة العتاد الاستهلاكي. ومع ذلك، يمكنك تنفيذ مجموعة من التحسينات لتشغيله بشكل أسرع وبطريقة أكثر كفاءة في استخدام الذاكرة. راجع هذا القسم لمزيد من التفاصيل. بالإضافة إلى ذلك، يمكن أن يستفيد Flux من التكميم (Quantization) لتحسين كفاءة الذاكرة مقابل زيادة في زمن الاستدلال (Inference Latency). راجع هذا المنشور على المدونة لمعرفة المزيد. للحصول على قائمة شاملة بالموارد، راجع هذا الملخص (Gist).
يمكن أن يسرّع التخزين المؤقت الاستدلال أيضًا من خلال تخزين المخرجات الوسيطة وإعادة استخدامها.
يتوفر Flux في المتغيرات التالية:
| نوع النموذج | معرف النموذج |
|---|---|
| مُقطَّرة الخطوات الزمنية | black-forest-labs/FLUX.1-schnell |
| المُقطَّرة بالإرشاد | black-forest-labs/FLUX.1-dev |
| تعبئة Inpainting/Outpainting (مُقطّرة التوجيه) | black-forest-labs/FLUX.1-Fill-dev |
| التحكم القاني (مُقطّر التوجيه) | black-forest-labs/FLUX.1-Canny-dev |
| التحكم في العمق (مُقطّر التوجيه) | black-forest-labs/FLUX.1-Depth-dev |
| التحكم Canny (LoRA) | black-forest-labs/FLUX.1-Canny-dev-lora |
| التحكم في العمق (LoRA) | black-forest-labs/FLUX.1-Depth-dev-lora |
| Redux (مُكيّف) | black-forest-labs/FLUX.1-Redux-dev |
| Kontext | black-forest-labs/FLUX.1-kontext |
تختلف جميع نقاط التفتيش في طريقة الاستخدام، ونفصّل ذلك أدناه.
مُقطَّرة الخطوات الزمنية
max_sequence_lengthلا يمكن أن يتجاوز 256.- يجب أن يكون
guidance_scaleمساوياً لـ 0. - بما أن هذا نموذج مُقطّر على مستوى الخطوات الزمنية، فإنه يستفيد من عدد أقل من خطوات العينة.
import torch
from diffusers import FluxPipeline
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", dtype=torch.bfloat16)
pipe.enable_model_cpu_offload()
prompt = "A cat holding a sign that says hello world"
out = pipe(
prompt=prompt,
guidance_scale=0.,
height=768,
width=1360,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
out.save("image.png")
المُقطَّرة بالإرشاد
- يتطلب المتغير المُقطّر بالإرشاد حوالي 50 خطوة أخذ عينات للحصول على توليد بجودة جيدة.
- لا يحتوي على أي قيود حول
max_sequence_length.
import torch
from diffusers import FluxPipeline
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16)
pipe.enable_model_cpu_offload()
prompt = "a tiny astronaut hatching from an egg on the moon"
out = pipe(
prompt=prompt,
guidance_scale=3.5,
height=768,
width=1360,
num_inference_steps=50,
).images[0]
out.save("image.png")
ملء إعادة التلوين/إضافة التلوين
- Flux Fill pipeline لا تتطلب
strengthكمدخل مثل خطوط أنابيب التلوين الداخلي العادية. - يدعم كلًا من إعادة التلوين (Inpainting) والتوسيع (Outpainting).
import torch
from diffusers import FluxFillPipeline
from diffusers.utils import load_image
image = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/cup.png")
mask = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/cup_mask.png")
repo_id = "black-forest-labs/FLUX.1-Fill-dev"
pipe = FluxFillPipeline.from_pretrained(repo_id, dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"
image = pipe(
prompt="a white paper cup",
image=image,
mask_image=mask,
height=1632,
width=1232,
max_sequence_length=512,
generator=torch.Generator("cpu").manual_seed(0)
).images[0]
image.save(f"output.png")
التحكم Canny
ملاحظة: black-forest-labs/Flux.1-Canny-dev ليس نموذج ControlNetModel. نماذج ControlNet هي مكوّن منفصل عن UNet/Transformer، حيث تضاف بقاياها (residuals) إلى النموذج الأساسي الفعلي. أما Canny Control فهي بنية بديلة تحقق نتائج فعّالة مماثلة لما كانت ستحققه نماذج ControlNet، وذلك من خلال استخدام الدمج على مستوى القنوات (channel-wise concatenation) مع شرط التحكم في المدخلات، وضمان أن يتعلم المحوّل (transformer) التحكم في البنية عن طريق اتباع الشرط بأقرب قدر ممكن.
# !pip install -U controlnet-aux
import torch
from controlnet_aux import CannyDetector
from diffusers import FluxControlPipeline
from diffusers.utils import load_image
pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-Canny-dev", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"
prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")
processor = CannyDetector()
control_image = processor(control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024)
image = pipe(
prompt=prompt,
control_image=control_image,
height=1024,
width=1024,
num_inference_steps=50,
guidance_scale=30.0,
).images[0]
image.save("output.png")
يُمكن أيضًا استخدام Canny Control مع نسخة LoRA من هذا الشرط. طريقة الاستخدام هي كالتالي:
# !pip install -U controlnet-aux
import torch
from controlnet_aux import CannyDetector
from diffusers import FluxControlPipeline
from diffusers.utils import load_image
pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"
pipe.load_lora_weights("black-forest-labs/FLUX.1-Canny-dev-lora")
prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")
processor = CannyDetector()
control_image = processor(control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024)
image = pipe(
prompt=prompt,
control_image=control_image,
height=1024,
width=1024,
num_inference_steps=50,
guidance_scale=30.0,
).images[0]
image.save("output.png")
التحكم في العمق
ملاحظة: black-forest-labs/Flux.1-Depth-dev ليس نموذج ControlNet. نماذج ControlNetModel هي مكوّن منفصل عن UNet/Transformer، حيث تُضاف بقاياها (residuals) إلى النموذج الأساسي الفعلي. أما Depth Control فهو بنية بديلة تحقق نتائج فعّالة مماثلة لما يحققه نموذج ControlNet، وذلك من خلال استخدام الربط على مستوى القنوات (channel-wise concatenation) مع شرط التحكم في المدخلات، وضمان أن يتعلم الترانسفورمر التحكم في البنية عن طريق اتباع الشرط بأقرب قدر ممكن.
# !pip install git+https://github.com/huggingface/image_gen_aux
import torch
from diffusers import FluxControlPipeline, FluxTransformer2DModel
from diffusers.utils import load_image
from image_gen_aux import DepthPreprocessor
pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-Depth-dev", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"
prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")
processor = DepthPreprocessor.from_pretrained("LiheYoung/depth-anything-large-hf")
control_image = processor(control_image)[0].convert("RGB")
image = pipe(
prompt=prompt,
control_image=control_image,
height=1024,
width=1024,
num_inference_steps=30,
guidance_scale=10.0,
generator=torch.Generator().manual_seed(42),
).images[0]
image.save("output.png")
من الممكن أيضًا التحكم في العمق باستخدام نسخة LoRA من هذا الشرط. طريقة الاستخدام هي كالتالي:
# !pip install git+https://github.com/huggingface/image_gen_aux
import torch
from diffusers import FluxControlPipeline, FluxTransformer2DModel
from diffusers.utils import load_image
from image_gen_aux import DepthPreprocessor
pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"
pipe.load_lora_weights("black-forest-labs/FLUX.1-Depth-dev-lora")
prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")
processor = DepthPreprocessor.from_pretrained("LiheYoung/depth-anything-large-hf")
control_image = processor(control_image)[0].convert("RGB")
image = pipe(
prompt=prompt,
control_image=control_image,
height=1024,
width=1024,
num_inference_steps=30,
guidance_scale=10.0,
generator=torch.Generator().manual_seed(42),
).images[0]
image.save("output.png")
Redux
- خط أنابيب Flux Redux هو مُكيّف لنماذج FLUX.1 الأساسية. يمكن استخدامه مع كل من flux-dev و flux-schnell، لتوليد الصور من الصور.
- يمكنك أولاً استخدام
FluxPriorReduxPipelineللحصول علىprompt_embedsوpooled_prompt_embeds، ثم إدخالهما إلىFluxPipelineلتوليد الصور من صورة إلى صورة. - عند استخدام
FluxPriorReduxPipelineمع خط أنابيب أساسي، يمكنك تعيينtext_encoder=Noneوtext_encoder_2=Noneفي خط الأنابيب الأساسي، وذلك لتوفير ذاكرة VRAM.
import torch
from diffusers import FluxPriorReduxPipeline, FluxPipeline
from diffusers.utils import load_image
device = "cuda" # or "mps", "xpu", "cpu"
dtype = torch.bfloat16
repo_redux = "black-forest-labs/FLUX.1-Redux-dev"
repo_base = "black-forest-labs/FLUX.1-dev"
pipe_prior_redux = FluxPriorReduxPipeline.from_pretrained(repo_redux, dtype=dtype).to(device)
pipe = FluxPipeline.from_pretrained(
repo_base,
text_encoder=None,
text_encoder_2=None,
dtype=torch.bfloat16
).to(device)
image = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/style_ziggy/img5.png")
pipe_prior_output = pipe_prior_redux(image)
images = pipe(
guidance_scale=2.5,
num_inference_steps=50,
generator=torch.Generator("cpu").manual_seed(0),
**pipe_prior_output,
).images
images[0].save("flux-redux.png")
Kontext
Flux Kontext هو نموذج يتيح التحكم في سياق عملية توليد الصور، مما يسمح بالتحرير، والتحسين، وإعادة الإضاءة، ونقل الأسلوب، وتخصيص الشخصيات، والمزيد.
import torch
from diffusers import FluxKontextPipeline
from diffusers.utils import load_image
pipe = FluxKontextPipeline.from_pretrained(
"black-forest-labs/FLUX.1-Kontext-dev", dtype=torch.bfloat16
)
pipe.to("cuda") # or "mps", "xpu", "cpu"
image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png").convert("RGB")
prompt = "Make Pikachu hold a sign that says 'Black Forest Labs is awesome', yarn art style, detailed, vibrant colors"
image = pipe(
image=image,
prompt=prompt,
guidance_scale=2.5,
generator=torch.Generator().manual_seed(42),
).images[0]
image.save("flux-kontext.png")
يأتي Flux Kontext مع مُتحقّق سلامةٍ للسلامة، ويجب تشغيله بعد خطوة توليد الصورة. لتشغيل مُتحقّق السلامة، ثبّت المستودع الرسمي من black-forest-labs/flux وأضف الكود التالي:
from flux.content_filters import PixtralContentFilter
# ... pipeline invocation to generate images
integrity_checker = PixtralContentFilter(torch.device("cuda"))
image_ = np.array(image) / 255.0
image_ = 2 * image_ - 1
image_ = torch.from_numpy(image_).to("cuda", dtype=torch.float32).unsqueeze(0).permute(0, 3, 1, 2)
if integrity_checker.test_image(image_):
raise ValueError("Your image has been flagged. Choose another prompt/image or try again.")
Kontext Inpainting
FluxKontextInpaintPipeline يتيح تعديل الصورة داخل منطقة قناع ثابتة. يدعم حاليًا كلًا من الشرط النصي والشرط المرجعي بالصورة.
import torch
from diffusers import FluxKontextInpaintPipeline
from diffusers.utils import load_image
prompt = "Change the yellow dinosaur to green one"
img_url = (
"https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/dinosaur_input.jpeg?raw=true"
)
mask_url = (
"https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/dinosaur_mask.png?raw=true"
)
source = load_image(img_url)
mask = load_image(mask_url)
pipe = FluxKontextInpaintPipeline.from_pretrained(
"black-forest-labs/FLUX.1-Kontext-dev", dtype=torch.bfloat16
)
pipe.to("cuda") # or "mps", "xpu", "cpu"
image = pipe(prompt=prompt, image=source, mask_image=mask, strength=1.0).images[0]
image.save("kontext_inpainting_normal.png")
import torch
from diffusers import FluxKontextInpaintPipeline
from diffusers.utils import load_image
pipe = FluxKontextInpaintPipeline.from_pretrained(
"black-forest-labs/FLUX.1-Kontext-dev", dtype=torch.bfloat16
)
pipe.to("cuda") # or "mps", "xpu", "cpu"
prompt = "Replace this ball"
img_url = "https://images.pexels.com/photos/39362/the-ball-stadion-football-the-pitch-39362.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"
mask_url = "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/ball_mask.png?raw=true"
image_reference_url = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTah3x6OL_ECMBaZ5ZlJJhNsyC-OSMLWAI-xw&s"
source = load_image(img_url)
mask = load_image(mask_url)
image_reference = load_image(image_reference_url)
mask = pipe.mask_processor.blur(mask, blur_factor=12)
image = pipe(
prompt=prompt, image=source, mask_image=mask, image_reference=image_reference, strength=1.0
).images[0]
image.save("kontext_inpainting_ref.png")
دمج Flux Turbo LoRAs مع Flux Control وFill وRedux
يمكننا دمج Flux Turbo LoRAs مع Flux Control وخطوط الأنابيب الأخرى مثل Fill وRedux لتمكين الاستدلال بعدد قليل من الخطوات. يُظهر المثال أدناه كيفية القيام بذلك لـ Flux Control LoRA الخاص بالعمق وturbo LoRA من ByteDance/Hyper-SD.
from diffusers import FluxControlPipeline
from image_gen_aux import DepthPreprocessor
from diffusers.utils import load_image
from huggingface_hub import hf_hub_download
import torch
control_pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16)
control_pipe.load_lora_weights("black-forest-labs/FLUX.1-Depth-dev-lora", adapter_name="depth")
control_pipe.load_lora_weights(
hf_hub_download("ByteDance/Hyper-SD", "Hyper-FLUX.1-dev-8steps-lora.safetensors"), adapter_name="hyper-sd"
)
control_pipe.set_adapters(["depth", "hyper-sd"], adapter_weights=[0.85, 0.125])
control_pipe.enable_model_cpu_offload()
prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")
processor = DepthPreprocessor.from_pretrained("LiheYoung/depth-anything-large-hf")
control_image = processor(control_image)[0].convert("RGB")
image = control_pipe(
prompt=prompt,
control_image=control_image,
height=1024,
width=1024,
num_inference_steps=8,
guidance_scale=10.0,
generator=torch.Generator().manual_seed(42),
).images[0]
image.save("output.png")
ملاحظة حول unload_lora_weights() عند استخدام Flux LoRAs
عند تفريغ أوزان Control LoRA، استدعِ pipe.unload_lora_weights(reset_to_overwritten_params=True) لإعادة تعيين pipe.transformer بالكامل إلى شكله الأصلي. يمكن بعد ذلك استخدام خط الأنابيب الناتج مع طرق مثل DiffusionPipeline.from_pipe(). تتوفر تفاصيل إضافية حول هذا الحجة في هذا الطلب.
IP-Adapter
اطّلع على IP-Adapter لمعرفة المزيد حول كيفية عمل IP-Adapters.
يتيح لك IP-Adapter تقديم أوامر لـ Flux باستخدام الصور، بالإضافة إلى الأمر النصي. وهذا مفيد بشكل خاص عند وصف مفاهيم معقدة يصعب التعبير عنها بالنص وحده، ولديك صور مرجعية.
import torch
from diffusers import FluxPipeline
from diffusers.utils import load_image
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16
).to("cuda") # or "mps", "xpu", "cpu"
image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flux_ip_adapter_input.jpg").resize((1024, 1024))
pipe.load_ip_adapter(
"XLabs-AI/flux-ip-adapter",
weight_name="ip_adapter.safetensors",
image_encoder_pretrained_model_name_or_path="openai/clip-vit-large-patch14"
)
pipe.set_ip_adapter_scale(1.0)
image = pipe(
width=1024,
height=1024,
prompt="wearing sunglasses",
negative_prompt="",
true_cfg_scale=4.0,
generator=torch.Generator().manual_seed(4444),
ip_adapter_image=image,
).images[0]
image.save('flux_ip_adapter_output.jpg')
أمثلة على IP-Adapter مع الأمر النصي "wearing sunglasses"
تحسين
Flux هو نموذج كبير جدًا ويتطلب حوالي 50GB من ذاكرة RAM/VRAM لتحميل جميع مكونات النمذجة. فعّل بعض التحسينات أدناه لتقليل متطلبات الذاكرة.
تفريغ المجموعات
يُقلّل Group offloading من استهلاك ذاكرة VRAM عن طريق نقل مجموعات من الطبقات الداخلية بدلاً من نقل النموذج بأكمله أو الأوزان. يجب عليك استخدام apply_group_offloading() على جميع مكوّنات النموذج في خط المعالجة. يتيح لك معامل offload_type التبديل بين النقل على مستوى الكتلة والنقل على مستوى الأوراق. عند ضبطه على leaf_level، يتم نقل معاملات الأوراق الدنيا إلى وحدة المعالجة المركزية بدلاً من النقل على مستوى الوحدة.
على أجهزة CUDA التي تدعم تدفق البيانات غير المتزامن، اضبط use_stream=True لتداخل نقل البيانات والحساب وتسريع الاستدلال.
من الممكن دمج تفريغ مستوى الكتلة ومستوى الورقة لمكونات مختلفة في خط أنابيب واحد.
import torch
from diffusers import FluxPipeline
from diffusers.hooks import apply_group_offloading
model_id = "black-forest-labs/FLUX.1-dev"
dtype = torch.bfloat16
pipe = FluxPipeline.from_pretrained(
model_id,
dtype=dtype,
)
apply_group_offloading(
pipe.transformer,
offload_type="leaf_level",
offload_device=torch.device("cpu"),
onload_device=torch.device("cuda"),
use_stream=True,
)
apply_group_offloading(
pipe.text_encoder,
offload_device=torch.device("cpu"),
onload_device=torch.device("cuda"),
offload_type="leaf_level",
use_stream=True,
)
apply_group_offloading(
pipe.text_encoder_2,
offload_device=torch.device("cpu"),
onload_device=torch.device("cuda"),
offload_type="leaf_level",
use_stream=True,
)
apply_group_offloading(
pipe.vae,
offload_device=torch.device("cpu"),
onload_device=torch.device("cuda"),
offload_type="leaf_level",
use_stream=True,
)
prompt="A cat wearing sunglasses and working as a lifeguard at pool."
generator = torch.Generator().manual_seed(181201)
image = pipe(
prompt,
width=576,
height=1024,
num_inference_steps=30,
generator=generator
).images[0]
image
تشغيل الاستدلال FP16
يمكن لـ Flux توليد صور عالية الجودة باستخدام FP16 (أي لتسريع الاستدلال على وحدات معالجة الرسومات Turing/Volta) لكنه ينتج مخرجات مختلفة مقارنةً بـ FP32/BF16. تكمن المشكلة في أن بعض التفعيلات في مشفّرات النص يجب أن تُقصّ عند التشغيل بـ FP16، مما يؤثر على الصورة ككل. لذا، فإن إجبار مشفّرات النص على العمل بالاستدلال بـ FP32 يُزيل هذا الاختلاف في المخرجات. راجع هنا للتفاصيل.
كود الاستدلال FP16:
import torch
from diffusers import FluxPipeline
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", dtype=torch.bfloat16) # can replace schnell with dev
# to run on low vram GPUs (i.e. between 4 and 32 GB VRAM)
pipe.enable_sequential_cpu_offload()
pipe.vae.enable_slicing()
pipe.vae.enable_tiling()
pipe.to(torch.float16) # casting here instead of in the pipeline constructor because doing so in the constructor loads all models into CPU memory at once
prompt = "A cat holding a sign that says hello world"
out = pipe(
prompt=prompt,
guidance_scale=0.,
height=768,
width=1360,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
out.save("image.png")
التكميم
يساعد التكميم (Quantization) في تقليل متطلبات الذاكرة للنماذج الكبيرة جدًا من خلال تخزين أوزان النموذج في نوع بيانات بدقة أقل. ومع ذلك، قد يكون للتكميم تأثير متباين على جودة الفيديو اعتمادًا على نموذج الفيديو المستخدم.
راجع نظرة عامة حول التكميم لمعرفة المزيد حول محركات التكميم المدعومة واختيار محرك تكميم يدعم حالتك الاستخدامية. يوضح المثال أدناه كيفية تحميل FluxPipeline مُكمَّم للاستدلال باستخدام bitsandbytes.
import torch
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, FluxTransformer2DModel, FluxPipeline
from transformers import BitsAndBytesConfig as BitsAndBytesConfig, T5EncoderModel
quant_config = BitsAndBytesConfig(load_in_8bit=True)
text_encoder_8bit = T5EncoderModel.from_pretrained(
"black-forest-labs/FLUX.1-dev",
subfolder="text_encoder_2",
quantization_config=quant_config,
dtype=torch.float16,
)
quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
transformer_8bit = FluxTransformer2DModel.from_pretrained(
"black-forest-labs/FLUX.1-dev",
subfolder="transformer",
quantization_config=quant_config,
dtype=torch.float16,
)
pipeline = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev",
text_encoder_2=text_encoder_8bit,
transformer=transformer_8bit,
dtype=torch.float16,
device_map="balanced",
)
prompt = "a tiny astronaut hatching from an egg on the moon"
image = pipeline(prompt, guidance_scale=3.5, height=768, width=1360, num_inference_steps=50).images[0]
image.save("flux.png")
تحميل ملف واحد لنموذج FluxTransformer2DModel
يدعم FluxTransformer2DModel تحميل نقاط التفتيش بالصيغة الأصلية التي أصدرتها Black Forest Labs. كما يكون ذلك مفيدًا عند محاولة تحميل نسخ مُعدَّلة أو مُكمَّمة من النماذج التي نشرها المجتمع.
قد تكون الاستدلال باستخدام
FP8غير مستقر اعتماداً على نوع وحدة معالجة الرسوميات (GPU) وإصدار CUDA وإصدارtorchالتي تستخدمها. يُنصح باستخدام مكتبةoptimum-quantoلتنفيذ الاستدلال باستخدام FP8 على جهازك.
يُظهر المثال التالي كيفية تشغيل Flux باستخدام أقل من 16 جيجابايت من ذاكرة VRAM.
قم أولاً بتثبيت optimum-quanto
pip install optimum-quanto
ثم شغّل المثال التالي
import torch
from diffusers import FluxTransformer2DModel, FluxPipeline
from transformers import T5EncoderModel, CLIPTextModel
from optimum.quanto import freeze, qfloat8, quantize
bfl_repo = "black-forest-labs/FLUX.1-dev"
dtype = torch.bfloat16
transformer = FluxTransformer2DModel.from_single_file("https://huggingface.co/Kijai/flux-fp8/blob/main/flux1-dev-fp8.safetensors", dtype=dtype)
quantize(transformer, weights=qfloat8)
freeze(transformer)
text_encoder_2 = T5EncoderModel.from_pretrained(bfl_repo, subfolder="text_encoder_2", dtype=dtype)
quantize(text_encoder_2, weights=qfloat8)
freeze(text_encoder_2)
pipe = FluxPipeline.from_pretrained(bfl_repo, transformer=None, text_encoder_2=None, dtype=dtype)
pipe.transformer = transformer
pipe.text_encoder_2 = text_encoder_2
pipe.enable_model_cpu_offload()
prompt = "A cat holding a sign that says hello world"
image = pipe(
prompt,
guidance_scale=3.5,
output_type="pil",
num_inference_steps=20,
generator=torch.Generator("cpu").manual_seed(0)
).images[0]
image.save("flux-fp8-dev.png")
FluxPipeline[[diffusers.FluxPipeline]]
diffusers.FluxPipeline[[diffusers.FluxPipeline]]
diffusers.FluxPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, text_encoder_2: T5EncoderModel, tokenizer_2: T5Tokenizer, transformer: FluxTransformer2DModel, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None)
المعاملات:
transformer (FluxTransformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
text_encoder (CLIPTextModel) : CLIP، وتحديداً النسخة clip-vit-large-patch14.
text_encoder_2 (T5EncoderModel) : T5، وتحديداً النسخة google/t5-v1_1-xxl.
tokenizer (CLIPTokenizer) : مُقسِّم من الفئة CLIPTokenizer.
tokenizer_2 (T5TokenizerFast) : مُرمِّز ثانٍ من الفئة T5TokenizerFast.
خط أنابيب Flux لتوليد الصور من النص.
مرجع: https://blackforestlabs.ai/announcing-black-forest-labs/
call[[diffusers.FluxPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, negative_prompt: str | list[str] = None, negative_prompt_2: str | list[str] | None = None, true_cfg_scale: float = 1.0, height: int | None = None, width: int | None = None, num_inference_steps: int = 28, sigmas: list[float] | None = None, guidance_scale: float = 3.5, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, negative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, negative_ip_adapter_image_embeds: list[torch.Tensor] | None = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512)
المعاملات:
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، فسيتم استخدام prompt بدلاً منه.
negative_prompt (str أو list[str]، اختياري) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير negative_prompt_embeds بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا لم يكن true_cfg_scale أكبر من 1).
negative_prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم negative_prompt في جميع مشفّرات النص.
true_cfg_scale (float، اختياري، القيمة الافتراضية 1.0) : يتم تفعيل التوجيه الحر من التصنيف (مقياس التوجيه) عندما يكون true_cfg_scale > 1 ويتم توفير negative_prompt.
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، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
sigmas (list[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.
guidance_scale (float، اختياري، القيمة الافتراضية 3.5) : يتم تفعيل مقياس التوجيه المدمج عن طريق تعيين guidance_scale > 1. كلما ارتفع guidance_scale، شجّع النموذج على توليد صور أكثر توافقًا مع prompt على حساب انخفاض جودة الصورة. تقرب النماذج المُقطّرة بالتوجيه من التوجيه الحقيقي الحر من المصنّف لقيم guidance_scale > 1. راجع الورقة البحثية لمعرفة المزيد.
num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.
generator (torch.Generator أو list[torch.Generator]، اختياري) : مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
latents (torch.FloatTensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، فسيتم إنشاء كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
ip_adapter_image : (PipelineImageInput، اختياري): إدخال صورة اختياري للعمل مع IP Adapters.
ip_adapter_image_embeds (list[torch.Tensor]، اختياري) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون قائمة بطول يساوي عدد وحدات IP-adapter. يجب أن يكون كل عنصر منها متجهًا (tensor) بشكل (batch_size, num_images, emb_dim). إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال ip_adapter_image.
negative_ip_adapter_image : (PipelineImageInput، اختياري): إدخال صورة اختياري للعمل مع IP Adapters.
negative_ip_adapter_image_embeds (list[torch.Tensor]، اختياري) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون قائمة بطول يساوي عدد وحدات IP-adapter. يجب أن يكون كل عنصر منها متجهًا (tensor) بشكل (batch_size, num_images, emb_dim). إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال ip_adapter_image.
negative_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.
negative_pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال negative_prompt.
output_type (str، اختياري، القيمة الافتراضية "pil") : صيغة الصورة الناتجة عن عملية التوليد. اختر بين PIL: PIL.Image.Image أو np.array.
return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~pipelines.flux.FluxPipelineOutput بدلاً من 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 الافتراضي 512) : أقصى طول تسلسل يُستخدم مع prompt.
يعيد: ~pipelines.flux.FluxPipelineOutput أو tuple
~pipelines.flux.FluxPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import FluxPipeline
>>> pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "A cat holding a sign that says hello world"
>>> # Depending on the variant being used, the pipeline call will slightly vary.
>>> # Refer to the pipeline documentation for more details.
>>> image = pipe(prompt, num_inference_steps=4, guidance_scale=0.0).images[0]
>>> image.save("flux.png")
encode_prompt[[diffusers.FluxPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str] | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, max_sequence_length: int = 512, lora_scale: float | None = None)
المعاملات:
prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم prompt في جميع مُشفِّرات النص
device : (torch.device): جهاز torch
num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
lora_scale (float، اختياري) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.
FluxImg2ImgPipeline[[diffusers.FluxImg2ImgPipeline]]
diffusers.FluxImg2ImgPipeline[[diffusers.FluxImg2ImgPipeline]]
diffusers.FluxImg2ImgPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, text_encoder_2: T5EncoderModel, tokenizer_2: T5Tokenizer, transformer: FluxTransformer2DModel, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None)
المعاملات:
transformer (FluxTransformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
text_encoder (CLIPTextModel) : CLIP، وتحديداً النسخة clip-vit-large-patch14.
text_encoder_2 (T5EncoderModel) : T5، وتحديداً النسخة google/t5-v1_1-xxl.
tokenizer (CLIPTokenizer) : مُقسِّم من الفئة CLIPTokenizer.
tokenizer_2 (T5TokenizerFast) : مُرمِّز ثانٍ من الفئة T5TokenizerFast.
خط أنابيب Flux لتعبئة الصور.
مرجع: https://blackforestlabs.ai/announcing-black-forest-labs/
call[[diffusers.FluxImg2ImgPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, negative_prompt: str | list[str] = None, negative_prompt_2: str | list[str] | None = None, true_cfg_scale: float = 1.0, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, strength: float = 0.6, num_inference_steps: int = 28, sigmas: list[float] | None = None, guidance_scale: float = 7.0, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, negative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, negative_ip_adapter_image_embeds: list[torch.Tensor] | None = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512)
المعاملات:
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، فسيتم استخدام prompt بدلاً منه
negative_prompt (str أو list[str]، اختياري) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير negative_prompt_embeds بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا لم يكن true_cfg_scale أكبر من 1).
negative_prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم negative_prompt في جميع مشفّرات النص.
true_cfg_scale (float، اختياري، القيمة الافتراضية 1.0) : يتم تفعيل التوجيه الحر من التصنيف (مقياس التوجيه) عندما يكون true_cfg_scale > 1 ويتم توفير negative_prompt.
image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور (image batch) لاستخدامها كنقطة انطلاق. لكل من مصفوفة numpy وtensor الخاص بـ pytorch، النطاق المتوقع للقيم هو بين [0, 1] إذا كان tensor أو قائمة من tensors، فيجب أن يكون الشكل المتوقع (B, C, H, W) أو (C, H, W). إذا كانت مصفوفة numpy أو قائمة من المصفوفات، فيجب أن يكون الشكل المتوقع (B, H, W, C) أو (H, W, C) كما يمكنه قبول كامنات الصور (image latents) كـ 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 افتراضيًا للحصول على أفضل النتائج.
strength (float، اختياري، القيمة الافتراضية 1.0) : يحدد مدى تحويل الصورة المرجعية image. يجب أن يكون بين 0 و 1. تُستخدم image كنقطة انطلاق، وكلما ارتفعت قيمة strength زاد مقدار الضوضاء المضافة. يعتمد عدد خطوات إزالة الضوضاء على كمية الضوضاء المضافة في البداية. عندما تكون strength تساوي 1، تكون الضوضاء المضافة في أقصى حد، وتعمل عملية إزالة الضوضاء لعدد التكرارات الكامل المحدد في num_inference_steps. القيمة 1 تتجاهل image بشكل أساسي.
num_inference_steps (int، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
sigmas (list[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.
guidance_scale (float، اختياري، القيمة الافتراضية 7.0) : مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّف guidance_scale على أنه w من المعادلة 2. في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيين guidance_scale > 1. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص prompt، وعادةً على حساب انخفاض جودة الصورة.
num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.
generator (torch.Generator أو list[torch.Generator]، اختياري) : مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
latents (torch.FloatTensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، فسيتم إنشاء كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
negative_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.
negative_pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال negative_prompt.
ip_adapter_image : (PipelineImageInput، اختياري): إدخال صورة اختياري للعمل مع IP Adapters.
ip_adapter_image_embeds (list[torch.Tensor]، اختياري) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون قائمة بطول يساوي عدد وحدات IP-adapter. يجب أن يكون كل عنصر منها متجهًا (tensor) بشكل (batch_size, num_images, emb_dim). إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال ip_adapter_image.
negative_ip_adapter_image : (PipelineImageInput، اختياري): إدخال صورة اختياري للعمل مع IP Adapters.
negative_ip_adapter_image_embeds (list[torch.Tensor]، اختياري) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون قائمة بطول يساوي عدد وحدات IP-adapter. يجب أن يكون كل عنصر منها متجهًا (tensor) بشكل (batch_size, num_images, emb_dim). إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال ip_adapter_image.
output_type (str، اختياري، القيمة الافتراضية "pil") : صيغة الصورة الناتجة عن عملية التوليد. اختر بين PIL: PIL.Image.Image أو np.array.
return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~pipelines.flux.FluxPipelineOutput بدلاً من 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 الافتراضي 512) : أقصى طول تسلسل يُستخدم مع prompt.
يعيد: ~pipelines.flux.FluxPipelineOutput أو tuple
~pipelines.flux.FluxPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import FluxImg2ImgPipeline
>>> from diffusers.utils import load_image
>>> device = "cuda"
>>> pipe = FluxImg2ImgPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16)
>>> pipe = pipe.to(device)
>>> url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
>>> init_image = load_image(url).resize((1024, 1024))
>>> prompt = "cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney, 8k"
>>> images = pipe(
... prompt=prompt, image=init_image, num_inference_steps=4, strength=0.95, guidance_scale=0.0
... ).images[0]
encode_prompt[[diffusers.FluxImg2ImgPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str] | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, max_sequence_length: int = 512, lora_scale: float | None = None)
المعاملات:
prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم prompt في جميع مُشفِّرات النص
device : (torch.device): جهاز torch
num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
lora_scale (float، اختياري) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.
FluxInpaintPipeline[[diffusers.FluxInpaintPipeline]]
diffusers.FluxInpaintPipeline[[diffusers.FluxInpaintPipeline]]
diffusers.FluxInpaintPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, text_encoder_2: T5EncoderModel, tokenizer_2: T5Tokenizer, transformer: FluxTransformer2DModel, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None)
المعاملات:
transformer (FluxTransformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
text_encoder (CLIPTextModel) : CLIP، وتحديداً النسخة clip-vit-large-patch14.
text_encoder_2 (T5EncoderModel) : T5، وتحديداً النسخة google/t5-v1_1-xxl.
tokenizer (CLIPTokenizer) : مُقسِّم من الفئة CLIPTokenizer.
tokenizer_2 (T5TokenizerFast) : مُرمِّز ثانٍ من الفئة T5TokenizerFast.
خط أنابيب Flux لتعبئة الصور.
مرجع: https://blackforestlabs.ai/announcing-black-forest-labs/
call[[diffusers.FluxInpaintPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, negative_prompt: str | list[str] = None, negative_prompt_2: str | list[str] | None = None, true_cfg_scale: float = 1.0, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, mask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, masked_image_latents: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, padding_mask_crop: int | None = None, strength: float = 0.6, num_inference_steps: int = 28, sigmas: list[float] | None = None, guidance_scale: float = 7.0, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, negative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, negative_ip_adapter_image_embeds: list[torch.Tensor] | None = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512)
المعاملات:
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، فسيتم استخدام prompt بدلاً منه
negative_prompt (str أو list[str]، اختياري) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير negative_prompt_embeds بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا لم يكن true_cfg_scale أكبر من 1).
negative_prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم negative_prompt في جميع مشفّرات النص.
true_cfg_scale (float، اختياري، القيمة الافتراضية 1.0) : يتم تفعيل التوجيه الحر من التصنيف (مقياس التوجيه) عندما يكون true_cfg_scale > 1 ويتم توفير negative_prompt.
image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور (image batch) لاستخدامها كنقطة انطلاق. لكل من مصفوفة numpy وtensor الخاص بـ pytorch، النطاق المتوقع للقيم هو بين [0, 1] إذا كان tensor أو قائمة من tensors، فيجب أن يكون الشكل المتوقع (B, C, H, W) أو (C, H, W). إذا كانت مصفوفة numpy أو قائمة من المصفوفات، فيجب أن يكون الشكل المتوقع (B, H, W, C) أو (H, W, C) كما يمكنه قبول كامنات الصور (image latents) كـ image، ولكن إذا تم تمرير الكامنات مباشرةً فلن يتم ترميزها مرة أخرى.
mask_image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور لتطبيق قناع على image. يتم إعادة رسم البكسلات البيضاء في القناع بينما تُحفظ البكسلات السوداء. إذا كان mask_image صورة PIL، يتم تحويلها إلى قناة واحدة (السطوع) قبل الاستخدام. وإذا كانت مصفوفة numpy أو tensor من pytorch، يجب أن تحتوي على قناة لون واحدة (L) بدلاً من ثلاث، لذا فإن الشكل المتوقع لـ tensor من pytorch هو (B, 1, H, W)، (B, H, W)، (1, H, W)، (H, W). أما لمصفوفة numpy فيكون الشكل (B, H, W, 1)، (B, H, W)، (H, W, 1)، أو (H, W).
masked_image_latents (torch.Tensor، list[torch.Tensor]) : Tensor يمثل دفعة من الصور لتطبيق قناع على image التي ولّدها VAE. إذا لم يُقدَّم، فسيتم توليد متجه قناع الكامنات بواسطة mask_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 افتراضيًا للحصول على أفضل النتائج.
padding_mask_crop (int, اختياري, القيمة الافتراضية None) : حجم الهامش في الاقتصاص الذي سيُطبَّق على الصورة والقناع. إذا كانت None، فلن يُطبَّق أي اقتصاص على الصورة وmask_image. إذا لم تكن padding_mask_crop هي None، فسيتم أولاً إيجاد منطقة مستطيلة بنفس نسبة أبعاد الصورة وتحتوي على كل المناطق المقنَّعة، ثم توسيع تلك المنطقة بناءً على padding_mask_crop. بعد ذلك، ستُقتَص الصورة وmask_image بناءً على المنطقة الموسَّعة قبل تغيير حجمهما إلى حجم الصورة الأصلي لأغراض إعادة البناء. هذا مفيد عندما تكون المنطقة المقنَّعة صغيرة بينما تكون الصورة كبيرة وتحتوي على معلومات غير ذات صلة بإعادة البناء، مثل الخلفية.
strength (float، اختياري، القيمة الافتراضية 1.0) : يحدد مدى تحويل الصورة المرجعية image. يجب أن يكون بين 0 و 1. تُستخدم image كنقطة انطلاق، وكلما ارتفعت قيمة strength زاد مقدار الضوضاء المضافة. يعتمد عدد خطوات إزالة الضوضاء على كمية الضوضاء المضافة في البداية. عندما تكون strength تساوي 1، تكون الضوضاء المضافة في أقصى حد، وتعمل عملية إزالة الضوضاء لعدد التكرارات الكامل المحدد في num_inference_steps. القيمة 1 تتجاهل image بشكل أساسي.
num_inference_steps (int، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
sigmas (list[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.
guidance_scale (float، اختياري، القيمة الافتراضية 7.0) : مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّف guidance_scale على أنه w من المعادلة 2. في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيين guidance_scale > 1. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص prompt، وعادةً على حساب انخفاض جودة الصورة.
num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.
generator (torch.Generator أو list[torch.Generator]، اختياري) : مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
latents (torch.FloatTensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، فسيتم إنشاء كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
negative_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.
negative_pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال negative_prompt.
ip_adapter_image : (PipelineImageInput، اختياري): إدخال صورة اختياري للعمل مع IP Adapters.
ip_adapter_image_embeds (list[torch.Tensor]، اختياري) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون قائمة بطول يساوي عدد وحدات IP-adapter. يجب أن يكون كل عنصر منها متجهًا (tensor) بشكل (batch_size, num_images, emb_dim). إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال ip_adapter_image.
negative_ip_adapter_image : (PipelineImageInput، اختياري): إدخال صورة اختياري للعمل مع IP Adapters.
negative_ip_adapter_image_embeds (list[torch.Tensor]، اختياري) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون قائمة بطول يساوي عدد وحدات IP-adapter. يجب أن يكون كل عنصر منها متجهًا (tensor) بشكل (batch_size, num_images, emb_dim). إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال ip_adapter_image.
output_type (str، اختياري، القيمة الافتراضية "pil") : صيغة الصورة الناتجة عن عملية التوليد. اختر بين PIL: PIL.Image.Image أو np.array.
return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~pipelines.flux.FluxPipelineOutput بدلاً من 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 الافتراضي 512) : أقصى طول تسلسل يُستخدم مع prompt.
يعيد: ~pipelines.flux.FluxPipelineOutput أو tuple
~pipelines.flux.FluxPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import FluxInpaintPipeline
>>> from diffusers.utils import load_image
>>> pipe = FluxInpaintPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "Face of a yellow cat, high resolution, sitting on a park bench"
>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
>>> source = load_image(img_url)
>>> mask = load_image(mask_url)
>>> image = pipe(prompt=prompt, image=source, mask_image=mask).images[0]
>>> image.save("flux_inpainting.png")
encode_prompt[[diffusers.FluxInpaintPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str] | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, max_sequence_length: int = 512, lora_scale: float | None = None)
المعاملات:
prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم prompt في جميع مُشفِّرات النص
device : (torch.device): جهاز torch
num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
lora_scale (float، اختياري) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.
FluxControlNetInpaintPipeline[[diffusers.FluxControlNetInpaintPipeline]]
diffusers.FluxControlNetInpaintPipeline[[diffusers.FluxControlNetInpaintPipeline]]
diffusers.FluxControlNetInpaintPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, text_encoder_2: T5EncoderModel, tokenizer_2: T5Tokenizer, transformer: FluxTransformer2DModel, controlnet: diffusers.models.controlnets.controlnet_flux.FluxControlNetModel | list[diffusers.models.controlnets.controlnet_flux.FluxControlNetModel] | tuple[diffusers.models.controlnets.controlnet_flux.FluxControlNetModel] | diffusers.models.controlnets.controlnet_flux.FluxMultiControlNetModel)
المعاملات:
transformer (FluxTransformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
text_encoder (CLIPTextModel) : CLIP، وتحديداً النسخة clip-vit-large-patch14.
text_encoder_2 (T5EncoderModel) : T5، وتحديداً النسخة google/t5-v1_1-xxl.
tokenizer (CLIPTokenizer) : مُقسِّم من الفئة CLIPTokenizer.
tokenizer_2 (T5TokenizerFast) : مُرمِّز ثانٍ من الفئة T5TokenizerFast.
خط أنابيب Flux controlnet لإعادة الرسم.
مرجع: https://blackforestlabs.ai/announcing-black-forest-labs/
call[[diffusers.FluxControlNetInpaintPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, mask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, masked_image_latents: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, strength: float = 0.6, padding_mask_crop: int | None = None, sigmas: list[float] | None = None, num_inference_steps: int = 28, guidance_scale: float = 7.0, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, control_mode: int | list[int] | None = None, controlnet_conditioning_scale: float | list[float] = 1.0, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512)
المعاملات:
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة.
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2.
image (PIL.Image.Image أو list[PIL.Image.Image] أو torch.FloatTensor) : الصورة أو الصور التي سيتم إجراء inpaint عليها.
mask_image (PIL.Image.Image أو list[PIL.Image.Image] أو torch.FloatTensor) : صورة القناع (أو صور الأقنعة) المستخدمة لعملية inpainting. سيتم إعادة رسم البكسلات البيضاء في القناع، بينما ستُحفظ البكسلات السوداء.
masked_image_latents (torch.FloatTensor، اختياري) : كامنات صورة مقنّعة مُولّدة مسبقًا.
control_image (PIL.Image.Image أو list[PIL.Image.Image] أو torch.FloatTensor) : شرط الإدخال الخاص بـ ControlNet. الصورة التي تتحكم في عملية التوليد.
height (int، اختياري، القيمة الافتراضية هي self.default_sample_size * self.vae_scale_factor) : ارتفاع الصورة المولّدة بالبكسل.
width (int، اختياري، القيمة الافتراضية هي self.default_sample_size * self.vae_scale_factor) : عرض الصورة المولدة بالبكسل.
strength (float، اختياري، القيمة الافتراضية 0.6) : يشير مفهومياً إلى مقدار إعادة بناء المنطقة المقنّعة. يجب أن يكون بين 0 و1.
padding_mask_crop (int, اختياري) : حجم الحشو المستخدم عند قص القناع.
num_inference_steps (int، اختياري، القيمة الافتراضية 28) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
sigmas (list[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.
guidance_scale (float، اختياري، القيمة الافتراضية 7.0) : مقياس التوجيه كما هو معرّف في Classifier-Free Diffusion Guidance.
control_guidance_start (float أو list[float]، اختياري، القيمة الافتراضية 0.0) : النسبة المئوية من إجمالي الخطوات التي يبدأ عندها ControlNet في التطبيق.
control_guidance_end (float أو list[float]، اختياري، القيمة الافتراضية 1.0) : النسبة المئوية من إجمالي الخطوات التي يتوقف عندها ControlNet عن التطبيق.
control_mode (int أو list[int]، اختياري) : وضع ControlNet. إذا تم استخدام عدة وحدات ControlNet، فيجب أن يكون هذا قائمة.
controlnet_conditioning_scale (float أو list[float]، اختياري، القيمة الافتراضية 1.0) : تُضرب مخرجات ControlNet في controlnet_conditioning_scale قبل إضافتها إلى الباقي في المحوّل الأصلي.
num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.
generator (torch.Generator أو list[torch.Generator]، اختياري) : مولّد أو أكثر من مولّدات torch لجعل التوليد حتميًا.
latents (torch.FloatTensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة.
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا.
output_type (str، اختياري، الافتراضي "pil") : صيغة الصورة الناتجة عن التوليد. اختر بين PIL.Image أو np.array.
return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~pipelines.flux.FluxPipelineOutput بدلاً من tuple عادي.
joint_attention_kwargs (dict، اختياري) : حُجج إضافية بالكلمات المفتاحية تُمرَّر إلى آلية الانتباه المشترك.
callback_on_step_end (Callable، اختياري) : دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال.
callback_on_step_end_tensor_inputs (list[str]، اختياري) : قائمة مدخلات المصفوفات لوظيفة callback_on_step_end.
max_sequence_length (int، اختياري، القيمة الافتراضية 512) : الحد الأقصى لطول التسلسل الذي سيتم توليده.
يعيد: ~pipelines.flux.FluxPipelineOutput أو tuple
~pipelines.flux.FluxPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import FluxControlNetInpaintPipeline
>>> from diffusers.models import FluxControlNetModel
>>> from diffusers.utils import load_image
>>> controlnet = FluxControlNetModel.from_pretrained(
... "InstantX/FLUX.1-dev-controlnet-canny", torch_dtype=torch.float16
... )
>>> pipe = FluxControlNetInpaintPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-schnell", controlnet=controlnet, torch_dtype=torch.float16
... )
>>> pipe.to("cuda")
>>> control_image = load_image(
... "https://huggingface.co/InstantX/FLUX.1-dev-Controlnet-Canny-alpha/resolve/main/canny.jpg"
... )
>>> init_image = load_image(
... "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
... )
>>> mask_image = load_image(
... "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
... )
>>> prompt = "A girl holding a sign that says InstantX"
>>> image = pipe(
... prompt,
... image=init_image,
... mask_image=mask_image,
... control_image=control_image,
... control_guidance_start=0.2,
... control_guidance_end=0.8,
... controlnet_conditioning_scale=0.7,
... strength=0.7,
... num_inference_steps=28,
... guidance_scale=3.5,
... ).images[0]
>>> image.save("flux_controlnet_inpaint.png")
encode_prompt[[diffusers.FluxControlNetInpaintPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str] | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, max_sequence_length: int = 512, lora_scale: float | None = None)
المعاملات:
prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم prompt في جميع مُشفِّرات النص
device : (torch.device): جهاز torch
num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
lora_scale (float، اختياري) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.
FluxControlNetImg2ImgPipeline[[diffusers.FluxControlNetImg2ImgPipeline]]
diffusers.FluxControlNetImg2ImgPipeline[[diffusers.FluxControlNetImg2ImgPipeline]]
diffusers.FluxControlNetImg2ImgPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, text_encoder_2: T5EncoderModel, tokenizer_2: T5Tokenizer, transformer: FluxTransformer2DModel, controlnet: diffusers.models.controlnets.controlnet_flux.FluxControlNetModel | list[diffusers.models.controlnets.controlnet_flux.FluxControlNetModel] | tuple[diffusers.models.controlnets.controlnet_flux.FluxControlNetModel] | diffusers.models.controlnets.controlnet_flux.FluxMultiControlNetModel)
المعاملات:
transformer (FluxTransformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
text_encoder (CLIPTextModel) : CLIP، وتحديداً النسخة clip-vit-large-patch14.
text_encoder_2 (T5EncoderModel) : T5، وتحديداً النسخة google/t5-v1_1-xxl.
tokenizer (CLIPTokenizer) : مُقسِّم من الفئة CLIPTokenizer.
tokenizer_2 (T5TokenizerFast) : مُرمِّز ثانٍ من الفئة T5TokenizerFast.
خط أنابيب Flux controlnet لتوليد الصور من الصور.
مرجع: https://blackforestlabs.ai/announcing-black-forest-labs/
call[[diffusers.FluxControlNetImg2ImgPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, strength: float = 0.6, num_inference_steps: int = 28, sigmas: list[float] | None = None, guidance_scale: float = 7.0, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, control_mode: int | list[int] | None = None, controlnet_conditioning_scale: float | list[float] = 1.0, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512)
المعاملات:
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة.
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2.
image (PIL.Image.Image أو list[PIL.Image.Image] أو torch.FloatTensor) : الصورة أو الصور التي سيتم تعديلها باستخدام خط المعالجة.
control_image (PIL.Image.Image أو list[PIL.Image.Image] أو torch.FloatTensor) : شرط الإدخال الخاص بـ ControlNet. الصورة التي تتحكم في عملية التوليد.
height (int، اختياري، القيمة الافتراضية هي self.default_sample_size * self.vae_scale_factor) : ارتفاع الصورة المولّدة بالبكسل.
width (int، اختياري، القيمة الافتراضية هي self.default_sample_size * self.vae_scale_factor) : عرض الصورة المولدة بالبكسل.
strength (float، اختياري، القيمة الافتراضية 0.6) : يشير مفهومياً إلى مقدار تحويل الصورة المرجعية image. يجب أن تكون القيمة بين 0 و1.
num_inference_steps (int، اختياري، القيمة الافتراضية 28) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
sigmas (list[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.
guidance_scale (float، اختياري، القيمة الافتراضية 7.0) : مقياس التوجيه كما هو معرّف في Classifier-Free Diffusion Guidance.
control_mode (int أو list[int]، اختياري) : وضع ControlNet. إذا تم استخدام عدة وحدات ControlNet، فيجب أن يكون هذا قائمة.
controlnet_conditioning_scale (float أو list[float]، اختياري، القيمة الافتراضية 1.0) : تُضرب مخرجات ControlNet في controlnet_conditioning_scale قبل إضافتها إلى الباقي في المحوّل الأصلي.
control_guidance_start (float أو list[float]، اختياري، القيمة الافتراضية 0.0) : النسبة المئوية من إجمالي الخطوات التي يبدأ عندها ControlNet في التطبيق.
control_guidance_end (float أو list[float]، اختياري، القيمة الافتراضية 1.0) : النسبة المئوية من إجمالي الخطوات التي يتوقف عندها ControlNet عن التطبيق.
num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.
generator (torch.Generator أو list[torch.Generator]، اختياري) : مولّد أو أكثر من مولّدات torch لجعل التوليد حتميًا.
latents (torch.FloatTensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة.
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا.
output_type (str، اختياري، الافتراضي "pil") : صيغة الصورة الناتجة عن التوليد. اختر بين PIL.Image أو np.array.
return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~pipelines.flux.FluxPipelineOutput بدلاً من tuple عادي.
joint_attention_kwargs (dict، اختياري) : حُجج إضافية بالكلمات المفتاحية تُمرَّر إلى آلية الانتباه المشترك.
callback_on_step_end (Callable، اختياري) : دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال.
callback_on_step_end_tensor_inputs (list[str]، اختياري) : قائمة مدخلات المصفوفات لوظيفة callback_on_step_end.
max_sequence_length (int، اختياري، القيمة الافتراضية 512) : الحد الأقصى لطول التسلسل الذي سيتم توليده.
يعيد: ~pipelines.flux.FluxPipelineOutput أو tuple
~pipelines.flux.FluxPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import FluxControlNetImg2ImgPipeline, FluxControlNetModel
>>> from diffusers.utils import load_image
>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> controlnet = FluxControlNetModel.from_pretrained(
... "InstantX/FLUX.1-dev-Controlnet-Canny-alpha", torch_dtype=torch.bfloat16
... )
>>> pipe = FluxControlNetImg2ImgPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-schnell", controlnet=controlnet, torch_dtype=torch.float16
... )
>>> pipe.text_encoder.to(torch.float16)
>>> pipe.controlnet.to(torch.float16)
>>> pipe.to("cuda")
>>> control_image = load_image("https://huggingface.co/InstantX/SD3-Controlnet-Canny/resolve/main/canny.jpg")
>>> init_image = load_image(
... "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
... )
>>> prompt = "A girl in city, 25 years old, cool, futuristic"
>>> image = pipe(
... prompt,
... image=init_image,
... control_image=control_image,
... control_guidance_start=0.2,
... control_guidance_end=0.8,
... controlnet_conditioning_scale=1.0,
... strength=0.7,
... num_inference_steps=2,
... guidance_scale=3.5,
... ).images[0]
>>> image.save("flux_controlnet_img2img.png")
encode_prompt[[diffusers.FluxControlNetImg2ImgPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str] | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, max_sequence_length: int = 512, lora_scale: float | None = None)
المعاملات:
prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم prompt في جميع مُشفِّرات النص
device : (torch.device): جهاز torch
num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
lora_scale (float، اختياري) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.
FluxControlPipeline[[diffusers.FluxControlPipeline]]
diffusers.FluxControlPipeline[[diffusers.FluxControlPipeline]]
diffusers.FluxControlPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, text_encoder_2: T5EncoderModel, tokenizer_2: T5Tokenizer, transformer: FluxTransformer2DModel)
المعاملات:
transformer (FluxTransformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
text_encoder (CLIPTextModel) : CLIP، وتحديداً النسخة clip-vit-large-patch14.
text_encoder_2 (T5EncoderModel) : T5، وتحديداً النسخة google/t5-v1_1-xxl.
tokenizer (CLIPTokenizer) : مُقسِّم من الفئة CLIPTokenizer.
tokenizer_2 (T5TokenizerFast) : مُرمِّز ثانٍ من الفئة T5TokenizerFast.
خط أنابيب Flux لتوليد الصور من النص القابل للتحكم مع شروط الصور.
مرجع: https://bfl.ai/flux-1-tools
call[[diffusers.FluxControlPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 28, sigmas: list[float] | None = None, guidance_scale: float = 3.5, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512)
المعاملات:
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، فسيتم استخدام prompt بدلاً منه
control_image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، list[np.ndarray]، : list[list[torch.Tensor]]، list[list[np.ndarray]] أو list[list[PIL.Image.Image]]): شرط الإدخال الخاص بـ ControlNet لتقديم التوجيه إلى unet للتوليد. إذا تم تحديد النوع على أنه torch.Tensor، فإنه يُمرَّر إلى ControlNet كما هو. يمكن أيضًا قبول PIL.Image.Image كصورة. الأبعاد الافتراضية للصورة الناتجة هي أبعاد image. إذا تم تمرير الارتفاع و/أو العرض، يتم تغيير حجم image وفقًا لذلك. إذا تم تحديد عدة وحدات ControlNet في init، يجب تمرير الصور كقائمة بحيث يمكن تجميع كل عنصر من عناصر القائمة بشكل صحيح للإدخال إلى وحدة ControlNet واحدة.
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، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
sigmas (list[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.
guidance_scale (float, اختياري, القيمة الافتراضية 3.5) : يتم تفعيل مقياس التوجيه المدمج عن طريق تعيين guidance_scale > 1. كلما ارتفع guidance_scale، شجّع النموذج على توليد صور أكثر توافقًا مع الأمر النصي على حساب انخفاض جودة الصورة. تقرب النماذج المُقطّرة بالتوجيه من التوجيه الحقيقي بدون مُصنِّف عند guidance_scale > 1. راجع الورقة البحثية لمعرفة المزيد.
num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.
generator (torch.Generator أو list[torch.Generator]، اختياري) : مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
latents (torch.FloatTensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، فسيتم إنشاء كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
output_type (str، اختياري، القيمة الافتراضية "pil") : صيغة الصورة الناتجة عن عملية التوليد. اختر بين PIL: PIL.Image.Image أو np.array.
return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~pipelines.flux.FluxPipelineOutput بدلاً من 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 الافتراضي 512) : أقصى طول تسلسل يُستخدم مع prompt.
يعيد: ~pipelines.flux.FluxPipelineOutput أو tuple
~pipelines.flux.FluxPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from controlnet_aux import CannyDetector
>>> from diffusers import FluxControlPipeline
>>> from diffusers.utils import load_image
>>> pipe = FluxControlPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-Canny-dev", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
>>> control_image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png"
... )
>>> processor = CannyDetector()
>>> control_image = processor(
... control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024
... )
>>> image = pipe(
... prompt=prompt,
... control_image=control_image,
... height=1024,
... width=1024,
... num_inference_steps=50,
... guidance_scale=30.0,
... ).images[0]
>>> image.save("output.png")
encode_prompt[[diffusers.FluxControlPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str] | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, max_sequence_length: int = 512, lora_scale: float | None = None)
المعاملات:
prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم prompt في جميع مُشفِّرات النص
device : (torch.device): جهاز torch
num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
lora_scale (float، اختياري) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.
FluxControlImg2ImgPipeline[[diffusers.FluxControlImg2ImgPipeline]]
diffusers.FluxControlImg2ImgPipeline[[diffusers.FluxControlImg2ImgPipeline]]
diffusers.FluxControlImg2ImgPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, text_encoder_2: T5EncoderModel, tokenizer_2: T5Tokenizer, transformer: FluxTransformer2DModel)
المعاملات:
transformer (FluxTransformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
text_encoder (CLIPTextModel) : CLIP، وتحديداً النسخة clip-vit-large-patch14.
text_encoder_2 (T5EncoderModel) : T5، وتحديداً النسخة google/t5-v1_1-xxl.
tokenizer (CLIPTokenizer) : مُقسِّم من الفئة CLIPTokenizer.
tokenizer_2 (T5TokenizerFast) : مُرمِّز ثانٍ من الفئة T5TokenizerFast.
خط أنابيب Flux لتعبئة الصور.
مرجع: https://blackforestlabs.ai/announcing-black-forest-labs/
call[[diffusers.FluxControlImg2ImgPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, strength: float = 0.6, num_inference_steps: int = 28, sigmas: list[float] | None = None, guidance_scale: float = 7.0, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512)
المعاملات:
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، فسيتم استخدام prompt بدلاً منه
image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور (image batch) لاستخدامها كنقطة انطلاق. لكل من مصفوفة numpy وtensor الخاص بـ pytorch، النطاق المتوقع للقيم هو بين [0, 1] إذا كان tensor أو قائمة من tensors، فيجب أن يكون الشكل المتوقع (B, C, H, W) أو (C, H, W). إذا كانت مصفوفة numpy أو قائمة من المصفوفات، فيجب أن يكون الشكل المتوقع (B, H, W, C) أو (H, W, C) كما يمكنه قبول كامنات الصور (image latents) كـ image، ولكن إذا تم تمرير الكامنات مباشرةً فلن يتم ترميزها مرة أخرى.
control_image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، list[np.ndarray]، : list[list[torch.Tensor]]، list[list[np.ndarray]] أو list[list[PIL.Image.Image]]): شرط الإدخال الخاص بـ ControlNet لتقديم التوجيه إلى unet للتوليد. إذا تم تحديد النوع على أنه torch.Tensor، فإنه يُمرَّر إلى ControlNet كما هو. يمكن أيضًا قبول PIL.Image.Image كصورة. الأبعاد الافتراضية للصورة الناتجة هي أبعاد image. إذا تم تمرير الارتفاع و/أو العرض، يتم تغيير حجم image وفقًا لذلك. إذا تم تحديد عدة وحدات ControlNet في init، يجب تمرير الصور كقائمة بحيث يمكن تجميع كل عنصر من عناصر القائمة بشكل صحيح للإدخال إلى وحدة ControlNet واحدة.
height (int، اختياري، الافتراضي هو self.unet.config.sample_size * self.vae_scale_factor) : ارتفاع الصورة المولّدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج.
width (int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) : عرض الصورة المولدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج.
strength (float، اختياري، القيمة الافتراضية 1.0) : يحدد مدى تحويل الصورة المرجعية image. يجب أن يكون بين 0 و 1. تُستخدم image كنقطة انطلاق، وكلما ارتفعت قيمة strength زاد مقدار الضوضاء المضافة. يعتمد عدد خطوات إزالة الضوضاء على كمية الضوضاء المضافة في البداية. عندما تكون strength تساوي 1، تكون الضوضاء المضافة في أقصى حد، وتعمل عملية إزالة الضوضاء لعدد التكرارات الكامل المحدد في num_inference_steps. القيمة 1 تتجاهل image بشكل أساسي.
num_inference_steps (int، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
sigmas (list[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.
guidance_scale (float، اختياري، القيمة الافتراضية 7.0) : مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّف guidance_scale على أنه w من المعادلة 2. في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيين guidance_scale > 1. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص prompt، وعادةً على حساب انخفاض جودة الصورة.
num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.
generator (torch.Generator أو list[torch.Generator]، اختياري) : مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
latents (torch.FloatTensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، فسيتم إنشاء كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
output_type (str، اختياري، القيمة الافتراضية "pil") : صيغة الصورة الناتجة عن عملية التوليد. اختر بين PIL: PIL.Image.Image أو np.array.
return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~pipelines.flux.FluxPipelineOutput بدلاً من 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 الافتراضي 512) : أقصى طول تسلسل يُستخدم مع prompt.
يعيد: ~pipelines.flux.FluxPipelineOutput أو tuple
~pipelines.flux.FluxPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from controlnet_aux import CannyDetector
>>> from diffusers import FluxControlImg2ImgPipeline
>>> from diffusers.utils import load_image
>>> pipe = FluxControlImg2ImgPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-Canny-dev", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> prompt = "A robot made of exotic candies and chocolates of different kinds. Abstract background"
>>> image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/watercolor-painting.jpg"
... )
>>> control_image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png"
... )
>>> processor = CannyDetector()
>>> control_image = processor(
... control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024
... )
>>> image = pipe(
... prompt=prompt,
... image=image,
... control_image=control_image,
... strength=0.8,
... height=1024,
... width=1024,
... num_inference_steps=50,
... guidance_scale=30.0,
... ).images[0]
>>> image.save("output.png")
encode_prompt[[diffusers.FluxControlImg2ImgPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str] | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, max_sequence_length: int = 512, lora_scale: float | None = None)
المعاملات:
prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم prompt في جميع مُشفِّرات النص
device : (torch.device): جهاز torch
num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
lora_scale (float، اختياري) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.
FluxPriorReduxPipeline[[diffusers.FluxPriorReduxPipeline]]
diffusers.FluxPriorReduxPipeline[[diffusers.FluxPriorReduxPipeline]]
diffusers.FluxPriorReduxPipeline(image_encoder: SiglipVisionModel, feature_extractor: SiglipImageProcessorPil, image_embedder: ReduxImageEncoder, text_encoder: CLIPTextModel = None, tokenizer: CLIPTokenizer = None, text_encoder_2: T5EncoderModel = None, tokenizer_2: T5Tokenizer = None)
المعاملات:
image_encoder (SiglipVisionModel) : نموذج SIGLIP البصري لتشفير الصورة المدخلة.
feature_extractor (SiglipImageProcessor) : معالج صور لمعالجة الصور مسبقًا لنموذج SIGLIP.
image_embedder (ReduxImageEncoder) : مُشفِّر صور Redux لمعالجة تضمينات SIGLIP.
text_encoder (CLIPTextModel، اختياري) : CLIP، وتحديداً النسخة clip-vit-large-patch14.
text_encoder_2 (T5EncoderModel، اختياري) : T5، وتحديداً النسخة google/t5-v1_1-xxl.
tokenizer (CLIPTokenizer، اختياري) : مُقسِّم من الفئة CLIPTokenizer.
tokenizer_2 (T5TokenizerFast، اختياري) : مُرمِّز ثانٍ من الفئة T5TokenizerFast.
خط أنابيب Flux Redux لتوليد الصور من الصور.
مرجع: https://blackforestlabs.ai/flux-1-tools/
call[[diffusers.FluxPriorReduxPipeline.call]]
__call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, prompt_embeds_scale: float | list[float] | None = 1.0, pooled_prompt_embeds_scale: float | list[float] | None = 1.0, return_dict: bool = True)
المعاملات:
image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور (image batch) لاستخدامها كنقطة انطلاق. بالنسبة لكل من مصفوفة numpy وtensor الخاص بـ pytorch، النطاق المتوقع للقيم هو بين [0, 1] إذا كان tensor أو قائمة من tensors، فيجب أن يكون الشكل المتوقع (B, C, H, W) أو (C, H, W). أما إذا كانت مصفوفة numpy أو قائمة من المصفوفات، فيجب أن يكون الشكل المتوقع (B, H, W, C) أو (H, W, C)
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. ميزة تجريبية: لاستخدام هذه الميزة، تأكد من تحميل مُشفّرات النص بشكل صريح إلى خط الأنابيب. سيتم تجاهل الأوامر إذا لم يتم تحميل مُشفّرات النص.
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2.
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا.
prompt_embeds_scale (float أو list[float]، اختياري، القيمة الافتراضية 1.0) : معامل المقياس (أو قائمة معاملات المقياس لكل صورة) الذي يُطبَّق على تضمينات موجهات الاختزال قبل إرجاعها.
pooled_prompt_embeds_scale (float أو list[float]، اختياري، القيمة الافتراضية 1.0) : معامل المقياس (أو قائمة معاملات المقياس لكل صورة) الذي يُطبَّق على تضمينات الموجهات المجمّعة المُختزَلة قبل إرجاعها.
return_dict (bool، اختياري، القيمة الافتراضية True) : ما إذا كان يجب إرجاع ~pipelines.flux.FluxPriorReduxPipelineOutput بدلاً من tuple عادي.
يعيد: ~pipelines.flux.FluxPriorReduxPipelineOutput أو tuple
~pipelines.flux.FluxPriorReduxPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import FluxPriorReduxPipeline, FluxPipeline
>>> from diffusers.utils import load_image
>>> device = "cuda"
>>> dtype = torch.bfloat16
>>> repo_redux = "black-forest-labs/FLUX.1-Redux-dev"
>>> repo_base = "black-forest-labs/FLUX.1-dev"
>>> pipe_prior_redux = FluxPriorReduxPipeline.from_pretrained(repo_redux, torch_dtype=dtype).to(device)
>>> pipe = FluxPipeline.from_pretrained(
... repo_base, text_encoder=None, text_encoder_2=None, torch_dtype=torch.bfloat16
... ).to(device)
>>> image = load_image(
... "https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/style_ziggy/img5.png"
... )
>>> pipe_prior_output = pipe_prior_redux(image)
>>> images = pipe(
... guidance_scale=2.5,
... num_inference_steps=50,
... generator=torch.Generator("cpu").manual_seed(0),
... **pipe_prior_output,
... ).images
>>> images[0].save("flux-redux.png")
encode_prompt[[diffusers.FluxPriorReduxPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str] | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, max_sequence_length: int = 512, lora_scale: float | None = None)
المعاملات:
prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم prompt في جميع مُشفِّرات النص
device : (torch.device): جهاز torch
num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
lora_scale (float، اختياري) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.
FluxFillPipeline[[diffusers.FluxFillPipeline]]
diffusers.FluxFillPipeline[[diffusers.FluxFillPipeline]]
diffusers.FluxFillPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, text_encoder_2: T5EncoderModel, tokenizer_2: T5Tokenizer, transformer: FluxTransformer2DModel)
المعاملات:
transformer (FluxTransformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
text_encoder (CLIPTextModel) : CLIP، وتحديداً النسخة clip-vit-large-patch14.
text_encoder_2 (T5EncoderModel) : T5، وتحديداً النسخة google/t5-v1_1-xxl.
tokenizer (CLIPTokenizer) : مُقسِّم من الفئة CLIPTokenizer.
tokenizer_2 (T5TokenizerFast) : مُرمِّز ثانٍ من الفئة T5TokenizerFast.
خط أنابيب Flux Fill لتعبئة الصور/توسيع الصور.
مرجع: https://blackforestlabs.ai/flux-1-tools/
call[[diffusers.FluxFillPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Optional[torch.FloatTensor] = None, mask_image: typing.Optional[torch.FloatTensor] = None, masked_image_latents: typing.Optional[torch.FloatTensor] = None, height: int | None = None, width: int | None = None, strength: float = 1.0, num_inference_steps: int = 50, sigmas: list[float] | None = None, guidance_scale: float = 30.0, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512)
المعاملات:
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، فسيتم استخدام prompt بدلاً منه
image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور (image batch) لاستخدامها كنقطة انطلاق. لكل من مصفوفة numpy وtensor الخاص بـ pytorch، النطاق المتوقع للقيم هو بين [0, 1] إذا كان tensor أو قائمة من tensors، فيجب أن يكون الشكل المتوقع (B, C, H, W) أو (C, H, W). أما إذا كانت مصفوفة numpy أو قائمة من المصفوفات، فيجب أن يكون الشكل المتوقع (B, H, W, C) أو (H, W, C).
mask_image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور لتطبيق قناع على image. يتم إعادة رسم البكسلات البيضاء في القناع بينما تُحفظ البكسلات السوداء. إذا كان mask_image صورة PIL، يتم تحويلها إلى قناة واحدة (السطوع) قبل الاستخدام. وإذا كانت مصفوفة numpy أو tensor من pytorch، يجب أن تحتوي على قناة لون واحدة (L) بدلاً من ثلاث، لذا فإن الشكل المتوقع لـ tensor من pytorch هو (B, 1, H, W)، (B, H, W)، (1, H, W)، (H, W). أما لمصفوفة numpy فيكون الشكل (B, H, W, 1)، (B, H, W)، (H, W, 1)، أو (H, W).
masked_image_latents (torch.Tensor، list[torch.Tensor]) : Tensor يمثل دفعة من الصور لتطبيق قناع على image التي ولّدها VAE. إذا لم يُقدَّم، فسيتم توليد متجه قناع الكامنات بواسطة mask_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 افتراضيًا للحصول على أفضل النتائج.
strength (float، اختياري، القيمة الافتراضية 1.0) : يحدد مدى تحويل الصورة المرجعية image. يجب أن يكون بين 0 و 1. تُستخدم image كنقطة انطلاق، وكلما ارتفعت قيمة strength زاد مقدار الضوضاء المضافة. يعتمد عدد خطوات إزالة الضوضاء على كمية الضوضاء المضافة في البداية. عندما تكون strength تساوي 1، تكون الضوضاء المضافة في أقصى حد، وتعمل عملية إزالة الضوضاء لعدد التكرارات الكامل المحدد في num_inference_steps. القيمة 1 تتجاهل image بشكل أساسي.
num_inference_steps (int، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
sigmas (list[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.
guidance_scale (float، اختياري، القيمة الافتراضية 30.0) : مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّف guidance_scale على أنه w من المعادلة 2. في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيين guidance_scale > 1. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص prompt، وعادةً على حساب انخفاض جودة الصورة.
num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.
generator (torch.Generator أو list[torch.Generator]، اختياري) : مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
latents (torch.FloatTensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، فسيتم إنشاء كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
output_type (str، اختياري، القيمة الافتراضية "pil") : صيغة الصورة الناتجة عن عملية التوليد. اختر بين PIL: PIL.Image.Image أو np.array.
return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~pipelines.flux.FluxPipelineOutput بدلاً من 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 الافتراضي 512) : أقصى طول تسلسل يُستخدم مع prompt.
يعيد: ~pipelines.flux.FluxPipelineOutput أو tuple
~pipelines.flux.FluxPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import FluxFillPipeline
>>> from diffusers.utils import load_image
>>> image = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/cup.png")
>>> mask = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/cup_mask.png")
>>> pipe = FluxFillPipeline.from_pretrained("black-forest-labs/FLUX.1-Fill-dev", torch_dtype=torch.bfloat16)
>>> pipe.enable_model_cpu_offload() # save some VRAM by offloading the model to CPU
>>> image = pipe(
... prompt="a white paper cup",
... image=image,
... mask_image=mask,
... height=1632,
... width=1232,
... guidance_scale=30,
... num_inference_steps=50,
... max_sequence_length=512,
... generator=torch.Generator("cpu").manual_seed(0),
... ).images[0]
>>> image.save("flux_fill.png")
encode_prompt[[diffusers.FluxFillPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str] | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, max_sequence_length: int = 512, lora_scale: float | None = None)
المعاملات:
prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم prompt في جميع مُشفِّرات النص
device : (torch.device): جهاز torch
num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
lora_scale (float، اختياري) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.
FluxKontextPipeline[[diffusers.FluxKontextPipeline]]
diffusers.FluxKontextPipeline[[diffusers.FluxKontextPipeline]]
diffusers.FluxKontextPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, text_encoder_2: T5EncoderModel, tokenizer_2: T5Tokenizer, transformer: FluxTransformer2DModel, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None)
المعاملات:
transformer (FluxTransformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
text_encoder (CLIPTextModel) : CLIP، وتحديداً النسخة clip-vit-large-patch14.
text_encoder_2 (T5EncoderModel) : T5، وتحديداً النسخة google/t5-v1_1-xxl.
tokenizer (CLIPTokenizer) : مُقسِّم من الفئة CLIPTokenizer.
tokenizer_2 (T5TokenizerFast) : مُرمِّز ثانٍ من الفئة T5TokenizerFast.
خط أنابيب Flux Kontext لتوليد الصور من الصور والنصوص إلى الصور.
مرجع: https://bfl.ai/announcements/flux-1-kontext-dev
call[[diffusers.FluxKontextPipeline.call]]
__call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, negative_prompt: str | list[str] = None, negative_prompt_2: str | list[str] | None = None, true_cfg_scale: float = 1.0, height: int | None = None, width: int | None = None, num_inference_steps: int = 28, sigmas: list[float] | None = None, guidance_scale: float = 3.5, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, negative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, negative_ip_adapter_image_embeds: list[torch.Tensor] | None = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512, max_area: int = 1048576, _auto_resize: bool = True)
المعاملات:
image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور (image batch) لاستخدامها كنقطة انطلاق. لكل من مصفوفة numpy وtensor الخاص بـ pytorch، النطاق المتوقع للقيم هو بين [0, 1] إذا كان tensor أو قائمة من tensors، فيجب أن يكون الشكل المتوقع (B, C, H, W) أو (C, H, W). إذا كانت مصفوفة numpy أو قائمة من المصفوفات، فيجب أن يكون الشكل المتوقع (B, H, W, C) أو (H, W, C) كما يمكنه قبول كامنات الصور (image latents) كـ image، ولكن إذا تم تمرير الكامنات مباشرةً فلن يتم ترميزها مرة أخرى.
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، فسيتم استخدام prompt بدلاً منه.
negative_prompt (str أو list[str]، اختياري) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير negative_prompt_embeds بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا لم يكن true_cfg_scale أكبر من 1).
negative_prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم negative_prompt في جميع مشفّرات النص.
true_cfg_scale (float، اختياري، القيمة الافتراضية 1.0) : عندما تكون القيمة > 1.0 مع تقديم negative_prompt، يتم تفعيل التوجيه الحر الحقيقي من التصنيف.
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، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
sigmas (list[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.
guidance_scale (float, اختياري, القيمة الافتراضية 3.5) : يتم تفعيل مقياس التوجيه المدمج عن طريق تعيين guidance_scale > 1. كلما ارتفع guidance_scale، شجّع النموذج على توليد صور أكثر توافقًا مع الأمر النصي على حساب انخفاض جودة الصورة. تقرب النماذج المُقطّرة بالتوجيه من التوجيه الحقيقي بدون مُصنِّف عند guidance_scale > 1. راجع الورقة البحثية لمعرفة المزيد.
num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.
generator (torch.Generator أو list[torch.Generator]، اختياري) : مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
latents (torch.FloatTensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، فسيتم إنشاء كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
ip_adapter_image : (PipelineImageInput، اختياري): إدخال صورة اختياري للعمل مع IP Adapters.
ip_adapter_image_embeds (list[torch.Tensor]، اختياري) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون قائمة بطول يساوي عدد وحدات IP-adapter. يجب أن يكون كل عنصر منها متجهًا (tensor) بشكل (batch_size, num_images, emb_dim). إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال ip_adapter_image.
negative_ip_adapter_image : (PipelineImageInput، اختياري): إدخال صورة اختياري للعمل مع IP Adapters.
negative_ip_adapter_image_embeds (list[torch.Tensor]، اختياري) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون قائمة بطول يساوي عدد وحدات IP-adapter. يجب أن يكون كل عنصر منها متجهًا (tensor) بشكل (batch_size, num_images, emb_dim). إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال ip_adapter_image.
negative_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.
negative_pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال negative_prompt.
output_type (str، اختياري، القيمة الافتراضية "pil") : صيغة الصورة الناتجة عن عملية التوليد. اختر بين PIL: PIL.Image.Image أو np.array.
return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~pipelines.flux.FluxPipelineOutput بدلاً من 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 الافتراضي 512) : أقصى طول تسلسل يُستخدم مع prompt.
max_area (int، القيمة الافتراضية 1024 ** 2) : الحد الأقصى لمساحة الصورة المولّدة بالبكسلات. سيتم ضبط الارتفاع والعرض ليلائما هذه المساحة مع الحفاظ على نسبة الأبعاد.
_auto_resize (bool، اختياري، القيمة الافتراضية True) : ما إذا كان سيتم تغيير حجم الصورة المدخلة تلقائيًا إلى الدقة المفضلة.
يعيد: ~pipelines.flux.FluxPipelineOutput أو tuple
~pipelines.flux.FluxPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
>>> import torch
>>> from diffusers import FluxKontextPipeline
>>> from diffusers.utils import load_image
>>> pipe = FluxKontextPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-Kontext-dev", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png"
... ).convert("RGB")
>>> prompt = "Make Pikachu hold a sign that says 'Black Forest Labs is awesome', yarn art style, detailed, vibrant colors"
>>> image = pipe(
... image=image,
... prompt=prompt,
... guidance_scale=2.5,
... generator=torch.Generator().manual_seed(42),
... ).images[0]
>>> image.save("output.png")
encode_prompt[[diffusers.FluxKontextPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str] | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, max_sequence_length: int = 512, lora_scale: float | None = None)
المعاملات:
prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم prompt في جميع مُشفِّرات النص
device : (torch.device): جهاز torch
num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
lora_scale (float، اختياري) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.
FluxKontextInpaintPipeline[[diffusers.FluxKontextInpaintPipeline]]
diffusers.FluxKontextInpaintPipeline[[diffusers.FluxKontextInpaintPipeline]]
diffusers.FluxKontextInpaintPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, text_encoder_2: T5EncoderModel, tokenizer_2: T5Tokenizer, transformer: FluxTransformer2DModel, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None)
المعاملات:
transformer (FluxTransformer2DModel) : معمارية Transformer الشرطية (MMDiT) لإزالة الضوضاء من الكامنات المُرمّزة للصورة.
scheduler (FlowMatchEulerDiscreteScheduler) : مُجدوِل يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كامنات الصورة المُرمَّزة.
vae (AutoencoderKL) : نموذج الترميز التحويلي التبايني (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
text_encoder (CLIPTextModel) : CLIP، وتحديداً النسخة clip-vit-large-patch14.
text_encoder_2 (T5EncoderModel) : T5، وتحديداً النسخة google/t5-v1_1-xxl.
tokenizer (CLIPTokenizer) : مُقسِّم من الفئة CLIPTokenizer.
tokenizer_2 (T5TokenizerFast) : مُرمِّز ثانٍ من الفئة T5TokenizerFast.
خط أنابيب Flux Kontext لتوليد الصور من النص.
مرجع: https://blackforestlabs.ai/announcing-black-forest-labs/
call[[diffusers.FluxKontextInpaintPipeline.call]]
__call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, image_reference: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, mask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, negative_prompt: str | list[str] = None, negative_prompt_2: str | list[str] | None = None, true_cfg_scale: float = 1.0, height: int | None = None, width: int | None = None, strength: float = 1.0, padding_mask_crop: int | None = None, num_inference_steps: int = 28, sigmas: list[float] | None = None, guidance_scale: float = 3.5, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.FloatTensor] = None, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, negative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, negative_ip_adapter_image_embeds: list[torch.Tensor] | None = None, negative_prompt_embeds: typing.Optional[torch.FloatTensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, output_type: str | None = 'pil', return_dict: bool = True, joint_attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512, max_area: int = 1048576, _auto_resize: bool = True)
المعاملات:
image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور التي سيتم إجراء inpaint عليها (أي الأجزاء من الصورة التي سيتم إخفاؤها باستخدام mask_image وإعادة رسمها وفقاً لـ prompt و image_reference). بالنسبة لكل من مصفوفة numpy و tensor الخاص بـ pytorch، فإن نطاق القيم المتوقع يتراوح بين [0, 1] إذا كان tensor أو قائمة من tensors، فيجب أن يكون الشكل المتوقع (B, C, H, W) أو (C, H, W). إذا كانت مصفوفة numpy أو قائمة من المصفوفات، فيجب أن يكون الشكل المتوقع (B, H, W, C) أو (H, W, C) كما يمكنه أيضاً قبول image latents كـ image، ولكن إذا تم تمرير latents مباشرةً فلن يتم ترميزها مرة أخرى.
image_reference (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور (image batch) تُستخدم كنقطة انطلاق للمجال المقنّع. لكل من مصفوفة numpy وtensor الخاص بـ pytorch، النطاق المتوقع للقيم هو بين [0, 1] إذا كان tensor أو قائمة من tensors، يجب أن يكون الشكل المتوقع (B, C, H, W) أو (C, H, W) إذا كانت مصفوفة numpy أو قائمة من المصفوفات، يجب أن يكون الشكل المتوقع (B, H, W, C) أو (H, W, C) كما يمكنه قبول كامنات الصور (image latents) كـ image، ولكن إذا تم تمرير الكامنات مباشرةً فلن يتم ترميزها مرة أخرى.
mask_image (torch.Tensor، PIL.Image.Image، np.ndarray، list[torch.Tensor]، list[PIL.Image.Image]، أو list[np.ndarray]) : Image، مصفوفة numpy أو tensor تمثل دفعة من الصور لتطبيق قناع على image. يتم إعادة رسم البكسلات البيضاء في القناع بينما تُحفظ البكسلات السوداء. إذا كان mask_image صورة PIL، يتم تحويلها إلى قناة واحدة (السطوع) قبل الاستخدام. وإذا كانت مصفوفة numpy أو tensor من pytorch، يجب أن تحتوي على قناة لون واحدة (L) بدلاً من ثلاث، لذا فإن الشكل المتوقع لـ tensor من pytorch هو (B, 1, H, W)، (B, H, W)، (1, H, W)، (H, W). أما لمصفوفة numpy فيكون الشكل (B, H, W, 1)، (B, H, W)، (H, W, 1)، أو (H, W).
prompt (str أو list[str]، اختياري) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، فسيتم استخدام prompt بدلاً منه.
negative_prompt (str أو list[str]، اختياري) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير negative_prompt_embeds بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا لم يكن true_cfg_scale أكبر من 1).
negative_prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة إليها، والتي سيتم إرسالها إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم negative_prompt في جميع مشفّرات النص.
true_cfg_scale (float، اختياري، القيمة الافتراضية 1.0) : يتم تفعيل التوجيه الحر من التصنيف (مقياس التوجيه) عندما يكون true_cfg_scale > 1 ويتم توفير negative_prompt.
height (int، اختياري، الافتراضي هو self.unet.config.sample_size * self.vae_scale_factor) : ارتفاع الصورة المولّدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج.
width (int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) : عرض الصورة المولدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج.
strength (float، اختياري، القيمة الافتراضية 1.0) : يحدد مدى تحويل الصورة المرجعية image. يجب أن يكون بين 0 و 1. تُستخدم image كنقطة انطلاق، وكلما ارتفعت قيمة strength زاد مقدار الضوضاء المضافة. يعتمد عدد خطوات إزالة الضوضاء على كمية الضوضاء المضافة في البداية. عندما تكون strength تساوي 1، تكون الضوضاء المضافة في أقصى حد، وتعمل عملية إزالة الضوضاء لعدد التكرارات الكامل المحدد في num_inference_steps. القيمة 1 تتجاهل image بشكل أساسي.
padding_mask_crop (int, اختياري, القيمة الافتراضية None) : حجم الهامش في الاقتصاص الذي سيُطبَّق على الصورة والقناع. إذا كانت None، فلن يُطبَّق أي اقتصاص على الصورة وmask_image. إذا لم تكن padding_mask_crop هي None، فسيتم أولاً إيجاد منطقة مستطيلة بنفس نسبة أبعاد الصورة وتحتوي على كل المناطق المقنَّعة، ثم توسيع تلك المنطقة بناءً على padding_mask_crop. بعد ذلك، ستُقتَص الصورة وmask_image بناءً على المنطقة الموسَّعة قبل تغيير حجمهما إلى حجم الصورة الأصلي لأغراض إعادة البناء. هذا مفيد عندما تكون المنطقة المقنَّعة صغيرة بينما تكون الصورة كبيرة وتحتوي على معلومات غير ذات صلة بإعادة البناء، مثل الخلفية.
num_inference_steps (int، اختياري، القيمة الافتراضية 50) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال.
sigmas (list[float]، اختياري) : قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل sigmas في طريقة set_timesteps الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps.
guidance_scale (float، اختياري، القيمة الافتراضية 3.5) : يتم تفعيل مقياس التوجيه المدمج عن طريق تعيين guidance_scale > 1. كلما ارتفع guidance_scale، شجّع النموذج على توليد صور أكثر توافقًا مع prompt على حساب انخفاض جودة الصورة. تقرب النماذج المُقطّرة بالتوجيه من التوجيه الحقيقي الحر من المُصنّف لقيم guidance_scale > 1. راجع الورقة البحثية لمعرفة المزيد.
num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه.
generator (torch.Generator أو list[torch.Generator]، اختياري) : مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
latents (torch.FloatTensor، اختياري) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، فسيتم إنشاء كامنات من خلال الاستخراج باستخدام generator العشوائي المُقدَّم.
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
ip_adapter_image : (PipelineImageInput، اختياري): إدخال صورة اختياري للعمل مع IP Adapters.
ip_adapter_image_embeds (list[torch.Tensor]، اختياري) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون قائمة بطول يساوي عدد وحدات IP-adapter. يجب أن يكون كل عنصر منها متجهًا (tensor) بشكل (batch_size, num_images, emb_dim). إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال ip_adapter_image.
negative_ip_adapter_image : (PipelineImageInput، اختياري): إدخال صورة اختياري للعمل مع IP Adapters.
negative_ip_adapter_image_embeds (list[torch.Tensor]، اختياري) : تمثيلات صور مُولّدة مسبقًا لـ IP-Adapter. يجب أن يكون قائمة بطول يساوي عدد وحدات IP-adapter. يجب أن يكون كل عنصر منها متجهًا (tensor) بشكل (batch_size, num_images, emb_dim). إذا لم يُقدَّم، تُحسب التمثيلات من معامل الإدخال ip_adapter_image.
negative_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال negative_prompt.
negative_pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمعة سالبة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد pooled negative_prompt_embeds من معامل الإدخال negative_prompt.
output_type (str، اختياري، القيمة الافتراضية "pil") : صيغة الصورة الناتجة عن عملية التوليد. اختر بين PIL: PIL.Image.Image أو np.array.
return_dict (bool، اختياري، الافتراضي True) : ما إذا كان يجب إرجاع ~pipelines.flux.FluxPipelineOutput بدلاً من 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 الافتراضي 512) : أقصى طول تسلسل يُستخدم مع prompt.
max_area (int، القيمة الافتراضية 1024 ** 2) : الحد الأقصى لمساحة الصورة المولّدة بالبكسلات. سيتم ضبط الارتفاع والعرض ليلائما هذه المساحة مع الحفاظ على نسبة الأبعاد.
_auto_resize (bool، اختياري، القيمة الافتراضية True) : ما إذا كان سيتم تغيير حجم الصورة المدخلة تلقائيًا إلى الدقة المفضلة.
يعيد: ~pipelines.flux.FluxPipelineOutput أو tuple
~pipelines.flux.FluxPipelineOutput إذا كان return_dict هو True، وإلا tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
أمثلة:
التعبئة الداخلية باستخدام النص فقط
>>> import torch
>>> from diffusers import FluxKontextInpaintPipeline
>>> from diffusers.utils import load_image
>>> prompt = "Change the yellow dinosaur to green one"
>>> img_url = (
... "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/dinosaur_input.jpeg?raw=true"
... )
>>> mask_url = (
... "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/dinosaur_mask.png?raw=true"
... )
>>> source = load_image(img_url)
>>> mask = load_image(mask_url)
>>> pipe = FluxKontextInpaintPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-Kontext-dev", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> image = pipe(prompt=prompt, image=source, mask_image=mask, strength=1.0).images[0]
>>> image.save("kontext_inpainting_normal.png")
التلوين الداخلي مع تكييف الصورة
>>> import torch
>>> from diffusers import FluxKontextInpaintPipeline
>>> from diffusers.utils import load_image
>>> pipe = FluxKontextInpaintPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-Kontext-dev", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> prompt = "Replace this ball"
>>> img_url = "https://images.pexels.com/photos/39362/the-ball-stadion-football-the-pitch-39362.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"
>>> mask_url = (
... "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/ball_mask.png?raw=true"
... )
>>> image_reference_url = (
... "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTah3x6OL_ECMBaZ5ZlJJhNsyC-OSMLWAI-xw&s"
... )
>>> source = load_image(img_url)
>>> mask = load_image(mask_url)
>>> image_reference = load_image(image_reference_url)
>>> mask = pipe.mask_processor.blur(mask, blur_factor=12)
>>> image = pipe(
... prompt=prompt, image=source, mask_image=mask, image_reference=image_reference, strength=1.0
... ).images[0]
>>> image.save("kontext_inpainting_ref.png")
encode_prompt[[diffusers.FluxKontextInpaintPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], prompt_2: str | list[str] | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.FloatTensor] = None, pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = None, max_sequence_length: int = 512, lora_scale: float | None = None)
المعاملات:
prompt (str أو list[str]، اختياري) : النص الذي سيتم ترميزه
prompt_2 (str أو list[str]، اختياري) : الموجه أو الموجهات المرسل إلى tokenizer_2 وtext_encoder_2. إذا لم يُعرَّف، يُستخدم prompt في جميع مُشفِّرات النص
device : (torch.device): جهاز torch
num_images_per_prompt (int) : عدد الصور التي يجب توليدها لكل موجه
prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال prompt.
pooled_prompt_embeds (torch.FloatTensor، اختياري) : تمثيلات نصية مجمّعة مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد التمثيلات النصية المجمّعة من معامل الإدخال prompt.
lora_scale (float، اختياري) : مقياس lora سيُطبَّق على جميع طبقات LoRA في مُشفِّر النص إذا كانت طبقات LoRA محمَّلة.
Xet Storage Details
- Size:
- 202 kB
- Xet hash:
- 6bef2e881291957f57d1b098f6ad540b2039d714b86ae1e5515e4e01be9be4d2
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.