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

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

تعد كل من واجهات سطر أوامر Ultralytics YOLO وواجهات Python تجريدات عالية المستوى مبنية على منفذي المحرك الأساسي. يركز هذا الدليل على Trainer المحرك، موضحًا كيفية تخصيصه لاحتياجاتك الخاصة.



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

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

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

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

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

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

إليك كيفية استخدام برنامج Ultralytics YOLO وتخصيصه DetectionTrainer:

from ultralytics.models.yolo.detect import DetectionTrainer

trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # Get the 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()

قم بتخصيص المُدرِّب بشكل أكبر عن طريق تعديل دالة الخسارة أو إضافة رد استدعاء لتحميل النموذج إلى Google Drive كل 10 حقب زمنية. إليك مثالاً على ذلك:

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 callbacks
trainer.train()

للمزيد من المعلومات حول أحداث تشغيل رد الاستدعاء ونقاط الدخول، راجع دليل عمليات رد الاستدعاء.

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

تخصيص مكونات أخرى مثل Validators و Predictors بالمثل. لمزيد من المعلومات، راجع وثائق المدققون و المتنبئات.

استخدام YOLO مع المدربين المخصصين

إن YOLO توفر فئة النموذج غلافًا عالي المستوى لفئات المدرب. يمكنك الاستفادة من هذه البنية للحصول على مرونة أكبر في سير عمل التعلّم الآلي الخاص بك:

from ultralytics import YOLO
from ultralytics.models.yolo.detect import DetectionTrainer


# Create a custom trainer
class MyCustomTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        """Custom code implementation."""
        ...


# Initialize YOLO model
model = YOLO("yolo11n.pt")

# Train with custom trainer
results = model.train(trainer=MyCustomTrainer, data="coco8.yaml", epochs=3)

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

الأسئلة الشائعة

كيف يمكنني تخصيص برنامج Ultralytics YOLO DetectionTrainer لمهام محددة؟

تخصيص 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 the best model

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

ما هي المكونات الرئيسية لبرنامج BaseTrainer في Ultralytics YOLO

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

  • get_model(cfg, weights): يبني النموذج المراد تدريبه.
  • get_dataloader(): يبني محمل البيانات.
  • preprocess_batch(): يعالج المعالجة المسبقة للدفعات قبل تمرير النموذج إلى الأمام.
  • set_model_attributes(): تعيين سمات النموذج بناءً على معلومات مجموعة البيانات.
  • get_validator(): إرجاع مدقق لتقييم النموذج.

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

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

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

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

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

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

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

نعم، إن 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 سنة مضت ✏️ تم التحديث منذ 5 أيام

التعليقات