Ultralytics YOLO27:
Get Started

Gelişmiş Özelleştirme#

Ultralytics YOLO komut satırı ve Python arayüzlerinin ikisi de temel motor yürütücülerinin üzerine kurulmuş üst düzey soyutlamalardır. Bu kılavuz, Trainer motoruna odaklanır ve motoru özel ihtiyaçlarına göre nasıl özelleştirebileceğini açıklar.



İzle: Ultralytics YOLO'da Uzmanlaşma: Gelişmiş Özelleştirme
İpucu

Özel ölçütler, sınıf ağırlıklı kayıp, model kaydetme, omurgayı dondurma ve katman başına öğrenme oranları gibi yaygın eğitici özelleştirmelerine ilişkin pratik örnekler için Eğiticiyi Özelleştirme kılavuzuna bak.

BaseTrainer#

BaseTrainer sınıfı, çeşitli görevlere uyarlanabilen genel bir eğitim rutini sağlar. Gerekli biçimlere bağlı kalarak belirli işlevleri veya işlemleri geçersiz kılıp özelleştirebilirsin. Örneğin, şu işlevleri geçersiz kılarak kendi özel modelini ve veri yükleyicini entegre et:

  • get_model(cfg, weights): Eğitilecek modeli oluşturur.
  • get_dataloader(dataset_path, batch_size, rank, mode): Veri yükleyiciyi oluşturur.

Daha fazla ayrıntı ve kaynak kod için BaseTrainer Referansı sayfasına bak.

DetectionTrainer#

Ultralytics YOLO DetectionTrainer öğesini şu şekilde kullanıp özelleştirebilirsin:

from ultralytics.models.yolo.detect import DetectionTrainer

trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # En iyi modeli al

DetectionTrainer'ı Özelleştirme#

Doğrudan desteklenmeyen özel bir algılama modelini eğitmek için mevcut get_model işlevini genişlet:

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()

Örneğin, en son ağırlıkları günlüğe kaydetmek veya yüklemek için her epoch sonunda çalıştırılan bir callback ekleyerek ya da kayıp işlevini değiştirerek eğiticiyi daha da özelleştirebilirsin. Örnek:

from ultralytics.models.yolo.detect import DetectionTrainer
from ultralytics.nn.tasks import DetectionModel

class MyCustomModel(DetectionModel):
    def init_criterion(self):
        """Initializes a custom loss function for the model."""

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(...)

# Model ağırlıklarını günlüğe kaydetmek için callback
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)  # Mevcut callback'lere ekler
trainer.train()

Callback tetikleme olayları ve giriş noktaları hakkında daha fazla bilgi için Callbacks Kılavuzu sayfasına bak.

Diğer Motor Bileşenleri#

Validators ve Predictors gibi diğer bileşenleri de benzer şekilde özelleştirebilirsin. Daha fazla bilgi için Doğrulayıcılar ve Tahminleyiciler belgelerine bak.

YOLO'yu Özel Eğiticilerle Kullanma#

YOLO model sınıfı, Trainer sınıfları için üst düzey bir sarmalayıcı sağlar. Makine öğrenimi iş akışlarında daha fazla esneklik elde etmek için bu mimariden yararlanabilirsin:

from ultralytics import YOLO
from ultralytics.models.yolo.detect import DetectionTrainer

# Özel bir eğitici oluştur
class MyCustomTrainer(DetectionTrainer):
    def get_model(self, cfg=None, weights=None, verbose=True):
        """Custom code implementation."""

# YOLO modelini başlat
model = YOLO("yolo26n.pt")

# Özel eğiticiyle eğit
results = model.train(trainer=MyCustomTrainer, data="coco8.yaml", epochs=3)

Bu yaklaşım, temel eğitim sürecini özel gereksinimlerine göre özelleştirirken YOLO arayüzünün sadeliğini korumanı sağlar.

Sık Sorulan Sorular#

  • Özel modeline ve veri yükleyicine uyarlamak için yöntemlerini geçersiz kılarak DetectionTrainer öğesini belirli görevlere göre özelleştir. DetectionTrainer sınıfından türeterek başla ve özel işlevler uygulamak için get_model gibi yöntemleri yeniden tanımla. Örnek:

    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  # En iyi modeli al

    Kayıp işlevini değiştirmek veya bir callback eklemek gibi daha ileri özelleştirmeler için Callbacks Kılavuzu sayfasına bak.

  • BaseTrainer, eğitim rutinlerinin temelini oluşturur ve genel yöntemleri geçersiz kılınarak çeşitli görevlere göre özelleştirilebilir. Temel bileşenler şunlardır:

    • get_model(cfg, weights): Eğitilecek modeli oluşturur.
    • get_dataloader(dataset_path, batch_size, rank, mode): Veri yükleyiciyi oluşturur.
    • preprocess_batch(): Modelin ileri geçişinden önce yığın ön işlemeyi gerçekleştirir.
    • set_model_attributes(): Veri kümesi bilgilerine göre model özniteliklerini ayarlar.
    • get_validator(): Model değerlendirmesi için bir doğrulayıcı döndürür.

    Özelleştirme ve kaynak kod hakkında daha fazla ayrıntı için BaseTrainer Referansı sayfasına bak.

  • Eğitim sürecini izlemek ve değiştirmek için DetectionTrainer öğesine callback'ler ekle. Her eğitim epoch sonrasında model ağırlıklarını günlüğe kaydeden bir callback'i şu şekilde ekleyebilirsin:

    from ultralytics.models.yolo.detect import DetectionTrainer
    
    # Model ağırlıklarını günlüğe kaydetmek için callback
    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)  # Mevcut callback'lere ekler
    trainer.train()

    Callback olayları ve giriş noktaları hakkında daha fazla ayrıntı için Callbacks Kılavuzu sayfasına bak.

  • Ultralytics YOLO, güçlü motor yürütücülerine yönelik üst düzey bir soyutlama sunarak hızlı geliştirme ve özelleştirme için ideal bir çözüm sağlar. Başlıca 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 zekâ uygulamaları için optimize edilmiştir.
    • Özelleştirme: Özel modelleri, kayıp işlevlerini ve veri yükleyicileri kolayca genişletmene olanak tanır.
    • Modülerlik: Bileşenler, tüm işlem hattını etkilemeden bağımsız olarak değiştirilebilir.
    • Entegrasyon: Makine öğrenimi ekosistemindeki popüler çerçeveler ve araçlarla sorunsuz çalışır.

    YOLO'nun yetenekleri hakkında daha fazla bilgi edinmek için ana Ultralytics YOLO sayfasını incele.

  • Evet, DetectionTrainer standart dışı modeller için son derece esnek ve özelleştirilebilirdir. DetectionTrainer sınıfından türet ve belirli modelinin gereksinimlerini desteklemek için yöntemleri genişlet. Basit bir örnek:

    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()

    Kapsamlı yönergeler ve örnekler için DetectionTrainer Referansı sayfasını incele.

Yorumlar