Link to this sectionاستكشاف مشكلات YOLO الشائعة وحلها#
يغطي هذا الدليل المشكلات الأكثر شيوعاً التي قد تواجهها عند العمل مع Ultralytics YOLO26، مصنفة حسب مكان حدوثها: التثبيت، وتدريب النموذج، والتنبؤ، والنشر. انتقل إلى الفئة التي تطابق خطأك، أو تصفح الأسئلة الشائعة (FAQ) للحصول على إجابات سريعة. يوضح كل مدخل المشكلة وحلاً عملياً يمكنك تطبيقه مباشرة.
Watch: Ultralytics YOLO26 Common Issues | Installation Errors, Model Training Issues
Link to this sectionالمشكلات الشائعة#
Link to this sectionأخطاء التثبيت#
يمكن أن تنشأ أخطاء التثبيت لأسباب مختلفة، مثل الإصدارات غير المتوافقة، أو فقدان التبعيات، أو إعدادات البيئة غير الصحيحة. أولاً، تأكد من قيامك بما يلي:
- استخدام Python 3.8 أو أحدث كما هو موصى به.
- تأكد من تثبيت الإصدار الصحيح من PyTorch (1.8 أو أحدث).
- فكر في استخدام بيئات افتراضية لتجنب التعارضات.
- اتبع دليل التثبيت الرسمي خطوة بخطوة.
بالإضافة إلى ذلك، إليك حلول لمشكلات التثبيت الشائعة.
يتم حل العديد من أخطاء الاستيراد، وGPU، والتصدير ببساطة عن طريق الترقية. قم بتشغيل pip install -U ultralytics وتأكد من توافق إصدارات PyTorch وCUDA لديك قبل إجراء تصحيح أخطاء أعمق.
Link to this sectionأخطاء الاستيراد أو مشكلات التبعية#
إذا واجهت أخطاء عند استيراد YOLO26 أو تعارضات في التبعيات، جرب هذه الخطوات:
- تثبيت جديد: البدء بتثبيت نظيف يمكن أن يحل المشكلات غير المتوقعة، خاصة بعد التحديثات التي تغير هيكلية الحزمة أو وظائفها.
- التحديث بانتظام: استخدم أحدث إصدار من المكتبة، حيث أن الإصدارات الأقدم قد لا تكون متوافقة مع التحديثات الأخيرة.
- التحقق من التبعيات: تأكد من تثبيت جميع التبعيات المطلوبة بشكل صحيح وأنها ذات إصدارات متوافقة.
- مراجعة التغييرات: إذا قمت بتثبيت إصدار أقدم، ارجع إلى الوثائق الرسمية أو سجل التغييرات لفهم أي تغييرات هيكلية كبيرة.
Link to this sectionتشغيل YOLO26 على GPU#
إذا كنت تواجه مشكلة في تشغيل YOLO26 على GPU، فكر في خطوات استكشاف الأخطاء وإصلاحها التالية:
- التحقق من توافق وتثبيت CUDA: تأكد من أن وحدة معالجة الرسومات (GPU) الخاصة بك متوافقة مع CUDA وأن CUDA مثبت بشكل صحيح. استخدم الأمر
nvidia-smiللتحقق من حالة NVIDIA GPU وإصدار CUDA. - التحقق من تكامل PyTorch و CUDA: تأكد من أن PyTorch يمكنه استخدام CUDA عن طريق تشغيل
import torch; print(torch.cuda.is_available())في طرفية Python. إذا عاد بالقيمة 'True'، فهذا يعني أن PyTorch مهيأ لاستخدام CUDA. - تفعيل البيئة: تأكد من أنك في البيئة الصحيحة حيث تم تثبيت جميع الحزم الضرورية.
- تحديث حزمك: قد لا تكون الحزم القديمة متوافقة مع GPU الخاص بك. حافظ على تحديثها.
- تهيئة البرنامج: تحقق مما إذا كان كودك يطلب استخدام GPU. يمكنك تعيين وسيط
deviceعند تشغيل التدريب أو التنبؤ (على سبيل المثال،device=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}")Link to this sectionمشكلات تدريب النموذج#
مشكلات التدريب الشائعة وحلولها مذكورة أدناه.
Link to this sectionالتحقق من إعدادات التكوين#
المشكلة: لست متأكداً مما إذا كانت إعدادات التكوين في ملف .yaml يتم تطبيقها بشكل صحيح أثناء تدريب النموذج.
الحل: يجب تطبيق إعدادات التكوين في ملف .yaml عند استخدام وظيفة model.train(). لضمان تطبيق هذه الإعدادات بشكل صحيح، اتبع الخطوات التالية:
-
تأكد من أن المسار إلى ملف تكوين
.yamlالخاص بك صحيح. -
تأكد من تمرير المسار إلى ملف
.yamlالخاص بك كوسيطdataعند استدعاءmodel.train()، كما هو موضح أدناه:model.train(data="/path/to/your/data.yaml", batch=4)
Link to this sectionتسريع التدريب باستخدام وحدات GPU متعددة#
المشكلة: التدريب بطيء على وحدة GPU واحدة، وتريد تسريع العملية باستخدام وحدات GPU متعددة.
الحل: زيادة حجم الدفعة (batch size) يمكن أن تسرع التدريب، لكن من الضروري مراعاة سعة ذاكرة 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])
Link to this sectionمعلمات المراقبة المستمرة#
المشكلة: تريد معرفة المعلمات التي يجب مراقبتها باستمرار أثناء التدريب، بخلاف الخسارة (loss).
الحل: بينما تعد الخسارة مقياساً حاسماً للمراقبة، من الضروري أيضاً تتبع مقاييس أخرى لتحسين أداء النموذج. بعض المقاييس الرئيسية التي يجب مراقبتها أثناء التدريب تشمل:
- الدقة (Precision)
- الاسترجاع (Recall)
- متوسط دقة التنبؤ (mAP)
يمكنك الوصول إلى هذه المقاييس من سجلات التدريب أو باستخدام أدوات مثل TensorBoard أو wandb للتصور. يمكن أن يساعدك تنفيذ الإيقاف المبكر بناءً على هذه المقاييس في تحقيق نتائج أفضل.
Link to this sectionأدوات لتتبع تقدم التدريب#
المشكلة: أنت تبحث عن توصيات بشأن أدوات لتتبع تقدم التدريب.
الحل: لتتبع وتصور تقدم التدريب، يمكنك التفكير في استخدام الأدوات التالية:
- TensorBoard: TensorBoard هو خيار شائع لتصور مقاييس التدريب، بما في ذلك الخسارة، والدقة، والمزيد. يمكنك دمجه مع عملية تدريب YOLO26 الخاصة بك.
- Comet: يوفر Comet مجموعة أدوات واسعة النطاق لتتبع التجارب والمقارنة بينها. فهو يسمح لك بتتبع المقاييس والمعاملات الفائقة وحتى أوزان النموذج. كما أن التكامل مع نماذج YOLO مباشر، مما يوفر لك نظرة عامة كاملة على دورة تجربتك.
- منصة Ultralytics: توفر منصة Ultralytics بيئة متخصصة لتتبع نماذج YOLO، مما يمنحك منصة شاملة لإدارة المقاييس، ومجموعات البيانات، وحتى التعاون مع فريقك. نظراً لتركيزها المصمم خصيصاً على YOLO، فإنها توفر خيارات تتبع أكثر تخصيصاً.
Link to this sectionكيفية التحقق مما إذا كان التدريب يحدث على GPU#
المشكلة: قيمة 'device' في سجلات التدريب هي 'null'، ولست متأكداً مما إذا كان التدريب يحدث على GPU.
الحل: القيمة 'null' لـ 'device' تعني عادةً أن عملية التدريب مضبوطة لتحديد 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' للسجلات والمقاييس لمراقبة تقدم التدريب بفعالية.
Link to this sectionاعتبارات رئيسية لتدريب نموذج فعال#
إليك بعض الأشياء التي يجب وضعها في الاعتبار إذا كنت تواجه مشكلات تتعلق بتدريب النموذج.
تنسيق مجموعة البيانات والتسميات
- الأهمية: يكمن أساس أي نموذج تعلم آلي في جودة وتنسيق البيانات التي يتم تدريبه عليها.
- التوصية: تأكد من أن مجموعة بياناتك المخصصة وتسمياتها المرتبطة تلتزم بالتنسيق المتوقع. من الضروري التحقق من أن التعليقات التوضيحية دقيقة وذات جودة عالية. يمكن للتعليقات التوضيحية غير الصحيحة أو دون المستوى أن تعيق عملية تعلم النموذج، مما يؤدي إلى نتائج غير متوقعة.
تقارب النموذج
- الأهمية: يضمن تحقيق تقارب النموذج أن النموذج قد تعلم بشكل كافٍ من بيانات التدريب.
- التوصية: عند تدريب نموذج 'من الصفر'، من الضروري التأكد من أن النموذج يصل إلى مستوى مرضٍ من التقارب. قد يستلزم ذلك مدة تدريب أطول، مع دورات تدريبية (epochs) أكثر، مقارنةً بما إذا كنت تقوم بضبط نموذج موجود.
معدل التعلم وحجم الدفعة
- الأهمية: تلعب هذه المعلمات الفائقة دوراً محورياً في تحديد كيفية قيام النموذج بتحديث أوزانه أثناء التدريب.
- التوصية: قم بتقييم ما إذا كان معدل التعلم وحجم الدفعة المختارين مثاليين لمجموعة بياناتك المحددة بانتظام. يمكن للمعلمات التي لا تتوافق مع خصائص مجموعة البيانات أن تعيق أداء النموذج.
توزيع الفئات
- الأهمية: يمكن أن يؤثر توزيع الفئات في مجموعة بياناتك على ميول توقع النموذج.
- التوصية: قيّم بانتظام توزيع الفئات داخل مجموعة بياناتك. إذا كان هناك خلل في توازن الفئات، فهناك خطر من أن يطور النموذج تحيزاً تجاه الفئة الأكثر شيوعاً. يمكن أن يكون هذا التحيز واضحاً في مصفوفة الارتباك (confusion matrix)، حيث قد يتوقع النموذج الفئة السائدة بشكل غالب.
التحقق المتقاطع مع الأوزان المدربة مسبقاً
- الأهمية: يمكن أن يوفر الاستفادة من الأوزان المدربة مسبقاً نقطة بداية قوية لتدريب النموذج، خاصة عندما تكون البيانات محدودة.
- التوصية: كخطوة تشخيصية، فكر في تدريب نموذجك باستخدام نفس البيانات ولكن بتهيئته باستخدام أوزان مدربة مسبقاً. إذا أنتج هذا النهج مصفوفة ارتباك جيدة التكوين، فقد يشير ذلك إلى أن نموذج 'من الصفر' قد يحتاج إلى مزيد من التدريب أو التعديلات.
Link to this sectionمشكلات تتعلق بتوقعات النموذج#
المشكلات الشائعة التي يتم مواجهتها أثناء التنبؤ بالنموذج وحلولها مذكورة أدناه.
Link to this sectionالحصول على توقعات مربع الإحاطة (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 -
اسم الملف: للحصول على اسم ملف الصورة التي تتوقع عليها، قم بالوصول إلى مسار ملف الصورة مباشرة من كائن النتيجة ضمن حلقة التوقع الخاصة بك.
Link to this sectionتصفية الكائنات في توقعات YOLO26#
المشكلة: مواجهة مشكلات تتعلق بكيفية تصفية وعرض كائنات معينة فقط في نتائج التوقع عند تشغيل YOLO26 باستخدام مكتبة Ultralytics.
الحل: لاكتشاف فئات معينة استخدم وسيط الفئات لتحديد الفئات التي تريد تضمينها في المخرجات. على سبيل المثال، لاكتشاف السيارات فقط (بافتراض أن 'السيارات' لها فهرس فئة 2):
yolo task=segment mode=predict model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2Link to this sectionفهم مقاييس الدقة في YOLO26#
المشكلة: ارتباك بشأن الفرق بين دقة المربع، ودقة القناع، ودقة مصفوفة الارتباك في YOLO26.
الحل: تقيس دقة المربع مدى دقة مربعات الإحاطة المتوقعة مقارنة بمربعات الحقيقة الأرضية الفعلية باستخدام IoU (التقاطع فوق الاتحاد) كمقياس. تقيّم دقة القناع الاتفاق بين أقنعة التجزئة المتوقعة وأقنعة الحقيقة الأرضية في تصنيف الكائنات لكل بكسل. من ناحية أخرى، تركز دقة مصفوفة الارتباك على دقة التصنيف الإجمالية عبر جميع الفئات ولا تأخذ في الاعتبار الدقة الهندسية للتوقعات. من المهم ملاحظة أن مربع الإحاطة يمكن أن يكون دقيقاً هندسياً (إيجابي حقيقي) حتى لو كان توقع الفئة خاطئاً، مما يؤدي إلى اختلافات بين دقة المربع ودقة مصفوفة الارتباك. تقيّم هذه المقاييس جوانب متميزة من أداء النموذج، مما يعكس الحاجة إلى مقاييس تقييم مختلفة في مهام متنوعة.
Link to this sectionاستخراج أبعاد الكائن في YOLO26#
المشكلة: صعوبة في استرجاع طول وارتفاع الكائنات المكتشفة في YOLO26، خاصة عند اكتشاف كائنات متعددة في صورة.
الحل: لاسترداد أبعاد مربع الإحاطة (BBox)، استخدم أولاً نموذج 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}")Link to this sectionتحديات النشر#
Link to this sectionمشكلات نشر GPU#
المشكلة: يمكن أن يؤدي نشر النماذج في بيئة متعددة GPU في بعض الأحيان إلى سلوكيات غير متوقعة مثل استخدام الذاكرة غير المتوقع، ونتائج غير متسقة عبر وحدات GPU، وما إلى ذلك.
الحل: تحقق من تهيئة GPU الافتراضية. قد تقوم بعض الأطر، مثل PyTorch، بتهيئة عمليات CUDA على GPU افتراضي قبل الانتقال إلى وحدات GPU المحددة. لتجاوز عمليات التهيئة الافتراضية غير المتوقعة، حدد GPU مباشرة أثناء النشر والتوقع. ثم، استخدم أدوات لمراقبة استخدام GPU واستهلاك الذاكرة لتحديد أي شذوذ في الوقت الفعلي. تأكد أيضاً من استخدام أحدث إصدار من الإطار أو المكتبة.
Link to this sectionمشكلات تحويل/تصدير النموذج#
المشكلة: أثناء عملية تحويل أو تصدير نماذج التعلم الآلي إلى تنسيقات أو منصات مختلفة، قد يواجه المستخدمون أخطاء أو سلوكيات غير متوقعة.
الحل: راجع التنسيقات المدعومة والخيارات الخاصة بكل تنسيق في وثائق وضع التصدير (Export mode)، ثم قم بإجراء عمليات التحقق التالية:
- التحقق من التوافق: تأكد من استخدام إصدارات من المكتبات والأطر المتوافقة مع بعضها البعض. يمكن أن تؤدي الإصدارات غير المتطابقة إلى أخطاء غير متوقعة أثناء التحويل.
- إعادة تعيين البيئة: إذا كنت تستخدم بيئة تفاعلية مثل Jupyter أو Colab، ففكر في إعادة تشغيل بيئتك بعد إجراء تغييرات أو تثبيتات كبيرة. يمكن أن تحل البداية الجديدة أحياناً المشكلات الكامنة.
- التوثيق الرسمي: ارجع دائماً إلى التوثيق الرسمي للأداة أو المكتبة التي تستخدمها للتحويل. غالباً ما يحتوي على إرشادات محددة وأفضل الممارسات لتصدير النماذج.
- دعم المجتمع: تحقق من المستودع الرسمي للمكتبة أو الإطار للحصول على مشكلات مماثلة أبلغ عنها مستخدمون آخرون. قد يكون المشرفون أو المجتمع قد قدموا حلولاً أو بدائل في سلاسل المناقشة.
- التحديث بانتظام: تأكد من استخدام أحدث إصدار من الأداة أو المكتبة. غالباً ما يصدر المطورون تحديثات تعمل على إصلاح الأخطاء المعروفة أو تحسين الوظائف.
- الاختبار تدريجياً: قبل إجراء تحويل كامل، اختبر العملية بنموذج أو مجموعة بيانات أصغر لتحديد المشكلات المحتملة في وقت مبكر.
Link to this sectionالمجتمع والدعم#
احصل على المساعدة وشارك الحلول من خلال هذه القنوات والموارد.
Link to this sectionالمنتديات والقنوات للحصول على المساعدة#
GitHub Issues: يحتوي مستودع YOLO26 على GitHub على علامة تبويب القضايا (Issues tab) حيث يمكنك طرح الأسئلة، والإبلاغ عن الأخطاء، واقتراح ميزات جديدة. المجتمع والمطورون نشطون هنا، وهو مكان رائع للحصول على المساعدة بشأن مشكلات محددة.
خادم Ultralytics Discord: تمتلك Ultralytics خادم Discord حيث يمكنك التفاعل مع المستخدمين الآخرين والمطورين.
Link to this sectionالوثائق والموارد الرسمية#
وثائق Ultralytics YOLO26: توفر الوثائق الرسمية نظرة شاملة على YOLO26، إلى جانب أدلة حول التثبيت والاستخدام واستكشاف الأخطاء وإصلاحها.
Link to this sectionالخلاصة#
تعود معظم مشكلات YOLO26 إلى عدد قليل من الأسباب: عدم تطابق الإصدارات، وتنسيق مجموعة البيانات، وتكوين GPU. عندما لا يتم تناول خطأ ما هنا، ابحث في علامة التبويب GitHub Issues أو اسأل على خادم Discord — فمن المحتمل أن يكون شخص ما قد حلها بالفعل. لمشكلات التدريب الأعمق، راجع دليل نصائح تدريب النموذج للحصول على نصائح عملية حول تحقيق نتائج أفضل في مشاريع الرؤية الحاسوبية الخاصة بك.
Link to this sectionالأسئلة الشائعة#
Link to this sectionكيف يمكنني حل أخطاء التثبيت في YOLO26؟#
غالبًا ما تكون أخطاء التثبيت ناتجة عن مشكلات التوافق أو فقدان التبعيات. تأكد من استخدام Python 3.8 أو أحدث وتثبيت PyTorch 1.8 أو أحدث. من المفيد استخدام البيئات الافتراضية لتجنب التعارضات. للحصول على دليل تثبيت خطوة بخطوة، اتبع دليل التثبيت الرسمي الخاص بنا. إذا واجهت أخطاء في الاستيراد، فحاول إجراء تثبيت جديد أو تحديث المكتبة إلى أحدث إصدار.
Link to this sectionلماذا يكون تدريب نموذج YOLO26 الخاص بي بطيئًا على وحدة معالجة رسومات (GPU) واحدة؟#
قد يكون التدريب على وحدة معالجة رسومات (GPU) واحدة بطيئًا بسبب أحجام الدفعات الكبيرة أو عدم كفاية الذاكرة. لتسريع التدريب، استخدم وحدات معالجة رسومات متعددة. تأكد من أن نظامك يحتوي على وحدات معالجة رسومات متعددة متاحة واضبط وسيطة device، على سبيل المثال device=[0,1,2,3]. قم بزيادة حجم الدفعة وفقًا لذلك للاستفادة الكاملة من وحدات معالجة الرسومات دون تجاوز حدود الذاكرة. مثال على الأمر:
model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])Link to this sectionكيف يمكنني التأكد من أن نموذج YOLO26 الخاص بي يتدرب على وحدة معالجة الرسومات (GPU)؟#
إذا أظهرت قيمة 'device' 'null' في سجلات التدريب، فهذا يعني عموماً أن عملية التدريب مضبوطة لتحديد GPU متاح تلقائياً. لتحديد GPU معين بوضوح، مرر وسيط device عند بدء التدريب، على سبيل المثال yolo train data=path/to/data.yaml device=0 لوحدة GPU الأولى. استشر أمر nvidia-smi للتأكد من إعداد CUDA الخاص بك.
Link to this sectionكيف يمكنني مراقبة وتتبع تقدم تدريب نموذج YOLO26 الخاص بي؟#
يمكن إدارة تتبع وتصور تقدم التدريب بكفاءة من خلال أدوات مثل TensorBoard وComet ومنصة Ultralytics. تسمح لك هذه الأدوات بتسجيل وتصور المقاييس مثل الخسارة، والدقة (precision)، والاسترجاع (recall)، وmAP. كما يمكن أن يساعد تنفيذ الإيقاف المبكر بناءً على هذه المقاييس في تحقيق نتائج تدريب أفضل.
Link to this sectionماذا علي أن أفعل إذا كان YOLO26 لا يتعرف على تنسيق مجموعة البيانات الخاص بي؟#
تأكد من أن مجموعة البيانات والتسميات تتوافق مع التنسيق المتوقع. تحقق من أن التعليقات التوضيحية دقيقة وعالية الجودة. إذا واجهت أي مشكلات، راجع دليل جمع البيانات والتعليق التوضيحي للحصول على أفضل الممارسات. لمزيد من التوجيهات الخاصة بمجموعة البيانات، تحقق من قسم مجموعات البيانات (Datasets) في الوثائق.