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

تخصيص متقدم

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



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

BaseTrainer

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

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

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

DetectionTrainer

إليك كيفية استخدام وتخصيص Ultralytics YOLO DetectionTrainer:

from ultralytics.models.yolo.detect import DetectionTrainer

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

تخصيص 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()

قم بتخصيص المدرب بشكل أكبر عن طريق تعديل دالة الخسارة أو إضافة استدعاء لتحميل النموذج إلى 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

لمزيد من التخصيص، مثل تغيير دالة الخسارة (loss function) أو إضافة استدعاء (callback)، راجع دليل الاستدعاءات (Callbacks Guide).

ما هي المكونات الرئيسية لـ 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 على تبسيط المهام المعقدة.
  • الأداء: مُحسَّن للكشف عن الكائنات في الوقت الفعلي وتطبيقات الذكاء الاصطناعي المرئي المختلفة.
  • تخصيص: قابل للتوسيع بسهولة للنماذج المخصصة، ودوال الخسارة (loss functions)، ومحملات البيانات (dataloaders).
  • وحدات معيارية: يمكن تعديل المكونات بشكل مستقل دون التأثير على خط الأنابيب بأكمله.
  • التكامل: يعمل بسلاسة مع الأطر والأدوات الشائعة في النظام البيئي للتعلم الآلي.

تعرف على المزيد حول قدرات 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 مرجع.



📅 تم الإنشاء منذ سنة واحدة ✏️ تم التحديث منذ 4 أشهر

تعليقات