İçeriğe geç

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 YOLOv8 : Gelişmiş Özelleştirme

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 fonksiyon
  • get_dataloader() - Veri yükleyiciyi oluşturan işlev Daha fazla ayrıntı ve kaynak kodu şurada bulunabilir BaseTrainer Referans

DetectionTrainer

İşte nasıl kullanabileceğiniz YOLOv8 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):
        ...


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ükleyen epochs İş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):
        ...


class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        return MyCustomModel(...)


# callback to upload model weights
def log_model(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.



Oluşturuldu 2023-11-12, Güncellendi 2024-02-03
Yazarlar: glenn-jocher (4), RizwanMunawar (1), AyushExel (1), Laughing-q (1)

Yorumlar