تخطي إلى المحتوى

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

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



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

المدرب الأساسي

يحتوي BaseTrainer على روتين التدريب العام. يمكن تخصيصه لأي مهمة استنادًا إلى تجاوز الدوال أو العمليات المطلوبة طالما تم اتباع التنسيقات الصحيحة. على سبيل المثال، يمكنك دعم نموذجك المخصص ومُحمِّل البيانات الخاص بك عن طريق تجاوز هذه الدوال فقط:

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

برنامج الكشف عن المدرب

إليك كيفية استخدام YOLO11 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 YOLO11 DetectionTrainer لمهام محددة؟

لتخصيص Ultralytics YOLO11 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 YOLO11 ؟

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

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

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

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

يمكنك إضافة عمليات إعادة الاستدعاء لمراقبة عملية التدريب وتعديلها في Ultralytics YOLO11 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 YOLO11 لتدريب النماذج؟

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

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

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

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

نعم, Ultralytics YOLO11 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.

📅 تم إنشاؤها منذ 1 سنة مضت ✏️ تم التحديث منذ 2 شهر

التعليقات