استكشاف المشاكل الشائعة YOLO وإصلاحها
مقدمة
يُعد هذا الدليل بمثابة أداة مساعدة شاملة لاستكشاف المشكلات الشائعة التي تواجهها أثناء العمل مع YOLO11 في مشاريعك Ultralytics . يمكن أن يكون التنقل عبر هذه المشكلات أمرًا سهلاً مع التوجيه الصحيح، مما يضمن بقاء مشاريعك على المسار الصحيح دون تأخيرات غير ضرورية.
شاهد: Ultralytics YOLO11 المشكلات الشائعة | أخطاء في التثبيت، مشكلات في تدريب النموذج
المشكلات الشائعة
أخطاء التثبيت
يمكن أن تنشأ أخطاء التثبيت لأسباب مختلفة، مثل الإصدارات غير المتوافقة أو التبعيات المفقودة أو إعدادات البيئة غير الصحيحة. أولاً، تحقق أولاً للتأكد من قيامك بما يلي:
-
أنت تستخدم Python 3.8 أو أحدث على النحو الموصى به.
-
تأكد من أن لديك الإصدار الصحيح من PyTorch (1.8 أو أحدث) مثبتًا.
-
ضع في اعتبارك استخدام البيئات الافتراضية لتجنب التعارضات.
-
اتبع دليل التثبيت الرسمي خطوة بخطوة.
بالإضافة إلى ذلك، فيما يلي بعض مشكلات التثبيت الشائعة التي واجهها المستخدمون، بالإضافة إلى حلولها:
-
أخطاء في الاستيراد أو مشكلات في التبعيات - إذا كنت تواجه أخطاء أثناء استيراد YOLO11 ، أو كنت تواجه مشكلات تتعلق بالتبعيات، ففكر في خطوات استكشاف الأخطاء وإصلاحها التالية:
-
تثبيت جديد: في بعض الأحيان، يمكن أن يؤدي البدء بتثبيت جديد إلى حل مشكلات غير متوقعة. خاصة مع مكتبات مثل Ultralytics ، حيث قد تؤدي التحديثات إلى إدخال تغييرات على بنية شجرة الملفات أو وظائفها.
-
قم بالتحديث بانتظام: تأكد من أنك تستخدم أحدث إصدار من المكتبة. قد لا تكون الإصدارات القديمة متوافقة مع التحديثات الأخيرة، مما يؤدي إلى تعارضات أو مشكلات محتملة.
-
تحقق من التبعيات: تحقق من أن جميع التبعيات المطلوبة مثبتة بشكل صحيح وأنها من الإصدارات المتوافقة.
-
مراجعة التغييرات: إذا قمت باستنساخ أو تثبيت إصدار أقدم في البداية، فكن على علم بأن التحديثات المهمة قد تؤثر على بنية المكتبة أو وظائفها. ارجع دائمًا إلى الوثائق الرسمية أو سجلات التغيير لفهم أي تغييرات كبيرة.
-
تذكَّر أن الحفاظ على تحديث مكتباتك وتبعياتك أمر بالغ الأهمية للحصول على تجربة سلسة وخالية من الأخطاء.
-
-
تشغيل YOLO11 على GPU - إذا كنت تواجه مشكلة في تشغيل YOLO11 على GPU ، ففكر في خطوات استكشاف الأخطاء وإصلاحها التالية:
-
التحقق من التوافق والتركيب CUDA: تأكد من أن جهازك GPU متوافق مع CUDA وأن CUDA مثبت بشكل صحيح. استخدم
nvidia-smi
للتحقق من حالة الإصدار NVIDIA GPU و CUDA . -
تحقق PyTorch و CUDA التكامل: تأكد من أن PyTorch يمكن الاستفادة من CUDA عن طريق تشغيل
import torch; print(torch.cuda.is_available())
في محطة طرفية Python . إذا عادت "صواب"، يتم إعداد PyTorch لاستخدام CUDA. -
تفعيل البيئة: تأكد من أنك في البيئة الصحيحة حيث يتم تثبيت جميع الحزم الضرورية.
-
قم بتحديث حزمك: قد لا تكون الحزم القديمة غير متوافقة مع GPU. حافظ على تحديثها.
-
تكوين البرنامج: تحقق مما إذا كان البرنامج أو الكود يحدد استخدام GPU . في YOLO11 ، قد يكون هذا في الإعدادات أو التكوين.
-
مشكلات التدريب النموذجي
سيتناول هذا القسم المشاكل الشائعة التي تواجهها أثناء التدريب وتفسيراتها وحلولها.
التحقق من إعدادات التكوين
الإصدار: إذا لم تكن متأكدًا مما إذا كانت إعدادات التكوين في .yaml
يتم تطبيق الملف بشكل صحيح أثناء تدريب النموذج.
الحل: إعدادات التكوين في .yaml
عند استخدام ملف model.train()
الوظيفة. للتأكد من تطبيق هذه الإعدادات بشكل صحيح، اتبع هذه الخطوات:
- تأكد من أن المسار إلى
.yaml
ملف التكوين صحيح. - تأكد من تمرير المسار إلى
.yaml
كملفdata
عند استدعاءmodel.train()
كما هو موضح أدناه:
تسريع التدريب باستخدام وحدات معالجة رسومات متعددة
مشكلة: التدريب بطيء على وحدة واحدة GPU ، وتريد تسريع العملية باستخدام وحدات معالجة رسومات متعددة.
الحل: يمكن أن تؤدي زيادة حجم الدُفعات إلى تسريع التدريب، ولكن من الضروري مراعاة سعة الذاكرة GPU . لتسريع التدريب باستخدام وحدات معالجة رسومات متعددة، اتبع الخطوات التالية:
-
تأكد من توفر عدة وحدات معالجة رسومات متعددة.
-
قم بتعديل ملف التكوين .yaml لتحديد عدد وحدات معالجة الرسومات المراد استخدامها، على سبيل المثال، gpus: 4.
-
قم بزيادة حجم الدفعة وفقًا لذلك للاستفادة الكاملة من وحدات معالجة الرسومات المتعددة دون تجاوز حدود الذاكرة.
-
قم بتعديل أمر التدريب الخاص بك لاستخدام وحدات معالجة رسومات متعددة:
# Adjust the batch size and other settings as needed to optimize training speed
model.train(data="/path/to/your/data.yaml", batch=32, multi_scale=True)
معلمات المراقبة المستمرة
المشكلة: ترغب في معرفة المعلمات التي يجب مراقبتها باستمرار أثناء التدريب، بصرف النظر عن الخسارة.
الحل: على الرغم من أن الخسارة مقياس مهم للمراقبة، إلا أنه من الضروري أيضًا تتبع مقاييس أخرى لتحسين أداء النموذج. تتضمن بعض المقاييس الرئيسية التي يجب مراقبتها أثناء التدريب ما يلي:
- الدقة
- استرجاع
- متوسط الدقة المتوسطة (mAP)
يمكنك الوصول إلى هذه المقاييس من سجلات التدريب أو باستخدام أدوات مثل TensorBoard أو wandb للتصور. يمكن أن يساعدك تنفيذ الإيقاف المبكر بناءً على هذه المقاييس على تحقيق نتائج أفضل.
أدوات لتتبع التقدم المحرز في التدريب
المشكلة: أنت تبحث عن توصيات بشأن أدوات لتتبع تقدم التدريب.
الحل: لتتبع وتصور التقدم المحرز في التدريب، يمكنك التفكير في استخدام الأدوات التالية:
- TensorBoard: TensorBoard هو خيار شائع لتصور مقاييس التدريب، بما في ذلك الخسارة والدقة وغير ذلك. يمكنك دمجها مع عملية التدريب YOLO11 الخاص بك .
- Comet:: Comet يوفر مجموعة أدوات شاملة لتتبع التجارب ومقارنتها. فهي تسمح لك بتتبع المقاييس والمعلمات الفائقة وحتى أوزان النماذج. كما أن التكامل مع النماذج YOLO سهل ومباشر، مما يوفر لك نظرة عامة كاملة لدورة تجربتك.
- Ultralytics HUB: Ultralytics يوفر HUB بيئة متخصصة لتتبع النماذج YOLO ، مما يمنحك منصة شاملة لإدارة المقاييس ومجموعات البيانات وحتى التعاون مع فريقك. نظرًا لتركيزه المخصص على YOLO ، فإنه يوفر المزيد من خيارات التتبع المخصصة.
تقدم كل أداة من هذه الأدوات مجموعة من المزايا الخاصة بها، لذلك قد ترغب في النظر في الاحتياجات المحددة لمشروعك عند الاختيار.
كيفية التحقق مما إذا كان التدريب يتم على GPU
المشكلة: قيمة "الجهاز" في سجلات التدريب هي "فارغة"، وأنت غير متأكد مما إذا كان التدريب يحدث على GPU.
الحل: عادةً ما تعني قيمة "الجهاز" التي تكون "فارغة" أن عملية التدريب يتم تعيينها لاستخدام GPU المتاح تلقائيًا، وهو السلوك الافتراضي. لضمان حدوث التدريب على GPU محدد، يمكنك تعيين قيمة 'الجهاز' يدويًا إلى فهرس GPU (على سبيل المثال، '0' لأول GPU) في ملف التكوين .yaml الخاص بك:
سيؤدي هذا إلى تعيين عملية التدريب بشكل صريح إلى GPU المحدد. إذا كنت ترغب في التدريب على CPU ، قم بتعيين 'الجهاز' إلى 'cpu'.
راقب مجلد "التشغيلات" للاطلاع على السجلات والمقاييس لمراقبة تقدم التدريب بفعالية.
الاعتبارات الرئيسية للتدريب النموذجي الفعال
إليك بعض الأمور التي يجب أن تضعها في اعتبارك، إذا كنت تواجه مشاكل تتعلق بتدريب العارضات.
تنسيق مجموعة البيانات والتسميات
-
الأهمية: يكمن أساس أي نموذج للتعلم الآلي في جودة وشكل البيانات التي يتم تدريبه عليها.
-
توصية: تأكد من التزام مجموعة البيانات المخصصة والتسميات المرتبطة بها بالتنسيق المتوقع. من الضروري التحقق من أن التسميات التوضيحية دقيقة وذات جودة عالية. يمكن أن تؤدي التسميات التوضيحية غير الصحيحة أو دون المستوى إلى عرقلة عملية تعلم النموذج، مما يؤدي إلى نتائج غير متوقعة.
تقارب النماذج
-
الأهمية: يضمن تحقيق تقارب النموذج أن النموذج قد تعلم بما فيه الكفاية من بيانات التدريب.
-
توصية: عند تدريب نموذج "من الصفر"، من الضروري التأكد من وصول النموذج إلى مستوى مُرضٍ من التقارب. قد يستلزم ذلك مدة تدريب أطول، مع عدد أكبر من الحقب الزمنية، مقارنةً بالتدريب على نموذج موجود.
معدل التعلم وحجم الدفعة
-
الأهمية: تلعب هذه المعلمات الفائقة دورًا محوريًا في تحديد كيفية تحديث النموذج لأوزانه أثناء التدريب.
-
توصية: قم بانتظام بتقييم ما إذا كان معدل التعلّم المختار وحجم الدُفعات هو الأمثل لمجموعة بياناتك المحددة. يمكن للمعلمات التي لا تتوافق مع خصائص مجموعة البيانات أن تعيق أداء النموذج.
توزيع الفئات
-
الأهمية: يمكن أن يؤثر توزيع الفئات في مجموعة بياناتك على ميول النموذج للتنبؤ.
-
توصية: تقييم توزيع الفئات داخل مجموعة بياناتك بانتظام. إذا كان هناك اختلال في توازن الفئات، فهناك خطر من أن يتطور النموذج إلى التحيز للفئة الأكثر انتشارًا. يمكن أن يكون هذا الانحياز واضحًا في مصفوفة الارتباك، حيث قد يتنبأ النموذج في الغالب بفئة الأغلبية.
التحقق التبادلي مع الأوزان المدربة مسبقاً
-
الأهمية: يمكن أن توفر الاستفادة من الأوزان المدربة مسبقًا نقطة انطلاق قوية لتدريب النموذج، خاصةً عندما تكون البيانات محدودة.
-
توصية: كخطوة تشخيصية، فكّر في تدريب نموذجك باستخدام نفس البيانات ولكن مع تهيئته بأوزان مُدربة مسبقًا. إذا أسفر هذا النهج عن مصفوفة ارتباك جيدة التكوين، فقد يشير ذلك إلى أن النموذج "من الصفر" قد يتطلب المزيد من التدريب أو التعديلات.
القضايا المتعلقة بالتنبؤات النموذجية
سيتناول هذا القسم المشكلات الشائعة التي تواجهها أثناء التنبؤ بالنموذج.
الحصول على تنبؤات الصندوق المحدود باستخدام نموذجك المخصص YOLO11
مشكلة: عند تشغيل التنبؤات باستخدام نموذج YOLO11 مخصص، هناك تحديات في تنسيق وتصور إحداثيات المربع المحدود.
الحل:
- تنسيق الإحداثيات: YOLO11 يوفر إحداثيات المربع المحدود بقيم بكسل مطلقة. لتحويل هذه الإحداثيات إلى إحداثيات نسبية (تتراوح من 0 إلى 1)، تحتاج إلى القسمة على أبعاد الصورة. على سبيل المثال، لنفترض أن حجم صورتك 640 × 640. عندها ستقوم بما يلي:
# 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
- اسم الملف: للحصول على اسم ملف الصورة التي تقوم بالتنبؤ عليها، قم بالوصول إلى مسار ملف الصورة مباشرةً من كائن النتيجة داخل حلقة التنبؤ.
تصفية الكائنات في YOLO11 التنبؤات
مشكلة: تواجه مشاكل في كيفية تصفية وعرض كائنات محددة فقط في نتائج التنبؤ عند تشغيل YOLO11 باستخدام مكتبة Ultralytics .
الحل: للكشف عن فئات محددة، استخدم وسيطة الفئات لتحديد الفئات التي تريد تضمينها في الإخراج. على سبيل المثال، للكشف عن السيارات فقط (بافتراض أن "السيارات" لها مؤشر الفئة 2):
فهم المقاييس الدقيقة في YOLO11
المشكلة: الالتباس فيما يتعلق بالفرق بين دقة الصندوق ودقة القناع ودقة مصفوفة الارتباك في YOLO11.
الحل: تقيس دقة المربعات دقة المربعات الحدية المتوقعة مقارنةً بالمربعات الحقيقة الأرضية الفعلية باستخدام IoU (التقاطع على الاتحاد) كمقياس. تُقيّم دقة القناع الاتفاق بين أقنعة التجزئة المتوقعة وأقنعة الحقيقة الأرضية في تصنيف الكائنات على مستوى البكسل. من ناحية أخرى، تركّز دقة مصفوفة الارتباك على دقة التصنيف الإجمالية عبر جميع الفئات ولا تأخذ في الاعتبار الدقة الهندسية للتنبؤات. من المهم ملاحظة أن المربع المحدّد يمكن أن يكون دقيقًا هندسيًا (إيجابي حقيقي) حتى لو كان التنبؤ بالفئة خاطئًا، مما يؤدي إلى اختلافات بين دقة المربع ودقة مصفوفة الارتباك. تقوم هذه المقاييس بتقييم جوانب مختلفة من أداء النموذج، مما يعكس الحاجة إلى مقاييس تقييم مختلفة في مهام مختلفة.
استخراج أبعاد الكائن في YOLO11
المشكلة: صعوبة في استرداد طول وارتفاع الأجسام المكتشفة في YOLO11 ، خاصةً عند اكتشاف عدة أجسام في الصورة.
الحل: لاسترداد أبعاد الصندوق المحيطي، استخدم أولاً نموذج Ultralytics YOLO11 للتنبؤ بالأجسام في الصورة. بعد ذلك، استخرج معلومات العرض والارتفاع للمربعات المحدودة من نتائج التنبؤ.
from ultralytics import YOLO
# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.pt")
# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"
# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.5)
# 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 . قد تقوم بعض أطر العمل، مثل PyTorch ، بتهيئة عمليات CUDA على الافتراضية GPU قبل الانتقال إلى وحدات معالجة الرسومات المعينة. لتجاوز عمليات التهيئة الافتراضية غير المتوقعة، حدد GPU مباشرةً أثناء النشر والتنبؤ. بعد ذلك، استخدم أدوات لمراقبة استخدام GPU واستخدام الذاكرة لتحديد أي حالات شاذة في الوقت الفعلي. تأكد أيضًا من استخدام أحدث إصدار من إطار العمل أو المكتبة.
مشكلات تحويل/تصدير النماذج
المشكلة: أثناء عملية تحويل نماذج التعلم الآلي أو تصديرها إلى تنسيقات أو منصات مختلفة، قد يواجه المستخدمون أخطاء أو سلوكيات غير متوقعة.
الحل:
-
التحقق من التوافق: تأكد من أنك تستخدم إصدارات من المكتبات والأطر المتوافقة مع بعضها البعض. يمكن أن تؤدي الإصدارات غير المتطابقة إلى أخطاء غير متوقعة أثناء التحويل.
-
إعادة تعيين البيئة: إذا كنت تستخدم بيئة تفاعلية مثل Jupyter أو Colab، ففكر في إعادة تشغيل بيئتك بعد إجراء تغييرات أو عمليات تثبيت مهمة. يمكن لبداية جديدة في بعض الأحيان حل المشكلات الأساسية.
-
الوثائق الرسمية: ارجع دائمًا إلى الوثائق الرسمية للأداة أو المكتبة التي تستخدمها للتحويل. فهي غالبًا ما تحتوي على إرشادات محددة وأفضل الممارسات لتصدير النماذج.
-
دعم المجتمع: تحقق من المستودع الرسمي للمكتبة أو إطار العمل بحثًا عن مشكلات مماثلة أبلغ عنها مستخدمون آخرون. قد يكون المشرفون أو المجتمع قد قدموا حلولاً أو حلولاً بديلة في سلاسل المناقشة.
-
قم بالتحديث بانتظام: تأكد من أنك تستخدم أحدث إصدار من الأداة أو المكتبة. يقوم المطورون بإصدار تحديثات بشكل متكرر لإصلاح الأخطاء المعروفة أو تحسين الوظائف.
-
اختبر بشكل تدريجي: قبل إجراء التحويل الكامل، اختبر العملية باستخدام نموذج أو مجموعة بيانات أصغر لتحديد المشكلات المحتملة في وقت مبكر.
المجتمع والدعم المجتمعي
يمكن أن يؤدي الانخراط مع مجتمع من الأفراد ذوي التفكير المماثل إلى تعزيز تجربتك ونجاحك في العمل مع YOLO11. فيما يلي بعض القنوات والموارد التي قد تجدها مفيدة.
منتديات وقنوات الحصول على المساعدة
مشكلات GitHub: يحتوي مستودع YOLO11 على GitHub على علامة تبويب المشكلات حيث يمكنك طرح الأسئلة والإبلاغ عن الأخطاء واقتراح ميزات جديدة. المجتمع والمشرفون نشطون هنا، وهو مكان رائع للحصول على المساعدة في مشاكل محددة.
Ultralytics خادم Discord Server: Ultralytics لديه خادم Discord حيث يمكنك التفاعل مع المستخدمين الآخرين والمطورين.
الوثائق والموارد الرسمية
Ultralytics YOLO11 المستندات: توفر الوثائق الرسمية نظرة عامة شاملة على YOLO11 ، إلى جانب أدلة حول التثبيت والاستخدام واستكشاف الأخطاء وإصلاحها.
يجب أن توفر هذه الموارد أساسًا متينًا لاستكشاف الأخطاء وإصلاحها وتحسين مشاريعك YOLO11 ، بالإضافة إلى التواصل مع الآخرين في مجتمع YOLO11 .
الخاتمة
يعد استكشاف الأخطاء وإصلاحها جزءًا لا يتجزأ من أي عملية تطوير، ويمكن أن يؤدي التزود بالمعرفة الصحيحة إلى تقليل الوقت والجهد المبذول في حل المشكلات بشكل كبير. يهدف هذا الدليل إلى معالجة التحديات الأكثر شيوعًا التي يواجهها مستخدمو نموذج YOLO11 ضمن النظام البيئي Ultralytics . من خلال فهم هذه المشكلات الشائعة ومعالجتها، يمكنك ضمان تقدم أكثر سلاسة في المشروع وتحقيق نتائج أفضل في مهام الرؤية الحاسوبية الخاصة بك.
تذكر أن مجتمع Ultralytics هو مورد قيّم. يمكن أن يوفر التفاعل مع زملائك المطورين والخبراء رؤى وحلولاً إضافية قد لا تغطيها الوثائق القياسية. استمر دائمًا في التعلم والتجربة ومشاركة خبراتك للمساهمة في المعرفة الجماعية للمجتمع.
استكشاف الأخطاء وإصلاحها سعيد!
الأسئلة الشائعة
كيف يمكنني حل أخطاء التثبيت مع YOLO11 ؟
قد ترجع أخطاء التثبيت غالبًا إلى مشكلات في التوافق أو التبعيات المفقودة. تأكد من استخدام Python 3.8 أو أحدث وتثبيت PyTorch .8 1.8 أو أحدث. من المفيد استخدام البيئات الافتراضية لتجنب التعارضات. للحصول على دليل التثبيت خطوة بخطوة، اتبع دليل التثبيت الرسمي الخاص بنا. إذا واجهت أخطاء في الاستيراد، فجرّب تثبيتًا جديدًا أو قم بتحديث المكتبة إلى أحدث إصدار.
لماذا يتدرب نموذجي YOLO11 ببطء على نموذج واحد GPU ؟
قد يكون التدريب على موقع GPU واحد بطيئًا بسبب أحجام الدفعات الكبيرة أو عدم كفاية الذاكرة. لتسريع التدريب، استخدم وحدات معالجة رسومات متعددة. تأكد من أن نظامك يحتوي على وحدات معالجة رسومات متعددة متاحة واضبط .yaml
ملف التكوين لتحديد عدد وحدات معالجة الرسومات، على سبيل المثال, gpus: 4
. قم بزيادة حجم الدفعة وفقًا لذلك للاستفادة الكاملة من وحدات معالجة الرسومات دون تجاوز حدود الذاكرة. مثال على الأمر:
كيف يمكنني التأكد من أن نموذج YOLO11 الخاص بي يتدرب على GPU ؟
إذا كانت قيمة 'الجهاز' تظهر 'فارغة' في سجلات التدريب، فهذا يعني بشكل عام أن عملية التدريب مضبوطة على استخدام GPU متاح تلقائيًا. لتعيين GPU محدد بشكل صريح، قم بتعيين قيمة "الجهاز" في .yaml
ملف التكوين. على سبيل المثال
هذا يضبط عملية التدريب على أول GPU. استشر nvidia-smi
لتأكيد إعداد CUDA الخاص بك .
كيف يمكنني مراقبة وتتبع التقدم المحرز في التدريب على نموذج YOLO11 الخاص بي؟
يمكن إدارة تتبع وتصور التقدم المحرز في التدريب بكفاءة من خلال أدوات مثل TensorBoard, Cometو Ultralytics HUB. تسمح لك هذه الأدوات بتسجيل وتصور مقاييس مثل الخسارة والدقة والاستدعاء و mAP. يمكن أن يساعد تنفيذ الإيقاف المبكر بناءً على هذه المقاييس أيضًا في تحقيق نتائج تدريب أفضل.
ماذا أفعل إذا كان YOLO11 لا يتعرف على تنسيق مجموعة البيانات الخاصة بي؟
تأكد من توافق مجموعة البيانات والتسميات مع التنسيق المتوقع. تحقق من أن التعليقات التوضيحية دقيقة وذات جودة عالية. إذا واجهت أي مشاكل، راجع دليل جمع البيانات والتعليقات التوضيحية للاطلاع على أفضل الممارسات. لمزيد من الإرشادات الخاصة بمجموعة البيانات، راجع قسم مجموعات البيانات في الوثائق.