انتقل إلى المحتوى

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

YOLO صورة المشكلات الشائعة

مقدمة

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



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

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

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

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

  • أنت تستخدم Python 3.8 أو أحدث على النحو الموصى به.

  • تأكد من أن لديك الإصدار الصحيح من PyTorch (1.8 أو أحدث) مثبتة.

  • ضع في اعتبارك استخدام البيئات الافتراضية لتجنب التعارضات.

  • اتبع دليل التثبيت الرسمي خطوة بخطوة.

بالإضافة إلى ذلك ، إليك بعض مشكلات التثبيت الشائعة التي واجهها المستخدمون ، إلى جانب الحلول الخاصة بهم:

  • أخطاء الاستيراد أو مشاكل التبعية - إذا كنت تتلقى أخطاء أثناء استيراد YOLOv8، أو كنت تواجه مشكلات تتعلق بالتبعيات، ففكر في خطوات استكشاف الأخطاء وإصلاحها التالية:

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

    • التحديث بانتظام: تأكد من أنك تستخدم أحدث إصدار من المكتبة. قد لا تكون الإصدارات القديمة متوافقة مع التحديثات الأخيرة، مما يؤدي إلى تعارضات أو مشكلات محتملة.

    • تحقق من التبعيات: تحقق من تثبيت جميع التبعيات المطلوبة بشكل صحيح وأنها من الإصدارات المتوافقة.

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

    • تذكر أن الحفاظ على تحديث المكتبات والتبعيات أمر بالغ الأهمية للحصول على تجربة سلسة وخالية من الأخطاء.

  • تشغيل YOLOv8 على وحدة معالجة الرسومات - إذا كنت تواجه مشكلة في التشغيل YOLOv8 على وحدة معالجة الرسومات، ضع في اعتبارك خطوات استكشاف الأخطاء وإصلاحها التالية:

    • تحقق من توافق CUDA والتثبيتتأكد من أن وحدة معالجة الرسومات الخاصة بك متوافقة مع CUDA وأن CUDA مثبت بشكل صحيح.: استخدم الزر nvidia-smi للتحقق من حالة NVIDIA GPU وإصدار CUDA.

    • فحص PyTorch وتكامل CUDA:ضمان PyTorch يمكن الاستفادة من CUDA عن طريق تشغيل import torch; print(torch.cuda.is_available()) في أ Python المحطه الطرفيه. إذا تم إرجاع "True" ، PyTorch تم إعداده لاستخدام CUDA.

    • تنشيط البيئة: تأكد من أنك في البيئة الصحيحة حيث يتم تثبيت جميع الحزم الضرورية.

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

    • تكوين البرنامج: تحقق مما إذا كان البرنامج أو الرمز يحدد استخدام وحدة معالجة الرسومات. في YOLOv8، قد يكون هذا في الإعدادات أو التكوين.

قضايا التدريب النموذجية

سيتناول هذا القسم المشكلات الشائعة التي تمت مواجهتها أثناء التدريب والتفسيرات والحلول الخاصة بكل منها.

التحقق من إعدادات التكوين

أصدرأنت غير متأكد مما إذا كانت إعدادات التكوين في .yaml بشكل صحيح أثناء تدريب النموذج.

حلإعدادات التكوين في .yaml يجب تطبيق الملف عند استخدام model.train() دالة. للتأكد من تطبيق هذه الإعدادات بشكل صحيح، اتبع الخطوات التالية:

  • تأكد من أن المسار إلى .yaml ملف التكوين صحيح.
  • تأكد من تمرير المسار إلى .yaml ك ملف data حجة عند الاتصال model.train()، كما هو موضح أدناه:
model.train(data='/path/to/your/data.yaml', batch=4)

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

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

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

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

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

تقدم كل من هذه الأدوات مجموعة المزايا الخاصة بها ، لذلك قد ترغب في مراعاة الاحتياجات المحددة لمشروعك عند اتخاذ القرار.

كيفية التحقق مما إذا كان التدريب يحدث على وحدة معالجة الرسومات

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

الحل: تعني قيمة "الجهاز" "خالية" عادة أن عملية التدريب مضبوطة على استخدام وحدة معالجة الرسومات المتاحة تلقائيا ، وهو السلوك الافتراضي. لضمان حدوث التدريب على وحدة معالجة رسومات معينة ، يمكنك تعيين قيمة "الجهاز" يدويا على فهرس GPU (على سبيل المثال ، "0" لوحدة معالجة الرسومات الأولى) في ملف تكوين .yaml الخاص بك:

device: 0

سيؤدي هذا إلى تعيين عملية التدريب بشكل صريح إلى وحدة معالجة الرسومات المحددة. إذا كنت ترغب في التدريب على وحدة المعالجة المركزية ، فاضبط "الجهاز" على "وحدة المعالجة المركزية".

راقب مجلد "التشغيل" بحثا عن السجلات والمقاييس لمراقبة تقدم التدريب بشكل فعال.

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

فيما يلي بعض الأشياء التي يجب وضعها في الاعتبار ، إذا كنت تواجه مشكلات تتعلق بتدريب النموذج.

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

  • الأهمية: يكمن أساس أي نموذج للتعلم الآلي في جودة وشكل البيانات التي يتم التدريب عليها.

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

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

  • الأهمية: يضمن تحقيق تقارب النموذج أن النموذج قد تعلم بشكل كاف من بيانات التدريب.

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

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

  • الأهمية: تلعب هذه المعلمات الفائقة دورا محوريا في تحديد كيفية تحديث النموذج لأوزانه أثناء التدريب.

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

توزيع الصف

  • الأهمية: يمكن أن يؤثر توزيع الفئات في مجموعة البيانات الخاصة بك على ميول التنبؤ الخاصة بالنموذج.

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

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

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

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

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

الحصول على تنبؤات المربع المحيط مع YOLOv8 نموذج مخصص

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

الحل:

  • تنسيق الإحداثيات: YOLOv8 يوفر إحداثيات المربع المحيط بقيم البيكسل المطلقة. لتحويل هذه إلى إحداثيات نسبية (تتراوح من 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
  • اسم الملف: للحصول على اسم ملف الصورة التي تتوقع عليها، قم بالوصول إلى مسار ملف الصورة مباشرة من الكائن الناتج داخل حلقة التنبؤ الخاصة بك.

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

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

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

yolo task=detect mode=segment model=yolov8n-seg.pt source='path/to/car.mp4' show=True classes=2

فهم مقاييس الدقة في YOLOv8

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

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

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

المشكلة: صعوبة استرداد طول وارتفاع الكائنات المكتشفة في YOLOv8، خاصة عند اكتشاف كائنات متعددة في صورة ما.

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

from ultralytics import YOLO

# Load a pre-trained YOLOv8 model
model = YOLO('yolov8n.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 الافتراضية. بعض الأطر، مثل PyTorch، قد يقوم بتهيئة عمليات CUDA على وحدة معالجة رسومات افتراضية قبل الانتقال إلى وحدات معالجة الرسومات المعينة. لتجاوز عمليات التهيئة الافتراضية غير المتوقعة، حدد وحدة معالجة الرسومات مباشرة أثناء النشر والتنبؤ. بعد ذلك ، استخدم أدوات لمراقبة استخدام GPU واستخدام الذاكرة لتحديد أي حالات شاذة في الوقت الفعلي. تأكد أيضا من أنك تستخدم أحدث إصدار من إطار العمل أو المكتبة.

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

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

حل:

  • التحقق من التوافق: تأكد من أنك تستخدم إصدارات المكتبات وأطر العمل المتوافقة مع بعضها البعض. يمكن أن تؤدي الإصدارات غير المتطابقة إلى أخطاء غير متوقعة أثناء التحويل.

  • إعادة تعيين البيئة: إذا كنت تستخدم بيئة تفاعلية مثل Jupyter أو Colab ، ففكر في إعادة تشغيل بيئتك بعد إجراء تغييرات أو عمليات تثبيت كبيرة. يمكن أن تؤدي البداية الجديدة في بعض الأحيان إلى حل المشكلات الأساسية.

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

  • دعم المجتمع: تحقق من المستودع الرسمي للمكتبة أو إطار العمل بحثا عن مشكلات مماثلة أبلغ عنها مستخدمون آخرون. ربما قدم المشرفون أو المجتمع حلولا أو حلولا بديلة في سلاسل المناقشة.

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

  • الاختبار بشكل تدريجي: قبل إجراء تحويل كامل، اختبر العملية باستخدام نموذج أو مجموعة بيانات أصغر لتحديد المشكلات المحتملة في وقت مبكر.

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

يمكن أن يؤدي الانخراط مع مجتمع من الأفراد ذوي التفكير المماثل إلى تعزيز تجربتك ونجاحك في العمل مع YOLOv8. فيما يلي بعض القنوات والموارد التي قد تجدها مفيدة.

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

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

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

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

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

يجب أن توفر هذه الموارد أساسا متينا لاستكشاف الأخطاء وإصلاحها وتحسين YOLOv8 المشاريع ، وكذلك التواصل مع الآخرين في YOLOv8 مجتمع.

استنتاج

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

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

استكشاف الأخطاء وإصلاحها سعيدة!



تم إنشاء 2023-11-12, اخر تحديث 2024-04-19
المؤلفون: رضوان منور (1) ، جلين جوشر (2)

التعليقات