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

التخصيص المتقدم

كل من Ultralytics YOLO سطر الأوامر و Python الواجهات هي ببساطة تجريد عالي المستوى على منفذي المحرك الأساسي. دعونا نلقي نظرة على محرك المدرب.



شاهد: اتقان Ultralytics YOLOv8التخصيص المتقدم:

بيس ترينر

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

  • get_model(cfg, weights) - الوظيفة التي تبني النموذج المراد تدريبه
  • get_dataloader() - الوظيفة التي تبني أداة تحميل البيانات يمكن العثور على مزيد من التفاصيل وشفرة المصدر في BaseTrainer مرجع

كشف المدرب

إليك كيفية استخدام YOLOv8 DetectionTrainer وتخصيصه.

from ultralytics.models.yolo.detect import DetectionTrainer

trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # get best model

تخصيص مدرب الكشف

دعونا تخصيص المدرب لتدريب نموذج كشف مخصص هذا غير مدعوم مباشرة. يمكنك القيام بذلك ببساطة عن طريق التحميل الزائد على ملف get_model وظيفه:

from ultralytics.models.yolo.detect import DetectionTrainer


class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        """Loads a custom detection model given configuration and weight files."""
        ...


trainer = CustomTrainer(overrides={...})
trainer.train()

أنت تدرك الآن أنك بحاجة إلى تخصيص المدرب بشكل أكبر من أجل:

  • تخصيص loss function.
  • جمع callback يقوم بتحميل نموذج إلى محرك الأقراص Google الخاص بك بعد كل 10 epochs إليك كيف يمكنك القيام بذلك:
from ultralytics.models.yolo.detect import DetectionTrainer
from ultralytics.nn.tasks import DetectionModel


class MyCustomModel(DetectionModel):
    def init_criterion(self):
        """Initializes the loss function and adds a callback for uploading the model to Google Drive every 10 epochs."""
        ...


class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        """Returns a customized detection model instance configured with specified config and weights."""
        return MyCustomModel(...)


# callback to upload model weights
def log_model(trainer):
    """Logs the path of the last model weight used by the trainer."""
    last_weight_path = trainer.last
    print(last_weight_path)


trainer = CustomTrainer(overrides={...})
trainer.add_callback("on_train_epoch_end", log_model)  # Adds to existing callback
trainer.train()

لمعرفة المزيد حول أحداث تشغيل معاودة الاتصال ونقطة الدخول ، تحقق من دليل عمليات رد الاتصال الخاص بنا

مكونات المحرك الأخرى

هناك مكونات أخرى يمكن تخصيصها بشكل مشابه مثل Validators و Predictors. راجع قسم المراجع لمزيد من المعلومات حول هذه.

الأسئلة المتداولة

كيف يمكنني تخصيص Ultralytics YOLOv8 DetectionTrainer لمهام محددة؟

لتخصيص Ultralytics YOLOv8 DetectionTrainer لمهمة معينة، يمكنك تجاوز طرائقه للتكيف مع نموذجك المخصص ومُحمِّل البيانات. ابدأ بالوراثة من DetectionTrainer ثم إعادة تعريف طرق مثل get_model لتنفيذ وظائفك المخصصة. إليك مثال على ذلك:

from ultralytics.models.yolo.detect import DetectionTrainer


class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        """Loads a custom detection model given configuration and weight files."""
        ...


trainer = CustomTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # get best model

لمزيد من التخصيص مثل تغيير loss function أو إضافة callbackيمكنك الرجوع إلى دليل عمليات الاستدعاء.

ما هي المكونات الرئيسية لـ BaseTrainer في Ultralytics YOLOv8 ؟

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

  • get_model(cfg, weights) لبناء النموذج المراد تدريبه.
  • get_dataloader() لبناء محمل البيانات.

لمزيد من التفاصيل حول التخصيص والشفرة المصدرية، راجع BaseTrainer مرجع.

كيف يمكنني إضافة رد استدعاء إلى Ultralytics YOLOv8 DetectionTrainer؟

يمكنك إضافة عمليات إعادة الاستدعاء لمراقبة عملية التدريب وتعديلها في Ultralytics YOLOv8 DetectionTrainer. على سبيل المثال، إليك كيف يمكنك إضافة رد استدعاء لتسجيل أوزان النموذج بعد كل حلقة تدريبية:

from ultralytics.models.yolo.detect import DetectionTrainer


# callback to upload model weights
def log_model(trainer):
    """Logs the path of the last model weight used by the trainer."""
    last_weight_path = trainer.last
    print(last_weight_path)


trainer = DetectionTrainer(overrides={...})
trainer.add_callback("on_train_epoch_end", log_model)  # Adds to existing callbacks
trainer.train()

للحصول على مزيد من التفاصيل حول أحداث الاستدعاء ونقاط الدخول، راجع دليل عمليات إعادة الاستدعاء.

لماذا يجب استخدام Ultralytics YOLOv8 لتدريب النماذج؟

Ultralytics YOLOv8 يوفر تجريدًا عالي المستوى على منفذي محرك قوي، مما يجعله مثاليًا للتطوير والتخصيص السريع. تشمل المزايا الرئيسية ما يلي:

  • سهولة الاستخدام: تعمل كل من واجهتي سطر الأوامر و Python على تبسيط المهام المعقدة.
  • الأداء: مُحسَّن لاكتشاف الأجسام في الوقت الحقيقي وتطبيقات الذكاء الاصطناعي للرؤية المختلفة.
  • التخصيص: قابل للتمديد بسهولة للنماذج المخصصة ووظائف الخسارة ومحمّلات البيانات.

تعرّف على المزيد حول إمكانيات YOLOv8 من خلال زيارة الموقع الإلكتروني Ultralytics YOLO.

هل يمكنني استخدام Ultralytics YOLOv8 DetectionTrainer للنماذج غير القياسية؟

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

from ultralytics.models.yolo.detect import DetectionTrainer


class CustomDetectionTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        """Loads a custom detection model."""
        ...


trainer = CustomDetectionTrainer(overrides={...})
trainer.train()

لمزيد من الإرشادات والأمثلة الشاملة، راجع وثائق DetectionTrainer.



تم الإنشاء 2023-11-12، تم التحديث 2024-07-04
المؤلفون: جلين-جوتشر (7)، رضوان منور (1)، أيوش إكسل (1)، الضاحك-ك (1)

التعليقات