YOLO Vision 2026:

التعديل المتقدم#

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



Watch: Mastering Ultralytics YOLO: Advanced Customization
نصيحة

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

BaseTrainer#

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

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

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

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=None, weights=None, verbose=True):
        """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=None, weights=None, verbose=True):
        """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 بشكل مشابه. لمزيد من المعلومات، راجع وثائق 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=None, weights=None, verbose=True):
        """Custom code implementation."""

# Initialize YOLO model
model = YOLO("yolo26n.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=None, weights=None, verbose=True):
        """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 Reference.

كيف يمكنني إضافة استدعاء إلى 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=None, weights=None, verbose=True):
        """Loads a custom detection model."""

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

للحصول على إرشادات شاملة وأمثلة، راجع مرجع DetectionTrainer Reference.

التعليقات