التخصيص المتقدم
كل من واجهات سطر الأوامر 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 الخاص بك بعد كل 10epochs
إليك كيفية القيام بذلك:
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.