Meet YOLO26: next-gen vision AI.

Link to this sectionGelişmiş Özelleştirme#

Hem Ultralytics YOLO komut satırı hem de Python arayüzleri, temel motor yürütücüler üzerine kurulmuş üst düzey soyutlamalardır. Bu kılavuz, Trainer motoruna odaklanarak onu özel ihtiyaçlarınız için nasıl özelleştireceğinizi 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, omurga dondurma ve katman başına öğrenme oranları) dair pratik örnekler için Customizing Trainer kılavuzuna bakın.

Link to this sectionBaseTrainer#

BaseTrainer sınıfı, çeşitli görevlere uyarlanabilir genel bir eğitim rutini sağlar. Gerekli formatlara bağlı kalarak belirli işlevleri veya işlemleri geçersiz kılarak (override) bunu özelleştirin. Örneğin, şu işlevleri geçersiz kılarak kendi özel modelinizi ve veri yükleyicinizi entegre edin:

  • 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ı kısmına bakın.

Link to this sectionDetectionTrainer#

İşte Ultralytics YOLO DetectionTrainer öğesini kullanma ve özelleştirme yolu:

from ultralytics.models.yolo.detect import DetectionTrainer

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

Link to this sectionDetectionTrainer Özelleştirme#

Doğrudan desteklenmeyen özel bir tespit modelini eğitmek için mevcut get_model işlevini aşırı yükleyin:

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

Further customize the trainer by modifying the loss function or adding a callback to upload the model to Google Drive every 10 epochs. Here's an example:

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

Callback tetikleme olayları ve giriş noktaları hakkında daha fazla bilgi için Callbacks Guide kısmına bakın.

Link to this sectionDiğer Motor Bileşenleri#

Validators ve Predictors gibi diğer bileşenleri de benzer şekilde özelleştirin. Daha fazla bilgi için Validators ve Predictors belgelerine başvurun.

Link to this sectionYOLO'yu Özel Eğiticilerle Kullanma#

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ınızda daha fazla esneklik için bu mimariden yararlanabilirsiniz:

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 gereksinimlerinize uyacak şekilde özelleştirirken YOLO arayüzünün basitliğini korumanıza olanak tanır.

Link to this sectionSSS#

Link to this sectionUltralytics YOLO DetectionTrainer'ı belirli görevler için nasıl özelleştirebilirim?#

DetectionTrainer öğesini, özel modelinize ve veri yükleyicinize uyarlamak için yöntemlerini geçersiz kılarak belirli görevler için özelleştirin. DetectionTrainer sınıfından miras alarak başlayın ve özel işlevler uygulamak için get_model gibi yöntemleri yeniden tanımlayın. İş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 işlevini değiştirmek veya bir callback eklemek gibi daha fazla özelleştirme için Callbacks Guide kısmına başvurun.

Link to this sectionUltralytics YOLO içindeki BaseTrainer'ın temel bileşenleri nelerdir?#

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

  • get_model(cfg, weights): Eğitilecek modeli oluşturur.
  • get_dataloader(): Veri yükleyiciyi oluşturur.
  • preprocess_batch(): Model ileri geçişinden önce yığın ön işlemesini gerçekleştirir.
  • set_model_attributes(): Model özniteliklerini veri kümesi bilgilerine göre 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ı kısmına bakın.

Link to this sectionUltralytics YOLO DetectionTrainer'a nasıl callback ekleyebilirim?#

DetectionTrainer içindeki eğitim sürecini izlemek ve değiştirmek için callback'ler ekleyin. İşte her eğitim epoch sonrasında model ağırlıklarını günlüğe kaydetmek için nasıl callback ekleneceğine dair bir örnek:

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

Callback olayları ve giriş noktaları hakkında daha fazla ayrıntı için Callbacks Guide kısmına başvurun.

Link to this sectionModel eğitimi için neden Ultralytics YOLO kullanmalıyım?#

Ultralytics YOLO, güçlü motor yürütücüler üzerinde üst düzey bir soyutlama sağlar; bu da onu hızlı geliştirme ve özelleştirme için ideal kılar. 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 vizyon yapay zeka uygulamaları için optimize edilmiştir.
  • Özelleştirme: Özel modeller, kayıp işlevleri 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: ML ekosistemindeki popüler çerçeveler ve araçlarla sorunsuz bir şekilde çalışır.

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

Link to this sectionUltralytics YOLO DetectionTrainer'ı standart olmayan modeller için kullanabilir miyim?#

Evet, DetectionTrainer son derece esnektir ve standart olmayan modeller için özelleştirilebilir. DetectionTrainer sınıfından miras alın ve modelinizin özel ihtiyaçlarını desteklemek için yöntemleri aşırı yükleyin. İş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ı kısmını inceleyin.

Yorumlar