Meet YOLO26: next-gen vision AI.

Link to this sectionتخصيص متقدم#

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



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

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

Link to this sectionBaseTrainer#

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

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

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

Link to this sectionDetectionTrainer#

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

from ultralytics.models.yolo.detect import DetectionTrainer

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

Link to this sectionتخصيص 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()

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

Link to this sectionمكونات المحرك الأخرى#

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

Link to this sectionاستخدام 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 مع تخصيص عملية التدريب الأساسية لتناسب متطلباتك المحددة.

Link to this sectionأسئلة شائعة#

Link to this sectionكيف يمكنني تخصيص 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

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

Link to this sectionما هي المكونات الرئيسية لـ BaseTrainer في Ultralytics YOLO؟#

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

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

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

Link to this sectionكيف يمكنني إضافة رد نداء (callback) إلى 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()

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

Link to this sectionلماذا يجب أن أستخدم Ultralytics YOLO لتدريب النماذج؟#

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

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

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

Link to this sectionهل يمكنني استخدام 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.

التعليقات