Ultralytics YOLO27:
Get Started

استكشاف أخطاء YOLO الشائعة وإصلاحها#

YOLO common training and deployment issues

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



شاهد: المشكلات الشائعة في Ultralytics YOLO26 | أخطاء التثبيت ومشكلات تدريب النماذج

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

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

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

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

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

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

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

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

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

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

تشغيل YOLO26 على GPU#

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

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

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

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، ومرّر .yaml مخصصًا لإعدادات التدريب (مثل epochs أو lr0) بوصفه وسيط cfg. وتكون للوسائط التي تُمرّر مباشرةً إلى model.train() الأولوية على كليهما:

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

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

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

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

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

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

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

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

    # ⁨عدّل حجم الدفعة والإعدادات الأخرى حسب الحاجة لتحسين سرعة التدريب⁩
    model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])

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

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

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

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

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

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

الحل: لتتبع تقدم التدريب وعرضه مرئيًا، يمكنك استخدام الأدوات التالية:

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

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

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

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

from ultralytics import YOLO

# ⁨تحميل نموذج⁩
model = YOLO("yolo26n.pt")

# ⁨استخدم GPU 0؛ device=[0, 1] لوحدات GPU متعددة، وdevice="cpu" لوحدة CPU⁩
model.train(data="path/to/data.yaml", device=0)

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

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

إليك بعض النقاط التي ينبغي مراعاتها إذا واجهت مشكلات متعلقة بتدريب النموذج.

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

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

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

  • الأهمية: يضمن تحقيق تقارب النموذج أنه تعلّم ما يكفي من بيانات التدريب.
  • التوصية: عند تدريب نموذج «من الصفر»، من الضروري التأكد من بلوغه مستوى مُرضيًا من التقارب. وقد يتطلب ذلك مدة تدريب أطول وعددًا أكبر من الحقب مقارنةً بضبط نموذج مدرّب مسبقًا.

معدل التعلّم وحجم الدفعة

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

توزيع الفئات

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

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

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

فيما يلي عرض للمشكلات الشائعة التي تواجه تنبؤات النموذج وطرق حلها.

الحصول على تنبؤات مربعات الإحاطة باستخدام نموذج YOLO26 المخصص#

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

الحل:

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

    # ⁨تحويل الإحداثيات المطلقة إلى إحداثيات نسبية⁩
    x1 = x1 / 640  # ⁨قسمة إحداثيات x على عرض الصورة⁩
    x2 = x2 / 640
    y1 = y1 / 640  # ⁨قسمة إحداثيات y على ارتفاع الصورة⁩
    y2 = y2 / 640
  • اسم الملف: للحصول على اسم ملف الصورة التي تجري التنبؤ عليها، اقرأ مسار ملف الصورة من السمة path لكل كائن نتيجة (مثل result.path) ضمن حلقة التنبؤ.

تصفية الكائنات في تنبؤات YOLO26#

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

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

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

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

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

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

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

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

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

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 والذاكرة، بهدف تحديد أي حالات شاذة في الوقت الفعلي. واحرص أيضًا على استخدام أحدث إصدار من إطار العمل أو المكتبة.

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

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

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

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

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

احصل على المساعدة وشارك الحلول عبر القنوات والموارد التالية.

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

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

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

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

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

الخلاصة#

ترجع معظم مشكلات YOLO26 إلى بضعة أسباب شائعة: عدم تطابق الإصدارات، وتنسيق مجموعة البيانات، وإعداد GPU. إذا لم يتناول هذا الدليل خطأً ما، فابحث في علامة تبويب المشكلات على GitHub أو اطرح سؤالك في خادم Discord — فمن المحتمل أن يكون أحدهم قد حل المشكلة بالفعل. ولمعالجة مشكلات التدريب الأكثر تعقيدًا، راجع دليل نصائح تدريب النماذج للاطلاع على إرشادات عملية لتحسين نتائج مشاريع الرؤية الحاسوبية.

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

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

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

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

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

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

التعليقات