> 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/when-to-stop-training.md).

# متى تتوقف عن التدريب

التدريب لا يحتاج أن يستمر "إلى الأبد". في المشاريع الواقعية، تحصل أفضل النتائج عند التوقف في اللحظة المناسبة:

* ليس مبكرًا جدًا (النموذج لم يتعلم بعد)
* ليس متأخرًا جدًا (النموذج يبدأ في الإفراط في التخصيص / الحفظ)

{% hint style="info" %}
في AugeLab Studio، عادةً ما ينتهي التدريب عند الوصول إلى عدد الـ **max iterations** المُحدد، أو عند النقر على **Stop Training**. مخطط التدريب (Training Chart) يساعدك على اتخاذ قرار ما إذا كان يستحق المتابعة أم لا.
{% endhint %}

إذا كان هذا هو تدريبك الأول، ابدأ بـ [Starter Checklist](#starter-checklist).

## مراقبة تقدم التدريب <a href="#monitor-training-progress" id="monitor-training-progress"></a>

أثناء التدريب، راقب تقدم النموذج واطّلع على العلاقة بين:

* Loss
* mAP
* IOU
* Iterations

يتم عرض Loss و mAP على مخطط كما في الأسفل:

<figure><img src="/files/rTm2ERGwOm0ZSKXAlDyk" alt="Good training example chart"><figcaption><p>مثال: تدريب جيد (loss ينخفض، mAP يرتفع ثم يستقر)</p></figcaption></figure>

{% hint style="warning" %}
جميع المقاييس يمكن أن تختلف بشكل كبير حسب:

* تنوع البيانات
* حجم البيانات
* دقة التوسيم (annotation)
* حجم النموذج

الأرقام أدناه مُقدمة فقط لوضع أساس مبدئي للمبتدئين.
{% endhint %}

### قاعدة سريعة (ما يعمل عادةً) <a href="#quick-rule" id="quick-rule"></a>

إذا تذكرت قاعدة واحدة فقط:

توقف عندما يتوقف validation mAP عن التحسّن لفترة طويلة، أو عندما يبدأ بالانخفاض بينما يظل Loss ينخفض.

الحالة الثانية هي العلامة الكلاسيكية للإفراط في التخصيص (overfitting).

### أنماط التدريب الشائعة (لخلاصة سريعة) <a href="#common-patterns" id="common-patterns"></a>

هذه الأنماط شائعة في الاستخدام الفعلي. لكل نمط، انظر أولًا إلى المخطط ثم اقرأ الشرح.

{% hint style="info" %}
هذه المخططات التوضيحية مُولدة لأغراض التدريب/التوثيق. في مستودعك، ضعها ضمن مجلد .assets/ بجانب هذه الصفحة.
{% endhint %}

#### نقص البيانات <a href="#examples-insufficient-data" id="examples-insufficient-data"></a>

<figure><img src="/files/mzgRJw6Z1U4RoXjbtAgE" alt="Insufficient data example chart"><figcaption><p>نقص البيانات: نقاط قليلة جدًا / فترة تشغيل قصيرة جدًا (مقاييس مبكرة ضوضائية)</p></figcaption></figure>

شرح:

* ماذا يعني: لا يوجد إشارات كافية حتى الآن للاعتماد على الاتجاه.
* الأسباب المحتملة: صور قليلة جدًا، مدة تشغيل قصيرة جدًا، نسبة تحقق (validation) ضعيفة/صغيرة جدًا.
* ماذا تفعل: درّب لفترة أطول؛ أضف بيانات؛ تأكد من وجود مجموعة تحقق تشمل تنوعًا حقيقيًا.

#### تباين منخفض <a href="#examples-low-variance" id="examples-low-variance"></a>

<figure><img src="/files/mrbBOkJNvbzNylkV5ena" alt="Low variance example chart"><figcaption><p>تباين منخفض: loss يستقر و mAP يتحسن بشكل طفيف</p></figcaption></figure>

شرح:

* ماذا يعني: النموذج يتعلم "التكرار السهل" بسرعة، ثم يتوقف عن الحصول على معلومات جديدة.
* الأسباب المحتملة: مجموعة بيانات مكررة (نفس الخلفية/الزاوية/الإضاءة)، نقص العينات السلبية، نقص حالات الحافة.
* ماذا تفعل: أضف تنوعًا (زوايا، خلفيات، إضاءة)، أضف أمثلة سلبية، التقط حالات صعبة عن قصد.

#### إفراط في التدريب (Overtraining) <a href="#examples-overtraining" id="examples-overtraining"></a>

<figure><img src="/files/sZipscgzogPbk3n54ArH" alt="Overtraining example chart"><figcaption><p>إفراط في التدريب: loss يستمر في التحسّن، لكن mAP تبلغ ذروتها (حتى وإن كانت عالية جدًا) ثم تتدهور</p></figcaption></figure>

الإفراط في التدريب ليس دائمًا كارثيًا، لكنه غالبًا يدل على الحفظ بدلًا من التعميم. في بيئات صارمة (كاميرا ثابتة، إضاءة ثابتة) قد يكون مقبولًا.

* ماذا يعني: النموذج يتحسن على مجموعة التدريب، لكنه يسوء على التحقق (memorization).
* الأسباب المحتملة: تنوع غير كافٍ، مجموعة تحقق صغيرة جدًا، تكرارات/صور متشابهة جدًا.
* ماذا تفعل: أوقف التدريب واحتفظ بأفضل الأوزان؛ أضف مزيدًا من التنوع؛ زِد نسبة التحقق؛ أزل التكرارات.

#### النموذج لا يتعلم <a href="#examples-not-learning" id="examples-not-learning"></a>

<figure><img src="/files/yPONTsyIL8y9uPOTo1V9" alt="Model not learning example chart"><figcaption><p>النموذج لا يتعلم: loss يبقى عاليًا/ثابتًا، و mAP قريب من الصفر</p></figcaption></figure>

شرح:

* ماذا يعني: التدريب لا يتقدّم بشكل ذو معنى.
* الأسباب المحتملة: تسميات/فئات خاطئة، اختلاف معرفات الفئات (class IDs)، تنسيق التوسيم مكسور، إعدادات/تكوين خاطئ.
* ماذا تفعل: تحقق من ترتيب ملف `.names` مقابل معرفات التسميات؛ افحص عينات من التسميات؛ تأكد من تنسيق YOLO؛ عدّل إعدادات التدريب.

#### مجموعة بيانات تالفة <a href="#examples-corrupted" id="examples-corrupted"></a>

<figure><img src="/files/uYtrn1gWq158DeHvNcF9" alt="Corrupted dataset example chart"><figcaption><p>مجموعة بيانات تالفة: تقلبات حادة في loss و mAP غير مستقرة</p></figcaption></figure>

شرح:

* ماذا يعني: التدريب يتعرّض لمشاكل بسبب بيانات غير متناسقة أو تالفة.
* الأسباب المحتملة: ملفات صور تالفة، تسميات غير صالحة، مصادر/دقات متباينة، صور "فارغة لكنها تحتوي كائنات".
* ماذا تفعل: شغّل فحوصات للمجموعة؛ أزل البيانات التالفة؛ صحح تنسيق التسميات؛ أعِد تصدير مجموعة نظيفة.

#### تدريب جيد <a href="#examples-good" id="examples-good"></a>

<figure><img src="/files/rTm2ERGwOm0ZSKXAlDyk" alt="Good training example chart"><figcaption><p>تدريب جيد: تعلم مستقر وطفح مرتفع ومستقر</p></figcaption></figure>

شرح:

* ماذا يعني: تعلم صحي وقدرة تعميم جيدة.
* الأسباب المحتملة: تسميات متسقة + تنوع كافٍ.
* ماذا تفعل: أوقف عندما يستقر mAP؛ تحقق على لقطات فعلية / مجموعة "ذهبية" (golden set)؛ انشر أفضل الأوزان.

### Loss <a href="#loss" id="loss"></a>

Loss هو إشارة لمدى التوافق مع بيانات التدريب. يمثل مدى ملاءمة النموذج لدفعات التدريب.

Loss مفيد، لكنه قد يكون مضللاً أحيانًا:

* قد يستمر Loss في الانخفاض حتى عندما يكون النموذج قد بدأ في الإفراط في التخصيص.
* Loss لا يضمن "أداء العالم الواقعي".

{% hint style="info" %}
Loss وحده غير كافٍ لتقييم الدقة. استخدم [mAP](#map) لفهم التعميم على بيانات التحقق.
{% endhint %}

#### \*\*Loss ≤ 2.0\*\* <a href="#id-20-loss" id="id-20-loss"></a>

غالبًا ما يدل على "بدء التعلم"، لكن الجودة قد تظل ضعيفة. اعتبره علامة على أن خط الأنابيب يعمل، لا كنقطة انتهاء.

{% hint style="warning" %}
كما يظهر في الرسم أعلاه، قيم Loss حول 2.0 قد لا تنتج نماذج دقيقة.
{% endhint %}

#### \*\*Loss ≤ 1.0\*\* <a href="#id-10-loss" id="id-10-loss"></a>

يُعد غالبًا خطًا أساسياً قابلًا للاستخدام على العديد من مجموعات البيانات المركزة.

#### \*\*Loss ≤ 0.5\*\* <a href="#id-05-loss" id="id-05-loss"></a>

غالبًا ما يدل على نموذج ملائم جيدًا لمجموعة بيانات نظيفة ومتسقة. بعد هذه النقطة، قد تصبح التحسينات بطيئة ويزداد خطر الإفراط في التخصيص.

<details>

<summary>لماذا عتبات Loss ليست عالمية</summary>

قيم Loss تعتمد على بنية النموذج، حجم الصورة، عدد الفئات، ضوضاء التسميات، التكبير/التحوير (augmentation)، وتعقيد مجموعة البيانات. استخدم عتبات Loss لبناء حدس، لا كقاعدة عامة مطلقة.

</details>

### mAP <a href="#map" id="map"></a>

مقياس mAP (mean average precision) يجمع بين الدقة (precision) والاسترجاع (recall) ليقدّم تقييمًا شاملاً لدقة النموذج في كشف الكائنات داخل الصور.

يُحسب بتقييم التنبؤات مقابل التسميات الحقيقية عند عتبات IoU محددة (التفاصيل الدقيقة تعتمد على إعدادات/خلفية التدريب).

{% hint style="warning" %}
mAP لا قيمة له أكثر من مجموعة التحقق الخاصة بك. إذا كانت صور التحقق قليلة جدًا، أو "نظيفة" جدًا، أو متشابهة جدًا للتدريب، أو مُوسّمة خطأ، فقد يبدو mAP ممتازًا بينما يفشل النموذج في الإنتاج.
{% endhint %}

تفسير عملي:

* غالبًا ما يكون الاستقرار والطفح المستقر أهم من السعي وراء آخر +1%.
* mAP عالي جدًا (مثل 95–99%) على مجموعة صغيرة أو متكررة هو فخ شائع للإفراط في التخصيص.
* إذا بلغ mAP ذروته ثم انخفض، انظر [Over-Fitting](#over-fitting).

### IOU <a href="#iou" id="iou"></a>

IOU (Intersection over Union) يقيس التداخل بين الصناديق المتوقعة والصناديق الحقيقية للكائنات المفردة. بينما يقيس mAP الأداء العام لنموذج كشف الكائنات عبر جميع الفئات، مع الأخذ في الاعتبار الدقة والاستدعاء.

{% hint style="info" %}
كلما ارتفعت قيمة IOU، كلما كان المربع المتوقع أكثر إحكامًا.
{% endhint %}

يمكنك تتبّع كل IOU في سجلات نافذة التدريب (Training Window):

<figure><img src="/files/eCnK3SxG6Okf07u6E0K6" alt=""><figcaption></figcaption></figure>

## التحسين الدقيق (Fine Tuning) <a href="#fine-tuning" id="fine-tuning"></a>

### زمن التدريب <a href="#training-time" id="training-time"></a>

حدد حدًا أقصى لزمن التدريب بناءً على الموارد الحسابية المتاحة وقيود المشروع. إذا لم يحقق النموذج أداءً مرضيًا خلال الوقت المخصص، ففكّر في إيقاف التدريب واستكشاف نهج آخر مثل:

* تحليل دقيق للتوسيم (annotation)
* التحقق من تنوع الفئات
* اختيار أحجام نماذج وباتش مختلفة
* زيادة حجم قاعدة البيانات

### الإفراط في التخصيص (Over-Fitting) <a href="#over-fitting" id="over-fitting"></a>

تجنّب الإفراط في التخصيص بمراقبة كيفية تصرّف mAP مع مرور الوقت.

أكثر إشارة موثوقة في "العالم الحقيقي" على الإفراط في التخصيص هي:

الـ Loss ينخفض، لكن mAP تبلغ ذروتها ثم تسوء.

الإفراط في التخصيص ليس دائمًا "كارثيًا" في إعدادات مقيدة جدًا وكاميرا ثابتة. ولكن إذا كنت تهتم بالمتانة (إضاءات مختلفة، نوبات مختلفة، خلفيات مختلفة)، سيظهر الإفراط بسرعة.

ما يساعد عادةً:

* أضف مزيدًا من التنوع (أيام جديدة، إضاءات جديدة، خلفيات جديدة)
* أضف أمثلة سلبية تشبه بيئتك الحقيقية
* احرص على اتساق التسميات (نفس الأسلوب عبر المعلّمين)
* زِد نسبة التحقق حتى يصبح من الأصعب "التلاعب" في mAP

<figure><img src="/files/lsWrKqnJWTNy632x7Dbq" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/sZipscgzogPbk3n54ArH" alt="Overtraining example chart"><figcaption><p>مثال إفراط في التدريب: mAP تبلغ ذروتها ثم تنخفض بينما يستمر Loss في الانخفاض</p></figcaption></figure>

### موازنة الوقت والأداء <a href="#balancing-time-and-performance" id="balancing-time-and-performance"></a>

وازن زمن التدريب مع الأداء المطلوب للنموذج. في بعض الحالات، قد تُحسّن المزيد من التكرارات الأداء، لكن العائد قد يتناقص مع الوقت. قِس الفوائد مقابل تكلفة الحوسبة وعجلة المشروع.

عادةً، اعتمادًا على عدد الفئات وحجم قاعدة البيانات، يمكن أن تتراوح مدة التدريب بين يوم وأسبوع.

## قائمة التحقق للمبتدئين (Starter Checklist) <a href="#starter-checklist" id="starter-checklist"></a>

قاعدة البيانات:

* [ ] التسميات متسقة (نمط الصناديق + معنى الفئة)
* [ ] مجموعة البيانات تحتوي على تنوع حقيقي (إضاءة، زوايا، خلفيات)
* [ ] لديك أمثلة كافية لكل فئة ليتعلم منها النموذج (المزيد أفضل؛ ابدأ صغيرًا ثم حسّن)
* [ ] (اختياري) التوسيع (augmentation) مُفعّل *بعد* التأكد من صحة التسميات

النموذج:

* [ ] اخترت حجم نموذج يلبي متطلبات FPS
* [ ] النموذج مناسب لـ [متطلبات النظام](/arabic/mqdmh/system-requirements.md) وتوافق CUDA وذاكرة GPU.
* [ ] حجم الباتش مطابق لذاكرة GPU (استخدم subdivisions لتجنب OOM)

التدريب (أوقف إذا):

* [ ] [mAP](#map) استقر لفترة طويلة (عوائد متناقصة)
* [ ] [mAP](#map) انخفض بينما استمر [Loss](#loss) في الانخفاض (إفراط في التخصيص)
* [ ] وصلت إلى ميزانية الزمن ونتائجك "جيدة بما فيه الكفاية" للاختبار على لقطات فعلية

<details>

<summary>قائمة فحص سريعة للتصحيح (عندما تبدو الأمور خاطئة)</summary>

1. افحص عيّنات عشوائية من 20–50 صورة عبر مجموعة البيانات (ليس فقط الصفحة الأولى)
2. تأكد من مطابقة الفئات:

* ترتيب ملف `.names` يطابق معرفات التسميات
* لا فئات مفقودة أو زائدة

3. افحص ملفات التسميات:

* تنسيق YOLO: `class x_center y_center width height` (مُطبّع)
* الصناديق داخل الحدود وليست ذات حجم صفري

4. إذا بدا mAP "جيدًا لدرجة لا تُصدّق":

* قد تكون نسبة التحقق صغيرة جدًا أو مشابهة جدًا لمجموعة التدريب
* قد توجد تكرارات / شبه تكرارات

5. إذا كان التدريب غير مستقر أو يحدث OOM:

* زِد subdivisions أو قلّل حجم الباتش
* قُلّل مؤقتًا دقة الإدخال للتصحيح

</details>
