> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/arabic/almyzat-alreysyh/train-custom-ai-models-with-training-window/after-training.md).

# بعد التدريب

أنت الآن قريب من نشر النموذج — هذه النقطة التي تحول فيها "الأرقام" إلى نموذج يعمل فعليًا في سير العمل الواقعي لديك.

***

## 1) اعثر على مخرجات التدريب (weights + config + names)

عند انتهاء التدريب، تعرض رسائل السجل/الحالة مكان حفظ المخرجات.

في AugeLab Studio، عادةً ما تُنشأ مخرجات التدريب داخل مجلد اسمه:

**XXX\_config**

بجوار مجلد بياناتك (XXX هو اسم مجلد مجموعة البيانات).

الهيكل النموذجي:

```
XXX_config/
    XXX.names
    XXX.cfg
    backup/
        XXX_last.weights  (إذا كان متوفرًا)
        XXX_best.weights  (إذا كان متوفرًا)
```

على الأقل، احتفظ بهذه الملفات معًا:

* ملف الأوزان: `.weights` (أحيانًا يوجد ملفان بنمط best مقابل last)
* ملف الإعدادات: `.cfg`
* ملف أسماء الفئات: `.names`

**⚠️ تحذير:**\
لا تعيد تسمية/إعادة ترتيب الفئات في ملف `.names` بعد التدريب إلا إذا قمت أيضًا بإعادة تعيين معرفات الملصقات (label IDs). ترتيب الفئات يجب أن يطابق معرفات الملصقات.

<details>

<summary><strong>أي weights أستخدم: best أم last؟</strong></summary>

إذا أظهر التدريب مقياس mAP أثناء التدريب، فبعض سلاسل العمل لـ YOLO/Darknet تحتفظ بنقطة حفظ "الأفضل حتى الآن".

* استخدم **best** عندما يتحسن mAP ثم ينخفض لاحقًا (overfitting).
* استخدم **last** إذا انتهى التدريب بينما كان mAP لا يزال يتحسن ومستقرًا.

إذا لم يكن لديك ملف "best"، فاختر ملف الأوزان النهائي أولًا ثم تحقق من الأداء.

</details>

***

## 2) تحقق من النموذج قبل النشر

قبل ربط النموذج بمنطق الإنتاج، قم بتمرير تحقق سريع.

مجموعات التحقق الموصى بها:

* **مجموعة التحقق (Validation set)**: 30–100 صورة تمثل الواقع (إضاءة جيدة/ضعيفة، تشويش، فوضى، حالات حافة)
* **مقاطع فيديو قصيرة أو صور**: فيديو قصير من الكاميرا الحقيقية (إذا كنت ستنشر على كاميرا ثابتة)

ما الذي تبحث عنه:

* هل النموذج يكتشف الكائن الصحيح باستمرار؟
* هل الصناديق (boxes) "جيدة بما يكفي" للمنطق لديك (قد لا تكون مثالية)؟
* هل الإيجابيات الكاذبة مقبولة أم يمكن تصفيتها؟
* هل الحالات النادرة والمهمة تُكتشف؟

**⚠️ تحذير:**\
قيمة mAP العالية قد تفشل في الإنتاج إذا كانت مجموعة التحقق صغيرة جدًا أو نظيفة جدًا. فحص مجموعة التحقق/المشاهد الحقيقية يمنع ذلك.

***

## 3) حمّل النموذج داخل Studio (Inference)

في AugeLab Studio، الخطوة التالية المعتادة هي بناء (أو تحديث) سيناريو `.pmod` يقوم بالتشغيل للـ inference.

### A) استخدم “Object Detection - Custom” (موصى به)

استخدم هذا البلوك عندما تريد تشغيل نموذجك المدرب عبر YOLO/Darknet داخل سير العمل.

سير العمل:

1. أضف **Object Detection - Custom** إلى الرسم البياني (فئة AI Applications).
2. في واجهة البلوك:
   * اضغط **Open Weight File** واختر ملف `.weights`
   * اضغط **Open Config File** واختر ملف `.cfg`
   * اضغط **Open Class File** واختر ملف `.names`
3. اختر الفئات التي تريد اكتشافها (قائمة اختيارات).
4. اضبط **Confidence Threshold** (ابدأ بقيمة حوالي 0.5–0.8 وقم بضبطها).
5. وصل مصدر الصورة إلى مدخل البلوك ومعاينة صورة المخرجات.

المخرجات التي يمكنك استخدامها في المنطق:

* صورة مخرجة مع رسم الاكتشافات
* Object Count
* Object Locations / Sizes
* Object Classes
* Rectangles

**ℹ️ ملاحظة:**\
إذا لم يكن “Object Detection - Custom” متوفرًا، قد لا يكون البناء لديك مفعّلًا بدعم CUDA/OpenCV DNN. جرب بلوك الـ CPU أدناه، أو قم بتثبيت الوحدات المطلوبة من Module Downloader (انظر ai-training.md).

### B) استخدم “Object Detection - Custom (CPU)” (خيار احتياطي)

استخدم هذا البلوك لنفس سير العمل لكن بدون تسريع GPU.

* يعمل على CPU، لذا سيكون أبطأ.
* الإعداد هو نفسه: weights + cfg + names.

***

## 4) ضبط العتبات (ما يهم فعلاً)

معظم تحسينات "جودة النشر" تأتي من ضبط العتبات، وليس من تدريب أطول.

ابدأ بهذه الخطوات العملية:

* زد قيمة الثقة (confidence threshold) إذا رأيت الكثير من الإيجابيات الكاذبة.
* خفّض قيمة الثقة إذا كنت تفوت اكتشاف بعض الأشياء.
* قيّم على مجموعة الذهب (golden set) وعلى مقطع كاميرا حقيقي واحد على الأقل.

**⚠️ تحذير:**\
لا تضبط على صورة واحدة فقط. اضبط دائمًا على مجموعة صغيرة. وإلا ستقوم "بفوق التكيّف" (overfit) للعتبة على مشهد واحد.

***

## 5) حزّم النموذج للمشاركة / إعادة الإنتاج

إذا أردت أن يكون النموذج قابلاً للاستخدام لاحقًا (أو من قِبل شخص آخر)، فقُم بتغليفه بشكل منظم.

مجلد موصى به:

```
my_model_release/
    model.weights
    model.cfg
    classes.names
    README.txt
    validation_set/   (اختياري)
```

ما تكتبه في README:

* مجموعة البيانات التي درّب عليها النموذج (الإصدار/التاريخ)
* معنى الفئات (إن كانت غامضة)
* نطاق عتبة الثقة الموصى به
* حالات الفشل المعروفة (وميض الضوء، الأشياء الصغيرة جدًا، التغطية الشديدة)

**ℹ️ ملاحظة:**\
إذا كان سيناريو `.pmod` يشير إلى هذه الموارد، ففكر في الاحتفاظ بها كمصادر نسبية للمشروع حتى يظل السيناريو قابلًا للنقل. انظر أيضًا: headless-studio (سلوك تحميل الموارد المفقودة).

***

## 6) إذا فشل في الإنتاج (ما التالي)

عندما يفشل النموذج بعد النشر، يكون الإصلاح عادة واحدًا من هذه الخطوات (بالترتيب):

1. **اجمع حالات الفشل** (احفظ الإطارات التي تُظهر الفشل/الإيجابيات الكاذبة)
2. **قم بتوسيمها بشكل صحيح** (label them)
3. **أعد التدريب أو قم بالتغذية الدقيقة (fine-tune)** باستخدام البيانات الجديدة

هذه هي الطريقة التي تُصبح بها النماذج أكثر قوة.

<details>

<summary><strong>أوضاع الفشل الشائعة وأسرع إصلاح</strong></summary>

* الإيجابيات الكاذبة على نسيج الخلفية → أضف أمثلة سلبية من نفس البيئة بالضبط
* الفشل في اكتشاف الأشياء الصغيرة → زد حجم الإدخال (إن سمح الـ GPU) واجمع أمثلة لأشياء صغيرة أكثر
* الفشل تحت الوهج/الطُّرْد (glare/blur) → أضف هذه الحالات عمدًا إلى مجموعة البيانات (لا تعتمد فقط على Augmentation)
* الصناديق دائمًا واسعة جدًا/ضيقة جدًا → أصلح اتساق نمط التعليقات (annotation) ثم أعد التدريب

</details>
