YOLO Vision 2026:

Gelişmiş Özelleştirme#

Hem Ultralytics YOLO komut satırı hem de Python arayüzleri, temel motor yürütücülerinin üzerine inşa edilmiş üst düzey soyutlamalardır. Bu kılavuz, Trainer motoruna odaklanarak onu özel ihtiyaçlarına göre nasıl özelleştireceğini açıklar.



Watch: Mastering Ultralytics YOLO: Advanced Customization
İpucu

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

BaseTrainer#

BaseTrainer sınıfı, çeşitli görevlere uyarlanabilir genel bir eğitim rutini sağlar. Gerekli formatlara bağlı kalarak belirli fonksiyonları veya işlemleri geçersiz kılmak suretiyle onu ö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ükleyicisini oluşturur.

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

DetectionTrainer#

Ultralytics YOLO DetectionTrainer bileşenini nasıl kullanacağın ve özelleştireceğin aşağıda açıklanmıştır:

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 nesne 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 her 10 epoch sonrasında modeli Google Drive'a yüklemek için bir geri çağırma (callback) ekleyerek eğiticiyi daha fazla özelleştirebilirsin. İş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 bölümüne 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 (Validators) ve Tahminciler (Predictors) 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ı (wrapper) 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 kendi özel gereksinimlerine uyacak şekilde özelleştirirken YOLO arayüzünün basitliğini korumanı sağlar.

SSS#

Belirli görevler için Ultralytics YOLO DetectionTrainer sınıfını nasıl özelleştirebilirim?#

Özel modeline ve veri yükleyicine uyum sağlamak üzere yöntemlerini geçersiz kalarak DetectionTrainer bileşenini belirli görevler için özelleştir. DetectionTrainer sınıfından türeterek 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ı (callback) eklemek gibi daha ileri düzey özelleştirmeler için Geri Çağrılar Kılavuzu bölümüne başvur.

Ultralytics YOLO içindeki BaseTrainer bileşeninin temel bileşenleri nelerdir?#

BaseTrainer, genel yöntemleri geçersiz kanı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ükleyicisini oluşturur.
  • preprocess_batch(): Modelin ileri yönlü geçişinden (forward pass) önce toplu (batch) ö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 detay için BaseTrainer Referansı bölümüne bak.

Ultralytics YOLO DetectionTrainer sınıfına nasıl geri çağrı ekleyebilirim?#

DetectionTrainer içindeki eğitim sürecini izlemek ve değiştirmek için geri çağrılar ekle. Her eğitim epoch sonrasında model ağırlıklarını kaydetmek için nasıl geri çağrı ekleneceği aşağıda gösterilmiştir:

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 detay için Geri Çağrılar Kılavuzu bölümüne başvur.

Model eğitimi için neden Ultralytics YOLO kullanmalıyım?#

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 getirir. 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 tespiti ve çeşitli yapay zeka görüşü uygulamaları için optimize edilmiştir.
  • Özelleştirme: Özel modeller, kayıp fonksiyonları ve veri yükleyicileri 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'nun yetenekleri hakkında daha fazla bilgi edin.

Standart dışı modeller için Ultralytics YOLO DetectionTrainer sınıfını kullanabilir miyim?#

Evet, DetectionTrainer standart olmayan modeller için son derece esnek ve özelleştirilebilirdir. 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