Add Hindi हिन्दी and Arabic العربية Docs translations (#6428)

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Glenn Jocher 2023-11-18 21:51:47 +01:00 committed by GitHub
parent b6baae584c
commit 02bf8003a8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
337 changed files with 6584 additions and 777 deletions

View file

@ -0,0 +1,94 @@
---
comments: true
description: تعرف على كيفية قياس سرعة ودقة YOLOv8 عبر تنسيقات التصدير المختلفة. احصل على رؤى حول مقاييس mAP50-95 وaccuracy_top5 والمزيد.
keywords: Ultralytics، YOLOv8، اختبار الأداء، قياس السرعة، قياس الدقة، مقاييس mAP50-95 وaccuracy_top5، ONNX، OpenVINO، TensorRT، تنسيقات تصدير YOLO
---
# اختبار النموذج باستخدام Ultralytics YOLO
<img width="1024" src="https://github.com/ultralytics/assets/raw/main/yolov8/banner-integrations.png" alt="Ultralytics YOLO ecosystem and integrations">
## المقدمة
بمجرد أن يتم تدريب نموذجك وتحقق صحته ، فإن الخطوة التالية بشكل منطقي هي تقييم أدائه في سيناريوهات العالم الحقيقي المختلفة. يوفر وضع الاختبار في Ultralytics YOLOv8 هذا الهدف من خلال توفير إطار قوي لتقييم سرعة ودقة النموذج عبر مجموعة من صيغ التصدير.
## لماذا هو اختبار الأداء مهم؟
- **قرارات مستنيرة:** اكتساب رؤى حول التنازلات بين السرعة والدقة.
- **تخصيص الموارد:** فهم كيفية أداء تنسيقات التصدير المختلفة على أجهزة مختلفة.
- **تحسين:** تعلم أي تنسيق تصدير يقدم أفضل أداء لحالتك الاستخدامية المحددة.
- **كفاءة التكلفة:** استخدام الموارد الأجهزة بشكل أكثر كفاءة بناءً على نتائج الاختبار.
### المقاييس الرئيسية في وضع الاختبار
- **mAP50-95:** لكشف الكائنات وتقسيمها وتحديد الوضع.
- **accuracy_top5:** لتصنيف الصور.
- **وقت التتبع:** الوقت المستغرق لكل صورة بالميلي ثانية.
### تنسيقات التصدير المدعومة
- **ONNX:** لأفضل أداء على وحدة المعالجة المركزية.
- **TensorRT:** لأقصى استفادة من وحدة المعالجة الرسومية.
- **OpenVINO:** لتحسين الأجهزة من إنتل.
- **CoreML و TensorFlow SavedModel وما إلى ذلك:** لتلبية احتياجات النشر المتنوعة.
!!! Tip "نصيحة"
* قم بتصدير إلى نموذج ONNX أو OpenVINO لزيادة سرعة وحدة المعالجة المركزية بمقدار 3 مرات.
* قم بتصدير إلى نموذج TensorRT لزيادة سرعة وحدة المعالجة الرسومية بمقدار 5 مرات.
## أمثلة على الاستخدام
قم بتشغيل اختبارات YOLOv8n على جميع تنسيقات التصدير المدعومة بما في ذلك ONNX و TensorRT وما إلى ذلك. انظر القسم الموجود أدناه للحصول على قائمة كاملة من وسيطات التصدير.
!!! Example "مثال"
=== "Python"
```python
from ultralytics.utils.benchmarks import benchmark
# اختبار على وحدة المعالجة الرسومية
benchmark(model='yolov8n.pt', data='coco8.yaml', imgsz=640, half=False, device=0)
```
=== "CLI"
```bash
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0
```
## وسيطات
توفر الوسائط مثل `model` و `data` و `imgsz` و `half` و `device` و `verbose` مرونة للمستخدمين لضبط الاختبارات حسب احتياجاتهم المحددة ومقارنة أداء تنسيقات التصدير المختلفة بسهولة.
| المفتاح | القيمة | الوصف |
|-----------|---------|---------------------------------------------------------------------------------------------------|
| `model` | `None` | مسار إلى ملف النموذج ، على سبيل المثال yolov8n.pt ، yolov8n.yaml |
| `data` | `None` | مسار إلى YAML يشير إلى مجموعة بيانات اختبار الأداء (بتحتوى على بيانات `val`) |
| `imgsz` | `640` | حجم الصورة كرقم ، أو قائمة (h ، w) ، على سبيل المثال (640، 480) |
| `half` | `False` | تقليل دقة العدد العشرى للأبعاد (FP16 quantization) |
| `int8` | `False` | تقليل دقة العدد الصحيح 8 بت (INT8 quantization) |
| `device` | `None` | الجهاز الذى ستعمل عليه العملية ، على سبيل المثال cuda device=0 أو device=0,1,2,3 أو device=cpu |
| `verbose` | `False` | عدم المتابعة عند حدوث خطأ (مقدار منطقى)، أو مستوى الكشف عند تجاوز حد القيمة المطلوبة (قيمة عائمة) |
## صيغ التصدير
سيحاول التطبيق تشغيل الاختبارات تلقائيًا على جميع صيغ التصدير الممكنة الموجودة أدناه.
| Format | `format` Argument | Model | Metadata | Arguments |
|--------------------------------------------------------------------|-------------------|---------------------------|----------|-----------------------------------------------------|
| [PyTorch](https://pytorch.org/) | - | `yolov8n.pt` | ✅ | - |
| [TorchScript](https://pytorch.org/docs/stable/jit.html) | `torchscript` | `yolov8n.torchscript` | ✅ | `imgsz`, `optimize` |
| [ONNX](https://onnx.ai/) | `onnx` | `yolov8n.onnx` | ✅ | `imgsz`, `half`, `dynamic`, `simplify`, `opset` |
| [OpenVINO](https://docs.openvino.ai/latest/index.html) | `openvino` | `yolov8n_openvino_model/` | ✅ | `imgsz`, `half`, `int8` |
| [TensorRT](https://developer.nvidia.com/tensorrt) | `engine` | `yolov8n.engine` | ✅ | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` |
| [CoreML](https://github.com/apple/coremltools) | `coreml` | `yolov8n.mlpackage` | ✅ | `imgsz`, `half`, `int8`, `nms` |
| [TF SavedModel](https://www.tensorflow.org/guide/saved_model) | `saved_model` | `yolov8n_saved_model/` | ✅ | `imgsz`, `keras`, `int8` |
| [TF GraphDef](https://www.tensorflow.org/api_docs/python/tf/Graph) | `pb` | `yolov8n.pb` | ❌ | `imgsz` |
| [TF Lite](https://www.tensorflow.org/lite) | `tflite` | `yolov8n.tflite` | ✅ | `imgsz`, `half`, `int8` |
| [TF Edge TPU](https://coral.ai/docs/edgetpu/models-intro/) | `edgetpu` | `yolov8n_edgetpu.tflite` | ✅ | `imgsz` |
| [TF.js](https://www.tensorflow.org/js) | `tfjs` | `yolov8n_web_model/` | ✅ | `imgsz` |
| [PaddlePaddle](https://github.com/PaddlePaddle) | `paddle` | `yolov8n_paddle_model/` | ✅ | `imgsz` |
| [ncnn](https://github.com/Tencent/ncnn) | `ncnn` | `yolov8n_ncnn_model/` | ✅ | `imgsz`, `half` |
انظر تفاصيل التصدير الكاملة في الصفحة [Export](https://docs.ultralytics.com/modes/export/)

108
docs/ar/modes/export.md Normal file
View file

@ -0,0 +1,108 @@
---
comments: true
description: دليل خطوة بخطوة حول تصدير نماذج YOLOv8 الخاصة بك إلى تنسيقات مختلفة مثل ONNX و TensorRT و CoreML وغيرها للنشر. استكشف الآن!.
keywords: YOLO، YOLOv8، Ultralytics، تصدير النموذج، ONNX، TensorRT، CoreML، TensorFlow SavedModel، OpenVINO، PyTorch، تصدير النموذج
---
# تصدير النموذج باستخدام يولو من Ultralytics
<img width="1024" src="https://github.com/ultralytics/assets/raw/main/yolov8/banner-integrations.png" alt="إكوسيستم يولو من Ultralytics والتكاملات">
## مقدمة
الهدف النهائي لتدريب نموذج هو نشره لتطبيقات العالم الحقيقي. يوفر وضع التصدير في يولو من Ultralytics مجموعة متنوعة من الخيارات لتصدير النموذج المدرب إلى تنسيقات مختلفة، مما يجعله يمكن استخدامه في مختلف الأنظمة والأجهزة. يهدف هذا الدليل الشامل إلى مساعدتك في فهم تفاصيل تصدير النموذج، ويعرض كيفية تحقيق أقصى توافق وأداء.
<p align="center">
<br>
<iframe width="720" height="405" src="https://www.youtube.com/embed/WbomGeoOT_k?si=aGmuyooWftA0ue9X"
title="مشغل فيديو YouTube" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
<br>
<strong>شاهد:</strong> كيفية تصدير نموذج Ultralytics YOLOv8 التدريب المخصص وتشغيل الاستدلال المباشر على كاميرا الويب.
</p>
## لماذا اختيار وضع تصدير YOLOv8؟
- **التنوع:** تصدير إلى تنسيقات متعددة بما في ذلك ONNX و TensorRT و CoreML ، وغيرها.
- **الأداء:** الحصول على سرعة تسريع تصل إلى 5 أضعاف باستخدام TensorRT وسرعة تسريع معالج الكمبيوتر المركزي بنسبة 3 أضعاف باستخدام ONNX أو OpenVINO.
- **التوافقية:** جعل النموذج قابلاً للنشر على الأجهزة والبرامج المختلفة.
- **سهولة الاستخدام:** واجهة سطر الأوامر البسيطة وواجهة برمجة Python لتصدير النموذج بسرعة وسهولة.
### الميزات الرئيسية لوضع التصدير
إليك بعض من الميزات المميزة:
- **تصدير بنقرة واحدة:** أوامر بسيطة لتصدير إلى تنسيقات مختلفة.
- **تصدير الدُفعات:** تصدير نماذج قادرة على العمل مع الدُفعات.
- **تنفيذ محسَّن:** يتم تحسين النماذج المصدرة لتوفير وقت تنفيذ أسرع.
- **فيديوهات تعليمية:** مرشدين وفيديوهات تعليمية لتجربة تصدير سلسة.
!!! Tip "نصيحة"
* صدّر إلى ONNX أو OpenVINO للحصول على تسريع معالج الكمبيوتر المركزي بنسبة 3 أضعاف.
* صدّر إلى TensorRT للحصول على تسريع وحدة المعالجة الرسومية بنسبة 5 أضعاف.
## أمثلة للاستخدام
قم بتصدير نموذج YOLOv8n إلى تنسيق مختلف مثل ONNX أو TensorRT. انظر الجدول أدناه للحصول على قائمة كاملة من وسائط التصدير.
!!! Example "مثال"
=== "بايثون"
```python
from ultralytics import YOLO
# قم بتحميل نموذج
model = YOLO('yolov8n.pt') # تحميل نموذج رسمي
model = YOLO('path/to/best.pt') # تحميل نموذج مدرب مخصص
# قم بتصدير النموذج
model.export(format='onnx')
```
=== "واجهة سطر الأوامر"
```bash
yolo export model=yolov8n.pt format=onnx # تصدير نموذج رسمي
yolo export model=path/to/best.pt format=onnx # تصدير نموذج مدرب مخصص
```
## الوسائط
تشير إعدادات تصدير YOLO إلى التكوينات والخيارات المختلفة المستخدمة لحفظ أو تصدير النموذج للاستخدام في بيئات أو منصات أخرى. يمكن أن تؤثر هذه الإعدادات على أداء النموذج وحجمه وتوافقه مع الأنظمة المختلفة. تشمل بعض إعدادات تصدير YOLO الشائعة تنسيق ملف النموذج المصدر (مثل ONNX وتنسيق TensorFlow SavedModel) والجهاز الذي سيتم تشغيل النموذج عليه (مثل المعالج المركزي أو وحدة المعالجة الرسومية) ووجود ميزات إضافية مثل الأقنعة أو التسميات المتعددة لكل مربع. قد تؤثر عوامل أخرى قد تؤثر عملية التصدير تشمل المهمة النموذجة المحددة التي يتم استخدام النموذج لها ومتطلبات أو قيود البيئة أو المنصة المستهدفة. من المهم أن ننظر بعناية ونقوم بتكوين هذه الإعدادات لضمان أن النموذج المصدر هو محسَّن للحالة الاستخدام المقصودة ويمكن استخدامه بشكل فعال في البيئة المستهدفة.
| المفتاح | القيمة | الوصف |
|-------------|-----------------|-----------------------------------------------------------------------|
| `format` | `'torchscript'` | التنسيق المراد تصديره |
| `imgsz` | `640` | حجم الصورة كمقدار علمي أو قائمة (h ، w) ، على سبيل المثال (640 ، 480) |
| `keras` | `False` | استخدام Keras لتصدير TF SavedModel |
| `optimize` | `False` | TorchScript: الأمثل للجوال |
| `half` | `False` | تكميم FP16 |
| `int8` | `False` | تكميم INT8 |
| `dynamic` | `False` | ONNX/TensorRT: المحاور الديناميكية |
| `simplify` | `False` | ONNX/TensorRT: تبسيط النموذج |
| `opset` | `None` | ONNX: إصدار opset (اختياري ، الافتراضي هو الأحدث) |
| `workspace` | `4` | TensorRT: حجم مساحة العمل (GB) |
| `nms` | `False` | CoreML: إضافة NMS |
## تنسيقات التصدير
صيغ تصدير YOLOv8 المتاحة في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام الوسيطة `format` ، مثل `format='onnx'` أو `format='engine'`.
| التنسيق | وسيطة format | النموذج | البيانات الوصفية | الوسائط |
|--------------------------------------------------------------------|---------------|---------------------------|------------------|-----------------------------------------------------|
| [بايثورش](https://pytorch.org/) | - | `yolov8n.pt` | ✅ | - |
| [TorchScript](https://pytorch.org/docs/stable/jit.html) | `تورتشسيريبت` | `yolov8n.torchscript` | ✅ | `imgsz`, `optimize` |
| [ONNX](https://onnx.ai/) | `onnx` | `yolov8n.onnx` | ✅ | `imgsz`, `half`, `dynamic`, `simplify`, `opset` |
| [OpenVINO](https://docs.openvino.ai/latest/index.html) | `openvino` | `yolov8n_openvino_model/` | ✅ | `imgsz`, `half`, `int8` |
| [TensorRT](https://developer.nvidia.com/tensorrt) | `engine` | `yolov8n.engine` | ✅ | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` |
| [CoreML](https://github.com/apple/coremltools) | `coreml` | `yolov8n.mlpackage` | ✅ | `imgsz`, `half`, `int8`, `nms` |
| [TF SavedModel](https://www.tensorflow.org/guide/saved_model) | `saved_model` | `yolov8n_saved_model/` | ✅ | `imgsz`, `keras`, `int8` |
| [TF GraphDef](https://www.tensorflow.org/api_docs/python/tf/Graph) | `pb` | `yolov8n.pb` | ❌ | `imgsz` |
| [TF Lite](https://www.tensorflow.org/lite) | `tflite` | `yolov8n.tflite` | ✅ | `imgsz`, `half`, `int8` |
| [TF Edge TPU](https://coral.ai/docs/edgetpu/models-intro/) | `edgetpu` | `yolov8n_edgetpu.tflite` | ✅ | `imgsz` |
| [TF.js](https://www.tensorflow.org/js) | `tfjs` | `yolov8n_web_model/` | ✅ | `imgsz` |
| [PaddlePaddle](https://github.com/PaddlePaddle) | `paddle` | `yolov8n_paddle_model/` | ✅ | `imgsz` |
| [ncnn](https://github.com/Tencent/ncnn) | `ncnn` | `yolov8n_ncnn_model/` | ✅ | `imgsz`, `half` |

77
docs/ar/modes/index.md Normal file
View file

@ -0,0 +1,77 @@
---
comments: true
description: من التدريب إلى التتبع، استفد من YOLOv8 مع Ultralytics. احصل على نصائح وأمثلة لكل وضع مدعوم بما في ذلك التحقق والتصدير واختبار الأداء.
keywords: Ultralytics, YOLOv8, التعلم الآلي، كشف الكائنات، التدريب، التحقق، التنبؤ، التصدير، التتبع، اختبار الأداء
---
# أوضاع Ultralytics YOLOv8
<img width="1024" src="https://github.com/ultralytics/assets/raw/main/yolov8/banner-integrations.png" alt="بيئة عمل Ultralytics YOLO والتكاملات">
## المقدمة
YOLOv8 من Ultralytics ليست مجرد نموذج لكشف الكائنات آخر؛ إنها إطار متعدد الاستخدامات مصمم لتغطية دورة حياة نماذج التعلم الآلي بأكملها - من امتصاص البيانات وتدريب النموذج إلى التحقق والنشر وتتبع الواقع الحقيقي. يخدم كل وضع غرضًا محددًا وهو مصمم لتوفير المرونة والكفاءة المطلوبة للمهام والحالات الاستخدام المختلفة.
!!! Note
🚧 توثيقنا متعدد اللغات قيد الإنشاء حاليًا، ونحن نعمل بجهد لتحسينه. شكرًا لك على صبرك! 🙏
<p align="center">
<br>
<iframe width="720" height="405" src="https://www.youtube.com/embed/j8uQc0qB91s?si=dhnGKgqvs7nPgeaM"
title="مشغل فيديو يوتيوب" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
<br>
<strong>شاهد:</strong> برنامج التعليم Ultralytics: تدريب، التحقق، التنبؤ، التصدير، واختبار الأداء.
</p>
### أوضاع مختصرة
فهم ال**أوضاع** المختلفة المدعومة بواسطة Ultralytics YOLOv8 مهم جدًا للاستفادة القصوى من النماذج الخاصة بك:
- وضع **التدريب**: قم بضبط نموذجك على مجموعة بيانات مخصصة أو محملة مسبقًا.
- وضع **التحقق**: نقطة فحص بعد التدريب لتقييم أداء النموذج.
- وضع **التنبؤ**: اطلق قوة التنبؤ الخاصة بنموذجك على البيانات الحقيقية.
- وضع **التصدير**: قم بتجهيز نموذجك للاستخدام في صيغ مختلفة.
- وضع **التتبع**: قم بتوسيع نموذج الكشف عن الكائنات الخاص بك إلى تطبيقات التتبع في الوقت الحقيقي.
- وضع **اختبار الأداء**: قم بتحليل سرعة ودقة نموذجك في بيئات نشر متنوعة.
يهدف هذا الدليل الشامل إلى تقديم لمحة عامة ونصائح عملية حول كل وضع، لمساعدتك في استغلال كامل إمكانات YOLOv8.
## [وضع التدريب](train.md)
يتم استخدام وضع التدريب لتدريب نموذج YOLOv8 على مجموعة بيانات مخصصة. في هذا الوضع، يتم تدريب النموذج باستخدام مجموعة البيانات والمعلمات الهايبر للحصول على دقة في توقع الفئات ومواقع الكائنات في الصورة.
[أمثلة التدريب](train.md){ .md-button .md-button--primary}
## [وضع التحقق](val.md)
يتم استخدام وضع التحقق للتحقق من نموذج YOLOv8 بعد تدريبه. في هذا الوضع، يتم تقييم النموذج على مجموعة التحقق لقياس دقته وأداء التعميم. يمكن استخدام هذا الوضع لتعديل المعلمات الهايبر للنموذج لتحسين أدائه.
[أمثلة التحقق](val.md){ .md-button .md-button--primary}
## [وضع التنبؤ](predict.md)
يتم استخدام وضع التنبؤ لإجراء تنبؤات باستخدام نموذج YOLOv8 المدرب على صور أو فيديوهات جديدة. في هذا الوضع، يتم تحميل النموذج من ملف الفحص، ويمكن للمستخدم توفير الصور أو مقاطع الفيديو لإجراء استدلال. يقوم النموذج بتوقع الفئات ومواقع الكائنات في الصور أو مقاطع الفيديو المدخلة.
[أمثلة التنبؤ](predict.md){ .md-button .md-button--primary}
## [وضع التصدير](export.md)
يتم استخدام وضع التصدير لتصدير نموذج YOLOv8 إلى صيغة يمكن استخدامها للنشر. في هذا الوضع، يتم تحويل النموذج إلى صيغة يمكن استخدامها من قبل تطبيقات البرامج الأخرى أو الأجهزة الأجهزة. يكون هذا الوضع مفيدًا عند نشر النموذج في بيئات الإنتاج.
[أمثلة التصدير](export.md){ .md-button .md-button--primary}
## [وضع التتبع](track.md)
يتم استخدام وضع التتبع لتتبع الكائنات في الوقت الحقيقي باستخدام نموذج YOLOv8. في هذا الوضع، يتم تحميل النموذج من ملف الفحص، ويمكن للمستخدم توفير تيار فيديو مباشر لأداء تتبع الكائنات في الوقت الفعلي. يكون هذا الوضع مفيدًا لتطبيقات مثل أنظمة المراقبة أو السيارات ذاتية القيادة.
[أمثلة التتبع](track.md){ .md-button .md-button--primary}
## [وضع اختبار الأداء](benchmark.md)
يتم استخدام وضع اختبار الأداء لتقييم سرعة ودقة صيغ التصدير المختلفة لـ YOLOv8. تقدم الاختبارات معلومات حول حجم الصيغة المصدر، معيار الأداء `mAP50-95` (لكشف الكائنات والتقسيم والتصوير) أو المعيار `accuracy_top5` (للتصنيف)، ووقت الاستدلال بالملي ثانية لكل صورة في صيغ التصدير المختلفة مثل ONNX و OpenVINO و TensorRT وغيرها. يمكن لهذه المعلومات مساعدة المستخدمين على اختيار صيغة التصدير الأمثل لحالتهم الاستخدامية المحددة بناءً على متطلبات السرعة والدقة.
[أمثلة اختبار الأداء](benchmark.md){ .md-button .md-button--primary}

217
docs/ar/modes/predict.md Normal file
View file

@ -0,0 +1,217 @@
---
comments: true
description: اكتشف كيفية استخدام وضع التنبؤ YOLOv8 لمهام مختلفة. تعرّف على مصادر التنبؤ المختلفة مثل الصور ومقاطع الفيديو وتنسيقات البيانات المختلفة.
keywords: Ultralytics، YOLOv8، وضع التنبؤ، مصادر التنبؤ، مهام التنبؤ، وضع التدفق، معالجة الصور، معالجة الفيديو، التعلم الآلي، الذكاء الاصطناعي
---
# التنبؤ بالنموذج باستخدام Ultralytics YOLO
<img width="1024" src="https://github.com/ultralytics/assets/raw/main/yolov8/banner-integrations.png" alt="البيئة والتكامل الخاصة بنظام Ultralytics YOLO">
## المقدمة
في عالم التعلم الآلي ورؤية الحاسوب، يُطلق على عملية استخلاص المعنى من البيانات البصرية اسم "الاستدلال" أو "التنبؤ". يوفر YOLOv8 من Ultralytics ميزة قوية تُعرف بـ**وضع التنبؤ** والتي تم تصميمها خصيصًا للاستدلال في الوقت الحقيقي وبأداء عال على مجموعة واسعة من مصادر البيانات.
<p align="center">
<br>
<iframe width="720" height="405" src="https://www.youtube.com/embed/QtsI0TnwDZs?si=ljesw75cMO2Eas14"
title="مشغل الفيديو" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
<br>
<strong>شاهد:</strong> كيفية استخراج النتائج من نموذج Ultralytics YOLOv8 لمشاريع مخصصة.
</p>
## التطبيقات في العالم الحقيقي
| التصنيع | الرياضة | السلامة |
|:-------------------------------------------------:|:----------------------------------------------------:|:-------------------------------------------:|
| ![Vehicle Spare Parts Detection][car spare parts] | ![Football Player Detection][football player detect] | ![People Fall Detection][human fall detect] |
| كشف قطع غيار المركبات | كشف لاعبي كرة القدم | كشف سقوط الأشخاص |
## لماذا يجب استخدام Ultralytics YOLO لعمليات التنبؤ؟
فيما يلي الأسباب التي يجب أخذها في الاعتبار عند الاستفادة من وضع التنبؤ YOLOv8 لاحتياجات التنبؤ المختلفة:
- **التنوع:** قادر على التنبؤ على الصور ومقاطع الفيديو، وحتى التدفقات الحية.
- **الأداء:** مصمم للتطبيقات في الوقت الحقيقي والمعالجة عالية السرعة دون التضحية بالدقة.
- **سهولة الاستخدام:** واجهات Python والواجهة السطرية لتسريع النشر والاختبار.
- **قابلية التخصيص العالية:** إعدادات ومعلمات مختلفة لضبط سلوك التنبؤ النموذج وفقًا لمتطلباتك المحددة.
### الميزات الرئيسية لوضع التنبؤ
تم تصميم وضع التنبؤ الخاص بـ YOLOv8 ليكون قويًا ومتعدد الاستخدامات، ويتميز بما يلي:
- **توافق متعدد مصادر البيانات:** سواء كانت بياناتك عبارة عن صور فردية أو مجموعة من الصور أو ملفات فيديو أو تدفقات فيديو في الوقت الحقيقي، سيتمكن وضع التنبؤ من التعامل معها جميعًا.
- **وضع التدفق الحي:** استخدم ميزة التدفق لإنشاء مولد فعّال لكائنات "النتائج" باستخدام الذاكرة. قم بتمكين هذا بتعيين `stream=True` في طريقة استدعاء المتنبئ.
- **معالجة دُفعات:** القدرة على معالجة العديد من الصور أو إطارات الفيديو في دُفعة واحدة، مما يزيد أكثر من سرعة التنبؤ.
- **سهل التكامل:** يسهل الدمج مع خطوط الأنابيب البيانية الحالية ومكونات البرامج الأخرى بفضل واجهة برمجة التطبيقات المرنة.
تُرجع نماذج Ultralytics YOLO إما قائمة Python من كائنات "النتائج" أو مُنشئ برمجياً فعّال لكائنات الـ "النتائج" في حال تم تمرير `stream=True` إلى النموذج أثناء عملية التنبؤ:
!!! Example "التنبؤ"
=== "العودة بقائمة واحدة باستخدام `stream=False`"
```python
from ultralytics import YOLO
# تحميل نموذج
model = YOLO('yolov8n.pt') # نموذج YOLOv8n المُدرَّب مسبقًا
# تشغيل التنبؤ بدُفعة على قائمة من الصور
results = model(['im1.jpg', 'im2.jpg']) # العودة بقائمة من كائنات 'النتائج'
# معالجة قائمة النتائج
for result in results:
boxes = result.boxes # كائن Boxes لمخرجات bbox
masks = result.masks # كائن Masks لمخرجات قنوات الفصل العنقودي
keypoints = result.keypoints # كائن Keypoints لمخرجات الاتجاهات
probs = result.probs # كائن Probs لمخرجات التصنيف
```
=== "العودة بمُنشئ فعال مع `stream=True`"
```python
from ultralytics import YOLO
# تحميل نموذج
model = YOLO('yolov8n.pt') # نموذج YOLOv8n المُدرَّب مسبقًا
# تشغيل التنبؤ بدُفعة على قائمة من الصور
results = model(['im1.jpg', 'im2.jpg'], stream=True) # العودة بمُنشئ فعال لكائنات 'النتائج'
# معالجة المُنشئ الفعال
for result in results:
boxes = result.boxes # كائن Boxes لمخرجات bbox
masks = result.masks # كائن Masks لمخرجات قنوات الفصل العنقودي
keypoints = result.keypoints # كائن Keypoints لمخرجات الاتجاهات
probs = result.probs # كائن Probs لمخرجات التصنيف
```
## مصادر التنبؤ
يمكن لـ YOLOv8 معالجة أنواع مختلفة من مصادر الإدخال لعملية الاستدلال، على النحو الموضح في الجدول أدناه. تشمل المصادر الصور الثابتة وتيارات الفيديو وتنسيقات مختلفة للبيانات. يشير الجدول أيضًا إلى ما إذا كان يمكن استخدام كل مصدر في وضع التدفق باستخدام الوسيط `stream=True` ✅. يعتبر وضع التدفق مفيدًا لمعالجة مقاطع الفيديو أو التدفقات الحية حيث يقوم بإنشاء مُنشئ للنتائج بدلاً من تحميل جميع الإطارات في الذاكرة.
!!! Tip "طراز"
استخدم `stream=True` لمعالجة مقاطع الفيديو الطويلة أو مجموعات البيانات الكبيرة لإدارة الذاكرة بكفاءة. عندما تكون القيمة مساوية لـ `stream=False`، يتم تخزين النتائج لجميع الإطارات أو نقاط البيانات في الذاكرة، والتي يمكن أن تتراكم بسرعة وتُسبِّب أخطاء الذاكرة غير الكافية للمدخلات الكبيرة. على النقيض من ذلك، يستخدم التدفق `stream=True` مولدًا يُبقي نتائج الإطار الحالي أو نقطة البيانات الحالية في الذاكرة فقط، مما يقلل بشكل كبير من استهلاك الذاكرة ويمنع مشكلات عدم كفاية الذاكرة.
| مصدر | الوسيط | النوع | الملاحظات |
|------------------|--------------------------------------------|-----------------|----------------------------------------------------------------------------------------------|
| صورة | `'صورة.jpg'` | `str` or `Path` | ملف صورة واحدة. |
| رابط URL | `'https://ultralytics.com/images/bus.jpg'` | `str` | رابط URL لصورة ما. |
| لقطة شاشة برمجية | `'الشاشة'` | `str` | قم بالتقاط لقطة شاشة برمجية. |
| PIL | `Image.open('im.jpg')` | `PIL.Image` | الصيغة HWC مع قنوات RGB. |
| OpenCV | `cv2.imread('im.jpg')` | `np.ndarray` | الصيغة HWC مع قنوات BGR `uint8 (0-255)`. |
| numpy | `np.zeros((640,1280,3))` | `np.ndarray` | الصيغة HWC مع قنوات BGR `uint8 (0-255)`. |
| torch | `torch.zeros(16,3,320,640)` | `torch.Tensor` | الصيغة BCHW مع قنوات RGB `float32 (0.0-1.0)`. |
| CSV | `'المصادر.csv'` | `str` or `Path` | ملف CSV يحتوي على مسارات الصور أو مقاطع الفيديو أو المجلدات. |
| فيديو ✅ | `'الفيديو.mp4'` | `str` or `Path` | ملف فيديو بتنسيقات مثل MP4 و AVI وما إلى ذلك. |
| الدليل ✅ | `'المسار/'` | `str` or `Path` | مسار إلى مجلد يحتوي على صور أو مقاطع فيديو. |
| glob ✅ | `'المسار/*.jpg'` | `str` | نمط glob لمطابقة عدة ملفات. استخدم حرف `*` كحرطوم. |
| يوتيوب ✅ | `'https://youtu.be/LNwODJXcvt4'` | `str` | رابط URL إلى فيديو يوتيوب. |
| تدفق ✅ | `'rtsp://example.com/media.mp4'` | `str` | عنوان URL لبروتوكولات التدفق مثل RTSP و RTMP و TCP أو عنوان IP. |
| تدفق متعدد ✅ | `'list.streams'` | `str` or `Path` | ملف نصي `*.streams` مع عنوان تدفق URL في كل صف، على سبيل المثال 8 تدفقات ستعمل بحجم دُفعة 8. |
فيما يلي أمثلة تعليمات برمجية لاستخدام كل نوع من مصدر:
!!! Example "مصادر التنبؤ"
=== "الصورة"
قم بأجراء عملية التنبؤ على ملف صورة.
```python
from ultralytics import YOLO
# تحميل نموذج YOLOv8n المدرب مسبقًا
model = YOLO('yolov8n.pt')
# تنشيط عملية التنبؤ لملف الصورة
source = 'المسار/إلى/الصورة.jpg'
# الجمع بين التنبؤ على المصدر
results = model(source) # قائمة كائنات النتائج
```
=== "لقطة شاشة برمجية"
قم بأجراء عملية التنبؤ على محتوى الشاشة الحالي كلقطة شاشة.
```python
from ultralytics import YOLO
# تحميل نموذج YOLOv8n المدرب مسبقًا
model = YOLO('yolov8n.pt')
# تعريف اللقطة الحالية كمصدر
source = 'الشاشة'
# الجمع بين التنبؤ على المصدر
results = model(source) # قائمة كائنات النتائج
```
=== "رابط URL"
قم بأجراء عملية التنبؤ على صورة موجودة على الإنترنت أو فيديو.
```python
from ultralytics import YOLO
# تحميل نموذج YOLOv8n المدرب مسبقًا
model = YOLO('yolov8n.pt')
# تعريف رابط الصورة أو الفيديو على الإنترنت
source = 'https://ultralytics.com/images/bus.jpg'
# الجمع بين التنبؤ على المصدر
results = model(source) # قائمة كائنات النتائج
```
=== "PIL"
قم بأجراء عملية التنبؤ على صورة مفتوحة بواسطة مكتبة Python Imaging Library (PIL).
```python
from PIL import Image
from ultralytics import YOLO
# تحميل نموذج YOLOv8n المدرب مسبقًا
model = YOLO('yolov8n.pt')
# فتح صورة باستخدام PIL
source = Image.open('المسار/إلى/الصورة.jpg')
# الجمع بين التنبؤ على المصدر
results = model(source) # قائمة كائنات النتائج
```
=== "OpenCV"
قم بأجراء عملية التنبؤ على صورة مُقروءة بواسطة OpenCV.
```python
import cv2
from ultralytics import YOLO
# تحميل نموذج YOLOv8n المدرب مسبقًا
model = YOLO('yolov8n.pt')
# قراءة صورة باستخدام OpenCV
source = cv2.imread('المسار/إلى/الصورة.jpg')
# الجمع بين التنبؤ على المصدر
results = model(source) # قائمة كائنات النتائج
```
=== "numpy"
قم بأجراء عملية التنبؤ على صورة مُمثلة كمصفوفة numpy.
```python
import numpy as np
from ultralytics import YOLO
# تحميل نموذج YOLOv8n المدرب مسبقًا
model = YOLO('yolov8n.pt')
# إنشاء مصفوفة numpy عشوائية في صيغة HWC (640, 640, 3) بقيم بين [0, 255] ونوع uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype='uint8')
# الجمع بين التنبؤ على المصدر
results = model(source) # قائمة كائنات النتائج
```
[car spare parts]: https://github.com/RizwanMunawar/ultralytics/assets/62513924/a0f802a8-0776-44cf-8f17-93974a4a28a1
[football player detect]: https://github.com/RizwanMunawar/ultralytics/assets/62513924/7d320e1f-fc57-4d7f-a691-78ee579c3442
[human fall detect]: https://github.com/RizwanMunawar/ultralytics/assets/62513924/86437c4a-3227-4eee-90ef-9efb697bdb43

360
docs/ar/modes/track.md Normal file
View file

@ -0,0 +1,360 @@
---
comments: true
description: تعرف على كيفية استخدام Ultralytics YOLO لتتبع الكائنات في تدفقات الفيديو. أدلة لاستخدام مختلف المتتبعين وتخصيص إعدادات المتتبع.
keywords: Ultralytics، YOLO، تتبع الكائنات، تدفقات الفيديو، BoT-SORT، ByteTrack، دليل Python، دليل خط الأوامر (CLI)
---
# تتبع عدة كائنات باستخدام Ultralytics YOLO
<img width="1024" src="https://user-images.githubusercontent.com/26833433/243418637-1d6250fd-1515-4c10-a844-a32818ae6d46.png" alt="Multi-object tracking examples">
يعد تتبع الكائنات في مجال تحليل الفيديو مهمة حرجة ليس فقط في تحديد موقع وفئة الكائنات داخل الإطار، ولكن أيضًا في الحفاظ على هوية فريدة لكل كائن يتم اكتشافه مع تقدم الفيديو. تكاد التطبيقات لا تعد ولا تحصى - تتراوح من المراقبة والأمان إلى تحليل الرياضة الفورية.
## لماذا يجب اختيار Ultralytics YOLO لتتبع الكائنات؟
إن مخرجات المتتبعين في Ultralytics متسقة مع كشف الكائنات القياسي ولها قيمة مضافة من هويات الكائنات. هذا يجعل من السهل تتبع الكائنات في تدفقات الفيديو وأداء التحليلات التالية. إليك لماذا يجب أن تفكر في استخدام Ultralytics YOLO لتلبية احتياجات تتبع الكائنات الخاصة بك:
- **الكفاءة:** معالجة تدفقات الفيديو في الوقت الحقيقي دون المساومة على الدقة.
- **المرونة:** يدعم العديد من خوارزميات التتبع والتكوينات.
- **سهولة الاستخدام:** واجهة برمجة تطبيقات بسيطة للغاية وخيارات سطر الأوامر للاستدماج السريع والنشر.
- **إمكانية التخصيص:** سهل الاستخدام مع نماذج YOLO مدربة مخصصة، مما يسمح بالاكتمال في التطبيقات ذات النطاق الخاص.
<p align="center">
<br>
<iframe width="720" height="405" src="https://www.youtube.com/embed/hHyHmOtmEgs?si=VNZtXmm45Nb9s-N-"
title="مشغل فيديو YouTube" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
<br>
<strong>شاهد:</strong> كشف الكائنات وتتبعها باستخدام Ultralytics YOLOv8.
</p>
## تطبيقات في العالم الحقيقي
| النقل | البيع بالتجزئة | الاستزراع المائي |
|:----------------------------------:|:--------------------------------:|:----------------------------:|
| ![Vehicle Tracking][vehicle track] | ![People Tracking][people track] | ![Fish Tracking][fish track] |
| تتبع المركبات | تتبع الأشخاص | تتبع الأسماك |
## ملامح بلمحة
يوفر Ultralytics YOLO ميزات كشف الكائنات لتوفير تتبع فعال ومتعدد الاستخدامات للكائنات:
- **تتبع فوري:** تتبع الكائنات بسلاسة في مقاطع الفيديو ذات معدل الإطارات العالي.
- **دعم عدة متتبعين:** اختيار بين مجموعة متنوعة من خوارزميات التتبع المعتمدة.
- **تخصيص تكوينات المتتبع المتاحة:** ضبط خوارزمية التتبع لتلبية المتطلبات المحددة عن طريق ضبط مختلف المعلمات.
## متتبعون متاحون
يدعم Ultralytics YOLO الخوارزميات التالية للتتبع. يمكن تمكينها عن طريق تمرير ملف تكوين YAML ذي الصلة مثل "tracker=tracker_type.yaml":
* [BoT-SORT](https://github.com/NirAharon/BoT-SORT) - استخدم `botsort.yaml` لتمكين هذا المتتبع.
* [ByteTrack](https://github.com/ifzhang/ByteTrack) - استخدم `bytetrack.yaml` لتمكين هذا المتتبع.
المتتبع الافتراضي هو BoT-SORT.
## تتبع
لتشغيل المتتبع على تدفقات الفيديو، استخدم نموذج تحديد (Detect) أو قطع (Segment) أو وضع (Pose) مدرب مثل YOLOv8n و YOLOv8n-seg و YOLOv8n-pose.
!!! Example "مثال"
=== "Python"
```python
from ultralytics import YOLO
# قم بتحميل نموذج رسمي أو مخصص
model = YOLO('yolov8n.pt') # قم بتحميل نموذج رسمي Detect
model = YOLO('yolov8n-seg.pt') # قم بتحميل نموذج رسمي Segment
model = YOLO('yolov8n-pose.pt') # قم بتحميل نموذج رسمي Pose
model = YOLO('path/to/best.pt') # قم بتحميل نموذج مخصص مدرب
# قم بتنفيذ التتبع باستخدام النموذج
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True) # التتبع باستخدام المتتبع الافتراضي
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True, tracker="bytetrack.yaml") # التتبع باستخدام متتبع ByteTrack
```
=== "CLI"
```bash
# قم بتنفيذ التتبع باستخدام مختلف النماذج باستخدام واجهة سطر الأوامر
yolo track model=yolov8n.pt source="https://youtu.be/LNwODJXcvt4" # نموذج Detect رسمي
yolo track model=yolov8n-seg.pt source="https://youtu.be/LNwODJXcvt4" # نموذج Segment رسمي
yolo track model=yolov8n-pose.pt source="https://youtu.be/LNwODJXcvt4" # نموذج Pose رسمي
yolo track model=path/to/best.pt source="https://youtu.be/LNwODJXcvt4" # تم تدريب نموذج مخصص
# تتبع عن طريق ByteTrack متتبع
yolo track model=path/to/best.pt tracker="bytetrack.yaml"
```
كما يظهر في الاستخدام أعلاه، يتوفر التتبع لجميع نماذج Detect و Segment و Pose التي تعمل على مقاطع الفيديو أو مصادر البث.
## الاعدادات
### معاملات التتبع
تتشارك إعدادات التتبع الخصائص مع وضع التوقعات (Predict)، مثل `conf` و `iou` و `show`. للحصول على مزيد من التكوينات، راجع صفحة النموذج [Predict](../modes/predict.md#inference-arguments).
!!! Example "مثال"
=== "Python"
```python
from ultralytics import YOLO
# قم بتكوين معلمات التتبع وقم بتشغيل التتبع
model = YOLO('yolov8n.pt')
results = model.track(source="https://youtu.be/LNwODJXcvt4", conf=0.3, iou=0.5, show=True)
```
=== "CLI"
```bash
# قم بتكوين معلمات التتبع وقم بتشغيل التتبع باستخدام واجهة سطر الأوامر
yolo track model=yolov8n.pt source="https://youtu.be/LNwODJXcvt4" conf=0.3, iou=0.5 show
```
### اختيار المتتبع
يتيح لك Ultralytics أيضًا استخدام ملف تكوين متتبع معدل. للقيام بذلك، أنقل نسخة من ملف تكوين المتتبع (مثل `custom_tracker.yaml`) من [ultralytics/cfg/trackers](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/trackers) وقم بتعديل أي تكوينات (باستثناء `tracker_type`) حسب احتياجاتك.
!!! Example "مثال"
=== "Python"
```python
from ultralytics import YOLO
# قم بتحميل النموذج وتشغيل التتبع باستخدام ملف تكوين مخصص
model = YOLO('yolov8n.pt')
results = model.track(source="https://youtu.be/LNwODJXcvt4", tracker='custom_tracker.yaml')
```
=== "CLI"
```bash
# قم بتحميل النموذج وتشغيل التتبع باستخدام ملف تكوين مخصص باستخدام واجهة سطر الأوامر
yolo track model=yolov8n.pt source="https://youtu.be/LNwODJXcvt4" tracker='custom_tracker.yaml'
```
للحصول على قائمة شاملة من وسائط تتبع، راجع الصفحة [ultralytics/cfg/trackers](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/trackers).
## أمثلة Python
### الحفاظ على المسارات التكرارية
فيما يلي سكريبت Python باستخدام OpenCV (cv2) و YOLOv8 لتشغيل تتبع الكائنات على إطارات الفيديو. يفترض هذا السكريبت أنك قد قمت بالفعل بتثبيت الحزم اللازمة (opencv-python و ultralytics). المعامل `persist=True` يخبر المتتبع أن الصورة الحالية أو الإطار التالي في التسلسل ومن المتوقع أن يتوفر مسارات من الصورة السابقة في الصورة الحالية.
!!! Example "For-loop للتدفق مع التتبع"
```python
import cv2
from ultralytics import YOLO
# حمّل نموذج YOLOv8
model = YOLO('yolov8n.pt')
# افتح ملف الفيديو
video_path = "path/to/video.mp4"
cap = cv2.VideoCapture(video_path)
# تحلق عبر إطارات الفيديو
while cap.isOpened():
# قراءة الإطار من الفيديو
success, frame = cap.read()
if success:
# تشغيل تتبع YOLOv8 على الإطار ، وحفظ المسارات بين الإطارات
results = model.track(frame, persist=True)
# تصور النتائج على الإطار
annotated_frame = results[0].plot()
# عرض الإطار المعلق
cv2.imshow("YOLOv8 Tracking", annotated_frame)
# كسر اللوب في حالة الضغط على 'q'
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
# كسر اللوب في نهاية الفيديو
break
# إطلاق كائن التقاط الفيديو وإغلاق نافذة العرض
cap.release()
cv2.destroyAllWindows()
```
يرجى ملاحظة التغيير من `model(frame)` إلى `model.track(frame)` ، مما يمكن التتبع بدلاً من الكشف البسيط. سيتم تشغيل البرنامج المعدل على كل إطار فيديو وتصور النتائج وعرضها في نافذة. يمكن الخروج من الحلقة عن طريق الضغط على 'q'.
### رسم المسارات عبر الوقت
يمكن أن يوفر رسم المسارات الكائنية عبر الإطارات المتتالية إشارات قيمة حول أنماط الحركة والسلوك للكائنات المكتشفة في الفيديو. باستخدام Ultralytics YOLOv8 ، يعد تصوير هذه المسارات عملية سلسة وفعالة.
في المثال التالي ، نوضح كيفية استخدام قدرات يوكو 8 YOLO لتتبع الكائنات لرسم حركة الكائنات المكتشفة عبر إطارات الفيديو المتعددة. يتضمن هذا البرنامج فتح ملف فيديو وقراءته إطارًا بإطار ، واستخدام نموذج YOLO لتحديد وتتبع العديد من الكائنات. عن طريق الاحتفاظ بنقاط الوسط لمربعات الحدود المكتشفة وتوصيلها ، يمكننا رسم خطوط تمثل المسارات التي تم اتباعها بواسطة الكائنات التي تمت متابعتها.
!!! Example "رسم المسارات عبر إطارات الفيديو المتعددة"
```python
from collections import defaultdict
import cv2
import numpy as np
from ultralytics import YOLO
# حمّل نموذج YOLOv8
model = YOLO('yolov8n.pt')
# افتح ملف الفيديو
video_path = "path/to/video.mp4"
cap = cv2.VideoCapture(video_path)
# احفظ تاريخ المسارات
track_history = defaultdict(lambda: [])
# تحلق عبر إطارات الفيديو
while cap.isOpened():
# قراءة الإطار من الفيديو
success, frame = cap.read()
if success:
# تشغيل تتبع YOLOv8 على الإطار ، وحفظ المسارات بين الإطارات
results = model.track(frame, persist=True)
# الحصول على المربعات ومعرفات المسار
boxes = results[0].boxes.xywh.cpu()
track_ids = results[0].boxes.id.int().cpu().tolist()
# تصور النتائج على الإطار
annotated_frame = results[0].plot()
# رسم المسارات
for box, track_id in zip(boxes, track_ids):
x, y, w, h = box
track = track_history[track_id]
track.append((float(x), float(y))) # x, y نقطة الوسط
if len(track) > 30: # احتفظ بـ 90 مسارًا لـ 90 إطارًا
track.pop(0)
# رسم خطوط التتبع
points = np.hstack(track).astype(np.int32).reshape((-1, 1, 2))
cv2.polylines(annotated_frame, [points], isClosed=False, color=(230, 230, 230), thickness=10)
# عرض الإطار المعلق
cv2.imshow("YOLOv8 Tracking", annotated_frame)
# كسر اللوب في حالة الضغط على 'q'
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
# كسر اللوب في نهاية الفيديو
break
# إطلاق كائن التقاط الفيديو وإغلاق نافذة العرض
cap.release()
cv2.destroyAllWindows()
```
### التتبع متعدد الخيوط
يوفر التتبع متعدد الخيوط القدرة على تشغيل تتبع الكائنات على عدة تدفقات فيديو في وقت واحد. هذا مفيد بشكل خاص عند التعامل مع مدخلات فيديو متعددة ، مثل من كاميرات المراقبة المتعددة ، حيث يمكن أن يعزز المعالجة المتزامنة الكفاءة والأداء بشكل كبير.
في السكريبت البايثون المقدم ، نستخدم وحدة `threading` في Python لتشغيل عدة نسخ متزامنة من المتتبع. يكون لكل موضوع مسؤولية تشغيل المتتبع على ملف فيديو واحد ، وتعمل جميع الخيوط في الخلفية في نفس الوقت.
للتأكد من أن كل خيط يتلقى المعلمات الصحيحة (ملف الفيديو والنموذج المستخدم وفهرس الملف) ، نحدد وظيفة `run_tracker_in_thread` التي تقبل هذه المعلمات وتحتوي على حلقة المتابعة الرئيسية. هذه الوظيفة تقرأ إطار الفيديو الخاصة بالفيديو مباشرة من مصدر الملف الواحد ، وتشغيل المتتبع ، وعرض النتائج.
تستخدم في هذا المثال نموذجين مختلفين: 'yolov8n.pt' و 'yolov8n-seg.pt' ، يقوم كل منهما بتتبع الكائنات في ملف فيديو مختلف. تم تحديد ملفات الفيديو في `video_file1` و `video_file2`.
تعديل معلمات `daemon=True` في `threading.Thread` يعني أن هذه الخيوط ستتم إغلاقها بمجرد انتهاء البرنامج الرئيسي. ثم نبدأ الخيوط باستخدام `start ()` واستخدم `join ()` لجعل الخيط الرئيسي ينتظر حتى ينتهي خيطي المتتبع.
أخيرًا ، بعد اكتمال جميع الخيوط لمهمتها ، يتم إغلاق النوافذ التي تعرض النتائج باستخدام `cv2.destroyAllWindows()`.
!!! Example "Streaming for-loop with tracking"
```python
import threading
import cv2
from ultralytics import YOLO
def run_tracker_in_thread(filename, model, file_index):
"""
يشغل ملف فيديو أو مصدر تيار الكاميرا بالتزامن مع YOLOv8 النموذج باستخدام تعدد الخيوط.
هذه الوظيفة تلتقط إطارات الفيديو من ملف أو مصدر الكاميرا المعروف ، وتستخدم نموذج YOLOv8 لتتبع الكائنات.
يعمل البرنامج في خيطه الخاص للمعالجة المتزامنة.
Args:
filename (str): مسار ملف الفيديو أو معرف مصدر كاميرا الويب / خارجية.
model (obj): كائن نموذج YOLOv8.
file_index (int): مؤشر لتحديد الملف بشكل فريد ، يُستخدم لأغراض العرض.
ملاحظة:
اضغط على 'q' لإنهاء نافذة عرض الفيديو.
"""
video = cv2.VideoCapture(filename) # قراءة ملف الفيديو
while True:
ret, frame = video.read() # قراءة إطارات الفيديو
# إنهاء الدورة إذا لم يتبقى إطارات على الفيديوين
if not ret:
break
# تتبع كائنات في الإطارات إذا توفرت
results = model.track(frame, persist=True)
res_plotted = results[0].plot()
cv2.imshow(f"Tracking_Stream_{file_index}", res_plotted)
key = cv2.waitKey(1)
if key == ord('q'):
break
# إطلاق مصدري الفيديو
video.release()
# حمّل النماذج
model1 = YOLO('yolov8n.pt')
model2 = YOLO('yolov8n-seg.pt')
# حدد ملفات الفيديو للمتابعين
video_file1 = "path/to/video1.mp4" # مسار ملف الفيديو ، 0 لكاميرا الويب
video_file2 = 0 # مسار ملف الفيديو ، 0 لكاميرا الويب ، 1 لكاميرا خارجية
# إنشاء خيوط المتابع
tracker_thread1 = threading.Thread(target=run_tracker_in_thread, args=(video_file1, model1 ,1), daemon=True)
tracker_thread2 = threading.Thread(target=run_tracker_in_thread, args=(video_file2, model2, 2), daemon=True)
# بدء خيوط المتابع
tracker_thread1.start()
tracker_thread2.start()
# انتظر حتى ينتهي خيط المتابع
tracker_thread1.join()
tracker_thread2.join()
# Clean up and close windows
cv2.destroyAllWindows()
```
يمكن بسهولة توسيع هذا المثال للتعامل مع ملفات فيديو ونماذج أخرى من خلال إنشاء مزيد من الخيوط وتطبيق نفس المنهجية.
## المساهمة في المتتبعون الجديدون
هل أنت ماهر في التتبع متعدد الكائنات وقد نفذت أو صيغت بنجاح خوارزمية تتبع باستخدام Ultralytics YOLO؟ ندعوك للمشاركة في قسم المتتبعين لدينا في [ultralytics/cfg/trackers](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/trackers)! قد تكون التطبيقات في العالم الحقيقي والحلول التي تقدمها لا تقدر بثمن للمستخدمين العاملين على مهام التتبع.
من خلال المساهمة في هذا القسم ، تساعد في توسيع نطاق حلول التتبع المتاحة في إطار Ultralytics YOLO ، مضيفًا طبقة أخرى من الوظائف والفعالية للمجتمع.
لبدء المساهمة ، يرجى الرجوع إلى [دليل المساهمة الخاص بنا](https://docs.ultralytics.com/help/contributing) للحصول على تعليمات شاملة حول تقديم طلب سحب (PR) 🛠️. نتطلع بشكل كبير إلى ما ستجلبه للطاولة!
لنعزز معًا قدرات عملية التتبع لأجهزة Ultralytics YOLO 🙏!
[vehicle track]: https://github.com/RizwanMunawar/ultralytics/assets/62513924/ee6e6038-383b-4f21-ac29-b2a1c7d386ab
[people track]: https://github.com/RizwanMunawar/ultralytics/assets/62513924/93bb4ee2-77a0-4e4e-8eb6-eb8f527f0527
[fish track]: https://github.com/RizwanMunawar/ultralytics/assets/62513924/a5146d0f-bfa8-4e0a-b7df-3c1446cd8142

286
docs/ar/modes/train.md Normal file
View file

@ -0,0 +1,286 @@
---
comments: true
description: دليل خطوة بخطوة لتدريب نماذج YOLOv8 باستخدام Ultralytics YOLO بما في ذلك أمثلة على التدريب باستخدام بطاقة رسومات منفصلة ومتعددة البطاقات الرسومية
keywords: Ultralytics، YOLOv8، YOLO، كشف الكائنات، وضع تدريب، مجموعة بيانات مخصصة، تدريب بطاقة رسومات، متعددة البطاقات الرسومية، معلمات تكبير، أمثلة سطر الأوامر، أمثلة بايثون
---
# تدريب النموذج باستخدام Ultralytics YOLO
<img width="1024" src="https://github.com/ultralytics/assets/raw/main/yolov8/banner-integrations.png" alt="بيئة ومدمجات Ultralytics YOLO">
## المقدمة
يتضمن تدريب نموذج التعلم العميق تزويده بالبيانات وضبط معلماته بحيث يتمكن من إجراء توقعات دقيقة. يتم تصميم وضع التدريب في Ultralytics YOLOv8 لتدريب فعال وفعال لنماذج كشف الكائنات، مستغلاً تمامًا إمكانات الأجهزة الحديثة. يهدف هذا الدليل إلى شرح جميع التفاصيل التي تحتاج إلى البدء في تدريب النماذج الخاصة بك باستخدام مجموعة متينة من ميزات YOLOv8.
<p align="center">
<br>
<iframe width="720" height="405" src="https://www.youtube.com/embed/LNwODJXcvt4?si=7n1UvGRLSd9p5wKs"
title="مشغل فيديو YouTube" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
<br>
<strong>شاهد:</strong> كيفية تدريب نموذج YOLOv8 على مجموعة البيانات المخصصة الخاصة بك في Google Colab.
</p>
## لماذا اختيار Ultralytics YOLO للتدريب؟
إليك بعض الأسباب المقنعة لاختيار وضع التدريب في YOLOv8:
- **الكفاءة:** استفد إلى أقصى حد من الأجهزة الخاصة بك، سواء كنت تستخدم بطاقة رسومات واحدة أو توسيعها عبر عدة بطاقات رسومات.
- **تعدد الاستخدامات:** قم بالتدريب على مجموعات البيانات المخصصة بالإضافة إلى المجموعات المتاحة بسهولة مثل COCO و VOC و ImageNet.
- **سهل الاستخدام:** واجهة سطر الأوامر CLI وواجهة Python البسيطة والقوية لتجربة تدريب مباشرة.
- **مرونة المعلمات:** مجموعة واسعة من المعلمات القابلة للتخصيص لضبط أداء النموذج.
### الميزات الرئيسية لوضع التدريب
تتمثل الميزات البارزة لوضع التدريب في YOLOv8 في ما يلي:
- **تنزيل مجموعة البيانات تلقائيًا:** تقوم مجموعات البيانات القياسية مثل COCO و VOC و ImageNet بالتنزيل تلقائيًا عند أول استخدام.
- **دعم متعدد البطاقات الرسومية:** قم بتوزيع العمليات التدريبية بسلاسة عبر عدة بطاقات رسومات لتسريع العملية.
- **ضبط المعلمات:** الخيار لتعديل المعلمات التكبير من خلال ملفات تكوين YAML أو وسائط سطر الأوامر.
- **مراقبة وتتبع:** تتبع في الوقت الفعلي لمقاييس التدريب وتصور عملية التعلم لتحقيق رؤى أفضل.
!!! Example "نصيحة"
* يتم تنزيل مجموعات YOLOv8 القياسية مثل COCO و VOC و ImageNet وغيرها تلقائيًا عند الاستخدام الأول، على سبيل المثال: `yolo train data=coco.yaml`
## أمثلة استخدام
تدريب YOLOv8n على مجموعة بيانات COCO128 لمدة 100 حقبة بحجم صورة 640. يمكن تحديد جهاز التدريب باستخدام الوسيطة `device`. إذا لم يتم تمرير وسيطة، سيتم استخدام الجهاز بطاقة الرسومات "device=0" إذا كانت متاحة، وإلا سيتم استخدام `device=cpu`. استعرض الجدول الزمني أدناه للحصول على قائمة كاملة بوسائط التدريب.
!!! Example "أمثلة سطر الأوامر للتدريب باستخدام بطاقة رسومات مستقلة ومعالج مركزي"
يتم تحديد الجهاز تلقائيًا. إذا كانت بطاقة رسومات متاحة، سيتم استخدامها، وإلا ستبدأ التدريب على المعالج المركزي.
=== "بايثون"
```python
from ultralytics import YOLO
# تحميل النموذج
model = YOLO('yolov8n.yaml') # إنشاء نموذج جديد من ملف YAML
model = YOLO('yolov8n.pt') # تحميل نموذج مدرب مسبقًا (الأكثر توصية للتدريب)
model = YOLO('yolov8n.yaml').load('yolov8n.pt') # إنشاء من ملف YAML ونقل الأوزان
# تدريب النموذج
results = model.train(data='coco128.yaml', epochs=100, imgsz=640)
```
=== "سطر الأوامر"
```bash
# إنشاء نموذج جديد من ملف YAML وبدء التدريب من البداية
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640
# بدء التدريب من نموذج *.pt مدرب مسبقًا
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640
# إنشاء نموذج جديد من ملف YAML ونقل الأوزان المدربة مسبقًا وبدء التدريب
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640
```
### التدريب متعدد البطاقات الرسومية
يتيح التدريب متعدد البطاقات الرسومية استخدام الموارد الأجهزة المتاحة بكفاءة أكبر من خلال توزيع أعباء التدريب عبر عدة بطاقات رسومية. هذه الميزة متاحة من خلال واجهة برمجة التطبيقات باستخدام Python وسطر الأوامر. لتمكين التدريب متعدد البطاقات الرسومية، حدد معرفات أجهزة GPU التي ترغب في استخدامها.
!!! Example "أمثلة على التدريب متعدد البطاقات الرسومية"
للتدريب باستخدام أجهزتي GPU، جهاز CUDA 0 و 1، استخدم الأوامر التالية. قم بتوسيعها لاستخدام المزيد من البطاقات.
=== "بايثون"
```python
from ultralytics import YOLO
# تحميل النموذج
model = YOLO('yolov8n.pt') # تحميل نموذج مدرب مسبقًا (الأكثر توصية للتدريب)
# تدريب النموذج بأجهزة GPU 2
results = model.train(data='coco128.yaml', epochs=100, imgsz=640, device=[0, 1])
```
=== "سطر الأوامر"
```bash
# بدء التدريب من نموذج *.pt مدرب مسبقًا باستخدام بطاقات GPU 0 و 1
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640 device=0,1
```
### التدريب باستخدام Apple M1 و M2 MPS
مع دعم شرائح Apple M1 و M2 المدمج في نماذج Ultralytics YOLO، يمكنك الآن تدريب نماذجك على الأجهزة التي تستخدم نظام Metal Performance Shaders (MPS) القوي. يوفر MPS طريقة عالية الأداء لتنفيذ المهام الحسابية ومعالجة الصور على شرائح السيليكون المخصصة لعبة Apple.
لتمكين التدريب على شرائح Apple M1 و M2، يجب عليك تحديد "mps" كجهازك عند بدء عملية التدريب. فيما يلي مثال لكيفية القيام بذلك في بايثون وعبر سطر الأوامر:
!!! Example "مثال على التدريب بواسطة MPS"
=== "بايثون"
```python
from ultralytics import YOLO
# تحميل النموذج
model = YOLO('yolov8n.pt') # تحميل نموذج مدرب مسبقًا (الأكثر توصية للتدريب)
# تدريب النموذج باستخدام 2 بطاقات GPU
results = model.train(data='coco128.yaml', epochs=100, imgsz=640, device='mps')
```
=== "سطر الأوامر"
```bash
# بدء التدريب من نموذج *.pt مدرب مسبقًا باستخدام بطاقات GPU 0 و 1
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640 device=mps
```
عند الاستفادة من قدرة المعالجة الحاسوبية لشرائح M1/M2، يتيح لك هذا الحمل أداءً أكثر كفاءة لمهام التدريب. للحصول على إرشادات أكثر تفصيلاً وخيارات تكوين متقدمة، يرجى الرجوع إلى [وثائق PyTorch MPS](https://pytorch.org/docs/stable/notes/mps.html).
### استئناف التدريب المقطوع
يعتبر استئناف التدريب من الحالات التخزين السابقة ميزة حاسمة عند العمل مع نماذج التعلم العميق. يمكن أن يكون هذا مفيدًا في العديد من السيناريوهات، مثل عند تعطل عملية التدريب بشكل غير متوقع، أو عند الرغبة في متابعة تدريب نموذج بيانات جديدة أو لفترة زمنية أطول.
عند استئناف التدريب، يقوم Ultralytics YOLO بتحميل الأوزان من آخر نموذج محفوظ وأيضًا استعادة حالة المحسن، وجدولة معدل التعلم، وعدد الحقبة. هذا يتيح لك متابعة عملية التدريب بشكل سلس من حيث توقفت.
يمكنك بسهولة استئناف التدريب في Ultralytics YOLO عن طريق تعيين الوسيطة `resume` إلى `True` عند استدعاء طريقة `train`، وتحديد المسار إلى ملف `.pt` الذي يحتوي على أوزان النموذج المدرب جزئيًا.
فيما يلي مثال لكيفية استئناف تدريب مقطوع باستخدام بايثون وعبر سطر الأوامر:
!!! Example "مثال على استئناف التدريب"
=== "بايثون"
```python
from ultralytics import YOLO
# تحميل النموذج
model = YOLO('path/to/last.pt') # تحميل نموذج مدرب جزئيًا
# استئناف التدريب
results = model.train(resume=True)
```
=== "سطر الأوامر"
```bash
# استئناف تدريب متقطع
yolo train resume model=path/to/last.pt
```
من خلال تعيين `resume=True`، ستواصل وظيفة 'train' التدريب من حيث توقفت، باستخدام الحالة المخزنة في ملف 'path/to/last.pt'. إذا تم حذف الوسيطة `resume` أو تعيينها على `False`، ستبدأ وظيفة 'train' جلسة تدريب جديدة.
تذكر أنه يتم حفظ نقاط التفتيش في نهاية كل حقبة افتراضياً، أو في فترة ثابتة باستخدام وسيطة 'save_period'، لذا يجب عليك إتمام حقبة واحدة على الأقل لاستئناف تشغيل تدريب.
## الوسائط
تتعلق إعدادات التدريب لنماذج YOLO بالمعلمات والتكوينات المختلفة المستخدمة لتدريب النموذج على مجموعة بيانات ما. يمكن أن تؤثر هذه الإعدادات على أداء النموذج وسرعته ودقته. تتضمن بعض إعدادات YOLO التدريب الشائعة حجم الدُفعات، معدل التعلم، الزخم، والتقليل القيمي للأوزان. العوامل الأخرى التي قد تؤثر في عملية التدريب تشمل اختيار المحسن، اختيار دالة الخسارة، وحجم وتركيب مجموعة البيانات التدريب. من المهم ضبط وتجربة هذه الإعدادات بعناية لتحقيق أفضل أداء ممكن لمهمة معينة.
| المفتاح | القيمة | الوصف |
|-------------------|----------|---------------------------------------------------------------------------------------------------------------------------|
| `model` | `None` | مسار إلى ملف النموذج، على سبيل المثال yolov8n.pt، yolov8n.yaml |
| `data` | `None` | مسار إلى ملف البيانات، على سبيل المثال coco128.yaml |
| `epochs` | `100` | عدد الحقب للتدريب ل |
| `patience` | `50` | حقب للانتظار بدون تحسن ظاهر لإيقاف التدريب مبكرا |
| `batch` | `16` | عدد الصور في كل دُفعة (-1 for AutoBatch) |
| `imgsz` | `640` | حجم الصور الدخل بصورة مثالية |
| `save` | `True` | حال إنقاذ النقاط المفتوحة للتدريب ونتائج الكشف |
| `save_period` | `-1` | حفظ النقطة الفاصلة كل x حقبة (تكون معطلة إذا كانت < 1) |
| `cache` | `False` | صحيح / ذاكرة عشوائية أو قرص / غير صحيح. استخدم ذاكرة التخزين المؤقت في تحميل البيانات |
| `device` | `None` | الجهاز لتشغيل التدريب عليه، على سبيل المثال جهاز الرسومات cuda=0 أو جهاز الرسومات cuda=0,1,2,3 أو جهاز المعالج المركزيcpu |
| `workers` | `8` | عدد خيوط العاملة لتحميل البيانات (لكل RANK إذا كان DDP) |
| `project` | `None` | اسم المشروع |
| `name` | `None` | اسم التجربة |
| `exist_ok` | `False` | ما إذا كان سيتم الكتابة فوق تجربة موجودة |
| `pretrained` | `True` | (bool أو str) ما إذا كان سيتم استخدام نموذج متدرب مسبقًا (bool) أو نموذج لتحميل الأوزان منه (str) |
| `optimizer` | `'auto'` | المحسن لاستخدامه، الخيارات=[SGD، Adam، Adamax، AdamW، NAdam، RAdam، RMSProp، Auto] |
| `verbose` | `False` | ما إذا كان سيتم طباعة مخرجات مفصلة |
| `seed` | `0` | البذرة العشوائية لإعادة الإنتاجية |
| `deterministic` | `True` | ما إذا كان يتم تمكين الوضع المحدد |
| `single_cls` | `False` | يجب تدريب بيانات متعددة الفئات كفئة واحدة |
| `rect` | `False` | تدريب مستطيل باستخدام تجميع الدُفعات للحد الأدنى من الحشو |
| `cos_lr` | `False` | استخدم جدولة معدل التعلم بتوقيت الكوسا |
| `close_mosaic` | `10` | (int) تعطيل التكبير التجانبي للحجم للحقب النهائية (0 للتعطيل) |
| `resume` | `False` | استأنف التدريب من النقطة الأخيرة |
| `amp` | `True` | تدريب دقة مختلطة تلقائية (AMP)، الخيارات=[True، False] |
| `fraction` | `1.0` | نسبة مجموعة البيانات المراد تدريبها (الافتراضي هو 1.0، جميع الصور في مجموعة التدريب) |
| `profile` | `False` | قم بتشغيل بروفايل السرعة لمشغلات ONNX و TensorRT أثناء التدريب للمسجلات |
| `freeze` | `None` | (int أو list، اختياري) تجميد أول n طبقة، أو قائمة طبقات الفهرس خلال التدريب |
| `lr0` | `0.01` | معدل التعلم الأولي (على سبيل المثال SGD=1E-2، Adam=1E-3) |
| `lrf` | `0.01` | معدل التعلم النهائي (lr0 * lrf) |
| `momentum` | `0.937` | الزخم SGD / Adam beta1 |
| `weight_decay` | `0.0005` | تقليل الأوزان للمحسن (5e-4) |
| `warmup_epochs` | `3.0` | حقب الاحماء (الأجزاء المئوية مقبولة) |
| `warmup_momentum` | `0.8` | الزخم الأولي للتدفق الأعلى |
| `warmup_bias_lr` | `0.1` | نسبة تعلم الانحياز الأولي للتدفق العلوي |
| `box` | `7.5` | وزن فاقد الصندوق |
| `cls` | `0.5` | وزن فاقد التصنيف (تناسب مع البكسل) |
| `dfl` | `1.5` | وزن الخسارة الأمامية للتصنيف والصندوق |
| `pose` | `12.0` | وزن فاقد الوضع (الوضع فقط) |
| `kobj` | `2.0` | وزن فاقد نقطة المفتاح (الوضع فقط) |
| `label_smoothing` | `0.0` | التسوية الغموض (كسر) |
| `nbs` | `64` | حجم الدُفعة الاسمي |
| `overlap_mask` | `True` | التحجيم يجب أن يتداخل أقنعة التدريب (التدريب الفصلي فقط) |
| `mask_ratio` | `4` | معدل تحجيم أقنعة (التدريب الفصلي فقط) |
| `dropout` | `0.0` | استخدام تنظيم الإسقاط (التدريب التطبيقي فقط) |
| `val` | `True` | التحقق/الاختبار خلال التدريب |
## تسجيل
عند تدريب نموذج YOLOv8، قد تجد أنه من المفيد تتبع أداء النموذج مع مرور الوقت. هنا يأتي دور تسجيل. يوفر Ultralytics' YOLO دعمًا لثلاثة أنواع من أجهزة السجل - Comet و ClearML و TensorBoard.
لاستخدام سجل، حدده من قائمة السحب أسفل الكود وقم بتشغيله. سيتم تثبيت السجل المختار وتهيئته.
### Comet
[Comet](../../integrations/comet.md) هو منصة تسمح لعلماء البيانات والمطورين بمتابعة ومقارنة وشرح وتحسين التجارب والنماذج. يوفر وظائف مثل المقاييس الزمنية في الوقت الحقيقي وفروقات الشفرة وتتبع المعلمات.
لاستخدام Comet:
!!! Example "أمثلة بايثون"
=== "بايثون"
```python
# pip install comet_ml
import comet_ml
comet_ml.init()
```
تذكر تسجيل الدخول إلى حسابك في Comet على موقعهم على الويب والحصول على مفتاح API الخاص بك. ستحتاج إلى إضافته إلى الإعدادات المتغيرة في البيئة الخاصة بك أو برنامج النص الخاص بك لتسجيل التجارب الخاصة بك.
### ClearML
[ClearML](https://www.clear.ml/) هي منصة مفتوحة المصدر تعمل على تتبع التجارب وتسهيل مشاركة الموارد بكفاءة. تم تصميمه لمساعدة الفرق في إدارة وتنفيذ وإعادة إنتاج عملهم في مجال تعلم الآلة بكفاءة أكبر.
لاستخدام ClearML:
!!! Example "أمثلة بايثون"
=== "بايثون"
```python
# pip install clearml
import clearml
clearml.browser_login()
```
بعد تشغيل هذا السكريبت، ستحتاج إلى تسجيل الدخول إلى حساب ClearML الخاص بك على المستعرض ومصادقة جلستك.
## TensorBoard
[TensorBoard](https://www.tensorflow.org/tensorboard) هي مجموعة أدوات لتصور TensorFlow ، تسمح لك بتصور نموذج TensorFlow الخاص بك ، ورسم المقاييس الكمية حول تنفيذ النموذج الخاص بك ، وعرض بيانات إضافية مثل الصور التي تمر عبرها.
للاستفادة من TensorBoard في [Google Colab](https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb):
!!! Example "أمثلة سطر الأوامر"
=== "سطر الأوامر"
```bash
load_ext tensorboard
tensorboard --logdir ultralytics/runs # استبدل بالدليل 'runs'
```
لاستخدام TensorBoard محليًا، قم بتشغيل الأمر أدناه واعرض النتائج على الرابط http://localhost:6006/.
!!! Example "أمثلة سطر الأوامر"
=== "سطر الأوامر"
```bash
tensorboard --logdir ultralytics/runs # استبدل بالدليل 'runs'
```
سيتم تحميل TensorBoard وتوجيهه إلى الدليل الذي يتم حفظ سجلات التدريب فيه.
بعد إعداد السجل الخاص بك، يمكنك الاستمرار في تدريب النموذج. سيتم سجل جميع مقاييس التدريب تلقائيًا في المنصة التي اخترتها، ويمكنك الوصول إلى هذه السجلات لمراقبة أداء النموذج الخاص بك مع مرور الوقت ومقارنة نماذج مختلفة وتحديد المجالات التي يمكن تحسينها.

86
docs/ar/modes/val.md Normal file
View file

@ -0,0 +1,86 @@
---
comments: true
description: دليل لاختبار نماذج YOLOv8 الصحيحة. تعرف على كيفية تقييم أداء نماذج YOLO الخاصة بك باستخدام إعدادات ومقاييس التحقق من الصحة مع أمثلة برمجية باللغة البايثون وواجهة سطر الأوامر.
keywords: Ultralytics, YOLO Docs, YOLOv8, التحقق من الصحة, تقييم النموذج, المعلمات الفرعية, الدقة, المقاييس, البايثون, واجهة سطر الأوامر
---
# التحقق من النماذج باستخدام Ultralytics YOLO
<img width="1024" src="https://github.com/ultralytics/assets/raw/main/yolov8/banner-integrations.png" alt="بيئة النظام البيئي والتكاملات لـ Ultralytics YOLO">
## مقدمة
يعتبر التحقق من النموذج خطوة حاسمة في خط أنابيب التعلم الآلي، حيث يتيح لك تقييم جودة النماذج المدربة. يوفر وضع الـ Val في Ultralytics YOLOv8 مجموعة أدوات ومقاييس قوية لتقييم أداء نماذج الكشف عن الكائنات الخاصة بك. يعمل هذا الدليل كمصدر كامل لفهم كيفية استخدام وضع الـ Val بشكل فعال لضمان أن نماذجك دقيقة وموثوقة.
## لماذا يوفر Ultralytics YOLO التحقق من الصحة
هنا هي الأسباب التي تجعل استخدام وضع الـ Val في YOLOv8 مفيدًا:
- **الدقة:** الحصول على مقاييس دقيقة مثل mAP50 و mAP75 و mAP50-95 لتقييم نموذجك بشكل شامل.
- **الراحة:** استخدم الميزات المدمجة التي تتذكر إعدادات التدريب، مما يبسط عملية التحقق من الصحة.
- **مرونة:** قم بالتحقق من النموذج باستخدام نفس المجموعات البيانات وأحجام الصور أو مجموعات بيانات وأحجام صور مختلفة.
- **ضبط المعلمات الفرعية:** استخدم المقاييس التحقق لضبط نموذجك لتحسين الأداء.
### الميزات الرئيسية لوضع الـ Val
هذه هي الوظائف المميزة التي يوفرها وضع الـ Val في YOLOv8:
- **الإعدادات التلقائية:** يتذكر النماذج إعدادات التدريب الخاصة بها للتحقق من الصحة بسهولة.
- **دعم متعدد المقاييس:** قيم نموذجك بناءً على مجموعة من مقاييس الدقة.
- **واجهة سطر الأوامر وواجهة برمجة Python:** اختر بين واجهة سطر الأوامر أو واجهة برمجة Python حسب تفضيلك للتحقق من الصحة.
- **توافق البيانات:** يعمل بسلاسة مع مجموعات البيانات المستخدمة خلال مرحلة التدريب بالإضافة إلى مجموعات البيانات المخصصة.
!!! Tip "نصيحة"
* تتذكر نماذج YOLOv8 إعدادات التدريب تلقائيًا، لذا يمكنك التحقق من النموذج بنفس حجم الصورة وعلى مجموعة البيانات الأصلية بسهولة باستخدام "yolo val model=yolov8n.pt" أو "model('yolov8n.pt').val()"
## أمثلة الاستخدام
تحقق من دقة النموذج المدرب YOLOv8n على مجموعة بيانات COCO128. لا يلزم تمرير أي وسيطة كوسيطة يتذكر الـ model التدريب والوسيطات كسمات النموذج. انظر الجدول أدناه للحصول على قائمة كاملة من وسيطات التصدير.
!!! Example "مثال"
=== "البايثون"
```python
from ultralytics import YOLO
# تحميل النموذج
model = YOLO('yolov8n.pt') # تحميل النموذج الرسمي
model = YOLO('path/to/best.pt') # تحميل نموذج مخصص
# التحقق من النموذج
metrics = model.val() # لا يلزم أي وسيطات، يتذكر التكوين والوسيطات
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # قائمة تحتوي على map50-95 لكل فئة
```
=== "واجهة سطر الأوامر"
```bash
yolo detect val model=yolov8n.pt # تجريب نموذج رسمي
yolo detect val model=path/to/best.pt # تجٌَرب نموذج مخصص
```
## الوسيطات
تشير إعدادات التحقق بالنسبة لنماذج YOLO إلى المعلمات الفرعية والتكوينات المختلفة المستخدمة لتقييم أداء النموذج على مجموعة بيانات التحقق. هذه الإعدادات يمكن أن تؤثر على أداء النموذج وسرعته ودقته. تشمل بعض إعدادات التحقق الشائعة في YOLO حجم الدفعة وتكرارات تنفيذ التحقق أثناء التدريب والمقاييس المستخدمة لتقييم أداء النموذج. العوامل الأخرى التي قد تؤثر على العملية الخاصة بالتحقق تشمل حجم وتركيب مجموعة البيانات التحقق والمهمة المحددة التي يتم استخدام النموذج فيها. من المهم ضبط هذه الإعدادات وتجربتها بعناية لضمان أداء جيد للنموذج على مجموعة بيانات التحقق وكشف ومنع الحالة التي يتم فيها ضبط الطراز بشكل جيد.
| مفتاح | القيمة | الوصف |
|---------------|---------|------------------------------------------------------------------------------------|
| `data` | `None` | مسار إلى ملف البيانات، على سبيل المثال coco128.yaml |
| `imgsz` | `640` | حجم الصور الداخلية باعتبارها عدد صحيح |
| `batch` | `16` | عدد الصور لكل دفعة (-1 للدفع الآلي) |
| `save_json` | `False` | حفظ النتائج في ملف JSON |
| `save_hybrid` | `False` | حفظ النسخة المختلطة للتسميات (التسميات + التنبؤات الإضافية) |
| `conf` | `0.001` | حد الثقة في كشف الكائن |
| `iou` | `0.6` | حد تداخل على المتحدة (IoU) لعملية الجمع والطرح |
| `max_det` | `300` | العدد الأقصى من الكشفات لكل صورة |
| `half` | `True` | استخدم التنصت نصف الدقة (FP16) |
| `device` | `None` | الجهاز الذي يتم تشغيله عليه، على سبيل المثال جهاز Cuda=0/1/2/3 أو جهاز=معالج (CPU) |
| `dnn` | `False` | استخدم OpenCV DNN لعملية التنصت الأمثل |
| `plots` | `False` | إظهار الرسوم البيانية أثناء التدريب |
| `rect` | `False` | تحقق صيغة *rectangular* مع تجميع كل دفعة للحصول على الحد الأدنى من التعبئة |
| `split` | `val` | اختر تقسيم البيانات للتحقق من الصحة، على سبيل المثال "val"، "test" أو "train" |
|