# DreamLite

DreamLite هو نموذج لتحويل النص إلى صورة وتحرير الصور من ByteDance. يجمع بين U-Net ثنائي الأبعاد مخصص (`DreamLiteUNetModel`) ومشفّر متعدد الوسائط `Qwen3-VL` كمشفّر للتعليمات النصية/الصورية، ويستخدم VAE من نوع `AutoencoderTiny` (بأسلوب TAESD) لتشفير وفك تشفير الكمون بسرعة.

يتم عرض خطّتي أنابيب:

| خط أنابيب | الأنماط | CFG | حالة الاستخدام |
|---|---|---|---|
| [DreamLitePipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/dreamlite#diffusers.DreamLitePipeline) | نص إلى صورة **و** تحرير الصور (يتم اختيارها تلقائيًا بناءً على ما إذا كان `image` هو `None`) | CFG مزدوج بفرعين (3) (`guidance_scale` للفرع النصي، `image_guidance_scale` للفرع الصوري، على غرار InstructPix2Pix) | أعلى جودة |
| [DreamLiteMobilePipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/dreamlite#diffusers.DreamLiteMobilePipeline) | نص إلى صورة **و** تحرير الصور (يتم اختيارها تلقائيًا بناءً على ما إذا كان `image` هو `None`) | لا شيء — مُصغَّر، تمريرة UNet واحدة لكل خطوة | على الجهاز / زمن استجابة منخفض |

نقاط التفتيش الرسمية:

* النموذج الأساسي: [carlofkl/DreamLite-base](https://huggingface.co/carlofkl/DreamLite-base)
* نموذج جوال مُقطّر: [carlofkl/DreamLite-mobile](https://huggingface.co/carlofkl/DreamLite-mobile)

> [!TIP]
> تكتشف كلا خطتي العمل تلقائيًا ما إذا كان الوضع هو توليد صورة من نص أو تحرير صورة، بناءً على ما إذا كان تم تقديم معامل `image`. لا توجد فئة منفصلة باسم `Img2Img`.

> [!TIP]
> عند تحميل صورة مدخلات للتحرير، يُفضَّل استخدام `diffusers.utils.load_image(...)` بدلاً من `PIL.Image.open(...)` الخام. يفرض `load_image` تحويلًا إلى RGB ويطبّق اتجاه EXIF، وكلاهما تفترضه خط المعالجة. أما استخدام `Image.open` العادي لمصدر بصيغة RGBA / لوحة ألوان / مُدوَّر عبر EXIF فسيُنتج بشكل صامت شروطًا كامنة مختلفة ويُسهم في تدهور جودة المخرجات.

## النص إلى صورة (أساسي)

```python
import torch
from diffusers import DreamLitePipeline

pipe = DreamLitePipeline.from_pretrained("carlofkl/DreamLite-base", revision="diffusers", dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

image = pipe(
    prompt="a dog running on the grass",
    negative_prompt="",
    height=1024,
    width=1024,
    num_inference_steps=28,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("dreamlite_t2i.png")
```

## تحرير الصور (الأساسي)

مرّر `image` للدخول إلى وضع التحرير. يكون كل من `guidance_scale` (الفرع النصي) و`image_guidance_scale` (الفرع الصوري) نشطين هنا.

```python
import torch
from diffusers import DreamLitePipeline
from diffusers.utils import load_image

pipe = DreamLitePipeline.from_pretrained("carlofkl/DreamLite-base", revision="diffusers", dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

source = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png")

image = pipe(
    prompt="turn the cat into a corgi",
    image=source,
    height=1024,
    width=1024,
    num_inference_steps=28,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("dreamlite_edit.png")
```

## النص إلى صورة (جوال)

يتم تقطير خط أنابيب الجوال ويتخطى CFG بالكامل — تمريرة واحدة للأمام في UNet لكل خطوة. يقبل نفس الحجة `prompt` / `height` / `width` / `num_inference_steps`، لكنه **يتجاهل** `guidance_scale` و`image_guidance_scale` إذا تم تمريرها (يُسجَّل تحذير).

```python
import torch
from diffusers import DreamLiteMobilePipeline

pipe = DreamLiteMobilePipeline.from_pretrained("carlofkl/DreamLite-mobile", revision="diffusers", dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

image = pipe(
    prompt="a dog running on the grass",
    height=1024,
    width=1024,
    num_inference_steps=4,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("dreamlite_mobile_t2i.png")
```

## تحرير الصور (جوال)

```python
import torch
from diffusers import DreamLiteMobilePipeline
from diffusers.utils import load_image

pipe = DreamLiteMobilePipeline.from_pretrained("carlofkl/DreamLite-mobile", revision="diffusers", dtype=torch.bfloat16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

source = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png")

image = pipe(
    prompt="turn the cat into a corgi",
    image=source,
    height=1024,
    width=1024,
    num_inference_steps=4,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("dreamlite_mobile_edit.png")
```

## ملاحظات وحدود

* تفرض كلا خطتي العمل `batch_size = 1` داخلياً؛ ويتحكم `num_images_per_prompt` في عدد العينات المستخرجة من نفس الأمر النصي بدلاً من الدفعات المتوازية.
* مشفّر المُوجِّه هو `Qwen3-VL`، وهو نموذج متعدد الوسائط. لذا فإن تحميل خط الأنابيب الكامل يتطلب ذاكرة GPU كافية لكل من U-Net ومشفر النص Qwen3-VL (حوالي 4 جيجابايت + حوالي 0.7 جيجابايت في bf16 للإصدار الأساسي).
* يكون `AutoencoderTiny` هو VAE ويعرّض `encoder_block_out_channels`؛ ويُشتق `vae_scale_factor` منه عند تهيئة خط الأنابيب.

## DreamLitePipeline[[diffusers.DreamLitePipeline]]

#### diffusers.DreamLitePipeline[[diffusers.DreamLitePipeline]]

```python
diffusers.DreamLitePipeline(text_encoder: Qwen3VLForConditionalGeneration, tokenizer: AutoTokenizer, processor: Qwen3VLProcessor, vae: AutoencoderTiny, unet: DreamLiteUNetModel, scheduler: FlowMatchEulerDiscreteScheduler)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/dreamlite/pipeline_dreamlite.py#L155)

خط أنابيب DreamLite لتوليد الصور من النص وتحرير الصور بناءً على التعليمات.

يدعم نفس خط الأنابيب كلا الوضعين؛ يتم اكتشاف وضع التشغيل تلقائيًا من المدخلات:

- `image is None` -> نص إلى صورة (CFG واحد على النص).
- `image is not None` -> من صورة إلى صورة / تعديل تعليمات (CFG مزدوج: نص + صورة).

المكوّنات: text_encoder ([*~transformers.Qwen3VLForConditionalGeneration*]): مُشفّر نصي/بصري متعدد الوسائط يُستخدم لإنتاج تمثيلات شرطية. tokenizer ([*~transformers.AutoTokenizer*]): مُجزّئ للنص فقط (وضع التوليد). processor ([*~transformers.Qwen3VLProcessor*]): مُعالج متعدد الوسائط لوضع التعديل (قالب النص + الصورة). vae ([*~diffusers.AutoencoderTiny*]): VAE صغير مناسب للأجهزة المحمولة لتشفير/فك تشفير الكمون. unet ([*~diffusers.DreamLiteUNetModel*]): DreamLite UNet (GQA + qk_norm + طبقات التفكيك العميق). scheduler ([*~diffusers.FlowMatchEulerDiscreteScheduler*]): مُجدول أويلر لمطابقة التدفق مع إزاحة ديناميكية.

ملاحظة: `batch_size` مُقيَّد حاليًا بقيمة `1`؛ `num_images_per_prompt` مدعوم.

#### __call__[[diffusers.DreamLitePipeline.__call__]]

```python
__call__(prompt: typing.Optional[str] = None, negative_prompt: typing.Optional[str] = None, image: typing.Optional[PIL.Image.Image] = None, height: typing.Optional[int] = None, width: typing.Optional[int] = None, guidance_scale: float = 3.5, image_guidance_scale: float = 1.5, num_inference_steps: int = 30, sigmas: typing.Optional[typing.List[float]] = None, num_images_per_prompt: typing.Optional[int] = 1, generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = None, output_type: typing.Optional[str] = 'pil', return_dict: bool = True, max_sequence_length: int = 200, text_pad_embedding: typing.Optional[torch.Tensor] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/dreamlite/pipeline_dreamlite.py#L388)

**المعاملات:**

prompt : موجه نصي.

negative_prompt : نص موجه سلبي (الافتراضي هو سلسلة فارغة).

image : صورة إدخال اختيارية. إذا تم توفيرها، يعمل خط الأنابيب في وضع **التحرير / من صورة إلى صورة** مع إرشاد مزدوج بدون تصنيف؛ وإلا فإنه يعمل في وضع **من نص إلى صورة**.

height : دقة الإخراج (الارتفاع). القيمة الافتراضية هي `default_sample_size * vae_scale_factor` (1024). تنطبق نفس القيمة الافتراضية في كل من T2I و I2I؛ مرّر قيمة صريحة لتجاوزها.

width : دقة الإخراج (العرض). القيمة الافتراضية هي `default_sample_size * vae_scale_factor` (1024). تنطبق نفس القيمة الافتراضية في كل من T2I و I2I؛ مرّر قيمة صريحة لتجاوزها.

guidance_scale : مقياس CFG على فرع النص (في كلا الوضعين).

image_guidance_scale : مقياس CFG إضافي على فرع الصورة (وضع التحرير فقط).

num_inference_steps : عدد خطوات إزالة الضوضاء.

sigmas : قيم sigmas صريحة اختيارية لـ FlowMatch؛ الافتراضي هو linspace منتظم.

num_images_per_prompt : عدد الصور المُخرَجة لكل موجه (ملاحظة: يُجبر `batch_size` على القيمة 1).

generator : مولّد عشوائي أو أكثر.

output_type : `"pil"` أو `"np"` أو `"pt"` أو `"latent"`.

return_dict : إذا كانت القيمة True، تُرجع [DreamLitePipelineOutput](/docs/diffusers/v0.43.0/ar/api/pipelines/dreamlite#diffusers.DreamLitePipelineOutput)؛ وإلا تُرجع tuple `(images,)`.

max_sequence_length : الحد الأقصى لعدد رموز موجه المستخدم التي تُحفظ بعد إزالة بادئة قالب المحادثة. ينطبق هذا فقط على وضع `generate` (حيث يستخدم وضع `edit` الحشو الأصلي لمعالج الوسائط المتعددة).

text_pad_embedding : تضمين اختياري مُتعلَّم للمواضع المقنّعة.

**يعيد:**

[DreamLitePipelineOutput](/docs/diffusers/v0.43.0/ar/api/pipelines/dreamlite#diffusers.DreamLitePipelineOutput) أو `tuple`.

شغّل خط أنابيب DreamLite.

## DreamLiteMobilePipeline[[diffusers.DreamLiteMobilePipeline]]

#### diffusers.DreamLiteMobilePipeline[[diffusers.DreamLiteMobilePipeline]]

```python
diffusers.DreamLiteMobilePipeline(text_encoder: Qwen3VLForConditionalGeneration, tokenizer: AutoTokenizer, processor: Qwen3VLProcessor, vae: AutoencoderTiny, unet: DreamLiteUNetModel, scheduler: FlowMatchEulerDiscreteScheduler)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/dreamlite/pipeline_dreamlite_mobile.py#L156)

خط أنابيب DreamLite **Mobile**: نسخة مُصغّرة وخالية من التوجيه الحر من المُصنِّف من [DreamLitePipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/dreamlite#diffusers.DreamLitePipeline) للاستدلال السريع بعدد قليل من الخطوات (الافتراضي 4 خطوات).

يتم اكتشاف وضع التشغيل تلقائيًا من المدخلات (على غرار خط الأنابيب الأساسي):

- `image is None` -> من النص إلى الصورة.
- `image is not None` -> من صورة إلى صورة / تعديل تعليمات.

بما أن التوجيه الحر من المُصنِّف **مُستخلص**، فإن `guidance_scale` و`image_guidance_scale` مقبولة من أجل توافق الواجهة البرمجية مع [DreamLitePipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/dreamlite#diffusers.DreamLitePipeline) لكنها تُتجاهل في حلقة إزالة الضوضاء. كما أن `negative_prompt` غير موجودة عمداً.

Components (مطابق لخط الأنابيب الأساسي): text_encoder ([*~transformers.Qwen3VLForConditionalGeneration*]): مُشفِّر نص/رؤية متعدد الوسائط. tokenizer ([*~transformers.AutoTokenizer*]): مُجزِّئ للنص فقط (وضع التوليد). processor ([*~transformers.Qwen3VLProcessor*]): مُعالج متعدد الوسائط لوضع التحرير. vae ([*~diffusers.AutoencoderTiny*]): VAE صغير مناسب للأجهزة المحمولة. unet ([*~diffusers.DreamLiteUNetModel*]): DreamLite UNet. scheduler ([*~diffusers.FlowMatchEulerDiscreteScheduler*]): مُجدول أويلر لمطابقة التدفق مع إزاحة ديناميكية.

ملاحظة: `batch_size` مُقيَّد حاليًا بقيمة `1`؛ `num_images_per_prompt` مدعوم.

#### __call__[[diffusers.DreamLiteMobilePipeline.__call__]]

```python
__call__(prompt: typing.Union[str, typing.List[str]] = None, image: typing.Optional[PIL.Image.Image] = None, height: typing.Optional[int] = None, width: typing.Optional[int] = None, num_inference_steps: int = 4, guidance_scale: typing.Optional[float] = None, image_guidance_scale: typing.Optional[float] = None, sigmas: typing.Optional[typing.List[float]] = None, num_images_per_prompt: typing.Optional[int] = 1, generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = None, output_type: typing.Optional[str] = 'pil', return_dict: bool = True, max_sequence_length: int = 200, text_pad_embedding: typing.Optional[torch.Tensor] = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/dreamlite/pipeline_dreamlite_mobile.py#L384)

**المعاملات:**

prompt : موجه نصي.

image : صورة إدخال اختيارية. إذا تم تقديمها، يتم التشغيل في وضع **التحرير / من صورة إلى صورة**؛ وإلا يتم التشغيل في وضع **من نص إلى صورة**.

height : دقة الإخراج (الارتفاع). القيمة الافتراضية هي `default_sample_size * vae_scale_factor` (1024).

width : دقة الإخراج (العرض). القيمة الافتراضية هي `default_sample_size * vae_scale_factor` (1024).

num_inference_steps : عدد خطوات إزالة الضوضاء. القيمة الافتراضية هي **4** (مُقطَّرة).

guidance_scale : تم قبوله لضمان توافق الواجهة البرمجية مع [DreamLitePipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/dreamlite#diffusers.DreamLitePipeline)؛ **يتم تجاهله** لأن CFG تم استخلاصه.

image_guidance_scale : تم قبوله لضمان توافق الواجهة البرمجية مع [DreamLitePipeline](/docs/diffusers/v0.43.0/ar/api/pipelines/dreamlite#diffusers.DreamLitePipeline)؛ **يتم تجاهله** لأن CFG تم استخلاصه.

sigmas : قيم sigmas صريحة اختيارية لـ FlowMatch؛ الافتراضي هو linspace منتظم.

num_images_per_prompt : عدد الصور المُخرَجة لكل موجه (ملاحظة: يُجبر `batch_size` على القيمة 1).

generator : مولّد عشوائي أو أكثر.

output_type : `"pil"` أو `"np"` أو `"pt"` أو `"latent"`.

return_dict : إذا كانت القيمة True، تُرجع [DreamLitePipelineOutput](/docs/diffusers/v0.43.0/ar/api/pipelines/dreamlite#diffusers.DreamLitePipelineOutput)؛ وإلا `(images,)`.

max_sequence_length : الحد الأقصى لعدد رموز موجه المستخدم التي تُحفظ بعد إزالة بادئة قالب المحادثة. ينطبق هذا فقط على وضع `generate` (حيث يستخدم وضع `edit` الحشو الأصلي لمعالج الوسائط المتعددة).

text_pad_embedding : تضمين اختياري مُتعلَّم للمواضع المقنّعة.

**يعيد:**

[DreamLitePipelineOutput](/docs/diffusers/v0.43.0/ar/api/pipelines/dreamlite#diffusers.DreamLitePipelineOutput) أو `tuple`.

شغّل خط أنابيب DreamLite Mobile المُقطّر.

## DreamLitePipelineOutput[[diffusers.DreamLitePipelineOutput]]

#### diffusers.DreamLitePipelineOutput[[diffusers.DreamLitePipelineOutput]]

```python
diffusers.DreamLitePipelineOutput(images: typing.Union[typing.List[PIL.Image.Image], numpy.ndarray])
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/dreamlite/pipeline_output.py#L25)

**المعاملات:**

images (`List[PIL.Image.Image]` أو `np.ndarray`) : قائمة من صور PIL منزوعة الضوضاء بطول `batch_size` أو مصفوفة NumPy بأبعاد `(batch_size, height, width, num_channels)`. تمثل صور PIL أو مصفوفة NumPy الصور منزوعة الضوضاء من خط أنابيب الانتشار.

فئة الإخراج لخطوط أنابيب DreamLite.

