İç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):
        """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ü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):
        """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

Ultralytics YOLOv8 DetectionTrainer'ı belirli görevler için nasıl özelleştirebilirim?

Özelleştirmek için Ultralytics YOLOv8 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 callbackreferans gösterebilirsiniz Geri Çağırma Kılavuzu.

Ultralytics YOLOv8 adresindeki BaseTrainer'ın temel bileşenleri nelerdir?

Bu BaseTrainer Ultralytics YOLOv8 adresinde eğitim rutinlerinin temelini oluşturur ve genel yöntemleri geçersiz kılınarak çeşitli görevler için özelleştirilebilir. Temel bileşenler şunları içerir:

  • 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.

Ultralytics YOLOv8 DetectionTrainer'a nasıl geri arama ekleyebilirim?

Eğitim sürecini izlemek ve değiştirmek için geri aramalar ekleyebilirsiniz Ultralytics YOLOv8 DetectionTrainer. Örneğin, her eğitim döneminden sonra model ağırlıklarını günlüğe kaydetmek için şu şekilde bir geri arama ekleyebilirsiniz:

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.

Model eğitimi için neden Ultralytics YOLOv8 adresini kullanmalıyım?

Ultralytics YOLOv8 güçlü motor yürütücüleri üzerinde üst düzey bir soyutlama sunarak hızlı geliştirme ve özelleştirme için idealdir. Temel avantajlar şunlardır:

  • Kullanım Kolaylığı: Hem komut satırı hem de Python arayüzleri karmaşık görevleri basitleştirir.
  • Performans: Gerçek zamanlı nesne algılama ve çeşitli görsel yapay zeka uygulamaları için optimize edilmiştir.
  • Özelleştirme: Özel modeller, kayıp fonksiyonları ve veri yükleyicileri için kolayca genişletilebilir.

YOLOv8 adresini ziyaret ederek 'un yetenekleri hakkında daha fazla bilgi edinin Ultralytics YOLO.

Standart olmayan modeller için Ultralytics YOLOv8 DetectionTrainer'ı kullanabilir miyim?

Evet, Ultralytics YOLOv8 DetectionTrainer son derece esnektir ve standart olmayan modeller için özelleştirilebilir. Şuradan miras alarak DetectionTrainermodelinizin 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.



Oluşturma 2023-11-12, Güncelleme 2024-07-04
Yazarlar: glenn-jocher (7), RizwanMunawar (1), AyushExel (1), Laughing-q (1)

Yorumlar