Ultralytics YOLO27:

Gelişmiş Özelleştirme#

Hem Ultralytics YOLO komut satırı hem de Python arayüzleri, temel motor yürütücüleri üzerine kurulmuş üst düzey soyutlamalardır. Bu kılavuz, Trainer motoruna odaklanmakta ve bunu özel ihtiyaçlarına göre nasıl özelleştireceğini açıklamaktadır.



Watch: Mastering Ultralytics YOLO: Advanced Customization
İpucu

Yaygın eğitici özelleştirmelerinin pratik örnekleri (özel metrikler, sınıf ağırlıklı kayıp, model kaydetme, omurga dondurma ve katman başına öğrenme oranları) için Özelleştirme Eğiticisi kılavuzuna göz at.

BaseTrainer#

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

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

Daha fazla ayrıntı ve kaynak kodu için BaseTrainer Referansı bölümüne bak.

DetectionTrainer#

Ultralytics YOLO DetectionTrainer bileşenini kullanma ve özelleştirme yöntemi şöyledir:

from ultralytics.models.yolo.detect import DetectionTrainer

trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # Get the best model

DetectionTrainer'ı Özelleştirme#

Doğrudan desteklenmeyen özel bir algılama modelini eğitmek için mevcut get_model işlevselliğini aşırı yükle:

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

Kayıp fonksiyonunu değiştirerek veya modeli her 10 dönemde bir Google Drive'a yüklemek için bir geri çağrı ekleyerek eğiticiyi daha da özelleştir. İşte bir örnek:

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=None, weights=None, verbose=True):
        """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 callbacks
trainer.train()

Geri çağrı tetikleme olayları ve giriş noktaları hakkında daha fazla bilgi için Geri Çağrılar Kılavuzu sayfasına bak.

Diğer Motor Bileşenleri#

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

Özel Eğiticiler ile YOLO Kullanımı#

YOLO model sınıfı, Eğitici 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

# Create a custom trainer
class MyCustomTrainer(DetectionTrainer):
    def get_model(self, cfg=None, weights=None, verbose=True):
        """Custom code implementation."""

# Initialize YOLO model
model = YOLO("yolo26n.pt")

# Train with custom trainer
results = model.train(trainer=MyCustomTrainer, data="coco8.yaml", epochs=3)

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

SSS#

  • Özel modeline ve veri yükleyicine uyum sağlamak için yöntemlerini geçersiz kılarak DetectionTrainer bileşenini belirli görevler için özelleştir. DetectionTrainer sınıfından türetmeyle başla ve özel işlevsellikler uygulamak için get_model gibi yöntemleri yeniden tanımla. İşte bir ö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  # Get the best model

    Kayıp fonksiyonunu değiştirmek veya bir geri çağrı eklemek gibi daha ileri düzey özelleştirmeler için Geri Çağrılar Kılavuzu sayfasına başvur.

  • BaseTrainer, genel yöntemleri geçersiz kırılarak çeşitli görevler için özelleştirilebilen eğitim rutinlerinin temelini oluşturur. Temel bileşenler şunlardır:

    • get_model(cfg, weights): Eğitilecek modeli oluşturur.
    • get_dataloader(): Veri yükleyiciyi oluşturur.
    • preprocess_batch(): Modelin ileri geçişinden önce toplu ön işlemeyi yönetir.
    • 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 kodu hakkında daha fazla ayrıntı için BaseTrainer Referansı bölümüne bak.

  • Eğitim sürecini izlemek ve değiştirmek için DetectionTrainer içine geri çağrılar ekle. Her eğitim döneminden sonra model ağırlıklarını kaydetmek için bir geri çağrı ekleme yöntemi şöyledir:

    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 çağrı olayları ve giriş noktaları hakkında daha fazla ayrıntı için Geri Çağrılar Kılavuzu sayfasına başvur.

  • Ultralytics YOLO, güçlü motor yürütücüleri üzerinde üst düzey bir soyutlama sağlayarak hızlı geliştirme ve özelleştirme için ideal hale gelir. 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örü yapay zekası uygulamaları için optimize edilmiştir.
    • Özelleştirme: Özel modeller, kayıp fonksiyonları ve veri yükleyiciler için kolayca genişletilebilir.
    • Modülerlik: Bileşenler, tüm boru hattını etkilemeden bağımsız olarak değiştirilebilir.
    • Entegrasyon: Makine öğrenimi ekosistemindeki popüler çerçeveler ve araçlarla sorunsuz bir şekilde çalışır.

    Ana Ultralytics YOLO sayfasını inceleyerek YOLO yetenekleri hakkında daha fazla bilgi edin.

  • Evet, DetectionTrainer son derece esnektir ve standart olmayan modeller için özelleştirilebilir. DetectionTrainer sınıfından türet ve özel modelinin ihtiyaçlarını desteklemek için yöntemleri aşırı yükle. İşte 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ı talimatlar ve örnekler için DetectionTrainer Referansı bölümünü incele.

Yorumlar