Gelişmiş Özelleştirme
Hem Ultralytics YOLO komut satırı hem de Python arayüzleri, temel motor çalıştırıcıları üzerinde basitçe üst düzey bir soyutlamadır. Şimdi Trainer motoruna bir göz atalım.
İzle: Mastering Ultralytics YOLO: Advanced Customization
BaseTrainer
BaseTrainer genel şablon eğitim rutinini içerir. Doğru formatlar takip edildiği sürece gerekli fonksiyonları veya işlemleri geçersiz kılmaya dayalı herhangi bir görev için özelleştirilebilir. Örneğin, sadece bu fonksiyonları geçersiz kılarak kendi özel modelinizi ve veri yükleyicinizi destekleyebilirsiniz:
get_model(cfg, weights)
- Eğitilecek modeli oluşturan fonksiyonget_dataloader()
- Veri yükleyiciyi oluşturan işlev Daha fazla ayrıntı ve kaynak kodu şurada bulunabilirBaseTrainer
Referans
DetectionTrainer
Here's how you can use the YOLO11 DetectionTrainer
ve özelleştirin.
from ultralytics.models.yolo.detect import DetectionTrainer
trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best # get best model
DetectionTrainer'ı Özelleştirme
Eğitmeni kişiselleştirelim özel bir algılama modelini eğitmek için doğrudan desteklenmeyen. Bunu basitçe var olan get_model
işlevsellik:
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()
Artık eğitim setini daha da özelleştirmeniz gerektiğini fark ettiniz:
- Özelleştirin
loss function
. - Ekle
callback
Her 10 dakikada bir Google Drive'ınıza model yükleyenepochs
İşte bunu nasıl yapabileceğiniz:
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()
Geri Çağırma tetikleme olayları ve giriş noktası hakkında daha fazla bilgi edinmek için Geri Çağırma Kılavuzumuza göz atın
Diğer motor bileşenleri
Benzer şekilde özelleştirilebilen başka bileşenler de vardır Validators
ve Predictors
. Bunlar hakkında daha fazla bilgi için Referans bölümüne bakın.
SSS
How do I customize the Ultralytics YOLO11 DetectionTrainer for specific tasks?
To customize the Ultralytics YOLO11 DetectionTrainer
belirli bir görev için, özel modelinize ve veri yükleyicinize uyarlamak için yöntemlerini geçersiz kılabilirsiniz. Şuradan miras alarak başlayın DetectionTrainer
ve sonra aşağıdaki gibi yöntemleri yeniden tanımlayın get_model
özel işlevlerinizi uygulamak için. İşte bir örnek:
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
Değiştirme gibi daha fazla özelleştirme için loss function
veya bir callback
referans gösterebilirsiniz Geri Çağırma Kılavuzu.
What are the key components of the BaseTrainer in Ultralytics YOLO11?
Bu BaseTrainer
in Ultralytics YOLO11 serves as the foundation for training routines and can be customized for various tasks by overriding its generic methods. Key components include:
get_model(cfg, weights)
eğitilecek modeli oluşturmak için.get_dataloader()
veri yükleyiciyi oluşturmak için.
Özelleştirme ve kaynak kodu hakkında daha fazla ayrıntı için bkz. BaseTrainer
Referans.
How can I add a callback to the Ultralytics YOLO11 DetectionTrainer?
You can add callbacks to monitor and modify the training process in Ultralytics YOLO11 DetectionTrainer
. For instance, here's how you can add a callback to log model weights after every training epoch:
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()
Geri arama olayları ve giriş noktaları hakkında daha fazla bilgi için Geri Arama Kılavuzumuza bakın.
Why should I use Ultralytics YOLO11 for model training?
Ultralytics YOLO11 offers a high-level abstraction on powerful engine executors, making it ideal for rapid development and customization. Key benefits include:
- Kullanım Kolaylığı: Hem komut satırı hem de Python arayüzleri karmaşık görevleri basitleştirir.
- Performance: Optimized for real-time object detection and various vision AI applications.
- Customization: Easily extendable for custom models, loss functions, and dataloaders.
Learn more about YOLO11's capabilities by visiting Ultralytics YOLO.
Can I use the Ultralytics YOLO11 DetectionTrainer for non-standard models?
Yes, Ultralytics YOLO11 DetectionTrainer
son derece esnektir ve standart olmayan modeller için özelleştirilebilir. Şuradan miras alarak DetectionTrainer
modelinizin ihtiyaçlarını desteklemek için farklı yöntemleri aşırı yükleyebilirsiniz. İşte basit bir örnek:
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()
Daha kapsamlı talimatlar ve örnekler için DetectionTrainer belgelerini inceleyin.