Gelişmiş Özelleştirme
Hem Ultralytics YOLO komut satırı hem de Python arayüzleri, temel motor çalıştırıcıları üzerine inşa edilmiş yüksek seviyeli 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
Yaygın eğitici özelleştirmelerine dair pratik örnekler için — özel metrikler, sınıf ağırlıklı kayıp, model kaydetme, omurga dondurma ve katman bazlı öğrenme oranları — Eğiticiyi Özelleştirme kılavuzuna bakın.
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ılarak (override) özelleştirin. Örneğin, şu fonksiyonları 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 kod için BaseTrainer Referansı bölümüne bakın.
DetectionTrainer
İşte Ultralytics YOLO DetectionTrainer nasıl kullanılır ve özelleştirilir:
from ultralytics.models.yolo.detect import DetectionTrainer
trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best # Get the best modelDetectionTrainer Özelleştirme
Doğrudan desteklenmeyen özel bir tespit modelini eğitmek için mevcut get_model işlevselliğini aşırı yükleyin:
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()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, 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 callbacks
trainer.train()Geri çağırma tetikleme olayları ve giriş noktaları hakkında daha fazla bilgi için Geri Çağırmalar Kılavuzu bölümüne bakın.
Diğ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.
YOLO'yu Özel Eğiticilerle Kullanma
YOLO model sınıfı, Eğitici sınıfları için yüksek seviyeli 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, weights):
"""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.
SSS
Ultralytics YOLO DetectionTrainer'ı belirli görevler için nasıl özelleştirebilirim?
DetectionTrainer'ı özel modelinize ve veri yükleyicinize uyarlamak için metodlarını geçersiz kılarak belirli görevler için özelleştirin. DetectionTrainer'dan devralarak başlayın ve özel işlevler uygulamak için get_model gibi metodları yeniden tanımlayın. İş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 the best modelKayıp fonksiyonunu değiştirmek veya geri çağırma eklemek gibi daha fazla özelleştirme için Geri Çağırmalar Kılavuzu bölümüne başvurun.
Ultralytics YOLO'daki BaseTrainer'ın temel bileşenleri nelerdir?
BaseTrainer, genel metodlarını geçersiz kı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(): Model ileri geçişinden önce toplu ön işleme işlemlerini yönetir.set_model_attributes(): Model niteliklerini 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 kod hakkında daha fazla ayrıntı için BaseTrainer Referansı bölümüne bakın.
Ultralytics YOLO DetectionTrainer'a nasıl geri çağırma ekleyebilirim?
DetectionTrainer içindeki eğitim sürecini izlemek ve değiştirmek için geri çağırmalar ekleyin. İşte her eğitim epokundan sonra model ağırlıklarını kaydetmek için nasıl geri çağırma 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()Geri çağırma olayları ve giriş noktaları hakkında daha fazla ayrıntı için Geri Çağırmalar Kılavuzu bölümüne başvurun.
Neden model eğitimi için Ultralytics YOLO kullanmalıyım?
Ultralytics YOLO, güçlü motor çalıştırıcıları üzerinde yüksek seviyeli 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 tespiti ve çeşitli yapay zeka görme 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 hattı etkilemeden bağımsız olarak değiştirilebilir.
- Entegrasyon: Makine öğrenimi ekosistemindeki popüler çerçeveler ve araçlarla sorunsuz çalışır.
Ana Ultralytics YOLO sayfasını keşfederek YOLO'nun yetenekleri hakkında daha fazla bilgi edinin.
Ultralytics YOLO DetectionTrainer'ı standart olmayan modeller için kullanabilir miyim?
Evet, DetectionTrainer standart olmayan modeller için oldukça esnek ve özelleştirilebilirdir. DetectionTrainer'dan devralın ve modelinizin özel ihtiyaçlarını desteklemek için metodları aşırı yükleyin. İş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()Kapsamlı talimatlar ve örnekler için DetectionTrainer Referansı bölümünü inceleyin.