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
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 modelDetectionTrainer'ı Ö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
DetectionTrainerbileşenini belirli görevler için özelleştir.DetectionTrainersınıfından türetmeyle başla ve özel işlevsellikler uygulamak içinget_modelgibi 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 modelKayı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
BaseTrainerReferansı bölümüne bak.Eğitim sürecini izlemek ve değiştirmek için
DetectionTraineriç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,
DetectionTrainerson derece esnektir ve standart olmayan modeller için özelleştirilebilir.DetectionTrainersı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
DetectionTrainerReferansı bölümünü incele.