Ultralytics YOLO27:

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

YOLO common training and deployment issues

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



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

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

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

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

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

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

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

تُحل العديد من أخطاء الاستيراد ووحدة معالجة الرسومات والتصدير ببساطة عبر الترقية. شغّل 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. عند استخدام 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 متعددة.

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

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

  • عيّن الوسيط device إلى قائمة بمؤشرات GPU، مثل 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])

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

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

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

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

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

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

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

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

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

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

الحل: تعني قيمة 'device' التي تساوي 'null' عادةً أن عملية التدريب مضبوطة لاختيار GPU متاحة تلقائيًا، وهو السلوك الافتراضي. للتدريب على GPU محددة، عيّن الوسيط 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' للاطلاع على السجلات والمقاييس ومتابعة تقدّم التدريب بفاعلية.

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

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

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

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

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

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

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

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

توزيع الفئات

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

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

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

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

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

الحصول على تنبؤات الصناديق المحيطة باستخدام نموذج 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.

الحل: لاكتشاف فئات محددة، استخدم وسيط 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 على علامة تبويب المشكلات (Issues tab) حيث يمكنك طرح الأسئلة والإبلاغ عن الأخطاء واقترح ميزات جديدة. المجتمع والمحافظون نشطون هنا، وهي مكان رائع للحصول على المساعدة في حل مشكلات محددة.

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

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

التعليقات