رؤية YOLO لعام 2026:

استكشاف مشكلات YOLO الشائعة وحلها#

YOLO common training and deployment issues

يقدم هذا الدليل المشاكل الأكثر شيوعاً التي تواجهها عند العمل مع Ultralytics YOLO26، مصنفة حسب مكان حدوثها: installation، model training، prediction، وdeployment. انتقل إلى الفئة التي تطابق خطأك، أو تصفح FAQ للحصول على إجابات سريعة. يوضح كل مدخل المشكلة وحلاً عملياً يمكنك تطبيقه مباشرة.



Watch: Ultralytics YOLO26 Common Issues | Installation Errors, Model Training Issues

المشكلات الشائعة#

أخطاء التثبيت#

يمكن أن تنشأ أخطاء التثبيت لأسباب مختلفة، مثل الإصدارات غير المتوافقة، أو فقدان التبعيات، أو إعدادات البيئة غير الصحيحة. أولاً، تأكد من قيامك بما يلي:

  • استخدام Python 3.8 أو أحدث كما هو موصى به.
  • تأكد من تثبيت الإصدار الصحيح من PyTorch (الإصدار 1.8 أو أحدث).
  • فكر في استخدام بيئات افتراضية لتجنب التعارضات.
  • اتبع official installation guide خطوة بخطوة.

بالإضافة إلى ذلك، إليك حلول لمشكلات التثبيت الشائعة.

حافظ على تحديث Ultralytics وتبعياته

يتم إصلاح العديد من أخطاء الاستيراد، ووحدة معالجة الرسومات (GPU)، والتصدير ببساطة عن طريق التحديث. قم بتشغيل pip install -U ultralytics وتأكد من توافق إصدارات PyTorch و CUDA قبل إجراء تصحيح أخطاء أعمق.

أخطاء الاستيراد أو مشكلات التبعية#

إذا واجهت أخطاء عند استيراد YOLO26 أو تعارضات في التبعيات، جرب هذه الخطوات:

  • تثبيت جديد: البدء بتثبيت نظيف يمكن أن يحل المشكلات غير المتوقعة، خاصة بعد التحديثات التي تغير هيكلية الحزمة أو وظائفها.
  • التحديث بانتظام: استخدم أحدث إصدار من المكتبة، حيث أن الإصدارات الأقدم قد لا تكون متوافقة مع التحديثات الأخيرة.
  • التحقق من التبعيات: تأكد من تثبيت جميع التبعيات المطلوبة بشكل صحيح وأنها ذات إصدارات متوافقة.
  • مراجعة التغييرات: إذا قمت بتثبيت إصدار أقدم، ارجع إلى الوثائق الرسمية أو سجل التغييرات لفهم أي تغييرات هيكلية كبيرة.

تشغيل YOLO26 على GPU#

إذا كنت تواجه مشكلة في تشغيل YOLO26 على GPU، فكر في خطوات استكشاف الأخطاء وإصلاحها التالية:

  • التحقق من توافق وتثبيت CUDA: تأكد من أن وحدة معالجة الرسومات الخاصة بك متوافقة مع CUDA وأن CUDA مثبتة بشكل صحيح. استخدم الأمر nvidia-smi للتحقق من حالة وحدة معالجة الرسومات NVIDIA وإصدار CUDA.
  • التحقق من تكامل PyTorch و CUDA: تأكد من أن PyTorch يمكنها استخدام CUDA عن طريق تشغيل import torch; print(torch.cuda.is_available()) في محطة Python. إذا أرجعت 'True'، فهذا يعني أن PyTorch مُعدة لاستخدام CUDA.
  • تفعيل البيئة: تأكد من أنك في البيئة الصحيحة حيث تم تثبيت جميع الحزم الضرورية.
  • تحديث حزمك: قد لا تكون الحزم القديمة متوافقة مع GPU الخاص بك. حافظ على تحديثها.
  • تكوين البرنامج: تحقق مما إذا كان الكود الخاص بك يطلب استخدام وحدة معالجة الرسومات. يمكنك تعيين الوسيطة device عند تشغيل التدريب أو التنبؤ (على سبيل المثال، device=0).
وحدات GPU الأقدم وcuDNN 9.11.0+

تم إيقاف دعم بنى GPU الأقدم من Turing — أي ذات قدرة حوسبة (SM) أقل من 7.5، مثل 1080 Ti — في cuDNN 9.11.0. على وحدة GPU أقدم، قد تحتاج إلى إصدار من PyTorch مجمع مقابل إصدار CUDA/cuDNN أقدم. تحقق من إعداداتك باستخدام:

import torch

cap = torch.cuda.get_device_capability(0) if torch.cuda.is_available() else (0, 0)
cudnn = torch.backends.cudnn.version() or 0
ok = "not compatible" if cudnn >= 91100 and (cap[0] < 7 or (cap[0] == 7 and cap[1] < 5)) else "should be ok"
print(f"Compute capability: SM {cap[0]}.{cap[1]}, cuDNN: {cudnn} => {ok}")

مشكلات تدريب النموذج#

مشكلات التدريب الشائعة وحلولها مذكورة أدناه.

التحقق من إعدادات التكوين#

المشكلة: لست متأكداً مما إذا كانت إعدادات التكوين في ملف .yaml يتم تطبيقها بشكل صحيح أثناء تدريب النموذج.

الحل: يجب تطبيق إعدادات التكوين في ملف .yaml عند استخدام الدالة model.train(). لضمان تطبيق هذه الإعدادات بشكل صحيح، اتبع الخطوات التالية:

  • تأكد من أن مسار ملف التكوين .yaml صحيح.

  • تأكد من تمرير مسار ملف .yaml كوزيطة data عند استدعاء model.train()، كما هو موضح أدناه:

    model.train(data="/path/to/your/data.yaml", batch=4)

تسريع التدريب باستخدام وحدات GPU متعددة#

المشكلة: التدريب بطيء على وحدة GPU واحدة، وتريد تسريع العملية باستخدام وحدات GPU متعددة.

الحل: يمكن أن تؤدي زيادة batch size إلى تسريع التدريب، ولكن من الضروري مراعاة سعة الذاكرة لوحدة معالجة الرسومات. لتسريع التدريب باستخدام multiple GPUs، اتبع الخطوات التالية:

  • تأكد من توفر وحدات GPU متعددة.

  • قم بتعيين الوسيطة device إلى قائمة من مؤشرات وحدات معالجة الرسومات، على سبيل المثال، device=[0,1,2,3].

  • قم بزيادة حجم الدفعة وفقاً لذلك للاستفادة الكاملة من وحدات GPU المتعددة دون تجاوز حدود الذاكرة.

  • قم بتعديل أمر التدريب الخاص بك لاستخدام وحدات GPU متعددة:

    # Adjust the batch size and other settings as needed to optimize training speed
    model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])

معلمات المراقبة المستمرة#

المشكلة: تريد معرفة المعلمات التي يجب مراقبتها باستمرار أثناء التدريب، بخلاف الخسارة (loss).

الحل: بينما تعد الخسارة مقياساً حاسماً للمراقبة، من الضروري أيضاً تتبع مقاييس أخرى لتحسين أداء النموذج. بعض المقاييس الرئيسية التي يجب مراقبتها أثناء التدريب تشمل:

يمكنك الوصول إلى هذه المقاييس من سجلات التدريب أو باستخدام أدوات مثل TensorBoard أو wandb للتصور. يمكن أن يساعدك تنفيذ الإيقاف المبكر بناءً على هذه المقاييس في تحقيق نتائج أفضل.

أدوات لتتبع تقدم التدريب#

المشكلة: أنت تبحث عن توصيات بشأن أدوات لتتبع تقدم التدريب.

الحل: لتتبع وتصور تقدم التدريب، يمكنك التفكير في استخدام الأدوات التالية:

  • TensorBoard: يُعد TensorBoard خياراً شائعاً لتصور مقاييس التدريب، بما في ذلك الخسارة، وaccuracy، والمزيد. يمكنك دمجه مع عملية تدريب YOLO26 الخاصة بك.
  • Comet: يوفّر Comet مجموعة أدوات شاملة لتتبع التجارب ومقارنتها. فهو يسمح لك بتتبع المقاييس والمعلمات الفائقة وحتى أوزان النماذج. كما أن التكامل مع نماذج YOLO بسيط للغاية، مما يمنحك نظرة عامة كاملة على دورة تجربتك.
  • Ultralytics Platform: توفر Ultralytics Platform بيئة مخصصة لتتبع نماذج YOLO، مما يمنحك منصة شاملة لإدارة المقاييس ومجموعات البيانات وحتى التعاون مع فريقك. نظراً لتركيزها المخصص على YOLO، فإنها توفر خيارات تتبع أكثر تخصيصاً.

كيفية التحقق مما إذا كان التدريب يحدث على GPU#

المشكلة: قيمة 'device' في سجلات التدريب هي 'null'، ولست متأكداً مما إذا كان التدريب يحدث على GPU.

الحل: تعني قيمة 'device' التي تكون 'null' عادةً أن عملية التدريب مضبوطة على تحديد وحدة معالجة رسومات متاحة تلقائياً، وهو السلوك الافتراضي. للتدريب على وحدة معالجة رسومات محددة، قم بتعيين الوسيطة device عند بدء التدريب. device هي وسيطة تدريب، لذا فإن تعيينها في .yaml لمجموعة البيانات الخاصة بك لن يكون له أي تأثير:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Use GPU 0; device=[0, 1] for multiple GPUs, device="cpu" for CPU
model.train(data="path/to/data.yaml", device=0)

راقب مجلد 'runs' للسجلات والمقاييس لمراقبة تقدم التدريب بفعالية.

اعتبارات رئيسية لتدريب نموذج فعال#

إليك بعض الأشياء التي يجب وضعها في الاعتبار إذا كنت تواجه مشكلات تتعلق بتدريب النموذج.

تنسيق مجموعة البيانات والتسميات

  • الأهمية: يكمن أساس أي نموذج machine learning في جودة وتنسيق البيانات التي يتم تدريبه عليها.
  • التوصية: تأكد من أن مجموعة بياناتك المخصصة وتسمياتها المرتبطة تلتزم بالتنسيق المتوقع. من الضروري التحقق من أن التعليقات التوضيحية دقيقة وذات جودة عالية. يمكن للتعليقات التوضيحية غير الصحيحة أو دون المستوى أن تعيق عملية تعلم النموذج، مما يؤدي إلى نتائج غير متوقعة.

تقارب النموذج

  • الأهمية: يضمن تحقيق تقارب النموذج أن النموذج قد تعلم بشكل كافٍ من training data.
  • التوصية: عند تدريب نموذج 'من الصفر'، من الضروري التأكد من وصول النموذج إلى مستوى مرضٍ من التقارب. قد يتطلب ذلك مدة تدريب أطول، مع epochs أكثر، مقارنة بما إذا كنت تقوم بضبط نموذج موجود.

Learning Rate و Batch Size

  • الأهمية: تلعب هذه المعلمات الفائقة دوراً محورياً في تحديد كيفية قيام النموذج بتحديث أوزانه أثناء التدريب.
  • التوصية: قم بتقييم ما إذا كان معدل التعلم وحجم الدفعة المختارين مثاليين لمجموعة بياناتك المحددة بانتظام. يمكن للمعلمات التي لا تتوافق مع خصائص مجموعة البيانات أن تعيق أداء النموذج.

توزيع الفئات

  • الأهمية: يمكن أن يؤثر توزيع الفئات في مجموعة بياناتك على ميول توقع النموذج.
  • التوصية: قيّم بانتظام توزيع الفئات داخل مجموعة بياناتك. إذا كان هناك خلل في توازن الفئات، فهناك خطر من أن يطور النموذج تحيزاً تجاه الفئة الأكثر شيوعاً. يمكن أن يكون هذا التحيز واضحاً في مصفوفة الارتباك (confusion matrix)، حيث قد يتوقع النموذج الفئة السائدة بشكل غالب.

التحقق المتقاطع مع الأوزان المدربة مسبقاً

  • الأهمية: يمكن أن يوفر الاستفادة من الأوزان المدربة مسبقاً نقطة بداية قوية لتدريب النموذج، خاصة عندما تكون البيانات محدودة.
  • التوصية: كخطوة تشخيصية، فكر في تدريب نموذجك باستخدام نفس البيانات ولكن بتهيئته باستخدام أوزان مدربة مسبقاً. إذا أنتج هذا النهج مصفوفة ارتباك جيدة التكوين، فقد يشير ذلك إلى أن نموذج 'من الصفر' قد يحتاج إلى مزيد من التدريب أو التعديلات.

مشكلات تتعلق بتوقعات النموذج#

المشكلات الشائعة التي يتم مواجهتها أثناء التنبؤ بالنموذج وحلولها مذكورة أدناه.

الحصول على توقعات مربع الإحاطة (Bounding Box) باستخدام نموذج YOLO26 المخصص الخاص بك#

المشكلة: عند تشغيل التوقعات باستخدام نموذج YOLO26 مخصص، توجد تحديات تتعلق بتنسيق وتصور إحداثيات مربع الإحاطة.

الحل:

  • تنسيق الإحداثيات: يوفر YOLO26 إحداثيات مربع الإحاطة بقيم بكسل مطلقة. لتحويلها إلى إحداثيات نسبية (تتراوح من 0 إلى 1)، تحتاج إلى القسمة على أبعاد الصورة. على سبيل المثال، لنفترض أن حجم صورتك هو 640x640. عندها ستقوم بما يلي:

    # Convert absolute coordinates to relative coordinates
    x1 = x1 / 640  # Divide x-coordinates by image width
    x2 = x2 / 640
    y1 = y1 / 640  # Divide y-coordinates by image height
    y2 = y2 / 640
  • اسم الملف: للحصول على اسم ملف الصورة التي تتوقع عليها، قم بالوصول إلى مسار ملف الصورة مباشرة من كائن النتيجة ضمن حلقة التوقع الخاصة بك.

تصفية الكائنات في توقعات YOLO26#

المشكلة: مواجهة مشكلات تتعلق بكيفية تصفية وعرض كائنات معينة فقط في نتائج التوقع عند تشغيل YOLO26 باستخدام مكتبة Ultralytics.

الحل: لاكتشاف فئات معينة استخدم وسيط الفئات لتحديد الفئات التي تريد تضمينها في المخرجات. على سبيل المثال، لاكتشاف السيارات فقط (بافتراض أن 'السيارات' لها فهرس فئة 2):

yolo task=segment mode=predict model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2

فهم مقاييس الدقة في YOLO26#

المشكلة: الارتباك بشأن الفرق بين دقة المربع، ودقة القناع، ودقة confusion matrix في YOLO26.

الحل: تقيس دقة المربع دقة مربعات الإحاطة المتنبأ بها مقارنة بمربعات الحقيقة الأرضية الفعلية باستخدام IoU (التقاطع على الاتحاد) كمقياس. تققيم دقة القناع التوافق بين أقنعة التجزئة المتنبأ بها وأقنعة الحقيقة الأرضية في تصنيف العناصر على مستوى البكسل. من ناحية أخرى، تركز دقة مصفوفة الارتباك على دقة التصنيف الإجمالية عبر جميع الفئات ولا تأخذ في الاعتبار الدقة الهندسية للتنبؤات. من المهم ملاحظة أن bounding box يمكن أن يكون دقيقاً هندسياً (إيجابياً صحيحاً) حتى لو كان التنبؤ بالفئة خاطئاً، مما يؤدي إلى اختلافات بين دقة المربع ودقة مصفوفة الارتباك. تُقيّم هذه المقاييس جوانب مميزة لأداء النموذج، مما يعكس الحاجة إلى مقاييس تقييم مختلفة في المهام المتنوعة.

استخراج أبعاد الكائن في YOLO26#

المشكلة: صعوبة في استرجاع طول وارتفاع الكائنات المكتشفة في YOLO26، خاصة عند اكتشاف كائنات متعددة في صورة.

الحل: لاسترداد أبعاد مربع الإحاطة، استخدم أولاً نموذج Ultralytics YOLO26 لـ predict objects في الصورة. بعد ذلك، استخرج معلومات العرض والارتفاع لمربعات الإحاطة من نتائج التنبؤ.

from ultralytics import YOLO

# Load a pretrained YOLO26 model
model = YOLO("yolo26n.pt")

# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"

# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.25)

# Extract bounding box dimensions
boxes = results[0].boxes.xywh.cpu()
for box in boxes:
    x, y, w, h = box
    print(f"Width of Box: {w}, Height of Box: {h}")

تحديات النشر#

مشكلات نشر GPU#

المشكلة: يمكن أن يؤدي نشر النماذج في بيئة متعددة GPU في بعض الأحيان إلى سلوكيات غير متوقعة مثل استخدام الذاكرة غير المتوقع، ونتائج غير متسقة عبر وحدات GPU، وما إلى ذلك.

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

مشكلات تحويل/تصدير النموذج#

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

الحل: راجع التنسيقات المدعومة والخيارات الخاصة بكل تنسيق في وثائق Export mode، ثم قم بالعمل من خلال عمليات التحقق هذه:

  • التحقق من التوافق: تأكد من استخدام إصدارات من المكتبات والأطر المتوافقة مع بعضها البعض. يمكن أن تؤدي الإصدارات غير المتطابقة إلى أخطاء غير متوقعة أثناء التحويل.
  • إعادة تعيين البيئة: إذا كنت تستخدم بيئة تفاعلية مثل Jupyter أو Colab، ففكر في إعادة تشغيل بيئتك بعد إجراء تغييرات أو تثبيتات كبيرة. يمكن أن تحل البداية الجديدة أحياناً المشكلات الكامنة.
  • التوثيق الرسمي: ارجع دائماً إلى التوثيق الرسمي للأداة أو المكتبة التي تستخدمها للتحويل. غالباً ما يحتوي على إرشادات محددة وأفضل الممارسات لتصدير النماذج.
  • دعم المجتمع: تحقق من المستودع الرسمي للمكتبة أو الإطار للحصول على مشكلات مماثلة أبلغ عنها مستخدمون آخرون. قد يكون المشرفون أو المجتمع قد قدموا حلولاً أو بدائل في سلاسل المناقشة.
  • التحديث بانتظام: تأكد من استخدام أحدث إصدار من الأداة أو المكتبة. غالباً ما يصدر المطورون تحديثات تعمل على إصلاح الأخطاء المعروفة أو تحسين الوظائف.
  • الاختبار تدريجياً: قبل إجراء تحويل كامل، اختبر العملية بنموذج أو مجموعة بيانات أصغر لتحديد المشكلات المحتملة في وقت مبكر.

المجتمع والدعم#

احصل على المساعدة وشارك الحلول من خلال هذه القنوات والموارد.

المنتديات والقنوات للحصول على المساعدة#

مشاكل GitHub: يحتوي مستودع YOLO26 على GitHub على Issues tab حيث يمكنك طرح الأسئلة، والإبلاغ عن الأخطاء، واقتراح ميزات جديدة. المجتمع والمشرفون نشطون هنا، وهو مكان رائع للحصول على المساعدة في مشاكل محددة.

خادم Ultralytics Discord: تمتلك Ultralytics Discord server حيث يمكنك التفاعل مع المستخدمين الآخرين والمطورين.

الوثائق والموارد الرسمية#

Ultralytics YOLO26 Docs: توفر official documentation نظرة عامة شاملة على YOLO26، إلى جانب أدلة حول التثبيت والاستخدام وتصحيح الأخطاء.

الخلاصة#

تعود معظم مشكلات YOLO26 إلى عدد قليل من الأسباب: عدم تطابق الإصدارات، وتنسيق مجموعة البيانات، وتكوين وحدة معالجة الرسومات. عندما لا يتم تناول خطأ ما هنا، ابحث في علامة التبويب GitHub Issues أو اسأل على Discord server - فهناك احتمال كبير أن يكون شخص ما قد حلها بالفعل. لمزيد من المشكلات العميقة في training، راجع دليل Model Training Tips للحصول على مشورة عملية حول تحقيق نتائج أفضل مع مشاريع computer vision الخاصة بك.

الأسئلة الشائعة#

  • غالباً ما تكون أخطاء التثبيت ناتجة عن مشكلات في التوافق أو تبعيات مفقودة. تأكد من استخدام Python 3.8 أو أحدث وتثبيت PyTorch 1.8 أو أحدث. من المفيد استخدام بيئات افتراضية لتجنب التعارضات. للحصول على دليل تثبيت خطوة بخطوة، اتبع official installation guide. إذا واجهت أخطاء في الاستيراد، جرب تثبيتاً جديداً أو قم بتحديث المكتبة إلى أحدث إصدار.

  • قد يكون التدريب على وحدة معالجة رسومات واحدة بطيئاً بسبب أحجام الدفعات الكبيرة أو الذاكرة غير الكافية. لتسريع التدريب، استخدم وحدات معالجة رسومات متعددة. تأكد من أن نظامك يحتوي على وحدات معالجة رسومات متعددة متاحة وقم بتعيين الوسيطة device، على سبيل المثال، device=[0,1,2,3]. قم زيادة حجم الدفعة وفقاً لذلك للاستفادة الكاملة من وحدات معالجة الرسومات دون تجاوز حدود الذاكرة. أمر مثال:

    model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])
  • إذا ظهرت قيمة 'device' على شكل 'null' في سجلات التدريب، فهذا يعني عموماً أن عملية التدريب مضبوطة على تحديد وحدة معالجة رسومات متاحة تلقائياً. لتعيين وحدة معالجة رسومات محددة صراحةً، قم بتمرير الوسيطة device عند بدء التدريب، على سبيل المثال yolo train data=path/to/data.yaml device=0 لوحدة معالجة الرسومات الأولى. راجع الأمر nvidia-smi للتأكد من إعداد CUDA الخاص بك.

  • يمكن إدارة تتبع وتصور تقدم التدريب بكفاءة من خلال أدوات مثل TensorBoard، وComet، وUltralytics Platform. تتيح لك هذه الأدوات تسجيل وتصور المقاييس مثل الخسارة، وprecision، وrecall، وmAP. يمكن أن يساعد تنفيذ early stopping استناداً إلى هذه المقاييس أيضاً في تحقيق نتائج تدريب أفضل.

  • تأكد من أن مجموعة البيانات والتسميات الخاصة بك تتوافق مع التنسيق المتوقع. تحقق من أن التعليقات التوضيحية دقيقة وعالية الجودة. إذا واجهت أي مشكلات، فارجع إلى دليل Data Collection and Annotation للحصول على أفضل الممارسات. لمزيد من الإرشادات الخاصة بمجموعة البيانات، راجع قسم Datasets في الوثائق.

التعليقات