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، مثل GTX 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 لعرضها بصرياً. يساعد الإيقاف المبكر باستخدام وسيطة التدريب patience (والقيمة الافتراضية هي 100 حقبة دون تحسن في التحقق) على تجنب إهدار الحقب وفرط التكيّف.

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

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

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

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

    بدلاً من ذلك، استخدم السمتين boxes.xyxyn أو boxes.xywhn لكل نتيجة، إذ تعرضان بالفعل إحداثيات مطبّعة.

  • اسم الملف: للحصول على اسم ملف الصورة التي تجري التنبؤ عليها، اقرأ مسار ملف الصورة من السمة path لكل كائن نتيجة (مثل result.path) ضمن حلقة التنبؤ.

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

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

الحل: لاكتشاف فئات محددة، استخدم الوسيطة classes لتحديد الفئات التي تريد تضمينها في المخرجات. مثلاً، لاكتشاف السيارات فقط (فهرس الفئة 2 في COCO):

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

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

التعليقات