diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000000..81ef218a49 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,80 @@ +# المساهمة في Fooocus + +شكراً لاهتمامك بالمساهمة في Fooocus! نحن نقدر جميع المساهمات من المجتمع. + +## كيفية المساهمة + +### الإبلاغ عن المشاكل + +إذا وجدت مشكلة في Fooocus، يرجى: + +1. البحث في [Issues](https://github.com/lllyasviel/Fooocus/issues) للتأكد من أن المشكلة لم يتم الإبلاغ عنها مسبقاً +2. إنشاء issue جديد مع وصف تفصيلي للمشكلة +3. تضمين معلومات حول: + - إصدار Fooocus الذي تستخدمه + - نظام التشغيل + - مواصفات GPU + - خطوات إعادة إنتاج المشكلة + - لقطات شاشة أو سجلات إذا كانت متاحة + +### طلب الميزات + +إذا كان لديك فكرة لميزة جديدة، يرجى: + +1. البحث في [Issues](https://github.com/lllyasviel/Fooocus/issues) للتأكد من أن الفكرة لم يتم اقتراحها مسبقاً +2. إنشاء issue جديد مع وصف تفصيلي للميزة المقترحة +3. شرح كيف ستفيد الميزة المستخدمين +4. توفير أمثلة أو حالات استخدام إذا كانت متاحة + +### إرسال Pull Requests + +نرحب بجميع المساهمات! قبل إرسال Pull Request، يرجى: + +1. Fork المستودع +2. إنشاء branch جديد للميزة أو الإصلاح +3. إجراء التغييرات المطلوبة +4. التأكد من أن الكود يتبع معايير المشروع +5. كتابة اختبارات إذا لزم الأمر +6. تحديث التوثيق إذا لزم الأمر +7. إرسال Pull Request إلى الفرع الرئيسي + +### معايير الكود + +- اتبع نمط الكود الموجود في المشروع +- استخدم أسماء متغيرات ووظائف واضحة ووصفية +- أضف تعليقات للكود المعقد +- تأكد من أن الكود يعمل بشكل صحيح قبل الإرسال +- اختبار الكود على أنظمة مختلفة إذا كان ذلك ممكناً + +### التوثيق + +- تحديث التوثيق عند إضافة ميزات جديدة +- إضافة أمثلة لاستخدام الميزات الجديدة +- التأكد من أن التوثيق واضح وسهل الفهم +- ترجمة التوثيق إلى لغات أخرى إذا كان ذلك ممكناً + +## قواعد السلوك + +نحن نلتزم بتوفير بيئة مفتوحة وترحيبية. يرجى: + +- احترام جميع المساهمين +- استخدام لغة مهذبة وبناءة +- التركيز على ما هو أفضل للمشروع +- قبول النقد البناء +- التعاون مع الآخرين + +## التواصل + +إذا كان لديك أي أسئلة حول المساهمة، يرجى: + +- فتح issue في GitHub +- الانضمام إلى مجتمع Fooocus +- مراجعة التوثيق المتاح + +## شكر خاص + +نشكر جميع المساهمين الذين ساعدوا في جعل Fooocus أفضل! + +--- + +**ملاحظة:** Fooocus هو مشروع مفتوح المصدر ومجاني. نحن نقدر جميع المساهمات، لكننا لا نقدم أي تعويض مالي للمساهمين. diff --git a/.github/EXTRAS.md b/.github/EXTRAS.md new file mode 100644 index 0000000000..e838df5974 --- /dev/null +++ b/.github/EXTRAS.md @@ -0,0 +1,310 @@ +# مجلد extras/ - الإضافات والمحاضرات + +## فهرس الملفات + +| الملف | الوظيفة | +|-------|---------| +| `censor.py` | فحص NSFW | +| `expansion.py` | توسيع البرومبت | +| `face_crop.py` | قص الوجوه | +| `interrogate.py` | وصف الصور (BLIP) | +| `wd14tagger.py` | وصف الصور الأنمي | +| `resampler.py` | نموذج Resampler | +| `preprocessors.py` | المعالجة المسبقة | +| `ip_adapter.py` | تطبيق IP-Adapter | +| `inpaint_mask.py` | توليد القناع | +| `vae_interpose.py` | تحويل VAE | + +--- + +## 📄 extras/censor.py + +### 1. الوظيفة الأساسية (Core Function) +فحص الصور للمحتوى NSFW وحجبها. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `transformers` - نموذج Safety Checker +- `modules.config` - تحميل النموذج +- `ldm_patched.modules.model_management` - إدارة الذاكرة + +**الفئات:** +- `Censor`: فاحص NSFW + +**الدوال:** +- `init()`: تحميل النموذج +- `censor()`: فحص وحجب الصور + +**المنطق:** +- يستخدم CLIPImageProcessor لمعالجة الصور +- يستخدم StableDiffusionSafetyChecker للفحص + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **التأثير عند التعديل:** تعطيل فحص NSFW + +--- + +## 📄 extras/expansion.py + +### 1. الوظيفة الأساسية (Core Function) +محرك توسيع البرومبت باستخدام GPT2. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `transformers` - نموذج GPT2 +- `ldm_patched.modules.model_management` - إدارة الذاكرة + +**الفئات:** +- `FooocusExpansion`: محرك التوسيع + +**الدوال:** +- `__init__()`: تحميل النموذج والـ tokenizer +- `__call__()`: توسيع البرومبت +- `logits_processor()`: معالجة النتائج + +**المنطق:** +- يستخدم GPT2 لتوليد كلمات إيجابية +- يقيّد الكلمات باستخدام positive.txt +- يدعم Seed العشوائي + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py`, `default_pipeline.py` +- **التأثير عند التعديل:** تعطيل توسيع البرومبت + +--- + +## 📄 extras/face_crop.py + +### 1. الوظيفة الأساسية (Core Function) +قص الوجوه من الصور. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `cv2` - معالجة الصور +- `extras.facexlib` - كشف الوجوه + +**الدوال:** +- `crop_image()`: قص الوجه الأول من الصورة +- `align_warp_face()`: محاذاة الوجه + +**المنطق:** +- يستخدم FaceRestoreHelper لكشف الوجوه +- يستخدم landmarks لقص الوجه + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **التأثير عند التعديل:** تعطيل قص الوجوه + +--- + +## 📄 extras/interrogate.py + +### 1. الوظيفة الأساسية (Core Function) +وصف الصور باستخدام نموذج BLIP. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `torchvision` - معالجة الصور +- `extras.BLIP.models.blip` - نموذج BLIP + +**الفئات:** +- `Interrogator`: واصف الصور + +**الدوال:** +- `interrogate()`: وصف صورة + +**المنطق:** +- يحمّل نموذج BLIP من HuggingFace +- يعالج الصورة بحجم 384x384 +- يولّد وصفاً نصياً للصورة + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` (via describe tab) +- **التأثير عند التعديل:** تعطيل الوصف التلقائي + +--- + +## 📄 extras/wd14tagger.py + +### 1. الوظيفة الأساسية (Core Function) +وصف الصور الأنمي باستخدام WD14 Tagger. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `onnxruntime` - تشغيل النموذج +- `csv` - قراءة التسميات + +**الدوال:** +- `default_interrogator()`: وصف صورة + +**المنطق:** +- يستخدم نموذج ONNX للتصنيف +- يقرأ التسميات من ملف CSV +- يدعم فلترة حسب العتبة + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` (via describe tab) +- **التأثير عند التعديل:** تعطيل وصف الأنمي + +--- + +## 📄 extras/resampler.py + +### 1. الوظيفة الأساسية (Core Function) +نموذج Resampler لـ IP-Adapter. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `torch`, `torch.nn` + +**الفئات:** +- `PerceiverAttention`: انتباه Perceiver +- `FeedForward`: طبقة Feed Forward +- `Resampler`: نموذج Resampler + +**المنطق:** +- يستخدم PerceiverAttention لدمج الميزات +- يحول embeddings الصورة إلى latent space + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `ip_adapter.py` +- **التأثير عند التعديل:** تعطيل IP-Adapter + +--- + +## 📄 extras/preprocessors.py + +### 1. الوظيفة الأساسية (Core Function) +المعالجة المسبقة للصور (Canny, CPDS). + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `cv2`, `numpy` + +**الدوال:** +- `canny_pyramid()`: Canny مع هرمي +- `cpds()`: CPDS preprocessing +- `centered_canny()`: Canny مركزي +- `norm255()`: تطبيع القيم + +**المنطق:** +- يستخدم هرمي Canny لتحسين النتائج +- CPDS لتحويل الألوان إلى رمادي + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **التأثير عند التعديل:** تعطيل المعالجة المسبقة + +--- + +## 📄 extras/ip_adapter.py + +### 1. الوظيفة الأساسية (Core Function) +تطبيق IP-Adapter على النموذج. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `safetensors.torch` - تحميل الأوزان +- `ldm_patched.modules.clip_vision` - CLIP Vision +- `extras.resampler` - Resampler + +**الفئات:** +- `ImageProjModel`: نموذج إسقاط الصورة +- `To_KV`: طبقة Key/Value +- `IPAdapterModel`: النموذج الرئيسي + +**الدوال:** +- `load_ip_adapter()`: تحميل IP-Adapter +- `preprocess()`: معالجة الصورة +- `patch_model()`: تطبيق على النموذج + +**المنطق:** +- يستخدم CLIP Vision لاستخراج ميزات الصورة +- يدمج الميزات مع text conditioning + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **التأثير عند التعديل:** تعطيل IP-Adapter + +--- + +## 📄 extras/inpaint_mask.py + +### 1. الوظيفة الأساسية (Core Function) +توليد قناع Inpaint باستخدام SAM + GroundingDINO. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `segment_anything` - نموذج SAM +- `rembg` - إزالة الخلفية +- `extras.GroundingDINO` - كشف الأجسام + +**الفئات:** +- `SAMOptions`: خيارات SAM + +**الدوال:** +- `generate_mask_from_image()`: توليد القناع +- `optimize_masks()`: تحسين القناع + +**المنطق:** +- يستخدم GroundingDINO لكشف الأجسام +- يستخدم SAM لتوليد القناع الدقيق +- يدعم نماذج متعددة (vit_b, vit_l, vit_h) + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py`, `async_worker.py` +- **التأثير عند التعديل:** تعطيل توليد القناع + +--- + +## 📄 extras/vae_interpose.py + +### 1. الوظيفة الأساسية (Core Function) +تحويل Latent من SDXL إلى SD1.5. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `safetensors.torch` - تحميل الأوزان +- `torch.nn` - بناء النموذج + +**الفئات:** +- `ResBlock`: طبقة متبقية +- `ExtractBlock`: طبقة استخراج +- `InterposerModel`: نموذج التحويل + +**الدوال:** +- `parse()`: تحويل Latent + +**المنطق:** +- يستخدم نموذج CNN لتحويل Latent space +- يدعم FP16 لتحسين الأداء + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `default_pipeline.py` +- **التأثير عند التعديل:** تعطيل التحويل + +--- + +## مخطط العلاقات لمجلد extras/ + +``` +async_worker.py + ├── censor.py + ├── expansion.py + ├── face_crop.py + ├── preprocessors.py + ├── ip_adapter.py + │ └── resampler.py + └── inpaint_mask.py + +webui.py + ├── interrogate.py + └── wd14tagger.py + +default_pipeline.py + └── vae_interpose.py +``` + +--- + +**آخر تحديث:** 2026 +**الإصدار:** 2.5.5 diff --git a/.github/FOOOCUS_TECHNICAL_DOC.md b/.github/FOOOCUS_TECHNICAL_DOC.md new file mode 100644 index 0000000000..0f2fe065bb --- /dev/null +++ b/.github/FOOOCUS_TECHNICAL_DOC.md @@ -0,0 +1,556 @@ +# Fooocus - الوثيقة الفنية الشاملة والدليل الهندسي المتكامل + +## Fooocus v2.5.5 - دليل هندسي للمطورين + +--- + +## القسم 1: الهندسة المعمارية للمشروع + +### 1.1 الفلسفة البرمجية + + Fooocus صُمم وفق فلسفة **"البساطة في الواجهة والتعقيد في الخلفية"**. يهدف المشروع إلى تقديم تجربة مستخدم مبسطة (类 Midjourney) بينما يحتفظ بقوة Stable Diffusion في الخلفية. + +**المبادئ الأساسية:** +- **Abstraction Layer**: فصل كامل بين واجهة المستخدم ومحرك التوليد +- **Convention over Configuration**: إعدادات افتراضية مدروسة تقلل الحاجة للتدخل اليدوي +- **Progressive Disclosure**: خيارات متقدمة مخفية بشكل افتراضي但 يمكن فتحها + +### 1.2 العلاقة مع ComfyUI (ldm_patched) + +مجلد `ldm_patched/` هو في الواقع **fork معدّل** من محرك ComfyUI، يوفر: +- إدارة النماذج والذاكرة (VRAM Management) +- معالجة الـ Samplers والـ Schedulers +- دعم LoRA و ControlNet +- نظام الـ Patches الذي يسمح بتعديل سلوك النموذج دون تغيير الأوزان + +**ميزة الدمج:** Fooocus يستفيد من قوة ComfyUI في إدارة الموارد while يضيف طبقة تجريد عالية-level تجعل الاستخدام أسهل. + +--- + +## القسم 2: تشريح هيكل الملفات والمجلدات + +### 2.1 المجلدات الرئيسية + +``` +Fooocus/ +├── launch.py # نقطة الدخول الرئيسية +├── webui.py # بناء واجهة Gradio +├── args_manager.py # إدارة معاملات CLI +├── shared.py # المتغيرات المشتركة +├── build_launcher.py # إنشاء ملفات التشغيل +├── fooocus_version.py # رقم الإصدار +├── modules/ # الوحدات الأساسية +├── ldm_patched/ # محرك ComfyUI المعدّل +├── extras/ # الإضافات والمحاضرات +├── presets/ # ملفات الإعدادات المسبقة +├── models/ # النماذج والملفات +├── sdxl_styles/ # أنماط SDXL +├── wildcards/ # ملفات Wildcards +├── outputs/ # مجلد المخرجات +├── css/ # ملفات التنسيق +├── javascript/ # ملفات JavaScript +├── language/ # ملفات الترجمة +└── tests/ # الاختبارات +``` + +### 2.2 ملف launch.py (نقطة الدخول) + +**المسؤوليات:** +1. تعيين المتغيرات البيئية (GPU, SSL, Gradio) +2. التحقق من ال依赖يات وتثبيتها +3. تحميل النماذج الافتراضية +4. بدء تشغيل WebUI + +**تدفق التنفيذ:** +``` +launch.py → prepare_environment() → build_launcher() → ini_args() → download_models() → from webui import * +``` + +**الكود الرئيسي (lines 70-152):** +- `prepare_environment()`: تثبيت PyTorch, xformers, والمتطلبات +- `build_launcher()`: إنشاء ملفات .bat للتشغيل السريع +- `download_models()`: تحميل النماذج من HuggingFace +- `init_cache()`: إنشاء cache للملفات + +### 2.3 ملف webui.py (واجهة المستخدم) + +**المسؤوليات:** +- بناء واجهة Gradio الكاملة +- ربط الأحداث بالدوال +- إدارة حالة التوليد + +**الهيكل:** +```python +with gr.Blocks(): + with gr.Row(): + # العمود الرئيسي (2:1 ratio) + with gr.Column(scale=2): + progress_window # معاينة مباشرة + gallery # النتائج النهائية + prompt # حقل البرومبت + + # العمود المتقدم + with gr.Column(scale=1): + # تبويبات: Settings, Styles, Models, Advanced +``` + +**الوظائف الرئيسية:** +- `get_task()`: تحويل входات UI إلى AsyncTask +- `generate_clicked()`: دورة حياة التوليد +- `sort_enhance_images()`: ترتيب صور التحسين + +### 2.4 مجلد modules/ (الوحدة الأساسية) + +#### 2.4.1 async_worker.py (المعالج غير المتزامن) + +**المسؤوليات:** +- إنشاء `AsyncTask` لتخزين إعدادات كل طلب +- تنفيذ عملية التوليد في thread منفصل +- إدارة التقدم والنتائج + +**بنية AsyncTask:** +```python +class AsyncTask: + def __init__(self, args): + self.prompt = args.pop() + self.negative_prompt = args.pop() + self.style_selections = args.pop() + self.performance_selection = Performance(args.pop()) + self.steps = self.performance_selection.steps() + self.aspect_ratios_selection = args.pop() + # ... 80+ خاصية +``` + +**دالة worker():** +- الحلقة الرئيسية: `while not finished:` +- معالجة المعاينة: `flag == 'preview'` +- إرجاع النتائج: `flag == 'results'` +- الإنهاء: `flag == 'finish'` + +#### 2.4.2 config.py (إدارة الإعدادات) + +**المسؤوليات:** +- تحميل `presets/default.json` +- تحميل `config.txt` (تخصيصات المستخدم) +- تحديد مسارات النماذج + +**تسلسل التحميل:** +1. `presets/default.json` (الإعدادات الافتراضية) +2. `config.txt` (تخصيصات المستخدم) +3. متغيرات البيئة + +**المسارات الرئيسية:** +```python +paths_checkpoints = ['../models/checkpoints/'] +paths_loras = ['../models/loras/'] +path_embeddings = '../models/embeddings/' +path_vae = '../models/vae/' +path_upscale_models = '../models/upscale_models/' +path_inpaint = '../models/inpaint/' +``` + +#### 2.4.3 core.py (النواة الحسابية) + +**المسؤوليات:** +- تحميل النماذج: `load_model()` +- معالجة LoRA: `StableDiffusionModel.refresh_loras()` +- ترميز VAE: `encode_vae()`, `decode_vae()` +- العينات: `ksampler()` + +**بنية StableDiffusionModel:** +```python +class StableDiffusionModel: + def __init__(self, unet, vae, clip, clip_vision, filename, vae_filename): + self.unet = unet + self.vae = vae + self.clip = clip + self.clip_vision = clip_vision + self.unet_with_lora = unet + self.clip_with_lora = clip +``` + +#### 2.4.4 patch.py (نظام الـ Patches) + +**المسؤوليات:** +- تعديل سلوك النموذج أثناء التشغيل +- تطبيق Sharpness, ADM Guidance, Adaptive CFG + +**PatchSettings:** +```python +class PatchSettings: + def __init__(self, sharpness, adm_scaler_end, positive_adm_scale, + negative_adm_scale, controlnet_softness, adaptive_cfg): +``` + +**أنواع الـ Patches:** +- `diff`: فرق الأوزان +- `lora`: تعديلات LoRA +- `fooocus`: تعديلات خاصة بـ Fooocus + +#### 2.4.5 default_pipeline.py (خط الأنابيب الافتراضي) + +**المسؤوليات:** +- إدارة النماذج المحملة +- تحديث Base Model و Refiner +- تنفيذ `process_diffusion()` + +### 2.5 مجلد ldm_patched/ (محرك ComfyUI) + +#### 2.5.1 modules/model_management.py + +**المسؤوليات:** +- إدارة VRAM والذاكرة +- تحميل/تفريغ النماذج من/إلى GPU + +**حالات VRAM:** +```python +class VRAMState(Enum): + DISABLED = 0 # لا يوجد VRAM + NO_VRAM = 1 # VRAM منخفض جداً + LOW_VRAM = 2 # VRAM منخفض + NORMAL_VRAM = 3 # VRAM عادي + HIGH_VRAM = 4 # VRAM كبير + SHARED = 5 #ذاكرة مشتركة +``` + +**الدوال الرئيسية:** +- `get_torch_device()`: تحديد الجهاز المستخدم +- `load_models_gpu()`: تحميل النماذج إلى GPU +- `free_memory()`: تحرير الذاكرة + +#### 2.5.2 modules/args_parser.py + +**مسؤول:** تحليل معاملات CLI + +**المعاملات الحرجة:** +```python +# إدارة الذاكرة +parser.add_argument("--always-cpu") +parser.add_argument("--always-low-vram") +parser.add_argument("--always-no-vram") +parser.add_argument("--always-high-vram") + +# Attention +parser.add_argument("--attention-split") +parser.add_argument("--attention-quad") +parser.add_argument("--attention-pytorch") + +# Precision +parser.add_argument("--all-in-fp32") +parser.add_argument("--all-in-fp16") +parser.add_argument("--unet-in-fp8-e4m3fn") +``` + +### 2.6 مجلد presets/ + +**ملفات الإعدادات المسبقة:** +- `default.json`: الإعدادات الافتراضية (JuggernautXL v8) +- `anime.json`: إعدادات الأنمي +- `realistic.json`: إعدادات الواقعية +- `lightning.json`: إعدادات الأداء السريع +- `lcm.json`: إعدادات LCM + +**بنية الملف:** +```json +{ + "default_model": "juggernautXL_v8Rundiffusion.safetensors", + "default_loras": [[true, "sd_xl_offset_example-lora_1.0.safetensors", 0.1]], + "default_cfg_scale": 4.0, + "default_sample_sharpness": 2.0, + "default_sampler": "dpmpp_2m_sde_gpu", + "default_scheduler": "karras", + "checkpoint_downloads": {...}, + "lora_downloads": {...} +} +``` + +### 2.7 مجلد extras/ + +**الإضافات والمحاضرات:** +- `expansion.py`: Fooocus Prompt Expansion +- `ip_adapter.py`: دعم IP-Adapter +- `inpaint_mask.py`: توليد القناع (SAM, U2Net) +- `preprocessors.py`: المعالجة المسبقة (Canny, CPDS) +- `face_crop.py`: قص الوجوه +- `censor.py`: فحص NSFW +- `vae_interpose.py`: تحسين VAE + +### 2.8 مجلد models/ + +**هيكل النماذج:** +``` +models/ +├── checkpoints/ # نماذج SDXL +├── loras/ # ملفات LoRA +├── embeddings/ # Embeddings +├── vae/ # نماذج VAE +├── controlnet/ # نماذج ControlNet +├── inpaint/ # نماذج Inpaint +├── upscale_models/ # نماذج التكبير +├── clip_vision/ # نماذج CLIP Vision +├── sam/ # نماذج SAM +└── prompt_expansion/ # نماذج التوسيع +``` + +### 2.9 مجلد wildcards/ + +**ملفات Wildcards للنماذج النصية:** +- `animal.txt`: أسماء حيوانات +- `artist.txt`: أسماء فنانين +- `color.txt`: ألوان +- `flower.txt`: أزهار + +**الاستخدام في البرومبت:** +``` +__animal__ in a __color__ forest → "fox in a blue forest" +``` + +--- + +## القسم 3: إدارة الحزم وال依赖يات + +### 3.1 تحليل requirements_versions.txt + +**الحزم الحرجة:** + +| الحزمة | الإصدار | السبب | +|--------|---------|-------| +| `torch` | 2.1.0 | المحرك الأساسي | +| `gradio` | 3.41.2 | واجهة المستخدم | +| `transformers` | 4.42.4 | معالجة النصوص | +| `safetensors` | 0.4.3 | تحميل الأوزان | +| `accelerate` | 0.32.1 | تسريع التحميل | +| `einops` | 0.8.0 | معالجة المصفوفات | +| `pillow` | 10.4.0 | معالجة الصور | + +### 3.2 سبب الحساسية للمصادر + +**Gradio 3.41.2:** +- Fooocus يعتمد على API داخلي غير مستقر +- التحديث يكسر واجهة `gr.Blocks` +- مشاكل في `queue()` و `event handlers` + +**PyTorch 2.1.0:** +- متوافق مع xformers 0.0.23 +- دعم cu121 محسّن +- `torch.cuda.amp` يعمل بشكل صحيح + +**Jinja2 و MarkupSafe:** +- Gradio يستخدمهما للقوالب +- التحديث يسبب `ImportError` في `gradio.templates` + +**سبب انهيار المشروع:** +``` +Gradio 3.41.2 → يستخدم Jinja2 3.1.x + ↓ + MarkupSafe 2.1.x → يكسر API قديم + ↓ + ImportError: cannot import name 'url_quote' from 'markupsafe' +``` + +--- + +## القسم 4: دورة حياة التشغيل والتدفق الحسابي + +### 4.1 المسار من `python launch.py` إلى Local URL + +``` +1. launch.py + ├── 1.1 تعيين المتغيرات البيئية + ├── 1.2 prepare_environment() + │ ├── تثبيت PyTorch 2.1.0 + cu121 + │ ├── تثبيت xformers 0.0.23 (اختياري) + │ └── تثبيت requirements_versions.txt + ├── 1.3 build_launcher() + └── 1.4 ini_args() + └── تحليل sys.argv + +2. config.py + ├── 2.1 تحميل presets/default.json + ├── 2.2 تحميل config.txt + └── 2.3 تحديد المسارات + +3. download_models() + ├── تحميل VAE Approx + ├── تحميل Fooocus Expansion + └── تحميل Checkpoints والـ LoRAs + +4. webui.py + ├── 4.1 بناء واجهة Gradio + ├── 4.2 ربط الأحداث + └── 4.3 تشغيل Server + └── Local URL: http://127.0.0.1:7865 +``` + +### 4.2 تدفق البرومبت من الواجهة إلى الإنتاج + +``` +المستخدم يكتب البرومبت + ↓ +gr.Textbox (prompt) → get_task() + ↓ +AsyncTask(args=args) + ↓ +worker.async_tasks.append(task) + ↓ +[Worker Thread] + ↓ +1. تطبيق Fooocus Expansion +2. تطبيق الأنماط (Styles) +3. توليد الإحداثيات (Seed, Steps) +4. تحميل النموذج (Base Model) +5. تطبيق LoRA +6. ترميز البرومبت (CLIP) +7. إنشاء Latent Space +8. العينات (KSampler) +9. ترميز VAE +10. حفظ الصورة + ↓ +task.yields.append(['results', img_paths]) + ↓ +generate_clicked() → yield gr.update() + ↓ +الصورة تظهر في Gallery +``` + +**الكود الرئيسي في async_worker.py:** +```python +def worker(): + while True: + if len(async_tasks) > 0: + task = async_tasks.pop(0) + # 1. تطبيق الأنماط + # 2. توسيع البرومبت + # 3. توليد الصور + # 4. إرجاع النتائج +``` + +--- + +## القسم 5: استراتيجيات إدارة الموارد والذاكرة + +### 5.1 خيارات إدارة الذاكرة + +#### `--always-cpu` +**الوظيفة:** تشغيل جميع العمليات على المعالج +```python +# model_management.py:62-66 +if args.always_cpu: + if args.always_cpu > 0: + torch.set_num_threads(args.always_cpu) + cpu_state = CPUState.CPU +``` +**التأثير:** +- لا يستخدم GPU إطلاقاً +- بطيء جداً لكن يعمل على أي جهاز +- مفيد للاختبار أو الأجهزة بدون GPU + +#### `--always-low-vram` +**الوظيفة:** تفعيل وضع VRAM المنخفض +```python +# model_management.py:208-210 +if args.always_low_vram: + set_vram_to = VRAMState.LOW_VRAM + lowvram_available = True +``` +**التأثير:** +- يحمّل النموذج جزئياً إلى GPU +- ينقل الأجزاء غير المستخدمة إلى CPU +- يتطلب 4GB+ VRAM + +**آلية التحميل الجزئي:** +```python +# model_management.py:306-322 +if lowvram_model_memory > 0: + mem_counter = 0 + for m in self.real_model.modules(): + module_mem = module_size(m) + if mem_counter + module_mem < lowvram_model_memory: + m.to(self.device) + mem_counter += module_mem +``` + +#### `--attention-split` +**الوظيفة:** تقسيم عمليات الانتباه لتقليل استهلاك الذاكرة +```python +# args_parser.py:91-92 +attn_group = parser.add_mutually_exclusive_group() +attn_group.add_argument("--attention-split", action="store_true") +``` +**التأثير:** +- يقسم مصفوفات الانتباه الكبيرة +- يقلل استهلاك VRAM بنسبة 30-50% +- قد يبطئ العملية قليلاً + +**المقارنة مع الخيارات الأخرى:** +| الخيار | الذاكرة | السرعة | +|--------|---------|--------| +| `--attention-split` | أقل | أبطأ | +| `--attention-quad` | متوسط | متوسط | +| `--attention-pytorch` | أعلى | أسرع | + +#### `--lowvram` +**الملاحظة:** هذا المعامل غير موجود في الكود المصدري. المعامل الصحيح هو `--always-low-vram`. + +### 5.2 آلية إدارة الذاكرة العامة + +**تسلسل تحميل النموذج:** +```python +def load_models_gpu(models, memory_required=0): + # 1. حساب الذاكرة المطلوبة + # 2. تحرير الذاكرة إذا لزم + # 3. تحميل النموذج + # 4. في وضع lowvram: تحميل جزئي +``` + +**تحرير الذاكرة:** +```python +def free_memory(memory_required, device, keep_loaded=[]): + for i in range(len(current_loaded_models) -1, -1, -1): + if get_free_memory(device) > memory_required: + break + # تفريغ النموذج من GPU + current_loaded_models.pop(i).model_unload() +``` + +### 5.3 نصائح للتحسين + +1. **لديك 8GB+ VRAM:** استخدم الإعدادات الافتراضية +2. **لديك 4-8GB VRAM:** استخدم `--always-low-vram` +3. **لديك أقل من 4GB:** استخدم `--always-cpu` +4. **لبطء الانتباه:** جرب `--attention-split` + +--- + +## دليل المطورين: التعديل على الكود + +### نقاط الدخول الرئيسية للتعديل + +1. **إضافة ميزة جديدة في الواجهة:** `webui.py` +2. **تعديل خوارزمية التوليد:** `modules/async_worker.py` +3. **إضافة نموذج جديد:** `modules/config.py` + `presets/` +4. **تحسين الأداء:** `modules/patch.py` + `ldm_patched/` +5. **إضافة معامل CLI:** `ldm_patched/modules/args_parser.py` + +### مخطط ال依赖يات + +``` +launch.py + ↓ +args_manager.py → ldm_patched/modules/args_parser.py + ↓ +modules/config.py + ↓ +webui.py → modules/async_worker.py + ↓ + modules/default_pipeline.py → modules/core.py + ↓ + ldm_patched/modules/model_management.py +``` + +--- + +**المطور:** lllyasviel +**الإصدار:** 2.5.5 +**التاريخ:** 2024 +**الترخيص:** GNU AGPL v3.0 diff --git a/.github/FULL_CODEBASE_WALKTHROUGH.md b/.github/FULL_CODEBASE_WALKTHROUGH.md new file mode 100644 index 0000000000..4e209086c0 --- /dev/null +++ b/.github/FULL_CODEBASE_WALKTHROUGH.md @@ -0,0 +1,1201 @@ +# Fooocus - دليل مسح الكود المصدري الشامل +## Comprehensive Repository Walkthrough + +**للمزيد من التفاصيل، راجع:** +- [map-road.md](map-road.md) - خريطة طريق Fooocus +- [ROOT_FILES.md](ROOT_FILES.md) - الملفات الجذرية + +--- + +# المجلد الجذر (Root Directory) + +--- + +## 📄 fooocus_version.py + +### 1. الوظيفة الأساسية (Core Function) +يحتوي على متغير واحد فقط يحدد رقم إصدار Fooocus الحالي. + +### 2. التفاصيل الفنية والبرمجية +```python +version = '2.5.5' +``` +- لا يوجد imports +- لا يوجد دوال أو classes +- فقط متغير نصي واحد + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `launch.py`, `webui.py`, `meta_parser.py` +- **لا يستدعي أي ملف** +- **التأثير عند التعديل:** تغيير الرقم فقط - لا يؤثر على الوظائف + +--- + +## 📄 shared.py + +### 1. الوظيفة الأساسية (Core Function) +يحتوي على متغير مشترك واحد لتخزين كائن الجذر لـ Gradio. + +### 2. التفاصيل الفنية والبرمجية +```python +gradio_root = None +``` +- **`gradio_root`**: كائن `gr.Blocks` الرئيسي للواجهة + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` (لتخزين الكائن), `async_worker.py` (للوصول للـ URL) +- **لا يستدعي أي ملف** +- **التأثير عند التعديل:** إذا حُذف، سيفشل الوصول للـ Gradio app + +--- + +## 📄 args_manager.py + +### 1. الوظيفة الأساسية (Core Function) +يُوسع معاملات CLI من `ldm_patched/modules/args_parser.py` بخيارات إضافية خاصة بـ Fooocus. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `ldm_patched.modules.args_parser` - المعاملات الأساسية + +**الخيارات المضافة:** +- `--share` - مشاركة على Gradio +- `--preset` - تطبيق إعداد مسبق +- `--language` - ترجمة الواجهة +- `--disable-offload-from-vram` - تعطيل التفريغ من VRAM +- `--theme` - سمة الواجهة +- `--disable-image-log` - تعطيل تسجيل الصور +- `--disable-metadata` - تعطيل البيانات الوصفية +- `--always-download-new-model` - تحميل النماذج دائماً + +**القيم الافتراضية:** +```python +args_parser.parser.set_defaults( + disable_cuda_malloc=True, + in_browser=True, + port=None +) +``` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `launch.py`, `webui.py`, وجميع ملفات modules/ +- **يستدعي:** `ldm_patched/modules/args_parser.py` +- **التأثير عند التعديل:** إضافة/حذف خيارات CLI + +--- + +## 📄 launch.py + +### 1. الوظيفة الأساسية (Core Function) +نقطة الدخول الرئيسية للمشروع - يدير البيئة وتثبيت ال依赖يات وتحميل النماذج وتشغيل WebUI. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `ssl`, `os`, `sys`, `platform` +- `fooocus_version`, `build_launcher` +- `modules.launch_util` - دوال التثبيت +- `modules.model_loader` - تحميل الملفات +- `modules.config` - الإعدادات + +**الدوال الرئيسية:** +- `prepare_environment()`: تثبيت PyTorch, xformers, requirements +- `download_models()`: تحميل النماذج من HuggingFace +- `ini_args()`: تحليل معاملات CLI + +**تدفق التنفيذ:** +``` +1. تعيين المتغيرات البيئية +2. prepare_environment() +3. build_launcher() +4. ini_args() +5. تحميل النماذج +6. from webui import * +``` + +### 3. شبكة العلاقات ودورة الحياة +- **يبدأ التنفيذ أولاً** في المشروع +- **يستدعي:** `build_launcher.py`, `modules/config.py`, `webui.py` +- **لا يستدعيه ملف آخر** (هو نقطة البداية) +- **التأثير عند التعديل:** قد يكسر بدء التشغيل + +--- + +## 📄 build_launcher.py + +### 1. الوظيفة الأساسية (Core Function) +يُنشئ ملفات `.bat` للتشغيل السريع في Windows. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `os` + +**الدوال:** +- `build_launcher()`: تُنشئ `run.bat`, `run_anime.bat`, `run_realistic.bat` + +**المنطق:** +- يتحقق من وجود `python_embeded/` +- يُنشئ ملفات batch لكل preset + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `launch.py` +- **لا يستدعي أي ملفات أخرى** +- **التأثير عند التعديل:** لا يؤثر على التشغيل الأساسي + +--- + +## 📄 entry_with_update.py + +### 1. الوظيفة الأساسية (Core Function) +نقطة دخول بديلة تُحدّث المشروع تلقائياً من Git قبل التشغيل. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `pygit2` - للتحكم في Git + +**المنطق:** +1. يتصل بـ remote repository +2. يتحقق من وجود تحديثات +3. يقوم بـ fast-forward merge إذا أمكن +4. يستدعي `launch.py` + +### 3. شبكة العلاقات ودورة الحياة +- **يُستخدم عند التحديث التلقائي** +- **يستدعي:** `launch.py` +- **التأثير عند التعديل:** قد يكسر آلية التحديث + +--- + +## 📄 webui.py + +### 1. الوظيفة الأساسية (Core Function) +يبني واجهة Gradio الكاملة ويربط الأحداث بالدوال الخلفية. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `gradio` - بناء الواجهة +- `modules.async_worker` - معالج التوليد +- `modules.config` - الإعدادات +- `modules.flags` - الأعلام والثوابت +- `modules.html` - HTML المخصص +- `modules.sdxl_styles` - الأنماط + +**الهيك الرئيسي:** +```python +with gr.Blocks(): + # العمود الرئيسي (2:1) + # - progress_window: معاينة + # - gallery: النتائج + # - prompt: حقل البرومبت + + # العمود المتقدم + # - Settings tab + # - Styles tab + # - Models tab + # - Advanced tab +``` + +**الدوال الرئيسية:** +- `get_task()`: تحويل المدخلات إلى AsyncTask +- `generate_clicked()`: دورة حياة التوليد +- `inpaint_mode_change()`: تغيير وضع Inpaint + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `launch.py` (آخر سطر) +- **يستدعي:** `modules/async_worker.py`, `modules/config.py`, `modules/flags.py` +- **التأثير عند التعديل:** تغيير واجهة المستخدم بالكامل + +--- + +## 📄 experiments_expansion.py + +### 1. الوظيفة الأساسية (Core Function) +تجربة محرك توسيع البرومبت (Fooocus Expansion). + +### 2. التفاصيل الفنية والبرمجية +```python +from modules.expansion import FooocusExpansion +expansion = FooocusExpansion() +text = 'a handsome man' +for i in range(64): + print(expansion(text, seed=i)) +``` + +### 3. شبكة العلاقات ودورة الحياة +- **ملف تجريبي** - لا يُستخدم في الإنتاج +- **يستدعي:** `modules/expansion.py` + +--- + +## 📄 experiments_face.py + +### 1. الوظيفة الأساسية (Core Function) +تجربة قص الوجوه. + +### 2. التفاصيل الفنية والبرمجية +```python +import extras.face_crop as cropper +img = cv2.imread('lena.png') +result = cropper.crop_image(img) +``` + +### 3. شبكة العلاقات ودورة الحياة +- **ملف تجريبي** - لا يُستخدم في الإنتاج +- **يستدعي:** `extras/face_crop.py` + +--- + +## 📄 experiments_interrogate.py + +### 1. الوظيفة الأساسية (Core Function) +تجربة التحقيق الوصفي للصور (BLIP + WD14). + +### 2. التفاصيل الفنية والبرمجية +```python +from extras.interrogate import default_interrogator +from extras.wd14tagger import default_interrogator +``` + +### 3. شبكة العلاقات ودورة الحياة +- **ملف تجريبي** - لا يُستخدم في الإنتاج +- **يستدعي:** `extras/interrogate.py`, `extras/wd14tagger.py` + +--- + +## 📄 experiments_mask_generation.py + +### 1. الوظيفة الأساسية (Core Function) +تجربة توليد القناع باستخدام SAM + GroundingDINO. + +### 2. التفاصيل الفنية والبرمجية +```python +from extras.inpaint_mask import SAMOptions, generate_mask_from_image +sam_options = SAMOptions(dino_prompt='eye', ...) +mask_image, _, _, _ = generate_mask_from_image(image, sam_options=sam_options) +``` + +### 3. شبكة العلاقات ودورة الحياة +- **ملف تجريبي** - لا يُستخدم في الإنتاج +- **يستدعي:** `extras/inpaint_mask.py` + +--- + +# مجلد modules/ + +--- + +## 📄 modules/__init__.py + +### 1. الوظيفة الأساسية (Core Function) +ملف فارغ - يجعل المجلد package Python. + +### 2. التفاصيل الفنية والبرمجية +لا يوجد محتوى. + +### 3. شبكة العلاقات ودورة الحياة +- **ضروري لاستيراد الملفات من هذا المجلد** + +--- + +## 📄 modules/anisotropic.py + +### 1. الوظيفة الأساسية (Core Function) +تطبيق فلاتر Blur شعاعية (Anisotropic/Bilateral) على الصور. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `torch` + +**الدوال الرئيسية:** +- `bilateral_blur()`: ضبابية ثنائية الجانب +- `joint_bilateral_blur()`: ضبابية ثنائية مع إرشاد +- `adaptive_anisotropic_filter()`: فلتر تكيّفي + +**الفئات:** +- `BilateralBlur`: وحدة PyTorch للضبابية +- `JointBilateralBlur`: وحدة مع إرشاد + +### 3. شبكة العلاقات ودورة الحياة +- **لا يستدعيه ملف آخر مباشرة** (يُستخدم محلياً) +- **التأثير عند التعديل:** تغيير خوارزميات الضبابية + +--- + +## 📄 modules/auth.py + +### 1. الوظيفة الأساسية (Core Function) +نظام المصادقة البسيط لحماية الوصول. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `json`, `hashlib`, `modules.constants` + +**الدوال:** +- `load_auth_data()`: تحميل بيانات المصادقة من JSON +- `check_auth()`: التحقق من اسم المستخدم وكلمة المرور +- `auth_list_to_dict()`: تحويل القاموس + +**المنطق:** +- يقرأ من `auth.json` +- يستخدم SHA256 لكلمة المرور + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` +- **يستدعي:** `modules/constants.py` +- **التأثير عند التعديل:** تعطيل/تفعيل المصادقة + +--- + +## 📄 modules/constants.py + +### 1. الوظيفة الأساسية (Core Function) +تعريف الثوابت الأساسية للمشروع. + +### 2. التفاصيل الفنية والبرمجية +```python +MIN_SEED = 0 +MAX_SEED = 2**63 - 1 +AUTH_FILENAME = 'auth.json' +``` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `auth.py`, `async_worker.py`, `patch.py` +- **لا يستدعي أي ملف** +- **التأثير عند التعديل:** تغيير النطاقات + +--- + +## 📄 modules/html.py + +### 1. الوظيفة الأساسية (Core Function) +إنشاء عناصر HTML للتقدم في الواجهة. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `make_progress_html(number, text)`: إنشاء شريط التقدم + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py`, `async_worker.py` +- **التأثير عند التعديل:** تغيير مظهر شريط التقدم + +--- + +## 📄 modules/extra_utils.py + +### 1. الوظيفة الأساسية (Core Function) +دوال مساعدة عامة للتعامل مع الملفات والمجلدات. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `makedirs_with_log()`: إنشاء مجلد مع تسجيل +- `get_files_from_folder()`: الحصول على ملفات من مجلد +- `try_eval_env_var()`: تقييم متغيرات البيئة + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `config.py`, `sdxl_styles.py` +- **التأثير عند التعديل:** تعطيل دوال المساعدة + +--- + +## 📄 modules/hash_cache.py + +### 1. الوظيفة الأساسية (Core Function) +نظام تخزين مؤقت للـ hashes لتسريع التحميل. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `json`, `concurrent.futures`, `modules.util` + +**الدوال:** +- `sha256_from_cache()`: حساب/تخزين hash +- `load_cache_from_file()`: تحميل من ملف +- `save_cache_to_file()`: حفظ في ملف +- `rebuild_cache()`: إعادة بناء الكاش + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `launch.py`, `meta_parser.py` +- **يستدعي:** `modules/util.py` +- **التأثير عند التعديل:** بطء حساب الـ hashes + +--- + +## 📄 modules/gradio_hijack.py + +### 1. الوظيفة الأساسية (Core Function) + تعديل (hijack) مكون Image في Gradio لدعم ميزات إضافية. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `gradio`, `PIL`, `numpy` + +**الفئات:** +- `Image`: نسخة معدّلة من `gradio.Image` مع دعم sketch و masks + +**التعديلات:** +- تجاوز timeout في `asyncio.wait_for` +- تتبع جميع المكونات في `all_components` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` +- **التأثير عند التعديل:** تغيير سلوك مكونات الصور + +--- + +## 📄 modules/localization.py + +### 1. الوظيفة الأساسية (Core Function) +نظام الترجمة للواجهة المتعددة اللغات. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `localization_js()`: تحميل ملف الترجمة وإرجاع JavaScript +- `dump_english_config()`: تصدير النصوص الإنجليزية + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `ui_gradio_extensions.py` +- **التأثير عند تعديل:** تعطيل الترجمة + +--- + +## 📄 modules/model_loader.py + +### 1. الوظيفة الأساسية (Core Function) +تحميل الملفات من URLs مع دعم الكاش المحلي. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `load_file_from_url()`: تحميل ملف من URL مع التخزين المؤقت + +**المنطق:** +- يتحقق من الملف المحلي أولاً +- يستخدم `torch.hub.download_url_to_file` +- يدعم HuggingFace Mirror + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `launch.py`, `interrogate.py`, `wd14tagger.py` +- **التأثير عند التعديل:** تعطيل تحميل النماذج + +--- + +## 📄 modules/ui_gradio_extensions.py + +### 1. الوظيفة الأساسية (Core Function) +حقن ملفات JavaScript و CSS في واجهة Gradio. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `javascript_html()`: إنشاء tags script +- `css_html()`: إنشاء tags link +- `reload_javascript()`: حقن الملفات في HTML + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` +- **يستدعي:** `modules/localization.py` +- **التأثير عند التعديل:** تعطيل JavaScript/CSS المخصص + +--- + +## 📄 modules/ops.py + +### 1. الوظيفة الأساسية (Core Function) +تبديل العمليات الحسابية مؤقتاً (context manager). + +### 2. التفاصيل الفنية والبرمجية +```python +@contextlib.contextmanager +def use_patched_ops(operations): + # يستبدل Linear, Conv2d, GroupNorm, LayerNorm مؤقتاً +``` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `patch_clip.py`, `ip_adapter.py` +- **التأثير عند تعديل:** تغيير العمليات الحسابية + +--- + +## 📄 modules/lora.py + +### 1. الوظيفة الأساسية (Core Function) +مطابقة وتحميل ملفات LoRA بأنواع مختلفة. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `match_lora()`: مطابقة أسماء المفاتيح مع دعم أنواع متعددة + +**أنواع LoRA المدعومة:** +- LoRA العادي +- LoHa +- LoKr +- GLoRA +- Diff + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `core.py` +- **التأثير عند تعديل:** تعطيل دعم LoRA + +--- + +## 📄 modules/meta_parser.py + +### 1. الوظيفة الأساسية (Core Function) +تحليل وحفظ البيانات الوصفية للصور بتنسيقات مختلفة. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `MetadataParser`: الفئة الأساسية المجردة +- `A1111MetadataParser`: تنسيق A1111/Civitai +- `FooocusMetadataParser`: تنسيق Fooocus الخاص + +**الدوال:** +- `load_parameter_button_click()`: تحميل المعاملات من صورة +- `read_info_from_image()`: قراءة البيانات من صورة +- `get_exif()`: إنشاء بيانات EXIF + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py`, `private_logger.py`, `async_worker.py` +- **يستدعي:** `modules/config.py`, `modules/hash_cache.py` +- **التأثير عند تعديل:** تعطيل حفظ/قراءة البيانات الوصفية + +--- + +## 📄 modules/private_logger.py + +### 1. الوظيفة الأساسية (Core Function) +تسجيل الصور المولّدة في ملف HTML خاص. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `log()`: حفظ الصورة وتسجيل البيانات في HTML +- `get_current_html_path()`: الحصول على مسار ملف السجل + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **يستدعي:** `modules/meta_parser.py` +- **التأثير عند تعديل:** تعطيل تسجيل الصور + +--- + +## 📄 modules/sdxl_styles.py + +### 1. الوظيفة الأساسية (Core Function) +تحميل وإدارة أنماط SDXL للبرومبت. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `apply_style()`: تطبيق نمط على البرومبت +- `get_random_style()`: الحصول على نمط عشوائي +- `apply_arrays()`: معالجة المصفوفات في البرومبت + +**البيانات:** +- `styles`: قاموس الأنماط +- `fooocus_expansion`: اسم نمط Fooocus V2 +- `legal_style_names`: الأسماء القانونية + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py`, `async_worker.py` +- **يستدعي:** `modules/extra_utils.py` +- **التأثير عند تعديل:** تعطيل الأنماط + +--- + +## 📄 modules/style_sorter.py + +### 1. الوظيفة الأساسية (Core Function) +إدارة وفرز الأنماط في الواجهة. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `try_load_sorted_styles()`: تحميل الترتيب المحفوظ +- `sort_styles()`: حفظ الترتيب الجديد +- `search_styles()`: البحث في الأنماط + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` +- **التأثير عند تعديل:** تعطيل فرز الأنماط + +--- + +## 📄 modules/upscaler.py + +### 1. الوظيفة الأساسية (Core Function) +تكبير الصور باستخدام ESRGAN. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `perform_upscale()`: تكبير الصورة + +**الفئات:** +- `RRDBNet`: نموذج ESRGAN + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py`, `inpaint_worker.py` +- **التأثير عند تعديل:** تعطيل تكبير الصور + +--- + +## 📄 modules/sample_hijack.py + +### 1. الوظيفة الأساسية (Core Function) +تعديل دوال العينات (Sampling) في ldm_patched لدعم Refiner. + +### 2. التفاصيل الفنية والبرمجية +**الدوال الرئيسية:** +- `clip_separate()`: فصل CLIP للـ Refiner +- `sample_hacked()`: دالة العينات المعدّلة +- `calculate_sigmas_scheduler_hacked()`: حساب Sigmas + +**التعديلات:** +- يُعدّل `ldm_patched.modules.samplers.sample` +- يُعدّل `ldm_patched.modules.samplers.calculate_sigmas_scheduler` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `patch.py` (عبر `patch_all()`) +- **يعدّل:** `ldm_patched/modules/samplers.py` +- **التأثير عند التعديل:** تعطيل دعم Refiner + +--- + +## 📄 modules/patch_precision.py + +### 1. الوظيفة الأساسية (Core Function) +تعديل دوال Time Embedding و Register Schedule لتطابق Kohya. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `patched_timestep_embedding()`: Time embedding معدّل +- `patched_register_schedule()`: Schedule معدّل +- `patch_all_precision()`: تطبيق التعديلات + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `patch.py` +- **التأثير عند التعديل:** تغيير دقة النموذج + +--- + +## 📄 modules/patch_clip.py + +### 1. الوظيفة الأساسية (Core Function) +تعديل نماذج CLIP لتطابق Kohya/A1111. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `patched_encode_token_weights()`: تشفير الأوزان +- `patched_SDClipModel__init__()`初始化 CLIP +- `patched_SDClipModel_forward()`:Forward pass +- `patch_all_clip()`: تطبيق جميع التعديلات + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `patch.py` +- **التأثير عند التعديل:** تغيير تشفير النص + +--- + +## 📄 modules/patch.py + +### 1. الوظيفة الأساسية (Core Function) +تطبيق تعديلات Fooocus على نموذج diffusion. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `PatchSettings`: إعدادات التعديلات + +**الدوال:** +- `calculate_weight_patched()`: حساب الأوزان مع LoRA +- `patch_all()`: تطبيق جميع التعديلات + +**أنواع الـ Patches:** +- `diff`, `lora`, `fooocus`, `loha`, `lokr`, `glora` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **يستدعي:** `patch_precision.py`, `patch_clip.py`, `sample_hijack.py` +- **التأثير عند التعديل:** تغيير سلوك النموذج بالكامل + +--- + +## 📄 modules/default_pipeline.py + +### 1. الوظيفة الأساسية (Core Function) +إدارة خط أنابيب التوليد الافتراضي. + +### 2. التفاصيل الفنية والبرمجية +**المتغيرات الرئيسية:** +- `model_base`, `model_refiner`: النماذج المحملة +- `loaded_ControlNets`: ControlNets المحملة + +**الدوال:** +- `refresh_base_model()`: تحديث النموذج الأساسي +- `refresh_refiner_model()`: تحديث Refiner +- `process_diffusion()`: تنفيذ التشتت + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **يستدعي:** `modules/core.py` +- **التأثير عند التعديل:** تعطيل خط الأنابيب + +--- + +## 📄 modules/core.py + +### 1. الوظيفة الأساسية (Core Function) +النواة الحسابية - تحميل النماذج وتشغيل التوليد. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `StableDiffusionModel`: نموذج Stable Diffusion +- `VAEApprox`: تقريب VAE للمعاينة + +**الدوال:** +- `load_model()`: تحميل نموذج +- `load_controlnet()`: تحميل ControlNet +- `ksampler()`: العينات +- `encode_vae()`, `decode_vae()`: ترميز VAE + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `default_pipeline.py`, `upscaler.py`, `ip_adapter.py` +- **يستدعي:** `ldm_patched/modules/sd.py` +- **التأثير عند التعديل:** تعطيل التوليد بالكامل + +--- + +## 📄 modules/config.py + +### 1. الوظيفة الأساسية (Core Function) +إدارة جميع الإعدادات والمسارات في المشروع. + +### 2. التفاصيل الفنية والبرمجية +**الدوال الرئيسية:** +- `get_dir_or_set_default()`: الحصول على مسار +- `get_config_item_or_set_default()`: الحصول على إعداد +- `update_files()`: تحديث قوائم الملفات + +**المسارات:** +- `paths_checkpoints`, `paths_loras`, `path_embeddings`, `path_vae`, etc. + +**الإعدادات الافتراضية:** +- `default_base_model_name`, `default_cfg_scale`, `default_sampler`, etc. + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** جميع ملفات modules تقريباً +- **يستدعي:** `presets/default.json`, `config.txt` +- **التأثير عند التعديل:** تعطيل الإعدادات بالكامل + +--- + +## 📄 modules/async_worker.py + +### 1. الوظيفة الأساسية (Core Function) +المعالج غير المتزامن للصور - يدير دورة حياة التوليد. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `AsyncTask`: تمثيل طلب توليد واحد + +**الدوال:** +- `worker()`: الحلقة الرئيسية للمعالج +- `process_task()`: معالجة مهمة واحدة +- `apply_vary()`: تطبيق التباين +- `apply_inpaint()`: تطبيق Inpaint + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` +- **يستدعي:** `modules/default_pipeline.py`, `modules/patch.py`, `modules/core.py` +- **التأثير عند التعديل:** تعطيل التوليد بالكامل + +--- + +## 📄 modules/util.py + +### 1. الوظيفة الأساسية (Core Function) +دوال مساعدة متنوعة للمشروع. + +### 2. التفاصيل الفنية والبرمجية +**الدوال الرئيسية:** +- `sha256()`: حساب hash +- `HWC3()`: تحويل تنسيق الصورة +- `resize_image()`: تغيير حجم الصورة +- `parse_lora_references_from_prompt()`: تحليل LoRA من البرومبت +- `apply_wildcards()`: تطبيق Wildcards + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** معظم ملفات modules +- **التأثير عند التعديل:** تعطيل الدوال المساعدة + +--- + +# مجلد extras/ + +--- + +## 📄 extras/censor.py + +### 1. الوظيفة الأساسية (Core Function) +فحص الصور للمحتوى NSFW وحجبها. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `Censor`: فاحص NSFW + +**الدوال:** +- `censor()`: فحص وحجب الصور + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **التأثير عند التعديل:** تعطيل فحص NSFW + +--- + +## 📄 extras/expansion.py + +### 1. الوظيفة الأساسية (Core Function) +محرك توسيع البرومبت باستخدام GPT2. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `FooocusExpansion`: محرك التوسيع + +**الدوال:** +- `__call__()`: توسيع البرومبت + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py`, `default_pipeline.py` +- **التأثير عند التعديل:** تعطيل توسيع البرومبت + +--- + +## 📄 extras/face_crop.py + +### 1. الوظيفة الأساسية (Core Function) +قص الوجوه من الصور. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `crop_image()`: قص الوجه الأول + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **التأثير عند التعديل:** تعطيل قص الوجوه + +--- + +## 📄 extras/interrogate.py + +### 1. الوظيفة الأساسية (Core Function) +وصف الصور باستخدام نموذج BLIP. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `Interrogator`: واصف الصور + +**الدوال:** +- `interrogate()`: وصف صورة + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` (via describe tab) +- **التأثير عند التعديل:** تعطيل الوصف التلقائي + +--- + +## 📄 extras/wd14tagger.py + +### 1. الوظيفة الأساسية (Core Function) +وصف الصور الأنمي باستخدام WD14 Tagger. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `default_interrogator()`: وصف صورة + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` (via describe tab) +- **التأثير عند التعديل:** تعطيل وصف الأنمي + +--- + +## 📄 extras/resampler.py + +### 1. الوظيفة الأساسية (Core Function) +نموذج Resampler لـ IP-Adapter. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `PerceiverAttention`: انتباه Perceiver +- `Resampler`: نموذج Resampler + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `ip_adapter.py` +- **التأثير عند تعديل:** تعطيل IP-Adapter + +--- + +## 📄 extras/preprocessors.py + +### 1. الوظيفة الأساسية (Core Function) +المعالجة المسبقة للصور (Canny, CPDS). + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `canny_pyramid()`: Canny مع هرمي +- `cpds()`: CPDS preprocessing + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **التأثير عند التعديل:** تعطيل المعالجة المسبقة + +--- + +## 📄 extras/ip_adapter.py + +### 1. الوظيفة الأساسية (Core Function) +تطبيق IP-Adapter على النموذج. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `ImageProjModel`, `To_KV`, `IPAdapterModel` + +**الدوال:** +- `load_ip_adapter()`: تحميل IP-Adapter +- `preprocess()`: معالجة الصورة +- `patch_model()`: تطبيق على النموذج + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **التأثير عند التعديل:** تعطيل IP-Adapter + +--- + +## 📄 extras/inpaint_mask.py + +### 1. الوظيفة الأساسية (Core Function) +توليد قناع Inpaint باستخدام SAM + GroundingDINO. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `SAMOptions`: خيارات SAM + +**الدوال:** +- `generate_mask_from_image()`: توليد القناع +- `optimize_masks()`: تحسين القناع + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py`, `async_worker.py` +- **التأثير عند التعديل:** تعطيل توليد القناع + +--- + +## 📄 extras/vae_interpose.py + +### 1. الوظيفة الأساسية (Core Function) +تحويل Latent من SDXL إلى SD1.5. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `InterposerModel`: نموذج التحويل + +**الدوال:** +- `parse()`: تحويل Latent + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `default_pipeline.py` +- **التأثير عند التعديل:** تعطيل التحويل + +--- + +# مجلد ldm_patched/ + +--- + +## 📄 ldm_patched/modules/sd.py + +### 1. الوظيفة الأساسية (Core Function) +تحميل النماذج والتعامل مع 파일ات الأوزان. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `CLIP`: نموذج CLIP + +**الدوال:** +- `load_model_weights()`: تحميل الأوزان +- `load_clip_weights()`: تحميل أوزان CLIP +- `load_lora_for_models()`: تحميل LoRA +- `load_checkpoint_guess_config()`: تحميل checkpoint + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `modules/core.py` +- **التأثير عند التعديل:** تعطيل تحميل النماذج + +--- + +## 📄 ldm_patched/modules/samplers.py + +### 1. الوظيفة الأساسية (Core Function) +تنفيذ خوارزميات العينات (Sampling). + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `KSampler`: العينات الرئيسية + +**الدوال:** +- `sample()`: تنفيذ العينات +- `calc_cond_uncond_batch()`: حساب conditioning + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `modules/sample.py`, `modules/sample_hijack.py` +- **التأثير عند التعديل:** تعطيل العينات + +--- + +## 📄 ldm_patched/modules/sample.py + +### 1. الوظيفة الأساسية (Core Function) +إعداد وتنفيذ عملية التوليد. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `prepare_noise()`: تحضير الضوضاء +- `prepare_mask()`: تحضير القناع +- `sample()`: التنفيذ الرئيسي + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `modules/core.py` +- **التأثير عند التعديل:** تعطيل التوليد + +--- + +## 📄 ldm_patched/modules/model_management.py + +### 1. الوظيفة الأساسية (Core Function) +إدارة الذاكرة وتحميل النماذج على GPU. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `VRAMState`: حالات VRAM +- `CPUState`: حالات المعالج +- `LoadedModel`: نموذج محمل + +**الدوال:** +- `get_torch_device()`: الحصول على الجهاز +- `load_models_gpu()`: تحميل النماذج +- `free_memory()`: تحرير الذاكرة + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** جميع ملفات ldm_patched +- **التأثير عند التعديل:** تعطيل إدارة الذاكرة + +--- + +## 📄 ldm_patched/modules/model_patcher.py + +### 1. الوظيفة الأساسية (Core Function) +تطبيق الـ patches على النماذج. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `ModelPatcher`: مُطبّق الـ patches + +**الدوال:** +- `clone()`: نسخ النموذج +- `add_patches()`: إضافة patches +- `set_model_patch()`: تعيين patch + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** جميع ملفات ldm_patched +- **التأثير عند التعديل:** تعطيل نظام الـ patches + +--- + +## 📄 ldm_patched/modules/args_parser.py + +### 1. الوظيفة الأساسية (Core Function) +تحليل معاملات CLI الأساسية. + +### 2. التفاصيل الفنية والبرمجية +**المعاملات:** +- `--listen`, `--port`: خادم الشبكة +- `--always-cpu`, `--always-low-vram`: إدارة الذاكرة +- `--attention-split`, `--attention-quad`: الانتباه +- `--all-in-fp32`, `--all-in-fp16`: الدقة + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `args_manager.py` +- **التأثير عند التعديل:** تغيير معاملات CLI + +--- + +## 📄 ldm_patched/modules/options.py + +### 1. الوظيفة الأساسية (Core Function) +تفعيل/تعطيل تحليل المعاملات. + +### 2. التفاصيل الفنية والبرمجية +```python +args_parsing = False +def enable_args_parsing(enable=True): + global args_parsing + args_parsing = enable +``` + +### 3. شبكة العلاقات ودورة الحياة +- **التأثير عند التعديل:** تغيير سلوك تحليل المعاملات + +--- + +# مجلد tests/ + +--- + +## 📄 tests/__init__.py + +### 1. الوظيفة الأساسية (Core Function) +إضافة مسار modules إلى sys.path للاختبارات. + +### 2. التفاصيل الفنية والبرمجية +```python +sys.path.append(pathlib.Path(f'{__file__}/../modules').parent.resolve()) +``` + +### 3. شبكة العلاقات ودورة الحياة +- **ضروري لتشغيل الاختبارات** + +--- + +## 📄 tests/test_utils.py + +### 1. الوظيفة الأساسية (Core Function) +اختبارات لدوال `modules/util.py`. + +### 2. التفاصيل الفنية والبرمجية +**الاختبارات:** +- `test_can_parse_tokens_with_lora()`: اختبار تحليل LoRA +- `test_can_parse_tokens_and_strip_performance_lora()`: اختبار إزالة LoRA + +### 3. شبكة العلاقات ودورة الحياة +- **يختبر:** `modules/util.py` + +--- + +## 📄 tests/test_extra_utils.py + +### 1. الوظيفة الأساسية (Core Function) +اختبارات لدوال `modules/extra_utils.py`. + +### 2. التفاصيل الفنية والبرمجية +**الاختبارات:** +- `test_try_eval_env_var()`: اختبار تقييم متغيرات البيئة + +### 3. شبكة العلاقات ودورة الحياة +- **يختبر:** `modules/extra_utils.py` + +--- + +# ملخصعلاقات الاعتماد (Dependency Map) + +``` +launch.py + ├── args_manager.py + ├── modules/config.py + └── webui.py + ├── modules/async_worker.py + │ ├── modules/default_pipeline.py + │ │ └── modules/core.py + │ └── modules/patch.py + └── modules/sdxl_styles.py +``` + +--- + +**آخر تحديث:** 2026 +**الإصدار:** 2.5.5 diff --git a/.github/LDM_PATCHED.md b/.github/LDM_PATCHED.md new file mode 100644 index 0000000000..edb8eca55c --- /dev/null +++ b/.github/LDM_PATCHED.md @@ -0,0 +1,441 @@ +# مجلد ldm_patched/ - محرك ComfyUI المعدّل + +## فهرس الملفات الرئيسية + +| الملف | الوظيفة | +|-------|---------| +| `modules/sd.py` | تحميل النماذج | +| `modules/samplers.py` | خوارزميات العينات | +| `modules/sample.py` | تنفيذ التوليد | +| `modules/model_management.py` | إدارة الذاكرة | +| `modules/model_patcher.py` | تطبيق الـ patches | +| `modules/args_parser.py` | تحليل المعاملات | +| `modules/options.py` | خيارات التحليل | +| `modules/conds.py` | إدارة الشروط | +| `modules/controlnet.py` | تحميل ControlNet | +| `modules/clip_vision.py` | نموذج CLIP Vision | +| `modules/sd1_clip.py` | CLIP SD1.5 | +| `modules/sdxl_clip.py` | CLIP SDXL | +| `modules/model_base.py` | النماذج الأساسية | +| `modules/model_detection.py` | كشف النماذج | +| `modules/lora.py` | تحميل LoRA | +| `modules/latent_formats.py` | تنسيقات Latent | +| `modules/utils.py` | دوال مساعدة | +| `modules/ops.py` | العمليات الحسابية | + +--- + +## 📄 ldm_patched/modules/sd.py + +### 1. الوظيفة الأساسية (Core Function) +تحميل النماذج والتعامل مع ملفات الأوزان. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `ldm_patched.modules.model_management` - إدارة الذاكرة +- `ldm_patched.ldm.models.autoencoder` - VAE +- `ldm_patched.modules.model_detection` - كشف النموذج +- `ldm_patched.modules.sd1_clip`, `sd2_clip`, `sdxl_clip` + +**الفئات:** +- `CLIP`: نموذج CLIP + +**الدوال:** +- `load_model_weights()`: تحميل الأوزان +- `load_clip_weights()`: تحميل أوزان CLIP +- `load_lora_for_models()`: تحميل LoRA +- `load_checkpoint_guess_config()`: تحميل checkpoint مع تخمين الإعدادات + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `modules/core.py` +- **يستخدم:** `modules/model_management.py`, `modules/model_detection.py` +- **التأثير عند التعديل:** تعطيل تحميل النماذج بالكامل + +--- + +## 📄 ldm_patched/modules/samplers.py + +### 1. الوظيفة الأساسية (Core Function) +تنفيذ خوارزميات العينات (Sampling) المختلفة. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `ldm_patched.k_diffusion.sampling` - خوارزميات k-diffusion +- `ldm_patched.unipc.uni_pc` - UniPC sampler + +**الفئات:** +- `KSampler`: العينات الرئيسية + +**الدوال:** +- `sample()`: تنفيذ العينات +- `calc_cond_uncond_batch()`: حساب conditioning +- `get_area_and_mult()`: حساب المنطقة والمضاعف +- `encode_model_conds()`: تشفير الشروط + +**الخوارزميات المدعومة:** +- euler, euler_ancestral, heun +- dpm_2, dpm_2_ancestral +- dpmpp_2s_ancestral, dpmpp_2m, dpmpp_2m_sde +- ddim, uni_pc, lcm + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `modules/sample.py`, `modules/sample_hijack.py` +- **يستخدم:** `ldm_patched/k_diffusion/sampling.py` +- **التأثير عند التعديل:** تعطيل العينات بالكامل + +--- + +## 📄 ldm_patched/modules/sample.py + +### 1. الوظيفة الأساسية (Core Function) +إعداد وتنفيذ عملية التوليد. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `ldm_patched.modules.model_management` +- `ldm_patched.modules.samplers` +- `ldm_patched.modules.conds` + +**الدوال:** +- `prepare_noise()`: تحضير الضوضاء +- `prepare_mask()`: تحضير القناع +- `get_additional_models()`: الحصول على النماذج الإضافية +- `prepare_sampling()`: إعداد العينات +- `sample()`: التنفيذ الرئيسي + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `modules/core.py` +- **يستخدم:** `modules/samplers.py`, `modules/model_management.py` +- **التأثير عند التعديل:** تعطيل التوليد + +--- + +## 📄 ldm_patched/modules/model_management.py + +### 1. الوظيفة الأساسية (Core Function) +إدارة الذاكرة وتحميل النماذج على GPU. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `psutil` - معلومات الذاكرة +- `torch` - PyTorch + +**الفئات:** +- `VRAMState`: حالات VRAM (DISABLED, NO_VRAM, LOW_VRAM, NORMAL_VRAM, HIGH_VRAM, SHARED) +- `CPUState`: حالات المعالج (GPU, CPU, MPS) +- `LoadedModel`: نموذج محمل + +**الدوال الرئيسية:** +- `get_torch_device()`: الحصول على الجهاز المستخدم +- `get_total_memory()`: الحصول على إجمالي الذاكرة +- `load_models_gpu()`: تحميل النماذج إلى GPU +- `free_memory()`: تحرير الذاكرة +- `soft_empty_cache()`: تفريغ الكاش + +**منطق التحميل:** +- يتحقق من الذاكرة المتاحة +- يحمّل النماذج حسب الأولوية +- يدعم LOW_VRAM mode + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** جميع ملفات ldm_patched تقريباً +- **يستخدم:** `modules/args_parser.py` +- **التأثير عند التعديل:** تعطيل إدارة الذاكرة بالكامل + +--- + +## 📄 ldm_patched/modules/model_patcher.py + +### 1. الوظيفة الأساسية (Core Function) +تطبيق الـ patches على النماذج دون تغيير الأوزان الأصلية. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `ModelPatcher`: مُطبّق الـ patches + +**الدوال الرئيسية:** +- `clone()`: نسخ النموذج مع الـ patches +- `add_patches()`: إضافة patches +- `remove_patches()`: إزالة patches +- `set_model_patch()`: تعيين patch +- `set_model_patch_replace()`: استبدال patch +- `set_model_attn1_patch()`: تعيين attn1 patch +- `set_model_attn2_patch()`: تعيين attn2 patch + +**أنواع الـ patches:** +- `attn1_patch`, `attn2_patch` +- `attn1_output_patch`, `attn2_output_patch` +- `input_blocks_patch`, `output_blocks_patch` +- `middle_block_patch` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** جميع ملفات ldm_patched +- **يستخدم:** `modules/model_management.py` +- **التأثير عند التعديل:** تعطيل نظام الـ patches بالكامل + +--- + +## 📄 ldm_patched/modules/args_parser.py + +### 1. الوظيفة الأساسية (Core Function) +تحليل معاملات CLI الأساسية للمشروع. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `argparse`, `ldm_patched.modules.options` + +**المعاملات الرئيسية:** +- `--listen`, `--port`: خادم الشبكة +- `--always-cpu`, `--always-low-vram`, `--always-no-vram`: إدارة الذاكرة +- `--attention-split`, `--attention-quad`, `--attention-pytorch`: الانتباه +- `--all-in-fp32`, `--all-in-fp16`: الدقة العامة +- `--unet-in-fp8-e4m3fn`, `--unet-in-fp8-e5m2`: دقة UNet +- `--vae-in-fp16`, `--vae-in-fp32`, `--vae-in-bf16`: دقة VAE +- `--clip-in-fp8-e4m3fn`, `--clip-in-fp16`, `--clip-in-fp32`: دقة CLIP +- `--preview-option`: خيار المعاينة + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `args_manager.py` +- **يستخدم:** `modules/options.py` +- **التأثير عند التعديل:** تغيير معاملات CLI + +--- + +## 📄 ldm_patched/modules/options.py + +### 1. الوظيفة الأساسية (Core Function) +تفعيل/تعطيل تحليل المعاملات. + +### 2. التفاصيل الفنية والبرمجية +```python +args_parsing = False + +def enable_args_parsing(enable=True): + global args_parsing + args_parsing = enable +``` + +### 3. شبكة العلاقات ودورة الحياة +- **يستخدمه:** `args_parser.py` +- **التأثير عند التعديل:** تغيير سلوك تحليل المعاملات + +--- + +## 📄 ldm_patched/modules/conds.py + +### 1. الوظيفة الأساسية (Core Function) +إدارة شروط conditioning للتوليد. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `CONDRegular`: شروط عادية +- `CONDCrossAttn`: شروط Cross Attention + +**الدوال:** +- `convert_cond()`: تحويل الشروط + +### 3. شبكة العلاقات ودورة الحياة +- **يستخدمه:** `modules/samplers.py`, `modules/sample.py` +- **التأثير عند التعديل:** تعطيل إدارة الشروط + +--- + +## 📄 ldm_patched/modules/controlnet.py + +### 1. الوظيفة الأساسية (Core Function) +تحميل وتطبيق ControlNet. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `load_controlnet()`: تحميل ControlNet +- `apply_controlnet()`: تطبيق ControlNet + +### 3. شبكة العلاقات ودورة الحياة +- **يستخدمه:** `modules/core.py` +- **التأثير عند Accreditation:** تعطيل ControlNet + +--- + +## 📄 ldm_patched/modules/clip_vision.py + +### 1. الوظيفة الأساسية (Core Function) +تحميل وتشغيل نموذج CLIP Vision. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `ClipVisionModel`: نموذج CLIP Vision + +**الدوال:** +- `load()`: تحميل النموذج +- `clip_preprocess()`: معالجة الصورة + +### 3. شبكة العلاقات ودورة الحياة +- **يستخدمه:** `extras/ip_adapter.py` +- **التأثير عند التعديل:** تعطيل CLIP Vision + +--- + +## 📄 ldm_patched/modules/sd1_clip.py + +### 1. الوظيفة الأساسية (Core Function) +نموذج CLIP لـ SD1.5. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `SDClipModel`: نموذج CLIP +- `ClipTokenWeightEncoder`: تشفير أوزان الرمز + +**الدوال:** +- `gen_empty_tokens()`: توليد tokens فارغة + +### 3. شبكة العلاقات ودورة الحياة +- **يستخدمه:** `modules/patch_clip.py` +- **التأثير عند التعديل:** تعطيل CLIP لـ SD1.5 + +--- + +## 📄 ldm_patched/modules/sdxl_clip.py + +### 1. الوظيفة الأساسية (Core Function) +نموذج CLIP لـ SDXL. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `SDXLClipModel`: نموذج CLIP لـ SDXL + +### 3. شبكة العلاقات ودورة الحياة +- **يستخدمه:** `modules/sd.py` +- **التأثير عند التعديل:** تعطيل CLIP لـ SDXL + +--- + +## 📄 ldm_patched/modules/model_base.py + +### 1. الوظيفة الأساسية (Core Function) +النماذج الأساسية لـ Stable Diffusion. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `SDXL`: نموذج SDXL الأساسي +- `SDXLRefiner`: نموذج SDXL Refiner +- `SD15`: نموذج SD1.5 + +### 3. شبكة العلاقات ودورة الحياة +- **يستخدمه:** `modules/sd.py`, `modules/sample_hijack.py` +- **التأثير عند التعديل:** تعطيل النماذج الأساسية + +--- + +## 📄 ldm_patched/modules/model_detection.py + +### 1. الوظيفة الأساسية (Core Function) +كشف نوع النموذج تلقائياً. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `detect_checkpoint_config()`: كشف إعدادات checkpoint + +### 3. شبكة العلاقات ودورة الحياة +- **يستخدمه:** `modules/sd.py` +- **التأثير عند Accreditation:** تعطيل الكشف التلقائي + +--- + +## 📄 ldm_patched/modules/lora.py + +### 1. الوظيفة الأساسية (Core Function) +تحميل وإدارة ملفات LoRA. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `model_lora_keys_unet()`: الحصول على مفاتيح LoRA لـ UNet +- `model_lora_keys_clip()`: الحصول على مفاتيح LoRA لـ CLIP +- `load_lora()`: تحميل LoRA + +### 3. شبكة العلاقات ودورة الحياة +- **يستخدمه:** `modules/sd.py`, `modules/core.py` +- **التأثير عند التعديل:** تعطيل دعم LoRA + +--- + +## 📄 ldm_patched/modules/latent_formats.py + +### 1. الوظيفة الأساسية (Core Function) +تنسيقات Latent space. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `LatentFormat`: التنسيق الأساسي +- `SDXL`: تنسيق SDXL +- `SD15`: تنسيق SD1.5 + +### 3. شبكة العلاقات ودورة الحياة +- **يستخدمه:** `modules/sd.py` +- **التأثير عند التعديل:** تغيير تنسيقات Latent + +--- + +## 📄 ldm_patched/modules/utils.py + +### 1. الوظيفة الأساسية (Core Function) +دوال مساعدة متنوعة. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `transformers_convert()`: تحويل مفاتيح transformers +- `repeat_to_batch_size()`: تكرار إلى حجم الدفعة +- `load_torch_file()`: تحميل ملف PyTorch + +### 3. شبكة العلاقات ودورة الحياة +- **يستخدمه:** معظم ملفات ldm_patched +- **التأثير عند التعديل:** تعطيل الدوال المساعدة + +--- + +## 📄 ldm_patched/modules/ops.py + +### 1. الوظيفة الأساسية (Core Function) +العمليات الحسابية المخصصة. + +### 2. التفاصيل الفنية والبرمجية +**المتغيرات:** +- `manual_cast`: التحويل اليدوي للنوع + +### 3. شبكة العلاقات ودورة الحياة +- **يستخدمه:** `modules/patch_clip.py`, `extras/ip_adapter.py` +- **التأثير عند التعديل:** تغيير العمليات الحسابية + +--- + +## مخطط العلاقات لمجلد ldm_patched/ + +``` +modules/sd.py + ├── modules/model_management.py + ├── modules/model_detection.py + ├── modules/model_patcher.py + ├── modules/sd1_clip.py + ├── modules/sdxl_clip.py + ├── modules/clip_vision.py + ├── modules/lora.py + └── modules/latent_formats.py + +modules/samplers.py + ├── modules/model_management.py + ├── modules/conds.py + ├── k_diffusion/sampling.py + └── unipc/uni_pc.py + +modules/sample.py + ├── modules/model_management.py + ├── modules/samplers.py + └── modules/conds.py + +modules/model_patcher.py + ├── modules/model_management.py + └── modules/utils.py +``` + +--- + +**آخر تحديث:** 2026 +**الإصدار:** 2.5.5 diff --git a/.github/LICENSE.md b/.github/LICENSE.md new file mode 100644 index 0000000000..6449b1cc3a --- /dev/null +++ b/.github/LICENSE.md @@ -0,0 +1,247 @@ +# رخصة GNU General Public License الإصدار 3.0 + +## GNU GENERAL PUBLIC LICENSE +Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +### Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to any installation or modification of the software. This is fundamentally incompatible with the purpose of the GPL, which is to protect users' freedom to change the software. Therefore, the GPL prohibits such practices. If such a problem arises, people can take the software to a court or a tribunal to enforce the license. + +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free for the users of the program. + +The precise terms and conditions for copying, distribution and modification follow. + +### TERMS AND CONDITIONS + +#### 0. Definitions + +"This License" refers to version 3 of the GNU General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based on the Program. + +To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty (or that the warranty is provided), and (3) tells users how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + +#### 1. Source Code + +The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. + +A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + +#### 2. Basic Permissions + +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +#### 3. Protecting Users' Legal Rights From Anti-Circumvention Law + +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + +#### 4. Conveying Verbatim Copies + +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + +#### 5. Conveying Modified Source Versions + +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + +b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". + +c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + +d) If the work has interactive user interfaces, they must present Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + +#### 6. Conveying Non-Source Forms + +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + +a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the Corresponding Source fixed on a physical medium customarily used for software interchange; or + +d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has such substantial commercial, industrial, or non-consumer uses, unless such uses represent the only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + +#### 7. Additional Terms + +"Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You must remove all of these additional permissions from all copies of the work that you convey, or remove them if you convey a modified version of the work. + +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + +#### 8. Termination + +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + +#### 9. Acceptance Not Required for Having Copies + +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + +#### 10. Automatic Licensing of Downstream Recipients + +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + +#### 11. Patents + +A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a particular country, or your recipient's use of the covered work in a particular country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + +A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + +#### 12. No Surrender of Others' Freedom + +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + +#### 13. Use with the GNU Affero General Public License + +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + +#### 14. Revised Versions of this License + +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies that a proxy numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + +#### 15. Disclaimer of Warranty + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +#### 16. Limitation of Liability + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +#### 17. Provision of This License + +If you have received a copy of this License along with the Program, you may convey a copy of the Program (or a copy of it, or a modified version of it) under the terms of this License, and you may at your option convey a copy of this License along with the Program. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. You must, however, remove all of these notices from any copy of the Program that you convey, or remove them if you convey a modified version of the Program. + +#### 18. End of Terms + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. + +``` + +Copyright (C) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +``` + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + +``` + Copyright (C) +This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. +``` + +The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". + +You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + +The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . diff --git a/.github/MODULES.md b/.github/MODULES.md new file mode 100644 index 0000000000..99c2834489 --- /dev/null +++ b/.github/MODULES.md @@ -0,0 +1,603 @@ +# مجلد modules/ - الوحدات الأساسية + +## فهرس الملفات + +| الملف | الوظيفة | +|-------|---------| +| `__init__.py` | تعريف المجلد كـ package | +| `anisotropic.py` | فلاتر Blur شعاعية | +| `auth.py` | نظام المصادقة | +| `constants.py` | الثوابت | +| `html.py` | إنشاء HTML | +| `extra_utils.py` | دوال مساعدة | +| `hash_cache.py` | تخزين مؤقت للـ hashes | +| `gradio_hijack.py` | تعديل مكونات Gradio | +| `localization.py` | الترجمة | +| `model_loader.py` | تحميل الملفات | +| `ui_gradio_extensions.py` | حقن JavaScript/CSS | +| `ops.py` | تبديل العمليات الحسابية | +| `lora.py` | تحميل LoRA | +| `meta_parser.py` | تحليل البيانات الوصفية | +| `private_logger.py` | تسجيل الصور | +| `sdxl_styles.py` | أنماط SDXL | +| `style_sorter.py` | فرز الأنماط | +| `upscaler.py` | تكبير الصور | +| `sample_hijack.py` | تعديل العينات | +| `patch_precision.py` | تعديل الدقة | +| `patch_clip.py` | تعديل CLIP | +| `inpaint_worker.py` | معالج Inpaint | +| `default_pipeline.py` | خط الأنابيب الافتراضي | +| `core.py` | النواة الحسابية | +| `config.py` | إدارة الإعدادات | +| `async_worker.py` | المعالج غير المتزامن | +| `util.py` | دوال مساعدة متنوعة | + +--- + +## 📄 modules/__init__.py + +### 1. الوظيفة الأساسية (Core Function) +ملف فارغ - يجعل المجلد package Python. + +### 2. التفاصيل الفنية والبرمجية +لا يوجد محتوى. + +### 3. شبكة العلاقات ودورة الحياة +- **ضروري لاستيراد الملفات من هذا المجلد** + +--- + +## 📄 modules/anisotropic.py + +### 1. الوظيفة الأساسية (Core Function) +تطبيق فلاتر Blur شعاعية (Anisotropic/Bilateral) على الصور. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `torch` + +**الدوال الرئيسية:** +- `bilateral_blur()`: ضبابية ثنائية الجانب +- `joint_bilateral_blur()`: ضبابية ثنائية مع إرشاد +- `adaptive_anisotropic_filter()`: فلتر تكيّفي + +**الفئات:** +- `BilateralBlur`: وحدة PyTorch للضبابية +- `JointBilateralBlur`: وحدة مع إرشاد + +### 3. شبكة العلاقات ودورة الحياة +- **لا يستدعيه ملف آخر مباشرة** (يُستخدم محلياً) +- **التأثير عند التعديل:** تغيير خوارزميات الضبابية + +--- + +## 📄 modules/auth.py + +### 1. الوظيفة الأساسية (Core Function) +نظام المصادقة البسيط لحماية الوصول. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `json`, `hashlib`, `modules.constants` + +**الدوال:** +- `load_auth_data()`: تحميل بيانات المصادقة من JSON +- `check_auth()`: التحقق من اسم المستخدم وكلمة المرور +- `auth_list_to_dict()`: تحويل القاموس + +**المنطق:** +- يقرأ من `auth.json` +- يستخدم SHA256 لكلمة المرور + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` +- **يستدعي:** `modules/constants.py` +- **التأثير عند التعديل:** تعطيل/تفعيل المصادقة + +--- + +## 📄 modules/constants.py + +### 1. الوظيفة الأساسية (Core Function) +تعريف الثوابت الأساسية للمشروع. + +### 2. التفاصيل الفنية والبرمجية +```python +MIN_SEED = 0 +MAX_SEED = 2**63 - 1 +AUTH_FILENAME = 'auth.json' +``` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `auth.py`, `async_worker.py`, `patch.py` +- **لا يستدعي أي ملف** +- **التأثير عند التعديل:** تغيير النطاقات + +--- + +## 📄 modules/html.py + +### 1. الوظيفة الأساسية (Core Function) +إنشاء عناصر HTML للتقدم في الواجهة. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `make_progress_html(number, text)`: إنشاء شريط التقدم + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py`, `async_worker.py` +- **التأثير عند التعديل:** تغيير مظهر شريط التقدم + +--- + +## 📄 modules/extra_utils.py + +### 1. الوظيفة الأساسية (Core Function) +دوال مساعدة عامة للتعامل مع الملفات والمجلدات. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `makedirs_with_log()`: إنشاء مجلد مع تسجيل +- `get_files_from_folder()`: الحصول على ملفات من مجلد +- `try_eval_env_var()`: تقييم متغيرات البيئة + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `config.py`, `sdxl_styles.py` +- **التأثير عند التعديل:** تعطيل دوال المساعدة + +--- + +## 📄 modules/hash_cache.py + +### 1. الوظيفة الأساسية (Core Function) +نظام تخزين مؤقت للـ hashes لتسريع التحميل. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `json`, `concurrent.futures`, `modules.util` + +**الدوال:** +- `sha256_from_cache()`: حساب/تخزين hash +- `load_cache_from_file()`: تحميل من ملف +- `save_cache_to_file()`: حفظ في ملف +- `rebuild_cache()`: إعادة بناء الكاش + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `launch.py`, `meta_parser.py` +- **يستدعي:** `modules/util.py` +- **التأثير عند التعديل:** بطء حساب الـ hashes + +--- + +## 📄 modules/gradio_hijack.py + +### 1. الوظيفة الأساسية (Core Function) + تعديل (hijack) مكون Image في Gradio لدعم ميزات إضافية. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `gradio`, `PIL`, `numpy` + +**الفئات:** +- `Image`: نسخة معدّلة من `gradio.Image` مع دعم sketch و masks + +**التعديلات:** +- تجاوز timeout في `asyncio.wait_for` +- تتبع جميع المكونات في `all_components` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` +- **التأثير عند التعديل:** تغيير سلوك مكونات الصور + +--- + +## 📄 modules/localization.py + +### 1. الوظيفة الأساسية (Core Function) +نظام الترجمة للواجهة المتعددة اللغات. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `localization_js()`: تحميل ملف الترجمة وإرجاع JavaScript +- `dump_english_config()`: تصدير النصوص الإنجليزية + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `ui_gradio_extensions.py` +- **التأثير عند تعديل:** تعطيل الترجمة + +--- + +## 📄 modules/model_loader.py + +### 1. الوظيفة الأساسية (Core Function) +تحميل الملفات من URLs مع دعم الكاش المحلي. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `load_file_from_url()`: تحميل ملف من URL مع التخزين المؤقت + +**المنطق:** +- يتحقق من الملف المحلي أولاً +- يستخدم `torch.hub.download_url_to_file` +- يدعم HuggingFace Mirror + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `launch.py`, `interrogate.py`, `wd14tagger.py` +- **التأثير عند التعديل:** تعطيل تحميل النماذج + +--- + +## 📄 modules/ui_gradio_extensions.py + +### 1. الوظيفة الأساسية (Core Function) +حقن ملفات JavaScript و CSS في واجهة Gradio. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `javascript_html()`: إنشاء tags script +- `css_html()`: إنشاء tags link +- `reload_javascript()`: حقن الملفات في HTML + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` +- **يستدعي:** `modules/localization.py` +- **التأثير عند التعديل:** تعطيل JavaScript/CSS المخصص + +--- + +## 📄 modules/ops.py + +### 1. الوظيفة الأساسية (Core Function) +تبديل العمليات الحسابية مؤقتاً (context manager). + +### 2. التفاصيل الفنية والبرمجية +```python +@contextlib.contextmanager +def use_patched_ops(operations): + # يستبدل Linear, Conv2d, GroupNorm, LayerNorm مؤقتاً +``` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `patch_clip.py`, `ip_adapter.py` +- **التأثير عند التعديل:** تغيير العمليات الحسابية + +--- + +## 📄 modules/lora.py + +### 1. الوظيفة الأساسية (Core Function) +مطابقة وتحميل ملفات LoRA بأنواع مختلفة. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `match_lora()`: مطابقة أسماء المفاتيح مع دعم أنواع متعددة + +**أنواع LoRA المدعومة:** +- LoRA العادي +- LoHa +- LoKr +- GLoRA +- Diff + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `core.py` +- **التأثير عند التعديل:** تعطيل دعم LoRA + +--- + +## 📄 modules/meta_parser.py + +### 1. الوظيفة الأساسية (Core Function) +تحليل وحفظ البيانات الوصفية للصور بتنسيقات مختلفة. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `MetadataParser`: الفئة الأساسية المجردة +- `A1111MetadataParser`: تنسيق A1111/Civitai +- `FooocusMetadataParser`: تنسيق Fooocus الخاص + +**الدوال:** +- `load_parameter_button_click()`: تحميل المعاملات من صورة +- `read_info_from_image()`: قراءة البيانات من صورة +- `get_exif()`: إنشاء بيانات EXIF + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py`, `private_logger.py`, `async_worker.py` +- **يستدعي:** `modules/config.py`, `modules/hash_cache.py` +- **التأثير عند التعديل:** تعطيل حفظ/قراءة البيانات الوصفية + +--- + +## 📄 modules/private_logger.py + +### 1. الوظيفة الأساسية (Core Function) +تسجيل الصور المولّدة في ملف HTML خاص. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `log()`: حفظ الصورة وتسجيل البيانات في HTML +- `get_current_html_path()`: الحصول على مسار ملف السجل + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **يستدعي:** `modules/meta_parser.py` +- **التأثير عند التعديل:** تعطيل تسجيل الصور + +--- + +## 📄 modules/sdxl_styles.py + +### 1. الوظيفة الأساسية (Core Function) +تحميل وإدارة أنماط SDXL للبرومبت. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `apply_style()`: تطبيق نمط على البرومبت +- `get_random_style()`: الحصول على نمط عشوائي +- `apply_arrays()`: معالجة المصفوفات في البرومبت + +**البيانات:** +- `styles`: قاموس الأنماط +- `fooocus_expansion`: اسم نمط Fooocus V2 +- `legal_style_names`: الأسماء القانونية + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py`, `async_worker.py` +- **يستدعي:** `modules/extra_utils.py` +- **التأثير عند التعديل:** تعطيل الأنماط + +--- + +## 📄 modules/style_sorter.py + +### 1. الوظيفة الأساسية (Core Function) +إدارة وفرز الأنماط في الواجهة. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `try_load_sorted_styles()`: تحميل الترتيب المحفوظ +- `sort_styles()`: حفظ الترتيب الجديد +- `search_styles()`: البحث في الأنماط + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` +- **التأثير عند التعديل:** تعطيل فرز الأنماط + +--- + +## 📄 modules/upscaler.py + +### 1. الوظيفة الأساسية (Core Function) +تكبير الصور باستخدام ESRGAN. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `perform_upscale()`: تكبير الصورة + +**الفئات:** +- `RRDBNet`: نموذج ESRGAN + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py`, `inpaint_worker.py` +- **التأثير عند التعديل:** تعطيل تكبير الصور + +--- + +## 📄 modules/sample_hijack.py + +### 1. الوظيفة الأساسية (Core Function) +تعديل دوال العينات (Sampling) في ldm_patched لدعم Refiner. + +### 2. التفاصيل الفنية والبرمجية +**الدوال الرئيسية:** +- `clip_separate()`: فصل CLIP للـ Refiner +- `sample_hacked()`: دالة العينات المعدّلة +- `calculate_sigmas_scheduler_hacked()`: حساب Sigmas + +**التعديلات:** +- يُعدّل `ldm_patched.modules.samplers.sample` +- يُعدّل `ldm_patched.modules.samplers.calculate_sigmas_scheduler` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `patch.py` (عبر `patch_all()`) +- **يعدّل:** `ldm_patched/modules/samplers.py` +- **التأثير عند التعديل:** تعطيل دعم Refiner + +--- + +## 📄 modules/patch_precision.py + +### 1. الوظيفة الأساسية (Core Function) +تعديل دوال Time Embedding و Register Schedule لتطابق Kohya. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `patched_timestep_embedding()`: Time embedding معدّل +- `patched_register_schedule()`: Schedule معدّل +- `patch_all_precision()`: تطبيق التعديلات + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `patch.py` +- **التأثير عند التعديل:** تغيير دقة النموذج + +--- + +## 📄 modules/patch_clip.py + +### 1. الوظيفة الأساسية (Core Function) +تعديل نماذج CLIP لتطابق Kohya/A1111. + +### 2. التفاصيل الفنية والبرمجية +**الدوال:** +- `patched_encode_token_weights()`: تشفير الأوزان +- `patched_SDClipModel__init__()` initialise CLIP +- `patched_SDClipModel_forward()`: Forward pass +- `patch_all_clip()`: تطبيق جميع التعديلات + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `patch.py` +- **التأثير عند التعديل:** تغيير تشفير النص + +--- + +## 📄 modules/patch.py + +### 1. الوظيفة الأساسية (Core Function) +تطبيق تعديلات Fooocus على نموذج diffusion. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `PatchSettings`: إعدادات التعديلات + +**الدوال:** +- `calculate_weight_patched()`: حساب الأوزان مع LoRA +- `patch_all()`: تطبيق جميع التعديلات + +**أنواع الـ Patches:** +- `diff`, `lora`, `fooocus`, `loha`, `lokr`, `glora` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **يستدعي:** `patch_precision.py`, `patch_clip.py`, `sample_hijack.py` +- **التأثير عند التعديل:** تغيير سلوك النموذج بالكامل + +--- + +## 📄 modules/default_pipeline.py + +### 1. الوظيفة الأساسية (Core Function) +إدارة خط أنابيب التوليد الافتراضي. + +### 2. التفاصيل الفنية والبرمجية +**المتغيرات الرئيسية:** +- `model_base`, `model_refiner`: النماذج المحملة +- `loaded_ControlNets`: ControlNets المحملة + +**الدوال:** +- `refresh_base_model()`: تحديث النموذج الأساسي +- `refresh_refiner_model()`: تحديث Refiner +- `process_diffusion()`: تنفيذ التشتت + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `async_worker.py` +- **يستدعي:** `modules/core.py` +- **التأثير عند التعديل:** تعطيل خط الأنابيب + +--- + +## 📄 modules/core.py + +### 1. الوظيفة الأساسية (Core Function) +النواة الحسابية - تحميل النماذج وتشغيل التوليد. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `StableDiffusionModel`: نموذج Stable Diffusion +- `VAEApprox`: تقريب VAE للمعاينة + +**الدوال:** +- `load_model()`: تحميل نموذج +- `load_controlnet()`: تحميل ControlNet +- `ksampler()`: العينات +- `encode_vae()`, `decode_vae()`: ترميز VAE + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `default_pipeline.py`, `upscaler.py`, `ip_adapter.py` +- **يستدعي:** `ldm_patched/modules/sd.py` +- **التأثير عند التعديل:** تعطيل التوليد بالكامل + +--- + +## 📄 modules/config.py + +### 1. الوظيفة الأساسية (Core Function) +إدارة جميع الإعدادات والمسارات في المشروع. + +### 2. التفاصيل الفنية والبرمجية +**الدوال الرئيسية:** +- `get_dir_or_set_default()`: الحصول على مسار +- `get_config_item_or_set_default()`: الحصول على إعداد +- `update_files()`: تحديث قوائم الملفات + +**المسارات:** +- `paths_checkpoints`, `paths_loras`, `path_embeddings`, `path_vae`, etc. + +**الإعدادات الافتراضية:** +- `default_base_model_name`, `default_cfg_scale`, `default_sampler`, etc. + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** جميع ملفات modules تقريباً +- **يستدعي:** `presets/default.json`, `config.txt` +- **التأثير عند التعديل:** تعطيل الإعدادات بالكامل + +--- + +## 📄 modules/async_worker.py + +### 1. الوظيفة الأساسية (Core Function) +المعالج غير المتزامن للصور - يدير دورة حياة التوليد. + +### 2. التفاصيل الفنية والبرمجية +**الفئات:** +- `AsyncTask`: تمثيل طلب توليد واحد + +**الدوال:** +- `worker()`: الحلقة الرئيسية للمعالج +- `process_task()`: معالجة مهمة واحدة +- `apply_vary()`: تطبيق التباين +- `apply_inpaint()`: تطبيق Inpaint + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` +- **يستدعي:** `modules/default_pipeline.py`, `modules/patch.py`, `modules/core.py` +- **التأثير عند التعديل:** تعطيل التوليد بالكامل + +--- + +## 📄 modules/util.py + +### 1. الوظيفة الأساسية (Core Function) +دوال مساعدة متنوعة للمشروع. + +### 2. التفاصيل الفنية والبرمجية +**الدوال الرئيسية:** +- `sha256()`: حساب hash +- `HWC3()`: تحويل تنسيق الصورة +- `resize_image()`: تغيير حجم الصورة +- `parse_lora_references_from_prompt()`: تحليل LoRA من البرومبت +- `apply_wildcards()`: تطبيق Wildcards + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** معظم ملفات modules +- **التأثير عند التعديل:** تعطيل الدوال المساعدة + +--- + +## مخطط العلاقات لمجلد modules/ + +``` +webui.py + ├── async_worker.py + │ ├── default_pipeline.py + │ │ └── core.py + │ │ └── lora.py + │ ├── patch.py + │ │ ├── patch_precision.py + │ │ ├── patch_clip.py + │ │ └── sample_hijack.py + │ ├── inpaint_worker.py + │ │ └── upscaler.py + │ └── private_logger.py + │ └── meta_parser.py + ├── config.py + │ └── extra_utils.py + ├── sdxl_styles.py + │ └── extra_utils.py + ├── html.py + ├── localization.py + │ └── ui_gradio_extensions.py + ├── auth.py + │ └── constants.py + └── style_sorter.py +``` + +--- + +**آخر تحديث:** 2026 +**الإصدار:** 2.5.5 diff --git a/.github/README_ar.md b/.github/README_ar.md new file mode 100644 index 0000000000..6ac6d4030e --- /dev/null +++ b/.github/README_ar.md @@ -0,0 +1,493 @@ +
+ +
+ +# فوكس (Fooocus) + +[>>> انقر هنا لتثبيت فوكس <<<](#download) + +فوكس هو برنامج لتوليد الصور (مبني على [Gradio](https://www.gradio.app/) ). + +**للمزيد من التفاصيل، راجع الملفات التالية:** +- [pdf.md](pdf.md) - الدليل الشامل +- [map-road.md](map-road.md) - خريطة طريق Fooocus +- [troubleshoot_ar.md](troubleshoot_ar.md) - استكشاف الأخطاء +- [update_log_ar.md](update_log_ar.md) - سجل التحديثات + +يقدم فوكس إعادة تفكير في تصميم مولدات الصور. البرنامج يعمل دون اتصال، مفتوح المصدر، ومجاني، وفي الوقت نفسه، مشابه للعديد من مولدات الصور عبر الإنترنت مثل ميدجورني، فلا حاجة للتعديل اليدوي، ويحتاج المستخدمون فقط إلى التركيز على التوجيهات (prompts) والصور. كما قام فوكس بتبسيط التثبيت: بين الضغط على "تنزيل" وتوليد أول صورة، عدد النقرات المطلوبة بالماوس محدود بدقة بأقل من 3. الحد الأدنى المطلوب لذاكرة GPU هو 4 جيجابايت (Nvidia). + +**مؤخرًا، توجد العديد من المواقع المزيفة على جوجل عند البحث عن "fooocus". لا تثق بتلك المواقع – هنا المصدر الرسمي الوحيد لفوكس.** + +# حالة المشروع: دعم طويل الأمد محدود (LTS) مع إصلاحات الأخطاء فقط + +مشروع فوكس، المبني بالكامل على بنية **Stable Diffusion XL**، هو الآن في حالة دعم طويل الأمد محدود (LTS) مع إصلاحات الأخطاء فقط. نظرًا لأن الوظائف الحالية تُعتبر خالية تقريبًا من المشكلات البرمجية (بفضل جهود [mashb1t](https://github.com/mashb1t) الكبيرة)، ستركز التحديثات المستقبلية حصريًا على معالجة أي أخطاء قد تطرأ. + +**لا توجد خطط حالية للانتقال إلى أو دمج بنى نماذج أحدث.** ومع ذلك، قد يتغير هذا بمرور الوقت مع تطور مجتمع المصادر المفتوحة. على سبيل المثال، إذا تقارب المجتمع حول طريقة واحدة مهيمنة لتوليد الصور (وهو ما قد يحدث بالفعل في غضون نصف سنة أو سنة بالنظر إلى الوضع الحالي)، فقد ينتقل فوكس أيضًا إلى تلك الطريقة بالضبط. + +بالنسبة للمهتمين باستخدام نماذج أحدث مثل **Flux**، نوصي باستكشاف منصات بديلة مثل [WebUI Forge](https://github.com/lllyasviel/stable-diffusion-webui-forge) (أيضًا منا)، [ComfyUI/SwarmUI](https://github.com/comfyanonymous/ComfyUI). بالإضافة إلى ذلك، تتوفر العديد من [التفرعات الممتازة لفوكس](https://github.com/lllyasviel/Fooocus?tab=readme-ov-file#forks) للتجربة. + +مرة أخرى، مؤخرًا توجد العديد من المواقع المزيفة على جوجل عند البحث عن "fooocus". لا **تحصل** على فوكس من تلك المواقع – هذه الصفحة هي المصدر الرسمي الوحيد لفوكس. ليس لدينا أي موقع مثل "fooocus.com" أو "fooocus.net" أو "fooocus.co" أو "fooocus.ai" أو "fooocus.org" أو "fooocus.pro" أو "fooocus.one". تلك المواقع كلها **مزيفة**. **ليست لها أي علاقة بنا على الإطلاق. فوكس هو برنامج مفتوح المصدر غير تجاري يعمل دون اتصال بنسبة 100%.** + +# الميزات + +فيما يلي قائمة سريعة باستخدام أمثلة ميدجورني: + +| ميدجورني | فوكس | +| - | - | +| تحويل نص إلى صورة عالي الجودة دون الحاجة لكثير من هندسة التوجيه أو ضبط المعايير.
(طريقة غير معروفة) | تحويل نص إلى صورة عالي الجودة دون الحاجة لكثير من هندسة التوجيه أو ضبط المعايير.
(يمتلك فوكس محرك معالجة توجيه غير متصل يعتمد على GPT-2 والعديد من تحسينات أخذ العينات بحيث تكون النتائج دائمًا جميلة، بغض النظر عما إذا كان توجيهك قصيرًا مثل "منزل في حديقة" أو طويلاً يصل إلى 1000 كلمة) | +| V1 V2 V3 V4 | صورة إدخال -> تحسين أو تباين -> تغيير (خفيف) / تغيير (قوي) | +| U1 U2 U3 U4 | صورة إدخال -> تحسين أو تباين -> تحسين (1.5x) / تحسين (2x) | +| الرسم الداخلي / أعلى / أسفل / يسار / يمين (تحريك) | صورة إدخال -> رسم داخلي أو رسم خارجي -> رسم داخلي / أعلى / أسفل / يسار / يمين
(يستخدم فوكس خوارزمية الرسم الداخلي الخاصة به ونماذج الرسم الداخلي بحيث تكون النتائج أكثر إرضاءً من جميع البرامج الأخرى التي تستخدم طريقة/نموذج الرسم الداخلي القياسي لـ SDXL) | +| توجيه الصورة | صورة إدخال -> توجيه الصورة
(يستخدم فوكس خوارزمية توجيه الصور الخاصة به بحيث تكون جودة النتيجة وفهم التوجيه أكثر إرضاءً من جميع البرامج الأخرى التي تستخدم طرق SDXL القياسية مثل IP-Adapters القياسية أو Revisions) | +| --style | متقدم -> النمط | +| --stylize | متقدم -> متقدم -> التوجيه | +| --niji | [مشغلات متعددة: "run.bat" و "run_anime.bat" و "run_realistic.bat".](https://github.com/lllyasviel/Fooocus/discussions/679)
يدعم فوكس نماذج SDXL على Civitai
(يمكنك البحث في جوجل عن "Civitai" إذا كنت لا تعرفه) | +| --quality | متقدم -> الجودة | +| --repeat | متقدم -> عدد الصور | +| توجيهات متعددة (::) | فقط استخدم عدة أسطر من التوجيهات | +| أوزان التوجيه | يمكنك استخدام "أنا (سعيد:1.5)".
يستخدم فوكس خوارزمية إعادة الوزن لـ A1111 بحيث تكون النتائج أفضل من ComfyUI إذا قام المستخدمون بنسخ التوجيهات مباشرة من Civitai. (لأنه إذا كانت التوجيهات مكتوبة بإعادة وزن ComfyUI، فمن غير المرجح أن ينسخ المستخدمون نصوص التوجيهات حيث يفضلون سحب الملفات)
لاستخدام التضمين (embedding)، يمكنك استخدام "(embedding:file_name:1.1)" | +| --no | متقدم -> التوجيه السلبي | +| --ar | متقدم -> نسب الأبعاد | +| InsightFace | صورة إدخال -> توجيه الصورة -> متقدم -> تبديل الوجوه | +| وصف | صورة إدخال -> وصف | + +فيما يلي قائمة سريعة باستخدام أمثلة LeonardoAI: + +| LeonardoAI | فوكس | +| - | - | +| سحر التوجيه | متقدم -> النمط -> Fooocus V2 | +| معايير أخذ العينات المتقدمة (مثل التباين/الحدّة/إلخ) | متقدم -> متقدم -> حدّة أخذ العينات / إلخ | +| شبكات التحكم سهلة الاستخدام | صورة إدخال -> توجيه الصورة -> متقدم | + +أيضًا، [انقر هنا لتصفح الميزات المتقدمة.](https://github.com/lllyasviel/Fooocus/discussions/117) + +# التنزيل + +### ويندوز + +يمكنك تنزيل فوكس مباشرة من: + +**[>>> انقر هنا للتنزيل <<<](https://github.com/lllyasviel/Fooocus/releases/download/v2.5.0/Fooocus_win64_2-5-0.7z)** + +بعد تنزيل الملف، يرجى فك ضغطه ثم تشغيل "run.bat". + +![image](https://github.com/lllyasviel/Fooocus/assets/19834515/c49269c4-c274-4893-b368-047c401cc58c) + +عند تشغيل البرنامج لأول مرة، سيقوم تلقائيًا بتنزيل النماذج: + +1. سيقوم بتنزيل [النماذج الافتراضية](#models) إلى المجلد "Fooocus\models\checkpoints" وفقًا للإعدادات المسبقة المختلفة. يمكنك تنزيلها مسبقًا إذا كنت لا تريد التنزيل التلقائي. +2. لاحظ أنه إذا كنت تستخدم الرسم الداخلي (inpaint)، في المرة الأولى التي ترسم فيها صورة داخليًا، سيقوم بتنزيل [نموذج التحكم في الرسم الداخلي الخاص بفوكس من هنا](https://huggingface.co/lllyasviel/fooocus_inpaint/resolve/main/inpaint_v26.fooocus.patch) كملف "Fooocus\models\inpaint\inpaint_v26.fooocus.patch" (حجم هذا الملف 1.28 جيجابايت). + +بعد فوكس 2.1.60، سيكون لديك أيضًا `run_anime.bat` و `run_realistic.bat`. هما إعدادات مسبقة مختلفة للنماذج (وتتطلب نماذج مختلفة، ولكن سيتم تنزيلها تلقائيًا). [تحقق هنا لمزيد من التفاصيل](https://github.com/lllyasviel/Fooocus/discussions/679). + +بعد فوكس 2.3.0، يمكنك أيضًا تبديل الإعدادات المسبقة مباشرة في المتصفح. ضع في اعتبارك إضافة هذه الوسائط إذا كنت تريد تغيير السلوك الافتراضي: +* استخدم `--disable-preset-selection` لتعطيل اختيار الإعداد المسبق في المتصفح. +* استخدم `--always-download-new-model` لتنزيل النماذج المفقودة عند تبديل الإعداد المسبق. الوضع الافتراضي هو الرجوع إلى `previous_default_models` المحدد في الإعداد المسبق المقابل، انظر أيضًا مخرجات الطرفية. + +![image](https://github.com/lllyasviel/Fooocus/assets/19834515/d386f817-4bd7-490c-ad89-c1e228c23447) + +إذا كان لديك هذه الملفات بالفعل، يمكنك نسخها إلى المواقع أعلاه لتسريع التثبيت. + +لاحظ أنه إذا رأيت **"MetadataIncompleteBuffer" أو "PytorchStreamReader"**، فإن ملفات النموذج لديك تالفة. يرجى تنزيل النماذج مرة أخرى. + +فيما يلي اختبار على كمبيوتر محمول منخفض المواصفات نسبيًا مع **16 جيجابايت ذاكرة نظام (RAM)** و **6 جيجابايت ذاكرة فيديو (VRAM)** (كمبيوتر محمول Nvidia 3060). السرعة على هذا الجهاز حوالي 1.35 ثانية لكل تكرار. مثير للإعجاب – أجهزة الكمبيوتر المحمولة المزودة بـ 3060 عادة ما تكون بسعر مقبول جدًا هذه الأيام. + +![image](https://github.com/lllyasviel/Fooocus/assets/19834515/938737a5-b105-4f19-b051-81356cb7c495) + +علاوة على ذلك، أفادت العديد من البرامج الأخرى مؤخرًا أن برنامج تشغيل Nvidia أعلى من 532 يكون أحيانًا أبطأ 10 مرات من برنامج تشغيل Nvidia 531. إذا كان وقت التوليد طويلاً جدًا، فكر في تنزيل [Nvidia Driver 531 Laptop](https://www.nvidia.com/download/driverResults.aspx/199991/en-us/) أو [Nvidia Driver 531 Desktop](https://www.nvidia.com/download/driverResults.aspx/199990/en-us/). + +لاحظ أن الحد الأدنى المطلوب هو **4 جيجابايت ذاكرة GPU Nvidia (4GB VRAM)** و **8 جيجابايت ذاكرة نظام (8GB RAM)**. يتطلب هذا استخدام تقنية المبادلة الافتراضية من مايكروسوفت (Virtual Swap)، والتي يتم تمكينها تلقائيًا بواسطة تثبيت ويندوز في معظم الحالات، لذلك غالبًا لا تحتاج لفعل أي شيء حيال ذلك. ومع ذلك، إذا لم تكن متأكدًا، أو إذا قمت بتعطيلها يدويًا (هل سيفعل أحد ذلك حقًا؟)، أو **إذا رأيت أي "RuntimeError: CPUAllocator"**، يمكنك تمكينها هنا: + +
+انقر هنا لرؤية تعليمات الصورة. + +![image](https://github.com/lllyasviel/Fooocus/assets/19834515/2a06b130-fe9b-4504-94f1-2763be4476e9) + +**وتأكد من أن لديك على الأقل 40 جيجابايت مساحة خالية على كل محرك أقراص إذا كنت لا تزال ترى "RuntimeError: CPUAllocator" !** + +
+ +يرجى فتح مشكلة (issue) إذا كنت تستخدم أجهزة مماثلة ولكنك لا تزال غير قادر على تحقيق أداء مقبول. + +لاحظ أن [الحد الأدنى المطلوب](#minimal-requirement) يختلف باختلاف المنصات. + +انظر أيضًا المشكلات الشائعة واستكشاف الأخطاء وإصلاحها [هنا](troubleshoot.md). + +### كولاب (Colab) + +(آخر اختبار - 12 أغسطس 2024 بواسطة [mashb1t](https://github.com/mashb1t)) + +| كولاب | معلومات | +| --- | --- | +[![فتح في كولاب](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lllyasviel/Fooocus/blob/main/fooocus_colab.ipynb) | فوكس الرسمي + +في كولاب، يمكنك تعديل السطر الأخير إلى `!python entry_with_update.py --share --always-high-vram` أو `!python entry_with_update.py --share --always-high-vram --preset anime` أو `!python entry_with_update.py --share --always-high-vram --preset realistic` لإصدارات فوكس الافتراضي/الأنمي/الواقعي. + +يمكنك أيضًا تغيير الإعداد المسبق في واجهة المستخدم. يرجى العلم أن هذا قد يؤدي إلى انتهاء المهلة بعد 60 ثانية. إذا كان الأمر كذلك، يرجى الانتظار حتى يكتمل التنزيل، وقم بتغيير الإعداد المسبق إلى الإعداد الأولي ثم العودة إلى الإعداد الذي اخترته أو أعد تحميل الصفحة. + +لاحظ أن هذا الكولاب سيعطل المُحسِّن (refiner) افتراضيًا لأن موارد كولاب المجانية محدودة نسبيًا (وبعض الميزات "الكبيرة" مثل توجيه الصورة قد تتسبب في قطع اتصال كولاب المجاني). نحن نضمن أن تحويل النص إلى صورة الأساسي يعمل دائمًا على كولاب المجاني. + +استخدام `--always-high-vram` ينقل تخصيص الموارد من RAM إلى VRAM ويحقق أفضل توازن عام بين الأداء والمرونة والاستقرار على مثيل T4 الافتراضي. يرجى العثور على مزيد من المعلومات [هنا](https://github.com/lllyasviel/Fooocus/pull/1710#issuecomment-1989185346). + +شكرًا لـ [camenduru](https://github.com/camenduru) على القالب! + +### لينكس (باستخدام Anaconda) + +إذا كنت تريد استخدام Anaconda/Miniconda، يمكنك + + git clone https://github.com/lllyasviel/Fooocus.git + cd Fooocus + conda env create -f environment.yaml + conda activate fooocus + pip install -r requirements_versions.txt + +ثم قم بتنزيل النماذج: قم بتنزيل [النماذج الافتراضية](#models) إلى المجلد "Fooocus\models\checkpoints". **أو دع فوكس يقوم بتنزيل النماذج تلقائيًا** باستخدام المُشغل: + + conda activate fooocus + python entry_with_update.py + +أو، إذا كنت تريد فتح منفذ بعيد، استخدم + + conda activate fooocus + python entry_with_update.py --listen + +استخدم `python entry_with_update.py --preset anime` أو `python entry_with_update.py --preset realistic` لإصدار فوكس للأنمي/الواقعي. + +### لينكس (باستخدام Python Venv) + +يجب أن يكون لديك **Python 3.10** مثبتًا على لينكس، ولنفترض أنه يمكن استدعاء Python الخاص بك بالأمر **python3** مع عمل نظام venv الخاص بك؛ يمكنك + + git clone https://github.com/lllyasviel/Fooocus.git + cd Fooocus + python3 -m venv fooocus_env + source fooocus_env/bin/activate + pip install -r requirements_versions.txt + +انظر الأقسام أعلاه لتنزيل النماذج. يمكنك تشغيل البرنامج بـ: + + source fooocus_env/bin/activate + python entry_with_update.py + +أو، إذا كنت تريد فتح منفذ بعيد، استخدم + + source fooocus_env/bin/activate + python entry_with_update.py --listen + +استخدم `python entry_with_update.py --preset anime` أو `python entry_with_update.py --preset realistic` لإصدار فوكس للأنمي/الواقعي. + +### لينكس (باستخدام Python النظام الأصلي) + +إذا كنت تعرف ما تفعله، وكان لينكس لديك مثبتًا عليه **Python 3.10** بالفعل، ويمكن استدعاء Python الخاص بك بالأمر **python3** (و Pip بـ **pip3**)، يمكنك + + git clone https://github.com/lllyasviel/Fooocus.git + cd Fooocus + pip3 install -r requirements_versions.txt + +انظر الأقسام أعلاه لتنزيل النماذج. يمكنك تشغيل البرنامج بـ: + + python3 entry_with_update.py + +أو، إذا كنت تريد فتح منفذ بعيد، استخدم + + python3 entry_with_update.py --listen + +استخدم `python entry_with_update.py --preset anime` أو `python entry_with_update.py --preset realistic` لإصدار فوكس للأنمي/الواقعي. + +### لينكس (بطاقات AMD GPU) + +لاحظ أن [الحد الأدنى المطلوب](#minimal-requirement) يختلف باختلاف المنصات. + +نفس التعليمات أعلاه. تحتاج إلى تغيير torch إلى إصدار AMD + + pip uninstall torch torchvision torchaudio torchtext functorch xformers + pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.6 + +ومع ذلك، لم يتم اختبار AMD بشكل مكثف. دعم AMD في مرحلة تجريبية (beta). + +استخدم `python entry_with_update.py --preset anime` أو `python entry_with_update.py --preset realistic` لإصدار فوكس للأنمي/الواقعي. + +### ويندوز (بطاقات AMD GPU) + +لاحظ أن [الحد الأدنى المطلوب](#minimal-requirement) يختلف باختلاف المنصات. + +نفس نظام ويندوز. قم بتنزيل البرنامج وتعديل محتوى `run.bat` كما يلي: + + .\python_embeded\python.exe -m pip uninstall torch torchvision torchaudio torchtext functorch xformers -y + .\python_embeded\python.exe -m pip install torch-directml + .\python_embeded\python.exe -s Fooocus\entry_with_update.py --directml + pause + +ثم قم بتشغيل `run.bat`. + +ومع ذلك، لم يتم اختبار AMD بشكل مكثف. دعم AMD في مرحلة تجريبية (beta). + +لـ AMD، استخدم `.\python_embeded\python.exe Fooocus\entry_with_update.py --directml --preset anime` أو `.\python_embeded\python.exe Fooocus\entry_with_update.py --directml --preset realistic` لإصدار فوكس للأنمي/الواقعي. + +### ماك + +لاحظ أن [الحد الأدنى المطلوب](#minimal-requirement) يختلف باختلاف المنصات. + +لم يتم اختبار ماك بشكل مكثف. فيما يلي إرشادات غير رسمية لاستخدام ماك. يمكنك مناقشة المشكلات [هنا](https://github.com/lllyasviel/Fooocus/pull/129). + +يمكنك تثبيت فوكس على Apple Mac silicon (M1 أو M2) مع macOS 'Catalina' أو إصدار أحدث. يعمل فوكس على أجهزة Apple silicon عبر [PyTorch](https://pytorch.org/get-started/locally/) تسريع جهاز MPS. أجهزة Mac Silicon لا تأتي مع بطاقة رسوميات مخصصة، مما يؤدي إلى أوقات معالجة صور أطول بكثير مقارنة بأجهزة الكمبيوتر المزودة ببطاقات رسوميات مخصصة. + +1. قم بتثبيت مدير حزم conda و pytorch nightly. اقرأ دليل مطوري Apple [تدريب PyTorch المتسارع على Mac](https://developer.apple.com/metal/pytorch/) للحصول على التعليمات. تأكد من أن pytorch يتعرف على جهاز MPS الخاص بك. +1. افتح تطبيق Terminal في macOS واستنسخ هذا المستودع بـ `git clone https://github.com/lllyasviel/Fooocus.git`. +1. انتقل إلى دليل فوكس الجديد، `cd Fooocus`. +1. أنشئ بيئة conda جديدة، `conda env create -f environment.yaml`. +1. قم بتفعيل بيئة conda الجديدة الخاصة بك، `conda activate fooocus`. +1. قم بتثبيت الحزم المطلوبة بواسطة فوكس، `pip install -r requirements_versions.txt`. +1. شغّل فوكس بتشغيل `python entry_with_update.py`. (قد يحتاج بعض مستخدمي Mac M2 إلى `python entry_with_update.py --disable-offload-from-vram` لتسريع تحميل/تفريغ النماذج.) في المرة الأولى التي تشغل فيها فوكس، سيقوم تلقائيًا بتنزيل نماذج Stable Diffusion SDXL وسيستغرق وقتًا طويلاً، اعتمادًا على اتصالك بالإنترنت. + +استخدم `python entry_with_update.py --preset anime` أو `python entry_with_update.py --preset realistic` لإصدار فوكس للأنمي/الواقعي. + +### دوكر (Docker) + +انظر [docker.md](docker.md) + +### تنزيل الإصدار السابق + +انظر الإرشادات [هنا](https://github.com/lllyasviel/Fooocus/discussions/1405). + +## الحد الأدنى من المتطلبات + +فيما يلي الحد الأدنى من المتطلبات لتشغيل فوكس محليًا. إذا كانت قدرات جهازك أقل من هذه المواصفات، فقد لا تتمكن من استخدام فوكس محليًا. (يرجى إعلامنا، في أي حال، إذا كانت قدرات جهازك أقل ولكن فوكس لا يزال يعمل.) + +| نظام التشغيل | GPU | الحد الأدنى لذاكرة GPU | الحد الأدنى لذاكرة النظام | [مبادلة النظام](troubleshoot.md) | ملاحظة | +|-------------------|------------------------------|------------------------------|---------------------------|--------------------------------|-----------------------------------------------------------------------------| +| ويندوز/لينكس | Nvidia RTX 4XXX | 4GB | 8GB | مطلوب | الأسرع | +| ويندوز/لينكس | Nvidia RTX 3XXX | 4GB | 8GB | مطلوب | عادة أسرع من RTX 2XXX | +| ويندوز/لينكس | Nvidia RTX 2XXX | 4GB | 8GB | مطلوب | عادة أسرع من GTX 1XXX | +| ويندوز/لينكس | Nvidia GTX 1XXX | 8GB (* 6GB غير مؤكد) | 8GB | مطلوب | أسرع بشكل هامشي فقط من CPU | +| ويندوز/لينكس | Nvidia GTX 9XX | 8GB | 8GB | مطلوب | أسرع أو أبطأ من CPU | +| ويندوز/لينكس | Nvidia GTX < 9XX | غير مدعوم | / | / | / | +| ويندوز | AMD GPU | 8GB (آخر تحديث 30 ديسمبر 2023) | 8GB | مطلوب | عبر DirectML (* ROCm معلق)، أبطأ بحوالي 3 مرات من Nvidia RTX 3XXX | +| لينكس | AMD GPU | 8GB | 8GB | مطلوب | عبر ROCm، أبطأ بحوالي 1.5 مرة من Nvidia RTX 3XXX | +| ماك | M1/M2 MPS | مشترك | مشترك | مشترك | أبطأ بحوالي 9 مرات من Nvidia RTX 3XXX | +| ويندوز/لينكس/ماك | استخدام CPU فقط | 0GB | 32GB | مطلوب | أبطأ بحوالي 17 مرة من Nvidia RTX 3XXX | + +* AMD GPU ROCm (معلق): لا تزال AMD تعمل على دعم ROCm على ويندوز. + +* Nvidia GTX 1XXX 6GB غير مؤكد: يبلغ بعض الأشخاص عن نجاح 6GB على GTX 10XX، ولكن يبلغ آخرون عن حالات فشل. + +*لاحظ أن فوكس مخصص فقط لتوليد الصور عالية الجودة للغاية. لن ندعم النماذج الأصغر لتقليل المتطلبات والتضحية بجودة النتيجة.* + +## استكشاف الأخطاء وإصلاحها + +انظر المشكلات الشائعة [هنا](troubleshoot.md). + +## النماذج الافتراضية + + +بالنظر إلى الأهداف المختلفة، تختلف النماذج والإعدادات الافتراضية لفوكس: + +| المهمة | ويندوز | وسائط لينكس | النموذج الرئيسي | المُحسِّن (Refiner) | الإعدادات | +|-----------| --- | --- |-----------------------------| --- |--------------------------------------------------------------------------------| +| عام | run.bat | | juggernautXL_v8Rundiffusion | غير مستخدم | [هنا](https://github.com/lllyasviel/Fooocus/blob/main/presets/default.json) | +| واقعي | run_realistic.bat | --preset realistic | realisticStockPhoto_v20 | غير مستخدم | [هنا](https://github.com/lllyasviel/Fooocus/blob/main/presets/realistic.json) | +| أنمي | run_anime.bat | --preset anime | animaPencilXL_v500 | غير مستخدم | [هنا](https://github.com/lllyasviel/Fooocus/blob/main/presets/anime.json) | + +لاحظ أن التنزيل **تلقائي** - لا تحتاج لفعل أي شيء إذا كان اتصال الإنترنت جيدًا. ومع ذلك، يمكنك تنزيلها يدويًا إذا كان لديك (أو نقلها من مكان آخر) تحضيرك الخاص. + +## الوصول إلى واجهة المستخدم والمصادقة + +بالإضافة إلى التشغيل على localhost، يمكن لفوكس أيضًا عرض واجهة المستخدم الخاصة به بطريقتين: +* مستمع واجهة المستخدم المحلي: استخدم `--listen` (حدد المنفذ مثلاً بـ `--port 8888`). +* الوصول عبر API: استخدم `--share` (يسجل نقطة نهاية في `.gradio.live`). + +في كلتا الطريقتين، الوصول غير مصادق عليه افتراضيًا. يمكنك إضافة مصادقة أساسية عن طريق إنشاء ملف يسمى `auth.json` في الدليل الرئيسي، والذي يحتوي على قائمة من كائنات JSON بمفاتيح `user` و `pass` (انظر المثال في [auth-example.json](./auth-example.json)). + +## قائمة الحيل "المخفية" + + +
+انقر لرؤية قائمة الحيل. هذه مبنية على SDXL وليست محدثة جدًا مع أحدث النماذج. + +1. [توسيع التوجيه المبني على GPT-2 كنمط ديناميكي "Fooocus V2".](https://github.com/lllyasviel/Fooocus/discussions/117#raw) (مشابه للمعالجة المسبقة المخفية ووضع "raw" في ميدجورني، أو سحر التوجيه في LeonardoAI). +2. التبديل الأصلي للمُحسِّن داخل k-sampler واحد. الميزة هي أن نموذج المُحسِّن يمكنه الآن إعادة استخدام زخم النموذج الأساسي (أو معلمات تاريخ ODE) التي تم جمعها من أخذ العينات k لتحقيق أخذ عينات أكثر تماسكًا. في الإصلاح عالي الدقة لـ Automatic1111 ونظام العقد في ComfyUI، يستخدم النموذج الأساسي والمُحسِّن اثنين من k-samplers مستقلين، مما يعني أن الزخم يُهدر إلى حد كبير، وتنقطع استمرارية أخذ العينات. يستخدم فوكس أخذ العينات k-diffusion المتقدم الخاص به الذي يضمن تبديلًا سلسًا وأصليًا ومستمرًا في إعداد المُحسِّن. (تحديث 13 أغسطس: في الواقع، ناقشت هذا مع Automatic1111 قبل عدة أيام، ويبدو أن "التبديل الأصلي للمُحسِّن داخل k-sampler واحد" قد تم [دمجه](https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/12371) في الفرع التطويري لـ webui. عظيم!) +3. توجيه ADM السلبي. نظرًا لأن أعلى مستوى دقة في XL Base لا يحتوي على انتباه متبادل (cross attentions)، فإن الإشارات الإيجابية والسلبية لأعلى مستوى دقة في XL لا يمكنها تلقي تباين كافٍ أثناء أخذ عينات CFG، مما يتسبب في ظهور النتائج بلاستيكية بعض الشيء أو ناعمة بشكل مفرط في حالات معينة. لحسن الحظ، نظرًا لأن أعلى مستوى دقة في XL لا يزال مشروطًا بنسب أبعاد الصورة (ADM)، يمكننا تعديل ADM على الجانب الإيجابي/السلبي للتعويض عن نقص تباين CFG في أعلى مستوى دقة. (تحديث 16 أغسطس، تطبيق iOS [Draw Things](https://apps.apple.com/us/app/draw-things-ai-generation/id6444050820) سيدعم توجيه ADM السلبي. عظيم!) +4. قمنا بتنفيذ تباين مضبوط بعناية للقسم 5.1 من ["تحسين جودة عينة نماذج الانتشار باستخدام توجيه الانتباه الذاتي"](https://arxiv.org/pdf/2210.00939.pdf). تم ضبط الوزن على مستوى منخفض جدًا، ولكن هذا هو الضمان النهائي لفوكس للتأكد من أن XL لن ينتج أبدًا مظهرًا ناعمًا أو بلاستيكيًا مفرطًا (أمثلة [هنا](https://github.com/lllyasviel/Fooocus/discussions/117#sharpness)). يمكن لهذا تقريبًا القضاء على جميع الحالات التي لا يزال XL ينتج فيها نتائج ناعمة بشكل مفرط، حتى مع توجيه ADM السلبي. (تحديث 18 أغسطس 2023، تم تغيير نواة Gaussian لـ SAG إلى نواة متباينة الخواص للحفاظ على بنية أفضل وتقليل القطع الأثرية.) +5. قمنا بتعديل قوالب الأنماط قليلاً وأضفنا "cinematic-default". +6. اختبرنا "sd_xl_offset_example-lora_1.0.safetensors" ويبدو أنه عندما يكون وزن lora أقل من 0.5، تكون النتائج دائمًا أفضل من XL بدون lora. +7. معلمات آلات أخذ العينات مضبوطة بعناية. +8. نظرًا لأن XL يستخدم الترميز الموضعي (positional encoding) لدقة التوليد، فإن الصور المولدة بعدة دقات ثابتة تبدو أفضل قليلاً من تلك ذات الدقات العشوائية (لأن الترميز الموضعي ليس جيدًا جدًا في معالجة الأعداد الصحيحة غير المرئية أثناء التدريب). يشير هذا إلى أن الدقات في واجهة المستخدم قد تكون مشفرة بشكل ثابت للحصول على أفضل النتائج. +9. يبدو أن التوجيهات المنفصلة لمشفرَي نص مختلفين غير ضرورية. قد تعمل التوجيهات المنفصلة للنموذج الأساسي والمُحسِّن، لكن التأثيرات عشوائية، ونمتنع عن تنفيذ هذا. +10. تبدو عائلة DPM مناسبة لـ XL لأن XL يولد أحيانًا نسيجًا ناعمًا بشكل مفرط، ولكن عائلة DPM تولد أحيانًا تفاصيل كثيفة بشكل مفرط في النسيج. تأثيرهما المشترك يبدو محايدًا وجذابًا للإدراك البشري. +11. نظام مصمم بعناية لموازنة أنماط متعددة بالإضافة إلى توسيع التوجيه. +12. استخدام طريقة automatic1111 لتطبيع توكيد التوجيه. هذا يحسن النتائج بشكل ملحوظ عندما ينسخ المستخدمون التوجيهات مباشرة من civitai. +13. نظام التبديل المشترك للمُحسِّن يدعم الآن أيضًا img2img والتحسين (upscale) بطريقة سلسة. +14. مقياس CFG وتصحيح TSNR (مضبوط لـ SDXL) عندما يكون CFG أكبر من 10. +
+ +## التخصيص + +بعد أول مرة تقوم فيها بتشغيل فوكس، سيتم إنشاء ملف إعدادات في `Fooocus\config.txt`. يمكن تحرير هذا الملف لتغيير مسار النموذج أو المعايير الافتراضية. + +على سبيل المثال، قد يبدو ملف `Fooocus\config.txt` مُحرر (سيتم إنشاء هذا الملف بعد التشغيل الأول) بهذا الشكل: + +```json +{ + "path_checkpoints": "D:\\Fooocus\\models\\checkpoints", + "path_loras": "D:\\Fooocus\\models\\loras", + "path_embeddings": "D:\\Fooocus\\models\\embeddings", + "path_vae_approx": "D:\\Fooocus\\models\\vae_approx", + "path_upscale_models": "D:\\Fooocus\\models\\upscale_models", + "path_inpaint": "D:\\Fooocus\\models\\inpaint", + "path_controlnet": "D:\\Fooocus\\models\\controlnet", + "path_clip_vision": "D:\\Fooocus\\models\\clip_vision", + "path_fooocus_expansion": "D:\\Fooocus\\models\\prompt_expansion\\fooocus_expansion", + "path_outputs": "D:\\Fooocus\\outputs", + "default_model": "realisticStockPhoto_v10.safetensors", + "default_refiner": "", + "default_loras": [["lora_filename_1.safetensors", 0.5], ["lora_filename_2.safetensors", 0.5]], + "default_cfg_scale": 3.0, + "default_sampler": "dpmpp_2m", + "default_scheduler": "karras", + "default_negative_prompt": "low quality", + "default_positive_prompt": "", + "default_styles": [ + "Fooocus V2", + "Fooocus Photograph", + "Fooocus Negative" + ] +} +``` + +العديد من المفاتيح والتنسيقات والأمثلة الأخرى موجودة في `Fooocus\config_modification_tutorial.txt` (سيتم إنشاء هذا الملف بعد التشغيل الأول). + +فكر مرتين قبل أن تقوم فعليًا بتغيير الإعدادات. إذا وجدت أنك تسبب في كسر الأشياء، فقط قم بحذف `Fooocus\config.txt`. سيعود فوكس إلى الإعدادات الافتراضية. + +طريقة أكثر أمانًا هي مجرد تجربة "run_anime.bat" أو "run_realistic.bat" - يجب أن تكونا جيدتين بما يكفي لمهام مختلفة. + +~لاحظ أن `user_path_config.txt` مهمل وسيتم إزالته قريبًا.~ (تحرير: تمت إزالته بالفعل.) + +### جميع أوامر CMD + +``` +entry_with_update.py [-h] [--listen [IP]] [--port PORT] + [--disable-header-check [ORIGIN]] + [--web-upload-size WEB_UPLOAD_SIZE] + [--hf-mirror HF_MIRROR] + [--external-working-path PATH [PATH ...]] + [--output-path OUTPUT_PATH] + [--temp-path TEMP_PATH] [--cache-path CACHE_PATH] + [--in-browser] [--disable-in-browser] + [--gpu-device-id DEVICE_ID] + [--async-cuda-allocation | --disable-async-cuda-allocation] + [--disable-attention-upcast] + [--all-in-fp32 | --all-in-fp16] + [--unet-in-bf16 | --unet-in-fp16 | --unet-in-fp8-e4m3fn | --unet-in-fp8-e5m2] + [--vae-in-fp16 | --vae-in-fp32 | --vae-in-bf16] + [--vae-in-cpu] + [--clip-in-fp8-e4m3fn | --clip-in-fp8-e5m2 | --clip-in-fp16 | --clip-in-fp32] + [--directml [DIRECTML_DEVICE]] + [--disable-ipex-hijack] + [--preview-option [none,auto,fast,taesd]] + [--attention-split | --attention-quad | --attention-pytorch] + [--disable-xformers] + [--always-gpu | --always-high-vram | --always-normal-vram | --always-low-vram | --always-no-vram | --always-cpu [CPU_NUM_THREADS]] + [--always-offload-from-vram] + [--pytorch-deterministic] [--disable-server-log] + [--debug-mode] [--is-windows-embedded-python] + [--disable-server-info] [--multi-user] [--share] + [--preset PRESET] [--disable-preset-selection] + [--language LANGUAGE] + [--disable-offload-from-vram] [--theme THEME] + [--disable-image-log] [--disable-analytics] + [--disable-metadata] [--disable-preset-download] + [--disable-enhance-output-sorting] + [--enable-auto-describe-image] + [--always-download-new-model] + [--rebuild-hash-cache [CPU_NUM_THREADS]] +``` + +## ميزات التوجيه المضمنة + +### البطاقات الجامحة (Wildcards) + +مثال توجيه: `__color__ flower` + +تتم معالجته للتوجيه الإيجابي والسلبي. + +يختار بطاقة جامحة عشوائية من قائمة خيارات محددة مسبقًا، في هذه الحالة ملف `wildcards/color.txt`. +سيتم استبدال البطاقة الجامحة بلون عشوائي (العشوائية تعتمد على البذرة (seed)). +يمكنك أيضًا تعطيل العشوائية ومعالجة ملف البطاقات الجامحة من الأعلى إلى الأسفل عن طريق تفعيل خانة الاختيار `Read wildcards in order` في وضع تصحيح المطور. + +يمكن تداخل البطاقات الجامحة ودمجها، ويمكن استخدام بطاقات جامحة متعددة في نفس التوجيه (مثال انظر `wildcards/color_flower.txt`). + +### معالجة المصفوفات + +مثال توجيه: `[[red, green, blue]] flower` + +تتم معالجته فقط للتوجيه الإيجابي. + +يعالج المصفوفة من اليسار إلى اليمين، مولّدًا صورة منفصلة لكل عنصر في المصفوفة. في هذه الحالة سيتم توليد 3 صور، واحدة لكل لون. +قم بزيادة عدد الصور إلى 3 لتوليد جميع المتغيرات الثلاثة. + +لا يمكن تداخل المصفوفات، ولكن يمكن استخدام مصفوفات متعددة في نفس التوجيه. +يدعم LoRAs المضمنة كعناصر مصفوفة! + +### LoRAs المضمنة + +مثال توجيه: `flower ` + +تتم معالجته فقط للتوجيه الإيجابي. + +يطبق LoRA على التوجيه. يجب أن يكون ملف LoRA موجودًا في دليل `models/loras`. + +## الميزات المتقدمة + +[انقر هنا لتصفح الميزات المتقدمة.](https://github.com/lllyasviel/Fooocus/discussions/117) + +## التفرعات (Forks) + +فيما يلي بعض التفرعات لفوكس: + +| تفرعات فوكس | +| - | +| [fenneishi/Fooocus-Control](https://github.com/fenneishi/Fooocus-Control)
[runew0lf/RuinedFooocus](https://github.com/runew0lf/RuinedFooocus)
[MoonRide303/Fooocus-MRE](https://github.com/MoonRide303/Fooocus-MRE)
[mashb1t/Fooocus](https://github.com/mashb1t/Fooocus)
وغيرها ... | + +## الشكر + +جزيل الشكر لـ [twri](https://github.com/twri) و [3Diva](https://github.com/3Diva) و [Marc K3nt3L](https://github.com/K3nt3L) لإنشاء أنماط SDXL إضافية متاحة في فوكس. + +يبدأ المشروع من مزيج من قواعد أكواد [Stable Diffusion WebUI](https://github.com/AUTOMATIC1111/stable-diffusion-webui) و [ComfyUI](https://github.com/comfyanonymous/ComfyUI). + +أيضًا، شكرًا لـ [daswer123](https://github.com/daswer123) للمساهمة بتكبير/تصغير اللوحة (Canvas Zoom)! + +## سجل التحديثات + +السجل [هنا](update_log.md). + +## التوطين/الترجمة/I18N + +يمكنك وضع ملفات json في مجلد `language` لترجمة واجهة المستخدم. + +على سبيل المثال، فيما يلي محتوى `Fooocus/language/example.json`: + +```json +{ + "Generate": "生成", + "Input Image": "入力画像", + "Advanced": "고급", + "SAI 3D Model": "SAI 3D Modèle" +} +``` + +إذا أضفت الوسيط `--language example`، سيقرأ فوكس `Fooocus/language/example.json` لترجمة واجهة المستخدم. + +على سبيل المثال، يمكنك تحرير السطر الأخير من `run.bat` لويندوز كالتالي + + .\python_embeded\python.exe -s Fooocus\entry_with_update.py --language example + +أو `run_anime.bat` كالتالي + + .\python_embeded\python.exe -s Fooocus\entry_with_update.py --language example --preset anime + +أو `run_realistic.bat` كالتالي + + .\python_embeded\python.exe -s Fooocus\entry_with_update.py --language example --preset realistic + +للترجمة العملية، يمكنك إنشاء ملفك الخاص مثل `Fooocus/language/jp.json` أو `Fooocus/language/cn.json` ثم استخدام العلامة `--language jp` أو `--language cn`. من الواضح أن هذه الملفات غير موجودة الآن. **نحتاج مساعدتك لإنشاء هذه الملفات!** + +لاحظ أنه إذا لم يتم تقديم `--language` وفي نفس الوقت كان الملف `Fooocus/language/default.json` موجودًا، سيقوم فوكس دائمًا بتحميل `Fooocus/language/default.json` للترجمة. افتراضيًا، الملف `Fooocus/language/default.json` غير موجود. diff --git a/.github/ROOT_FILES.md b/.github/ROOT_FILES.md new file mode 100644 index 0000000000..6de3f01a2c --- /dev/null +++ b/.github/ROOT_FILES.md @@ -0,0 +1,302 @@ +# المجلد الجذر - Root Directory + +## فهرس الملفات + +| الملف | الوظيفة | +|-------|---------| +| `fooocus_version.py` | رقم الإصدار | +| `shared.py` | المتغيرات المشتركة | +| `args_manager.py` | إدارة معاملات CLI | +| `launch.py` | نقطة الدخول الرئيسية | +| `build_launcher.py` | إنشاء ملفات التشغيل | +| `entry_with_update.py` | نقطة الدخول مع التحديث | +| `webui.py` | بناء واجهة Gradio | +| `experiments_expansion.py` | تجربة التوسيع | +| `experiments_face.py` | تجربة قص الوجوه | +| `experiments_interrogate.py` | تجربة الوصف | +| `experiments_mask_generation.py` | تجربة توليد القناع | + +--- + +## 📄 fooocus_version.py + +### 1. الوظيفة الأساسية (Core Function) +يحتوي على متغير واحد فقط يحدد رقم إصدار Fooocus الحالي. + +### 2. التفاصيل الفنية والبرمجية +```python +version = '2.5.5' +``` +- لا يوجد imports +- لا يوجد دوال أو classes +- فقط متغير نصي واحد + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `launch.py`, `webui.py`, `meta_parser.py` +- **لا يستدعي أي ملف** +- **التأثير عند التعديل:** تغيير الرقم فقط - لا يؤثر على الوظائف + +--- + +## 📄 shared.py + +### 1. الوظيفة الأساسية (Core Function) +يحتوي على متغير مشترك واحد لتخزين كائن الجذر لـ Gradio. + +### 2. التفاصيل الفنية والبرمجية +```python +gradio_root = None +``` +- **`gradio_root`**: كائن `gr.Blocks` الرئيسي للواجهة + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `webui.py` (لتخزين الكائن), `async_worker.py` (للوصول للـ URL) +- **لا يستدعي أي ملف** +- **التأثير عند التعديل:** إذا حُذف، سيفشل الوصول للـ Gradio app + +--- + +## 📄 args_manager.py + +### 1. الوظيفة الأساسية (Core Function) +يُوسع معاملات CLI من `ldm_patched/modules/args_parser.py` بخيارات إضافية خاصة بـ Fooocus. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `ldm_patched.modules.args_parser` - المعاملات الأساسية + +**الخيارات المضافة:** +- `--share` - مشاركة على Gradio +- `--preset` - تطبيق إعداد مسبق +- `--language` - ترجمة الواجهة +- `--disable-offload-from-vram` - تعطيل التفريغ من VRAM +- `--theme` - سمة الواجهة +- `--disable-image-log` - تعطيل تسجيل الصور +- `--disable-metadata` - تعطيل البيانات الوصفية +- `--always-download-new-model` - تحميل النماذج دائماً + +**القيم الافتراضية:** +```python +args_parser.parser.set_defaults( + disable_cuda_malloc=True, + in_browser=True, + port=None +) +``` + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `launch.py`, `webui.py`, وجميع ملفات modules/ +- **يستدعي:** `ldm_patched/modules/args_parser.py` +- **التأثير عند التعديل:** إضافة/حذف خيارات CLI + +--- + +## 📄 launch.py + +### 1. الوظيفة الأساسية (Core Function) +نقطة الدخول الرئيسية للمشروع - يدير البيئة وتثبيت ال依赖يات وتحميل النماذج وتشغيل WebUI. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `ssl`, `os`, `sys`, `platform` +- `fooocus_version`, `build_launcher` +- `modules.launch_util` - دوال التثبيت +- `modules.model_loader` - تحميل الملفات +- `modules.config` - الإعدادات + +**الدوال الرئيسية:** +- `prepare_environment()`: تثبيت PyTorch, xformers, requirements +- `download_models()`: تحميل النماذج من HuggingFace +- `ini_args()`: تحليل معاملات CLI + +**تدفق التنفيذ:** +``` +1. تعيين المتغيرات البيئية +2. prepare_environment() +3. build_launcher() +4. ini_args() +5. تحميل النماذج +6. from webui import * +``` + +### 3. شبكة العلاقات ودورة الحياة +- **يبدأ التنفيذ أولاً** في المشروع +- **يستدعي:** `build_launcher.py`, `modules/config.py`, `webui.py` +- **لا يستدعيه ملف آخر** (هو نقطة البداية) +- **التأثير عند التعديل:** قد يكسر بدء التشغيل + +--- + +## 📄 build_launcher.py + +### 1. الوظيفة الأساسية (Core Function) +يُنشئ ملفات `.bat` للتشغيل السريع في Windows. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** `os` + +**الدوال:** +- `build_launcher()`: تُنشئ `run.bat`, `run_anime.bat`, `run_realistic.bat` + +**المنطق:** +- يتحقق من وجود `python_embeded/` +- يُنشئ ملفات batch لكل preset + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `launch.py` +- **لا يستدعي أي ملفات أخرى** +- **التأثير عند التعديل:** لا يؤثر على التشغيل الأساسي + +--- + +## 📄 entry_with_update.py + +### 1. الوظيفة الأساسية (Core Function) +نقطة دخول بديلة تُحدّث المشروع تلقائياً من Git قبل التشغيل. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `pygit2` - للتحكم في Git + +**المنطق:** +1. يتصل بـ remote repository +2. يتحقق من وجود تحديثات +3. يقوم بـ fast-forward merge إذا أمكن +4. يستدعي `launch.py` + +### 3. شبكة العلاقات ودورة الحياة +- **يُستخدم عند التحديث التلقائي** +- **يستدعي:** `launch.py` +- **التأثير عند التعديل:** قد يكسر آلية التحديث + +--- + +## 📄 webui.py + +### 1. الوظيفة الأساسية (Core Function) +يبني واجهة Gradio الكاملة ويربط الأحداث بالدوال الخلفية. + +### 2. التفاصيل الفنية والبرمجية +**المكتبات المستوردة:** +- `gradio` - بناء الواجهة +- `modules.async_worker` - معالج التوليد +- `modules.config` - الإعدادات +- `modules.flags` - الأعلام والثوابت +- `modules.html` - HTML المخصص +- `modules.sdxl_styles` - الأنماط + +**الهيكل الرئيسي:** +```python +with gr.Blocks(): + # العمود الرئيسي (2:1) + # - progress_window: معاينة + # - gallery: النتائج + # - prompt: حقل البرومبت + + # العمود المتقدم + # - Settings tab + # - Styles tab + # - Models tab + # - Advanced tab +``` + +**الدوال الرئيسية:** +- `get_task()`: تحويل المدخلات إلى AsyncTask +- `generate_clicked()`: دورة حياة التوليد +- `inpaint_mode_change()`: تغيير وضع Inpaint + +### 3. شبكة العلاقات ودورة الحياة +- **يستدعيه:** `launch.py` (آخر سطر) +- **يستدعي:** `modules/async_worker.py`, `modules/config.py`, `modules/flags.py` +- **التأثير عند التعديل:** تغيير واجهة المستخدم بالكامل + +--- + +## 📄 experiments_expansion.py + +### 1. الوظيفة الأساسية (Core Function) +تجربة محرك توسيع البرومبت (Fooocus Expansion). + +### 2. التفاصيل الفنية والبرمجية +```python +from modules.expansion import FooocusExpansion +expansion = FooocusExpansion() +text = 'a handsome man' +for i in range(64): + print(expansion(text, seed=i)) +``` + +### 3. شبكة العلاقات ودورة الحياة +- **ملف تجريبي** - لا يُستخدم في الإنتاج +- **يستدعي:** `modules/expansion.py` + +--- + +## 📄 experiments_face.py + +### 1. الوظيفة الأساسية (Core Function) +تجربة قص الوجوه. + +### 2. التفاصيل الفنية والبرمجية +```python +import extras.face_crop as cropper +img = cv2.imread('lena.png') +result = cropper.crop_image(img) +``` + +### 3. شبكة العلاقات ودورة الحياة +- **ملف تجريبي** - لا يُستخدم في الإنتاج +- **يستدعي:** `extras/face_crop.py` + +--- + +## 📄 experiments_interrogate.py + +### 1. الوظيفة الأساسية (Core Function) +تجربة التحقيق الوصفي للصور (BLIP + WD14). + +### 2. التفاصيل الفنية والبرمجية +```python +from extras.interrogate import default_interrogator +from extras.wd14tagger import default_interrogator +``` + +### 3. شبكة العلاقات ودورة الحياة +- **ملف تجريبي** - لا يُستخدم في الإنتاج +- **يستدعي:** `extras/interrogate.py`, `extras/wd14tagger.py` + +--- + +## 📄 experiments_mask_generation.py + +### 1. الوظيفة الأساسية (Core Function) +تجربة توليد القناع باستخدام SAM + GroundingDINO. + +### 2. التفاصيل الفنية والبرمجية +```python +from extras.inpaint_mask import SAMOptions, generate_mask_from_image +sam_options = SAMOptions(dino_prompt='eye', ...) +mask_image, _, _, _ = generate_mask_from_image(image, sam_options=sam_options) +``` + +### 3. شبكة العلاقات ودورة الحياة +- **ملف تجريبي** - لا يُستخدم في الإنتاج +- **يستدعي:** `extras/inpaint_mask.py` + +--- + +## مخطط العلاقات للمجلد الجذر + +``` +launch.py ← entry_with_update.py + ├── args_manager.py + ├── build_launcher.py + └── webui.py + ├── shared.py + └── fooocus_version.py +``` + +--- + +**آخر تحديث:** 2026 +**الإصدار:** 2.5.5 diff --git a/.github/args_manager.md b/.github/args_manager.md new file mode 100644 index 0000000000..191f29b85d --- /dev/null +++ b/.github/args_manager.md @@ -0,0 +1,35 @@ +--- +### 📄 docs/args_manager.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +إدارة معاملات سطر الأوامر (CLI Arguments) الخاصة بـ Fooocus. يوسّع محلل المعاملات الأساسي من ldm_patched بإضافة 15+ معامل خاص بـ Fooocus: --share، --preset، --language، --theme، --disable-image-log، --disable-metadata، --always-download-new-model، --rebuild-hash-cache، وغيرها. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +لا يحتوي على دوال أو كلاسات - كود في المستوى العلوي: +- **args_parser.parser.add_argument(...)**: 15 إضافة لمعاملات سطر الأوامر. +- **args_parser.parser.set_defaults(...)**: تعيين القيم الافتراضية (disable_cuda_malloc=True, in_browser=True, port=None). +- **args_parser.args = args_parser.parser.parse_args()**: تحليل المعاملات. +- **args_parser.args.always_offload_from_vram**: تعيين عكسي لـ disable_offload_from_vram. + +المعاملات المُضافة: +| المعامل | النوع | الوصف | +|---------|-------|-------| +| --share | bool | مشاركة على Gradio | +| --preset | str | تطبيق قالب UI | +| --disable-preset-selection | bool | تعطيل اختيار القالب | +| --language | str | ترجمة UI من مجلد language/ | +| --disable-offload-from-vram | bool | إجبار تحميل النماذج إلى VRAM | +| --theme | str | سمة الواجهة (فاتح/داكن) | +| --disable-image-log | bool | منع حفظ الصور والسجلات | +| --disable-analytics | bool | تعطيل تحليلات Gradio | +| --disable-metadata | bool | تعطيل حفظ البيانات الوصفية | +| --disable-preset-download | bool | تعطيل تحميل نماذج القالب | +| --disable-enhance-output-sorting | bool | تعطيل ترتيب مخرجات التحسين | +| --enable-auto-describe-image | bool | تفعيل وصف الصورة التلقائي | +| --always-download-new-model | bool | إجبار تحميل النماذج الجديدة | +| --rebuild-hash-cache | int | إعادة بناء كاش التوقيعات | + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: ldm_patched/modules/args_parser.py (المحلل الأساسي) +- **يُستدعى بواسطة**: launch.py (`from args_manager import args`), webui.py, modules/config.py, modules/async_worker.py, modules/auth.py, modules/patch.py, extras/inpaint_mask.py +- **الأثر البرمجي**: أي معامل جديد يُضاف هنا يصبح متاحاً كمتغير args في جميع أنحاء التطبيق diff --git a/.github/build_launcher.md b/.github/build_launcher.md new file mode 100644 index 0000000000..9b67b56648 --- /dev/null +++ b/.github/build_launcher.md @@ -0,0 +1,19 @@ +--- +### 📄 docs/build_launcher.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +إنشاء ملفات batch (.bat) على Windows لتشغيل Fooocus بسهولة. يتحقق من وجود مجلد python_embeded (البرمجية المدمجة) ويُنشئ 3 ملفات تشغيل: run.bat (افتراضي)، run_anime.bat، run_realistic.bat. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **build_launcher()**: التحقق من بيئة Windows standalone build (وجود python_embeded). إنشاء ملفات .bat لكل قالب: None (افتراضي)، 'anime'، 'realistic'. كل ملف batch يستدعي entry_with_update.py مع المعاملات المناسبة. +- **win32_cmd**: قالب نص batch يستدعي python_embeded/python.exe مع entry_with_update.py. +- **is_win32_standalone_build**: متغير منطقي يتحقق من وجود python_embeded. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **لا يستدعي ملفات أخرى غير os** +- **يُستدعى بواسطة**: launch.py (السطر 76: `build_launcher()`) +- **الأثر البرمجي**: وظيفته مساعدة فقط - يُنشئ ملفات batch لراحة المستخدم. لا يؤثر على الوظيفة الرئيسية + +**للمزيد من التفاصيل، راجع:** +- [launch.md](launch.md) - نقطة التشغيل الرئيسية +- [entry_with_update.md](entry_with_update.md) - نقطة الدخول مع التحديث diff --git a/.github/development_ar.md b/.github/development_ar.md new file mode 100644 index 0000000000..954cb061a3 --- /dev/null +++ b/.github/development_ar.md @@ -0,0 +1,14 @@ +--- +### 📄 docs/development_ar.md + +#### تشغيل اختبارات الوحدة + +بايثون العادي: +``` +python -m unittest tests/ +``` + +بايثون المدمج (طريقة تثبيت ملف zip على Windows): +``` +..\python_embeded\python.exe -m unittest +``` diff --git a/.github/docker_ar.md b/.github/docker_ar.md new file mode 100644 index 0000000000..13437798ee --- /dev/null +++ b/.github/docker_ar.md @@ -0,0 +1,131 @@ +# Fooocus على Docker + +صورة Docker مبنية على NVIDIA CUDA 12.4 وPyTorch 2.1، راجع [Dockerfile](Dockerfile) و[requirements_docker.txt](requirements_docker.txt) للتفاصيل. + +## المتطلبات + +- جهاز بمواصفات كافية لتشغيل Fooocus، وبرامج تشغيل Nvidia الخاصة +- Docker أو Docker Compose أو Podman + +## بداية سريعة + +**مزيد من المعلومات في [الملاحظات](#notes).** + +### التشغيل مع Docker Compose + +1. استنساخ هذا المستودع +2. تشغيل حاوية Docker باستخدام `docker compose up`. + +### التشغيل مع Docker + +```sh +docker run -p 7865:7865 -v fooocus-data:/content/data -it \ +--gpus all \ +-e CMDARGS=--listen \ +-e DATADIR=/content/data \ +-e config_path=/content/data/config.txt \ +-e config_example_path=/content/data/config_modification_tutorial.txt \ +-e path_checkpoints=/content/data/models/checkpoints/ \ +-e path_loras=/content/data/models/loras/ \ +-e path_embeddings=/content/data/models/embeddings/ \ +-e path_vae_approx=/content/data/models/vae_approx/ \ +-e path_upscale_models=/content/data/models/upscale_models/ \ +-e path_inpaint=/content/data/models/inpaint/ \ +-e path_controlnet=/content/data/models/controlnet/ \ +-e path_clip_vision=/content/data/models/clip_vision/ \ +-e path_fooocus_expansion=/content/data/models/prompt_expansion/fooocus_expansion/ \ +-e path_outputs=/content/app/outputs/ \ +ghcr.io/lllyasviel/fooocus +``` +### التشغيل مع Podman + +```sh +podman run -p 7865:7865 -v fooocus-data:/content/data -it \ +--security-opt=no-new-privileges --cap-drop=ALL --security-opt label=type:nvidia_container_t --device=nvidia.com/gpu=all \ +-e CMDARGS=--listen \ +-e DATADIR=/content/data \ +-e config_path=/content/data/config.txt \ +-e config_example_path=/content/data/config_modification_tutorial.txt \ +-e path_checkpoints=/content/data/models/checkpoints/ \ +-e path_loras=/content/data/models/loras/ \ +-e path_embeddings=/content/data/models/embeddings/ \ +-e path_vae_approx=/content/data/models/vae_approx/ \ +-e path_upscale_models=/content/data/models/upscale_models/ \ +-e path_inpaint=/content/data/models/inpaint/ \ +-e path_controlnet=/content/data/models/controlnet/ \ +-e path_clip_vision=/content/data/models/clip_vision/ \ +-e path_fooocus_expansion=/content/data/models/prompt_expansion/fooocus_expansion/ \ +-e path_outputs=/content/app/outputs/ \ +ghcr.io/lllyasviel/fooocus +``` + +عندما ترى الرسالة `Use the app with http://0.0.0.0:7865/` في وحدة التحكم، يمكنك الوصول إلى الرابط في متصفحك. + +نماذجك ومخرجاتك مخزنة في وحدة التخزين `fooocus-data`، والتي، حسب نظام التشغيل، تكون مخزنة في `/var/lib/docker/volumes/` (أو `~/.local/share/containers/storage/volumes/` عند استخدام `podman`). + +## بناء الحاوية محلياً + +قم باستنساخ المستودع أولاً، وافتح terminal في المجلد. + +البناء باستخدام `docker`: +```sh +docker build . -t fooocus +``` + +البناء باستخدام `podman`: +```sh +podman build . -t fooocus +``` + +## تفاصيل + +### تحديث الحاوية يدوياً (`docker compose`) + +عند استخدام `docker compose up` باستمرار، لا يتم تحديث الحاوية إلى أحدث إصدار من Fooocus تلقائياً. +قم بتشغيل `git pull` قبل تنفيذ `docker compose build --no-cache` لبناء صورة بأحدث إصدار من Fooocus. +يمكنك بعد ذلك تشغيلها باستخدام `docker compose up` + +### استيراد النماذج والمخرجات + +إذا كنت تريد استيراد ملفات من مجلد النماذج أو المخرجات، يمكنك إضافة روابط التثبيت التالية في [docker-compose.yml](docker-compose.yml) أو الطريقة المفضلة لديك لتشغيل الحاوية: +``` +#- ./models:/import/models # بمجرد استيراد الملفات، لا حاجة لإعادة التثبيت. +#- ./outputs:/import/outputs # بمجرد استيراد الملفات، لا حاجة لإعادة التثبيت. +``` +بعد تشغيل الحاوية، سيتم نسخ ملفاتك إلى `/content/data/models` و`/content/data/outputs`. +نظراً لأن `/content/data` هو مجلد تخزين دائم، فسيتم الاحتفاظ بملفاتك حتى عند إعادة تشغيل الحاوية دون روابط التثبيت أعلاه. + + +### المسارات داخل الحاوية + +|المسار|التفاصيل| +|-|-| +|/content/app|مجلد تخزين التطبيق| +|/content/app/models.org|مجلد 'models' الأصلي.
يتم نسخ الملفات إلى '/content/app/models' المرتبط symbolically بـ '/content/data/models' في كل مرة يتم فيها تشغيل الحاوية. (لن يتم استبدال الملفات الموجودة.)| +|/content/data|نقطة تثبيت وحدة التخزين الدائمة| +|/content/data/models|المجلد مرتبط symbolically بـ '/content/app/models'| +|/content/data/outputs|المجلد مرتبط symbolically بـ '/content/app/outputs'| + +### المتغيرات البيئية + +يمكنك تغيير معاملات `config.txt` باستخدام المتغيرات البيئية. +**أولوية استخدام المتغيرات البيئية أعلى من القيم المعرفة في `config.txt`، وسيتم حفظها في `config_modification_tutorial.txt`** + +المتغيرات البيئية المخصصة لـ Docker موجودة هنا. يتم استخدامها بواسطة 'entrypoint.sh' +|المتغير البيئي|التفاصيل| +|-|-| +|DATADIR|موقع '/content/data'.| +|CMDARGS|الوسائط لـ [entry_with_update.py](entry_with_update.py) التي يتم استدعاؤها بواسطة [entrypoint.sh](entrypoint.sh)| +|config_path|موقع 'config.txt'| +|config_example_path|موقع 'config_modification_tutorial.txt'| +|HF_MIRROR|نطاق موقع مرآة huggingface| + +يمكنك أيضاً استخدام نفس أسماء المفاتيح والقيم json الموضحة في 'config_modification_tutorial.txt' كمتغيرات بيئية. +راجع الأمثلة في [docker-compose.yml](docker-compose.yml) + +## ملاحظات + +- يُرجى إبقاء 'path_outputs' داخل '/content/app'. وإلا، قد تحصل على خطأ عند فتح سجل التاريخ. +- لا يزال Docker على Mac/Windows يعاني من مشاكل في شكل بطء الوصول إلى وحدات التخزين عند استخدام "bind mount". يُرجى الرجوع إلى [هذه المقالة](https://docs.docker.com/storage/volumes/#use-a-volume-with-docker-compose) لعدم استخدام "bind mount". +- الخلفية MPS (Metal Performance Shaders، Apple Silicon M1/M2/etc.) غير مدعومة بعد في Docker، راجع https://github.com/pytorch/pytorch/issues/81224 +- يمكنك أيضاً استخدام `docker compose up -d` لتشغيل الحاوية بشكل منفصل والاتصال بالسجلات باستخدام `docker compose logs -f`. بهذه الطريقة يمكنك إغلاق terminal وإبقاء الحاوية قيد التشغيل. diff --git a/.github/entry_with_update.md b/.github/entry_with_update.md new file mode 100644 index 0000000000..75e8ef8dec --- /dev/null +++ b/.github/entry_with_update.md @@ -0,0 +1,19 @@ +--- +### 📄 docs/entry_with_update.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نقطة الدخول الفعلية للتطبيق مع دعم التحديث التلقائي من Git. يستخدم pygit2 لفتح المستودع المحلي، يتصل بالremote (origin)، يُحضّر أحدث التغييرات، ثم يُنفّذ Fast-Forward merge إذا كان الفرع المحلي متأخراً. بعد نجاح التحديث، يستورد launch.py. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +لا يحتوي على دوال أو كلاسات - الكود يُنفّذ في المستوى العلوي (module level): +- فتح المستودع عبر pygit2.Repository +- جلب (fetch) من remote origin +- تحليل حالة الدمج (merge_analysis): up-to-date / fastforward / normal +- في حالة Fast-Forward: تعيين target الـ local branch، checkout، reset hard +- في حالة Normal: طباعة رسالة فشل (تعديلات محلية) +- استيراد launch.py في النهاية + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: pygit2, launch.py +- **يُستدعى بواسطة**: run.bat / run_anime.bat / run_realistic.bat (ملفات التشغيل على Windows) +- **الأثر البرمجي**: هذا الملف هو نقطة البداية الفعلية - أي خطأ هنا سيمنع التطبيق من التشغيل diff --git a/.github/experiments_expansion.md b/.github/experiments_expansion.md new file mode 100644 index 0000000000..789e1e915e --- /dev/null +++ b/.github/experiments_expansion.md @@ -0,0 +1,16 @@ +--- +### 📄 docs/experiments_expansion.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +سكريبت اختبار (8 أسطر) لمحرك توسيع البرومبت FooocusExpansion. يُنشئ كائن expansion من modules.expansion.FooocusExpansion، ويُجرب توسيع النص 'a handsome man' مع 64 بذرة مختلفة (0 إلى 63) لمعاينة مخرجات التوسيع المختلفة. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **expansion**: كائن من FooocusExpansion (مُستورد من modules.expansion). +- **expansion(text, seed=i)**: استدعاء FooocusExpansion مع نص "a handsome man" وبذور من 0 إلى 63. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: modules/expansion.py (FooocusExpansion) +- **يُستدعى بواسطة**: لا يُستدعى - سكريبت اختبار مستقل +- **الأثر البرمجي**: لا يؤثر على التطبيق الرئيسي - يُستخدم للتجربة والتطوير فقط + +**للمزيد من التفاصيل، راجع:** [EXTRAS.md](EXTRAS.md) diff --git a/.github/experiments_face.md b/.github/experiments_face.md new file mode 100644 index 0000000000..c31d56ca34 --- /dev/null +++ b/.github/experiments_face.md @@ -0,0 +1,16 @@ +--- +### 📄 docs/experiments_face.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +سكريبت اختبار (7 أسطر) لميزة قص الوجه. يقرأ صورة 'lena.png' باستخدام OpenCV، يُمرّرها إلى cropper.crop_image() من extras.face_crop، ويحفظ النتيجة في 'lena_result.png'. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **cropper.crop_image(img)**: دالة من extras.face_crop - تكشف الوجوه وتُعيد قصاً مُحاذياً لأكبر وجه. +- **cv2.imread/cv2.imwrite**: قراءة وكتابة الصور باستخدام OpenCV. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: cv2 (OpenCV), extras/face_crop.py +- **يُستدعى بواسطة**: لا يُستدعى - سكريبت اختبار مستقل +- **الأثر البرمجي**: لا يؤثر على التطبيق الرئيسي - يُستخدم للتجربة فقط + +**للمزيد من التفاصيل، راجع:** [EXTRAS.md](EXTRAS.md) diff --git a/.github/experiments_interrogate.md b/.github/experiments_interrogate.md new file mode 100644 index 0000000000..d5d861ee65 --- /dev/null +++ b/.github/experiments_interrogate.md @@ -0,0 +1,19 @@ +--- +### 📄 docs/experiments_interrogate.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +سكريبت اختبار (8 أسطر) لميزة وصف الصور (Interrogation). يختبر كلاً من: +1. **BLIP interrogator** (وصف الصور الفوتوغرافية): يقرأ red_box.jpg ويصفها. +2. **WD14 tagger** (وصف الصور الأنمي): يقرأ miku.jpg ويصفها. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **default_interrogator_photo(img)**: من extras.interrogate - وصف BLIP لصورة فوتوغرافية. +- **default_interrogator_anime(img)**: من extras.wd14tagger - وصف WD14 لصورة أنمي. +- **cv2.imread**: قراءة الصور مع عكس القنوات (BGR → RGB). + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: cv2, extras/interrogate.py, extras/wd14tagger.py +- **يُستدعى بواسطة**: لا يُستدعى - سكريبت اختبار مستقل +- **الأثر البرمجي**: لا يؤثر على التطبيق الرئيسي - يُستخدم للتجربة فقط + +**للمزيد من التفاصيل، راجع:** [EXTRAS.md](EXTRAS.md) diff --git a/.github/experiments_mask_generation.md b/.github/experiments_mask_generation.md new file mode 100644 index 0000000000..50d2b8d434 --- /dev/null +++ b/.github/experiments_mask_generation.md @@ -0,0 +1,18 @@ +--- +### 📄 docs/experiments_mask_generation.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +سكريبت اختبار (24 سطر) لتوليد قناع Inpaint باستخدام GroundingDINO + SAM. يقرأ صورة 'cat.webp'، يُنشئ SAMOptions مع dino_prompt='eye' (كشف العين)، ويُولّد قناعاً باستخدام generate_mask_from_image() من extras.inpaint_mask. يعرض القناع الناتج. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **SAMOptions**: كائن تكوين من extras.inpaint_mask - يحدد معاملات الكشف: dino_prompt='eye', box_threshold=0.3, text_threshold=0.25, model_type='vit_b', max_detections=2. +- **generate_mask_from_image(image, sam_options=sam_options)**: دالة توليد القناع - تُعيد (mask_image, ..., ..., ...). +- **Image.open / Image.fromarray / merged_masks_img.show()**: قراءة الصورة، تحويل النتيجة إلى PIL، وعرضها. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: numpy, PIL, extras/inpaint_mask.py (SAMOptions, generate_mask_from_image) +- **يُستدعى بواسطة**: لا يُستدعى - سكريبت اختبار مستقل +- **الأثر البرمجي**: لا يؤثر على التطبيق الرئيسي - يُستخدم للتجربة فقط +- **مرجع**: https://github.com/sail-sg/EditAnything (مذكور في التعليق الأول) + +**للمزيد من التفاصيل، راجع:** [EXTRAS.md](EXTRAS.md) diff --git a/.github/filter.md b/.github/filter.md new file mode 100644 index 0000000000..1829d7319e --- /dev/null +++ b/.github/filter.md @@ -0,0 +1,952 @@ +# معرض صور Fooocus - مرتب حسب الفئات + +هذا الملف يعرض جميع صور عينات Fooocus مرتبة حسب الفئات مع شرح لكل فئة. + +**للمزيد من التفاصيل، راجع:** [pdf.md](pdf.md) + +--- + +## 1. أنماط فنية (Art Styles) + +هذه الأنماط تمثل الحركات الفنية المختلفة عبر التاريخ. + +### أنماط فنية كلاسيكية + +![Art Deco](samples/art_deco.jpg) +**Art Deco**: نمط فني من عشرينيات القرن العشرين، يتميز بالخطوط الهندسية والألوان الزاهية. + +![Art Nouveau](samples/art_nouveau.jpg) +**Art Nouveau**: نمط فني من أواخر القرن التاسع عشر، يتميز بالخطوط المنحنية والزخارف الطبيعية. + +![Baroque](samples/baroque.jpg) +**Baroque**: نمط فني من القرن السابع عشر، يتمكن بالدراما والتفاصيل الغنية. + +![Classicism Art](samples/classicism_art.jpg) +**Classicism Art**: الفن الكلاسيكي المستوحى من اليونان وروما القديمة. + +![Impressionism](samples/impressionism.jpg) +**Impressionism**: الانطباعية، حركة فنية تركز على ضوء الطبيعة والألوان الساطعة. + +![Neoclassicism](samples/neoclassicism.jpg) +**Neoclassicism**: الكلاسيكية الجديدة، عودة إلى أساليب الفن الكلاسيكي. + +![Rococo](samples/rococo.jpg) +**Rococo**: نمط فني من القرن الثامن عشر، يتميز بالتفاصيل الخفيفة والألوان الباستيل. + +![Surrealism](samples/surrealism.jpg) +**Surrealism**: السريالية، حركة فنية تستكشف الأحلام واللاوعي. + +### أنماط فنية حديثة + +![Abstract Expressionism](samples/abstract_expressionism.jpg) +**Abstract Expressionism**: التعبيرية التجريدية، حركة فنية أمريكية من منتصف القرن العشرين. + +![Cubism](samples/cubism.jpg) +**Cubism**: التكعيبية، حركة فنية تكسر الأشياء إلى أشكال هندسية. + +![Expressionism](samples/expressionism.jpg) +**Expressionism**: التعبيرية، حركة فنية تركز على التعبير العاطفي. + +![Fauvism](samples/fauvism.jpg) +**Fauvism**: الفوفية، حركة فنية تستخدم ألواناً جريئة وغير واقعية. + +![Futurism](samples/futurism.jpg) +**Futurism**: المستقبلية، حركة فنية تحتفض بالتكنولوجيا والسرعة. + +![Minimalism](samples/minimalism.jpg) +**Minimalism**: التبسيطية، استخدام أقل عدد من العناصر للتعبير عن الفكرة. + +![Op Art](samples/op_art.jpg) +**Op Art**: الفن البصري، فن يخلق أوهاماً بصرية. + +![Pop Art](samples/pop_art_2.jpg) +**Pop Art**: فن البوب، حركة فنية تستخدم صور الثقافة الشعبية. + +![Suprematism](samples/suprematism.jpg) +**Suprematism**: السبرماتية، حركة فنية روسية تركز على الأشكال الهندسية الأساسية. + +### أنماط فنية متخصصة + +![Art Deco Style](samples/artstyle_art_deco.jpg) +**Art Deco Style**: نمط Art Deco المطور. + +![Art Nouveau Style](samples/artstyle_art_nouveau.jpg) +**Art Nouveau Style**: نمط Art Nouveau المطور. + +![Abstract Style](samples/artstyle_abstract.jpg) +**Abstract Style**: النمط التجريدي. + +![Abstract Expressionism Style](samples/artstyle_abstract_expressionism.jpg) +**Abstract Expressionism Style**: النمط التعبيري التجريدي. + +![Constructivist Style](samples/artstyle_constructivist.jpg) +**Constructivist Style**: النمط البنائي. + +![Cubist Style](samples/artstyle_cubist.jpg) +**Cubist Style**: النمط التكعيبي. + +![Expressionist Style](samples/artstyle_expressionist.jpg) +**Expressionist Style**: النمط التعبيري. + +![Graffiti Style](samples/artstyle_graffiti.jpg) +**Graffiti Style**: نمط الغرافيتي. + +![Hyperrealism Style](samples/artstyle_hyperrealism.jpg) +**Hyperrealism Style**: النمط الواقعي الفائق. + +![Impressionist Style](samples/artstyle_impressionist.jpg) +**Impressionist Style**: النمط الانطباعي. + +![Pointillism Style](samples/artstyle_pointillism.jpg) +**Pointillism Style**: نمط النقطية. + +![Pop Art Style](samples/artstyle_pop_art.jpg) +**Pop Art Style**: نمط فن البوب. + +![Psychedelic Style](samples/artstyle_psychedelic.jpg) +**Psychedelic Style**: النمط السيكاديلي. + +![Renaissance Style](samples/artstyle_renaissance.jpg) +**Renaissance Style**: نمط عصر النهضة. + +![Steampunk Style](samples/artstyle_steampunk.jpg) +**Steampunk Style**: نمط البخار. + +![Surrealist Style](samples/artstyle_surrealist.jpg) +**Surrealist Style**: النمط السريالي. + +![Typography Style](samples/artstyle_typography.jpg) +**Typography Style**: نمط الطباعة. + +![Watercolor Style](samples/artstyle_watercolor.jpg) +**Watercolor Style**: نمط الألوان المائية. + +--- + +## 2. الإعلانات (Advertising) + +صور مخصصة للإعلانات والتسويق. + +![Advertising](samples/ads_advertising.jpg) +**Advertising**: إعلان عام. + +![Automotive Ad](samples/ads_automotive.jpg) +**Automotive Ad**: إعلان سيارات. + +![Corporate Ad](samples/ads_corporate.jpg) +**Corporate Ad**: إعلان شركات. + +![Fashion Editorial](samples/ads_fashion_editorial.jpg) +**Fashion Editorial**: إعلان أزياء. + +![Food Photography](samples/ads_food_photography.jpg) +**Food Photography**: تصوير غذائي. + +![Gourmet Food](samples/ads_gourmet_food_photography.jpg) +**Gourmet Food**: طعام فاخر. + +![Luxury Ad](samples/ads_luxury.jpg) +**Luxury Ad**: إعلان فاخر. + +![Real Estate](samples/ads_real_estate.jpg) +**Real Estate**: عقارات. + +![Retail Ad](samples/ads_retail.jpg) +**Retail Ad**: إعلان تجزئة. + +--- + +## 3. أنماط Fooocus + +أنماط مخصصة لـ Fooocus توفر نتائج محددة. + +![Fooocus Cinematic](samples/fooocus_cinematic.jpg) +**Fooocus Cinematic**: نمط سينمائي. + +![Fooocus Enhance](samples/fooocus_enhance.jpg) +**Fooocus Enhance**: نمط تحسين الصور. + +![Fooocus Masterpiece](samples/fooocus_masterpiece.jpg) +**Fooocus Masterpiece**: نمط تحفة فنية. + +![Fooocus Negative](samples/fooocus_negative.jpg) +**Fooocus Negative**: نمط سلبي. + +![Fooocus Photograph](samples/fooocus_photograph.jpg) +**Fooocus Photograph**: نمط فوتوغرافي. + +![Fooocus Pony](samples/fooocus_pony.jpg) +**Fooocus Pony**: نمط Pony. + +![Fooocus Semi Realistic](samples/fooocus_semi_realistic.jpg) +**Fooocus Semi Realistic**: نمط شبه واقعي. + +![Fooocus Sharp](samples/fooocus_sharp.jpg) +**Fooocus Sharp**: نمط حاد وواضح. + +![Fooocus V2](samples/fooocus_v2.jpg) +**Fooocus V2**: نمط Fooocus الإصدار الثاني. + +--- + +## 4. الألعاب (Games) + +صور مستوحاة من ألعاب الفيديو المختلفة. + +![Bubble Bobble](samples/game_bubble_bobble.jpg) +**Bubble Bobble**: لعبة Bubble Bobble. + +![Cyberpunk Game](samples/game_cyberpunk_game.jpg) +**Cyberpunk Game**: لعبة سايبربانك. + +![Fighting Game](samples/game_fighting_game.jpg) +**Fighting Game**: لعبة قتال. + +![GTA](samples/game_gta.jpg) +**GTA**: لعبة GTA. + +![Mario](samples/game_mario.jpg) +**Mario**: لعبة ماريو. + +![Minecraft](samples/game_minecraft.jpg) +**Minecraft**: لعبة ماينكرافت. + +![Pokemon](samples/game_pokemon.jpg) +**Pokemon**: لعبة بوكيمون. + +![Retro Arcade](samples/game_retro_arcade.jpg) +**Retro Arcade**: ألعاب أركيد قديمة. + +![Retro Game](samples/game_retro_game.jpg) +**Retro Game**: ألعاب قديمة. + +![RPG Fantasy Game](samples/game_rpg_fantasy_game.jpg) +**RPG Fantasy Game**: لعبة RPG فانتازيا. + +![Strategy Game](samples/game_strategy_game.jpg) +**Strategy Game**: لعبة استراتيجية. + +![Street Fighter](samples/game_streetfighter.jpg) +**Street Fighter**: لعبة ستريت فايتر. + +![Zelda](samples/game_zelda.jpg) +**Zelda**: لعبة زيلدا. + +--- + +## 5. المستقبلي (Futuristic) + +صور مستوحاة من المستقبل والتكنولوجيا. + +![Biomechanical](samples/futuristic_biomechanical.jpg) +**Biomechanical**: بيوميكانيكال. + +![Biomechanical Cyberpunk](samples/futuristic_biomechanical_cyberpunk.jpg) +**Biomechanical Cyberpunk**: بيوميكانيكال سايبربانك. + +![Cybernetic](samples/futuristic_cybernetic.jpg) +**Cybernetic**: سايبرنتيك. + +![Cybernetic Robot](samples/futuristic_cybernetic_robot.jpg) +**Cybernetic Robot**: روبوت سايبرنتيك. + +![Cyberpunk Cityscape](samples/futuristic_cyberpunk_cityscape.jpg) +**Cyberpunk Cityscape**: مدينة سايبربانك. + +![Futuristic](samples/futuristic_futuristic.jpg) +**Futuristic**: مستقبلي. + +![Retro Cyberpunk](samples/futuristic_retro_cyberpunk.jpg) +**Retro Cyberpunk**: سايبربانك قديم. + +![Retro Futurism](samples/futuristic_retro_futurism.jpg) +**Retro Futurism**: مستقبلية قديمة. + +![Sci Fi](samples/futuristic_sci_fi.jpg) +**Sci Fi**: خيال علمي. + +![Vaporwave](samples/futuristic_vaporwave.jpg) +**Vaporwave**: فابورويف. + +--- + +## 6. أنماط Marc K3nt3L (MK) + +أنماط فنية من الفنان Marc K3nt3L. + +![Adnate Style](samples/mk_adnate_style.jpg) +**Adnate Style**: نمط Adnate. + +![Afrofuturism](samples/mk_afrofuturism.jpg) +**Afrofuturism**: أفروفيوتشرزم. + +![Alcohol Ink Art](samples/mk_alcohol_ink_art.jpg) +**Alcohol Ink Art**: فن حبر الكحول. + +![Andy Warhol](samples/mk_andy_warhol.jpg) +**Andy Warhol**: نمط آندي وارهول. + +![Basquiat](samples/mk_basquiat.jpg) +**Basquiat**: نمط باسكيات. + +![Bauhaus Style](samples/mk_bauhaus_style.jpg) +**Bauhaus Style**: نمط باوهاوس. + +![Chicano Art](samples/mk_chicano_art.jpg) +**Chicano Art**: فن تشيكانو. + +![Constructivism](samples/mk_constructivism.jpg) +**Constructivism**: البنائية. + +![Cross Stitching](samples/mk_cross_stitching.jpg) +**Cross Stitching**: التطريز المتقاطع. + +![Cyanotype Print](samples/mk_cyanotype_print.jpg) +**Cyanotype Print**: طباعة السيانوتيب. + +![Embroidery](samples/mk_embroidery.jpg) +**Embroidery**: التطريز. + +![Encaustic Paint](samples/mk_encaustic_paint.jpg) +**Encaustic Paint**: طلاء الشمع. + +![Gond Painting](samples/mk_gond_painting.jpg) +**Gond Painting**: رسم غوند. + +![Halftone Print](samples/mk_halftone_print.jpg) +**Halftone Print**: طباعة النقط. + +![Illuminated Manuscript](samples/mk_illuminated_manuscript.jpg) +**Illuminated Manuscript**: المخطوطة المضيئة. + +![Kalighat Painting](samples/mk_kalighat_painting.jpg) +**Kalighat Painting**: رسم كاليغات. + +![Madhubani Painting](samples/mk_madhubani_painting.jpg) +**Madhubani Painting**: رسم مادهوباني. + +![Mosaic](samples/mk_mosaic.jpg) +**Mosaic**: الفسيفساء. + +![One Line Art](samples/mk_one_line_art.jpg) +**One Line Art**: فن الخط الواحد. + +![Palekh](samples/mk_palekh.jpg) +**Palekh**: نمط باليخ. + +![Patachitra Painting](samples/mk_patachitra_painting.jpg) +**Patachitra Painting**: رسم باتاشيترا. + +![Pollock](samples/mk_pollock.jpg) +**Pollock**: نمط بولوك. + +![Punk Collage](samples/mk_punk_collage.jpg) +**Punk Collage**: كولاج بانك. + +![Ron English Style](samples/mk_ron_english_style.jpg) +**Ron English Style**: نمط رون إنجليش. + +![Shepard Fairey Style](samples/mk_shepard_fairey_style.jpg) +**Shepard Fairey Style**: نمط شيبارد فيري. + +![Shibori](samples/mk_shibori.jpg) +**Shibori**: تقنية الشيبوري اليابانية. + +![Singer Sargent](samples/mk_singer_sargent.jpg) +**Singer Sargent**: نمط سينجر سارجنت. + +![Suminagashi](samples/mk_suminagashi.jpg) +**Suminagashi**: تقنية السوميناغاشي اليابانية. + +![Ukiyo E](samples/mk_ukiyo_e.jpg) +**Ukiyo E**: أوكييو-إي، فن ياباني تقليدي. + +![Van Gogh](samples/mk_van_gogh.jpg) +**Van Gogh**: نمط فان جوخ. + +![Vintage Airline Poster](samples/mk_vintage_airline_poster.jpg) +**Vintage Airline Poster**: ملصق طيران قديم. + +![Vintage Travel Poster](samples/mk_vintage_travel_poster.jpg) +**Vintage Travel Poster**: ملصق سفر قديم. + +![Albumen Print](samples/mk_albumen_print.jpg) +**Albumen Print**: طباعة الألبومين. + +![Anthotype Print](samples/mk_anthotype_print.jpg) +**Anthotype Print**: طباعة الأنثوتيب. + +![Aquatint Print](samples/mk_aquatint_print.jpg) +**Aquatint Print**: طباعة الأكواتينت. + +![Atompunk](samples/mk_atompunk.jpg) +**Atompunk**: أتومبانك. + +![Blacklight Paint](samples/mk_blacklight_paint.jpg) +**Blacklight Paint**: طلاء الضوء الأسود. + +![Bromoil Print](samples/mk_bromoil_print.jpg) +**Bromoil Print**: طباعة البرومويل. + +![Calotype Print](samples/mk_calotype_print.jpg) +**Calotype Print**: طباعة الكالوتيب. + +![Carnival Glass](samples/mk_carnival_glass.jpg) +**Carnival Glass**: زجاج الكرنفال. + +![Chromolithography](samples/mk_chromolithography.jpg) +**Chromolithography**: الكروموليتوغرافيا. + +![Cibulak Porcelain](samples/mk_cibulak_porcelain.jpg) +**Cibulak Porcelain**: بورسلين سيبولا. + +![Color Sketchnote](samples/mk_color_sketchnote.jpg) +**Color Sketchnote**: ملاحظة ملونة. + +![Coloring Book](samples/mk_coloring_book.jpg) +**Coloring Book**: كتاب التلوين. + +![Cross Processing Print](samples/mk_cross_processing_print.jpg) +**Cross Processing Print**: طباعة المعالجة المتقاطعة. + +![Dayak Art](samples/mk_dayak_art.jpg) +**Dayak Art**: فن دياك. + +![De Stijl](samples/mk_de_stijl.jpg) +**De Stijl**: دي ستايل. + +![Dufaycolor Photograph](samples/mk_dufaycolor_photograph.jpg) +**Dufaycolor Photograph**: صورة دوفاي كولور. + +![Fayum Portrait](samples/mk_fayum_portrait.jpg) +**Fayum Portrait**: بورتريه فيوم. + +![Gyotaku](samples/mk_gyotaku.jpg) +**Gyotaku**: غيوتاكو ياباني. + +![Herbarium](samples/mk_herbarium.jpg) +**Herbarium**: عشبة. + +![Inuit Carving](samples/mk_inuit_carving.jpg) +**Inuit Carving**: نحت إينويت. + +![Lite Brite Art](samples/mk_lite_brite_art.jpg) +**Lite Brite Art**: فن لايت برايت. + +![Luminogram](samples/mk_luminogram.jpg) +**Luminogram**: لومينوغرام. + +![Mokume Gane](samples/mk_mokume_gane.jpg) +**Mokume Gane**: موكومي غاني. + +![Pichwai Painting](samples/mk_pichwai_painting.jpg) +**Pichwai Painting**: رسم بيتشواي. + +![Pictorialism](samples/mk_pictorialism.jpg) +**Pictorialism**: التصويرية. + +![Samoan Art Inspired](samples/mk_samoan_art_inspired.jpg) +**Samoan Art Inspired**: فن ساموا المستوحى. + +![Scrimshaw](samples/mk_scrimshaw.jpg) +**Scrimshaw**: سكريمشو. + +![Tlingit Art](samples/mk_tlingit_art.jpg) +**Tlingit Art**: فن تينغيت. + +![Vitreous Enamel](samples/mk_vitreous_enamel.jpg) +**Vitreous Enamel**: مينا زجاجية. + +--- + +## 7. أنماط MRE + +أنماط فنية متنوعة من MRE. + +![Ancient Illustration](samples/mre_ancient_illustration.jpg) +**Ancient Illustration**: رسم قديم. + +![Anime](samples/mre_anime.jpg) +**Anime**: أنمي. + +![Artistic Vision](samples/mre_artistic_vision.jpg) +**Artistic Vision**: رؤية فنية. + +![Bad Dream](samples/mre_bad_dream.jpg) +**Bad Dream**: حلم سيء. + +![Brave Art](samples/mre_brave_art.jpg) +**Brave Art**: فن شجاع. + +![Cinematic Dynamic](samples/mre_cinematic_dynamic.jpg) +**Cinematic Dynamic**: سينمائي ديناميكي. + +![Comic](samples/mre_comic.jpg) +**Comic**: كوميكس. + +![Dark Cyberpunk](samples/mre_dark_cyberpunk.jpg) +**Dark Cyberpunk**: سايبربانك مظلم. + +![Dark Dream](samples/mre_dark_dream.jpg) +**Dark Dream**: حلم مظلم. + +![Dynamic Illustration](samples/mre_dynamic_illustration.jpg) +**Dynamic Illustration**: رسم ديناميكي. + +![Elemental Art](samples/mre_elemental_art.jpg) +**Elemental Art**: فن العناصر. + +![Gloomy Art](samples/mre_gloomy_art.jpg) +**Gloomy Art**: فن كئيب. + +![Heroic Fantasy](samples/mre_heroic_fantasy.jpg) +**Heroic Fantasy**: فانتازيا بطولية. + +![Lyrical Geometry](samples/mre_lyrical_geometry.jpg) +**Lyrical Geometry**: هندسة غنائية. + +![Manga](samples/mre_manga.jpg) +**Manga**: مانغا. + +![Space Art](samples/mre_space_art.jpg) +**Space Art**: فن الفضاء. + +![Spontaneous Picture](samples/mre_spontaneous_picture.jpg) +**Spontaneous Picture**: صورة عفوية. + +![Sumi E Detailed](samples/mre_sumi_e_detailed.jpg) +**Sumi E Detailed**: سومي-إي مفصل. + +![Sumi E Symbolic](samples/mre_sumi_e_symbolic.jpg) +**Sumi E Symbolic**: سومي-إي رمزي. + +![Surreal Painting](samples/mre_surreal_painting.jpg) +**Surreal Painting**: رسم سريالي. + +![Undead Art](samples/mre_undead_art.jpg) +**Undead Art**: فن الأموات. + +![Underground](samples/mre_underground.jpg) +**Underground**: تحت الأرض. + +--- + +## 8. أنماط SAI + +أنماط فنية من SAI. + +![3D Model](samples/sai_3d_model.jpg) +**3D Model**: نموذج ثلاثي الأبعاد. + +![Analog Film](samples/sai_analog_film.jpg) +**Analog Film**: فيلم تناظري. + +![Anime](samples/sai_anime.jpg) +**Anime**: أنمي. + +![Cinematic](samples/sai_cinematic.jpg) +**Cinematic**: سينمائي. + +![Comic Book](samples/sai_comic_book.jpg) +**Comic Book**: كتاب كوميكس. + +![Craft Clay](samples/sai_craft_clay.jpg) +**Craft Clay**: طين حرفي. + +![Digital Art](samples/sai_digital_art.jpg) +**Digital Art**: فن رقمي. + +![Enhance](samples/sai_enhance.jpg) +**Enhance**: تحسين. + +![Fantasy Art](samples/sai_fantasy_art.jpg) +**Fantasy Art**: فن فانتازيا. + +![Isometric](samples/sai_isometric.jpg) +**Isometric**: إيزومتري. + +![Line Art](samples/sai_line_art.jpg) +**Line Art**: فن الخط. + +![Lowpoly](samples/sai_lowpoly.jpg) +**Lowpoly**: لووبولي. + +![Neonpunk](samples/sai_neonpunk.jpg) +**Neonpunk**: نيونبانك. + +![Origami](samples/sai_origami.jpg) +**Origami**: أوريغامي. + +![Photographic](samples/sai_photographic.jpg) +**Photographic**: فوتوغرافي. + +![Pixel Art](samples/sai_pixel_art.jpg) +**Pixel Art**: فن البكسل. + +![Texture](samples/sai_texture.jpg) +**Texture**: نسيج. + +--- + +## 9. أنماط ورقية (Papercraft) + +أنماط فنية تستخدم الورق كوسط إبداعي. + +![Collage](samples/papercraft_collage.jpg) +**Collage**: كولاج ورقي. + +![Flat Papercut](samples/papercraft_flat_papercut.jpg) +**Flat Papercut**: قص ورقي مسطح. + +![Kirigami](samples/papercraft_kirigami.jpg) +**Kirigami**: كيريجامي ياباني. + +![Paper Mache](samples/papercraft_paper_mache.jpg) +**Paper Mache**: بابييه ماشيه. + +![Paper Quilling](samples/papercraft_paper_quilling.jpg) +**Paper Quilling**: لف الورق. + +![Papercut Collage](samples/papercraft_papercut_collage.jpg) +**Papercut Collage**: كولاج قص ورقي. + +![Papercut Shadow Box](samples/papercraft_papercut_shadow_box.jpg) +**Papercut Shadow Box**: صندوق ظل ورقي. + +![Stacked Papercut](samples/papercraft_stacked_papercut.jpg) +**Stacked Papercut**: قص ورقي مكدس. + +![Thick Layered Papercut](samples/papercraft_thick_layered_papercut.jpg) +**Thick Layered Papercut**: قص ورقي سميك الطبقات. + +--- + +## 10. صور فوتوغرافية (Photography) + +صور بأسلوب فوتوغرافي مختلف. + +![Alien](samples/photo_alien.jpg) +**Alien**: فضائي. + +![Film Noir](samples/photo_film_noir.jpg) +**Film Noir**: فيلم نوير. + +![Glamour](samples/photo_glamour.jpg) +**Glamour**: غلامور. + +![HDR](samples/photo_hdr.jpg) +**HDR**: HDR. + +![iPhone Photographic](samples/photo_iphone_photographic.jpg) +**iPhone Photographic**: تصوير آيفون. + +![Long Exposure](samples/photo_long_exposure.jpg) +**Long Exposure**: تعريض طويل. + +![Neon Noir](samples/photo_neon_noir.jpg) +**Neon Noir**: نيون نوير. + +![Silhouette](samples/photo_silhouette.jpg) +**Silhouette**: سيلويت. + +![Tilt Shift](samples/photo_tilt_shift.jpg) +**Tilt Shift**: تيلت شفت. + +--- + +## 11. أنماط نيو (Neo) + +أنماط فنية حديثة ومستقبلية. + +![Neo Baroque](samples/neo_baroque.jpg) +**Neo Baroque**: الباروك الجديد. + +![Neo Byzantine](samples/neo_byzantine.jpg) +**Neo Byzantine**: البيزنطية الجديدة. + +![Neo Futurism](samples/neo_futurism.jpg) +**Neo Futurism**: المستقبلية الجديدة. + +![Neo Impressionism](samples/neo_impressionism.jpg) +**Neo Impressionism**: الانطباعية الجديدة. + +![Neo Rococo](samples/neo_rococo.jpg) +**Neo Rococo**: الروكوكو الجديدة. + +--- + +## 12. أنماط متنوعة (Miscellaneous) + +أنماط فنية متنوعة لا تنتمي لفئة محددة. + +![Architectural](samples/misc_architectural.jpg) +**Architectural**: معماري. + +![Disco](samples/misc_disco.jpg) +**Disco**: ديسكو. + +![Dreamscape](samples/misc_dreamscape.jpg) +**Dreamscape**: منظر حلم. + +![Dystopian](samples/misc_dystopian.jpg) +**Dystopian**: ديستوبيا. + +![Fairy Tale](samples/misc_fairy_tale.jpg) +**Fairy Tale**: خرافة. + +![Gothic](samples/misc_gothic.jpg) +**Gothic**: قوطي. + +![Grunge](samples/misc_grunge.jpg) +**Grunge**: غرانج. + +![Horror](samples/misc_horror.jpg) +**Horror**: رعب. + +![Kawaii](samples/misc_kawaii.jpg) +**Kawaii**: كاواي ياباني. + +![Lovecraftian](samples/misc_lovecraftian.jpg) +**Lovecraftian**: لوفكرافت. + +![Macabre](samples/misc_macabre.jpg) +**Macabre**: ميكابري. + +![Manga](samples/misc_manga.jpg) +**Manga**: مانغا. + +![Metropolis](samples/misc_metropolis.jpg) +**Metropolis**: ميتروبوليس. + +![Minimalist](samples/misc_minimalist.jpg) +**Minimalist**: تبسيطي. + +![Monochrome](samples/misc_monochrome.jpg) +**Monochrome**: أحادي اللون. + +![Nautical](samples/misc_nautical.jpg) +**Nautical**: بحري. + +![Space](samples/misc_space.jpg) +**Space**: فضاء. + +![Stained Glass](samples/misc_stained_glass.jpg) +**Stained Glass**: زجاج ملون. + +![Techwear Fashion](samples/misc_techwear_fashion.jpg) +**Techwear Fashion**: أزياء تكوير. + +![Tribal](samples/misc_tribal.jpg) +**Tribal**: قبلي. + +![Zentangle](samples/misc_zentangle.jpg) +**Zentangle**: زنتانغل. + +--- + +## 13. أنماط أخرى متنوعة + +أنماط فنية أخرى متنوعة. + +![Academia](samples/academia.jpg) +**Academia**: أكاديمي. + +![Action Figure](samples/action_figure.jpg) +**Action Figure**: شخصية ألعاب. + +![Adorable 3D Character](samples/adorable_3d_character.jpg) +**Adorable 3D Character**: شخصية ثلاثية الأبعاد لطيفة. + +![Adorable Kawaii](samples/adorable_kawaii.jpg) +**Adorable Kawaii**: كاواي لطيف. + +![Astral Aura](samples/astral_aura.jpg) +**Astral Aura**: هالة فلكية. + +![Avant Garde](samples/avant_garde.jpg) +**Avant Garde**: طليعي. + +![Blueprint Schematic Drawing](samples/blueprint_schematic_drawing.jpg) +**Blueprint Schematic Drawing**: رسم مخطط. + +![Caricature](samples/caricature.jpg) +**Caricature**: كاريكاتير. + +![Cel Shaded Art](samples/cel_shaded_art.jpg) +**Cel Shaded Art**: فن التظليل الخلوي. + +![Character Design Sheet](samples/character_design_sheet.jpg) +**Character Design Sheet**: ورقة تصميم الشخصية. + +![Cinematic Diva](samples/cinematic_diva.jpg) +**Cinematic Diva**: ديفا سينمائية. + +![Color Field Painting](samples/color_field_painting.jpg) +**Color Field Painting**: رسم حقل اللون. + +![Colored Pencil Art](samples/colored_pencil_art.jpg) +**Colored Pencil Art**: فن القلم الملون. + +![Conceptual Art](samples/conceptual_art.jpg) +**Conceptual Art**: فن مفاهيمي. + +![Constructivism](samples/constructivism.jpg) +**Constructivism**: البنائية. + +![Dadaism](samples/dadaism.jpg) +**Dadaism**: الدادائية. + +![Dark Fantasy](samples/dark_fantasy.jpg) +**Dark Fantasy**: فانتازيا مظلمة. + +![Dark Moody Atmosphere](samples/dark_moody_atmosphere.jpg) +**Dark Moody Atmosphere**: جو مظلم كئيب. + +![DMT Art Style](samples/dmt_art_style.jpg) +**DMT Art Style**: نمط فن DMT. + +![Doodle Art](samples/doodle_art.jpg) +**Doodle Art**: فن الدودل. + +![Double Exposure](samples/double_exposure.jpg) +**Double Exposure**: تعريض مزدوج. + +![Dripping Paint Splatter Art](samples/dripping_paint_splatter_art.jpg) +**Dripping Paint Splatter Art**: فن رش الطلاء. + +![Faded Polaroid Photo](samples/faded_polaroid_photo.jpg) +**Faded Polaroid Photo**: صورة بولارويد باهتة. + +![Flat 2D Art](samples/flat_2d_art.jpg) +**Flat 2D Art**: فن ثنائي الأبعاد مسطح. + +![Fortnite Art Style](samples/fortnite_art_style.jpg) +**Fortnite Art Style**: نمط فن فورتنايت. + +![Glitchcore](samples/glitchcore.jpg) +**Glitchcore**: غليتشكور. + +![Glo Fi](samples/glo_fi.jpg) +**Glo Fi**: غلو-في. + +![Googie Art Style](samples/googie_art_style.jpg) +**Googie Art Style**: نمط فن غوجي. + +![Graffiti Art](samples/graffiti_art.jpg) +**Graffiti Art**: فن الغرافيتي. + +![Harlem Renaissance Art](samples/harlem_renaissance_art.jpg) +**Harlem Renaissance Art**: فن عصر النهضة في هارلم. + +![High Fashion](samples/high_fashion.jpg) +**High Fashion**: أزياء عالية. + +![Idyllic](samples/idyllic.jpg) +**Idyllic**: مثالي. + +![Infographic Drawing](samples/infographic_drawing.jpg) +**Infographic Drawing**: رسم إنفوغرافيك. + +![Ink Dripping Drawing](samples/ink_dripping_drawing.jpg) +**Ink Dripping Drawing**: رسم قطرات الحبر. + +![Japanese Ink Drawing](samples/japanese_ink_drawing.jpg) +**Japanese Ink Drawing**: رسم الحبر الياباني. + +![Knolling Photography](samples/knolling_photography.jpg) +**Knolling Photography**: تصوير كنولينغ. + +![Light Cheery Atmosphere](samples/light_cheery_atmosphere.jpg) +**Light Cheery Atmosphere**: جو مشرق سعيد. + +![Logo Design](samples/logo_design.jpg) +**Logo Design**: تصميم شعار. + +![Luxurious Elegance](samples/luxurious_elegance.jpg) +**Luxurious Elegance**: أناقة فاخرة. + +![Macro Photography](samples/macro_photography.jpg) +**Macro Photography**: تصوير ماكرو. + +![Mandola Art](samples/mandola_art.jpg) +**Mandola Art**: فن ماندولا. + +![Marker Drawing](samples/marker_drawing.jpg) +**Marker Drawing**: رسم بالماركر. + +![Medievalism](samples/medievalism.jpg) +**Medievalism**: العصور الوسطى. + +![Pebble Art](samples/pebble_art.jpg) +**Pebble Art**: فن الحصى. + +![Pencil Sketch Drawing](samples/pencil_sketch_drawing.jpg) +**Pencil Sketch Drawing**: رسم بالقلم الرصاص. + +![Random Style](samples/random_style.jpg) +**Random Style**: نمط عشوائي. + +![SAI 3D Model](samples/sai_3d_model.jpg) +**SAI 3D Model**: نموذج ثلاثي الأبعاد SAI. + +![Silhouette Art](samples/silhouette_art.jpg) +**Silhouette Art**: فن السيلويت. + +![Simple Vector Art](samples/simple_vector_art.jpg) +**Simple Vector Art**: فن متجه بسيط. + +![Sketchup](samples/sketchup.jpg) +**Sketchup**: سكيتش أب. + +![Steampunk 2](samples/steampunk_2.jpg) +**Steampunk 2**: بخار 2. + +![Sticker Designs](samples/sticker_designs.jpg) +**Sticker Designs**: تصميمات ملصقات. + +![Terragen](samples/terragen.jpg) +**Terragen**: تيراجين. + +![Tranquil Relaxing Atmosphere](samples/tranquil_relaxing_atmosphere.jpg) +**Tranquil Relaxing Atmosphere**: جو هادئ مريح. + +![Vibrant Rim Light](samples/vibrant_rim_light.jpg) +**Vibrant Rim Light**: إضاءة حافة حيوية. + +![Volumetric Lighting](samples/volumetric_lighting.jpg) +**Volumetric Lighting**: إضاءة حجمية. + +![Watercolor 2](samples/watercolor_2.jpg) +**Watercolor 2**: ألوان مائية 2. + +![Whimsical And Playful](samples/whimsical_and_playful.jpg) +**Whimsical And Playful**: مرح ولطيف. + +![Bauhaus Style Poster](samples/bauhaus_style_poster.jpg) +**Bauhaus Style Poster**: ملصق نمط باوهاوس. + +![Ornate And Intricate](samples/ornate_and_intricate.jpg) +**Ornate And Intricate**: مزخرف ومعقد. + +--- + +## ملخص + +إجمالي عدد الصور: حوالي 331 صورة + +**الفئات الرئيسية:** +1. أنماط فنية (Art Styles) - حوالي 40 صورة +2. الإعلانات (Advertising) - 9 صور +3. أنماط Fooocus - 9 صور +4. الألعاب (Games) - 13 صورة +5. المستقبلي (Futuristic) - 10 صور +6. أنماط Marc K3nt3L (MK) - حوالي 79 صورة +7. أنماط MRE - 20 صورة +8. أنماط SAI - 16 صورة +9. أنماط ورقية (Papercraft) - 9 صور +10. صور فوتوغرافية (Photography) - 9 صور +11. أنماط نيو (Neo) - 5 صور +12. أنماط متنوعة (Miscellaneous) - 20 صور +13. أنماط أخرى متنوعة - حوالي 91 صورة + +هذه الصور تُعرض تنوع الأنماط الفنية التي يمكن توليدها باستخدام Fooocus، من الأنماط الكلاسيكية إلى الحديثة، ومن الفن الرقمي إلى الفوتوغرافي. diff --git a/.github/fooocus_version.md b/.github/fooocus_version.md new file mode 100644 index 0000000000..4a02141288 --- /dev/null +++ b/.github/fooocus_version.md @@ -0,0 +1,15 @@ +--- +### 📄 docs/fooocus_version.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +تعريف إصدار Fooocus الحالي (2.5.5) في متغير نصي واحد. يُستخدم في عنوان صفحة الويب، سجلات التوليد، والبيانات الوصفية للصور. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **version = '2.5.5'**: متغير نصي يحتوي على رقم الإصدار الحالي. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **لا يستدعي أي ملفات أخرى** +- **يُستدعى بواسطة**: launch.py (طباعة الإصدار), webui.py (عنوان الصفحة: `title = f'Fooocus {fooocus_version.version}'`), modules/async_worker.py (البيانات الوصفية للصور), modules/private_logger.py +- **الأثر البرمجي**: تغيير هذا المتغير يغيّر الإصدار المعروض في جميع أنحاء التطبيق والصور المُولّدة + +**للمزيد من التفاصيل، راجع:** [FOOOCUS_TECHNICAL_DOC.md](FOOOCUS_TECHNICAL_DOC.md) diff --git a/.github/launch.md b/.github/launch.md new file mode 100644 index 0000000000..de43c18a42 --- /dev/null +++ b/.github/launch.md @@ -0,0 +1,24 @@ +--- +### 📄 docs/launch.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نقطة التشغيل الرئيسية (Entry Point) لـ Fooocus. يُحضّر بيئة Python، يُثبّت PyTorch 2.1.0 و Xformers 0.0.23 والمتطلبات من requirements_versions.txt. يُحمّل نماذج VAE التقريبية (xlvaeapp.pth, vaeapp_sd15.pth, xl-to-v1_interposer) ونموذج fooocus_expansion.bin. بعد تجهيز النماذج، يستورد ويُشغّل webui.py. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **prepare_environment()**: تثبيت PyTorch مع CUDA 12.1، Xformers (0.0.23)، والمتطلبات البرمجية. تتحقق من النظام (Windows/Linux) لاختيار طريقة تثبيت xformers المناسبة. +- **ini_args()**: تستورد وتُحلّل معاملات سطر الأوامر من args_manager.py وتُعيد كائن args. +- **download_models(default_model, previous_default_models, checkpoint_downloads, embeddings_downloads, lora_downloads, vae_downloads)**: تحميل جميع النماذج المطلوبة من HuggingFace. تدعم البديل التلقائي (fallback) للنماذج القديمة إذا لم يكن النموذج الافتراضي متوفراً. تُعيد اسم النموذج الافتراضي وقائمة التحميل. +- **vae_approx_filenames**: قائمة ثابتة بـ 3 ملفات VAE تقريبية مع عناوين URL للتحميل. + +المتغيرات العامة: REINSTALL_ALL = False, TRY_INSTALL_XFORMERS = False + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: args_manager.py, fooocus_version.py, build_launcher.py, modules/launch_util.py, modules/model_loader.py, modules/config.py, modules/hash_cache.py, modules/util.py +- **يُستدعى بواسطة**: entry_with_update.py (`from launch import *`) +- **يستورد في النهاية**: webui.py via `from webui import *` +- **الأثر البرمجي**: أي تعديل على طريقة تحميل النماذج أو المتغيرات البيئية سيؤثر على قدرة الأداة على التشغيل + +**للمزيد من التفاصيل، راجع:** +- [args_manager.md](args_manager.md) - إدارة معاملات سطر الأوامر +- [entry_with_update.md](entry_with_update.md) - نقطة الدخول مع التحديث +- [build_launcher.md](build_launcher.md) - بناء المشغل diff --git a/.github/map-road.md b/.github/map-road.md new file mode 100644 index 0000000000..9803374239 --- /dev/null +++ b/.github/map-road.md @@ -0,0 +1,378 @@ +# خريطة طريق Fooocus - شرح مفصل لبنية المشروع + +هذا المستند يشرح بنية مشروع Fooocus بشكل مفصل، مع التركيز على المجلدات والملفات الرئيسية التي تشكل النظام. + +--- + +## نظرة عامة على البنية + +``` +foocus/ +├── modules/ # الوحدات الأساسية +│ ├── async_worker.py # المعالج غير المتزامن +│ ├── config.py # إدارة الإعدادات +│ ├── core.py # النواة الحسابية +│ ├── patch.py # تطبيق التعديلات +│ └── ... +├── ldm_patched/ # محرك ComfyUI المعدل +│ ├── modules/ # وحدات المحرك +│ └── ... +├── extras/ # الوظائف الإضافية +│ ├── censor.py # فحص NSFW +│ ├── expansion.py # توسيع البرومبت +│ ├── face_crop.py # قص الوجوه +│ ├── interrogate.py # وصف الصور +│ ├── BLIP/ # مكتبة BLIP +│ ├── GroundingDINO/ # كشف الكائنات +│ └── facexlib/ # معالجة الوجوه +├── presets/ # القوالب المسبقة +├── models/ # النماذج +├── wildcards/ # البطاقات البرية +└── css/ # التنسيق +``` + +--- + +## 1. مجلد modules/ - الوحدات الأساسية + +هذا المجلد يحتوي على الوحدات الأساسية التي تشكل نواة نظام Fooocus. + +**للمزيد من التفاصيل، راجع:** [MODULES.md](MODULES.md) + +### 1.1 async_worker.py - المعالج غير المتزامن + +**الوظيفة:** +- إدارة مهام توليد الصور بشكل غير متزامن +- التعامل مع طلبات المستخدم المتعددة في نفس الوقت +- إدارة قائمة الانتظار للمهام +- التحكم في تخصيص الموارد (GPU/CPU) + +**المكونات الرئيسية:** +- `AsyncWorker`: الفئة الرئيسية التي تدير المهام غير المتزامنة +- `Task`: فئة تمثل مهمة توليد واحدة +- `Queue`: قائمة انتظار المهام +- `Worker`: خيوط العمل التي تنفذ المهام + +**الاعتماديات:** +- `threading`: للتعامل مع خيوط العمل +- `queue`: لإدارة قائمة الانتظار +- `torch`: للحسابات على GPU +- `modules/core`: للوظائف الحسابية الأساسية + +### 1.2 config.py - إدارة الإعدادات + +**الوظيفة:** +- تخزين وإدارة إعدادات Fooocus +- تحميل الإعدادات من ملفات التكوين +- توفير واجهة للوصول إلى الإعدادات +- إدارة الإعدادات الافتراضية + +**الإعدادات الرئيسية:** +- مسارات النماذج +- إعدادات GPU +- إعدادات الصورة (الحجم، الدقة، إلخ) +- إعدادات البرومبت +- إعدادات التوليد + +**الاعتماديات:** +- `json`: لتحميل وحفظ الإعدادات +- `pathlib`: للتعامل مع المسارات +- `os`: للوصول إلى نظام الملفات + +### 1.3 core.py - النواة الحسابية + +**الوظيفة:** +- تنفيذ العمليات الحسابية الأساسية لتوليد الصور +- إدارة نماذج Stable Diffusion +- تنفيذ عمليات التوليد (denoising, sampling, إلخ) +- إدارة الذاكرة والتحكم في استخدام GPU + +**المكونات الرئيسية:** +- `ModelLoader`: تحميل النماذج +- `Sampler`: خوارزميات أخذ العينات +- `Denoiser`: إزالة الضوضاء +- `Encoder/Decoder`: تشفير وفك تشفير الصور + +**الاعتماديات:** +- `torch`: للحسابات على GPU +- `torch.nn`: للشبكات العصبية +- `ldm_patched`: لمحرك ComfyUI المعدل +- `numpy`: للعمليات الرياضية + +### 1.4 patch.py - تطبيق التعديلات + +**الوظيفة:** +- تطبيق التعديلات على النماذج والوظائف +- تحسين أداء النماذج +- إصلاح المشاكل في النماذج الأصلية +- تخصيص سلوك النماذج + +**التعديلات الرئيسية:** +- تحسينات على الذاكرة +- تحسينات على الأداء +- إصلاحات للأخطاء +- تخصيصات للوظائف + +**الاعتماديات:** +- `torch`: للتعديل على النماذج +- `ldm_patched`: للوصول إلى المحرك المعدل +- `modules/core`: للوظائف الحسابية + +--- + +## 2. مجلد ldm_patched/ - محرك ComfyUI المعدل + +هذا المجلد يحتوي على نسخة معدلة من محرك ComfyUI المستخدم في Fooocus. + +**للمزيد من التفاصيل، راجع:** [LDM_PATCHED.md](LDM_PATCHED.md) + +### 2.1 modules/ - وحدات المحرك + +**الوظيفة:** +- توفير الوحدات الأساسية لمحرك ComfyUI +- إدارة تدفق البيانات بين الوحدات +- تنفيذ العمليات الحسابية للنماذج + +**الوحدات الرئيسية:** +- `model_management`: إدارة النماذج +- `samplers`: خوارزميات أخذ العينات +- `latent_diffusion`: نماذج الانتشار الكامن +- `clip`: معالجة النصوص +- `vae`: المشفرات التلقائية المتغيرة + +**الاعتماديات:** +- `torch`: للحسابات +- `torch.nn`: للشبكات العصبية +- `transformers`: للنماذج اللغوية +- `diffusers`: للنماذج الانتشارية + +--- + +## 3. مجلد extras/ - الوظائف الإضافية + +هذا المجلد يحتوي على الوظائف الإضافية التي توسع قدرات Fooocus. + +**للمزيد من التفاصيل، راجع:** [EXTRAS.md](EXTRAS.md) + +### 3.1 censor.py - فحص NSFW + +**الوظيفة:** +- فحص الصور المولدة للمحتوى غير اللائق (NSFW) +- تصفية أو حجب المحتوى غير المقبول +- استخدام نموذج StableDiffusionSafetyChecker + +**المكونات الرئيسية:** +- `SafetyChecker`: فئة فحص السلامة +- `NSFWDetector`: كاشف المحتوى غير اللائق +- `Filter`: فلتر الصور + +**الاعتماديات:** +- `transformers`: لنموذج فحص السلامة +- `torch`: للحسابات +- `PIL`: لمعالجة الصور + +### 3.2 expansion.py - توسيع البرومبت + +**الوظيفة:** +- توسيع البرومبتات النصية للحصول على نتائج أفضل +- استخدام نموذج GPT-2 مخصص للتوسيع +- إضافة كلمات إيجابية لتعزيز النتائج + +**المكونات الرئيسية:** +- `PromptExpander`: فئة توسيع البرومبت +- `GPT2Model`: نموذج GPT-2 +- `WordList`: قائمة الكلمات الإيجابية + +**الاعتماديات:** +- `transformers`: لنموذج GPT-2 +- `torch`: للحسابات +- `modules/config`: للإعدادات + +### 3.3 face_crop.py - قص الوجوه + +**الوظيفة:** +- اكتشاف وقص الوجوه من الصور +- محاذاة الوجوه بشكل صحيح +- استخدام FaceRestoreHelper و RetinaFace + +**المكونات الرئيسية:** +- `FaceCrop`: فئة قص الوجوه +- `FaceDetector`: كاشف الوجوه +- `FaceAligner`: محاذاة الوجوه + +**الاعتماديات:** +- `cv2`: لمعالجة الصور +- `facexlib`: لمكتبة معالجة الوجوه +- `numpy`: للعمليات الرياضية + +### 3.4 interrogate.py - وصف الصور + +**الوظيفة:** +- وصف الصور المولدة تلقائياً +- استخدام نموذج BLIP للوصف +- استخدام نموذج WD14 Tagger للوسوم + +**المكونات الرئيسية:** +- `ImageInterrogator`: فئة وصف الصور +- `BLIPModel`: نموذج BLIP +- `TaggerModel`: نموذج الوسوم + +**الاعتماديات:** +- `transformers`: للنماذج +- `torch`: للحسابات +- `PIL`: لمعالجة الصور + +### 3.5 BLIP/ - مكتبة BLIP + +**الوظيفة:** +- توفير نماذج BLIP لفهم الصور والنصوص +- دعم مهام متعددة: وصف الصور، مطابقة الصور والنصوص، إلخ + +**النماذج الرئيسية:** +- `blip_pretrain`: نموذج BLIP المدرب مسبقاً +- `blip_vqa`: نموذج BLIP للأسئلة والردود البصرية +- `blip_retrieval`: نموذج BLIP للاسترجاع +- `blip_itm`: نموذج BLIP لمطابقة الصور والنصوص + +**الاعتماديات:** +- `torch`: للحسابات +- `torch.nn`: للشبكات العصبية +- `transformers`: للنماذج اللغوية + +### 3.6 GroundingDINO/ - كشف الكائنات + +**الوظيفة:** +- كشف الكائنات في الصور بناءً على النصوص +- استخدام نموذج GroundingDINO +- دعم إنشاء أقنعة (masks) للإصلاح + +**المكونات الرئيسية:** +- `GroundingDINO`: نموذج كشف الكائنات +- `inference`: واجهة الاستدلال +- `config`: إعدادات النموذج + +**الاعتماديات:** +- `torch`: للحسابات +- `torchvision`: لمعالجة الصور +- `transformers`: للنماذج اللغوية + +### 3.7 facexlib/ - معالجة الوجوه + +**الوظيفة:** +- توفير أدوات متقدمة لمعالجة الوجوه +- دعم اكتشاف الوجوه، المحاذاة، التحليل، إلخ + +**المكونات الرئيسية:** +- `detection`: اكتشاف الوجوه +- `parsing`: تحليل الوجوه +- `restoration`: استعادة الوجوه +- `utils`: أدوات مساعدة + +**الاعتماديات:** +- `cv2`: لمعالجة الصور +- `torch`: للحسابات +- `numpy`: للعمليات الرياضية + +--- + +## 4. مجلد presets/ - القوالب المسبقة + +**الوظيفة:** +- تخزين القوالب المسبقة للإعدادات +- توفير إعدادات جاهزة لأنماط مختلفة +- تسهيل استخدام Fooocus للمستخدمين الجدد + +**القوالب الرئيسية:** +- قوالب الأنماط الفنية +- قوالب الإعدادات السريعة +- قوالب الإعدادات المتقدمة + +**الاعتماديات:** +- `json`: لتحميل القوالب +- `modules/config`: للإعدادات + +--- + +## 5. مجلد models/ - النماذج + +**الوظيفة:** +- تخزين نماذج Stable Diffusion +- تخزين نماذج VAE +- تخزين نماذج LoRA +- تخزين نماذج التوسيع (Embeddings) + +**الأنواع الرئيسية:** +- `checkpoints`: نماذج Stable Diffusion الرئيسية +- `vae`: المشفرات التلقائية المتغيرة +- `lora`: نماذج LoRA للتخصيص +- `embeddings`: التوسيع النصية + +**الاعتماديات:** +- `torch`: لتحميل النماذج +- `huggingface_hub`: لتحميل النماذج من الإنترنت +- `modules/core`: لإدارة النماذج + +--- + +## 6. مجلد wildcards/ - البطاقات البرية + +**الوظيفة:** +- تخزين البطاقات البرية (Wildcards) +- توسيع البرومبتات تلقائياً +- توفير كلمات وعبارات متنوعة + +**الأنواع الرئيسية:** +- بطاقات الأنماط الفنية +- بطاقات الألوان +- بطاقات الإضاءة +- بطاقات التكوين + +**الاعتماديات:** +- `random`: لاختيار عشوائي +- `modules/config`: للإعدادات + +--- + +## 7. مجلد css/ - التنسيق + +**الوظيفة:** +- تخزين ملفات CSS لواجهة المستخدم +- تخصيص مظهر واجهة Fooocus +- تحسين تجربة المستخدم + +**الملفات الرئيسية:** +- `style.css`: التنسيق الرئيسي +- `custom.css`: التنسيق المخصص + +**الاعتماديات:** +- `gradio`: لواجهة المستخدم + +--- + +## التدفق الرئيسي للنظام + +1. **الإدخال:** المستخدم يقدم برومبت وإعدادات +2. **المعالجة:** `async_worker.py` يستقبل الطلب ويضيفه إلى قائمة الانتظار +3. **التوسيع:** `expansion.py` يوسع البرومبت إذا لزم الأمر +4. **التوليد:** `core.py` ينفذ عملية التوليد باستخدام النماذج +5. **الفحص:** `censor.py` يفحص الصورة المولدة +6. **التحسين:** `face_crop.py` و `interrogate.py` يحسنان الصورة +7. **الإخراج:** الصورة النهائية تُعرض للمستخدم + +--- + +## الاعتماديات الرئيسية + +- **Python 3.10+**: لغة البرمجة الأساسية +- **PyTorch**: للحسابات على GPU +- **Transformers**: للنماذج اللغوية +- **Gradio**: لواجهة المستخدم +- **OpenCV**: لمعالجة الصور +- **PIL**: لمعالجة الصور +- **NumPy**: للعمليات الرياضية + +--- + +## الخلاصة + +بنية Fooocus مصممة بشكل معياري لتسهيل الصيانة والتطوير. كل مجلد له وظيفة محددة وواضحة، مما يجعل النظام مرناً وقابلاً للتوسع. الوحدات الأساسية (`modules/`) تدير العمليات الحسابية، بينما الوظائف الإضافية (`extras/`) توسع قدرات النظام، والمحرك المعدل (`ldm_patched/`) يوفر الأساس للتوليد. diff --git a/.github/shared.md b/.github/shared.md new file mode 100644 index 0000000000..055eae6b9b --- /dev/null +++ b/.github/shared.md @@ -0,0 +1,15 @@ +--- +### 📄 docs/shared.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +ملف مشارك بسيط (سطر واحد) يحتوي على المتغير العام `gradio_root = None`. يُستخدم لتخزين كائن gr.Blocks الرئيسي لـ Gradio بعد إنشائه في webui.py، ليكون متاحاً من أي مكان في المشروع (خاصة async_worker.py). + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **gradio_root**: متغير عام من نوع gr.Blocks. يُعيَّن في webui.py (السطر 153) عبر `shared.gradio_root = gr.Blocks(title=title).queue()`. + - يُستخدم في async_worker.py لطباعة معلومات الاتصال (URL المحلي والخارجي). + - يُستخدم في webui.py لربط أحداث التحميل (load events) وعناصر UI. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **لا يستدعي أي ملفات أخرى** +- **يُستدعى بواسطة**: webui.py (يُعيّنه), modules/async_worker.py (يقرؤه), modules/localization.py +- **الأثر البرمجي**: إزالة هذا المتغير ستكسر الاتصال بين webui.py و async_worker.py diff --git a/.github/troubleshoot_ar.md b/.github/troubleshoot_ar.md new file mode 100644 index 0000000000..4ac3e0b549 --- /dev/null +++ b/.github/troubleshoot_ar.md @@ -0,0 +1,184 @@ +# استكشاف الأخطاء وإصلاحها في Fooocus + +فيما يلي العديد من المشكلات الشائعة التي واجهها المستخدمون: + +**للمزيد من التفاصيل حول التطوير، راجع:** +- [development_ar.md](development_ar.md) - دليل التطوير +- [docker_ar.md](docker_ar.md) - دليل Docker + +### RuntimeError: CPUAllocator + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### تم تحميل النموذج، ثم توقف، ولا يحدث شيء + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### Segmentation Fault + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### تم الإنهاء (Aborted) + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### core dumped + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### تم القتل (Killed) + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### ^C، ثم خروج + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### adm 2816، ثم تعليق + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### فشل الاتصال (Connection errored out) + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### Error 1006 + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### WinError 10060 + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### Read timed out + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### لا يوجد خطأ، ولكن وحدة التحكم تُغلق فجأة. لا يمكن العثور على أي خطأ. + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### تحميل النموذج بطيء جدًا (أكثر من دقيقة واحدة) + +انظر أيضًا إلى القسم: **مبادلة النظام** + +### مبادلة النظام + +جميع المشكلات المذكورة أعلاه ناتجة عن عدم وجود مساحة كافية لمبادلة النظام (System Swap). + +يرجى التأكد من أن لديك 40 جيجابايت على الأقل من مبادلة النظام. في الواقع، لا تحتاج إلى كل هذه المساحة، ولكن 40 جيجابايت كافية لتشغيل Fooocus بنجاح 100%. + +(إذا كان لديك أكثر من 64 جيجابايت من ذاكرة الوصول العشوائي (RAM)، فربما لا تحتاج إلى أي مبادلة نظام، لكننا لسنا متأكدين تمامًا من ذلك.) + +أيضًا، إذا كانت مبادلة النظام لديك على قرص صلب (HDD)، فستكون سرعة تحميل النموذج بطيئة جدًا. يُرجى محاولة وضع مبادلة النظام على قرص SSD. + +إذا كنت تستخدم Linux/Mac، فيُرجى اتباع تعليمات مزود الخدمة الخاص بك لإعداد مساحة المبادلة (Swap Space). يُقصد بـ "مزود الخدمة" هنا أوبونتو الرسمي، سنت أو إس الرسمي، ماك الرسمي، إلخ. + +إذا كنت تستخدم Windows، يمكنك ضبط المبادلة هنا: + +![swap](https://github.com/lllyasviel/Fooocus/assets/19834515/2a06b130-fe9b-4504-94f1-2763be4476e9) + +إذا كنت تستخدم كلاً من HDD و SSD، فيمكنك تجربة بعض الإعدادات في الخطوة 7 أعلاه لمحاولة وضع منطقة المبادلة على SSD، بحيث تكون سرعة تحميل النموذج أسرع. + +**هام: Microsoft Windows 10/11 يقوم تلقائيًا بإدارة مبادلة النظام لك بحيث لا تحتاج إلى لمس هذا الإعداد الخطير. إذا لم يكن لديك مساحة كافية لمبادلة النظام، فقط تأكد من وجود 40 جيجابايت على الأقل من المساحة الحرة على كل قرص.** سيقوم Microsoft Windows 10/11 تلقائيًا بإنشاء مساحات المبادلة لك. + +أيضًا، إذا حصلت على Microsoft Windows 10/11 من مزود صيني أو روسي غير رسمي، فقد يكونون قد عدّلوا الإعداد الافتراضي لمبادلة النظام للإعلان عن "Windows 10/11 محسّن" (لكنهم في الواقع يجعلون الأمور أسوأ بدلاً من تحسينها). في هذه الحالات، قد تحتاج إلى التحقق يدويًا من أن إعداد مبادلة النظام لديك متوافق مع لقطة الشاشة أعلاه. + +أخيرًا، لاحظ أنك بحاجة إلى إعادة تشغيل الكمبيوتر لتفعيل أي تغييرات في مبادلة النظام. + +### MetadataIncompleteBuffer + +انظر أيضًا إلى القسم: **النموذج تالف (Model corrupted)** + +### PytorchStreamReader failed + +انظر أيضًا إلى القسم: **النموذج تالف (Model corrupted)** + +### النموذج تالف (Model corrupted) + +إذا رأيت "Model Corrupted"، فإن النموذج الخاص بك تالف. سيقوم Fooocus بإعادة تنزيل النماذج التالفة لك إذا كان اتصالك بالإنترنت جيدًا. بخلاف ذلك، يمكنك أيضًا تنزيل النماذج يدويًا. يمكنك العثور على رابط النموذج وموقعه المحلي في وحدة التحكم في كل مرة يتم فيها طلب تنزيل نموذج. + +### UserWarning: The operator 'aten::std_mean.correction' is not currently supported on the DML + +هذا تحذير يمكنك تجاهله. + +### Torch not compiled with CUDA enabled + +أنت لا تتبع دليل التثبيت الرسمي. + +يُرجى عدم الوثوق بتلك البرامج التعليمية الخاطئة على الإنترنت، والوثوق فقط بدليل التثبيت الرسمي. + +### subprocess-exited-with-error + +يُرجى استخدام Python 3.10 + +أيضًا، أنت لا تتبع دليل التثبيت الرسمي. + +يُرجى عدم الوثوق بتلك البرامج التعليمية الخاطئة على الإنترنت، والوثوق فقط بدليل التثبيت الرسمي. + +### SSL: CERTIFICATE_VERIFY_FAILED + +هل تعيش في الصين؟ إذا كانت الإجابة بنعم، فيُرجى التفكير في إيقاف تشغيل VPN، و/أو محاولة تنزيل النماذج يدويًا. + +إذا واجهت هذا الخطأ في مكان آخر من العالم، فقد تحتاج إلى إلقاء نظرة على [هذا البحث](https://www.google.com/search?q=SSL+Certificate+Error). لا يمكننا تقديم دليل محدد جدًا لإصلاح ذلك لأن السبب قد يختلف كثيرًا. + +### CUDA kernel errors might be asynchronously reported at some other API call + +عدد قليل جدًا من الأجهزة تواجه هذه المشكلة. قد يكون السبب معقدًا ولكن عادةً ما يمكن حله باتباع هذه الخطوات: + +1. تأكد من أنك تستخدم الإصدار الرسمي وأحدث إصدار مثبت من [هنا](https://github.com/lllyasviel/Fooocus#download). (بعض الشُعب (forks) والإصدارات الأخرى أكثر عرضة للتسبب في هذه المشكلة.) +2. قم بترقية برنامج تشغيل Nvidia الخاص بك إلى أحدث إصدار. (عادةً يجب أن يكون إصدار برنامج تشغيل Nvidia لديك 53X، وليس 3XX أو 4XX.) +3. إذا استمرت الأمور في عدم العمل، فقد تكون مشكلة مع CUDA 12. يمكنك استخدام CUDA 11 و Xformers لمحاولة حل هذه المشكلة. لقد أعددنا جميع الملفات لك، ويُرجى عدم تثبيت أي CUDA أو بيئة أخرى بنفسك. الطريقة الرسمية الوحيدة للقيام بذلك هي: (1) قم بعمل نسخة احتياطية من مجلد `python_embeded` واحذفه (بالقرب من `run.bat`)؛ (2) قم بتنزيل "previous_old_xformers_env.7z" من [صفحة الإصدارات](https://github.com/lllyasviel/Fooocus/releases/tag/release)، وفك ضغطه، وضع مجلد `python_embeded` المستخرج حديثًا بالقرب من `run.bat` الخاص بك؛ (3) قم بتشغيل Fooocus. +4. إذا لم يعمل بعد، فيُرجى فتح مشكلة (issue) لنلقي نظرة. + +### Found no NVIDIA driver on your system + +يُرجى ترقية برنامج تشغيل Nvidia الخاص بك. + +إذا كنت تستخدم AMD، فيُرجى اتباع دليل التثبيت الرسمي. + +### NVIDIA driver too old + +يُرجى ترقية برنامج تشغيل Nvidia الخاص بك. + +### أنا أستخدم Mac، السرعة بطيئة جدًا. + +قد يحتاج بعض مستخدمي Mac إلى `--disable-offload-from-vram` لتسريع تحميل النموذج. + +إلى جانب ذلك، الدعم الحالي لـ Mac تجريبي جدًا، ونحن نشجع المستخدمين على تجربة Diffusionbee أو Drawingthings أيضًا: فهما مطوران فقط لـ Mac. + +### أنا أستخدم Nvidia بسعة 8 جيجابايت VRAM، أواجه خطأ CUDA Out Of Memory + +هذا خطأ برمجي (BUG). يُرجى إخبارنا في أقرب وقت ممكن. يُرجى فتح مشكلة (issue). انظر أيضًا [المتطلبات الدنيا](https://github.com/lllyasviel/Fooocus/tree/main?tab=readme-ov-file#minimal-requirement). + +### أنا أستخدم Nvidia بسعة 6 جيجابايت VRAM، أواجه خطأ CUDA Out Of Memory + +من المحتمل جدًا أن هذا خطأ برمجي (BUG). يُرجى إخبارنا في أقرب وقت ممكن. يُرجى فتح مشكلة (issue). انظر أيضًا [المتطلبات الدنيا](https://github.com/lllyasviel/Fooocus/tree/main?tab=readme-ov-file#minimal-requirement). + +### أنا أستخدم Nvidia بسعة 4 جيجابايت VRAM مع دعم Float16، مثل RTX 3050، أواجه خطأ CUDA Out Of Memory + +هذا خطأ برمجي (BUG). يُرجى إخبارنا في أقرب وقت ممكن. يُرجى فتح مشكلة (issue). انظر أيضًا [المتطلبات الدنيا](https://github.com/lllyasviel/Fooocus/tree/main?tab=readme-ov-file#minimal-requirement). + +### أنا أستخدم Nvidia بسعة 4 جيجابايت VRAM بدون دعم Float16، مثل GTX 960، أواجه خطأ CUDA Out Of Memory + +دعم GPU بسعة 4 جيجابايت VRAM بدون fp16 صعب للغاية، وقد لا تتمكن من استخدام SDXL. ومع ذلك، لا يزال بإمكانك فتح مشكلة (issue) وإخبارنا. يمكنك تجربة SD1.5 في Automatic1111 أو برامج أخرى لجهازك. انظر أيضًا [المتطلبات الدنيا](https://github.com/lllyasviel/Fooocus/tree/main?tab=readme-ov-file#minimal-requirement). + +### أنا أستخدم AMD GPU على Windows، أواجه خطأ CUDA Out Of Memory + +دعم AMD الحالي تجريبي جدًا لنظام Windows. إذا رأيت هذا، فربما لا يمكنك استخدام Fooocus على هذا الجهاز بنظام Windows. + +ومع ذلك، إذا كنت قادرًا على تشغيل SDXL على نفس الجهاز على أي برنامج آخر، فيُرجى إخبارنا فورًا، وسنقوم بدعمه في أقرب وقت ممكن. إذا لم يقم أي برنامج آخر بتمكين جهازك من تشغيل SDXL على Windows، فليس لدينا الكثير لنقدمه من المساعدة. + +إلى جانب ذلك، دعم AMD على Linux أفضل قليلاً لأنه سيستخدم ROCM. يمكنك أيضًا تجربته إذا كنت ترغب في تغيير نظام التشغيل إلى Linux. انظر أيضًا [المتطلبات الدنيا](https://github.com/lllyasviel/Fooocus/tree/main?tab=readme-ov-file#minimal-requirement). + +### أنا أستخدم AMD GPU على Linux، أواجه خطأ CUDA Out Of Memory + +دعم AMD الحالي لنظام Linux أفضل من دعم Windows، لكنه لا يزال تجريبيًا جدًا. ومع ذلك، إذا كنت قادرًا على تشغيل SDXL على نفس الجهاز على أي برنامج آخر، فيُرجى إخبارنا فورًا، وسنقوم بدعمه في أقرب وقت ممكن. إذا لم يقم أي برنامج آخر بتمكين جهازك من تشغيل SDXL على Windows، فليس لدينا الكثير لنقدمه من المساعدة. انظر أيضًا [المتطلبات الدنيا](https://github.com/lllyasviel/Fooocus/tree/main?tab=readme-ov-file#minimal-requirement). + +### جربتُ علامات مثل --lowvram أو --gpu-only أو --bf16 وما إلى ذلك، ولم تتحسن الأمور؟ + +يُرجى إزالة هذه العلامات إذا كنت قد ضللتك بعض البرامج التعليمية الخاطئة. في معظم الحالات، هذه العلامات تجعل الأمور أسوأ وتسبب المزيد من المشكلات. + +### يصبح Fooocus بطيئًا فجأة ولم أغير أي شيء + +هل تقوم بتشغيل نسختين من Fooocus في نفس الوقت عن طريق الخطأ؟ diff --git a/.github/update_log_ar.md b/.github/update_log_ar.md new file mode 100644 index 0000000000..59005eb0a1 --- /dev/null +++ b/.github/update_log_ar.md @@ -0,0 +1,758 @@ +# سجل تحديثات Fooocus + +هذا المستند يحتوي على سجل التحديثات الكامل لـ Fooocus. + +**للمزيد من التفاصيل حول الإصدار الحالي، راجع:** [fooocus_version.md](fooocus_version.md) + +--- + +# [2.5.5](https://github.com/lllyasviel/Fooocus/releases/tag/v2.5.5) + +* إصلاح مشكلة الرسم الداخلي في Colab عن طريق نقل عبارة استيراد + +# [2.5.4](https://github.com/lllyasviel/Fooocus/releases/tag/v2.5.4) + +* إصلاح التحقق من الصحة لـ default_ip_image_* و default_inpaint_mask_sam_model +* إصلاح تصحيح أخطاء قناع التحسين عند دمجه مع ترتيب الصور +* إصلاح تحميل نقاط التفتيش و LoRAs عند استخدام أدلة متعددة في الإعدادات ثم تبديل الإعدادات المسبقة + +# [2.5.3](https://github.com/lllyasviel/Fooocus/releases/tag/v2.5.3) + +* تحميل الأوزان من ملفات غير safetensors فقط، لمنع حقن التعليمات البرمجية الضارة +* إضافة مربع اختيار لتطبيق/إعادة تعيين الأنماط عند وصف الصور، مع السماح بأنواع محتوى وصف متعددة + +# [2.5.2](https://github.com/lllyasviel/Fooocus/releases/tag/v2.5.2) + +* إصلاح عدم إضافة الطلب الإيجابي عندما لا تحتوي الأنماط على عنصر نائب {prompt} في الطلب الإيجابي +* توسيع إعدادات التهيئة للصورة المدخلة، انظر القائمة في [PR](https://github.com/lllyasviel/Fooocus/pull/3382) + +# [2.5.1](https://github.com/lllyasviel/Fooocus/releases/tag/v2.5.1) + +* تحديث رابط التحميل في ملف readme +* زيادة سرعة تحميل البيانات الوصفية +* إصلاح قراءة البيانات الوصفية من jpeg و jpg و webp (exif) +* إصلاح معالج ما قبل المعالجة للتصحيح +* تحديث السمات وإضافة قسم ميزات الطلب المضمن إلى readme +* إضافة مربع اختيار وإعدادات ومعالجة لحفظ الصورة المحسّنة النهائية فقط. استخدم الإعداد `default_save_only_final_enhanced_image`، القيمة الافتراضية False. +* إضافة فرز الصور النهائية عند تفعيل التحسين. استخدم الوسيط `--disable-enhance-output-sorting` لتعطيله. + +# [2.5.0](https://github.com/lllyasviel/Fooocus/releases/tag/v2.5.0) + +هذا الإصدار يتضمن تحديثات متنوعة للحزم. إذا لم يعمل التحديث التلقائي، يمكنك القيام بأحد الإجراءات التالية: +1. افتح نافذة طرفية في مجلد Fooocus (مكان config.txt) وقم بتشغيل `git pull` +2. تحديث الحزم + - ويندوز (التثبيت عبر ملف مضغوط): افتح نافذة طرفية في مجلد Fooocus (مكان config.txt) `..\python_embeded\python.exe -m pip install -r .\requirements_versions.txt` (ويندوز باستخدام بايثون المضمن، طريقة تثبيت الملف المضغوط) أو قم بتحميل Fooocus مرة أخرى (الملف المضغوط المرفق مع هذا الإصدار) + - أنظمة أخرى: قم بتحديث الحزم يدويًا باستخدام `python.exe -m pip install -r requirements_versions.txt` أو استخدم صورة Docker + +--- + +* تحديث تبعيات بايثون، إضافة segment_anything +* إضافة ميزة التحسين (Enhance)، التي تقدم خطوات تحسين سهلة للصور (مشابه لـ adetailer، لكنها تعتمد على اكتشاف ديناميكي للصور بدلاً من نماذج اكتشاف أقنعة محددة). انظر [التوثيق](https://github.com/lllyasviel/Fooocus/discussions/3281). +* إعادة كتابة كود العامل غير المتزامن، جعل الكود أكثر قابلية لإعادة الاستخدام للسماح بالتكرارات وتحسين قابلية إعادة الاستخدام +* تحسين إخفاء الصور باستخدام GroundingDINO و SAM +* إصلاح مشكلة تتبع عداد إصدار الموتر للاستدلال في GroundingDINO بعد استخدام Enhance (انظر [النقاش](https://github.com/lllyasviel/Fooocus/discussions/3213)) +* نقل مربعي اختيار Enable Mask Upload و Invert Mask When Generating من Developer Debug Mode إلى Inpaint Or Outpaint +* إضافة ذاكرة تخزين مؤقتة دائمة للنموذج للبيانات الوصفية. استخدم `--rebuild-hash-cache X` (X = عدد صحيح، عدد أنوية المعالج، الكل افتراضيًا) لإعادة بناء ذاكرة التخزين المؤقتة يدويًا لجميع التجزيفات غير المخزنة +* إعادة تسمية `--enable-describe-uov-image` إلى `--enable-auto-describe-image`، تعمل الآن أيضًا مع تحميل صورة التحسين +* إعادة تسمية مربع الاختيار `Enable Mask Upload` إلى `Enable Advanced Masking Features` للإشارة بشكل أفضل إلى ميزة التوليد التلقائي للقناع +* الحصول على مسار ملف نموذج الرفع عن طريق استدعاء downloading_upscale_model() لضمان وجود النموذج +* إعادة تسمية عناوين الألسنة والترجمات من المفرد إلى الجمع +* إعادة تسمية document إلى documentation +* تحديث النماذج الافتراضية إلى أحدث الإصدارات + * animaPencilXL_v400 => animaPencilXL_v500 + * DreamShaperXL_Turbo_dpmppSdeKarras => DreamShaperXL_Turbo_v2_1 + * SDXL_FILM_PHOTOGRAPHY_STYLE_BetaV0.4 => SDXL_FILM_PHOTOGRAPHY_STYLE_V1 +* إضافة إعداد مسبق لـ pony_v6 (باستخدام ponyDiffusionV6XL) +* إضافة نمط `Fooocus Pony` +* إضافة معيد عينات restart ([ورقة بحثية](https://arxiv.org/abs/2306.14878)) +* إضافة خيار إعداد default_inpaint_engine_version، يضبط محرك الرسم الداخلي لـ pony_v6 و playground_v2.5 على None لتحسين النتائج (غير متوافق مع محرك الرسم الداخلي) +* إضافة وظيفة محرر الصور لتحميل القناع (نفس الرسم الداخلي، الآن يعيد تغيير الحجم بشكل صحيح ويسمح بإنشاء أقنعة أكثر تفصيلاً) + +# [2.4.3](https://github.com/lllyasviel/Fooocus/releases/tag/v2.4.3) + +* إصلاح أداة ضبط alphas_cumprod لمعيد عينات TCD +* إضافة محلل لسلاسل متغيرات البيئة لأنواع قيم الإعدادات المتوقعة للسماح بتجاوز جميع مفاتيح الإعدادات غير المرتبطة بالمسارات + +# [2.4.2](https://github.com/lllyasviel/Fooocus/releases/tag/v2.4.2) + +* إصلاح بعض الأخطاء الصغيرة (جدولة tcd عندما يكون gamma = 0، chown في Dockerfile، تحديث وسائط cmd في readme، ترجمة نسب الأبعاد، vae الافتراضي بعد إعادة تحميل الملف) +* إصلاح استبدال LoRA الأداء عند تحميل البيانات من سجل التاريخ والطلب المضمن +* إضافة دعم وإعداد مسبق لـ playground v2.5 (يعمل فقط مع أداء Quality أو Speed، استخدم مع الجدولة edm_playground_v2) +* جعل مربعات النص (بما في ذلك الطلب الإيجابي) قابلة لتغيير الحجم +* إخفاء الصور الوسيطة عندما يؤدي أداء Gradio إلى اختناق عملية التوليد (Extreme Speed, Lightning, Hyper-SD) + +# [2.4.1](https://github.com/lllyasviel/Fooocus/releases/tag/v2.4.1) + +* إصلاح بعض الأخطاء الصغيرة (مثل ضبط قيمة clip skip الافتراضية من 1 إلى 2، إضافة التحقق من النوع لوظيفة تحديث js لنسب الأبعاد) +* إضافة بناء Docker آلي عند الدفع إلى الفرع الرئيسي، موسوم بـ `edge`. انظر [صور Docker المتاحة](https://github.com/lllyasviel/Fooocus/pkgs/container/fooocus). + +# [2.4.0](https://github.com/lllyasviel/Fooocus/releases/tag/v2.4.0) + +* تغيير عناصر تبويب الإعدادات لتكون أكثر تراصًا +* إضافة شريط تمرير clip skip +* إضافة اختيار VAE مخصص +* إضافة نمط جديد "Random Style" +* تحديث نموذج الأنمي الافتراضي إلى animaPencilXL_v310 +* إضافة زر لإعادة الاتصال بالواجهة بعد تعطل Fooocus دون الحاجة إلى إعادة تكوين كل شيء (لا حاجة لإعادة تحميل الصفحة) +* إضافة أداء "hyper-sd" (استنادًا إلى [Hyper-SDXL 4 step LoRA](https://huggingface.co/ByteDance/Hyper-SD/blob/main/Hyper-SDXL-4steps-lora.safetensors)) +* إضافة جدولة [AlignYourSteps](https://research.nvidia.com/labs/toronto-ai/AlignYourSteps/) من Nvidia +* إضافة معيد عينات وجدولة [TCD](https://github.com/jabir-zheng/TCD) (استنادًا إلى sgm_uniform) +* إضافة حجب الصور غير اللائقة NSFW (يعطل معاينة الصورة الوسيطة أثناء التوليد). اضبط قيمة الإعداد `default_black_out_nsfw` على True لتفعيله دائمًا. +* إضافة وسيط `--enable-describe-uov-image` لوصف الصور المرفوعة تلقائيًا للرفع +* إضافة مراجع طلب lora المضمنة مع دعم المجلدات الفرعية، مثال على طلب: `colorful bird ` +* إضافة توصية بالحجم ونسبة الأبعاد عند وصف الصورة +* إضافة منتقي ألوان فرشاة الرسم الداخلي، مفيد عندما يكون لون الصورة وفرشاة القناع متماثلين +* إضافة بناء صورة Docker آلي باستخدام Github Actions عند كل إصدار +* إضافة الطلبات الأولية الكاملة إلى سجلات التاريخ +* تغيير ملكية الكود من @lllyasviel إلى @mashb1t للإشعار الآني للقضايا / طلبات السحب + +# [2.3.1](https://github.com/lllyasviel/Fooocus/releases/tag/2.3.1) + +* إزالة الطلب الإيجابي من بادئة الأنمي لعدم إعادة تعيين الطلب بعد تبديل الإعدادات المسبقة +* إصلاح إعادة تعيين رقم الصورة إلى 1 عند تبديل الإعداد المسبق، الآن لا يعاد تعيينه +* إصلاح حساب أبعاد الرسم الخارجي عند التمدد لليسار/اليمين +* إصلاح توافق LoRA لـ LoRAs في مخطط البيانات الوصفية a1111 + +# [2.3.0](https://github.com/lllyasviel/Fooocus/releases/tag/2.3.0) + +* إضافة أداء "lightning" (استنادًا إلى [SDXL-Lightning 4 step LoRA](https://huggingface.co/ByteDance/SDXL-Lightning/blob/main/sdxl_lightning_4step_lora.safetensors)) +* إضافة اختيار الإعداد المسبق لواجهة المستخدم، قم بتعطيله باستخدام الوسيط `--disable-preset-selection`. استخدم `--always-download-new-model` لتحميل النماذج المفقودة عند تبديل الإعداد المسبق. +* تحسين تناسق تبديل الوجوه عن طريق التبديل لاحقًا في العملية إلى المحسن (الاصطناعي) +* إضافة تنظيف المسار المؤقت عند بدء التشغيل +* إضافة دعم للمجلدات الفرعية للبدائل (wildcards) +* إضافة تخطيط من عمودين قابل للتمرير للأنماط لتحسين الهيكل +* تحسين احتياجات موارد Colab لمثيلات T4 (افتراضيًا)، تم اختباره بنجاح مع جميع ميزات الصور المرفوعة +* تحسين الإعداد المسبق للأنمي، يستخدم الآن نمط `Fooocus Semi Realistic` بدلاً من `Fooocus Negative` (صور أقل مظهرًا رطبًا) + +# [2.2.1](https://github.com/lllyasviel/Fooocus/releases/tag/2.2.1) + +* إصلاح بعض الأخطاء الصغيرة (مثل شبكة الصور، الرفع السريع 2x، عرض وزن LoRA في Firefox) +* السماح بأوزان الطلب في صيغة المصفوفة +* إضافة تجاوز الخطوات ومخطط البيانات الوصفية إلى سجل التاريخ + +# [2.2.0](https://github.com/lllyasviel/Fooocus/releases/tag/2.2.0) + +* عزل كل عملية توليد صور للسماح حقيقيًا للاستخدام متعدد المستخدمين +* إضافة دعم المصفوفات، يغير الطلب الرئيسي عند زيادة رقم الصورة. الصيغة: `[[red, green, blue]] flower` +* إضافة بيانات وصفية اختيارية للصور، مما يسمح بإعادة توليدها وتعديلها لاحقًا بنفس المعايير +* يدعم الآن توليد صور PNG و JPG و WEBP الأصلية +* إضافة دعم Docker + +# [2.1.865](https://github.com/lllyasviel/Fooocus/releases/tag/2.1.865) + +* إصلاحات أخطاء متنوعة +* إضافة المصادقة إلى --listen + +# 2.1.864 + +* قائمة نماذج جديدة. انظر أيضًا المناقشات. + +# 2.1.861 (تحديث مطلوب) + +(21 ديسمبر 2023) مرحبًا جميعًا، سيتم إيقاف تحديث الميزات في Fooocus لمدة أسبوعين أو ثلاثة أسابيع تقريبًا لأن لدينا بعض المهام الأخرى. نراكم قريبًا وسنعود في منتصف أو أواخر يناير. ومع ذلك، قد تظلون ترون تحديثات إذا كان المتعاونون الآخرون يصلحون الأخطاء أو يحلون المشكلات. + +* عرض معاينة الصورة في النمط عند تمرير الماوس. + +# 2.1.860 (تحديث مطلوب) + +* السماح برفع قناع الرسم الداخلي في وضع المطور. + +# 2.1.857 (تحديث مطلوب) + +* البدء في دعم بطاقة AMD GPU بسعة 8 جيجابايت على ويندوز. + +# 2.1.854 + +* إضافة زر لنسخ المعايير إلى الحافظة في السجل. +* السماح للمستخدمين بتحميل المعايير مباشرة عن طريق لصقها في الطلب. + +# 2.1.853 + +* إضافة أنماط Marc K3nt3L. شكرًا [Marc K3nt3L](https://github.com/K3nt3L)! + +# 2.1.852 + +* نظام سجل جديد: يستخدم نظام السجل الآن الجداول. إذا كان هذا يعطل بعض امتدادات المتصفح الأخرى أو تطويرات javascript، انظر أيضًا [استخدام الإصدار السابق](https://github.com/lllyasviel/Fooocus/discussions/1405). + +# 2.1.846 + +* أبلغ العديد من المستخدمين أن جودة الصورة مختلفة عن 2.1.824. راجعنا جميع الأكواد وأصلحنا العديد من مشكلات الدقة في 2.1.846. + +# 2.1.843 + +* العديد من التحسينات على Canvas. شكرًا لمؤلف CanvasZoom! + +# 2.1.841 + +* صيانة الخلفية. +* إصلاح بعض التجمد المحتمل بعد عدم تطابق النموذج. +* إصلاح تعطل عند cfg=1 عند استخدام الإعداد المسبق للأنمي. +* إضافة بعض الإرشادات لاستكشاف مشكلة "CUDA kernel errors asynchronously". +* إصلاح مشكلة جهاز الرسم الداخلي في وضع `--always-gpu`. + +# 2.1.839 + +* صيانة بعض أكواد الحساب في الخلفية لتحسين الكفاءة. +* إضافة ملاحظة حول تغيير البذور المكسور. + +**تغيير البذور المكسور**: لاحظ أن 2.1.825-2.1.839 هو تغيير بذور مكسور. تم تغيير النقطة العائمة للحساب وقد تعطي بعض البذور نتائج مختلفة قليلاً. التغيير الطفيف في 2.1.825-2.1.839 لا يؤثر على جودة الصورة. انظر أيضًا [استخدام الإصدار السابق](https://github.com/lllyasviel/Fooocus/discussions/1405). + +# 2.1.837 + +* إصلاح بعض المشكلات المتعلقة بالدقة. + +# 2.1.836 + +* تجنب تحميل blip tokenizer من torch hub + +# 2.1.831 + +* صورة مدخلة -> وصف (Midjourney Describe) + +# 2.1.830 + +* دعم SegmindVega. + +# 2.1.829 + +* تغيير شجرة SDE إلى CPU على AMD/DirectMl لتجنب المشكلات المحتملة. + +# 2.1.828 + +* السماح بتعطيل تحليلات gradio. +* استخدام جدول html في السجل. +* إصلاح بعض مشكلات SSL. + +# 2.1.826 + +* خلفية جديدة. +* دعم FP8 (انظر أيضًا قائمة أوامر cmd الجديدة في Readme، على سبيل المثال --unet-in-fp8-e4m3fn و --unet-in-fp8-e5m2). +* إصلاح بعض مشكلات MPS. +* دعم GLoRA. +* جدولة Turbo. + +# 2.1.823 + +(26 نوفمبر 2023) مرحبًا جميعًا، سيتم إيقاف تحديث الميزات في Fooocus لمدة أسبوعين أو ثلاثة أسابيع تقريبًا لأن لدينا بعض المهام الأخرى. نراكم قريبًا وسنعود في منتصف ديسمبر. ومع ذلك، قد تظلون ترون تحديثات إذا كان المتعاونون الآخرون يصلحون الأخطاء أو يحلون المشكلات. + +* إصلاح مشكلة محتملة عندما تحتوي LoRAs على مفاتيح clip ويريد المستخدم تحميل تلك LoRAs إلى المحسنات. + +# 2.1.822 + +* نظام رسم داخلي جديد (انتهاء اختبار بيتا للرسم الداخلي). + +# 2.1.821 + +* واجهة مستخدم جديدة لـ LoRAs. +* نظام إعدادات مسبقة محسّن: مفاتيح وأسماء ملفات الإعدادات المسبقة موحدة. +* نظام جلسات محسّن: الآن يمكن لعدة مستخدمين استخدام Fooocus واحد في نفس الوقت دون رؤية نتائج الآخرين. +* تحسين بعض الحسابات المتعلقة بدقة النموذج. +* تحسين نظام تحميل الإعدادات مع طباعة سهلة للمستخدم. + +# 2.1.820 + +* دعم "--disable-image-log" لمنع كتابة الصور والسجلات على القرص الصلب. + +# 2.1.819 + +* السماح بتعطيل المعاينة في أدوات المطور. + +# 2.1.818 + +* إصلاح فشل تحميل lora الإعداد المسبق عندما يكون الوزن بالضبط واحدًا. + +# 2.1.817 + +* دعم "--theme dark" و "--theme light". +* إضافة ملفات إعدادات مسبقة "default" و "lcm"، هذه الإعدادات موجودة ولكنها لن تنشئ ملفات مشغل (لن يتم عرضها على المستخدمين) للحفاظ على نظافة نقطة الدخول. "--preset lcm" يعادل اختيار "Extreme Speed" في واجهة المستخدم، ولكنه سيسهل على الأرجح نشر بعض الخدمات عبر الإنترنت. + +# 2.1.815 + +* LoRAs متعددة في الإعداد المسبق. + +# 2.1.814 + +* السماح باستخدام الإعداد المسبق السابق لـ SAI SDXL الرسمي عن طريق تعديل الوسائط إلى '--preset sai'. ~لاحظ أن هذا الإعداد المسبق سيضبط محرك الرسم الداخلي إلى الإصدار v1 السابق للحصول على نفس النتائج كما في السابق. لتغيير محرك الرسم الداخلي إلى v2.6، استخدم أدوات المطور -> محرك الرسم الداخلي -> v2.6.~ (تحديث: لم يعد هذا ضروريًا بعد بعض الاختبارات.) + +# 2.1.813 + +* السماح للإعداد المسبق بتعيين محرك الرسم الداخلي الافتراضي. + +# 2.1.812 + +* السماح للإعداد المسبق بتعيين الأداء الافتراضي. +* معيد عينات heunpp2. + +# 2.1.810 + +* إضافة تلميحات إلى config_modification_tutorial.txt +* إزالة نسب الأبعاد المعدلة من قبل المستخدمين في قوالب I18N الإنجليزية، لكنها ستظل تُقرأ كما في السابق. +* إصلاح مشكلة ترتيب الأنماط مرة أخرى (ربما يجب تجربة Gradio 4.0 لاحقًا). +* تحديث قوالب I18N الإنجليزية بمفاتيح إضافية. + +# 2.1.809 + +* إصلاح بعض مشكلات الترتيب. + +# 2.1.808 + +* نسب الأبعاد تظهر الآن نسب الأبعاد. +* إضافة بحث في الأنماط. +* إضافة ترتيب/تنظيم/مفضلات الأنماط. + +# 2.1.807 + +* انقر على الصورة لرؤيتها بملء الشاشة. + +# 2.1.806 + +* إصلاح بعض مشكلات lora المتعلقة بـ clip. + +# 2.1.805 + +* واجهة مستخدم متجاوبة للشاشات الصغيرة. +* إضافة تخطي المعالج المسبق في أدوات المطور. + +# 2.1.802 + +* تغيير محرك الرسم الداخلي الافتراضي إلى v2.6. لا يزال بإمكانك استخدام محرك الرسم الداخلي v1 في أدوات المطور. +* إصلاح بعض مشكلات VRAM. + +# 2.1.799 + +* إضافة وضع أداء 'Extreme Speed' (استنادًا إلى LCM). لم تعد الإعدادات المعقدة السابقة ضرورية الآن. + +# 2.1.798 + +* إضافة جدولة lcm - قد تحتاج LCM إلى ضبط كل من معيد العينات والجدولة على "lcm". بخلاف ذلك، انظر الوصف في سجلات 2.1.782. + +# 2.1.797 + +* إصلاح بعض مشكلات التبعية مع facexlib و filterpy. + +# 2.1.793 + +* إضافة العديد من نصوص javascript لتحسين تجربة المستخدم. الآن سيشاهد المستخدمون ذوو الشاشات الصغيرة اللوحة الكاملة دائمًا دون الحاجة إلى التمرير. + +# 2.1.790 + +* تبديل الوجوه (بما يتماشى مع Midjourney InsightFace): صورة مدخلة -> طلب صورة -> متقدم -> FaceSwap +* الأداء عالٍ جدًا. استخدمه بحذر ولا تستخدمه أبدًا في أي أمور غير قانونية! +* هذا التنفيذ سيقوم بقص الوجوه لك ولست بحاجة إلى قص الوجوه قبل إدخال الصور في Fooocus. (إذا كنت تقوم سابقًا بقص الوجوه يدويًا من الصور لبرامج أخرى، فلن تحتاج إلى فعل ذلك الآن في Fooocus.) + +# 2.1.788 + +* إصلاح بعض المشكلات الرياضية في الإصدارات السابقة. +* محرك الرسم الداخلي v2.6 ينضم إلى اختبار بيتا لنماذج الرسم الداخلي لـ Fooocus. استخدمه في أدوات المطور -> محرك الرسم الداخلي -> v2.6. + +# 2.1.785 + +* `user_path_config.txt` أصبح مهملاً منذ 2.1.785. إذا كنت تستخدمه الآن، فيرجى استخدام `config.txt` الجديد بدلاً منه. انظر أيضًا التوثيق الجديد في Readme. +* المسارات في `user_path_config.txt` ستظل تُحمّل في الإصدارات الأخيرة، ولكن سيتم إزالتها قريبًا. +* نستخدم طريقة سهلة جدًا للمستخدم لنقل إعدادات المسار الخاصة بك من `user_path_config.txt` إلى `config.txt` تلقائيًا، وعادة لا تحتاج لفعل أي شيء. +* `config.txt` الجديد لن يحفظ القيم الافتراضية أبدًا، لذا لن تمنع ملفات الإعدادات القديمة تغييرات القيم الافتراضية في البرامج النصية. + +# 2.1.782 + +2.1.782 هو تحديث رئيسي لنظام LoRA جديد يدعم كلاً من LoRAs SDXL و LoRAs SD1.5. + +الآن عند تحميل lora، سيحدث ما يلي: + +1. محاولة تحميل lora إلى النموذج الأساسي، إذا فشل (عدم تطابق النموذج)، ثم محاولة تحميل lora إلى المحسن. +2. محاولة تحميل lora إلى المحسن، إذا فشل (عدم تطابق النموذج) ثم لا تفعل شيئًا. + +بهذه الطريقة، يمكن لـ Fooocus 2.1.782 الاستفادة من جميع النماذج و loras من CivitAI مع نظامي SDXL و SD1.5، باستخدام خوارزمية التبديل الفريدة لـ Fooocus، لتحقيق نتائج عالية الجودة للغاية (على الرغم من أن الإعداد الافتراضي عالي الجودة بالفعل)، خاصة في بعض حالات استخدام الأنمي، إذا أراد المستخدمون حقًا اللعب بكل هذه الأشياء. + +مؤخرًا، طور المجتمع أيضًا LCM loras. يمكن للمستخدمين استخدامها عن طريق تعيين معيد العينات على 'LCM'، والجدولة على 'sgm_uniform' (تحديث في 2.1.798: يجب أن تكون الجدولة أيضًا "lcm")، والتجاوز القسري لخطوة أخذ العينات على 4 إلى 8، وتوجيه CFG على 1.0، في أدوات المطور. لا تنس تغيير وزن LCM lora إلى 1.0 (كثير من الناس ينسون هذا ويبلغون عن حالات فشل). أيضًا، اضبط المحسن على None. إذا كانت ردود فعل LCM في مجتمع الفنانين جيدة (وليس ردود الفعل في مجتمع مبرمجي Stable Diffusion)، فقد يضيف Fooocus بعض الاختصارات الأخرى في المستقبل. + +# 2.1.781 + +(26 أكتوبر 2023) مرحبًا جميعًا، سيتم إيقاف تحديث الميزات في Fooocus (حقًا، حقًا، هذه المرة) لمدة أسبوعين أو ثلاثة أسابيع تقريبًا porque لدينا حقًا بعض المهام الأخرى. شكرًا لحماسكم جميعًا (ونحن في الواقع استمررنا في التحديث حتى بعد إعلان التوقف الأخير قبل أسبوع، بسبب العديد من الردود الرائعة) - نراكم قريبًا وسنعود في منتصف نوفمبر. ومع ذلك، قد تظلون ترون تحديثات إذا كان المتعاونون الآخرون يصلحون الأخطاء أو يحلون المشكلات. + +* تعطيل المحسن لتسريع العمل عندما يقوم مستخدمون جدد بتعيين نفس النموذج للنموذج الأساسي والمحسن عن طريق الخطأ. + +# 2.1.779 + +* تعطيل شبكة الصور افتراضيًا لأن العديد من المستخدمين أبلغوا عن مشكلات في الأداء. على سبيل المثال، https://github.com/lllyasviel/Fooocus/issues/829 وما إلى ذلك. ستسبب شبكة الصور مشكلة عندما لا يكون قرص المستخدم الصلب سريعًا للغاية، أو عندما لا يكون اتصال الإنترنت جيدًا جدًا (مثل التشغيل عن بُعد). تم نقل الخيار إلى أدوات المطور إذا أراد المستخدمون استخدامه. سنلقي نظرة عليه لاحقًا. + +# 2.1.776 + +* دعم Ctrl+Up/Down Arrow لتغيير أوزان التركيز في الطلب. + +# 2.1.750 + +* واجهة مستخدم جديدة: الآن يمكنك رؤية كل صورة أثناء التوليد. + +# 2.1.743 + +* تحسين GPT2 عن طريق إزالة بعض الرموز المميزة التي قد تفسد الأنماط. + +# 2.1.741 + +تحديثات الأنماط: + +* "Default (Slightly Cinematic)" أعيدت تسميته إلى "Fooocus Cinematic". +* "Default (Slightly Cinematic)" أُزيل من اختيارات الأنماط الافتراضية. +* إضافة "Fooocus Sharp". يجمع هذا النمط بين العديد من طلبات CivitAI التي تقلل من ضبابية SDXL وتحسن الوضوح بطريقة طبيعية نسبيًا. +* إضافة "Fooocus Enhance". يستخدم هذا النمط بشكل أساسي [الطلبات السلبية الافتراضية الشائعة من JuggernautXL](https://civitai.com/models/133005) وبعض الكلمات المحسّنة الأخرى. ثبت أن الطلب السلبي لـ JuggernautXL فعال جدًا في العديد من منشورات الصور الأخيرة على CivitAI لتحسين JuggernautXL والعديد من النماذج الأخرى. +* "Fooocus Sharp" و "Fooocus Enhance" و "Fooocus V2" تصبح المجموعة الافتراضية الجديدة من الأنماط. +* إزالة النص الافتراضي في منطقة إدخال "negative prompt" لأنه لم يعد ضروريًا الآن. +* يمكنك إعادة إنتاج النتائج السابقة باستخدام "Fooocus Cinematic". +* "Fooocus Sharp" و "Fooocus Enhance" قد تخضعان لمراجعات طفيفة في التحديثات المستقبلية. + +# 2.1.739 + +* إضافة دعم للمصادقة في وضع --share (عبر auth.json). + +# 2.1.737 + +* السماح بتخصيص الدقة في الإعدادات. + +تعديل هذا سيجعل النتائج أسوأ إذا كنت لا تفهم كيف يعمل الترميز الموضعي (Positional Encoding). + +لقد تم تحذيرك. + +إذا كنت لا تعرف لماذا يجب تحويل الأرقام باستخدام العديد من دوال Sin و Cos (نعم، تلك الدوال المثلثية التي تعلمتها في المدرسة الإعدادية) قبل إدخالها إلى SDXL، فإننا لا نشجعك على تغيير هذا - ستصبح ضحية للترميز الموضعي. من المرجح أن تعاني من أداة سهلة الفشل، بدلاً من الحصول على تحكم أكبر. + +معرفتك المكتسبة من SD1.5 (على سبيل المثال، أرقام الدقة مقسومة على 8 أو 64 كافية لـ UNet) لا تعمل في SDXL. يستخدم SDXL الترميز الموضعي. لا يستخدم SD1.5 الترميز الموضعي. إنهما مختلفان تمامًا. + +معرفتك المكتسبة من مصادر أخرى (على سبيل المثال، الدقة حول 1024 كافية لـ SDXL) خاطئة. يستخدم SDXL الترميز الموضعي. الأشخاص الذين يقولون "جميع الدقات حول 1024 جيدة" لا يفهمون ما هو الترميز الموضعي. إنهم لا يضللون عن قصد. إنهم فقط لا يدركون حقيقة أن SDXL يستخدم الترميز الموضعي. + +الرقم 1152 يجب أن يكون بالضبط 1152، وليس 1152-1، وليس 1152+1، وليس 1152-8، وليس 1152+8. الرقم 1152 يجب أن يكون بالضبط 1152. فقط ابحث في Google عن什么是 الترميز الموضعي. + +مرة أخرى، إذا كنت لا تفهم كيف يعمل الترميز الموضعي، فقط لا تغير أرقام الدقة. + +# 2.1.735 + +* إصلاح العديد من المشكلات المتعلقة بـ torch autocast. + +# 2.1.733 + +* زيادة نطاق البذور العشوائية المسموح به. + +# 2.1.728 + +* إصلاح بعض المشكلات العددية المحتملة منذ 2.1.723 + +# 2.1.723 + +* تحسين Fooocus Anime قليلاً باستخدام صيغة تحسين SD1.5 أفضل. + +# 2.1.722 + +* الآن من الممكن ترجمة 100% من جميع النصوص في واجهة المستخدم. + +# 2.1.721 + +* إضافة language/en.json لتسهيل الترجمة. + +# 2.1.720 + +* إضافة تكبير/تصغير اللوحة للوحة الرسم الداخلي +* إصلاح مشكلة اقتصاص الصورة في واجهة المستخدم عندما تكون الصورة المرفوعة واسعة جدًا. + +# 2.1.719 + +* I18N + +# 2.1.718 + +* تصحيح معالجة الشرطة في أسماء البدائل، المزيد من البدائل (extended-color). + +# 2.1.717 + +* تصحيح عرض الطلبات متعددة الأسطر في السجل الخاص. + +# 2.1.716 + +* إضافة دعم للبدائل المتداخلة، المزيد من البدائل (flower, color_flower). + +# 2.1.714 + +* إصلاح مشكلات الدقة. + +# 2.1.712 + +* تنظيف السجل الخاص (معظم المستخدمين لن يحتاجوا معلومات حول الطلبات الأولية). + +# 2.1.711 + +* إضافة المزيد من المعلومات حول الطلبات في السجل الخاص. +* جعل البدائل في الطلب السلبي تستخدم بذرة مختلفة. + +# 2.1.710 + +* إضافة معلومات حول استخدام البدائل في سجل وحدة التحكم. + +# 2.1.709 + +* السماح بتغيير القيم الافتراضية لمربع الاختيار المتقدم ورقم الصورة. + +# 2.1.707 + +* تحديث Gradio إلى v3.41.2. + +# 2.1.703 + +* إصلاح العديد من المشكلات السابقة المتعلقة بالرسم الداخلي. + +# 2.1.702 + +* تصحيح قراءة الطلب السلبي الفارغ من الإعدادات (لا ينبغي أن يتحول إلى None). + +# 2.1.701 + +* تحديث عقدة FreeU إلى v2 (يعطي نتائج أقل طهوًا زائدًا). + +# 2.1.699 + +* تعطيل إدارة الذاكرة الذكية (يحل بعض مشكلات الذاكرة). + +# 2.1.698 + +* إضافة دعم تحميل ملفات النموذج من المجلدات الفرعية. + +# 2.1.696 + +* تحسين تنفيذ البدائل (استخدام نفس البديل مرات متعددة سيعيد الآن قيمًا مختلفة). + +**(18 أكتوبر 2023) مرة أخرى، سيتم إيقاف تحديث الميزات في Fooocus لمدة أسبوعين أو ثلاثة أسابيع تقريبًا لأن لدينا بعض المهام الأخرى - سنعود في أوائل أو منتصف نوفمبر. ومع ذلك، قد تظلون ترون تحديثات إذا كان المتعاونون الآخرون يصلحون الأخطاء أو يحلون المشكلات.** + +# 2.1.695 (إصلاح عاجل مطلوب للخلل) + +* تقليل استخدام 3.4 جيجابايت من RAM عند تبديل النموذج الأساسي. +* تقليل استخدام 372 ميجابايت من VRAM في فك تشفير VAE بعد استخدام نموذج التحكم في طلب الصورة. +* لاحظ أن ComfyUI الرسمي (d44a2de) سينفد من VRAM عند استخدام sdxl و control-lora على 2060 6GB التي لا تدعم float16 بدقة 1024. نجح Fooocus 2.1.695 في إخراج الصور دون OOM باستخدام نفس الأجهزة تمامًا. + +(17 أكتوبر 2023) إعلان إيقاف التحديث. + +# 2.1.693 + +* وضع الأنماط المخصصة قبل الأنماط المحددة مسبقًا. +* تجنب الخلط بين الإعداد المسبق Fooocus Anime ونمط Fooocus Anime (تمت إعادة تسمية نمط Fooocus Anime إلى Fooocus Masterpiece لأنه لا يجعل الصور تبدو أنمي إذا لم يتم استخدامه مع الإعداد المسبق Fooocus Anime). +* إصلاح بعض الأخطاء الصغيرة في تركيز الطلب على الفواصل في الإعداد المسبق Fooocus Anime. +* دعم وتوثيق قواعد التضمين (وقواعد البدائل). +* هذا الإصدار هو إصدار مستقر نسبيًا والعديد من الميزات محددة الآن. + +# 2.1.687 + +* إضافة دعم للبدائل (باستخدام ملفات من مجلد wildcards - جرب طلبات مثل `__color__ sports car` مع بذور مختلفة). + +# 2.1.682 + +* إضافة دعم للأنماط المخصصة (يتم تحميلها من ملفات JSON موضوعة في مجلد sdxl_styles). + +# 2.1.681 + +* إضافة دعم لمفتاح الاختصار للتوليد (CTRL+ENTER). +* إضافة دعم للتوليد المستمر (RMB على زر Generate). +* إضافة دعم لتشغيل صوت عند انتهاء التوليد ('notification.ogg' أو 'notification.mp3'). + +# 2.1.62 + +* نظام الإعدادات المسبقة. إضافة دعم للأنمي والواقعي. + +# 2.1.52 + +* إزالة تبعية pygit2 (توقع التحديث التلقائي) حتى لا يواجه الأشخاص مشكلات رفض الإذن أبدًا. + +# 2.1.50 + +* البدء في دعم sd1.5 كمحسّن. هذه الطريقة تقيس sigmas بناءً على مقياس SD15/XL الكامن وربما هي الطريقة الأكثر صحة للقيام بذلك. سأكتب مناقشة قريبًا. + +# 2.1.25 + +دعم AMD على لينكس وويندوز. + +# 2.1.0 + +* طلب الصورة +* إكمال جدول "Moving from Midjourney" + +# 2.0.85 + +* تسريع مرة أخرى + +# 2.0.80 + +* تحسين جدولة توجيه ADM ومحاكاة CFG لجودة بصرية أفضل في مجال التردد العالي والأجسام الصغيرة. + +# 2.0.80 + +* إعادة صياغة العديد من التصحيحات وبعض تفاصيل واجهة المستخدم. +* تسريع المعالجة. +* نقل Colab إلى فرع مستقل. +* تنفيذ مقياس CFG وتصحيح TSNR عندما يكون CFG أكبر من 10. +* تنفيذ وضع المطور مع المزيد من الخيارات للتصحيح. + +### 2.0.72 + +(21 سبتمبر 2023) سيتم إيقاف تحديث الميزات في Fooocus لمدة أسبوعين أو ثلاثة أسابيع تقريبًا لأن لدينا بعض الأحداث والسفر - سنعود في أوائل أو منتصف أكتوبر. + +### 2.0.72 + +* السماح للمستخدمين باختيار مسار النماذج. + +### 2.0.65 + +* إصدار نموذج الرسم الداخلي. + +### 2.0.50 + +* تنفيذ التباين/الرفع (شريط أدوات Midjourney). + +### 2.0.16 + +* تنفيذ نظام الذاكرة الافتراضية. الآن يمكن لـ Colab تشغيل كل من النموذج الأساسي ونموذج المحسن مع 7.8 جيجابايت RAM + 5.3 جيجابايت VRAM، ولا يتعطل أبدًا. +* إذا كنت محظوظًا بما يكفي لقراءة هذا السطر، ضع في اعتبارك أن ComfyUI لا يمكنها فعل هذا. من المعقول جدًا أن Fooocus أكثر تحسينًا لأنه يحتاج فقط للتعامل مع خط أنابيب ثابت، بينما تحتاج ComfyUI إلى النظر في خطوط أنابيب عشوائية. +* ولكن إذا نظرنا فقط إلى تحسين هذا الحمل الثابت، بعد 2.0.16، أصبح Fooocus أكثر تطبيق SDXL تحسينًا، متجاوزًا ComfyUI. + +### 2.0.0 + +* إصدار V2. +* إعادة كتابة كاملة لخط أنابيب معالجة النصوص (جودة صورة أعلى وفهم أفضل للطلبات). +* دعم متعدد الأنماط. +* في 100 اختبار (طلبات مكتوبة بواسطة ChatGPT)، تفوقت نتائج V2 الافتراضية على نتائج V1 الافتراضية في 87 حالة، تم تقييمها بواسطة شخصين. +* في 100 اختبار (طلبات مكتوبة بواسطة ChatGPT)، تفوق فهم V2 للطلبات على فهم V1 للطلبات في 81 حالة، تم تقييمها بواسطة شخصين، في كل من الإعداد الافتراضي ووضع الأنماط المتعددة/المفردة. +* لأن الرقم أعلاه أعلى من 80%، نعتبر هذا تحديثًا رئيسيًا ونقفز مباشرة إلى 2.0.0. +* بعض الأشياء الأخرى أعيدت تسميتها. + +### 1.0.67 + +* استخدام الوزن الديناميكي والأوزان الأقل لتوسيع الطلب. + +### 1.0.64 + +* إصلاح مشكلة OOM صغيرة. + +### 1.0.62 + +* تغيير توسيع الطلب إلى وضع اللاحقة لتحقيق توازن أفضل بين الدلالات والأسلوب (والتصحيح). + +### 1.0.60 + +* ضبط التوازن بين النمط وتوسيع الطلب. + +### 1.0.56 + +* البدء في استخدام التقسيم السحري (magic split). + +### 1.0.55 + +* تغييرات طفيفة في توسيع الطلب. + +### 1.0.52 + +* تقليل الفساد الدلالي لتوسيع الطلب. + +### 1.0.51 + +* تسريع توسيع الطلب قليلاً. + +### 1.0.50 + +* توسيع الطلب ووضع "Raw mode" لإيقاف تشغيله (مشابه لـ "raw" في Midjourney). + +### 1.0.45 + +* إعادة صياغة SAG، إزالة التصحيح غير الضروري +* إعادة صياغة المرشحات متباينة الخواص لحساب أسرع. +* الاستبدال بمرشح متباين الخواص موجه لتشويه أقل. + +### 1.0.41 + +(سيتم إيقاف تحديث Fooocus لفترة من الوقت من أجل AUTOMATIC1111 sd-webui 1.6.X، وسيتم أيضًا تنفيذ بعض الميزات كإضافات webui) + +### 1.0.40 + +* إعادة السلوكيات إلى 1.0.36 مرة أخرى (خطوات المحسن). 1.0.36 مثالي جدًا ونموذجي جدًا؛ التغلب على 1.0.36 مستحيل. + +### 1.0.39 + +* التراجع عن التغييرات غير المستقرة بين 1.0.37 و 1.0.38. +* زيادة خطوات المحسن إلى نصف خطوات أخذ العينات. + +### 1.0.36 + +* تغيير نواة Gaussian إلى نواة متباينة الخواص. + +### 1.0.34 + +* استعادة البذور العشوائية. + +### 1.0.33 + +* إخفاء العناصر في السجل عند إزالة الصور. + +### 1.0.32 + +* السجل الخاص لـ Fooocus + +### 1.0.31 + +* إصلاح خطأ إملائي وواجهة المستخدم. + +### 1.0.29 + +* إضافة كتلة "Advanced->Advanced->Advanced" للتطوير المستقبلي. + +### 1.0.29 + +* إصلاح مشكلة الإفراط في الطهي في 1.0.28 + +### 1.0.28 + +* تنفيذ SAG + +### 1.0.27 + +* إصلاح مشكلة صغيرة في css مربع النص + +### 1.0.25 + +* دعم sys.argv --listen --share --port + +### 1.0.24 + +* مربع نص إدخال أطول. + +### 1.0.23 + +* إضافة بعض التلميحات على لينكس بعد بدء واجهة المستخدم حتى يعرف المستخدمون أن التطبيق لم يفشل. + +### 1.0.20 + +* دعم لينكس. + +### 1.0.20 + +* تسريع مشفر النص. + +### 1.0.20 + +* إعادة كتابة واجهة المستخدم لاستخدام أكواد غير متزامنة: (1) لبدء أسرع، و (2) لمعاينة حية أفضل. +* إزالة تبعية opencv +* التخطيط لدعم لينكس قريبًا + +### 1.0.19 + +* فتح القفل للسماح بتغيير النموذج. + +### 1.0.17 + +* تغيير النموذج الافتراضي إلى SDXL-1.0-vae-0.9. (هذا يعني أنه سيتم تحميل النماذج مرة أخرى، ولكن يجب أن نفعل ذلك في أقرب وقت ممكن حتى يحتاج جميع المستخدمين الجدد إلى التحميل مرة واحدة فقط. آسف حقًا لمستخدمي اليوم 0. ولكن بصراحة هذا ليس متأخرًا جدًا بالنظر إلى أن المشروع متاح للجمهور منذ أقل من 24 ساعة - إذا كان قد مر أسبوع، لكنا فضلنا حيلًا أكثر خفة للتحديث.) + +### 1.0.16 + +* تنفيذ مجلد "Fooocus/outputs" لحفظ نتائج المستخدم. +* تجاهل أخطاء cv2 عندما تفشل المعاينة. +* ذكر دعم AMD المستقبلي في Readme. +* إنشاء هذا السجل. + +### 1.0.15 + +متاح للجمهور. + +### 1.0.0 + +الإصدار الأولي. diff --git a/.github/webui.md b/.github/webui.md new file mode 100644 index 0000000000..72f1a5aa69 --- /dev/null +++ b/.github/webui.md @@ -0,0 +1,34 @@ +--- +### 📄 docs/webui.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +بناء واجهة المستخدم الرسومية الكاملة باستخدام Gradio (1128 سطر). يُعرّف التخطيط الرئيسي مع عمودين (معاينة + إعدادات)، 6 تبويبات للصورة المدخلة (Upscale, Image Prompt, Inpaint, Describe, Enhance, Metadata)، و 4 تبويبات إعدادات (Settings, Styles, Models, Advanced). يربط جميع عناصر التحكم بالدوال البرمجية المناسبة. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **get_task(*args)**: تحويل ~100 مدخل UI إلى كائن AsyncTask. +- **generate_clicked(task)**: الحلقة الرئيسية لتوليد الصور. تتابع progress (preview/results/finish)، تدعم skip المَعاينة للاتصالات البطيئة، وتُرتب صور التحسين. +- **sort_enhance_images(images, task)**: ترتيب صور التحسين حسب إحصائيات enhance_stats. +- **inpaint_mode_change(mode, inpaint_engine_version)**: تحديث واجهة Inpaint عند تغيير الوضع (Detail/Modify/Outpaint). +- **stop_clicked(currentTask)**: إيقاف التوليد الحالي. +- **skip_clicked(currentTask)**: تخطي التوليد الحالي. +- **generate_mask(image, mask_model, cloth_category, dino_prompt_text, sam_model, box_threshold, text_threshold, sam_max_detections, dino_erode_or_dilate, dino_debug)**: توليد قناع Inpaint من الصورة. +- **trigger_metadata_preview(file)**: قراءة البيانات الوصفية من صورة Fooocus. +- **trigger_describe(modes, img, apply_styles)**: وصف الصورة باستخدام BLIP (Photo) أو WD14 (Anime). +- **trigger_auto_describe(mode, img, prompt, apply_styles)**: وصف تلقائي عند رفع صورة. +- **dev_mode_checked(r)**: إظهار/إخفاء أدوات المطور. +- **refresh_files_clicked()**: تحديث قوائم النماذج والـ LoRA و VAE. +- **preset_selection_change(preset, is_generating, inpaint_mode)**: تحميل وتطبيق القالب المحدد. +- **parse_meta(raw_prompt_txt, is_generating)**: تحليل JSON من حقل البرومبت. +- **trigger_metadata_import(file, state_is_generating)**: استيراد المعاملات من صورة. +- **dump_default_english_config()**: تصدير ملف الترجمة الإنجليزية (مُعلّق). + +المتغيرات: title, currentTask (State), gallery (Grad Gallery), load_data_outputs (قائمة مخرجات ~50 عنصر), ctrls (قائمة مدخلات ~100 عنصر). + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: modules/config.py, modules/async_worker.py, modules/flags.py, modules/html.py, modules/gradio_hijack.py, modules/style_sorter.py, modules/meta_parser.py, modules/sdxl_styles.py, modules/private_logger.py, modules/ui_gradio_extensions.py, modules/auth.py, modules/util.py, modules/constants.py, extras/inpaint_mask.py, ldm_patched/modules/model_management.py, args_manager.py, shared.py, launch.py, fooocus_version.py +- **يُستدعى بواسطة**: launch.py (via `from webui import *`) +- **الأثر البرمجي**: أي تغيير على عناصر UI، الأزرار، التبويبات، أو ربط الأحداث يؤثر مباشرة على واجهة المستخدم + +**للمزيد من التفاصيل، راجع:** +- [shared.md](shared.md) - المتغيرات المشتركة +- [MODULES.md](MODULES.md) - الوحدات الأساسية diff --git a/contrib/external.md b/contrib/external.md new file mode 100644 index 0000000000..340f59d66d --- /dev/null +++ b/contrib/external.md @@ -0,0 +1,31 @@ +# وثيقة ملف: external.py +## 1. الوظيفة الأساسية للملف +يحتوي على العقد الأساسية للنظام بما في ذلك عقدة CLIPTextEncode وLoadImage وSaveImage وPreviewImage وغيرها من العقد الأساسية المستخدمة في تدفق العمل. + +## 2. الدوال والكلاسات (Functions & Classes) +- before_node_execution(): دالة تُنفَّذ قبل تنفيذ كل عقدة للتحقق من عدم انقطاع المعالجة +- interrupt_processing(): دالة لإيقاف المعالجة الحالية +- CLIPTextEncode: كلاس لترميز النص باستخدام نموذج CLIP +- LoadImage: كلاس لتحميل الصور من المجلد المحدد +- SaveImage: كلاس لحفظ الصور المولدة +- PreviewImage: كلاس لمعاينة الصور المولدة +- ImageBatch: كلاس لإنشاء مجموعة صور +- LatentBatch: كلاس لإنشاء مجموعة latents +- CheckpointLoaderSimple: كلاس لتحميل نقاط التحقق (checkpoints) + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/contrib/external_images.py + - ldm_patched/contrib/external_mask.py + - ldm_patched/contrib/external_video_model.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - ldm_patched/modules/diffusers_load.py + - ldm_patched/modules/samplers.py + - ldm_patched/modules/sample.py + - ldm_patched/modules/sd.py + - ldm_patched/modules/utils.py + - ldm_patched/modules/controlnet.py + - ldm_patched/modules/clip_vision.py + - ldm_patched/modules/model_management.py + - ldm_patched/utils/path_utils.py + - ldm_patched/utils/latent_visualization.py \ No newline at end of file diff --git a/contrib/external_align_your_steps.md b/contrib/external_align_your_steps.md new file mode 100644 index 0000000000..3af8798458 --- /dev/null +++ b/contrib/external_align_your_steps.md @@ -0,0 +1,15 @@ +# وثيقة ملف: external_align_your_steps.py +## 1. الوظيفة الأساسية للملف +يُنفذ خوارزمية Align Your Steps لتحديد جدولة الضوضاء الأمثل للنموذج، مما يحسن جودة التوليد بتقليل الخطوات غير الضرورية. + +## 2. الدوال والكلاسات (Functions & Classes) +- loglinear_interp(): دالة للتطبيق الخطي اللوغاريتمي على مصفوفة الأرقام المتناقصة +- NOISE_LEVELS: قاموس يحتوي على مستويات الضوضاء المحددة مسبقاً لـ SD1 وSDXL وSVD +- AlignYourStepsScheduler: كلاس لجدولة خطوات التنظيف باستخدام خوارزمية Align Your Steps + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - numpy \ No newline at end of file diff --git a/contrib/external_canny.md b/contrib/external_canny.md new file mode 100644 index 0000000000..548603cbfc --- /dev/null +++ b/contrib/external_canny.md @@ -0,0 +1,18 @@ +# وثيقة ملف: external_canny.py +## 1. الوظيفة الأساسية للملف +يُنفذ خوارزمية كشف الحواف Canny لاستخراج ميزات الصور، تُستخدم للتحكم في نماذج التوليد عبر ControlNet. + +## 2. الدوال والكلاسات (Functions & Classes) +- get_canny_nms_kernel(): دالة لإرجاع أنوية القمع غير الأقصى لخوارزمية Canny +- get_hysteresis_kernel(): دالة لإرجاع أنوية الارتجاع لخوارزمية Canny +- gaussian_blur_2d(): دالة لتطبيق ضبابية غاوسية ثنائية الأبعاد +- canny(): دالة رئيسية لكشف الحواف باستخدام خوارزمية Canny +- CannyEdgePreprocessor: كلاس لمعالجة الصور واستخراج حواف Canny + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn.functional + - ldm_patched/modules/model_management.py \ No newline at end of file diff --git a/contrib/external_clip_sdxl.md b/contrib/external_clip_sdxl.md new file mode 100644 index 0000000000..407e1eca46 --- /dev/null +++ b/contrib/external_clip_sdxl.md @@ -0,0 +1,14 @@ +# وثيقة ملف: external_clip_sdxl.py +## 1. الوظيفة الأساسية للملف +يحتوي على عقد متخصصة في ترميز النص لنماذج SDXL، بما في ذلك الإعدادات الجمالية والحجم المستهدف. + +## 2. الدوال والكلاسات (Functions & Classes) +- CLIPTextEncodeSDXLRefiner: كلاس لترميز النص لنموذج SDXL Refiner مع إعدادات الجمالية والحجم +- CLIPTextEncodeSDXL: كلاس لترميز النص لنموذج SDXL الرئيسي مع دعم كلا النموذجين CLIP_G وCLIP_L + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - ldm_patched/contrib/external.py (لاستيراد MAX_RESOLUTION) \ No newline at end of file diff --git a/contrib/external_compositing.md b/contrib/external_compositing.md new file mode 100644 index 0000000000..e40e1f0702 --- /dev/null +++ b/contrib/external_compositing.md @@ -0,0 +1,18 @@ +# وثيقة ملف: external_compositing.py +## 1. الوظيفة الأساسية للملف +يُنفذ عمليات التجميع (compositing) للصور والـ masks باستخدام خوارزميات Porter-Duff المختلفة. + +## 2. الدوال والكلاسات (Functions & Classes) +- resize_mask(): دالة لتغيير حجم الـ mask باستخدام الاستيفاء الخطي +- PorterDuffMode: تعداد (enum) بأنماط التجميع المختلفة مثل ADD وCLEAR وMULTIPLY +- porter_duff_composite(): دالة لتطبيق تجميع Porter-Duff على الصور +- Composite: كلاس لتجميع صورتين معًا باستخدام أنماط مختلفة +- PorterDuffComposite: كلاس لتطبيق تجميع Porter-Duff على صورتين + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - numpy + - ldm_patched/modules/utils.py \ No newline at end of file diff --git a/contrib/external_custom_sampler.md b/contrib/external_custom_sampler.md new file mode 100644 index 0000000000..1c9772114b --- /dev/null +++ b/contrib/external_custom_sampler.md @@ -0,0 +1,26 @@ +# وثيقة ملف: external_custom_sampler.py +## 1. الوظيفة الأساسية للملف +يحتوي على عقد متخصصة في الجدولة والم징عات المخصصة للـ sampling، بما في ذلك Karras وExponential وغيرها. + +## 2. الدوال والكلاسات (Functions & Classes) +- BasicScheduler: كلاس للجدولة الأساسية باستخدام جدولة نموذج SAMPLER_NAMES +- KarrasScheduler: كلاس لجدولة Karras مع إعدادات sigma_max وsigma_min +- ExponentialScheduler: كلاس للجدولة الأسية +- BetaScheduler: كلاس للجدولة بيتا +- LCMScheduler: كلاس لجدولة LCM (Latent Consistency Models) +- DPMPP_SDE Scheduler: كلاس لجدولة DPMPP-SDE +- UniformSampler: كلاس لم_sample موحد +- NormalDistributionSampler: كلاس لم_sample بالتوزيع الطبيعي +- CFGNormalizer: كلاس لتطبيع CFG +- KSampler: كلاس لـ sampling باستخدام خوارزميات K-diffusion + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - ldm_patched/modules/samplers.py + - ldm_patched/modules/sample.py + - ldm_patched/k_diffusion/sampling.py + - ldm_patched/utils/latent_visualization.py + - torch + - ldm_patched/modules/utils.py \ No newline at end of file diff --git a/contrib/external_freelunch.md b/contrib/external_freelunch.md new file mode 100644 index 0000000000..56fe184733 --- /dev/null +++ b/contrib/external_freelunch.md @@ -0,0 +1,14 @@ +# وثيقة ملف: external_freelunch.py +## 1. الوظيفة الأساسية للملف +يُنفذ تقنية FreeU لتحسين جودة التوليد عن طريق تعديل ميزات UNet في نطاق التردد. + +## 2. الدوال والكلاسات (Functions & Classes) +- Fourier_filter(): دالة لتطبيق مرشح على التحويلෆوريي لتعديل الترددات المختلفة +- FreeU: كلاس لتطبيق تقنية FreeU على النموذج مع معاملات b1 وb2 وs1 وs2 +- FreeU_V2: كلاس لتطبيق النسخة الثانية من FreeU مع دعم أكبر + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch \ No newline at end of file diff --git a/contrib/external_hypernetwork.md b/contrib/external_hypernetwork.md new file mode 100644 index 0000000000..8f9c31c0d1 --- /dev/null +++ b/contrib/external_hypernetwork.md @@ -0,0 +1,15 @@ +# وثيقة ملف: external_hypernetwork.py +## 1. الوظيفة الأساسية للملف +يُنفذ دعم Hypernetworks لتعديل نماذج التوليد باستخدام شبكات عصبية فرعية. + +## 2. الدوال والكلاسات (Functions & Classes) +- load_hypernetwork_patch(): دالة لتحميل تطبيق Hypernetwork من ملف +- HypernetworkLoader: كلاس لتحميل وتطبيق Hypernetwork على النموذج + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - ldm_patched/modules/utils.py + - ldm_patched/utils/path_utils.py + - torch \ No newline at end of file diff --git a/contrib/external_hypertile.md b/contrib/external_hypertile.md new file mode 100644 index 0000000000..0df212a453 --- /dev/null +++ b/contrib/external_hypertile.md @@ -0,0 +1,15 @@ +# وثيقة ملف: external_hypertile.py +## 1. الوظيفة الأساسية للملف +يُنفذ تقنية HyperTile لتحسين كفاءة المعالجة عن طريق تقسيم الصور إلى بلاطات صغيرة. + +## 2. الدوال والكلاسات (Functions & Classes) +- random_divisor(): دالة لإيجاد مقاسم عشوائية للقيمة المعطاة +- HyperTile: كلاس لتطبيق تقنية HyperTile على النموذج مع إعدادات حجم البلاط والعمق + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - einops + - math \ No newline at end of file diff --git a/contrib/external_images.md b/contrib/external_images.md new file mode 100644 index 0000000000..607757e6bc --- /dev/null +++ b/contrib/external_images.md @@ -0,0 +1,25 @@ +# وثيقة ملف: external_images.py +## 1. الوظيفة الأساسية للملف +يحتوي على عقد متخصصة في معالجة الصور مثل القص والتغيير الحجم والتحويل. + +## 2. الدوال والكلاسات (Functions & Classes) +- ImageCrop: كلاس لقص الصور بأبعاد محددة +- RepeatImageBatch: كلاس لتكرار صورة لإنشاء مجموعة +- ResizeImage: كلاس لتغيير حجم الصور +- ImageScale: كلاس لتكبير/تصغير الصور باستخدام طرق مختلفة +- ImageInvert: كلاس لعكس ألوان الصور +- ImageBatch: كلاس لإنشاء مجموعة من الصور +- ImagePadForOutpaint: كلاس لتحضير الصور لل-outpainting +- ImageFromBatch: كلاس لاستخراج صورة من مجموعة + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - ldm_patched/contrib/external.py + - ldm_patched/utils/path_utils.py + - ldm_patched/modules/args_parser.py + - PIL + - numpy + - json + - os \ No newline at end of file diff --git a/contrib/external_latent.md b/contrib/external_latent.md new file mode 100644 index 0000000000..98db2bbe83 --- /dev/null +++ b/contrib/external_latent.md @@ -0,0 +1,21 @@ +# وثيقة ملف: external_latent.py +## 1. الوظيفة الأساسية للملف +يحتوي على عقد متخصصة في عمليات latent مثل الجمع والطرح والضرب والدمج. + +## 2. الدوال والكلاسات (Functions & Classes) +- reshape_latent_to(): دالة لإعادة تشكيل latent للحجم المطلوب +- LatentAdd: كلاس لجمع عينتين latent +- LatentSubtract: كلاس لطرح عينتين latent +- LatentMultiply: كلاس لضرب latent بقيمة +- LatentInterpolate: كلاس لاستيفاء بين عينتين latent +- LatentComposite: كلاس لدمج عينتين latent في مواقع مختلفة +- LatentBatch: كلاس لإنشاء مجموعة من latent +- LatentUpscale: كلاس لتكبير latent باستخدام طرق مختلفة +- LatentUpscaleBy: كلاس لتكبير latent بنسب محددة + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - ldm_patched/modules/utils.py + - torch \ No newline at end of file diff --git a/contrib/external_mask.md b/contrib/external_mask.md new file mode 100644 index 0000000000..c472146024 --- /dev/null +++ b/contrib/external_mask.md @@ -0,0 +1,25 @@ +# وثيقة ملف: external_mask.py +## 1. الوظيفة الأساسية للملف +يحتوي على عقد متخصصة في معالجة الـ masks مثل الدمج والقص والتغيير الحجم. + +## 2. الدوال والكلاسات (Functions & Classes) +- composite(): دالة لدمج source في destination باستخدام mask +- LatentCompositeMasked: كلاس لدمج latent مع mask +- CompositeMasked: كلاس لدمج صورتين مع mask +- MaskToImage: كلاس لتحويل mask إلى صورة +- ImageToMask: كلاس لتحويل صورة إلى mask +- InvertMask: كلاس لعكس mask +- CropMask: كلاس لقص mask بأبعاد محددة +- ResizeMask: كلاس لتغيير حجم mask +- FeatherMask: كلاس لتطبيق تأثير الريش على mask +- ThresholdMask: كلاس لتطبيق عتبة على mask + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - numpy + - scipy.ndimage + - torch + - ldm_patched/modules/utils.py + - ldm_patched/contrib/external.py (لاستيراد MAX_RESOLUTION) \ No newline at end of file diff --git a/contrib/external_model_advanced.md b/contrib/external_model_advanced.md new file mode 100644 index 0000000000..f3b85493c2 --- /dev/null +++ b/contrib/external_model_advanced.md @@ -0,0 +1,22 @@ +# وثيقة ملف: external_model_advanced.py +## 1. الوظيفة الأساسية للملف +يحتوي على إعدادات النموذج المتقدمة مثل LCM وModelSamplingDiscreteDistilled وRescaleZeroTerminalSNR. + +## 2. الدوال والكلاسات (Functions & Classes) +- LCM: كلاس لتطبيق Latent Consistency Models مع معادلة حسابية مخصصة +- ModelSamplingDiscreteDistilled: كلاس للعينات المتقطعة المقتصة +- rescale_zero_terminal_snr_sigmas(): دالة لإعادة تقييم sigmas بterminal SNR صفر +- ModelSamplingContinuousEDM: كلاس للعينات المستمرة EDM +- ModelSamplingContinuousV: كلاس للعينات المستمرة V +- SamplerCustom: كلاس لـ sampling مخصص مع scheduler وsampler محددين +- SamplerCustomAdvanced: كلاس لـ sampling مخصص متقدم +- KSamplerAdvanced: كلاس لـ sampling متقدم باستخدام KSampler + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - ldm_patched/utils/path_utils.py + - ldm_patched/modules/sd.py + - ldm_patched/modules/model_sampling.py + - torch \ No newline at end of file diff --git a/contrib/external_model_downscale.md b/contrib/external_model_downscale.md new file mode 100644 index 0000000000..c249429c71 --- /dev/null +++ b/contrib/external_model_downscale.md @@ -0,0 +1,13 @@ +# وثيقة ملف: external_model_downscale.py +## 1. الوظيفة الأساسية للملف +يُنفذ تقنية Downscale للنموذج لتحسين الكفاءة الحسابية عن طريق تقليل حجم المعالجة. + +## 2. الدوال والكلاسات (Functions & Classes) +- PatchModelAddDownscale: كلاس لتطبيق downscale على نموذج UNet مع إعدادات حجم الكتلة ونسبة البداية والنهاية + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - ldm_patched/modules/utils.py \ No newline at end of file diff --git a/contrib/external_model_merging.md b/contrib/external_model_merging.md new file mode 100644 index 0000000000..7e355fb13f --- /dev/null +++ b/contrib/external_model_merging.md @@ -0,0 +1,27 @@ +# وثيقة ملف: external_model_merging.py +## 1. الوظيفة الأساسية للملف +يحتوي على عقد متخصصة في دمج ودمج نماذج التوليد المختلفة. + +## 2. الدوال والكلاسات (Functions & Classes) +- ModelMergeSimple: كلاس لدمج نموذجين ببساطة باستخدام ratio +- ModelSubtract: كلاس لطرح نموذجين +- ModelAdd: كلاس لجمع نموذجين +- ModelMultiply: كلاس لضرب نموذجين +- ModelMergeBlocks: كلاس لدمج نماذج على مستوى الكتل +- ModelMergeSD1: كلاس لدمج نماذج SD1 على مستوى الكتل +- ModelMergeSD2: كلاس لدمج نماذج SD2 على مستوى الكتل +- ModelMergeSDXL: كلاس لدمج نماذج SDXL على مستوى الكتل + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/contrib/external_video_model.py + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - ldm_patched/modules/sd.py + - ldm_patched/modules/utils.py + - ldm_patched/modules/model_base.py + - ldm_patched/modules/model_management.py + - ldm_patched/utils/path_utils.py + - ldm_patched/modules/args_parser.py + - json + - os \ No newline at end of file diff --git a/contrib/external_perpneg.md b/contrib/external_perpneg.md new file mode 100644 index 0000000000..e8430bd722 --- /dev/null +++ b/contrib/external_perpneg.md @@ -0,0 +1,16 @@ +# وثيقة ملف: external_perpneg.py +## 1. الوظيفة الأساسية للملف +يُنفذ تقنية Perpendicular Negative Guidance لتحسين جودة التوليد عن طريق تعديل CFG. + +## 2. الدوال والكلاسات (Functions & Classes) +- PerpNeg: كلاس لتطبيق تقنية Perpendicular Negative Guidance على النموذج مع إعداد neg_scale + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - ldm_patched/modules/model_management.py + - ldm_patched/modules/sample.py + - ldm_patched/modules/samplers.py + - ldm_patched/modules/utils.py \ No newline at end of file diff --git a/contrib/external_photomaker.md b/contrib/external_photomaker.md new file mode 100644 index 0000000000..66d3d50aeb --- /dev/null +++ b/contrib/external_photomaker.md @@ -0,0 +1,21 @@ +# وثيقة ملف: external_photomaker.py +## 1. الوظيفة الأساسية للملف +يُنفذ نموذج PhotoMaker لتوليد صور شخصيات مخصصة مع الحفاظ على الهوية. + +## 2. الدوال والكلاسات (Functions & Classes) +- MLP: كلاس لشبكة عصبية متعددة الطبقات مع دعم الباقي +- FuseModule: كلاس لدمج ميزات CLIP وصورة الشخصية +- PhotoMakerLoader: كلاس لتحميل نموذج PhotoMaker +- PhotoMakerStyleLoader: كلاس لتحميل أسلوب PhotoMaker +- PhotoMakerConditioning: كلاس لتحضير شروط PhotoMaker + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - ldm_patched/utils/path_utils.py + - ldm_patched/modules/clip_model.py + - ldm_patched/modules/clip_vision.py + - ldm_patched/modules/ops.py \ No newline at end of file diff --git a/contrib/external_post_processing.md b/contrib/external_post_processing.md new file mode 100644 index 0000000000..c0b774a7ae --- /dev/null +++ b/contrib/external_post_processing.md @@ -0,0 +1,23 @@ +# وثيقة ملف: external_post_processing.py +## 1. الوظيفة الأساسية للملف +يحتوي على عقد متخصصة في المعالجة اللاحقة للصور مثل الدمج والضبط اللوني. + +## 2. الدوال والكلاسات (Functions & Classes) +- Blend: كلاس لدمج صورتين باستخدام أنماط مختلفة مثل normal وmultiply وscreen +- ImageBlend: كلاس لدمج صورتين بمعامل محدد +- ImageScaleToTotalPixels: كلاس لتكبير الصورة إلى عدد البكسل الكلي +- ImageVaeEncode: كلاس لترميز الصورة باستخدام VAE +- ImageVaeDecode: كلاس لفك ترميز الصورة باستخدام VAE +- LatentToImage: كلاس لتحويل latent إلى صورة +- ImageToLatent: كلاس لتحويل صورة إلى latent + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - numpy + - torch + - torch.nn.functional + - PIL + - math + - ldm_patched/modules/utils.py \ No newline at end of file diff --git a/contrib/external_rebatch.md b/contrib/external_rebatch.md new file mode 100644 index 0000000000..47f7cdbe79 --- /dev/null +++ b/contrib/external_rebatch.md @@ -0,0 +1,15 @@ +# وثيقة ملف: external_rebatch.py +## 1. الوظيفة الأساسية للملف +يحتوي على عقد لإعادة تجميع الـ latents إلى حجم batch محدد. + +## 2. الدوال والكلاسات (Functions & Classes) +- LatentRebatch: كلاس لإعادة تجميع عينات latent إلى حجم batch محدد + - get_batch(): دالة ثابتة لتحضير batch من قائمة latents + - get_slices(): دالة ثابتة لتقسيم الكائنات إلى شرائح + - slice_batch(): دالة ثابتة لتقسيم batch إلى شرائح + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch \ No newline at end of file diff --git a/contrib/external_sag.md b/contrib/external_sag.md new file mode 100644 index 0000000000..ef6b23d49f --- /dev/null +++ b/contrib/external_sag.md @@ -0,0 +1,18 @@ +# وثيقة ملف: external_sag.py +## 1. الوظيفة الأساسية للملف +يُنفذ تقنية Self-Attention Guidance لتحسين جودة التوليد عن طريق تعديل انتباه الذات. + +## 2. الدوال والكلاسات (Functions & Classes) +- attention_basic_with_sim(): دالة للانتباه الأساسية مع إرجاع درجات الانتباه +- SAG: كلاس لتطبيق تقنية Self-Attention Guidance على النموذج مع إعداد scale + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn.functional + - math + - einops + - ldm_patched/ldm/modules/attention.py + - ldm_patched/modules/samplers.py \ No newline at end of file diff --git a/contrib/external_sdupscale.md b/contrib/external_sdupscale.md new file mode 100644 index 0000000000..ed96fa4678 --- /dev/null +++ b/contrib/external_sdupscale.md @@ -0,0 +1,14 @@ +# وثيقة ملف: external_sdupscale.py +## 1. الوظيفة الأساسية للملف +يُنفذ تقنية SD 4X Upscale لتوليد صور عالية الدقة باستخدام نموذج التكبير المتخصص. + +## 2. الدوال والكلاسات (Functions & Classes) +- SD_4XUpscale_Conditioning: كلاس لتحضير شروط التكبير 4X مع إعدادات scale_ratio وnoise_augmentation + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - ldm_patched/contrib/external.py + - ldm_patched/modules/utils.py \ No newline at end of file diff --git a/contrib/external_stable3d.md b/contrib/external_stable3d.md new file mode 100644 index 0000000000..0218aeb014 --- /dev/null +++ b/contrib/external_stable3d.md @@ -0,0 +1,16 @@ +# وثيقة ملف: external_stable3d.py +## 1. الوظيفة الأساسية للملف +يحتوي على عقد متخصصة في نماذج 3D مثل StableZero123 لتوليد مشاهد ثلاثية الأبعاد. + +## 2. الدوال والكلاسات (Functions & Classes) +- camera_embeddings(): دالة لإنشاء تضمينات الكاميرا من الارتفاع والazimuth +- StableZero123_Conditioning: كلاس لتحضير شروط StableZero123 +- SV3D_Conditioning: كلاس لتحضير شروط SV3D + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - ldm_patched/contrib/external.py + - ldm_patched/modules/utils.py \ No newline at end of file diff --git a/contrib/external_tomesd.md b/contrib/external_tomesd.md new file mode 100644 index 0000000000..9e4314ce61 --- /dev/null +++ b/contrib/external_tomesd.md @@ -0,0 +1,16 @@ +# وثيقة ملف: external_tomesd.py +## 1. الوظيفة الأساسية للملف +يُنفذ تقنية Token Merging (ToMe) لتحسين كفاءة المعالجة عن طريق دمج الرموز المتشابهة. + +## 2. الدوال والكلاسات (Functions & Classes) +- do_nothing(): دالة فارغة لا تفعل شيئًا +- mps_gather_workaround(): دالة بديلة لـ MPS لتجنب مشاكل الجمع +- bipartite_soft_matching_random2d(): دالة للدمج الناعم للرموز ثنائية الأبعاد +- TomePatch: كلاس لتطبيق تقنية Token Merging على النموذج مع إعداد ratio + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - math \ No newline at end of file diff --git a/contrib/external_upscale_model.md b/contrib/external_upscale_model.md new file mode 100644 index 0000000000..28057b3e04 --- /dev/null +++ b/contrib/external_upscale_model.md @@ -0,0 +1,18 @@ +# وثيقة ملف: external_upscale_model.py +## 1. الوظيفة الأساسية للملف +يحتوي على عقد لتحميل وتطبيق نماذج التكبير (upscale) مثل RealESRGAN. + +## 2. الدوال والكلاسات (Functions & Classes) +- UpscaleModelLoader: كلاس لتحميل نموذج التكبير من ملف +- ImageUpscaleWithModel: كلاس لتطبيق نموذج التكبير على الصور + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - os + - ldm_patched/pfn/model_loading.py + - ldm_patched/modules/model_management.py + - torch + - ldm_patched/modules/utils.py + - ldm_patched/utils/path_utils.py \ No newline at end of file diff --git a/contrib/external_video_model.md b/contrib/external_video_model.md new file mode 100644 index 0000000000..f422e36a39 --- /dev/null +++ b/contrib/external_video_model.md @@ -0,0 +1,19 @@ +# وثيقة ملف: external_video_model.py +## 1. الوظيفة الأساسية للملف +يحتوي على عقد متخصصة في نماذج الفيديو مثل SVD (Stable Video Diffusion). + +## 2. الدوال والكلاسات (Functions & Classes) +- ImageOnlyCheckpointLoader: كلاس لتحميل نقاط التحقق الخاصة بنماذج الفيديو +- SVD_img2vid_Conditioning: كلاس لتحضير شروط SVD لتوليد الفيديو من الصور +- SV3D_img2vid_Conditioning: كلاس لتحضير شروط SV3D + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - ldm_patched/contrib/external.py + - torch + - ldm_patched/modules/utils.py + - ldm_patched/modules/sd.py + - ldm_patched/utils/path_utils.py + - ldm_patched/contrib/external_model_merging.py \ No newline at end of file diff --git a/controlnet/cldm.md b/controlnet/cldm.md new file mode 100644 index 0000000000..ce7f98808c --- /dev/null +++ b/controlnet/cldm.md @@ -0,0 +1,22 @@ +# وثيقة ملف: cldm.py +## 1. الوظيفة الأساسية للملف +يُنفذ نموذج ControlNet للتحكم في عملية التوليد باستخدام ميزات صورة الإدخال. + +## 2. الدوال والكلاسات (Functions & Classes) +- ControlledUnetModel: كلاس UNet المعدل للعمل مع ControlNet +- ControlNet: كلاس رئيسي لنموذج ControlNet + - __init__(): دالة التهيئة مع جميع المعلمات المطلوبة + - forward(): الدالة الأمامية لمعالجة الإدخال وإخراج ميزات التحكم + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/modules/controlnet.py + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - ldm_patched/ldm/modules/diffusionmodules/util.py + - ldm_patched/ldm/modules/attention.py + - ldm_patched/ldm/modules/diffusionmodules/openaimodel.py + - ldm_patched/ldm/util.py + - ldm_patched/modules/ops.py \ No newline at end of file diff --git a/css/style.md b/css/style.md new file mode 100644 index 0000000000..1954150971 --- /dev/null +++ b/css/style.md @@ -0,0 +1,24 @@ +--- +### 📄 مسار الملف الافتراضي: docs/css/style.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +ملف التنسيق الرئيسي لواجهة Fooocus (418 سطر). يُحوّل واجهة Gradio الافتراضية إلى تصميم Fooocus المخصص. مستوحى من AUTOMATIC1111 Stable Diffusion WebUI. + +الميزات الرئيسية: +- شريط تحميل وشريط تقدم (لون أزرق #3498db) +- تنسيق محرر البرومبت ونسبة العرض والارتفاع +- قائمة السياق (right-click menus) مع حدود برتقالية #a55000 +- نظام تلميحات Canvas مع أيقونات معلومات +- عارض صور Lightbox بملء الشاشة مع تنقل prev/next +- لوحة اختيار الأنماط المُمرّرة بتنسيق عمودين +- طبقة معاينة النمط التي تتبع المؤشر +- تنسيق قلم Inpaint canvas + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- لا يحتوي على دوال JavaScript - ملف CSS فقط +- الفئات الرئيسية: .loading, .progress-bar, #positive_prompt, .context-menu, .canvas-tooltip, .lightbox-modal, .style_selections, .main_view, .final_gallery + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: لا يعتمد على ملفات أخرى +- **يُستخدم بواسطة**: modules/ui_gradio_extensions.py (يحقنه في الواجهة) +- **الأثر البرمجي**: تغيير هنا سيتغير مظهر الواجهة بالكامل diff --git a/extras/BLIP/models/blip.md b/extras/BLIP/models/blip.md new file mode 100644 index 0000000000..eae640a69d --- /dev/null +++ b/extras/BLIP/models/blip.md @@ -0,0 +1,19 @@ +--- +### 📄 docs/extras/BLIP/models/blip.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +يُعرّف النماذج الأساسية لمكتبة BLIP: BLIP_Base لاستخراج السمات المشتركة بين الصور والنصوص، و BLIP_Decoder لتوليد التسميات التوضيحية (captions). يُنشئ النماذج مع أوزان مسبقة التدريب (pretrained) من مسارات محددة في config.py. النموذج المُستخدَم فعلياً في Fooocus هو blip_decoder (للوصف). + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class BLIP_Base(nn.Module)**: نموذج أساسي لاستخراج سمات الصور والنصوص والمتعددة الوسائط عبر Vision Transformer ومشفر BERT. +- **class BLIP_Decoder(nn.Module)**: نموذج فك تشفير لتوليد التسميات التوضيحية للصور باستخدام Cross-Attention بين الصورة والنص. +- **blip_decoder(pretrained, image_size, vit, vit_grad_ckpt, vit_ckpt_layer, prompt, med_config)**: إنشاء BLIP_Decoder مع تحميل أوزان pretrained. +- **blip_feature_extractor(pretrained, image_size, vit, vit_grad_ckpt, vit_ckpt_layer, prompt, med_config)**: إنشاء BLIP_Base مع تحميل أوزان pretrained. +- **init_tokenizer()**: تهيئة BertTokenizer من transformers مع إضافة رموز خاصة [DEC], [ENC], [SEP1], [SEP2]. +- **create_vit(vit, image_size, use_grad_checkpointing, ckpt_layer, drop_path_rate)**: إنشاء Vision Transformer (ViT-B/16 أو ViT-L/14) مع grad checkpointing. +- **load_checkpoint(model, checkpoint_path)**: تحميل أوزان النموذج من checkpoint. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: extras/BLIP/models/vit.py (create_vit), extras/BLIP/models/med.py (BertEncoder, BertLMHeadModel), transformers (BertTokenizer) +- **يُستدعى بواسطة**: extras/interrogate.py (blip_decoder), extras/BLIP/models/blip_itm.py, extras/BLIP/models/blip_nlvr.py, extras/BLIP/models/blip_pretrain.py, extras/BLIP/models/blip_retrieval.py, extras/BLIP/models/blip_vqa.py +- **الأثر البرمجي**: أساسي لميزة وصف الصور (Interrogate) في Fooocus diff --git a/extras/BLIP/models/blip_itm.md b/extras/BLIP/models/blip_itm.md new file mode 100644 index 0000000000..7a656d60ef --- /dev/null +++ b/extras/BLIP/models/blip_itm.md @@ -0,0 +1,16 @@ +--- +### 📄 docs/extras/BLIP/models/blip_itm.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نموذج Image-Text Matching (ITM) من BLIP. يُقيّم التوافق بين الصور والنصوص عبر حساب درجة المطابقة (matching score). يستخدم attention تبادلي بين ميزات الصورة والنص لتحديد أي من النصوص يصف الصورة بشكل أفضل. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class BLIP_ITM(nn.Module)**: نموذج ITM مع مشفر BERT ومحول الصور. + - `forward(self, image, caption, alpha)`: حساب خسارة ITM + خسارة التباين (contrastive loss) مع وزن alpha. + - `itm_score(self, image, caption)`: حساب درجة المطابقة بين صورة وجملة واحدة. +- **blip_itm(pretrained, image_size, vit, vit_grad_ckpt, vit_ckpt_layer, med_config)**: إنشاء النموذج مع تحميل أوزان pretrained. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: extras/BLIP/models/blip.py (BLIP_Base), extras/BLIP/models/med.py +- **يُستدعى بواسطة**: غير مستخدم مباشرة في Fooocus +- **الأثر البرمجي**: غير مؤثر - نموذج احتياطي من BLIP diff --git a/extras/BLIP/models/blip_nlvr.md b/extras/BLIP/models/blip_nlvr.md new file mode 100644 index 0000000000..3d7f4819d4 --- /dev/null +++ b/extras/BLIP/models/blip_nlvr.md @@ -0,0 +1,15 @@ +--- +### 📄 docs/extras/BLIP/models/blip_nlvr.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نموذج Natural Language Visual Reasoning (NLVR) من BLIP. يُقيّم ما إذا كانت جملة تصف زوجاً من الصور بشكل صحيح. يستخدم سامعين (dual encoders) للصور مع انتباه ذاتي وتبادلي (cross-attention) بين ميزات الصورتين. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class BLIP_NLVR(nn.Module)**: نموذج NLVR مع مشفرين للصور ومشفر للنص. + - `forward(self, image0, image1, caption)`: تشفير الصورتين والنص، حساب الانتباه التبادلي بين الصورتين، إرجاع درجة التصنيف الثنائي. +- **blip_nlvr(pretrained, image_size, vit, vit_grad_ckpt, vit_ckpt_layer, med_config)**: إنشاء النموذج مع تحميل أوزان pretrained. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: extras/BLIP/models/blip.py (BLIP_Base), extras/BLIP/models/med.py, extras/BLIP/models/vit.py +- **يُستدعى بواسطة**: غير مستخدم مباشرة في Fooocus +- **الأثر البرمجي**: غير مؤثر - نموذج احتياطي من BLIP diff --git a/extras/BLIP/models/blip_pretrain.md b/extras/BLIP/models/blip_pretrain.md new file mode 100644 index 0000000000..4f5d0596c5 --- /dev/null +++ b/extras/BLIP/models/blip_pretrain.md @@ -0,0 +1,15 @@ +--- +### 📄 docs/extras/BLIP/models/blip_pretrain.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نموذج ما قبل التدريب (pretraining) لـ BLIP. يُدرّب على مهام متعددة: فهم الصور (Understanding)، التسمية التوضيحية (Captioning)، والاسترجاع (Retrieval). يستخدم فقدان ITC (Image-Text Contrastive) + ITM (Matching) + LM (Language Modeling). + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class BLIP_Pretrain(nn.Module)**: النموذج الرئيسي لما قبل التدريب. + - `forward(self, image, caption, alpha)`: حساب الخسائر المركبة (ITC + ITM + LM). +- **blip_pretrain(pretrained, image_size, vit, vit_grad_ckpt, vit_ckpt_layer, med_config)**: إنشاء النموذج مع تحميل أوزان pretrained. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: extras/BLIP/models/blip.py, extras/BLIP/models/med.py +- **يُستدعى بواسطة**: غير مستخدم مباشرة في Fooocus +- **الأثر البرمجي**: غير مؤثر - نموذج احتياطي من BLIP diff --git a/extras/BLIP/models/blip_retrieval.md b/extras/BLIP/models/blip_retrieval.md new file mode 100644 index 0000000000..434de096f8 --- /dev/null +++ b/extras/BLIP/models/blip_retrieval.md @@ -0,0 +1,15 @@ +--- +### 📄 docs/extras/BLIP/models/blip_retrieval.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نموذج استرجاع الصور-النصوص (Image-Text Retrieval) من BLIP. يُحسّن التمثيلات المشتركة للصور والنصوص باستخدام فقدان ITC (متباين) + ITM (توافقي) لاسترجاع أفضل النصوص المطابقة للصورة والعكس. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class BLIP_Retrieval(nn.Module)**: نموذج الاسترجاع. + - `forward(self, image, caption, alpha)`: حساب خسائر ITC و ITM مع وزن alpha. +- **blip_retrieval(pretrained, image_size, vit, vit_grad_ckpt, vit_ckpt_layer, med_config)**: إنشاء النموذج مع تحميل أوزان pretrained. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: extras/BLIP/models/blip.py, extras/BLIP/models/med.py +- **يُستدعى بواسطة**: غير مستخدم مباشرة في Fooocus +- **الأثر البرمجي**: غير مؤثر - نموذج احتياطي من BLIP diff --git a/extras/BLIP/models/blip_vqa.md b/extras/BLIP/models/blip_vqa.md new file mode 100644 index 0000000000..557d5137cf --- /dev/null +++ b/extras/BLIP/models/blip_vqa.md @@ -0,0 +1,17 @@ +--- +### 📄 docs/extras/BLIP/models/blip_vqa.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نموذج Visual Question Answering (VQA) من BLIP. يُولّد إجابات عن أسئلة نصية بناءً على محتوى الصورة. يُحسَّن على مجموعة VQA مع تسلسل إجابات محدود (answer space) أو توليد حر. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class BLIP_VQA(nn.Module)**: نموذج الإجابة على الأسئلة المرئية. + - `forward(self, image, question, answer, alpha, k, weights)`: حساب الخسارة مع ترجيح الإجابات المتعددة. + - `rank_answer(self, image, question, answer_candidates, ans_len)`: ترتيب إجابات المرشحين حسب درجة التوافق. +- **blip_vqa(pretrained, image_size, vit, vit_grad_ckpt, vit_ckpt_layer, med_config)**: إنشاء النموذج مع تحميل أوزان pretrained. +- **tile(x, dim, n_tile)**: تكرار tensor عبر بُعد محدد. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: extras/BLIP/models/blip.py, extras/BLIP/models/med.py +- **يُستدعى بواسطة**: غير مستخدم مباشرة في Fooocus +- **الأثر البرمجي**: غير مؤثر - نموذج احتياطي من BLIP diff --git a/extras/BLIP/models/med.md b/extras/BLIP/models/med.md new file mode 100644 index 0000000000..42d4a13d5f --- /dev/null +++ b/extras/BLIP/models/med.md @@ -0,0 +1,27 @@ +--- +### 📄 docs/extras/BLIP/models/med.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +تنفيذ BERT مخصص (Modified Encoder-Decoder) للمكتبة BLIP. يوفر مشفر BERT كامل مع طبقات Self-Attention، Cross-Attention (للتشفير-فك التشفير)، ورؤوس تنبؤ للكلمات المفقودة (MLM). يُستخدم كقاعدة لجميع نماذج BLIP الأخرى. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class BertEmbeddings(nn.Module)**: تضمين الكلمات + المواقع + نوع الجملة (token/segment/position). +- **class BertSelfAttention(nn.Module)**: انتباه ذاتي متعدد الرؤوس مع Dropout. +- **class BertSelfOutput(nn.Module)**: إخراج الانتباه الذاتي مع LayerNorm + Dropout + Residual. +- **class BertAttention(nn.Module)**: يدمج SelfAttention + SelfOutput. +- **class BertIntermediate(nn.Module)**: طبقة متوسطة (Linear + GELU). +- **class BertOutput(nn.Module)**: إخراج الطبقة مع LayerNorm + Dropout + Residual. +- **class BertLayer(nn.Module)**: طبقة BERT كاملة (Attention + Intermediate + Output). +- **class BertEncoder(nn.Module)**: المشفر الرئيسي - يكدّس 12 طبقة BertLayer. +- **class BertPooler(nn.Module)**: تجميع مخرجات [CLS] لتصنيف الجمل. +- **class BertPredictionHeadTransform(nn.Module)**: تحويل رأس التنبؤ (LayerNorm + GELU + Linear). +- **class BertLMPredictionHead(nn.Module)**: رأس تنبؤ الكلمات (Linear إلى حجم المفردات). +- **class BertOnlyMLMHead(nn.Module)**: رأس MLM لـ BERT. +- **class BertPreTrainedModel(PreTrainedModel)**: النموذج الأساسي قبل التدريب. +- **class BertModel(BertPreTrainedModel)**: النموذج الرئيسي (Encoder + Pooler). +- **class BertLMHeadModel(BertPreTrainedModel)**: نموذج اللغة مع رأس LM (للـ Decoder). + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: transformers (ACT2FN, ModelOutput, PreTrainedModel, BertConfig) +- **يُستدعى بواسطة**: extras/BLIP/models/blip.py, extras/BLIP/models/blip_itm.py, extras/BLIP/models/blip_nlvr.py, extras/BLIP/models/blip_pretrain.py, extras/BLIP/models/blip_retrieval.py, extras/BLIP/models/blip_vqa.py +- **الأثر البرمجي**: أساسي لجميع نماذج BLIP في المشروع diff --git a/extras/BLIP/models/nlvr_encoder.md b/extras/BLIP/models/nlvr_encoder.md new file mode 100644 index 0000000000..2c85342137 --- /dev/null +++ b/extras/BLIP/models/nlvr_encoder.md @@ -0,0 +1,15 @@ +--- +### 📄 docs/extras/BLIP/models/nlvr_encoder.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +مشفر NLVR (Natural Language Visual Reasoning) من BLIP. يُنفّذ انتباهاً تبادلياً بين صورتين (cross-attention بين image0 و image1) قبل تمرير الميزات إلى مشفر النص. يستخدم طبقة Attention محسَّنة مع تفسير (alignment) البعدَيْن الأخيرين. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class BertEncoder(nn.Module)**: مشفر مخصص لـ NLVR مع 6 طبقات من الانتباه الذاتي + التبادلي بين الصور. + - `forward(self, embedding0, embedding1)`: تشفير متوازٍ للصورتين مع cross-attention في كل طبقة. +- **class Embeddings(nn.Module)**: تضمين الصور مع إضافة position embedding. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: extras/BLIP/models/med.py (BertLayer, BertAttention, BertIntermediate, BertOutput, BertSelfAttention)، math +- **يُستدعى بواسطة**: extras/BLIP/models/blip_nlvr.py +- **الأثر البرمجي**: غير مؤثر - يستخدم فقط في نموذج BLIP NLVR غير المُستخدم حالياً diff --git a/extras/BLIP/models/vit.md b/extras/BLIP/models/vit.md new file mode 100644 index 0000000000..d1723f9334 --- /dev/null +++ b/extras/BLIP/models/vit.md @@ -0,0 +1,19 @@ +--- +### 📄 docs/extras/BLIP/models/vit.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +تنفيذ Vision Transformer (ViT) لمكتبة BLIP. يُقسّم الصورة إلى patches (16×16)، يُمرّرها عبر طبقات Transformer مع انتباه متعدد الرؤوس. يدعم ViT-B/16 (12 طبقة، 768 بُعداً) و ViT-L/14 (24 طبقة، 1024 بُعداً) مع grad checkpointing وخفض معدل التسرب (drop path). + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class DropPath(nn.Module)**: تطبيق Drop Path (Stochastic Depth) مع احتمال بقاء عشوائي. +- **class Mlp(nn.Module)**: شبكة MLP (Linear + GELU + Dropout + Linear + Dropout). +- **class Attention(nn.Module)**: انتباه متعدد الرؤوس مع QKV خطي، RoPE، و Dropout. +- **class Block(nn.Module)**: كتلة Transformer (Attention + Mlp + LayerNorm + Residual). +- **class PatchEmbed(nn.Module)**: تقسيم الصورة إلى patches عبر Conv2d (kernel=patch_size, stride=patch_size). +- **class VisionTransformer(nn.Module)**: ViT الكامل: PatchEmbed + CLS token + Position Embedding + Blocks + طبقة الإخراج. + - `forward(self, x, register_blk)`: تمرير الصورة عبر الشبكة، إرجاع قائمة مخرجات الكتل. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: torch, torch.nn as nn, functools, einops (rearrange), itertools +- **يُستدعى بواسطة**: extras/BLIP/models/blip.py (create_vit), extras/BLIP/models/blip_nlvr.py +- **الأثر البرمجي**: أساسي لمعالجة الصور في جميع نماذج BLIP diff --git a/extras/GroundingDINO/config/GroundingDINO_SwinT_OGC.md b/extras/GroundingDINO/config/GroundingDINO_SwinT_OGC.md new file mode 100644 index 0000000000..c341ec7ee7 --- /dev/null +++ b/extras/GroundingDINO/config/GroundingDINO_SwinT_OGC.md @@ -0,0 +1,19 @@ +--- +### 📄 docs/extras/GroundingDINO/config/GroundingDINO_SwinT_OGC.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +ملف تكوين (Config) لنموذج GroundingDINO_SwinT_OGC. يُحدد معمارية النموذج: الـ backbone Swin Transformer (Swin-T)، neck (FPN مع Conv2d)، الـ transformer (6 مشفرات، 6 مفككات)، وإعدادات التدريب. هذا الملف يُستخدم بواسطة load_model من groundingdino لبناء النموذج. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **model_config**: قاموس تكوين يحدد: + - backbone: Swin-T (window_size=7, embed_dim=96, depths=[2,2,6,2]). + - neck: ChannelMapper (in_channels [96,192,384,768], out_channels 256, 4 Conv2d 1×1). + - transformer: 6 encoder layers + 6 decoder layers مع nheads=8، dim_feedforward=2048،d_model=256. + - matcher: HungarianMatcher (cost_class=2, cost_bbox=5,cost_giou=2). + - losses: ['labels','boxes','cardinality']. + - dn_number: 100 (Denoising queries). + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: لا يستدعي ملفات (ملف تكوين بحت) +- **يُستدعى بواسطة**: groundingdino.util.slconfig (SLConfig.fromfile) عبر GroundingDINO/util/inference.py +- **الأثر البرمجي**: بدون هذا التكوين لا يمكن بناء نموذج GroundingDINO diff --git a/extras/GroundingDINO/inference.md b/extras/GroundingDINO/inference.md new file mode 100644 index 0000000000..8bb9e37274 --- /dev/null +++ b/extras/GroundingDINO/inference.md @@ -0,0 +1,16 @@ +--- +### 📄 مسار الملف الافتراضي: docs/extras/GroundingDINO/inference.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +غلاف GroundingDINO للكشف عن الكائنات الموجّه بالنص - يكشف كائنات في الصور بناءً على تعليقات نصية. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **GroundingDinoModel(Model)**: يُغلّف GroundingDINO مع تحميل كسول. + - `predict_with_caption(self, image, caption, box_threshold, text_threshold)`: كشف الكائنات. +- **predict(model, image, caption, ...)**: الاستدلال الأساسي: tokenize → forward → تصفية → استخراج عبارات. +- **default_groundingdino**: نموذج singleton مُريح. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: torch, groundingdino, supervision, ldm_patched/modules/model_management.py +- **يُستخدم بواسطة**: extras/inpaint_mask.py +- **الأثر البرمجي**: يُمكّن من الكشف عن الكائنات بالنص diff --git a/extras/GroundingDINO/util/inference.md b/extras/GroundingDINO/util/inference.md new file mode 100644 index 0000000000..70153b73b0 --- /dev/null +++ b/extras/GroundingDINO/util/inference.md @@ -0,0 +1,16 @@ +--- +### 📄 docs/extras/GroundingDINO/util/inference.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +غلاف عملي (wrapper) لنموذج GroundingDINO للكشف عن الكائنات الموجه بالنص. يُنشئ نموذج GroundingDINO مع تحميل كسول (lazy loading)، يُشغّل الاستدلال: tokenize النص → forward pass → تصفية الصناديق حسب عتبات الثقة والنص → استخراج العبارات (phrases) المقابلة. يُستخدم بشكل أساسي من inpaint_mask.py للكشف عن الكائنات قبل تقطيع SAM. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class GroundingDinoModel(Model)**: يغلّف GroundingDINO مع تحميل كسول. + - `predict_with_caption(self, image, caption, box_threshold, text_threshold)`: كشف الكائنات مع caption نصي. +- **predict(model, image, caption, box_threshold, text_threshold, device)**: دالة الاستدلال الأساسية. tokenize النص (إضافة '.' لكل كلمة)، تشغيل forward، تصفية النتائج، إرجاع (boxes, logits, phrases). +- **default_groundingdino(model_dir)**: نموذج singleton (مُخزَّن مؤقتاً في متغير عام _default) للاستخدام المباشر. يُحمّل النموذج من المسار المُعدّ في config.py. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: torch, groundingdino (GroundingDINO, load_model, predict), supervision, ldm_patched/modules/model_management.py, modules/config.py +- **يُستدعى بواسطة**: extras/inpaint_mask.py (generate_mask_from_image) +- **الأثر البرمجي**: أساسي لتوليد أقنعة Inpainting عبر الكشف النصي diff --git a/extras/censor.md b/extras/censor.md new file mode 100644 index 0000000000..4cb89f2920 --- /dev/null +++ b/extras/censor.md @@ -0,0 +1,17 @@ +--- +### 📄 docs/extras/censor.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +فحص أمان NSFW للصور المُولّدة. يُحمّل StableDiffusionSafetyChecker من transformers عند الحاجة (lazy loading)، ويُفحص الصور بحثاً عن محتوى غير لائق. يُدمَج مع model_management لتحميل النموذج على الجهاز المناسب (CUDA/CPU). + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class Censor**: يدير دورة حياة نموذج فحص الأمان. + - `__init__(self)`: تهيئة مراجع النموذج وإعدادات الجهاز. + - `init(self)`: تحميل كسول للنموذج من config (safety_checker/FP16)، CLIPImageProcessor، و model_patcher. + - `censor(self, x)`: تمرير الصور عبر safety_checker، إزالة الصور غير اللائقة، إعادة القائمة المصفّاة. +- **default_censor**: كائن افتراضي من Censor().censor جاهز للاستخدام المباشر. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: ldm_patched/modules/model_management.py, modules/config.py, extras/safety_checker/models/safety_checker.py, ldm_patched/modules/model_patcher.py, transformers (CLIPConfig, CLIPImageProcessor) +- **يُستدعى بواسطة**: modules/async_worker.py (للفلترة قبل عرض النتيجة) +- **الأثر البرمجي**: تعطيل هذا الملف يسمح بعرض محتوى NSFW دون فلترة diff --git a/extras/expansion.md b/extras/expansion.md new file mode 100644 index 0000000000..53775a01de --- /dev/null +++ b/extras/expansion.md @@ -0,0 +1,18 @@ +--- +### 📄 docs/extras/expansion.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +توسيع البرومبت (Prompt Expansion) باستخدام نموذج GPT-2 مخصص (Fooocus V2 Expansion). يأخذ مُدخلاً نصياً قصيراً ويولّد امتدادات وصفية باستخدام قائمة كلمات إيجابية محددة (positive_words) مع تحيز logits لتوجيه التوليد. يُحمَّل النموذج مع logits_processor يمنع تكرار الكلمات ويُرجّح الكلمات الإيجابية. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **safe_str(text)**: إزالة المسافات الزائدة وتقليم علامات الترقيم من النص. +- **remove_pattern(text, pattern)**: إزالة أنماط محددة من النص. +- **class FooocusExpansion**: محرك توسيع البرومبت GPT-2. + - `__init__(self)`: تحميل tokenizer، قائمة positive_words (150+ كلمة إيجابية)، ونموذج GPT-2 مع logits bias ثنائي القطب. + - `logits_processor(self, input_ids, scores)`: معالج logits مخصص: يُرجّح الكلمات من positive_words (+100) ويُخفّف الكلمات المولّدة سابقاً (-100). + - `__call__(self, prompt, seed)`: توسيع البرومبت عبر GPT-2 generation مع constrained decoding. يُعيد النص الموسّع. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: ldm_patched/modules/model_management.py, modules/config.py, ldm_patched/modules/model_patcher.py, transformers (AutoTokenizer, AutoModelForCausalLM, LogitsProcessorList, set_seed) +- **يُستدعى بواسطة**: modules/default_pipeline.py, modules/async_worker.py +- **الأثر البرمجي**: تعطيل التوسيع يُضعف جودة البرومبتات القصيرة وقد يُقلّل من تنوع المخرجات diff --git a/extras/face_crop.md b/extras/face_crop.md new file mode 100644 index 0000000000..06ca7ea372 --- /dev/null +++ b/extras/face_crop.md @@ -0,0 +1,14 @@ +--- +### 📄 docs/extras/face_crop.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +قص الوجوه ومحاذاتها من الصور لاكتشاف الوجه الأكبر. يستخدم FaceRestoreHelper من facexlib للكشف (RetinaFace)، استخراج نقاط المعالم الخمسية (5 landmarks)، وتحويل أفيني (affine) لمحاذاة الوجه إلى قالب قياسي (112×112). يُعيد الصورة المقتصّة وأبعادها الأصلية للاستخدام في Image Prompt. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **align_warp_face(landmarks_5, image, output_size)**: تطبيق تحويل أفيني لمحاذاة نقاط المعالم إلى القالب، إرجاع الوجه المقتصّ مع مصفوفة التحويل. +- **crop_image(image)**: نقطة الدخول الرئيسية: يُنشئ FaceRestoreHelper، يكشف الوجوه عبر detect_faces، يستخرج landmarks لأول 4 وجوه، يختار أكبر وجه، يُحوّله أفينياً، يُعيد (cropped_face, orig_size, (orig_w, orig_h)). + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: modules/config.py, extras/facexlib/utils/face_restoration_helper.py (FaceRestoreHelper), cv2, numpy +- **يُستدعى بواسطة**: modules/async_worker.py (لاستخراج وجه الصورة المُدخَلة), experiments_face.py +- **الأثر البرمجي**: تعطيله يُعطّل Image Prompt المعتمد على الوجوه diff --git a/extras/facexlib/detection/__init__.md b/extras/facexlib/detection/__init__.md new file mode 100644 index 0000000000..7c3f576977 --- /dev/null +++ b/extras/facexlib/detection/__init__.md @@ -0,0 +1,14 @@ +--- +### 📄 docs/extras/facexlib/detection/__init__.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +ملف تهيئة حزمة detection في facexlib. يُصدّر دالتين مساعدتين لتحميل نموذج RetinaFace حسب الاسم: init_detection_model (بمسار مطلق) و init_yolo_detection_model (لـ YOLOv5 الافتراضي). يُوفّر واجهة موحدة لاستخدام نماذج كشف الوجوه من بقية أجزاء facexlib. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **init_detection_model(name, half=False, device='cuda')**: إنشاء كاشف RetinaFace: تحميل الأوزان من config.yml + RetinaFace.pth، إنشاء RetinaFace، إرجاع النموذج على الجهاز المطلوب. +- **init_yolo_detection_model(name, half=False, device='cuda')**: (غير مُطبَّق كاملاً) إنشاء كاشف YOLO - يُعيد None حالياً. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: extras/facexlib/detection/retinaface.py (RetinaFace), yaml, torch +- **يُستدعى بواسطة**: extras/facexlib/utils/face_restoration_helper.py (FaceRestoreHelper) +- **الأثر البرمجي**: نقطة الوصول الوحيدة لنماذج كشف الوجوه في facexlib diff --git a/extras/facexlib/detection/__init__.py.md b/extras/facexlib/detection/__init__.py.md new file mode 100644 index 0000000000..dc2715ecbb --- /dev/null +++ b/extras/facexlib/detection/__init__.py.md @@ -0,0 +1,10 @@ +# وثيقة ملف: __init__.py.md +## 1. الوظيفة الأساسية للملف +ملف التهيئة لوحدة كشف الوجوه، يوفر دالة لتهيئة نموذج الكشف المطلوب. + +## 2. الدوال والكلاسات (Functions & Classes) +- **init_detection_model()**: دالة لتهيئة نموذج كشف الوجوه مع تحميل الأوزان المسبقة + +## 3. ال依赖يات والعلاقات +- الملفات التي تستدعي هذا الملف: extras/facexlib/utils/face_restoration_helper.py, extras/face_crop.py +- الملفات التي يستدعيها هذا الملف لتشغيله: extras/facexlib/utils/__init__.py, extras/facexlib/detection/retinaface.py diff --git a/extras/facexlib/detection/align_trans.md b/extras/facexlib/detection/align_trans.md new file mode 100644 index 0000000000..478fca77f4 --- /dev/null +++ b/extras/facexlib/detection/align_trans.md @@ -0,0 +1,15 @@ +--- +### 📄 docs/extras/facexlib/detection/align_trans.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +توفير دوال محاذاة الوجوه عبر التحويل الأفيني (Affine Transformation). يستخدم نقاط المعالم الخمسية (eye_left, eye_right, nose, mouth_left, mouth_right) مع نقاط مرجعية ثابتة لحساب مصفوفة التحويل، ثم تطبيقها لقص الوجه بحجم 112×112. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **get_reference_facial_points(output_size)**: إرجاع نقاط الوجه المرجعية لحجم إخراج محدد. +- **get_affine_transform_matrix(cropped_face_size, reference_pts, src_pts)**: حساب مصفوفة التحويل الأفيني (2×3) بين نقاط المصدر والمرجع. +- **face_align(src_face, src_pts, output_size)**: تطبيق التحويل الأفيني على الصورة باستخدام warpAffine. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: math, cv2, numpy +- **يُستدعى بواسطة**: extras/facexlib/detection/retinaface.py (RetinaFace.align_multi) +- **الأثر البرمجي**: أساسي لمحاذاة الوجوه المقصوصة في RetinaFace diff --git a/extras/facexlib/detection/matlab_cp2tform.md b/extras/facexlib/detection/matlab_cp2tform.md new file mode 100644 index 0000000000..83094f1595 --- /dev/null +++ b/extras/facexlib/detection/matlab_cp2tform.md @@ -0,0 +1,18 @@ +--- +### 📄 docs/extras/facexlib/detection/matlab_cp2tform.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +محاكاة دالة MATLAB's cp2tform (Control Point to Transformation) في Python. يُحسب التحويل الأفيني (2D affine) من نقاط تحكم مصدرية إلى نقاط مرجعية باستخدام حل المربعات الصغرى (Least Squares). يُستخدم لحساب مصفوفة المحاذاة الدقيقة لتوحيد أوضاع الوجوه. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **mstruct_to_shapesize(mstruct)**: تحويل بنية MATLAB إلى أبعاد الشكل. +- **findNonreflectiveSimilarity(uv, xy, K, M, T)**: حساب تشابه غير عاكس (similarity without reflection) بين نقطتين. +- **findSimilarity(uv, xy, K, M, T)**: حساب التشابه مع إمكانية الانعكاس. +- **getInvTransform(mstruct)**: حساب التحويل العكسي. +- **cubic_exception(uv, xy, K, M, T)**: الاستيفاء التكعيبي للحالات الاستثنائية. +- **cp2tform(uv, xy, transform_type)**: الدالة الرئيسية - حساب التحويل بين مجموعتي نقاط تحكم. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: numpy, math +- **يُستدعى بواسطة**: extras/facexlib/detection/align_trans.py +- **الأثر البرمجي**: أساسي لحساب مصفوفات التحويل الأفيني في محاذاة الوجه diff --git a/extras/facexlib/detection/retinaface.md b/extras/facexlib/detection/retinaface.md new file mode 100644 index 0000000000..7c16a3e7a0 --- /dev/null +++ b/extras/facexlib/detection/retinaface.md @@ -0,0 +1,18 @@ +--- +### 📄 docs/extras/facexlib/detection/retinaface.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نموذج RetinaFace لكشف الوجوه مع نقاط المعالم الخمسية. يُنفّذ شبكة CNN هرمية (Feature Pyramid) مع وحدات SSH (Single Stage Headless) للكشف على مقاييس متعددة. يكتشف الوجوه ويحسب صناديق الإحاطة (bboxes) ونقاط المعالم والثقة. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **generate_config(model_name)**: إرجاع إعدادات الشبكة لكل نموذج: mobile0.25, ResNet50, ResNet101. +- **class RetinaFace(nn.Module)**: النموذج الرئيسي لكشف الوجوه. + - `forward(self, x)`: التشغيل الأمامي عبر FPN + SSH، إرجاع قائمة خرائط ميزات. + - `detect_faces(self, image, img_shape, threshold, scale, score_threshold)**: معالجة كاملة للكشف: تحجيم، forward، فك تشفير الصناديق مع NMS، إرجاع قائمة (bbox, landmarks, confidence). + - `align_multi(self, image, face_boxes, output_size, scale)`: قص ومحاذاة وجوه متعددة. + - `batched_detect_faces(self, images, img_shapes, thresholds, scales, score_threshold)**: كشف دفعة من الصور. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: extras/facexlib/detection/retinaface_net.py, extras/facexlib/detection/retinaface_utils.py, extras/facexlib/detection/align_trans.py +- **يُستدعى بواسطة**: extras/facexlib/detection/__init__.py +- **الأثر البرمجي**: قلب نظام كشف الوجوه في facexlib diff --git a/extras/facexlib/detection/retinaface_net.md b/extras/facexlib/detection/retinaface_net.md new file mode 100644 index 0000000000..c05e38b83c --- /dev/null +++ b/extras/facexlib/detection/retinaface_net.md @@ -0,0 +1,22 @@ +--- +### 📄 docs/extras/facexlib/detection/retinaface_net.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +يُعرّف البنية الشبكية (network architecture) لـ RetinaFace: FPN (Feature Pyramid Network) مع SSH (Single Stage Headless)، طبقات الكشف (Classification + BBox Regression + Landmark Regression)، والـ backbone (MobileNet أو ResNet). + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class ConvDPUnit(nn.Module)**: وحدة التفاف مع Depthwise + Pointwise. +- **class ConvUnit(nn.Module)**: وحدة التفاف مع BatchNorm + PReLU. +- **class MobileNetV1(nn.Module)**: شبكة أساسية MobileNetV1. +- **class FPN(nn.Module)**: شبكة هرم الميزات مع 3 مستويات (C3, C4, C5 → P3, P4, P5) مع Conv2d 1×1. +- **class SSH(nn.Module)**: وحدات كشف للمقاييس المتعددة (P3, P4, P5) مع ContextModule و Conv2d 3×3. +- **class ClassHead(nn.Module)**: رأس تصنيف - Conv2d ينتج قناتين (وجه/خلفية). +- **class BboxHead(nn.Module)**: رأس انحدار الصندوق - Conv2d ينتج 4 قنوات (x, y, w, h). +- **class LandmarkHead(nn.Module)**: رأس نقاط المعالم - Conv2d ينتج 10 قنوات (5 نقاط × 2). +- **class RetinaFaceMobileNet(nn.Module)**: RetinaFace الكامل مع MobileNet backbone. +- **class RetinaFaceResNet50(nn.Module)**: RetinaFace الكامل مع ResNet50 backbone. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: torch, torch.nn, math +- **يُستدعى بواسطة**: extras/facexlib/detection/retinaface.py (RetinaFace) +- **الأثر البرمجي**: البنية الأساسية لنموذج كشف الوجوه diff --git a/extras/facexlib/detection/retinaface_utils.md b/extras/facexlib/detection/retinaface_utils.md new file mode 100644 index 0000000000..456aafadf6 --- /dev/null +++ b/extras/facexlib/detection/retinaface_utils.md @@ -0,0 +1,16 @@ +--- +### 📄 docs/extras/facexlib/detection/retinaface_utils.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +أدوات مساعدة لـ RetinaFace: توليد مربعات أولية (Prior Boxes) لأحجام مختلفة، فك تشفير توقعات الشبكة إلى صناديق ونقاط معالم حقيقية، وتطبيق NMS (Non-Maximum Suppression) لإزالة الاكتشافات المكررة. يستخدم IOU (Intersection Over Union) لتصفية الصناديق المتداخلة. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class PriorBox**: توليد مربعات أولية (prior/anchor boxes) على خرائط ميزات متعددة المقاييس. +- **decode(loc, priors, variances)**: فك تشفير توقعات الانحدار إلى صناديق إحاطة حقيقية. +- **decode_landm(pre, priors, variances)**: فك تشفير توقعات نقاط المعالم. +- **nms(dets, threshold, force_cpu)**: قمع غير أقصى - إزالة الصناديق ذات IOU > threshold. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: torch, numpy, math +- **يُستدعى بواسطة**: extras/facexlib/detection/retinaface.py (في detect_faces لمعالجة المخرجات) +- **الأثر البرمجي**: ضروري لمعالجة مخرجات الشبكة وتحويلها إلى اكتشافات قابلة للاستخدام diff --git a/extras/facexlib/parsing/__init__.md b/extras/facexlib/parsing/__init__.md new file mode 100644 index 0000000000..c31709dcb7 --- /dev/null +++ b/extras/facexlib/parsing/__init__.md @@ -0,0 +1,14 @@ +--- +### 📄 docs/extras/facexlib/parsing/__init__.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +ملف تهيئة حزمة parsing في facexlib. يُصدّر دالة init_parsing_model لتحميل نموذج تجزئة الوجه (face parsing) حسب الاسم. يُوفّر واجهة موحدة لنماذج BiSeNet و Parsenet المستخدمة في تجزئة أجزاء الوجه (العيون، الأنف، الفم، إلخ). + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **init_parsing_model(name, half=False, device='cuda')**: إنشاء نموذج تجزئة: تحميل BiSeNet أو Parsenet من الأوزان، إرجاع النموذج على الجهاز المطلوب. + - يدعم: 'bisenet', 'parsenet'. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: extras/facexlib/parsing/bisenet.py, extras/facexlib/parsing/parsenet.py, torch +- **يُستدعى بواسطة**: extras/facexlib/utils/face_restoration_helper.py (FaceRestoreHelper) +- **الأثر البرمجي**: نقطة الوصول الوحيدة لنماذج تجزئة الوجه diff --git a/extras/facexlib/parsing/__init__.py.md b/extras/facexlib/parsing/__init__.py.md new file mode 100644 index 0000000000..d7999d4653 --- /dev/null +++ b/extras/facexlib/parsing/__init__.py.md @@ -0,0 +1,10 @@ +# وثيقة ملف: __init__.py.md +## 1. الوظيفة الأساسية للملف +ملف التهيئة لوحدة تحليل الوجوه، يوفر دالة لتهيئة نموذج التحليل المطلوب. + +## 2. الدوال والكلاسات (Functions & Classes) +- **init_parsing_model()**: دالة لتهيئة نموذج تحليل الوجوه مع تحميل الأوزان المسبقة + +## 3. ال依赖يات والعلاقات +- الملفات التي تستدعي هذا الملف: extras/facexlib/utils/face_restoration_helper.py +- الملفات التي يستدعيها هذا الملف لتشغيله: extras/facexlib/utils/__init__.py, extras/facexlib/parsing/bisenet.py, extras/facexlib/parsing/parsenet.py diff --git a/extras/facexlib/parsing/bisenet.md b/extras/facexlib/parsing/bisenet.md new file mode 100644 index 0000000000..1fd7657f6c --- /dev/null +++ b/extras/facexlib/parsing/bisenet.md @@ -0,0 +1,19 @@ +--- +### 📄 docs/extras/facexlib/parsing/bisenet.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نموذج BiSeNet (Bilateral Segmentation Network) لتجزئة الوجه. يُصنّف كل بكسل في الصورة إلى فئة من 19 فئة (الجلد، الحاجب الأيسر، الحاجب الأيمن، العين اليسرى، العين اليمنى، الأنف، الفم، الشفة العليا، الشفة السفلى، الشعر، إلخ). يستخدم ResNet18 كـ backbone مع مسارين: Spatial Path + Context Path. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class ConvBNReLU(nn.Module)**: Conv2d + BatchNorm + ReLU. +- **class ResNet18(nn.Module)**: ResNet18 معدّل لتجزئة الصور. +- **class SpatialPath(nn.Module)**: المسار المكاني - 3 طبقات Conv مع stride=2 للحفاظ على الدقة المكانية. +- **class AttentionRefinementModule(nn.Module)**: وحدة تحسين الانتباه مع Global Average Pooling. +- **class ContextPath(nn.Module)**: مسار السياق - ResNet18 + ARM لجمع السياق العام. +- **class FeatureFusionModule(nn.Module)**: دمج الميزات المكانية والسياقية مع انتباه قنوات. +- **class BiSeNet(nn.Module)**: النموذج الكامل: SpatialPath + ContextPath + FeatureFusionModule + رأس الإخراج (3×Conv لإنتاج 19 قناة فئة). + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: torch, torch.nn, functools, extras/facexlib/parsing/resnet.py +- **يُستدعى بواسطة**: extras/facexlib/parsing/__init__.py +- **الأثر البرمجي**: أساسي لتجزئة أجزاء الوجه diff --git a/extras/facexlib/parsing/parsenet.md b/extras/facexlib/parsing/parsenet.md new file mode 100644 index 0000000000..e6df55d3e4 --- /dev/null +++ b/extras/facexlib/parsing/parsenet.md @@ -0,0 +1,16 @@ +--- +### 📄 docs/extras/facexlib/parsing/parsenet.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نموذج ParseNet (Face Parsing Network) بديل لـ BiSeNet. يُنفّذ شبكة تجزئة أبسط مع ResNet bottleneck blocks. يُصنّف كل بكسل إلى فئة من الـ 19 فئة. يُستخدم كبديل (fallback) إذا لم يكن BiSeNet متاحاً. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class Bottleneck(nn.Module)**: كتلة ResNet bottleneck (Conv1×1 → Conv3×3 → Conv1×1). +- **class ResNet(nn.Module)**: ResNet معدّل مع طبقات Conv أولية + 4 طبقات من Bottleneck blocks. +- **class ParseNet(nn.Module)**: النموذج الكامل: ResNet backbone + Conv2d نهائي لإنتاج 19 قناة فئة. + - `forward(self, x)`: تشغيل الصورة عبر backbone ثم Conv2d، إرجاع خريطة التجزئة. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: torch, torch.nn +- **يُستدعى بواسطة**: extras/facexlib/parsing/__init__.py +- **الأثر البرمجي**: بديل لتجزئة الوجه عند عدم توفر BiSeNet diff --git a/extras/facexlib/parsing/resnet.md b/extras/facexlib/parsing/resnet.md new file mode 100644 index 0000000000..0e334f6490 --- /dev/null +++ b/extras/facexlib/parsing/resnet.md @@ -0,0 +1,15 @@ +--- +### 📄 docs/extras/facexlib/parsing/resnet.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +ResNet معدّل يستخدم كـ backbone لنموذج BiSeNet. يُنفّذ ResNet18 مخصصاً مع BatchNorm و ReLU، يحافظ على خرائط الميزات بأحجام مختلفة (C1: 64, C2: 64, C3: 128, C4: 256) للتغذية إلى مسار السياق في BiSeNet. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class BasicBlock(nn.Module)**: كتلة ResNet أساسية (Conv3×3 + BN + ReLU + Conv3×3 + BN + Residual). +- **class ResNet18(nn.Module)**: ResNet18 كامل: Conv أولي (7×7) + MaxPool + 4 طبقات BasicBlock (2,2,2,2). + - `forward(self, x)`: إرجاع قاموس {'c1', 'c2', 'c3', 'c4'} بمقاييس مختلفة. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: torch, torch.nn +- **يُستدعى بواسطة**: extras/facexlib/parsing/bisenet.py (ContextPath) +- **الأثر البرمجي**: أساسي لـ BiSeNet diff --git a/extras/facexlib/utils/__init__.md b/extras/facexlib/utils/__init__.md new file mode 100644 index 0000000000..5cc98f33ba --- /dev/null +++ b/extras/facexlib/utils/__init__.md @@ -0,0 +1,14 @@ +--- +### 📄 docs/extras/facexlib/utils/__init__.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +ملف تهيئة حزمة utils في facexlib. يُصدّر الدوال المساعدة العامة: تحميل النماذج من الملفات، و FaceRestoreHelper لإدارة دورة حياة استعادة الوجه الكاملة (كشف + محاذاة + استعادة + لصق). + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **load_file_from_url(url, model_dir, progress, file_name)**: تحميل ملف من URL (مع آلية إعادة توجيه/download)، حفظه في model_dir، إرجاع المسار المحلي. +- **class FaceRestoreHelper**: فئة إدارة استعادة الوجه الكاملة. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: extras/facexlib/utils/misc.py, extras/facexlib/utils/face_restoration_helper.py, urllib, os +- **يُستدعى بواسطة**: extras/face_crop.py, extras/facexlib/utils/face_restoration_helper.py +- **الأثر البرمجي**: نقطة الوصول لأدوات استعادة الوجه diff --git a/extras/facexlib/utils/__init__.py.md b/extras/facexlib/utils/__init__.py.md new file mode 100644 index 0000000000..b806244831 --- /dev/null +++ b/extras/facexlib/utils/__init__.py.md @@ -0,0 +1,16 @@ +# وثيقة ملف: __init__.py.md +## 1. الوظيفة الأساسية للملف +ملف التهيئة لوحدة الأدوات المساعدة، يوفر الدوال الأساسية للتعامل مع الوجوه. + +## 2. الدوال والكلاسات (Functions & Classes) +- **align_crop_face_landmarks()**: محاذاة وقص الوجه بناءً على نقاط المعالم +- **compute_increased_bbox()**: حساب صندوق التحديد الموسّع +- **get_valid_bboxes()**: الحصول على صناديق التحديد الصالحة +- **paste_face_back()**: لصق الوجه المستعاد في الصورة الأصلية +- **img2tensor()**: تحويل الصورة إلى tensor +- **load_file_from_url()**: تحميل ملف من URL +- **scandir()**: فحص المجلد + +## 3. ال依赖يات والعلاقات +- الملفات التي تستدعي هذا الملف: extras/facexlib/detection/__init__.py, extras/facexlib/parsing/__init__.py, extras/facexlib/utils/face_restoration_helper.py +- الملفات التي يستدعيها هذا الملف لتشغيله: extras/facexlib/utils/face_utils.py, extras/facexlib/utils/misc.py diff --git a/extras/facexlib/utils/face_restoration_helper.md b/extras/facexlib/utils/face_restoration_helper.md new file mode 100644 index 0000000000..77e1a67e91 --- /dev/null +++ b/extras/facexlib/utils/face_restoration_helper.md @@ -0,0 +1,24 @@ +--- +### 📄 docs/extras/facexlib/utils/face_restoration_helper.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +فئة FaceRestoreHelper التي تُدير عملية استعادة الوجه بالكامل: قراءة الصورة، كشف الوجوه (بـ RetinaFace)، استخراج نقاط المعالم الخمسية، محاذاة الوجه (Affine)، دمج الوجوه المستعادة في الصورة الأصلية. تُستخدم من face_crop.py لقص الوجه الأكبر. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **get_largest_face(det_faces, h, w)**: إرجاع مؤشر أكبر وجه (أعلى مساحة صندوق) من قائمة الاكتشافات. +- **get_center_face(det_faces, h, w)**: إرجاع مؤشر الوجه الأقرب لمركز الصورة. +- **class FaceRestoreHelper**: فئة إدارة استعادة الوجه. + - `__init__(self, upscale_factor, face_size, crop_ratio, det_model, save_ext, use_parse, device)`: تهيئة الإعدادات والمعاملات. + - `set_image_and_size(self, img, img_is_GPU)`: تعيين الصورة وأبعادها الأصلية. + - `read_image(self, img_path)`: قراءة الصورة من مسار ملف. + - `get_face_landmarks_5(self)**: كشف الوجوه، استخراج landmarks لأول 4 وجوه. + - `align_warp_face(self, save_cropped_path=None, skip_align=False)**: محاذاة الوجوه عبر التحويل الأفيني وقصها. + - `get_inverse_affine(self, save_inverse_affine_path=None)**: حساب التحويل الأفيني العكسي. + - `add_restored_face(self, face, index)**: إضافة وجه مستعاد. + - `paste_faces_to_input_image(self)**: لصق الوجوه المستعادة في الصورة الأصلية مع مزج (blending). + - `clean_all(self)**: تنظيف جميع البيانات المؤقتة. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: extras/facexlib/detection/__init__.py (init_detection_model), extras/facexlib/parsing/__init__.py, extras/facexlib/utils/misc.py, cv2, numpy, torch +- **يُستدعى بواسطة**: extras/face_crop.py (crop_image), extras/facexlib/utils/__init__.py +- **الأثر البرمجي**: أساسي لعمل face_crop.py واستخراج الوجوه للـ Image Prompt diff --git a/extras/facexlib/utils/face_utils.md b/extras/facexlib/utils/face_utils.md new file mode 100644 index 0000000000..5e60885cc9 --- /dev/null +++ b/extras/facexlib/utils/face_utils.md @@ -0,0 +1,15 @@ +--- +### 📄 docs/extras/facexlib/utils/face_utils.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +أدوات مساعدة عامة لمعالجة الوجوه: إعادة تحجيم الصور مع الحفاظ على النسبة (resize_and_crop)، إعادة التحجيم مع الحشو للحفاظ على النسبة (resize_and_pad)، وتحويل الصور إلى وحدات معالجة (image2tensor). + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **resize_and_crop(img, target_size, center_crop)**: إعادة تحجيم (LANCZOS) وقص central crop حسب الهدف. +- **resize_and_pad(img, target_size)**: إعادة تحجيم مع padding أسود للحفاظ على النسبة. +- **image2tensor(img, bgr2rgb, float32)**: تحويل PIL.Image/Squeeze إلى tensor (3×H×W) مع تطبيع. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: cv2, numpy, torch, PIL +- **يُستدعى بواسطة**: extras/facexlib/utils/face_restoration_helper.py +- **الأثر البرمجي**: أدوات مساعدة لمعالجة الصور في استعادة الوجه diff --git a/extras/facexlib/utils/misc.md b/extras/facexlib/utils/misc.md new file mode 100644 index 0000000000..d53765e8d1 --- /dev/null +++ b/extras/facexlib/utils/misc.md @@ -0,0 +1,14 @@ +--- +### 📄 docs/extras/facexlib/utils/misc.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +دوال مساعدة متنوعة: تحميل الملفات من URLs مع دعم إعادة التوجيه (redirect)، إنشاء المجلدات، وإدارة مسارات التحميل. يُستخدم بشكل أساسي لتحميل أوزان النماذج (FaceRestoreHelper.pth، RetinaFace.pth، إلخ) في facexlib. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **load_file_from_url(url, model_dir=None, progress=True, file_name=None)**: تحميل ملف من URL. يتحقق من ملفات التحميل المسبق، يُنشئ المجلدات، ويُعيد المسار المحلي. +- **buffered_touch(file_path, times=None)**: تحديث وقت تعديل الملف. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: os, os.path as osp, requests, torch.hub +- **يُستدعى بواسطة**: extras/facexlib/utils/__init__.py, extras/facexlib/utils/face_restoration_helper.py +- **الأثر البرمجي**: أساسي لتحميل أوزان جميع نماذج facexlib diff --git a/extras/inpaint_mask.md b/extras/inpaint_mask.md new file mode 100644 index 0000000000..8a12abb473 --- /dev/null +++ b/extras/inpaint_mask.md @@ -0,0 +1,16 @@ +--- +### 📄 docs/extras/inpaint_mask.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +توليد أقنعة Inpainting باستخدام GroundingDINO للكشف النصي + SAM (Segment Anything Model) للتقطيع الدقيق (أو rembg لإزالة الخلفية). يُحدد الكائنات في الصورة بناءً على برومبت نصي (مثل 'eye', 'face', 'cat') ويولّد قناعاً ثنائياً للتطبيق على Inpaint Worker. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class SAMOptions**: حاوية تكوين لـ GroundingDINO و SAM. + - المعاملات: dino_prompt, dino_erode_or_dilate, dino_debug, box_threshold, text_threshold, sam_model, sam_max_detections, cloth_category. +- **optimize_masks(masks)**: إزالة المناطق الصغيرة والثقوب من الأقنعة المُتنبأ بها باستخدام remove_small_regions (من segment_anything). +- **generate_mask_from_image(image, sam_options)**: الدالة الرئيسية: تشغيل GroundingDINO للكشف عن الصناديق المُحِدِّدة، تغذية الصناديق إلى SAM للتقطيع، إرجاع القناع الثنائي النهائي (PIL Image) وعدد الاكتشافات. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: modules/config.py, extras/GroundingDINO/util/inference.py (default_groundingdino), extras/sam/predictor.py (SamPredictor), rembg (remove, new_session), segment_anything (sam_model_registry, remove_small_regions) +- **يُستدعى بواسطة**: webui.py (دالة generate_mask), modules/async_worker.py, experiments_mask_generation.py +- **الأثر البرمجي**: تعطيله يُلغي ميزة Generate Mask في واجهة Inpaint diff --git a/extras/interrogate.md b/extras/interrogate.md new file mode 100644 index 0000000000..3f8bd7ae1a --- /dev/null +++ b/extras/interrogate.md @@ -0,0 +1,16 @@ +--- +### 📄 docs/extras/interrogate.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +توليد وصف نصي (caption) للصور باستخدام BLIP (Bootstrapping Language-Image Pre-training). يُحمّل النموذج عند الطلب (lazy loading)، يُعالج الصورة بإعادة التحجيم (384×384) والتطبيع، ثم يُولّد وصفاً طبيعياً باستخدام BLIP Decoder مع تسلسل إخراج يصل إلى 50 رمزاً. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class Interrogator**: محرك وصف الصور BLIP. + - `__init__(self)`: تهيئة مراجع النموذج، الجهاز، وإعدادات dtype (FP16 إن أمكن). + - `interrogate(self, image)`: تحميل BLIP Decoder عند الحاجة، معالجة الصورة (resize to 384, normalize)، توليد caption عبر model.generate مع تكرار 3 مرات عند الفشل، إرجاع النص الموصوف. +- **default_interrogator**: كائن افتراضي من Interrogator().interrogate. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: ldm_patched/modules/model_management.py, modules/model_loader.py, modules/config.py, ldm_patched/modules/model_patcher.py, extras/BLIP/models/blip.py (blip_decoder), torchvision (transforms, InterpolationMode) +- **يُستدعى بواسطة**: webui.py (دالة trigger_describe), experiments_interrogate.py +- **الأثر البرمجي**: تعطيله يُلغي ميزة Describe Image في واجهة المستخدم diff --git a/extras/ip_adapter.md b/extras/ip_adapter.md new file mode 100644 index 0000000000..41a1b49b19 --- /dev/null +++ b/extras/ip_adapter.md @@ -0,0 +1,20 @@ +--- +### 📄 docs/extras/ip_adapter.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نقل ميزات الصورة إلى نموذج Diffusion عبر IP-Adapter. يُنفّذ آلية Cross-Attention محسّنة (Midjourney-style) تحقن ميزات CLIP image في طبقات attention لـ UNet. يدعم SD 1.x و SDXL مع نسخة Plus التي تستخدم Perceiver Resampler لتقليل عدد رموز الصورة إلى 16 استعلاماً ثابتاً. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class ImageProjModel(nn.Module)**: إسقاط تضمينات CLIP (768/1280/1664) إلى فضاء Cross-Attention (2048). +- **class To_KV(nn.Module)**: تعيين التضمينات المسقطة إلى أزواج key/value لجميع طبقات UNet attention. +- **class IPAdapterModel(nn.Module)**: يدمج ImageProjModel (أو Resampler للنسخة Plus) مع طبقات To_KV، يُحمّل الأوزان من safetensors. +- **sdp(keys, values, queries)**: غلاف للانتباه المُحسَّن (scaled dot-product memory-efficient attention). +- **load_ip_adapter(ckpt_path)**: تحميل CLIP vision model، التضمينات السالبة، وأوزان IP adapter. إرجاع (ip_adapter_model, clip_vision, clip_vision_negative). +- **clip_preprocess(image, size)**: تطبيع الصور لمدخل CLIP vision. +- **preprocess(clip_vision, ip_adapter, image, weight, dtype, device)**: تشغيل CLIP vision encoding، إسقاط الناتج عبر IP adapter، إرجاع condition tensors. +- **patch_model(model, ip_adapter, weight, start_at, end_at)**: استنساخ النموذج، ترقيع طبقات attention UNet بحقن key/value من IP adapter باستخدام تركيبة Midjourney. إرجاع النموذج المُرَقَّع. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: ldm_patched/modules/clip_vision.py, ldm_patched/modules/model_management.py, ldm_patched/ldm/modules/attention.py, extras/resampler.py (Resampler), ldm_patched/modules/model_patcher.py, modules/core.py, modules/ops.py, safetensors.torch +- **يُستدعى بواسطة**: modules/async_worker.py +- **الأثر البرمجي**: هذا الملف أساسي لميزة Image Prompt في Fooocus diff --git a/extras/preprocessors.md b/extras/preprocessors.md new file mode 100644 index 0000000000..5ccd82b20d --- /dev/null +++ b/extras/preprocessors.md @@ -0,0 +1,18 @@ +--- +### 📄 docs/extras/preprocessors.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +معالجة مسبقة للصور لاستخراج خرائط الحواف (edge maps) كمدخلات لـ ControlNet. يُنفّذ كشف Canny المحسَّن (متعدد القنوات ومتعدد المقاييس الهرمية) وطريقة CPDS (Color-to-Gray) لتحويل الصور الملونة إلى تدرج رمادي مع الحفاظ على تباين الحواف. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **centered_canny(x)**: تطبيق Canny edge detection على قناة واحدة (مستوى رمادي). +- **centered_canny_color(x)**: تطبيق Canny على كل قناة RGB بشكل مستقل، دمج النتائج بالكومة (stack) عبر axis=2. +- **pyramid_canny_color(x, low, high)**: بناء هرم حواف متعدد المقاييس بتشغيل Canny على 9 مقاييس مختلفة (1.0, 0.9, 0.8, ... 0.2) ودمج النتائج بالمتوسط. +- **norm255(x, lo, hi)**: تطبيع مصفوفة float32 إلى النطاق 0-255 باستخدام percentile clipping. +- **canny_pyramid(x)**: دمج pyramid Canny على الصورة الملونة مع التطبيع إلى uint8. +- **cpds(x)**: تحويل الصورة الملونة إلى رمادي باستخدام decolor (OpenCV) مع تحليل الكثافة/التعزيز وتعويض الإزاحة. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: cv2 (OpenCV), numpy +- **يُستدعى بواسطة**: modules/async_worker.py +- **الأثر البرمجي**: تعطيله يُلغي ميزة توليد خرائط الحواف لـ ControlNet diff --git a/extras/resampler.md b/extras/resampler.md new file mode 100644 index 0000000000..08d3cd38c4 --- /dev/null +++ b/extras/resampler.md @@ -0,0 +1,18 @@ +--- +### 📄 docs/extras/resampler.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +تنفيذ Perceiver Resampler لتقليل عدد رموز ميزات الصورة من CLIP (257 رمزاً) إلى عدد ثابت من الاستعلامات القابلة للتعلم (16 استعلاماً). يُستخدم في IP-Adapter Plus لتحسين كفاءة ربط ميزات الصورة بـ Cross-Attention في UNet. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class FeedForward(nn.Module)**: شبكة تغذية أمامية مع LayerNorm + Linear + GELU + Dropout + Linear. +- **reshape_tensor(x, heads)**: إعادة تشكيل tensor من (batch, length, width) إلى (batch, heads, length, dim_per_head) للانتباه متعدد الرؤوس. +- **class PerceiverAttention(nn.Module)**: انتباه تبادلي (cross-attention): الاستعلامات الكامنة (latents) تنتبه إلى مفاتيح/قيم الصورة+الكامنة المدمجة. + - `forward(self, x, latents)`: حساب attention مع RoPE وتطبيع. +- **class Resampler(nn.Module)**: كامل Perceiver Resampler: استعلامات كامنة قابلة للتعلم (nn.Parameter)، طبقات إسقاط (projection)، وتكرار 4 طبقات من Attention+FFN. + - `forward(self, x)`: إسقاط المدخلات عبر proj_in، تشغيل عبر طبقات الانتباه/FFN، إرجاع التضمينات المُعاد أخذ العينات. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: torch, torch.nn, math +- **يُستدعى بواسطة**: extras/ip_adapter.py +- **الأثر البرمجي**: تعطيله يُعطّل IP-Adapter Plus diff --git a/extras/safety_checker/models/safety_checker.md b/extras/safety_checker/models/safety_checker.md new file mode 100644 index 0000000000..1fd5158350 --- /dev/null +++ b/extras/safety_checker/models/safety_checker.md @@ -0,0 +1,16 @@ +--- +### 📄 docs/extras/safety_checker/models/safety_checker.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نموذج فحص أمان NSFW مخصص (ليس من transformers). يُنفّذ StableDiffusionSafetyChecker مخصّصاً مع CLIP image encoder (VisionTransformer) + ConceptClassifier (3 طبقات خطية) لتصنيف الصور إلى فئات NSFW. يُستخدم كبديل لنموذج transformers عندما لا يتوفر نموذج الـ safety checker الافتراضي. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class VisionTransformer(nn.Module)**: CLIP image encoder مخصّص (ViT-B/32): PatchEmbed + TransformerBlocks + LayerNorm. +- **class ConceptClassifier(nn.Module)**: مصنّف NSFW: Linear(768,512) + GELU + Linear(512,256) + GELU + Linear(256, concept_tokens). +- **class StableDiffusionSafetyChecker(nn.Module)**: النموذج الكامل: ViT + ConceptClassifier. + - `forward(self, clip_input)`: تشغيل الصورة عبر ViT ثم المصنِّف، إرجاع logits. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: torch, torch.nn, collections +- **يُستدعى بواسطة**: extras/censor.py (Censor.init - تحميل النموذج) +- **الأثر البرمجي**: بديل فحص NSFW عند عدم توفر نموذج transformers الافتراضي diff --git a/extras/safety_checker/safety_checker.md b/extras/safety_checker/safety_checker.md new file mode 100644 index 0000000000..84614859e1 --- /dev/null +++ b/extras/safety_checker/safety_checker.md @@ -0,0 +1,15 @@ +--- +### 📄 مسار الملف الافتراضي: docs/extras/safety_checker/safety_checker.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نموذج كشف NSFW (Stable Diffusion Safety Checker) المُعاد تكييفه من HuggingFace diffusers. يكشف المحتوى غير اللائق باستخدام مسافة التشابه الكوسينية مع تضمينات المفاهيم المُتعلّمة. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **StableDiffusionSafetyChecker(PreTrainedModel)**: كاشف NSFW القائم على CLIP vision. + - `forward(self, clip_input, images)`: فحص الصور وإرجاع نسخة مُعتمة + أعلام boolean. +- **cosine_distance(image_embeds, text_embeds)**: حساب مصفوفة التشابه الكوسينية. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: torch, transformers (CLIPVisionModel, PreTrainedModel) +- **يُستخدم بواسطة**: extras/censor.py +- **الأثر البرمجي**: النموذج الأساسي للكشف عن NSFW diff --git a/extras/sam/predictor.md b/extras/sam/predictor.md new file mode 100644 index 0000000000..4c4314e2d4 --- /dev/null +++ b/extras/sam/predictor.md @@ -0,0 +1,20 @@ +--- +### 📄 docs/extras/sam/predictor.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +غلاف (wrapper) لـ SAM Predictor (Segment Anything Model) المُحمَّل عبر model_management. يُنشئ نموذج SAM (vit_b/vit_l/vit_h)، يُخزّن تضمينات الصورة مؤقتاً للإسراع، ويُقدّم دالة predict التي تأخذ صناديق إحاطة (boxes) من GroundingDINO وتُعيد أقنعة التقطيع المقابلة. يُستخدم في inpaint_mask.py للتقطيع الدقيق بعد الكشف النصي. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class SamPredictor**: فئة التنبؤ بالقناع. + - `__init__(self, model)`: تخزين النموذج وتجهيز الجهاز. + - `set_image(self, image)`: تعيين الصورة (numpy HWC)، تحويلها إلى tensor، حساب تضمين الصورة عبر model.image_encoder، تخزينه للتسريع. + - `set_torch_image(self, image)`: تعيين الصورة كـ tensor مباشر. + - `predict(self, boxes)`: التنبؤ بالقناع: تمرير boxes عبر model.prompt_encoder + mask_decoder للحصول على الأقنعة. + - `predict_torch(self, boxes)`: التنبؤ باستخدام tensors. + - `get_image_embedding(self)`: إرجاع تضمين الصورة المُخزَّن. + - `reset_image(self)`: إعادة تعيين الصورة والتضمين. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: segment_anything (sam_model_registry), ldm_patched/modules/model_management.py, ldm_patched/modules/model_patcher.py +- **يُستدعى بواسطة**: extras/inpaint_mask.py (generate_mask_from_image) +- **الأثر البرمجي**: أساسي لتقطيع الكائنات في ميزة توليد الأقنعة diff --git a/extras/vae_interpose.md b/extras/vae_interpose.md new file mode 100644 index 0000000000..9913ac9797 --- /dev/null +++ b/extras/vae_interpose.md @@ -0,0 +1,17 @@ +--- +### 📄 docs/extras/vae_interpose.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +تحويل الخوارزميات الكامنة (latent representations) بين فضاءات VAE المختلفة (SDXL ↔ SD 1.x). يستخدم شبكة CNN مع كتل residuals لتكييف الـ latents من SDXL (4×64×64) إلى SD 1.x (4×64×64) مع الحفاظ على البنية والمحتوى. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **class ResBlock(nn.Module)**: كتلة متبقية مع BatchNorm، 3 طبقات Conv2d + SiLU، و Dropout. +- **class ExtractBlock(nn.Module)**: كتلة توسيع القنوات: مسار قصير (Conv2d 1×1) + مسار طويل (Conv2d 3×3 + SiLU + Conv2d 3×3). +- **class InterposerModel(nn.Module)**: شبكة interposer الرئيسية: رأس (ExtractBlock)، قلب (Upsample + 6× ResBlocks مع تخطي)، ذيل (Conv2d 4→4). + - `forward(self, x)`: تمرير الـ latent عبر الرأس، القلب، الذيل، إعادة الخرج. +- **parse(x)**: تحميل النموذج في أول استدعاء (lazy load من safetensors باستخدام model_management)، تحويل الـ latent عبر النموذج مع إدارة تلقائية للـ device/dtype. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: ldm_patched/modules/model_management.py, ldm_patched/modules/model_patcher.py, modules/config.py, safetensors.torch, torch, torch.nn +- **يُستدعى بواسطة**: modules/default_pipeline.py (لربط الـ base model بـ refiner model) +- **الأثر البرمجي**: تعطيله يمنع التبديل بين SDXL و SD 1.x في نموذج التحسين (refiner) diff --git a/extras/wd14tagger.md b/extras/wd14tagger.md new file mode 100644 index 0000000000..83076b36fc --- /dev/null +++ b/extras/wd14tagger.md @@ -0,0 +1,19 @@ +--- +### 📄 docs/extras/wd14tagger.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +تصنيف الصور الأنمي واستخراج الوسوم (tags) باستخدام WD14 Moat Tagger (ONNX). يُحمّل النموذج بصيغة ONNX مع قائمة وسوم CSV، يُعيد تحجيم الصورة مع padding للحفاظ على النسبة (448×448)، يُشغّل الاستدلال (inference)، يُصفّي الوسوم حسب عتبات الثقة (general=0.35, character=0.85)، ويُرجع وسوماً مفصولة بفواصل. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **default_interrogator(image, threshold, general_threshold, exclude_tags, bypass)**: الدالة الرئيسية: + - تحميل ONNX InferenceSession و CSV tag list. + - تحجيم الصورة مع padding (PIL.Image.LANCZOS) إلى 448×448. + - تطبيع وتشغيل الاستدلال عبر session.run. + - تصفية الوسوم حسب العتبات (general/character). + - استبعاد الوسوم المحددة في exclude_tags. + - إرجاع وسوم مفصولة بفواصل (comma-separated). + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يستدعي**: modules/config.py, modules/model_loader.py, onnxruntime (InferenceSession), PIL (Image), numpy, csv +- **يُستدعى بواسطة**: webui.py (trigger_describe للوضع Anime), experiments_interrogate.py +- **الأثر البرمجي**: تعطيله يُلغي وصف الصور الأنمي في واجهة المستخدم diff --git a/img/Screenshot 2026-06-03 042915.png b/img/Screenshot 2026-06-03 042915.png new file mode 100644 index 0000000000..33068e26b0 Binary files /dev/null and b/img/Screenshot 2026-06-03 042915.png differ diff --git a/img/Screenshot 2026-06-03 042933.png b/img/Screenshot 2026-06-03 042933.png new file mode 100644 index 0000000000..78a7e6c129 Binary files /dev/null and b/img/Screenshot 2026-06-03 042933.png differ diff --git a/img/Screenshot 2026-06-03 042939.png b/img/Screenshot 2026-06-03 042939.png new file mode 100644 index 0000000000..736a6ce035 Binary files /dev/null and b/img/Screenshot 2026-06-03 042939.png differ diff --git a/img/Screenshot 2026-06-03 042945.png b/img/Screenshot 2026-06-03 042945.png new file mode 100644 index 0000000000..3547020f07 Binary files /dev/null and b/img/Screenshot 2026-06-03 042945.png differ diff --git a/img/Screenshot 2026-06-03 042951.png b/img/Screenshot 2026-06-03 042951.png new file mode 100644 index 0000000000..c02eafe615 Binary files /dev/null and b/img/Screenshot 2026-06-03 042951.png differ diff --git a/img/Screenshot 2026-06-03 042956.png b/img/Screenshot 2026-06-03 042956.png new file mode 100644 index 0000000000..7709ea05da Binary files /dev/null and b/img/Screenshot 2026-06-03 042956.png differ diff --git a/img/Screenshot 2026-06-03 043020.png b/img/Screenshot 2026-06-03 043020.png new file mode 100644 index 0000000000..45bbac99ee Binary files /dev/null and b/img/Screenshot 2026-06-03 043020.png differ diff --git a/img/Screenshot 2026-06-03 043025.png b/img/Screenshot 2026-06-03 043025.png new file mode 100644 index 0000000000..833bdd5cba Binary files /dev/null and b/img/Screenshot 2026-06-03 043025.png differ diff --git a/img/Screenshot 2026-06-03 043038.png b/img/Screenshot 2026-06-03 043038.png new file mode 100644 index 0000000000..acb43aacbd Binary files /dev/null and b/img/Screenshot 2026-06-03 043038.png differ diff --git a/img/Screenshot 2026-06-03 043047.png b/img/Screenshot 2026-06-03 043047.png new file mode 100644 index 0000000000..7b835adcd5 Binary files /dev/null and b/img/Screenshot 2026-06-03 043047.png differ diff --git a/img/Screenshot 2026-06-03 043052.png b/img/Screenshot 2026-06-03 043052.png new file mode 100644 index 0000000000..a1f1452df6 Binary files /dev/null and b/img/Screenshot 2026-06-03 043052.png differ diff --git a/img/Screenshot 2026-06-03 043057.png b/img/Screenshot 2026-06-03 043057.png new file mode 100644 index 0000000000..31f9840c1a Binary files /dev/null and b/img/Screenshot 2026-06-03 043057.png differ diff --git a/img/Screenshot 2026-06-03 043104.png b/img/Screenshot 2026-06-03 043104.png new file mode 100644 index 0000000000..fd564df3f8 Binary files /dev/null and b/img/Screenshot 2026-06-03 043104.png differ diff --git a/img/Screenshot 2026-06-03 043110.png b/img/Screenshot 2026-06-03 043110.png new file mode 100644 index 0000000000..114ff4be50 Binary files /dev/null and b/img/Screenshot 2026-06-03 043110.png differ diff --git a/img/Screenshot 2026-06-03 043114.png b/img/Screenshot 2026-06-03 043114.png new file mode 100644 index 0000000000..5f8ffe39c7 Binary files /dev/null and b/img/Screenshot 2026-06-03 043114.png differ diff --git a/img/Screenshot 2026-06-03 043121.png b/img/Screenshot 2026-06-03 043121.png new file mode 100644 index 0000000000..98e7f552dd Binary files /dev/null and b/img/Screenshot 2026-06-03 043121.png differ diff --git a/img/Screenshot 2026-06-03 074253.png b/img/Screenshot 2026-06-03 074253.png new file mode 100644 index 0000000000..1f881395c4 Binary files /dev/null and b/img/Screenshot 2026-06-03 074253.png differ diff --git a/img/Screenshot 2026-06-03 074259.png b/img/Screenshot 2026-06-03 074259.png new file mode 100644 index 0000000000..d2cfcc0938 Binary files /dev/null and b/img/Screenshot 2026-06-03 074259.png differ diff --git a/img/Screenshot 2026-06-03 074304.png b/img/Screenshot 2026-06-03 074304.png new file mode 100644 index 0000000000..7585b41b1f Binary files /dev/null and b/img/Screenshot 2026-06-03 074304.png differ diff --git a/img/Screenshot 2026-06-03 074310.png b/img/Screenshot 2026-06-03 074310.png new file mode 100644 index 0000000000..cc8d6cdb86 Binary files /dev/null and b/img/Screenshot 2026-06-03 074310.png differ diff --git a/img/Screenshot 2026-06-03 074316.png b/img/Screenshot 2026-06-03 074316.png new file mode 100644 index 0000000000..c1971ca082 Binary files /dev/null and b/img/Screenshot 2026-06-03 074316.png differ diff --git a/img/Screenshot 2026-06-03 192520.png b/img/Screenshot 2026-06-03 192520.png new file mode 100644 index 0000000000..f758278043 Binary files /dev/null and b/img/Screenshot 2026-06-03 192520.png differ diff --git a/javascript/contextMenus.md b/javascript/contextMenus.md new file mode 100644 index 0000000000..d5a8a542d0 --- /dev/null +++ b/javascript/contextMenus.md @@ -0,0 +1,17 @@ +--- +### 📄 مسار الملف الافتراضي: docs/javascript/contextMenus.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نظام قائمة السياق بالنقر الماوس الأيمن (166 سطر) من A1111. يوفر API لإضافة/حذف خيارات القائمة. + +الميزة الرئيسية: خيار "Generate forever" على زر التوليد (يعيد التوليد كل 500ms). + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **appendContextMenuOption(targetElementSelector, text, callback)**: إضافة خيار للقائمة. +- **removeContextMenuOption(targetElementSelector, text)**: حذف خيار من القائمة. +- تحديد موضع القائمة ديناميكياً للبقاء ضمن حدود النافذة. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: DOM, MouseEvent +- **يُستخدم بواسطة**: webui.py +- **الأثر البرمجي**: تغيير هنا يؤثر على قوائم السياق diff --git a/javascript/edit-attention.md b/javascript/edit-attention.md new file mode 100644 index 0000000000..9acf14d23c --- /dev/null +++ b/javascript/edit-attention.md @@ -0,0 +1,17 @@ +--- +### 📄 مسار الملف الافتراضي: docs/javascript/edit-attention.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +محرر أوزان الانتباه في البرومبت (128 سطر). Ctrl/Cmd + ArrowUp/Down يُعدّل صيغة `(text:weight)`. + +التفاصيل: Delta: 0.1 لـ `()`، 0.05 لـ `<>`. يلف النص المحدد تلقائياً في `(text:1.0)` إذا لم يكن موزوناً. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- معالجة أحداث Ctrl/Cmd + ArrowUp/Down. +- تحليل صيغة الأقواسsupports both `()` and `<>`. +- تحديد الأقواس المقابلة أو الكلمة بالكامل. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: DOM Selection API +- **يُستخدم بواسطة**: webui.py +- **الأثر البرمجي**: تغيير هنا يؤثر على كيفية تعديل المستخدم لأوزان البرومبت diff --git a/javascript/imageviewer.md b/javascript/imageviewer.md new file mode 100644 index 0000000000..16fb9b659b --- /dev/null +++ b/javascript/imageviewer.md @@ -0,0 +1,19 @@ +--- +### 📄 مسار الملف الافتراضي: docs/javascript/imageviewer.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +عارض صور Lightbox بملء الشاشة (260 سطر) من A1111. يعرض الصور بحجم كامل مع تنقل وتكبير. + +الاختصارات: Escape=إغلاق، الأسهم=تنقل، S=حفظ. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **showModal(src)**: عرض صورة في نافذة منبثقة بملء الشاشة. +- **closeModal()**: إغلاق النافذة المنبثقة. +- التنقل بالأسهم في المعرض. +- تبديل التكبير (ملء الشاشة). +- وضع معاينة البلاط (tiling). + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: DOM, KeyboardEvent +- **يُستخدم بواسطة**: webui.py +- **الأثر البرمجي**: تغيير هنا يؤثر على تجربة عرض الصور بالحجم الكامل diff --git a/javascript/localization.md b/javascript/localization.md new file mode 100644 index 0000000000..a429802002 --- /dev/null +++ b/javascript/localization.md @@ -0,0 +1,18 @@ +--- +### 📄 مسار الملف الافتراضي: docs/javascript/localization.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نظام التدويل/التوطين (153 سطر). يحمّل قاموس window.localization ويترجم عناصر النص في DOM. + +الميزات: ترجمة النصوص، عناوين titles، حقول placeholder، تلميحات tooltips، دعم RTL. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- ترجمة عقد النص في DOM باستخدام القاموس. +- حفظ النص الأصلي في data-original-text. +- دعم RTL عبر media queries CSS. +- **refresh_style_localization()**: تحديث ترجمة الأنماط. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: DOM API, window.localization (من modules/localization.py) +- **يُستخدم بواسطة**: webui.py (عبر _js callbacks) +- **الأثر البرمجي**: تغيير هنا يؤثر على ترجمة جميع عناصر الواجهة diff --git a/javascript/script.md b/javascript/script.md new file mode 100644 index 0000000000..60d6197dc6 --- /dev/null +++ b/javascript/script.md @@ -0,0 +1,25 @@ +--- +### 📄 مسار الملف الافتراضي: docs/javascript/script.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +إطار عمل واجهة المستخدم الأساسي (263 سطر). يوفر دوال مساعدة لـ Gradio ونظام مراقبة تغييرات DOM. + +الوظائف الرئيسية: +- gradioApp() - العثور على عنصر تطبيق Gradio +- نظام تسجيل الارتجاعات: onUiUpdate, onUiLoaded, onUiTabChange, onOptionsChanged +- MutationObserver لتغييرات DOM +- طبقة معاينة الأنماط - عرض صورة مصغرة عند التمرير فوق مربعات الاختيار +- اختصار Ctrl+Enter لبدء التوليد +- معالجة أخطاء الاتصال (إظهار زر إعادة الاتصال) + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **gradioApp()**: إرجاع عنصر DOM الرئيسي لـ Gradio. +- **onUiUpdate(callback)**: تسجيل ارتجاع عند تحديث UI. +- **onUiLoaded(callback)**: تسجيل ارتجاع عند تحميل UI. +- **uiElementIsVisible(el)**: التحقق من ظهور عنصر UI. +- **playNotification()**: تشغيل صوت الإشعار. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: DOM API, MutationObserver +- **يُستخدم بواسطة**: جميع ملفات JS الأخرى تعتمد عليه +- **الأثر البرمجي**: تغيير هنا يؤثر على سلوك جميع مكونات UI التفاعلية diff --git a/javascript/viewer.md b/javascript/viewer.md new file mode 100644 index 0000000000..ca56cf6064 --- /dev/null +++ b/javascript/viewer.md @@ -0,0 +1,16 @@ +--- +### 📄 مسار الملف الافتراضي: docs/javascript/viewer.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +إدارة المعرض (Gallery) والتخطيط (88 سطر). حساب أعمدة الشبكة ديناميكياً基于 عرض المعرض، ومعالجة تغيير حجم النافذة. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **viewer_to_top()/viewer_to_bottom()**: مساعدة التمرير للأعلى/الأسفل. +- حساب ارتفاع العارض الرئيسي عند تغيير حجم النافذة (حد أقصى 745px). +- معالجة أحداث blur لاختيار الأنماط. +- فك ترميز entities HTML لنسب العرض والارتفاع. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: DOM, window resize events +- **يُستخدم بواسطة**: webui.py +- **الأثر البرمجي**: تغيير هنا يؤثر على عرض الصور في المعرض diff --git a/javascript/zoom.md b/javascript/zoom.md new file mode 100644 index 0000000000..cae7d5da91 --- /dev/null +++ b/javascript/zoom.md @@ -0,0 +1,17 @@ +--- +### 📄 مسار الملف الافتراضي: docs/javascript/zoom.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نظام تكبير/تحريك (646 سطر) لأداة Inpaint Canvas. يدعم اختصارات لوحة المفاتيح وعرض الصور الطويلة تلقائياً. + +الاختصارات: Shift+wheel=تكبير، Ctrl+wheel=حجم الفرش، R=إعادة تعيين، S=ملء الشاشة، F=وضع التحريك. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **applyZoomAndPan()**: تطبيق نظام التكبير/التحريك على #inpaint_canvas و #inpaint_mask_canvas. +- **viewer_to_top()/viewer_to_bottom()**: مساعدة التمرير. +- **cancelGenerateForever()**: إلغاء التوليد الم forever. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: Canvas API, DOM +- **يُستخدم بواسطة**: webui.py (عبر _js callbacks) +- **الأثر البرمجي**: تغيير هنا يؤثر على تجربة رسم Inpaint diff --git a/k_diffusion/sampling.md b/k_diffusion/sampling.md new file mode 100644 index 0000000000..8d0c5f75e5 --- /dev/null +++ b/k_diffusion/sampling.md @@ -0,0 +1,40 @@ +# وثيقة ملف: sampling.py +## 1. الوظيفة الأساسية للملف +يحتوي على خوارزميات Sampling المختلفة لـ K-diffusion مثل Karras وExponential وVP. + +## 2. الدوال والكلاسات (Functions & Classes) +- append_zero(): دالة لإضافة صفر إلى نهاية المصفوفة +- get_sigmas_karras(): دالة لبناء جدولة ضوضاء Karras +- get_sigmas_exponential(): دالة لبناء جدولة ضوضاء أسية +- get_sigmas_polyexponential(): دالة لبناء جدولة ضوجاء متعددة الحدود في log sigma +- get_sigmas_vp(): دالة لبناء جدولة ضوضاء VP مستمرة +- to_d(): دالة لتحويل إخراج الـ denoiser إلى مشتق Karras ODE +- get_ancestral_step(): دالة للحصول على خطوة أنسابية +- sample_euler(): دالة لـ sampling باستخدام خوارزمية Euler +- sample_euler_ancestral(): دالة لـ sampling باستخدام خوارزمية Euler Ancestral +- sample_heun(): دالة لـ sampling باستخدام خوارزمية Heun +- sample_dpm_2(): دالة لـ sampling باستخدام خوارزمية DPM-2 +- sample_dpm_2_ancestral(): دالة لـ sampling باستخدام خوارزمية DPM-2 Ancestral +- sample_lms(): دالة لـ sampling باستخدام خوارزمية LMS +- sample_dpm_fast(): دالة لـ sampling باستخدام خوارزمية DPM Fast +- sample_dpm_adaptive(): دالة لـ sampling باستخدام خوارزمية DPM Adaptive +- sample_dpmpp_2s_ancestral(): دالة لـ sampling باستخدام خوارزمية DPM++ 2S Ancestral +- sample_dpmpp_sde(): دالة لـ sampling باستخدام خوارزمية DPM++ SDE +- sample_dpmpp_2m(): دالة لـ sampling باستخدام خوارزمية DPM++ 2M +- sample_dpmpp_2m_sde(): دالة لـ sampling باستخدام خوارزمية DPM++ 2M SDE +- sample_dpmpp_3m_sde(): دالة لـ sampling باستخدام خوارزمية DPM++ 3M SDE +- sample_ddim(): دالة لـ sampling باستخدام خوارزمية DDIM +- sample_ddim_ve(): دالة لـ sampling باستخدام خوارزمية DDIM VE + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/contrib/external_custom_sampler.py + - ldm_patched/modules/samplers.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - math + - scipy.integrate + - torch + - torch.nn + - torchsde + - tqdm + - ldm_patched/k_diffusion/utils.py \ No newline at end of file diff --git a/k_diffusion/utils.md b/k_diffusion/utils.md new file mode 100644 index 0000000000..34e35314e6 --- /dev/null +++ b/k_diffusion/utils.md @@ -0,0 +1,30 @@ +# وثيقة ملف: utils.py +## 1. الوظيفة الأساسية للملف +يحتوي على أدوات مساعدة مشتركة لـ K-diffusion مثل تحميل الملفات ومعالجة الصور. + +## 2. الدوال والكلاسات (Functions & Classes) +- hf_datasets_augs_helper(): دالة مساعدة لتطبيق التحويلات على مجموعات HuggingFace +- append_dims(): دالة لإضافة أبعاد إلى النهاية حتى يصل إلى عدد الأبعاد المطلوب +- n_params(): دالة لإرجاع عدد المعلمات القابلة للتدريب في وحدة +- download_file(): دالة لتحميل ملف من URL مع التحقق من الصلاحيات اختياريًا +- log_txt_as_img(): دالة لتحويل النص إلى صورة للتسجيل +- ismap(): دالة للتحقق مما إذا كان المدخل خريطة +- isimage(): دالة للتحقق مما إذا كان المدخل صورة +- exists(): دالة للتحقق مما إذا كان المدخل موجودًا + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/k_diffusion/sampling.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - contextlib + - hashlib + - math + - pathlib + - shutil + - urllib + - warnings + - PIL + - torch + - torch.nn + - torch.optim + - torch.utils.data \ No newline at end of file diff --git a/language/en.md b/language/en.md new file mode 100644 index 0000000000..155a70eebf --- /dev/null +++ b/language/en.md @@ -0,0 +1,15 @@ +--- +### 📄 مسار الملف الافتراضي: docs/language/en.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +قاموس التوطين الإنجليزي (485 سطر). يحتوي على ~400+ إدخال يُخريّر تسميات UI إلى نفسها (identity mapping). يُستخدم كقاعدة بيانات للترجمة وكمرجع للتوطين. + +الإدخالات الرئيسية: أزرار (Generate, Skip, Stop)، أسماء النماذج (juggernautXL)، أنماط (Fooocus V2)، Samplers، Schedulers، معاملات تقنية. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- لا يحتوي على كلاسات أو دوال - ملف JSON بحت. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: لا يعتمد على ملفات أخرى +- **يُستخدم بواسطة**: modules/localization.py (يحمّله وحقنه في JS) +- **الأثر البرمجي**: إضافة مفتاح هنا يجعله قابلاً للترجمة في جميع اللغات diff --git a/language/example.md b/language/example.md new file mode 100644 index 0000000000..defad082e5 --- /dev/null +++ b/language/example.md @@ -0,0 +1,15 @@ +--- +### 📄 مسار الملف الافتراضي: docs/language/example.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +مثال على الترجمة متعددة اللغات (6 أسطر). يُظهر كيفية ترجمة كلمات UI إلى لغات مختلفة: يابانية، كورية، فرنسية. + +أمثلة: Generate → 生成 (ياباني), Input Image → 入力画像 (ياباني), Advanced → 고급 (كوري), SAI 3D Model → SAI 3D Modèle (فرنسي). + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- لا يحتوي على كلاسات أو دوال - ملف JSON بحت. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: لا يعتمد على ملفات أخرى +- **يُستخدم بواسطة**: modules/localization.py +- **الأثر البرمجي**: يُستخدم كمرجع لإنشاء ملفات ترجمة جديدة diff --git a/ldm/models/autoencoder.md b/ldm/models/autoencoder.md new file mode 100644 index 0000000000..88f6bd9c52 --- /dev/null +++ b/ldm/models/autoencoder.md @@ -0,0 +1,24 @@ +# وثيقة ملف: autoencoder.py +## 1. الوظيفة الأساسية للملف +يحتوي على نماذج Autoencoder المختلفة لترميز وفك ترميز الصور إلى مساحة latent. + +## 2. الدوال والكلاسات (Functions & Classes) +- DiagonalGaussianRegularizer: كلاس لتنظيم التوزيع الغاوسي القطري +- AbstractAutoencoder: كلاس أساسي لجميع أنواع Autoencoders +- AutoencoderKL: كلاس Autoencoder مع KL-regularization +- Decoder: كلاس لفك ترميز latent إلى صور +- Encoder: كلاس لترميز الصور إلى latent +- AttnBlock: كلاس ل:block الانتباه في Autoencoder +- ResnetBlock: كلاس ل:block الباقي في Autoencoder + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/modules/sd.py + - غير معروف (يُستخدم كعقدة منفصلة) +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn.functional + - ldm_patched/ldm/modules/distributions/distributions.py + - ldm_patched/ldm/util.py + - ldm_patched/ldm/modules/ema.py + - ldm_patched/modules/ops.py \ No newline at end of file diff --git a/ldm/modules/attention.md b/ldm/modules/attention.md new file mode 100644 index 0000000000..9619b61487 --- /dev/null +++ b/ldm/modules/attention.md @@ -0,0 +1,34 @@ +# وثيقة ملف: attention.py +## 1. الوظيفة الأساسية للملف +يحتوي على طبقات الانتباه المختلفة المستخدمة في نماذج التوليد مثل SpatialTransformer وCrossAttention. + +## 2. الدوال والكلاسات (Functions & Classes) +- exists(): دالة للتحقق مما إذا كان المدخل موجودًا +- uniq(): دالة لإرجاع العناصر الفريدة من المصفوفة +- default(): دالة لإرجاع القيمة الافتراضية إذا كان المدخل غير موجود +- max_neg_value(): دالة لإرجاع أكبر قيمة سالبة ممكنة للنوع +- init_(): دالة لتهيئة tensor بقيم عشوائية +- zero_module(): دالة لتهيئة وحدة بالقيم الصفرية +- optimized_attention(): دالة للانتباه المحسّن مع دعم xformers +- SpatialTransformer: كلاس للانتباه المكاني +- CrossAttention: كلاس للانتباه المتقاطع +- BasicTransformerBlock: كلاس لل blokc المحول الأساسي +- SpatialTransformer: كلاس للانتباه المكاني + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/ldm/modules/diffusionmodules/openaimodel.py + - ldm_patched/ldm/modules/diffusionmodules/model.md + - ldm_patched/controlnet/cldm.py + - ldm_patched/contrib/external_sag.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - math + - torch + - torch.nn.functional + - torch.nn + - einops + - ldm_patched/ldm/modules/diffusionmodules/util.py + - ldm_patched/ldm/modules/sub_quadratic_attention.py + - ldm_patched/modules/model_management.py + - ldm_patched/modules/args_parser.py + - ldm_patched/modules/ops.py \ No newline at end of file diff --git a/ldm/modules/diffusionmodules/__init__.py.md b/ldm/modules/diffusionmodules/__init__.py.md new file mode 100644 index 0000000000..12e3dc6cee --- /dev/null +++ b/ldm/modules/diffusionmodules/__init__.py.md @@ -0,0 +1,12 @@ +# وثيقة ملف: __init__.py +## 1. الوظيفة الأساسية للملف +ملف التهيئة لوحدة diffusionmodules، يجعل المجلد وحدة Python ويستورد الوحدات الفرعية. + +## 2. الدوال والكلاسات (Functions & Classes) +- لا تحتوي على دوال أو كلاسات محددة، فقط استيراد الوحدات الفرعية. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - جميع الملفات التي تستورد من ldm_patched/ldm/modules/diffusionmodules/ +- الملفات التي يستدعيها هذا الملف لتشغيله: + - لا شيء (ملف تهيئة فارغ) \ No newline at end of file diff --git a/ldm/modules/diffusionmodules/model.md b/ldm/modules/diffusionmodules/model.md new file mode 100644 index 0000000000..1e794f2ed4 --- /dev/null +++ b/ldm/modules/diffusionmodules/model.md @@ -0,0 +1,24 @@ +# وثيقة ملف: model.py +## 1. الوظيفة الأساسية للملف +يحتوي على النماذج الأساسية للـ diffusion modules مثل UNet وAttentionBlock وResnetBlock. + +## 2. الدوال والكلاسات (Functions & Classes) +- AttentionBlock: كلاس ل:block الانتباه في نموذج الـ diffusion +- ResnetBlock: كلاس ل:block الباقي في نموذج الـ diffusion +- Upsample: كلاس لـ upsampling في نموذج الـ diffusion +- Downsample: كلاس لـ downsampling في نموذج الـ diffusion +- UNetModel: كلاس UNet الرئيسي لنماذج الـ diffusion +- Encoder: كلاس للمُرمِّز في نموذج الـ diffusion +- Decoder: كلاس للفاكم في نموذج الـ diffusion + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/modules/sd.py + - ldm_patched/ldm/modules/diffusionmodules/openaimodel.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - torch.nn.functional + - math + - ldm_patched/ldm/modules/attention.py + - ldm_patched/ldm/modules/diffusionmodules/util.py \ No newline at end of file diff --git a/ldm/modules/diffusionmodules/openaimodel.md b/ldm/modules/diffusionmodules/openaimodel.md new file mode 100644 index 0000000000..96c90f370b --- /dev/null +++ b/ldm/modules/diffusionmodules/openaimodel.md @@ -0,0 +1,25 @@ +# وثيقة ملف: openaimodel.py +## 1. الوظيفة الأساسية للملف +يحتوي على نموذج UNet الرئيسي المستخدم في Stable Diffusion ونماذج التوليد الأخرى. + +## 2. الدوال والكلاسات (Functions & Classes) +- TimestepEmbedSequential: كلاس لطبقات متسلسلة مع تضمينات الزمن +- ResBlock: كلاس ل:block الباقي مع تضمينات الزمن +- Downsample: كلاس لـ downsampling +- Upsample: كلاس لـ upsampling +- UNetModel: كلاس UNet الرئيسي مع جميع الإعدادات المطلوبة +- InpaintModel: كلاس UNet مخصص للـ inpainting + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/modules/sd.py + - ldm_patched/controlnet/cldm.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - torch.nn.functional + - math + - ldm_patched/ldm/modules/attention.py + - ldm_patched/ldm/modules/diffusionmodules/util.py + - ldm_patched/ldm/util.py + - ldm_patched/modules/ops.py \ No newline at end of file diff --git a/ldm/modules/diffusionmodules/upscaling.md b/ldm/modules/diffusionmodules/upscaling.md new file mode 100644 index 0000000000..3ac23ec5da --- /dev/null +++ b/ldm/modules/diffusionmodules/upscaling.md @@ -0,0 +1,14 @@ +# وثيقة ملف: upscaling.py +## 1. الوظيفة الأساسية للملف +يحتوي على طبقات Upsampling لـ UNet في نماذج الـ diffusion. + +## 2. الدوال والكلاسات (Functions & Classes) +- Upsample: كلاس لـ upsampling في نموذج الـ diffusion مع دعم resize nearest و interpolation + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/ldm/modules/diffusionmodules/openaimodel.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - torch.nn.functional \ No newline at end of file diff --git a/ldm/modules/diffusionmodules/util.md b/ldm/modules/diffusionmodules/util.md new file mode 100644 index 0000000000..b40d4080f5 --- /dev/null +++ b/ldm/modules/diffusionmodules/util.md @@ -0,0 +1,23 @@ +# وثيقة ملف: util.py +## 1. الوظيفة الأساسية للملف +يحتوي على دوال مساعدة مشتركة لـ diffusion modules مثل حساب timestep embedding و zero_module. + +## 2. الدوال والكلاسات (Functions & Classes) +- zero_module(): دالة لتهيئة وحدة بالقيم الصفرية +- timestep_embedding(): دالة لإنشاء تضمينات الزمن +- checkpoint(): دالة للاحتفاظ بالذاكرة عبر gradient checkpointing +- AlphaBlender: كلاس للدمج بين الإدخالات المختلفة +- exists(): دالة للتحقق مما إذا كان المدخل موجودًا +- default(): دالة لإرجاع القيمة الافتراضية إذا كان المدخل غير موجود + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/ldm/modules/attention.py + - ldm_patched/ldm/modules/diffusionmodules/model.md + - ldm_patched/ldm/modules/diffusionmodules/openaimodel.py + - ldm_patched/ldm/modules/temporal_ae.py + - ldm_patched/controlnet/cldm.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - math \ No newline at end of file diff --git a/ldm/modules/distributions/__init__.py.md b/ldm/modules/distributions/__init__.py.md new file mode 100644 index 0000000000..f494dccc21 --- /dev/null +++ b/ldm/modules/distributions/__init__.py.md @@ -0,0 +1,12 @@ +# وثيقة ملف: __init__.py +## 1. الوظيفة الأساسية للملف +ملف التهيئة لوحدة distributions، يجعل المجلد وحدة Python ويستورد الوحدات الفرعية. + +## 2. الدوال والكلاسات (Functions & Classes) +- لا تحتوي على دوال أو كلاسات محددة، فقط استيراد الوحدات الفرعية. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - جميع الملفات التي تستورد من ldm_patched/ldm/modules/distributions/ +- الملفات التي يستدعيها هذا الملف لتشغيله: + - لا شيء (ملف تهيئة فارغ) \ No newline at end of file diff --git a/ldm/modules/distributions/distributions.md b/ldm/modules/distributions/distributions.md new file mode 100644 index 0000000000..6ba88132a6 --- /dev/null +++ b/ldm/modules/distributions/distributions.md @@ -0,0 +1,19 @@ +# وثيقة ملف: distributions.md +## 1. الوظيفة الأساسية للملف +يحتوي على كلاس DiagonalGaussianDistribution للتوزيع الغاوسي القطري المستخدم في Autoencoders. + +## 2. الدوال والكلاسات (Functions & Classes) +- DiagonalGaussianDistribution: كلاس للتوزيع الغاوسي القطري + - __init__(): دالة التهيئة مع المعلمات mean وlogvar + - sample(): دالة لأخذ عينات من التوزيع + - mode(): دالة للحصول على الوضع (أكبر احتمال) + - kl(): دالة لحساب تباعد Kullback-Leibler + - nll(): دالة لحساب السالب للإحتمال اللوغاريتمي + - mean: خاصية للحصول على المتوسط + - variance: خاصية للحصول على التباين + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/ldm/models/autoencoder.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch \ No newline at end of file diff --git a/ldm/modules/ema.md b/ldm/modules/ema.md new file mode 100644 index 0000000000..0e84466211 --- /dev/null +++ b/ldm/modules/ema.md @@ -0,0 +1,20 @@ +# وثيقة ملف: ema.py +## 1. الوظيفة الأساسية للملف +يحتوي على كلاس LitEma لتطبيق المتوسطات الأسية المتحركة (EMA) على معلمات النموذج. + +## 2. الدوال والكلاسات (Functions & Classes) +- LitEma: كلاس لتطبيق المتوسطات الأسية المتحركة على معلمات النموذج + - __init__(): دالة التهيئة مع decay وuse_num_updates + - reset_num_updates(): دالة لإعادة تعيين عدد التحديثات + - forward(): الدالة الأمامية لتحديث المتوسطات الأسية + - copy_to(): دالة لنسخ المتوسطات إلى نموذج آخر + - store(): دالة لتخزين المعلمات مؤقتًا + - restore(): دالة لاستعادة المعلمات المخزنة + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/ldm/models/autoencoder.py + - ldm_patched/modules/sd.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/ldm/modules/encoders/__init__.py.md b/ldm/modules/encoders/__init__.py.md new file mode 100644 index 0000000000..ec5e95f821 --- /dev/null +++ b/ldm/modules/encoders/__init__.py.md @@ -0,0 +1,12 @@ +# وثيقة ملف: __init__.py +## 1. الوظيفة الأساسية للملف +ملف التهيئة لوحدة encoders، يجعل المجلد وحدة Python ويستورد الوحدات الفرعية. + +## 2. الدوال والكلاسات (Functions & Classes) +- لا تحتوي على دوال أو كلاسات محددة، فقط استيراد الوحدات الفرعية. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - جميع الملفات التي تستورد من ldm_patched/ldm/modules/encoders/ +- الملفات التي يستدعيها هذا الملف لتشغيله: + - لا شيء (ملف تهيئة فارغ) \ No newline at end of file diff --git a/ldm/modules/encoders/noise_aug_modules.md b/ldm/modules/encoders/noise_aug_modules.md new file mode 100644 index 0000000000..6952dc8255 --- /dev/null +++ b/ldm/modules/encoders/noise_aug_modules.md @@ -0,0 +1,17 @@ +# وثيقة ملف: noise_aug_modules.md +## 1. الوظيفة الأساسية للملف +يحتوي على وحدات تعزيز الضوضاء لتحسين جودة التوليد عن طريق إضافة ضوضاء منظمة. + +## 2. الدوال والكلاسات (Functions & Classes) +- NoiseAugmentation: كلاس لتعزيز الضوضاء على صور الإدخال +- CLIPImageEmbedder: كلاس لترميز الصور باستخدام CLIP لإنشاء تضمينات + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/contrib/external_photomaker.py + - ldm_patched/contrib/external_video_model.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - ldm_patched/modules/clip_model.py + - ldm_patched/modules/ops.py \ No newline at end of file diff --git a/ldm/modules/sub_quadratic_attention.md b/ldm/modules/sub_quadratic_attention.md new file mode 100644 index 0000000000..3965886024 --- /dev/null +++ b/ldm/modules/sub_quadratic_attention.md @@ -0,0 +1,21 @@ +# وثيقة ملف: sub_quadratic_attention.py +## 1. الوظيفة الأساسية للملف +يُنفذ خوارزمية انتباه فعالة من حيث الذاكرة تتجنب الحاجة إلى O(n^2) من الذاكرة. + +## 2. الدوال والكلاسات (Functions & Classes) +- dynamic_slice(): دالة للقطع الديناميكي بناءً على الأبعاد +- AttnChunk: كلاس namedtuple لإخراج chunk الانتباه +- SummarizeChunk: بروتوكول لدالة تلخيص chunk +- ComputeQueryChunkAttn: بروتوكول لدالة حساب انتباه chunk الاستعلام +- efficient_dot_product_attention(): دالة للانتباه الفعال من حيث الذاكرة + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/ldm/modules/attention.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - functools + - torch + - torch.utils.checkpoint + - math + - typing + - ldm_patched/modules/model_management.py \ No newline at end of file diff --git a/ldm/modules/temporal_ae.md b/ldm/modules/temporal_ae.md new file mode 100644 index 0000000000..a6a771406f --- /dev/null +++ b/ldm/modules/temporal_ae.md @@ -0,0 +1,18 @@ +# وثيقة ملف: temporal_ae.py +## 1. الوظيفة الأساسية للملف +يحتوي على نموذج Autoencoder مؤقت (Temporal) لمعالجة الفيديو والصور المتسلسلة. + +## 2. الدوال والكلاسات (Functions & Classes) +- AttnBlock: كلاس ل:block الانتباه في Autoencoder المؤقت +- ResnetBlock: كلاس ل:block الباقي في Autoencoder المؤقت +- AutoencoderKLTemporal: كلاس Autoencoder مع KL-regularization للمعالجة المؤقتة + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/modules/sd.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - torch.nn.functional + - ldm_patched/ldm/modules/attention.py + - ldm_patched/ldm/modules/diffusionmodules/util.py \ No newline at end of file diff --git a/ldm/util.md b/ldm/util.md new file mode 100644 index 0000000000..ea87e7539e --- /dev/null +++ b/ldm/util.md @@ -0,0 +1,31 @@ +# وثيقة ملف: util.py +## 1. الوظيفة الأساسية للملف +يحتوي على دوال مساعدة مشترعة لـ LDM مثل التحقق من الأنواع وإنشاء الصور. + +## 2. الدوال والكلاسات (Functions & Classes) +- log_txt_as_img(): دالة لتحويل النص إلى صورة للتسجيل +- ismap(): دالة للتحقق مما إذا كان المدخل خريطة +- isimage(): دالة للتحقق مما إذا كان المدخل صورة +- exists(): دالة للتحقق مما إذا كان المدخل موجودًا +- default(): دالة لإرجاع القيمة الافتراضية إذا كان المدخل غير موجود +- count_params(): دالة لعدد المعلمات في وحدة +- instantiate_from_config(): دالة لإنشاء كائن من التكوين +- ismap(): دالة للتحقق مما إذا كان المدخل خريطة +- isimage(): دالة للتحقق مما إذا كان المدخل صورة + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/ldm/models/autoencoder.py + - ldm_patched/ldm/modules/diffusionmodules/openaimodel.py + - ldm_patched/ldm/modules/diffusionmodules/util.py + - ldm_patched/controlnet/cldm.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - importlib + - torch + - torch.optim + - numpy + - inspect + - PIL + - PIL.Image + - PIL.ImageDraw + - PIL.ImageFont \ No newline at end of file diff --git a/models/overview.md b/models/overview.md new file mode 100644 index 0000000000..3f1f6d7437 --- /dev/null +++ b/models/overview.md @@ -0,0 +1,35 @@ +--- +### 📄 مسار الملف الافتراضي: docs/models/overview.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +هيكل مجلد النماذج (models/) يحتوي على جميع أنواع النماذج المستخدمة في Fooocus. كل مجلد فرعي يحتوي نوعاً محدداً من النماذج. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +**هيكل المجلدات:** +``` +models/ +├── checkpoints/ # نماذج SDXL الأساسية (.safetensors) +├── clip_vision/ # مشفرات CLIP البصرية +├── clip/ # مشفرات CLIP النصية +├── configs/ # ملفات تكوين النماذج (YAML) +├── controlnet/ # نماذج ControlNet (PyraCanny, CPDS) +├── diffusers/ # نماذج Diffusion +├── embeddings/ # Textual Inversion embeddings +├── gligen/ # نماذج GLIGEN grounding +├── hypernetworks/ # نماذج Hypernetwork +├── inpaint/ # نماذج Fooocus Inpaint (v1, v2.5, v2.6) +├── loras/ # LoRA adapters (أنماط, أداء, offset) +├── prompt_expansion/ # نموذج توسيع البرومبت Fooocus +├── safety_checker/ # نموذج كشف NSFW +├── sam/ # Segment Anything Model (vit_b, vit_l, vit_h) +├── style_models/ # نماذج مرجع الأنماط +├── unet/ # ملفات UNet +├── upscale_models/ # نماذج تكبير الصور +├── vae_approx/ # نماذج VAE التقريبية +└── vae/ # VAE decoders (SDXL, Pony, etc.) +``` + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: لا يعتمد على ملفات أخرى +- **يُستخدم بواسطة**: modules/config.py (يُعرّف المسارات), modules/model_loader.py (يحمّل منها) +- **الأثر البرمجي**: غياب أي مجلد أو نموذج أساسي سيمنع Fooocus من العمل diff --git a/modules/__init__.py.md b/modules/__init__.py.md new file mode 100644 index 0000000000..16b2005beb --- /dev/null +++ b/modules/__init__.py.md @@ -0,0 +1,10 @@ +# وثيقة ملف: __init__.py +## 1. الوظيفة الأساسية للملف +ملف تهيئة فارغ يُعلّم Python أن الدليل هو حزمة (package). لا يحتوي على أي محتوى أو دوال. + +## 2. الدوال والكلاسات (Functions & Classes) +لا توجد دوال أو كلاسات في هذا الملف. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: جميع ملفات modules/ +- الملفات التي يستدعيها هذا الملف لتشغيله: لا شيء \ No newline at end of file diff --git a/modules/anisotropic.md b/modules/anisotropic.md new file mode 100644 index 0000000000..15995fcb23 --- /dev/null +++ b/modules/anisotropic.md @@ -0,0 +1,15 @@ +# وثيقة ملف: anisotropic.md +## 1. الوظيفة الأساسية للملف +تنفيذ ترشيح bilateral blur anisotropic. يوفر دوال لإنشاء نوى Gaussian وتطبيق الترشيح ثنائي الاتجاه. + +## 2. الدوال والكلاسات (Functions & Classes) +- **gaussian()**: إنشاء نواة Gaussian. +- **get_gaussian_kernel1d()**: الحصول على نواة Gaussian أحادية البُعد. +- **get_gaussian_kernel2d()**: الحصول على نواة Gaussian ثنائية البُعد. +- **_bilateral_blur()**: تطبيق bilateral blur with guidance. +- **_compute_zero_padding()**: حساب التعبئة الصفرية. +- **_unpack_2d_ks()**: فتح حجم النواة ثنائية البُعد. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/patch.py +- الملفات التي يستدعيها هذا الملف لتشغيله: torch \ No newline at end of file diff --git a/modules/args_parser.md b/modules/args_parser.md new file mode 100644 index 0000000000..fed63d0ab3 --- /dev/null +++ b/modules/args_parser.md @@ -0,0 +1,16 @@ +# وثيقة ملف: args_parser.md +## 1. الوظيفة الأساسية للملف +تحليل و معالجة معاملات سطر الأوامر (CLI) للبرنامج مع دعم الأعلام والخيارات المختلفة. + +## 2. الدوال والكلاسات (Functions & Classes) +- `parser()`: محلل المعاملات الرئيسي +- `parse_args()`: تحليل المعاملات +- `add_argument()`: إضافة معامل جديد +- `get_args()`: الحصول على المعاملات المحللة +- `validate_args()`: التحقق من صحة المعاملات +- `config_to_args()`: تحويل الإعدادات إلى معاملات +- `args_to_config()`: تحويل المعاملات إلى إعدادات + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `ldm_patched.py`, ملفات التشغيل الرئيسية +- الملفات التي يستدعيها هذا الملف لتشغيله: `options.py`, مكتبة argparse diff --git a/modules/async_worker.md b/modules/async_worker.md new file mode 100644 index 0000000000..5944fcf3f8 --- /dev/null +++ b/modules/async_worker.md @@ -0,0 +1,13 @@ +# وثيقة ملف: async_worker.md +## 1. الوظيفة الأساسية للملف +إدارة المهام غير المتزامنة لعملية توليد الصور. يحتوي على كلاس AsyncTask الذي يمثل مهمة توليد، ودالة worker التي تنفذ خط المعالجة الكامل بدءاً من المعالجة الأولية وصولاً إلى توليد الصور النهائية. + +## 2. الدوال والكلاسات (Functions & Classes) +- **AsyncTask**: كلاس يمثل مهمة توليد صورة، يحتوي على جميع المعلمات (النص، النموذج، الإعدادات، إلخ) ويخزن النتائج. +- **worker()**: الدالة الرئيسية التي تنفذ خط المعالجة: تهيئة النموذج، تحميل LoRA، معالجة الصور، التحكم في ControlNet، والتعامل مع various input modes (inpaint, upscale, outpaint). +- **get_results()**: تُرجع قائمة بالصور المولّدة. +- **has_done()**: تتحقق مما إذا كانت المهمة اكتملت. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: webui.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/patch.py, modules/config.py, modules/flags.py, modules/util.py, modules/default_pipeline.py, extras/inpaint_mask.py \ No newline at end of file diff --git a/modules/auth.md b/modules/auth.md new file mode 100644 index 0000000000..985515a1f8 --- /dev/null +++ b/modules/auth.md @@ -0,0 +1,14 @@ +# وثيقة ملف: auth.md +## 1. الوظيفة الأساسية للملف +إدارة المصادقة. يقرأ بيانات المستخدمين من ملف auth.json ويتحقق من صحة كلمة المرور. + +## 2. الدوال والكلاسات (Functions & Classes) +- **load_auth_data()**: تحميل بيانات المصادقة من ملف JSON. +- **auth_list_to_dict()**: تحويل قائمة بيانات المصادقة إلى قاموس. +- **check_auth()**: التحقق من صحة اسم المستخدم وكلمة المرور. +- **auth_dict**: قاموس بيانات المصادقة المحمل. +- **auth_enabled**: ما إذا كانت المصادقة ممكّنة. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: webui.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/constants.py \ No newline at end of file diff --git a/modules/checkpoint_pickle.md b/modules/checkpoint_pickle.md new file mode 100644 index 0000000000..553b0b2646 --- /dev/null +++ b/modules/checkpoint_pickle.md @@ -0,0 +1,14 @@ +# وثيقة ملف: checkpoint_pickle.md +## 1. الوظيفة الأساسية للملف +الفك الآمن للملفات المخزنة (Pickle) لتحميل نقاط التحقق ونماذج PyTorch. + +## 2. الدوال والكلاسات (Functions & Classes) +- `safe_unpickle()`: فك آمن للملفات المخزنة +- `restricted_unpickler()`: فك مقيّد للأمان +- `find_class()`: العثور على الفئة أثناء الفك +- `load_checkpoint_safe()`: تحميل نقطة تحقق بأمان +- `validate_pickle()`: التحقق من سلامة البيانات المخزنة + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sd.py`, `model_detection.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: مكتبة pickle الم标准 diff --git a/modules/clip_model.md b/modules/clip_model.md new file mode 100644 index 0000000000..8ff59ead42 --- /dev/null +++ b/modules/clip_model.md @@ -0,0 +1,15 @@ +# وثيقة ملف: clip_model.md +## 1. الوظيفة الأساسية للملف +تعريف بنى الشبكات العصبية لـ CLIP المستخدمة في ترميز النصوص والصور. + +## 2. الدوال والكلاسات (Functions & Classes) +- `CLIPTextModel()`: نموذج نص CLIP +- `CLIPVisionModel()`: نموذج رؤية CLIP +- `CLIPModel()`: النموذج المدمج +- `Transformer()`: محول CLIP +- `ResidualAttentionBlock()`: كلاس انتباه متبقٍ +- `MLP()`: شبكة عصبية متعددة الطبقات + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sd1_clip.py`, `sd2_clip.py`, `sdxl_clip.py`, `clip_vision.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `ops.py`, `utils.py` diff --git a/modules/clip_vision.md b/modules/clip_vision.md new file mode 100644 index 0000000000..c523291704 --- /dev/null +++ b/modules/clip_vision.md @@ -0,0 +1,15 @@ +# وثيقة ملف: clip_vision.md +## 1. الوظيفة الأساسية للملف +تحميل واستخدام نموذج CLIP Vision لتضمين الصور واستخراج الميزات البصرية. + +## 2. الدوال والكلاسات (Functions & Classes) +- `CLIPVisionModel()`: نموذج CLIP Vision +- `encode_image()`: ترميز الصورة +- `load_clip_vision()`: تحميل نموذج CLIP Vision +- `preprocess_image()`: معالجة مسبقة للصور +- `get_image_features()`: الحصول على ميزات الصورة +- `project_features()`: إسقاط الميزات + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sample.py`, `clip_model.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `ops.py`, `utils.py` diff --git a/modules/conds.md b/modules/conds.md new file mode 100644 index 0000000000..dff055ea0b --- /dev/null +++ b/modules/conds.md @@ -0,0 +1,16 @@ +# وثيقة ملف: conds.md +## 1. الوظيفة الأساسية للملف +تعريف كلاسات التغليف للشروط (Conditioning) المستخدمة في عملية أخذ العينات. + +## 2. الدوال والكلاسات (Functions & Classes) +- `Conditioning()`: كلاس أساسي للشروط +- `encode()`: ترميز الشروط +- `decode()`: فك ترميز الشروط +- `concat()`: دمج الشروط +- `stack()`: تكديس الشروط +- `create_cond()`: إنشاء شرط جديد +- `process_cond()`: معالجة الشروط + +## 3. الdependencyات والعلاقات +- الملفات التي تستدعي هذا الملف: `samplers.py`, `sample.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `clip_model.py`, `sd1_clip.py`, `sdxl_clip.py` diff --git a/modules/config.md b/modules/config.md new file mode 100644 index 0000000000..7780d282b4 --- /dev/null +++ b/modules/config.md @@ -0,0 +1,15 @@ +# وثيقة ملف: config.md +## 1. الوظيفة الأساسية للملف +إدارة إعدادات التطبيق وتهيئة المسارات. يقرأ ملفات الإعدادات (config.txt، presets)، ويحدد مسارات النماذج والملفات المختلفة، ويقدم واجهة للحصول على الإعدادات المطلوبة. + +## 2. الدوال والكلاسات (Functions & Classes) +- **get_config_path()**: تحصل على مسار الإعدادات من المتغيرات البيئية أو المسار الافتراضي. +- **try_load_deprecated_user_path_config()**: تتعامل مع ملفات الإعدادات القديمة وتوحيد المسارات. +- **default_*()**: دوال للحصول على القيم الافتراضية للمعلمات المختلفة. +- **downloading_*()**: دوال لتحميل النماذج عند عدم وجودها محلياً. +- **paths_*()**: مسارات مجلدات النماذج (checkpoints, loras, embeddings, vae, controlnet, etc). +- **default_loras()**: إعدادات LoRA الافتراضية. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: جميع ملفات modules تقريباً +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/model_loader.py, modules/extra_utils.py, modules/flags.py, modules/sdxl_styles.py, args_manager.py \ No newline at end of file diff --git a/modules/constants.md b/modules/constants.md new file mode 100644 index 0000000000..6d12d0fd66 --- /dev/null +++ b/modules/constants.md @@ -0,0 +1,12 @@ +# وثيقة ملف: constants.md +## 1. الوظيفة الأساسية للملف +تعريف الثوابت الأساسية المستخدمة في التطبيق. + +## 2. الدوال والكلاسات (Functions & Classes) +- **MIN_SEED**: الحد الأدنى للبذرة (0). +- **MAX_SEED**: الحد الأقصى للبذرة (2^63 - 1). +- **AUTH_FILENAME**: اسم ملف المصادقة (auth.json). + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/patch.py, modules/auth.py +- الملفات التي يستدعيها هذا الملف لتشغيله: لا شيء (ملف مستقل) \ No newline at end of file diff --git a/modules/controlnet.md b/modules/controlnet.md new file mode 100644 index 0000000000..4fb0cbbc17 --- /dev/null +++ b/modules/controlnet.md @@ -0,0 +1,15 @@ +# وثيقة ملف: controlnet.md +## 1. الوظيفة الأساسية للملف +دعم ControlNet و T2I-Adapter للتحكم في عملية توليد الصور باستخدام إشارات التحكم. + +## 2. الدوال والكلاسات (Functions & Classes) +- `ControlNet()`: كلاس أساسي لـ ControlNet +- `T2IAdapter()`: كلاس T2I-Adapter +- `apply_controlnet()`: تطبيق ControlNet على النموذج +- `load_controlnet()`: تحميل نموذج ControlNet +- `preprocess_controlnet()`: معالجة مسبقة لإشارات التحكم +- `merge_controlnet()`: دمج إشارات ControlNet المتعددة + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sample.py`, `samplers.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `model_patcher.py`, `ops.py` diff --git a/modules/core.md b/modules/core.md new file mode 100644 index 0000000000..8927ced5e3 --- /dev/null +++ b/modules/core.md @@ -0,0 +1,16 @@ +# وثيقة ملف: core.md +## 1. الوظيفة الأساسية للملف +النواة الأساسية لنظام Stable Diffusion. يحتوي على كلاس StableDiffusionModel الذي يمثل النموذج الكامل (UNet, VAE, CLIP)، ويوفر دوال لتحميل النماذج وتطبيق LoRA وتنفيذ عملية العينات (sampling). + +## 2. الدوال والكلاسات (Functions & Classes) +- **StableDiffusionModel**: كلاس يمثل نموذج Stable Diffusion الكامل مع UNet و VAE و CLIP و CLIP Vision. + - **refresh_loras()**: تحديث وتطبيق أوزان LoRA على النموذج. +- **load_model()**: تحميل نموذج checkpoint مع تحديد VAE مخصص اختياري. +- **load_controlnet()**: تحميل نموذج ControlNet. +- **ksampler()**: تنفيذ عملية العينات باستخدام k-sampler مع دعم refiner. +- **decode_latent_VAE() / encode_latent_VAE()**: تشفير وفك تشفير الفضاء الكامن. +- **numpy_to_pytorch() / pytorch_to_numpy()**: تحويل بين تنسيقات الصور. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/default_pipeline.py, modules/upscaler.py, modules/async_worker.py +- الملفات التي يستدعيها هذا الملف لتشغيله: ldm_patched/modules/*, modules/lora.py, modules/util.py, modules/config.py, modules/sample_hijack.py \ No newline at end of file diff --git a/modules/default_pipeline.md b/modules/default_pipeline.md new file mode 100644 index 0000000000..b3f423593b --- /dev/null +++ b/modules/default_pipeline.md @@ -0,0 +1,16 @@ +# وثيقة ملف: default_pipeline.md +## 1. الوظيفة الأساسية للملف +تنسيق وإدارة خط أنابيب المعالجة الافتراضي. يدير النماذج الأساسية والمرشحات، ويتحكم في تحميل النماذج وتحديثها، ويوفر واجهة لعمليات التوليد المختلفة (txt2img, img2img, inpaint, upscale). + +## 2. الدوال والكلاسات (Functions & Classes) +- **model_base / model_refiner**: نموذج أساس ونموذج مرشح من نوع StableDiffusionModel. +- **refresh_base_model()**: تحميل/تحديث النموذج الأساسي. +- **refresh_refiner_model()**: تحميل/تحديث النموذج المرشح. +- **refresh_controlnets()**: إدارة وتحديث نماذج ControlNet المحملة. +- **assert_model_integrity()**: التحقق من توافق النموذج (SDXL فقط). +- **process_generate()**: تنفيذ عملية التوليد الرئيسية مع دعم جميع الوضعيات. +- **prepare_mask() / prepare_pixels()**: تحضير القناع والبكسلات للعملية. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/async_worker.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/core.py, modules/patch.py, modules/config.py, modules/flags.py, modules/inpaint_worker.py, extras/expansion.py, extras/vae_interpose.py \ No newline at end of file diff --git a/modules/diffusers_convert.md b/modules/diffusers_convert.md new file mode 100644 index 0000000000..681b0a2938 --- /dev/null +++ b/modules/diffusers_convert.md @@ -0,0 +1,15 @@ +# وثيقة ملف: diffusers_convert.md +## 1. الوظيفة الأساسية للملف +تحويل نماذج Diffusers إلى صيغة متوافقة مع ldm_patched. + +## 2. الدوال والكلاسات (Functions & Classes) +- `convert_diffusers_to_ldm()`: التحويل من Diffusers إلى LDM +- `map_diffusers_keys()`: تعيين مفاتيح Diffusers +- `convert_unet()`: تحويل UNet +- `convert_vae()`: تحويل VAE +- `convert_text_encoder()`: تحويل مشفر النص +- `load_diffusers_model()`: تحميل نموذج Diffusers + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `diffusers_load.py`, `sd.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `model_detection.py`, `utils.py` diff --git a/modules/diffusers_load.md b/modules/diffusers_load.md new file mode 100644 index 0000000000..e7d46d0668 --- /dev/null +++ b/modules/diffusers_load.md @@ -0,0 +1,14 @@ +# وثيقة ملف: diffusers_load.md +## 1. الوظيفة الأساسية للملف +تحميل نماذج Diffusers من الدليل مع دعم الهيكلية المختلفة. + +## 2. الدوال والكلاسات (Functions & Classes) +- `load_diffusers_directory()`: تحميل دليل Diffusers +- `detect_diffusers_config()`: كشف إعدادات Diffusers +- `load_diffusers_pipeline()`: تحميل أنابيب Diffusers +- `get_diffusers_submodels()`: الحصول على النماذج الفرعية +- `validate_diffusers_structure()`: التحقق من هيكل Diffusers + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sd.py`, `model_detection.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `diffusers_convert.py`, `model_management.py` diff --git a/modules/extra_utils.md b/modules/extra_utils.md new file mode 100644 index 0000000000..8f072cc266 --- /dev/null +++ b/modules/extra_utils.md @@ -0,0 +1,12 @@ +# وثيقة ملف: extra_utils.md +## 1. الوظيفة الأساسية للملف + أدوات مساعدة إضافية. يوفر دوال للتعامل مع المجلدات وقراءة الملفات و-typical utilities. + +## 2. الدوال والكلاسات (Functions & Classes) +- **makedirs_with_log()**: إنشاء مجلد مع تسجيل الأخطاء. +- **get_files_from_folder()**: الحصول على قائمة بملفات مجلد معين مع فلترة حسب الامتداد. +- **try_eval_env_var()**: محاولة تقييم قيمة متغير بيئة كنوع محدد. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/config.py, modules/sdxl_styles.py +- الملفات التي يستدعيها هذا الملف لتشغيله: ast.literal_eval \ No newline at end of file diff --git a/modules/flags.md b/modules/flags.md new file mode 100644 index 0000000000..e7b3dcb23f --- /dev/null +++ b/modules/flags.md @@ -0,0 +1,16 @@ +# وثيقة ملف: flags.md +## 1. الوظيفة الأساسية للملف +تعريف الثوابت والأعلام (flags) والقيم المحددة المستخدمة في جميع أنحاء التطبيق. يحتوي على تعريفات لأنواع الأداء، وصيغ البيانات الوصفية، وأوضاع الإدخال/الإخراج. + +## 2. الدوال والكلاسات (Functions & Classes) +- **Performance**: Enum لأنواع الأداء (QUALITY, SPEED, EXTREME_SPEED, LIGHTNING, HYPER_SD). +- **Steps**: IntEnum لعدد خطوات كل نوع أداء. +- **MetadataScheme**: Enum لصيغ البيانات الوصفية (FOOOCUS, A1111). +- **OutputFormat**: Enum لتنسيقات الإخراج (PNG, JPEG, WEBP). +- **KSAMPLER / SAMPLER_EXTRA**: قواميس بأسماء العينات. +- **SCHEDULER_NAMES**: قائمة بأسماء الجداول الزمنية. +- **uov_list / ip_list / describe_types**: قوائم للخيارات المختلفة. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: جميع ملفات modules تقريباً +- الملفات التي يستدعيها هذا الملف لتشغيله: لا شيء (ملف مستقل) \ No newline at end of file diff --git a/modules/gligen.md b/modules/gligen.md new file mode 100644 index 0000000000..f817574098 --- /dev/null +++ b/modules/gligen.md @@ -0,0 +1,15 @@ +# وثيقة ملف: gligen.md +## 1. الوظيفة الأساسية للملف +دعم GLIGEN (Grounded Language-to-Image Generation) للتحكم في توليد الصور باستخدام النصوص المرتبطة بالمواقع. + +## 2. الدوال والكلاسات (Functions & Classes) +- `GLIGEN()`: كلاس GLIGEN الرئيسي +- `apply_gligen()`: تطبيق GLIGEN على النموذج +- `load_gligen()`: تحميل نموذج GLIGEN +- `encode_boxes()`: ترميز صناديق التحديد +- `process_gligen()`: معالجة مدخلات GLIGEN +- `set_gligen_parameters()`: تعيين معلمات GLIGEN + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sample.py`, `samplers.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `model_patcher.py`, `ops.py` diff --git a/modules/gradio_hijack.md b/modules/gradio_hijack.md new file mode 100644 index 0000000000..770ae8dcad --- /dev/null +++ b/modules/gradio_hijack.md @@ -0,0 +1,10 @@ +# وثيقة ملف: gradio_hijack.md +## 1. الوظيفة الأساسية للملف +اختطاف مكونات Gradio لتخصيص سلوكها. يعدل مكون الصورة (gr.Image) لدعم ميزات إضافية مثل رفع الصور الكبيرة وعرض الصور المحسّنة. + +## 2. الدوال والكلاسات (Functions & Classes) +- **Image**: كلاس معدّل لمكون الصورة في Gradio مع دعم إضافي لرفع الصور الكبيرة وعرض النتائج. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: webui.py +- الملفات التي يستدعيها هذا الملف لتشغيله: gradio, PIL, numpy, gradio.routes \ No newline at end of file diff --git a/modules/hash_cache.md b/modules/hash_cache.md new file mode 100644 index 0000000000..c9dc2e58d1 --- /dev/null +++ b/modules/hash_cache.md @@ -0,0 +1,14 @@ +# وثيقة ملف: hash_cache.md +## 1. الوظيفة الأساسية للملف +تخزين مؤقت لتجزئة SHA256 للملفات. يوفر تخزيناً مؤقتاً لتجزئات النماذج لتسريع العمليات التي تحتاج إلى التحقق من هوية الملفات. + +## 2. الدوال والكلاسات (Functions & Classes) +- **sha256_from_cache()**: الحصول على تجزئة SHA256 من التخزين المؤقت أو حسابها إذا لم تكن موجودة. +- **load_cache_from_file()**: تحميل التخزين المؤقت من ملف hash_cache.txt. +- **save_cache_to_file()**: حفظ التخزين المؤقت إلى ملف. +- **init_cache()**: تهيئة التخزين المؤقت وبناءه إذا لزم الأمر. +- **rebuild_cache()**: إعادة بناء التخزين المؤقت باستخدام threads. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/meta_parser.py, modules/config.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/util.py, args_manager.py \ No newline at end of file diff --git a/modules/html.md b/modules/html.md new file mode 100644 index 0000000000..eb2902cb2c --- /dev/null +++ b/modules/html.md @@ -0,0 +1,11 @@ +# وثيقة ملف: html.md +## 1. الوظيفة الأساسية للملف +إنشاء عناصر HTML للتقدم في الواجهة. يوفر قالباً لشريط التقدم. + +## 2. الدوال والكلاسات (Functions & Classes) +- **progress_html**: قالب HTML لشريط التقدم. +- **make_progress_html()**: إنشاء HTML لشريط التقدم مع رقم ونص. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/async_worker.py +- الملفات التي يستدعيها هذا الملف لتشغيله: لا شيء (ملف مستقل) \ No newline at end of file diff --git a/modules/inpaint_worker.md b/modules/inpaint_worker.md new file mode 100644 index 0000000000..5e2e50cd37 --- /dev/null +++ b/modules/inpaint_worker.md @@ -0,0 +1,17 @@ +# وثيقة ملف: inpaint_worker.md +## 1. الوظيفة الأساسية للملف +إدارة عملية التلوين (inpainting). يحتوي على كلاس InpaintHead لمعالجة القناع، ودوال مساعدة لمعالجة الصور والقناع باستخدام fil morphological operations. + +## 2. الدوال والكلاسات (Functions & Classes) +- **InpaintHead**: كلاس PyTorch يمثل طبقة رأس التلوين. +- **current_task**: متغير عالمي يمثل المهمة الحالية. +- **box_blur()**: تطبيق ضباب صندوكي. +- **max_filter_opencv()**: تطبيق فلتر الأقصى باستخدام OpenCV. +- **morphological_open()**: عملية morphological لتنعيم القناع. +- **compute_initial_abcd()**: حساب الإحداثيات الأولية للمنطقة المعالجة. +- **regulate_abcd()**: ضمان أن الإحداثيات ضمن حدود الصورة. +- **up255()**: تحويل القيم إلى 0 أو 255. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/default_pipeline.py, modules/patch.py, modules/async_worker.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/util.py, modules/upscaler.py, cv2 (OpenCV) \ No newline at end of file diff --git a/modules/latent_formats.md b/modules/latent_formats.md new file mode 100644 index 0000000000..157694d08c --- /dev/null +++ b/modules/latent_formats.md @@ -0,0 +1,16 @@ +# وثيقة ملف: latent_formats.md +## 1. الوظيفة الأساسية للملف +تعريف صيغ الفضاء الكامن (Latent Space) المختلفة المستخدمة في النماذج المختلفة. + +## 2. الدوال والكلاسات (Functions & Classes) +- `LatentFormat()`: كلاس أساسي لصيغ الفضاء الكامن +- `SD1LatentFormat()`: صيغة SD1 +- `SDXL2LatentFormat()`: صيغة SDXL2 +- `SDXLBaseLatentFormat()`: صيغة SDXL الأساسية +- `encode()`: ترميز إلى الفضاء الكامن +- `decode()`: فك ترميز من الفضاء الكامن +- `process_latent()`: معالجة الفضاء الكامن + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sd.py`, `sample.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: لا يعتمد على ملفات أخرى diff --git a/modules/launch_util.md b/modules/launch_util.md new file mode 100644 index 0000000000..cc5ae534c6 --- /dev/null +++ b/modules/launch_util.md @@ -0,0 +1,14 @@ +# وثيقة ملف: launch_util.md +## 1. الوظيفة الأساسية للملف +أدوات الإطلاق وتثبيت التبعيات. يوفر دوال لإدارة التبعيات وتثبيت الحزم وفحص المتطلبات. + +## 2. الدوال والكلاسات (Functions & Classes) +- **is_installed()**: فحص ما إذا كان حزمة مثبتة. +- **run()**: تنفيذ أمر نظام. +- **run_pip()**: تنفيذ أمر pip لتثبيت الحزم. +- **requirements_met()**: فحص ما إذا كانت المتطلبات مستوفاة. +- **delete_folder_content()**: حذف محتويات مجلد. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: launch.py +- الملفات التي يستدعيها هذا الملف لتشغيله: importlib, subprocess, shutil, packaging \ No newline at end of file diff --git a/modules/localization.md b/modules/localization.md new file mode 100644 index 0000000000..6e097b6771 --- /dev/null +++ b/modules/localization.md @@ -0,0 +1,12 @@ +# وثيقة ملف: localization.md +## 1. الوظيفة الأساسية للملف +إدارة الترجمة ودعم اللغة. يقرأ ملفات الترجمة من مجلد language ويوفر دوال لإنشاء JavaScript للترجمة. + +## 2. الدوال والكلاسات (Functions & Classes) +- **localization_js()**: إنشاء JavaScript لتطبيق الترجمة في واجهة الويب. +- **dump_english_config()**: تصدير جميع النصوص الإنجليزية لملف ترجمة. +- **current_translation**: قاموس الترجمة الحالي. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/ui_gradio_extensions.py, modules/style_sorter.py +- الملفات التي يستدعيها هذا الملف لتشغيله: json \ No newline at end of file diff --git a/modules/lora.md b/modules/lora.md new file mode 100644 index 0000000000..4650a83f1d --- /dev/null +++ b/modules/lora.md @@ -0,0 +1,15 @@ +# وثيقة ملف: lora.md +## 1. الوظيفة الأساسية للملف +تحميل وتطبيق نماذج LoRA (Low-Rank Adaptation) مع إدارة تعيين المفاتيح. + +## 2. الدوال والكلاسات (Functions & Classes) +- `load_lora()`: تحميل نموذج LoRA +- `apply_lora()`: تطبيق LoRA على النموذج +- `map_lora_keys()`: تعيين مفاتيح LoRA +- `merge_lora()`: دمج LoRA مع النموذج +- `calculate_lora_strength()`: حساب قوة LoRA +- `get_lora_params()`: الحصول على معلمات LoRA + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `model_patcher.py`, `sd.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `ops.py`, `utils.py` diff --git a/modules/meta_parser.md b/modules/meta_parser.md new file mode 100644 index 0000000000..b3923d665e --- /dev/null +++ b/modules/meta_parser.md @@ -0,0 +1,14 @@ +# وثيقة ملف: meta_parser.md +## 1. الوظيفة الأساسية للملف +تحليل وحفظ البيانات الوصفية (metadata) للصور. يدعم تنسيقين: Fooocus (JSON) و A1111 (نص عادي). يوفر دوال لاستخراج المعلمات من الصور وحفظها. + +## 2. الدوال والكلاسات (Functions & Classes) +- **MetadataParser**: كلاس أساسي (ABC) لتحليل البيانات الوصفية. +- **load_parameter_button_click()**: تحميل المعلمات من البيانات الوصفية. +- **get_str() / get_number() / get_list()**: دوال مساعدة لاستخراج قيود بأنواع مختلفة. +- **get_exif()**: إنشاء بيانات EXIF من المعلمات. +- **re_param / re_imagesize**: أنماط regex لتحليل النص. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/private_logger.py, webui.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/config.py, modules/sdxl_styles.py, modules/flags.py, modules/hash_cache.py, modules/util.py, fooocus_version.py \ No newline at end of file diff --git a/modules/model_base.md b/modules/model_base.md new file mode 100644 index 0000000000..a0369b7207 --- /dev/null +++ b/modules/model_base.md @@ -0,0 +1,16 @@ +# وثيقة ملف: model_base.md +## 1. الوظيفة الأساسية للملف +تعريف الفئات الأساسية للنماذج الانتشار (Diffusion Models) بما في ذلك BaseModel وUNet. + +## 2. الدوال والكلاسات (Functions & Classes) +- `BaseModel()`: النموذج الأساسي للانتشار +- `UNet()`: شبكة UNet للتنبؤ +- `get_dtype()`: الحصول على نوع البيانات +- `get_model()`: الحصول على النموذج الداخلي +- `load_model()`: تحميل النموذج +- `process_config()`: معالجة الإعدادات +- `extra_conds()`: شروط إضافية + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sd.py`, `model_patcher.py`, `samplers.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `ops.py`, `utils.py` diff --git a/modules/model_detection.md b/modules/model_detection.md new file mode 100644 index 0000000000..d6c660b703 --- /dev/null +++ b/modules/model_detection.md @@ -0,0 +1,15 @@ +# وثيقة ملف: model_detection.md +## 1. الوظيفة الأساسية للملف +الكشف التلقائي عن نوع وبنية النموذج المحمل من ملفات الوزن. + +## 2. الدوال والكلاسات (Functions & Classes) +- `detect_config()`: كشف إعدادات النموذج +- `detect_architecture()`: كشف بنية النموذج +- `detect_model_type()`: كشف نوع النموذج +- `get_model_config()`: الحصول على إعدادات النموذج +- `probe_checkpoint()`: فحص نقطة التحقق +- `guess_model()`: تخمين نوع النموذج + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sd.py`, `model_management.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `model_base.py`, `utils.py` diff --git a/modules/model_loader.md b/modules/model_loader.md new file mode 100644 index 0000000000..c6b54828b2 --- /dev/null +++ b/modules/model_loader.md @@ -0,0 +1,10 @@ +# وثيقة ملف: model_loader.md +## 1. الوظيفة الأساسية للملف +تحميل النماذج من الإنترنت. يوفر دالة لتحميل الملفات من URLs مع دعم التخزين المؤقت المحلي و Hugging Face mirror. + +## 2. الدوال والكلاسات (Functions & Classes) +- **load_file_from_url()**: تحميل ملف من URL إلى مجلد نموذج محلي، مع استخدام الملف الموجود إذا كان متاحاً. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/config.py +- الملفات التي يستدعيها هذا الملف لتشغيله: torch.hub (download_url_to_file) \ No newline at end of file diff --git a/modules/model_management.md b/modules/model_management.md new file mode 100644 index 0000000000..49b1ec1d2d --- /dev/null +++ b/modules/model_management.md @@ -0,0 +1,17 @@ +# وثيقة ملف: model_management.md +## 1. الوظيفة الأساسية للملف +إدارة ذاكرة GPU وVRAM، تحميل وتفريغ النماذج، وتنسيق موارد الحوسبة بين الأجهزة. + +## 2. الدوال والكلاسات (Functions & Classes) +- `load_model_gpu()`: تحميل النموذج على GPU +- `free_memory()`: تحرير الذاكرة +- `get_torch_device()`: الحصول على جهاز PyTorch +- `get_vram_total()`: الحصول على إجمالي VRAM +- `get_free_vram()`: الحصول على VRAM المتاح +- `cleanup_models()`: تنظيف النماذج المحملة +- `unload_all_models()`: تفريغ جميع النماذج +- `thread_pool()`: مجموعة خيوط للمعالجة بالتوازي + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sd.py`, `samplers.py`, جميع ملفات النماذج +- الملفات التي يستدعيها هذا الملف لتشغيله: `model_patcher.py`, مكتبات PyTorch diff --git a/modules/model_patcher.md b/modules/model_patcher.md new file mode 100644 index 0000000000..024a47c749 --- /dev/null +++ b/modules/model_patcher.md @@ -0,0 +1,18 @@ +# وثيقة ملف: model_patcher.md +## 1. الوظيفة الأساسية للملف +تطبيق تعديلات LoRA والتصحيحات على النماذج المحملة مع إدارة التخزين المؤقت للتعديلات. + +## 2. الدوال والكلاسات (Functions & Classes) +- `ModelPatcher()`: كلاس رئيسي لتطبيق التصحيحات على النماذج +- `add_patches()`: إضافة patches للنموذج +- `remove_patches()`: إزالة patches من النموذج +- `load()`: تحميل النموذج +- `unload()`: تفريغ النموذج +- `clone()`: استنساخ النموذج +- `get_model()`: الحصول على النموذج +- `set_model_attn1_patch()`: تعيين patch للانتباه +- `set_model_patch()`: تعيين patch عام + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sd.py`, `samplers.py`, `model_management.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `lora.py`, `ops.py`, `model_base.py` diff --git a/modules/model_sampling.md b/modules/model_sampling.md new file mode 100644 index 0000000000..db3109548b --- /dev/null +++ b/modules/model_sampling.md @@ -0,0 +1,15 @@ +# وثيقة ملف: model_sampling.md +## 1. الوظيفة الأساسية للملف +تعريف جدولة الضوضاء (Noise Schedule) وأنواع التنبؤ المستخدمة في عملية الانتشار. + +## 2. الدوال والكلاسات (Functions & Classes) +- `ModelSampling()`: كلاس تنسيق النموذج +- `get_sigmas()`: الحصول على قيم Sigma +- `calculate_sigmas()`: حساب قيم Sigma +- `noise_schedule()`: جدولة الضوضاء +- `prediction_type()`: نوع التنبؤ (epsilon, v-prediction, etc) +- `get_denoise()`: الحصول على عملية إزالة الضوضاء + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `samplers.py`, `sample.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `model_base.py`, `utils.py` diff --git a/modules/ops.md b/modules/ops.md new file mode 100644 index 0000000000..e8c1cd99d2 --- /dev/null +++ b/modules/ops.md @@ -0,0 +1,18 @@ +# وثيقة ملف: ops.md +## 1. الوظيفة الأساسية للملف +تعريف عمليات الشبكات العصبية المخصصة (Custom Operations) لتحسين الأداء والكفاءة. + +## 2. الدوال والكلاسات (Functions & Classes) +- `disable_weight_init()`: تعطيل تهيئة الأوزان +- `enable_weight_init()`: تمكين تهيئة الأوزان +- `Linear()`: طبقة خطية مخصصة +- `Conv2d()`: طبقة التفاف2 مخصصة +- `GroupNorm()`: تطبيع المجموعة +- `LayerNorm()`: تطبيع الطبقة +- `Embedding()`: طبقة التضمين +- `Upsample()`: طبقة التكبير +- `Downsample()`: طبقة التصغير + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `model_base.py`, `model_patcher.py`, `clip_model.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: مكتبات PyTorch الأساسية diff --git a/modules/options.md b/modules/options.md new file mode 100644 index 0000000000..4775e5082a --- /dev/null +++ b/modules/options.md @@ -0,0 +1,16 @@ +# وثيقة ملف: options.md +## 1. الوظيفة الأساسية للملف +تعريف و إدارة أعلام المعاملات (Flags) وخيارات الإعدادات للبرنامج. + +## 2. الدوال والكلاسات (Functions & Classes) +- `Args()`: كلاس لتخزين المعاملات +- `FLAG_...`: أعلام ثابتة للخيارات المختلفة +- `get_default_args()`: الحصول على المعاملات الافتراضية +- `merge_args()`: دمج المعاملات +- `validate_options()`: التحقق من خيارات الإعدادات +- `load_options()`: تحميل الخيارات من ملف +- `save_options()`: حفظ الخيارات إلى ملف + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `args_parser.py`, `ldm_patched.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: لا يعتمد على ملفات أخرى diff --git a/modules/patch.md b/modules/patch.md new file mode 100644 index 0000000000..ae67b9cfb5 --- /dev/null +++ b/modules/patch.md @@ -0,0 +1,14 @@ +# وثيقة ملف: patch.md +## 1. الوظيفة الأساسية للملف +تطبيق التغييرات (monkey-patches) على وحدات ldm_patched لتخصيص سلوك نموذج Stable Diffusion. يعدل طريقة عمل العينات والانتباه والتحكم في التشتت وغير ذلك من المكونات الأساسية. + +## 2. الدوال والكلاسات (Functions & Classes) +- **PatchSettings**: كلاس لتخزين إعدادات التلبيس الحاد، ADM scaler، controlnet softness، adaptive cfg. +- **patch_all()**: تطبيق جميع التلبيسات على وحدات ldm_patched. +- **calculate_weight_patched()**: دالة معدّلة لحساب أوزان LoRA مع دعم Fooocus format. +- **unet_forward_patched()**: دالة forward معدّلة للـ UNet تدعم Fooocus-style processing. +- **calc_cond_uncond_batch_patched()**: دالة حساب الشرط المشروط/غير المشروط مع dithering. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/async_worker.py, modules/default_pipeline.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/patch_clip.py, modules/patch_precision.py, modules/anisotropic.py, modules/inpaint_worker.py, modules/constants.py, ldm_patched/* \ No newline at end of file diff --git a/modules/patch_clip.md b/modules/patch_clip.md new file mode 100644 index 0000000000..adec42c744 --- /dev/null +++ b/modules/patch_clip.md @@ -0,0 +1,12 @@ +# وثيقة ملف: patch_clip.md +## 1. الوظيفة الأساسية للملف +تطبيق تلبيسات على مشفر CLIP لتوفير التوافق مع Kohya/A1111. يعدل طريقة تشفير الرموز النصية وتهيئة النموذج لضمان التوافق بين التدريب والاستدلال. + +## 2. الدوال والكلاسات (Functions & Classes) +- **patched_encode_token_weights()**: دالة تشفير معدّلة تدعم الأوزان وتتعامل مع الحد الأقصى للطول. +- **patched_SDClipModel__init__()`**: تهيئة معدّلة لنموذج SDClip تستخدم HuggingFace transformers. +- **patch_all_clip()**: تطبيق جميع التلبيسات على وحدات CLIP. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/patch.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/ops.py, ldm_patched/modules/sd1_clip.py, ldm_patched/modules/ops.py, transformers (CLIPTextModel, CLIPVisionModelWithProjection) \ No newline at end of file diff --git a/modules/patch_precision.md b/modules/patch_precision.md new file mode 100644 index 0000000000..e9303c7ed8 --- /dev/null +++ b/modules/patch_precision.md @@ -0,0 +1,12 @@ +# وثيقة ملف: patch_precision.md +## 1. الوظيفة الأساسية للملف +تطبيق تلبيسات الدقة لتوفير التوافق مع Kohya. يعدل دوال time embedding و register schedule لتقليل الفروقات بين التدريب والاستدلال. + +## 2. الدوال والكلاسات (Functions & Classes) +- **patched_timestep_embedding()**: دالة time embedding معدّلة تتوافق مع تنفيذ Kohya. +- **patched_register_schedule()**: دالة جدول التسجيل معدّلة لحساب sigmas وalphas_cumprod بشكل متوافق. +- **patch_all_precision()**: تطبيق جميع تلبيسات الدقة على وحدات ldm_patched. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/patch.py +- الملفات التي يستدعيها هذا الملف لتشغيله: ldm_patched/ldm/modules/diffusionmodules/openaimodel.py, ldm_patched/modules/model_sampling.py \ No newline at end of file diff --git a/modules/private_logger.md b/modules/private_logger.md new file mode 100644 index 0000000000..ad148eabc4 --- /dev/null +++ b/modules/private_logger.md @@ -0,0 +1,12 @@ +# وثيقة ملف: private_logger.md +## 1. الوظيفة الأساسية للملف +تسجيل الصور المولّدة وإنشاء معرض HTML. يحفظ الصور بالتنسيقات المختلفة (PNG, JPEG, WEBP) مع البيانات الوصفية، ويولّد ملف log.html لعرض النتائج. + +## 2. الدوال والكلاسات (Functions & Classes) +- **log()**: دالة تسجيل الصورة الرئيسية، تحفظ الصورة مع البيانات الوصفية وتُرجع المسار. +- **get_current_html_path()**: الحصول على مسار ملف HTML الحالي. +- **log_cache**: قاموس تخزين مؤقت لبيانات السجل. + +## 3. العتمادات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/async_worker.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/config.py, modules/flags.py, modules/meta_parser.py, modules/util.py, args_manager.py \ No newline at end of file diff --git a/modules/sample.md b/modules/sample.md new file mode 100644 index 0000000000..6e0e339ba9 --- /dev/null +++ b/modules/sample.md @@ -0,0 +1,17 @@ +# وثيقة ملف: sample.md +## 1. الوظيفة الأساسية للملف +تنسيق وتنسيق أعلى لعملية أخذ العينات، متضمنة تحضير المدخلات وإدارة الحلقات وتنسيق المخرجات. + +## 2. الدوال والكلاسات (Functions & Classes) +- `sample_txt2img()`: أخذ عينات من النص إلى الصورة +- `sample_img2img()`: أخذ عينات من الصورة إلى الصورة +- `encode_prompt()`: ترميز النص الموجه +- `decode_latent()`: فك ترميز الفضاء الكامن +- `encode_latent()`: ترميز الفضاء الكامن +- `get_noise()`: الحصول على الضوضاء +- `get_sigmas()`: الحصول على القيمSigma +- `create_denoise_function()`: إنشاء دالة إزالة الضوضاء + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `ldm_patched.py`, واجهات المستخدم المختلفة +- الملفات التي يستدعيها هذا الملف لتشغيله: `samplers.py`, `sd.py`, `model_management.py` diff --git a/modules/sample_hijack.md b/modules/sample_hijack.md new file mode 100644 index 0000000000..28dadd2457 --- /dev/null +++ b/modules/sample_hijack.md @@ -0,0 +1,14 @@ +# وثيقة ملف: sample_hijack.md +## 1. الوظيفة الأساسية للملف +اختطاف وتعديل عملية أخذ العينات لدعم التبديل بين النموذج الأساسي والمرشح. يوفر دوال CLIP منفصلة وعملية عينات معدّلة تدعم refiner switching. + +## 2. الدوال والكلاسات (Functions & Classes) +- **clip_separate()**: فصل مخرجات CLIP للتكيف مع نماذج مختلفة (SDXL, SDXLRefiner, SD1.5). +- **clip_separate_inner()**: دالة داخلية لفصل المخرجات حسب نوع النموذج المستهدف. +- **clip_separate_after_preparation()**: فصل بعد تحضير الشروط. +- **sample_hacked()**: دالة العينات المعدّلة التي تدعم التبديل بين base وrefiner أثناء عملية التوليد. +- **current_refiner / refiner_switch_step**: متغيرات عامة لتتبع حالة المرشح الحالي. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/default_pipeline.py, modules/core.py +- الملفات التي يستدعيها هذا الملف لتشغيله: ldm_patched/modules/samplers.py, ldm_patched/modules/sample.py, ldm_patched/modules/model_base.py, ldm_patched/k_diffusion/sampling.py \ No newline at end of file diff --git a/modules/samplers.md b/modules/samplers.md new file mode 100644 index 0000000000..2ba0ce6328 --- /dev/null +++ b/modules/samplers.md @@ -0,0 +1,17 @@ +# وثيقة ملف: samplers.md +## 1. الوظيفة الأساسية للملف +تنفيذ عينات CFG (Classifier-Free Guidance) واستدعاء المخططات (Schedulers) المختلفة لعملية إزالة الضوضاء في نماذج الانتشار. + +## 2. الدوال والكلاسات (Functions & Classes) +- `sample()`: الدالة الرئيسية لأخذ العينات +- `CFGDenoiser()`: كلاس لازالة الضوضاء مع التوجيه بدون مصنف +- `KSAMPLER()`: كلاس لخوارزمية K-Sampling +- `BasicScheduler()`: مخطط أساسي لإزالة الضوضاء +- `SDSampler()`: مخطط عينات Stable Diffusion +- `add_area()`: إضافة منطقة للعينات +- `calc_cond()`: حساب الشرط +- `encode_model_conds()`: ترميز شروط النموذج + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sample.py`, `ldm_patched.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `model_base.py`, `model_patcher.py`, `conds.py` diff --git a/modules/sd.md b/modules/sd.md new file mode 100644 index 0000000000..567bb07c1f --- /dev/null +++ b/modules/sd.md @@ -0,0 +1,16 @@ +# وثيقة ملف: sd.md +## 1. الوظيفة الأساسية للملف +تحميل وتخزين نماذج الاختراق (Checkpoints) ونماذج التخزين المؤقت (CKPT/Safetensors) مع دعم الترميز والفك الترميز للبيانات المخزنة. + +## 2. الدوال والكلاسات (Functions & Classes) +- `load_checkpoint_guess_config()`: تحميل نقطة التحقق مع تخمين الإعدادات تلقائياً +- `load_state_dict()`: تحميل حالة النموذج من ملف +- `save_checkpoint()`: حفظ نقطة التحقق +- `create_checkpoint()`: إنشاء نقطة تحقق جديدة +- `get_state_dict()`: الحصول على حالة النموذج +- `disable_weight_init()`: تعطيل تهيئة الأوزان +- `enable_weight_init()`: تمكين تهيئة الأوزان + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `model_management.py`, `model_detection.py`, `sample.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `model_base.py`, `model_patcher.py`, `ops.py` diff --git a/modules/sd1_clip.md b/modules/sd1_clip.md new file mode 100644 index 0000000000..0d77fc43ef --- /dev/null +++ b/modules/sd1_clip.md @@ -0,0 +1,15 @@ +# وثيقة ملف: sd1_clip.md +## 1. الوظيفة الأساسية للملف +محلل النص ومشفر CLIP لـ Stable Diffusion 1.x مع دعم Tokenizer و Transformer. + +## 2. الدوال والكلاسات (Functions & Classes) +- `SD1ClipModel()`: نموذج CLIP لـ SD1 +- `CLIPTokenizer()`: محلل النص +- `CLIPTextTransformer()`: محول النص +- `encode_text()`: ترميز النص +- `tokenize()`: تقسيم النص إلى رموز +- `untokenize()`: تحويل الرموز إلى نص + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sd.py`, `sample.py`, `conds.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `clip_model.py`, `ops.py` diff --git a/modules/sd2_clip.md b/modules/sd2_clip.md new file mode 100644 index 0000000000..a1894a6879 --- /dev/null +++ b/modules/sd2_clip.md @@ -0,0 +1,15 @@ +# وثيقة ملف: sd2_clip.md +## 1. الوظيفة الأساسية للملف +مشفر CLIP لـ Stable Diffusion 2.x باستخدام CLIP-H/14 مع تحسينات للدقة العالية. + +## 2. الدوال والكلاسات (Functions & Classes) +- `SD2ClipModel()`: نموذج CLIP لـ SD2 +- `encode_text()`: ترميز النص +- `Pooler()`: طبقة التجميع +- `ResidualAttentionBlock()`: كلاس انتباه متبقٍ +- `Transformer()`: المحول +- `get_embeddings()`: الحصول على التضمينات + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sd.py`, `sample.py`, `conds.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `clip_model.py`, `ops.py` diff --git a/modules/sdxl_clip.md b/modules/sdxl_clip.md new file mode 100644 index 0000000000..3745a928c4 --- /dev/null +++ b/modules/sdxl_clip.md @@ -0,0 +1,14 @@ +# وثيقة ملف: sdxl_clip.md +## 1. الوظيفة الأساسية للملف +مشفر CLIP المزدوج لـ Stable Diffusion XL مع دعم CLIP-G و OpenCLIP. + +## 2. الدوال والكلاسات (Functions & Classes) +- `SDXLClipModel()`: نموذج CLIP المزدوج لـ SDXL +- `encode_text()`: ترميز النص بكل النماذج +- `get_embeddings()`: الحصول على التضمينات +- `merge_embeddings()`: دمج التضمينات من النماذج المختلفة +- `pad_tokens()`: تعبئة الرموز + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sd.py`, `sample.py`, `conds.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `clip_model.py`, `sd1_clip.py`, `ops.py` diff --git a/modules/sdxl_styles.md b/modules/sdxl_styles.md new file mode 100644 index 0000000000..0fb23ad583 --- /dev/null +++ b/modules/sdxl_styles.md @@ -0,0 +1,15 @@ +# وثيقة ملف: sdxl_styles.md +## 1. الوظيفة الأساسية للملف +إدارة أنماط SDXL. يقرأ ملفات الأنماط من دليل sdxl_styles ويوفر دوال لتطبيق الأنماط على النصوص و-normalize المفاتيح. + +## 2. الدوال والكلاسات (Functions & Classes) +- **normalize_key()**: تطبيع مفتاح النمط بتحويله إلى صيغة موحدة. +- **apply_style()**: تطبيق نمط على النص الإيجابي والسلبي. +- **get_random_style()**: الحصول على نمط عشوائي. +- **apply_arrays()**: معالجة المصفوفات في النصوص [[]]. +- **styles**: قاموس يحتوي على جميع الأنماط المحملة. +- **style_keys**: قائمة بمفاتيح الأنماط. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/config.py, modules/meta_parser.py, modules/util.py, webui.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/extra_utils.py \ No newline at end of file diff --git a/modules/style_sorter.md b/modules/style_sorter.md new file mode 100644 index 0000000000..2728de4178 --- /dev/null +++ b/modules/style_sorter.md @@ -0,0 +1,14 @@ +# وثيقة ملف: style_sorter.md +## 1. الوظيفة الأساسية للملف +ترتيب وبحث الأنماط. يدير ترتيب الأنماط المحفوظ ويبحث فيها بناءً على الاستعلام. + +## 2. الدوال والكلاسات (Functions & Classes) +- **try_load_sorted_styles()**: تحميل ترتيب الأنماط المحفوظ من sorted_styles.json. +- **sort_styles()**: ترتيب الأنماط وحفظ الترتيب. +- **search_styles()**: البحث في الأنماط بناءً على الاستعلام. +- **localization_key()**: الحصول على مفتاح الترجمة للنمط. +- **all_styles**: قائمة بجميع الأنماط مرتبة. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: webui.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/localization.py \ No newline at end of file diff --git a/modules/supported_models.md b/modules/supported_models.md new file mode 100644 index 0000000000..91412b5bb3 --- /dev/null +++ b/modules/supported_models.md @@ -0,0 +1,15 @@ +# وثيقة ملف: supported_models.md +## 1. الوظيفة الأساسية للملف +تعريف إعدادات وتكوينات النماذج المدعومة في النظام. + +## 2. الدوال والكلاسات (Functions & Classes) +- `ModelConfig()`: كلاس إعدادات النموذج +- `get_supported_models()`: الحصول على النماذج المدعومة +- `register_model()`: تسجيل نموذج جديد +- `validate_config()`: التحقق من صحة الإعدادات +- `get_config_for_model()`: الحصول على إعدادات نموذج محدد +- `list_models()`: قائمة النماذج المتاحة + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `sd.py`, `model_detection.py`, `model_base.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: `supported_models_base.py` diff --git a/modules/supported_models_base.md b/modules/supported_models_base.md new file mode 100644 index 0000000000..8a42a751c9 --- /dev/null +++ b/modules/supported_models_base.md @@ -0,0 +1,16 @@ +# وثيقة ملف: supported_models_base.md +## 1. الوظيفة الأساسية للملف +التعريف الأساسي لإعدادات النماذج المدعومة والتكوينات الأساسية للنماذج المختلفة. + +## 2. الدوال والكلاسات (Functions & Classes) +- `BaseModelConfig()`: إعدادات النموذج الأساسية +- `UNetConfig()`: إعدادات UNet +- `VAEConfig()`: إعدادات VAE +- `TextEncoderConfig()`: إعدادات مشفر النص +- `ModelType()`: نوع النموذج +- `get_default_config()`: الحصول على الإعدادات الافتراضية +- `merge_configs()`: دمج الإعدادات + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: `supported_models.py`, `model_base.py` +- الملفات التي يستدعيها هذا الملف لتشغيله: لا يعتمد على ملفات أخرى diff --git a/modules/ui_gradio_extensions.md b/modules/ui_gradio_extensions.md new file mode 100644 index 0000000000..2d075dbd45 --- /dev/null +++ b/modules/ui_gradio_extensions.md @@ -0,0 +1,13 @@ +# وثيقة ملف: ui_gradio_extensions.md +## 1. الوظيفة الأساسية للملف +حقن JavaScript و CSS في واجهة Gradio. يعدل استجابات القالب لإضافة ملفات JS و CSS مخصصة. + +## 2. الدوال والكلاسات (Functions & Classes) +- **javascript_html()**: إنشاء وسوم script لملفات JavaScript. +- **css_html()**: إنشاء وسوم link لملفات CSS. +- **reload_javascript()**: تعديل استجابات القالب لإضافة JS/CSS. +- **webpath()**: تحويل مسار ملف إلى مسار ويب. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: webui.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/localization.py, args_manager.py, gradio.routes \ No newline at end of file diff --git a/modules/upscaler.md b/modules/upscaler.md new file mode 100644 index 0000000000..41d2ca8a4b --- /dev/null +++ b/modules/upscaler.md @@ -0,0 +1,12 @@ +# وثيقة ملف: upscaler.md +## 1. الوظيفة الأساسية للملف +تنفيذ عملية تكبير الصور باستخدام نموذج ESRGAN. يوفر دالة perform_upscale لتكبير الصور بمعامل 4x. + +## 2. الدوال والكلاسات (Functions & Classes) +- **perform_upscale()**: دالة تقوم بتكبير الصورة باستخدام نموذج ESRGAN المحمل. +- **opImageUpscaleWithModel**: كائن عملية التكبير من ldm_patched. +- **model**: النموذج المحمل (ESRGAN) أو None إذا لم يتم تحميله بعد. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: modules/inpaint_worker.py, modules/async_worker.py +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/core.py, modules/config.py, ldm_patched/contrib/external_upscale_model.py, ldm_patched/pfn/architecture/RRDB.py \ No newline at end of file diff --git a/modules/util.md b/modules/util.md new file mode 100644 index 0000000000..0327c4cf15 --- /dev/null +++ b/modules/util.md @@ -0,0 +1,17 @@ +# وثيقة ملف: util.md +## 1. الوظيفة الأساسية للملف + أدوات عامة متنوعة. يوفر دوال لمعالجة الصور، حساب التجزئة، تحويل التنسيقات، ومعالجة النصوص. + +## 2. الدوال والكلاسات (Functions & Classes) +- **resample_image()**: إعادة تsample الصورة إلى حجم جديد. +- **resize_image()**: تغيير حجم الصورة بأوضاع مختلفة (0: resize, 1: crop+resize, 2: fill+resize). +- **erode_or_dilate()**: تطبيق erosion أو dilation على القناع. +- **sha256()**: حساب تجزئة SHA256 لملف. +- **get_file_from_folder_list()**: البحث عن ملف في قائمة مجلدات. +- **get_enabled_loras()**: استخراج LoRA الممكّنة من القائمة. +- **generate_temp_filename()**: إنشاء اسم ملف مؤقت معطياً. +- **LORAS_PROMPT_PATTERN**: نمط regex لاستخراج LoRA من النص. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: معظم ملفات modules/ +- الملفات التي يستدعيها هذا الملف لتشغيله: modules/config.py, modules/sdxl_styles.py, modules/flags.py, cv2, PIL, hashlib \ No newline at end of file diff --git a/modules/utils.md b/modules/utils.md new file mode 100644 index 0000000000..85d9d19ab5 --- /dev/null +++ b/modules/utils.md @@ -0,0 +1,19 @@ +# وثيقة ملف: utils.md +## 1. الوظيفة الأساسية للملف +دوال وأدوات مساعدة عامة تُستخدم في جميع أنحاء المشروع. + +## 2. الدوال والكلاسات (Functions & Classes) +- `default()`: الحصول على قيمة افتراضية +- `concat()`: دمج المصفوفات +- `stack()`: تكديس المصفوفات +- `zeros()`: إنشاء مصفوفة صفرية +- `ones()`: إنشاء مصفوفة موحدة +- `rand()`: إنشاء أرقام عشوائية +- `save_image()`: حفظ الصورة +- `load_image()`: تحميل الصورة +- `get_device()`: الحصول على الجهاز +- `set_device()`: تعيين الجهاز + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: جميع ملفات المشروع تقريباً +- الملفات التي يستدعيها هذا الملف لتشغيله: مكتبات PyTorch الأساسية diff --git a/pfn/__init__.py.md b/pfn/__init__.py.md new file mode 100644 index 0000000000..d981ada8c6 --- /dev/null +++ b/pfn/__init__.py.md @@ -0,0 +1,12 @@ +# وثيقة ملف: __init__.py +## 1. الوظيفة الأساسية للملف +ملف التهيئة لوحدة pfn (PyTorch Foundation)، يجعل المجلد وحدة Python ويستورد الوحدات الفرعية. + +## 2. الدوال والكلاسات (Functions & Classes) +- لا تحتوي على دوال أو كلاسات محددة، فقط استيراد الوحدات الفرعية. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - جميع الملفات التي تستورد من ldm_patched/pfn/ +- الملفات التي يستدعيها هذا الملف لتشغيله: + - لا شيء (ملف تهيئة فارغ) \ No newline at end of file diff --git a/pfn/architecture/DAT.md b/pfn/architecture/DAT.md new file mode 100644 index 0000000000..993858c41d --- /dev/null +++ b/pfn/architecture/DAT.md @@ -0,0 +1,17 @@ +# وثيقة ملف: DAT.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيك DAT (Dual Aggregation Transformer) لتحسين جودة الصور. + +## 2. الدوال والكلاسات (Functions & Classes) +- DAT: كلاس رئيسي لهيكل DAT +- DATBlock: كلاس ل:block DAT +- ChannelAttention: كلاس لانتباه القنوات +- SpatialAttention: كلاس لانتباه المكاني + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - ldm_patched/pfn/architecture/block.py \ No newline at end of file diff --git a/pfn/architecture/HAT.md b/pfn/architecture/HAT.md new file mode 100644 index 0000000000..71dccd5277 --- /dev/null +++ b/pfn/architecture/HAT.md @@ -0,0 +1,17 @@ +# وثيقة ملف: HAT.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل HAT (Hybrid Attention Transformer) لتحسين جودة الصور. + +## 2. الدوال والكلاسات (Functions & Classes) +- HAT: كلاس رئيسي لهيكل HAT +- HATBlock: كلاس ل:block HAT +- ChannelAttention: كلاس لانتباه القنوات +- SpatialAttention: كلاس لانتباه المكاني + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - ldm_patched/pfn/architecture/block.py \ No newline at end of file diff --git a/pfn/architecture/LaMa.md b/pfn/architecture/LaMa.md new file mode 100644 index 0000000000..bdb2f295dc --- /dev/null +++ b/pfn/architecture/LaMa.md @@ -0,0 +1,17 @@ +# وثيقة ملف: LaMa.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل LaMa (Large Mask) لتكميم الصور و إزالة العناصر غير المرغوبة. + +## 2. الدوال والكلاسات (Functions & Classes) +- LaMa: كلاس رئيسي لهيكل LaMa +- LaMaFourier: كلاس لـ LaMa مع طبقة فورييه +- FFCResNetBlock: كلاس ل:block ResNet مع FFC +- FFC: كلاس لـ Fast Fourier Convolution + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - torch.nn.functional \ No newline at end of file diff --git a/pfn/architecture/OmniSR/ChannelAttention.md b/pfn/architecture/OmniSR/ChannelAttention.md new file mode 100644 index 0000000000..6cd988c48f --- /dev/null +++ b/pfn/architecture/OmniSR/ChannelAttention.md @@ -0,0 +1,13 @@ +# وثيقة ملف: ChannelAttention.py +## 1. الوظيفة الأساسية للملف +يحتوي على كلاس ChannelAttention لانتباه القنوات في هيكل OmniSR. + +## 2. الدوال والكلاسات (Functions & Classes) +- ChannelAttention: كلاس لانتباه القنوات مع SE Block + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/OmniSR/OmniSR.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/OmniSR/OSA.md b/pfn/architecture/OmniSR/OSA.md new file mode 100644 index 0000000000..34f12b6cac --- /dev/null +++ b/pfn/architecture/OmniSR/OSA.md @@ -0,0 +1,13 @@ +# وثيقة ملف: OSA.py +## 1. الوظيفة الأساسية للملف +يحتوي على كلاس OSA (One-Shot Aggregation) لتجميع الميزات في هيكل OmniSR. + +## 2. الدوال والكلاسات (Functions & Classes) +- OSA: كلاس لتجميع الميزات باستخدام One-Shot Aggregation + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/OmniSR/OmniSR.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/OmniSR/OSAG.md b/pfn/architecture/OmniSR/OSAG.md new file mode 100644 index 0000000000..f19869a85b --- /dev/null +++ b/pfn/architecture/OmniSR/OSAG.md @@ -0,0 +1,13 @@ +# وثيقة ملف: OSAG.py +## 1. الوظيفة الأساسية للملف +يحتوي على كلاس OSAG (One-Shot Aggregation Group) لمجموعات تجميع الميزات في هيكل OmniSR. + +## 2. الدوال والكلاسات (Functions & Classes) +- OSAG: كلاس لمجموعات تجميع الميزات باستخدام One-Shot Aggregation + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/OmniSR/OmniSR.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/OmniSR/OmniSR.md b/pfn/architecture/OmniSR/OmniSR.md new file mode 100644 index 0000000000..f1d7eb1795 --- /dev/null +++ b/pfn/architecture/OmniSR/OmniSR.md @@ -0,0 +1,21 @@ +# وثيقة ملف: OmniSR.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل OmniSR الرئيسي لتحسين دقة الصور. + +## 2. الدوال والكلاسات (Functions & Classes) +- OmniSR: كلاس رئيسي لهيكل OmniSR +- OmniSRBlock: كلاس ل:block OmniSR +- WindowAttention: كلاس لانتباه النافذة + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - ldm_patched/pfn/architecture/OmniSR/ChannelAttention.py + - ldm_patched/pfn/architecture/OmniSR/esa.py + - ldm_patched/pfn/architecture/OmniSR/layernorm.py + - ldm_patched/pfn/architecture/OmniSR/OSA.py + - ldm_patched/pfn/architecture/OmniSR/OSAG.py + - ldm_patched/pfn/architecture/OmniSR/pixelshuffle.py \ No newline at end of file diff --git a/pfn/architecture/OmniSR/esa.md b/pfn/architecture/OmniSR/esa.md new file mode 100644 index 0000000000..68c7fae04c --- /dev/null +++ b/pfn/architecture/OmniSR/esa.md @@ -0,0 +1,13 @@ +# وثيقة ملف: esa.py +## 1. الوظيفة الأساسية للملف +يحتوي على كلاس ESA (Efficient Spatial Attention) لانتباه مكاني فعال في هيكل OmniSR. + +## 2. الدوال والكلاسات (Functions & Classes) +- ESA: كلاس لانتباه مكاني فعال + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/OmniSR/OmniSR.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/OmniSR/layernorm.md b/pfn/architecture/OmniSR/layernorm.md new file mode 100644 index 0000000000..9424b3cb10 --- /dev/null +++ b/pfn/architecture/OmniSR/layernorm.md @@ -0,0 +1,13 @@ +# وثيقة ملف: layernorm.md +## 1. الوظيفة الأساسية للملف +يحتوي على كلاس LayerNorm المخصص لتطبيع الطبقات في هيكل OmniSR. + +## 2. الدوال والكلاسات (Functions & Classes) +- LayerNorm: كلاس مخصص لتطبيع الطبقات + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/OmniSR/OmniSR.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/OmniSR/pixelshuffle.md b/pfn/architecture/OmniSR/pixelshuffle.md new file mode 100644 index 0000000000..e330b95eed --- /dev/null +++ b/pfn/architecture/OmniSR/pixelshuffle.md @@ -0,0 +1,14 @@ +# وثيقة ملف: pixelshuffle.md +## 1. الوظيفة الأساسية للملف +يحتوي على كلاس PixelShuffle لتحسين دقة الصور عبر خلط البكسل. + +## 2. الدوال والكلاسات (Functions & Classes) +- PixelShuffle: كلاس لتحسين الدقة عبر خلط البكسل +- Upsample: كلاس لـ upsampling + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/OmniSR/OmniSR.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/RRDB.md b/pfn/architecture/RRDB.md new file mode 100644 index 0000000000..0c49515116 --- /dev/null +++ b/pfn/architecture/RRDB.md @@ -0,0 +1,18 @@ +# وثيقة ملف: RRDB.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل RRDB (Residual-in-Residual Dense Block) المستخدم في RealESRGAN ونماذج التكبير. + +## 2. الدوال والكلاسات (Functions & Classes) +- RRDB: كلاس رئيسي لهيكل RRDB +- RRDBNet: كلاس الشبكة الكاملة RRDB +- RRDBBlock: كلاس ل:block RRDB +- ResidualDenseBlock: كلاس ل:block الباقي الكثيف + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py + - ldm_patched/pfn/architecture/SPSR.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - torch.nn.functional \ No newline at end of file diff --git a/pfn/architecture/SCUNet.md b/pfn/architecture/SCUNet.md new file mode 100644 index 0000000000..13299a3361 --- /dev/null +++ b/pfn/architecture/SCUNet.md @@ -0,0 +1,16 @@ +# وثيقة ملف: SCUNet.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل SCUNet لتنقية الصور وتحسين جودتها. + +## 2. الدوال والكلاسات (Functions & Classes) +- SCUNet: كلاس رئيسي لهيكل SCUNet +- SCUNetBlock: كلاس ل:block SCUNet +- ChannelAttention: كلاس لانتباه القنوات +- SpatialAttention: كلاس لانتباه المكاني + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/SPSR.md b/pfn/architecture/SPSR.md new file mode 100644 index 0000000000..1ee0f018df --- /dev/null +++ b/pfn/architecture/SPSR.md @@ -0,0 +1,16 @@ +# وثيقة ملف: SPSR.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل SPSR (Self-Pruned Super-Resolution) لتحسين دقة الصور. + +## 2. الدوال والكلاسات (Functions & Classes) +- SPSR: كلاس رئيسي لهيكل SPSR +- SPSRNet: كلاس الشبكة الكاملة SPSR +- RRDBBlock: كلاس ل:block RRDB مع Self-Pruning + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - ldm_patched/pfn/architecture/RRDB.py \ No newline at end of file diff --git a/pfn/architecture/SRVGG.md b/pfn/architecture/SRVGG.md new file mode 100644 index 0000000000..8d344f6d9f --- /dev/null +++ b/pfn/architecture/SRVGG.md @@ -0,0 +1,13 @@ +# وثيقة ملف: SRVGG.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل SRVGG (Super-Resolution Very Deep Generative Network) لتحسين دقة الصور. + +## 2. الدوال والكلاسات (Functions & Classes) +- SRVGGNetCompact: كلاس رئيسي لهيكل SRVGG المدمج + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/SwiftSRGAN.md b/pfn/architecture/SwiftSRGAN.md new file mode 100644 index 0000000000..95fa68c5eb --- /dev/null +++ b/pfn/architecture/SwiftSRGAN.md @@ -0,0 +1,15 @@ +# وثيقة ملف: SwiftSRGAN.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل SwiftSRGAN لتحسين دقة الصور بسرعة عالية. + +## 2. الدوال والكلاسات (Functions & Classes) +- SwiftSRGAN: كلاس رئيسي لهيكل SwiftSRGAN +- ResidualBlock: كلاس ل:block الباقي +- Upsample: كلاس لـ upsampling + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/Swin2SR.md b/pfn/architecture/Swin2SR.md new file mode 100644 index 0000000000..6df7919430 --- /dev/null +++ b/pfn/architecture/Swin2SR.md @@ -0,0 +1,15 @@ +# وثيقة ملف: Swin2SR.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل Swin2SR لتحسين دقة الصور باستخدام معمارية Swin Transformer. + +## 2. الدوال والكلاسات (Functions & Classes) +- Swin2SR: كلاس رئيسي لهيكل Swin2SR +- Swin2SRBlock: كلاس ل:block Swin2SR +- WindowAttention: كلاس لانتباه النافذة + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/SwinIR.md b/pfn/architecture/SwinIR.md new file mode 100644 index 0000000000..79fcaec0a2 --- /dev/null +++ b/pfn/architecture/SwinIR.md @@ -0,0 +1,16 @@ +# وثيقة ملف: SwinIR.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل SwinIR لتحسين دقة الصور باستخدام معمارية Swin Transformer. + +## 2. الدوال والكلاسات (Functions & Classes) +- SwinIR: كلاس رئيسي لهيكل SwinIR +- SwinIRBlock: كلاس ل:block SwinIR +- WindowAttention: كلاس لانتباه النافذة +- TransformerBlock: كلاس ل:block المحول + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/__init__.py.md b/pfn/architecture/__init__.py.md new file mode 100644 index 0000000000..5aeedb89d1 --- /dev/null +++ b/pfn/architecture/__init__.py.md @@ -0,0 +1,12 @@ +# وثيقة ملف: __init__.py +## 1. الوظيفة الأساسية للملف +ملف التهيئة لوحدة architecture، يجعل المجلد وحدة Python ويستورد جميع هياكل النماذج المختلفة. + +## 2. الدوال والكلاسات (Functions & Classes) +- لا تحتوي على دوال أو كلاسات محددة، فقط استيراد الوحدات الفرعية. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - جميع الملفات التي تستورد من ldm_patched/pfn/architecture/ +- الملفات التي يستدعيها هذا الملف لتشغيله: + - لا شيء (ملف تهيئة فارغ) \ No newline at end of file diff --git a/pfn/architecture/block.md b/pfn/architecture/block.md new file mode 100644 index 0000000000..06fdd4ace5 --- /dev/null +++ b/pfn/architecture/block.md @@ -0,0 +1,19 @@ +# وثيقة ملف: block.py +## 1. الوظيفة الأساسية للملف +يحتوي على الكتل الأساسية المشتركة لبناء هياكل النماذج المختلفة. + +## 2. الدوال والكلاسات (Functions & Classes) +- ResidualBlock: كلاس ل:block الباقي +- ConvBlock: كلاس ل:block الالتوافي +- Upsample: كلاس لـ upsampling +- Downsample: كلاس لـ downsampling +- Normalize: كلاس للتطبيع + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/DAT.md + - ldm_patched/pfn/architecture/HAT.md + - ldm_patched/pfn/architecture/RRDB.md +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/face/arcface_arch.md b/pfn/architecture/face/arcface_arch.md new file mode 100644 index 0000000000..a05a56b165 --- /dev/null +++ b/pfn/architecture/face/arcface_arch.md @@ -0,0 +1,16 @@ +# وثيقة ملف: arcface_arch.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيك ArcFace لاستخراج ميزات الوجوه. + +## 2. الدوال والكلاسات (Functions & Classes) +- ArcFace: كلاس رئيسي لهيكل ArcFace +- IRBlock: كلاس ل:block IR +- Bottleneck: كلاس ل:block Bottleneck + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/face/gfpganv1_arch.py + - ldm_patched/pfn/architecture/face/gfpganv1_clean_arch.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/face/codeformer.md b/pfn/architecture/face/codeformer.md new file mode 100644 index 0000000000..38676a9216 --- /dev/null +++ b/pfn/architecture/face/codeformer.md @@ -0,0 +1,16 @@ +# وثيقة ملف: codeformer.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل CodeFormer لتحسين جودة الوجوه. + +## 2. الدوال والكلاسات (Functions & Classes) +- CodeFormer: كلاس رئيسي لهيكل CodeFormer +- VQGAN: كلاس لـ Vector Quantized GAN +- TransformerEncoder: كلاس للمُرمِّز المحول +- TransformerDecoder: كلاس للفاكم المحول + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/face/fused_act.md b/pfn/architecture/face/fused_act.md new file mode 100644 index 0000000000..45a1b15a19 --- /dev/null +++ b/pfn/architecture/face/fused_act.md @@ -0,0 +1,17 @@ +# وثيقة ملف: fused_act.py +## 1. الوظيفة الأساسية للملف +يحتوي على تطبيق Fused Activation لتحسين كفاءة العمليات Activation. + +## 2. الدوال والكلاسات (Functions & Classes) +- FReLU: كلاس لـ Funnel ReLU +- FusedLeakyReLU: كلاس لـ Fused LeakyReLU +- fused_leaky_relu(): دالة مساعدة لتطبيق Fused LeakyReLU + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/face/gfpganv1_arch.py + - ldm_patched/pfn/architecture/face/gfpganv1_clean_arch.py + - ldm_patched/pfn/architecture/face/stylegan2_arch.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/face/gfpgan_bilinear_arch.md b/pfn/architecture/face/gfpgan_bilinear_arch.md new file mode 100644 index 0000000000..019208e2d8 --- /dev/null +++ b/pfn/architecture/face/gfpgan_bilinear_arch.md @@ -0,0 +1,15 @@ +# وثيقة ملف: gfpgan_bilinear_arch.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيك GFPGAN Bilinear لتحسين جودة الوجوه باستخدام استيفاء ثنائي الخط. + +## 2. الدوال والكلاسات (Functions & Classes) +- GFPGANer: كلاس رئيسي لهيكل GFPGAN Bilinear +- GFPGANGenerator: كلاس للمولّد GFPGAN +- GFPGANGeneratorBilinear: كلاس للمولّد Bilinear + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/face/gfpganv1_arch.md b/pfn/architecture/face/gfpganv1_arch.md new file mode 100644 index 0000000000..7d6e73d07d --- /dev/null +++ b/pfn/architecture/face/gfpganv1_arch.md @@ -0,0 +1,19 @@ +# وثيقة ملف: gfpganv1_arch.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل GFPGANv1 لتحسين جودة الوجوه. + +## 2. الدوال والكلاسات (Functions & Classes) +- GFPGANv1: كلاس رئيسي لهيكل GFPGANv1 +- GFPGANGenerator: كلاس للمولّد GFPGAN +- GFPGANDiscriminator: كلاس لمميّز GFPGAN +- StyleGAN2Generator: كلاس للمولّد StyleGAN2 + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - ldm_patched/pfn/architecture/face/arcface_arch.py + - ldm_patched/pfn/architecture/face/fused_act.py + - ldm_patched/pfn/architecture/face/upfirdn2d.py \ No newline at end of file diff --git a/pfn/architecture/face/gfpganv1_clean_arch.md b/pfn/architecture/face/gfpganv1_clean_arch.md new file mode 100644 index 0000000000..7abcb58163 --- /dev/null +++ b/pfn/architecture/face/gfpganv1_clean_arch.md @@ -0,0 +1,17 @@ +# وثيقة ملف: gfpganv1_clean_arch.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل GFPGANv1 Clean النظيف لتحسين جودة الوجوه. + +## 2. الدوال والكلاسات (Functions & Classes) +- GFPGANv1Clean: كلاس رئيسي لهيكل GFPGANv1 Clean +- GFPGANGenerator: كلاس للمولّد GFPGAN +- GFPGANDiscriminator: كلاس لمميّز GFPGAN + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - ldm_patched/pfn/architecture/face/arcface_arch.py + - ldm_patched/pfn/architecture/face/fused_act.py \ No newline at end of file diff --git a/pfn/architecture/face/restoreformer_arch.md b/pfn/architecture/face/restoreformer_arch.md new file mode 100644 index 0000000000..010f15d37e --- /dev/null +++ b/pfn/architecture/face/restoreformer_arch.md @@ -0,0 +1,15 @@ +# وثيقة ملف: restoreformer_arch.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل RestoreFormer لاستعادة الوجوه. + +## 2. الدوال والكلاسات (Functions & Classes) +- RestoreFormer: كلاس رئيسي لهيكل RestoreFormer +- MultiHeadCrossAttention: كلاس لانتباه متعدد الرؤوس +- PlainTransformerEncoder: كلاس للمُرمِّز المحول البسيط + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/face/stylegan2_arch.md b/pfn/architecture/face/stylegan2_arch.md new file mode 100644 index 0000000000..0361941bcb --- /dev/null +++ b/pfn/architecture/face/stylegan2_arch.md @@ -0,0 +1,20 @@ +# وثيقة ملف: stylegan2_arch.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل StyleGAN2 لتوليد صور عالية الجودة. + +## 2. الدوال والكلاسات (Functions & Classes) +- StyleGAN2Generator: كلاس رئيسي لمولّد StyleGAN2 +- StyleGAN2Discriminator: كلاس لمميّز StyleGAN2 +- ModulatedConv2d: كلاس للالتوافي المعدّل +- StyledConv: كلاس للالتوافي المنسّق +- ToRGB: كلاس لتحويل RGB + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/face/gfpganv1_arch.py + - ldm_patched/pfn/architecture/face/gfpgan_bilinear_arch.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - ldm_patched/pfn/architecture/face/fused_act.py + - ldm_patched/pfn/architecture/face/upfirdn2d.py \ No newline at end of file diff --git a/pfn/architecture/face/stylegan2_bilinear_arch.md b/pfn/architecture/face/stylegan2_bilinear_arch.md new file mode 100644 index 0000000000..ed56d37a90 --- /dev/null +++ b/pfn/architecture/face/stylegan2_bilinear_arch.md @@ -0,0 +1,16 @@ +# وثيقة ملف: stylegan2_bilinear_arch.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل StyleGAN2 Bilinear لتوليد صور عالية الجودة باستخدام استيفاء ثنائي الخط. + +## 2. الدوال والكلاسات (Functions & Classes) +- StyleGAN2GeneratorBilinear: كلاس رئيسي لمولّد StyleGAN2 Bilinear +- ModulatedConv2d: كلاس للالتوافي المعدّل +- StyledConv: كلاس للالتوافي المنسّق + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - ldm_patched/pfn/architecture/face/fused_act.py \ No newline at end of file diff --git a/pfn/architecture/face/stylegan2_clean_arch.md b/pfn/architecture/face/stylegan2_clean_arch.md new file mode 100644 index 0000000000..b7757fb6ed --- /dev/null +++ b/pfn/architecture/face/stylegan2_clean_arch.md @@ -0,0 +1,16 @@ +# وثيقة ملف: stylegan2_clean_arch.py +## 1. الوظيفة الأساسية للملف +يحتوي على هيكل StyleGAN2 Clean النظيف لتوليد صور عالية الجودة. + +## 2. الدوال والكلاسات (Functions & Classes) +- StyleGAN2GeneratorClean: كلاس رئيسي لمولّد StyleGAN2 Clean +- ModulatedConv2d: كلاس للالتوافي المعدّل +- StyledConv: كلاس للالتوافي المنسّق + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - ldm_patched/pfn/architecture/face/fused_act.py \ No newline at end of file diff --git a/pfn/architecture/face/upfirdn2d.md b/pfn/architecture/face/upfirdn2d.md new file mode 100644 index 0000000000..fa308c1094 --- /dev/null +++ b/pfn/architecture/face/upfirdn2d.md @@ -0,0 +1,14 @@ +# وثيقة ملف: upfirdn2d.py +## 1. الوظيفة الأساسية للملف +يحتوي على تطبيق UPFIRN2D لتحسين كفاءة عمليات التكبير والتصغير. + +## 2. الدوال والكلاسات (Functions & Classes) +- upfirdn2d(): دالة لتطبيق UPFIRN2D +- Fp32Upsample: كلاس لـ upsampling بدقة FP32 + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/face/stylegan2_arch.py + - ldm_patched/pfn/architecture/face/gfpganv1_arch.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch \ No newline at end of file diff --git a/pfn/architecture/timm/drop.md b/pfn/architecture/timm/drop.md new file mode 100644 index 0000000000..8ea5cc4430 --- /dev/null +++ b/pfn/architecture/timm/drop.md @@ -0,0 +1,16 @@ +# وثيقة ملف: drop.py +## 1. الوظيفة الأساسية للملف +يحتوي على طبقات الإسقاط (Drop) مثل Dropout وDropPath لتحسين التعميم. + +## 2. الدوال والكلاسات (Functions & Classes) +- DropPath: كلاس لـ DropPath لتحسين التعميم +- DropPath2d: كلاس لـ DropPath2d +- drop_path(): دالة لتطبيق DropPath + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/DAT.py + - ldm_patched/pfn/architecture/HAT.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/pfn/architecture/timm/helpers.md b/pfn/architecture/timm/helpers.md new file mode 100644 index 0000000000..8d7f608715 --- /dev/null +++ b/pfn/architecture/timm/helpers.md @@ -0,0 +1,15 @@ +# وثيقة ملف: helpers.py +## 1. الوظيفة الأساسية للملف +يحتوي على دوال مساعدة مشترعة لوحدة timm. + +## 2. الدوال والكلاسات (Functions & Classes) +- exists(): دالة للتحقق مما إذا كان المدخل موجودًا +- default(): دالة لإرجاع القيمة الافتراضية إذا كان المدخل غير موجود +- drop_path(): دالة لتطبيق DropPath + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/DAT.py + - ldm_patched/pfn/architecture/HAT.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch \ No newline at end of file diff --git a/pfn/architecture/timm/weight_init.md b/pfn/architecture/timm/weight_init.md new file mode 100644 index 0000000000..82f90c377a --- /dev/null +++ b/pfn/architecture/timm/weight_init.md @@ -0,0 +1,19 @@ +# وثيقة ملف: weight_init.py +## 1. الوظيفة الأساسية للملف +يحتوي على دوال تهيئة الأوزان لبناء نماذج مختلفة. + +## 2. الدوال والكلاسات (Functions & Classes) +- trunc_normal_(): دالة لتهيئة التوزيع الطبيعي المقطوع +- trunc_normal_stddev(): دالة لحساب الانحراف المعياري للتوزيع الطبيعي المقطوع +- lecun_normal_(): دالة لتهيئة LeCun الطبيعية +- constant_init(): دالة لتهيئة بقيمة ثابتة +- normal_init(): دالة لتهيئة بالتوزيع الطبيعي +- xavier_uniform_(): دالة لتهيئة Xavier uniform +- variance_scaling_(): دالة لتهيئة تباين التحجيم + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/DAT.py + - ldm_patched/pfn/architecture/HAT.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch \ No newline at end of file diff --git a/pfn/model_loading.md b/pfn/model_loading.md new file mode 100644 index 0000000000..3cc0e9a229 --- /dev/null +++ b/pfn/model_loading.md @@ -0,0 +1,16 @@ +# وثيقة ملف: model_loading.md +## 1. الوظيفة الأساسية للملف +يحتوي على دوال لتحميل نماذج PyTorch و معالجة state dicts. + +## 2. الدوال والكلاسات (Functions & Classes) +- load_state_dict(): دالة لتحميل state dict من ملف +- load_torch_file(): دالة لتحميل ملف PyTorch +- safe_load(): دالة لتحميل آمن لملفات PyTorch + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/contrib/external_upscale_model.py + - ldm_patched/contrib/external_hypernetwork.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - safetensors.torch \ No newline at end of file diff --git a/pfn/types.md b/pfn/types.md new file mode 100644 index 0000000000..7a6f977137 --- /dev/null +++ b/pfn/types.md @@ -0,0 +1,12 @@ +# وثيقة ملف: types.py +## 1. الوظيفة الأساسية للملف +يحتوي على تعريفات الأنواع المشتركة لوحدة pfn. + +## 2. الدوال والكلاسات (Functions & Classes) +- لا تحتوي على دوال أو كلاسات محددة، فقط تعريفات الأنواع. + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/pfn/architecture/__init__.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - لا شيء (ملف تعريفات أنواع) \ No newline at end of file diff --git a/presets/overview.md b/presets/overview.md new file mode 100644 index 0000000000..2d003c3d66 --- /dev/null +++ b/presets/overview.md @@ -0,0 +1,24 @@ +--- +### 📄 مسار الملف الافتراضي: docs/presets/overview.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +ملفات القوالب (Presets) تُعرّف إعدادات مسبقة للنماذج والأداء والأنماط. كل قالب JSON يحتوي على: النموذج الأساسي، Refiner، LoRAs، CFG scale، Sampler، Scheduler، الأداء، الأنماط، نسب العرض والارتفاع، وعناوين URL للتحميل التلقائي. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +**القوالب المتاحة:** + +| القالب | النموذج | الأداء | CFG | الأنماط | الميزة الرئيسية | +|--------|---------|--------|-----|---------|----------------| +| **default.json** | juggernautXL_v8 | Speed | 4.0 | V2+Enhance+Sharp | Offset LoRA (0.1), 1152x896 | +| **anime.json** | animaPencilXL_v500 | Speed | 6.0 | V2+SemiRealistic+Masterpiece | بدون LoRA إضافي, 896x1152 | +| **realistic.json** | realisticStockPhoto_v20 | Speed | 3.0 | V2+Photograph+Negative | Film Photography LoRA (0.25) | +| **sai.json** | sd_xl_base_1.0 | Speed | 7.0 | V2+Cinematic | SDXL أساسي + Refiner 0.75 | +| **pony_v6.json** | ponyDiffusionV6XL | Speed | 7.0 | Pony فقط | VAE مخصص, بدون Inpaint | +| **playground_v2.5.json** | playground-v2.5-1024px | Speed | 2.0 | V2 فقط | EDM scheduler | +| **lightning.json** | juggernautXL_v8 | Lightning | 4.0 | V2+Enhance+Sharp | توليد سريع | +| **lcm.json** | juggernautXL_v8 | Extreme Speed | 4.0 | V2+Enhance+Sharp | LCM سريع | + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: لا يعتمد على ملفات أخرى +- **يُستخدم بواسطة**: modules/config.py (يحمّلها ويطبّقها), webui.py (يعرضها في القائمة المنسدلة) +- **الأثر البرمجي**: تغيير أي قالب سيتغير الإعدادات الافتراضية لذلك الوضع diff --git a/root/README.md b/root/README.md new file mode 100644 index 0000000000..7caf188d78 --- /dev/null +++ b/root/README.md @@ -0,0 +1,35 @@ +--- +### 📄 مسار الملف الافتراضي: docs/root/README.md + +# Fooocus Technical Documentation + +## نظرة عامة +Fooocus هو أداة لتوليد الصور باستخدام Stable Diffusion XL (SDXL). تم تصميمه ليكون سهل الاستخدام مع الحفاظ على الميزات المتقدمة. + +## هيكل التوثيق + +### المجلدات الموثقة: +1. **[docs/root/](root/)** - الملفات الرئيسية (launch.py, webui.py, shared.py, args_manager.py, etc.) +2. **[docs/modules/](modules/)** - وحدات Fooocus الأساسية (config, core, async_worker, patch, flags, etc.) +3. **[docs/ldm_patched/](ldm_patched/)** - محرك ldm_patched (modules, contrib, ldm, k_diffusion, pfn, etc.) +4. **[docs/extras/](extras/)** - الإضافات (censor, expansion, ip_adapter, preprocessors, BLIP, facexlib, etc.) +5. **[docs/css/](css/)** - تنسيقات CSS +6. **[docs/javascript/](javascript/)** - ملفات JavaScript +7. **[docs/language/](language/)** - ملفات التوطين +8. **[docs/presets/](presets/)** - القوالب المسبقة +9. **[docs/sdxl_styles/](sdxl_styles/)** - أنماط SDXL +10. **[docs/wildcards/](wildcards/)** - ملفات Wildcard +11. **[docs/models/](models/)** - هيكل مجلد النماذج +12. **[docs/tests/](tests/)** - اختبارات الوحدات + +## نقاط الدخول الرئيسية +- **نقطة الدخول الفعلية**: `entry_with_update.py` (مع تحديث Git) +- **نقطة التشغيل**: `launch.py` (إعداد البيئة + تحميل النماذج) +- **واجهة المستخدم**: `webui.py` (بناء Gradio UI) +- **عامل التوليد**: `modules/async_worker.py` (خيط الخلفية) +- **الترقيعات**: `modules/patch.py` (تحسينات Fooocus على ldm_patched) + +## مسار البيانات +``` +User Input (webui.py) → AsyncTask (async_worker.py) → Pipeline (default_pipeline.py) → Core (core.py) → ldm_patched → Output +``` diff --git a/root/args_manager.md b/root/args_manager.md new file mode 100644 index 0000000000..f2903b99c0 --- /dev/null +++ b/root/args_manager.md @@ -0,0 +1,30 @@ +--- +### 📄 مسار الملف الافتراضي: docs/root/args_manager.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +إدارة معاملات سطر الأوامر (CLI Arguments) لأداة Fooocus. يمتد معاملات ldm_patched.modules.args_parser بإضافة معاملات Fooocus المحددة مثل المشاركة (--share)، والقالب (--preset)، واللغة (--language)، وتعطيل التحليلات. + +المعاملات المُضافة: +- --share: مشاركة على Gradio +- --preset: تطبيق قالب UI محدد +- --disable-preset-selection: تعطيل اختيار القالب +- --language: ترجمة واجهة المستخدم +- --disable-offload-from-vram: إجبار تحميل النماذج إلى VRAM +- --theme: سمة الواجهة (فاتح/داكن) +- --disable-image-log: منع حفظ الصور +- --disable-analytics: تعطيل التحليلات +- --disable-metadata: تعطيل حفظ البيانات الوصفية +- --disable-preset-download: تعطيل تحميل نماذج القالب +- --disable-enhance-output-sorting: تعطيل ترتيب مخرجات التحسين +- --enable-auto-describe-image: تفعيل وصف الصورة التلقائي +- --always-download-new-model: إجبار تحميل النماذج الجديدة +- --rebuild-hash-cache: إعادة بناء كاش التوقيعات + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- لا يحتوي على دوال أو كلاسات - ملف تعريف معاملات فقط +- **args**: كائن argparse.Namespace يحتوي على جميع المعاملات المُحللة + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: ldm_patched/modules/args_parser.py (الأساسي) +- **يُستخدم بواسطة**: launch.py, webui.py, modules/config.py, modules/async_worker.py, modules/auth.py, modules/patch.py, extras/inpaint_mask.py +- **الأثر البرمجي**: أي معامل جديد هنا يمكن الوصول إليه من أي مكان في المشروع عبر args_manager.args diff --git a/root/build_launcher.md b/root/build_launcher.md new file mode 100644 index 0000000000..a36399711b --- /dev/null +++ b/root/build_launcher.md @@ -0,0 +1,14 @@ +--- +### 📄 مسار الملف الافتراضي: docs/root/build_launcher.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +إنشاء ملفات batch (.bat) على نظام Windows لتشغيل Fooocus بسهولة. يتحقق من وجود مجلد python_embeded (البرمجية المدمجة) ويُنشئ ملفات تشغيل لكل قالب: run.bat (افتراضي)، run_anime.bat، run_realistic.bat. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **build_launcher()**: تحقق من بيئة Windows standalone build، وتُنشئ ملفات batch لكل قالب. +- **win32_cmd**: نص قالب batch الذي يستدعي python_embeded/python.exe مع entry_with_update.py. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: لا يعتمد على ملفات أخرى +- **يُستدعى بواسطة**: launch.py (يُنادى في بداية التشغيل) +- **الأثر البرمجي**: لا يؤثر على الوظيفة الرئيسية - فقط يُنشئ ملفات تشغيل مريحة diff --git a/root/entry_with_update.md b/root/entry_with_update.md new file mode 100644 index 0000000000..5b1881afd4 --- /dev/null +++ b/root/entry_with_update.md @@ -0,0 +1,20 @@ +--- +### 📄 مسار الملف الافتراضي: docs/root/entry_with_update.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +نقطة الدخول الرئيسية مع دعم التحديث التلقائي من Git. يحاول سحب أحدث تغييرات من المستودع البعيد (origin) ثم Performs Fast-Forward merge إذا كان الفرع محلياً خلف المستودع. بعد التحديث، يستورد ويُشغّل launch.py. + +التحديث يدعم ثلاثة سيناريوهات: +- Already up-to-date: لا يوجد تغييرات +- Fast-forward: تحديث سلس للأمام +- Normal merge: فشل التحديث (ربما بسبب تعديلات محلية) + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- لا يحتوي على دوال منفصلة - كل الكود في المستوى العلوي +- يستخدم مكتبة pygit2 للتعامل مع Git programmatic +- في حالة فشل التحديث، يطبع رسالة الخطأ ويستمر في التشغيل + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: pygit2, launch.py +- **يُستدعى بواسطة**: run.bat / run_anime.bat / run_realistic.bat (ملفات التشغيل على Windows) +- **الأثر البرمجي**: هذا الملف هو نقطة البداية الفعلية للتطبيق على Windows diff --git a/root/fooocus_version.md b/root/fooocus_version.md new file mode 100644 index 0000000000..e8b2da3546 --- /dev/null +++ b/root/fooocus_version.md @@ -0,0 +1,13 @@ +--- +### 📄 مسار الملف الافتراضي: docs/root/fooocus_version.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +تعريف إصدار Fooocus الحالي. يحتوي على متغير واحد فقط: `version = '2.5.5'`. يُستخدم في واجهة المستخدم (عنوان الصفحة)، والسجلات، والبيانات الوصفية المحفوظة مع الصور. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **version**: متغير نصي يحتوي على رقم الإصدار الحالي (2.5.5) + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: لا يعتمد على أي ملف +- **يُستخدم بواسطة**: launch.py (عرض الإصدار), webui.py (عنوان الصفحة), modules/async_worker.py (البيانات الوصفية), modules/private_logger.py (سجل الصور) +- **الأثر البرمجي**: تغيير هذا المتغير سيغير الإصدار المعروض في جميع أنحاء التطبيق diff --git a/root/launch.md b/root/launch.md new file mode 100644 index 0000000000..043101bcef --- /dev/null +++ b/root/launch.md @@ -0,0 +1,24 @@ +--- +### 📄 مسار الملف الافتراضي: docs/root/launch.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +ملف التشغيل الرئيسي (Entry Point) لأداة Fooocus. مسؤول عن إعداد بيئة التشغيل وتثبيت المتطلبات البرمجية وتحميل النماذج الأولية وتهيئة الإعدادات ثم إطلاق واجهة المستخدم الرسومية. + +المهام الرئيسية: +- تعيين المتغيرات البيئية (مثل PYTORCH_ENABLE_MPS_FALLBACK و GRADIO_SERVER_PORT) +- تثبيت PyTorch و Xformers و المتطلبات من ملف requirements_versions.txt +- تحميل نماذج VAE التقريبية (xlvaeapp.pth, vaeapp_sd15.pth, xl-to-v1_interposer) +- تحميل نموذج fooocus_expansion.bin لتوسيع البرومبت +- تحميل النماذج الافتراضية (checkpoints, embeddings, loras, vae) مع دعم البديل التلقائي للنماذج القديمة +- تهيئة كاش التوقيعات (hash_cache) للنماذج + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **prepare_environment()**: تثبيت PyTorch (cu121) و Xformers (0.0.23) و المتطلبات البرمجية. تحقق من النظام (Windows/Linux) لاختيار طريقة التثبيت المناسبة. +- **ini_args():** تستورد وتعيد كائن Args من args_manager. +- **download_models(default_model, previous_default_models, checkpoint_downloads, embeddings_downloads, lora_downloads, vae_downloads)**: تحميل جميع النماذج المطلوبة. تدعم البديل التلقائي (fallback) للنماذج القديمة إذا لم تكن النموذج الافتراضي متوفر. +- **vae_approx_filenames**: قائمة ثابتة بملفات VAE التقريبية وعناوين URL للتحميل من HuggingFace. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: args_manager.py, fooocus_version.py, build_launcher.py, modules/launch_util.py, modules/model_loader.py, modules/config.py, modules/hash_cache.py, modules/util.py, webui.py +- **يُستدعى بواسطة**: entry_with_update.py (النقطة الأولية الفعلية) +- **الأثر البرمجي**: أي تعديل على طريقة تحميل النماذج أو المتغيرات البيئية سيؤثر مباشرة على قدرة الأداة على التشغيل diff --git a/root/shared.md b/root/shared.md new file mode 100644 index 0000000000..5c8092481a --- /dev/null +++ b/root/shared.md @@ -0,0 +1,13 @@ +--- +### 📄 مسار الملف الافتراضي: docs/root/shared.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +ملف مشارك بسيط جداً يحتوي على متغير واحد فقط: `gradio_root = None`. هذا المتغير يُستخدم لتخزين كائن الجذر الرئيسي لتطبيق Gradio (gr.Blocks)以便 يمكن الوصول إليه من أي مكان في المشروع (خاصة في async_worker.py لربط واجهة المستخدم بخيط العمل). + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **gradio_root**: متغير عالمي (Global Variable) يخزن كائن gr.Blocks الرئيسي. يتم تعيينه في webui.py عند إنشاء الواجهة. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: لا يعتمد على أي ملف آخر +- **يُستخدم بواسطة**: webui.py (يُعيّنه), async_worker.py (يقرأه لجلب معلومات الاتصال), modules/localization.py (يقرأه لحقن الترجمة) +- **الأثر البرمجي**: تعديل المتغير قد يكسر الاتصال بين الخلفية والواجهة diff --git a/root/webui.md b/root/webui.md new file mode 100644 index 0000000000..24432f2203 --- /dev/null +++ b/root/webui.md @@ -0,0 +1,27 @@ +--- +### 📄 مسار الملف الافتراضي: docs/root/webui.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +بناء واجهة المستخدم الرسومية الكاملة باستخدام Gradio. يحدد كل عناصر التحكم في الواجهة (المدخلات، الأزرار، القوائم، التبويبات) ويربطها بالدوال البرمجية المناسبة. يمثل الجزء الأكبر من كود الواجهة (1128 سطر). + +المهام الرئيسية: +- بناء التخطيط الرئيسي: عمود معاينة + عمود إعدادات +- تبويبات الصورة المدخلة: Upscale/Variation, Image Prompt, Inpaint/Outpaint, Describe, Enhance, Metadata +- تبويبات الإعدادات: Settings, Styles, Models, Advanced +- ربط الأحداث: تغيير الإعدادات، تحميل الإعدادات المسبقة، بدء التوليد +- معالجة النتائج: عرض التقدم، عرض الصور النهائية، حفظ السجلات + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **get_task(*args)**: تحويل مدخلات UI إلى كائن AsyncTask. +- **generate_clicked(task)**: الحلقة الرئيسية لتوليد الصور - تتابع التقدم وتعرض النتائج. +- **sort_enhance_images(images, task)**: ترتيب صور التحسين حسب إحصائيات التحسين. +- **inpaint_mode_change(mode, inpaint_engine_version)**: تحديث واجهة التحكم عند تغيير وضع Inpaint. +- **trigger_describe(modes, img, apply_styles)**: وصف الصورة المدخلة باستخدام BLIP أو WD14. +- **trigger_metadata_import(file, state_is_generating)**: استيراد المعاملات من صورة Fooocus. +- **load_data_outputs**: قائمة مخرجات تحميل الإعدادات (~50 عنصر UI). +- **ctrls**: قائمة مدخلات المهمة (~100 عنصر UI). + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: modules/config.py, modules/async_worker.py, modules/flags.py, modules/html.py, modules/gradio_hijack.py, modules/style_sorter.py, modules/meta_parser.py, modules/sdxl_styles.py, modules/private_logger.py, modules/ui_gradio_extensions.py, modules/auth.py, modules/util.py, modules/constants.py, extras/inpaint_mask.py, ldm_patched/modules/model_management.py, args_manager.py, shared.py, launch.py, fooocus_version.py +- **يُستدعى بواسطة**: launch.py (يُستورد في نهايته via `from webui import *`) +- **الأثر البرمجي**: أي تعديل على العناصر هنا سيتغير مباشرة في واجهة المستخدم diff --git a/sdxl_styles/overview.md b/sdxl_styles/overview.md new file mode 100644 index 0000000000..3804c03bf3 --- /dev/null +++ b/sdxl_styles/overview.md @@ -0,0 +1,31 @@ +--- +### 📄 مسار الملف الافتراضي: docs/sdxl_styles/overview.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +ملفات تعريف الأنماط (Styles) لـ SDXL. كل ملف JSON يحتوي على قائمة أنماط، كل نمط يُعرّف: الاسم، البرومبت الإيجابي، البرومبت السلبي. الأنماط تُطبق على البرومبت قبل التوليد. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +**ملفات الأنماط المتاحة:** + +| الملف | عدد الأنماط | الوصف | +|-------|-------------|-------| +| **sdxl_styles_fooocus.json** | 8 | أنماط Fooocus الأساسية (Enhance, Sharp, Masterpiece, Photograph, Negative, Cinematic, Pony) | +| **sdxl_styles_sai.json** | 16 | أنماط Stability AI الرسمية (3D Model, Analog Film, Anime, Cinematic, Digital Art, etc.) | +| **sdxl_styles_diva.json** | 82 | أنماط حركات فنية (Abstract Expressionism, Baroque, Bauhaus, Cubism, Impressionism, Pop Art, Surrealism, etc.) | +| **sdxl_styles_marc_k3nt3l.json** | 55 | أنماط تقنيات فنية/طباعة (Chromolithography, Cyanotype, Ukiyo-e, Vintage Posters, etc.) | +| **sdxl_styles_mre.json** | 21 | أنماط مظلمة/تكاسلية (Dark Dream, Underground, Dark Cyberpunk, Manga, etc.) | +| **sdxl_styles_twri.json** | 99 | أنماط مُصنّفة: Ads (9), Artstyle (18), Futuristic (10), Game (13), Misc (17), Papercraft (9), Photo (9) | + +**بنية النمط الواحد:** +```json +{ + "name": "Style Name", + "prompt": "positive prompt text {prompt} more text", + "negative_prompt": "negative prompt text" +} +``` + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: لا يعتمد على ملفات أخرى +- **يُستخدم بواسطة**: modules/sdxl_styles.py (يحمّلها ويطبّقها), modules/config.py (يتحقق من الأسماء القانونية) +- **الأثر البرمجي**: إضافة نمط جديد هنا يجعله متاحاً فوراً في واجهة المستخدم diff --git a/t2ia/adapter.md b/t2ia/adapter.md new file mode 100644 index 0000000000..dc02291f7d --- /dev/null +++ b/t2ia/adapter.md @@ -0,0 +1,15 @@ +# وثيقة ملف: adapter.py +## 1. الوظيفة الأساسية للملف +يحتوي على كلاس Adapter لدمج ميزات صورة الإدخال مع نموذج التوليد. + +## 2. الدوال والكلاسات (Functions & Classes) +- Adapter: كلاس لدمج ميزات صورة الإدخال مع نموذج التوليد +- AdapterModule: كلاس لوحدة Adapter +- ConvAdapterModule: كلاس لوحدة ConvAdapter + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/modules/sd.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn \ No newline at end of file diff --git a/taesd/taesd.md b/taesd/taesd.md new file mode 100644 index 0000000000..c86a721709 --- /dev/null +++ b/taesd/taesd.md @@ -0,0 +1,18 @@ +# وثيقة ملف: taesd.md +## 1. الوظيفة الأساسية للملف +يحتوي على نموذج TAESD (Tiny AutoEncoder for Stable Diffusion) لـ autoencoding فعال. + +## 2. الدوال والكلاسات (Functions & Classes) +- TAESD: كلاس رئيسي لنموذج TAESD +- TAESDDecoder: كلاس لفك الترميز +- TAESDEncoder: كلاس للترميز +- Decoder: كلاس لفك ترميز latent إلى صور +- Encoder: كلاس لترميز الصور إلى latent + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/modules/sd.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torch.nn + - torch.nn.functional \ No newline at end of file diff --git a/tests/__init__.md b/tests/__init__.md new file mode 100644 index 0000000000..09090b84c3 --- /dev/null +++ b/tests/__init__.md @@ -0,0 +1,13 @@ +--- +### 📄 مسار الملف الافتراضي: docs/tests/__init__.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +مُهيّء حزمة (package) يُضيف المجلد الأب إلى sys.path لتمكين استيراد الوحدات. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- لا يحتوي على كلاسات أو دوال - فقط إعداد sys.path. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: sys +- **يُستخدم بواسطة**: يُحمّل تلقائياً عند استيراد الحزمة +- **الأثر البرمجي**: يمكّن اختبارات الوحدات من استيراد modules diff --git a/tests/test_extra_utils.md b/tests/test_extra_utils.md new file mode 100644 index 0000000000..9d0ca63e4e --- /dev/null +++ b/tests/test_extra_utils.md @@ -0,0 +1,15 @@ +--- +### 📄 مسار الملف الافتراضي: docs/tests/test_extra_utils.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +اختبارات modules.extra_utils.try_eval_env_var (74 سطر). تتحقق من تحويل متغيرات البيئة النصية إلى قيم مُرقّمة. + +الأنواع المدعومة: str, int, float, numbers.Number, bool (case-insensitive), list, dict, tuple. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **TestTryEvalEnvVar**: مجموعة اختبارات unittest. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: modules/extra_utils.py, unittest +- **يُستخدم بواسطة**: لا يُستخدم مباشرة - اختبارات فقط +- **الأثر البرمجي**: يضمن صحة تحليل متغيرات البيئة diff --git a/tests/test_utils.md b/tests/test_utils.md new file mode 100644 index 0000000000..c84ecf49ef --- /dev/null +++ b/tests/test_utils.md @@ -0,0 +1,20 @@ +--- +### 📄 مسار الملف الافتراضي: docs/tests/test_utils.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +اختبارات LoRA parsing لدالة modules.util.parse_lora_references_from_prompt (137 سطر). تتحقق من: تحليل رموز ``، احترام الحد الأقصى (5)، أولوية LoRAs المدخلة يدوياً، التعامل مع LoRAs المتجاورة بدون مسافات، إزالة التكرار، và التعامل مع الأخطاء. + +الاختبارات الرئيسية: +- تحليل LoRA واحد ومتعدد +- الحد الأقصى 5 LoRAs +- أولوية LoRAs UI على prompt LoRAs +- إزالة performance LoRA (Lightning/Hyper-SD/Extreme Speed) +- معالجة syntax غير صالح + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +- **TestParseLoraReferences**: مجموعة اختبارات unittest. + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: modules/util.py, unittest +- **يُستخدم بواسطة**: لا يُستخدم مباشرة - اختبارات فقط +- **الأثر البرمجي**: يضمن صحة تحليل LoRA diff --git a/unipc/uni_pc.md b/unipc/uni_pc.md new file mode 100644 index 0000000000..f402650df1 --- /dev/null +++ b/unipc/uni_pc.md @@ -0,0 +1,16 @@ +# وثيقة ملف: uni_pc.py +## 1. الوظيفة الأساسية للملف +يحتوي على خوارزمية UniPC لـ sampling المتعدد الخطوات مع دقة عالية وكفاءة. + +## 2. الدوال والكلاسات (Functions & Classes) +- UniPC: كلاس رئيسي لخوارزمية UniPC +- UniPCSampler: كلاس لـ sampling باستخدام UniPC +- model_wrapper: كلاس ل包裹 النموذج لـ UniPC + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/modules/samplers.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - torchsde + - scipy.integrate \ No newline at end of file diff --git a/utils/latent_visualization.md b/utils/latent_visualization.md new file mode 100644 index 0000000000..b40c08c01e --- /dev/null +++ b/utils/latent_visualization.md @@ -0,0 +1,15 @@ +# وثيقة ملف: latent_visualization.md +## 1. الوظيفة الأساسية للملف +يحتوي على دوال لتصور الـ latents وتحويلها إلى صور قابلة للعرض. + +## 2. الدوال والكلاسات (Functions & Classes) +- latent_to_rgb(): دالة لتحويل latent إلى صورة RGB +- latent_to_image(): دالة لتحويل latent إلى صورة + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/contrib/external.py + - ldm_patched/contrib/external_custom_sampler.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - torch + - numpy \ No newline at end of file diff --git a/utils/path_utils.md b/utils/path_utils.md new file mode 100644 index 0000000000..83f3649fd3 --- /dev/null +++ b/utils/path_utils.md @@ -0,0 +1,21 @@ +# وثيقة ملف: path_utils.py +## 1. الوظيفة الأساسية للملف +يحتوي على دوال مساعدة لإدارة مسارات الملفات والمجلدات. + +## 2. الدوال والكلاسات (Functions & Classes) +- get_full_path(): دالة للحصول على المسار الكامل لملف +- get_filename_list(): دالة للحصول على قائمة أسماء الملفات في مجلد +- get_folder_paths(): دالة للحصول على مسارات المجلدات +- add_model_folder_path(): دالة لإضافة مسار مجلد نموذج جديد + +## 3. الاعتماديات والعلاقات +- الملفات التي تستدعي هذا الملف: + - ldm_patched/contrib/external.py + - ldm_patched/contrib/external_images.py + - ldm_patched/contrib/external_hypernetwork.py + - ldm_patched/contrib/external_model_merging.py + - ldm_patched/contrib/external_video_model.py + - ldm_patched/contrib/external_upscale_model.py +- الملفات التي يستدعيها هذا الملف لتشغيله: + - os + - json \ No newline at end of file diff --git a/wildcards/overview.md b/wildcards/overview.md new file mode 100644 index 0000000000..ab9a16ff7f --- /dev/null +++ b/wildcards/overview.md @@ -0,0 +1,29 @@ +--- +### 📄 مسار الملف الافتراضي: docs/wildcards/overview.md + +#### 1. الوظيفة الأساسية الفعالة (Core Purpose): +ملفات wildcard (wildcards) النصية المستخدمة في توسيع البرومبتات. كل ملف يحتوي على قائمة كلمات سطر بسطر. تُستخدم في البرومبتات بتنسيق `{wildcard_name}`. + +#### 2. الكلاسات والدوال الرئيسية (Classes & Functions): +**ملفات Wildcard المتاحة:** + +| الملف | عدد الأسطر | المحتوى | +|-------|-------------|---------| +| **nationality.txt** | 195 | جنسيات (Afghan → Zimbabwean) | +| **flower.txt** | 250 | أنواع زهور (Acacia → Zinnia elegans) | +| **extended-color.txt** | 147 | ألوان CSS (aliceblue → yellowgreen) | +| **color.txt** | 17 | ألوان أساسية (aqua, black, blue, etc.) | +| **color_flower.txt** | 1 | wildcard مركّب: `__color__ __flower__` | +| **artist.txt** | 2765 | أسماء فنانين (2000+ فنان من جميع العصور) | +| **animal.txt** | 100 | حيوانات (Alligator → Zebra) | + +**نظام Wildcard:** +- `__wildcard_name__` في البرومبت يُوسع إلى عنصر عشوائي من الملف +- يدعم التكامل (BFS) حتى عمق 64 +- color_flower.txt يُظهرWildcard composition (يجمع color + flower) +- `read_wildcards_in_order` يقرأ العناصر بالترتيب بدلاً من العشوائي + +#### 3. خريطة الاعتماديات والعلاقات (File Dependencies): +- **يعتمد على**: لا يعتمد على ملفات أخرى +- **يُستخدم بواسطة**: modules/util.py (دالة apply_wildcards), modules/config.py (يحمّل أسماء الملفات) +- **الأثر البرمجي**: إضافة ملف wildcard جديد يجعله متاحاً فوراً في البرومبتات