Gelişmiş Özelleştirme#
Ultralytics YOLO komut satırı ve Python arayüzlerinin ikisi de temel motor yürütücülerinin üzerine kurulmuş üst düzey soyutlamalardır. Bu kılavuz, Trainer motoruna odaklanır ve motoru özel ihtiyaçlarına göre nasıl özelleştirebileceğini açıklar.
İzle: Ultralytics YOLO'da Uzmanlaşma: Gelişmiş Özelleştirme
Özel ölçütler, sınıf ağırlıklı kayıp, model kaydetme, omurgayı dondurma ve katman başına öğrenme oranları gibi yaygın eğitici özelleştirmelerine ilişkin pratik örnekler için Eğiticiyi Özelleştirme kılavuzuna bak.
BaseTrainer#
BaseTrainer sınıfı, çeşitli görevlere uyarlanabilen genel bir eğitim rutini sağlar. Gerekli biçimlere bağlı kalarak belirli işlevleri veya işlemleri geçersiz kılıp özelleştirebilirsin. Örneğin, şu işlevleri geçersiz kılarak kendi özel modelini ve veri yükleyicini entegre et:
get_model(cfg, weights): Eğitilecek modeli oluşturur.get_dataloader(dataset_path, batch_size, rank, mode): Veri yükleyiciyi oluşturur.
Daha fazla ayrıntı ve kaynak kod için BaseTrainer Referansı sayfasına bak.
DetectionTrainer#
Ultralytics YOLO DetectionTrainer öğesini şu şekilde kullanıp özelleştirebilirsin:
from ultralytics.models.yolo.detect import DetectionTrainer
trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best # En iyi modeli alDetectionTrainer'ı Özelleştirme#
Doğrudan desteklenmeyen özel bir algılama modelini eğitmek için mevcut get_model işlevini genişlet:
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()Örneğin, en son ağırlıkları günlüğe kaydetmek veya yüklemek için her epoch sonunda çalıştırılan bir callback ekleyerek ya da kayıp işlevini değiştirerek eğiticiyi daha da özelleştirebilirsin. Örnek:
from ultralytics.models.yolo.detect import DetectionTrainer
from ultralytics.nn.tasks import DetectionModel
class MyCustomModel(DetectionModel):
def init_criterion(self):
"""Initializes a custom loss function for the model."""
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(...)
# Model ağırlıklarını günlüğe kaydetmek için callback
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) # Mevcut callback'lere ekler
trainer.train()Callback tetikleme olayları ve giriş noktaları hakkında daha fazla bilgi için Callbacks Kılavuzu sayfasına bak.
Diğer Motor Bileşenleri#
Validators ve Predictors gibi diğer bileşenleri de benzer şekilde özelleştirebilirsin. Daha fazla bilgi için Doğrulayıcılar ve Tahminleyiciler belgelerine bak.
YOLO'yu Özel Eğiticilerle Kullanma#
YOLO model sınıfı, Trainer 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
# Özel bir eğitici oluştur
class MyCustomTrainer(DetectionTrainer):
def get_model(self, cfg=None, weights=None, verbose=True):
"""Custom code implementation."""
# YOLO modelini başlat
model = YOLO("yolo26n.pt")
# Özel eğiticiyle eğit
results = model.train(trainer=MyCustomTrainer, data="coco8.yaml", epochs=3)Bu yaklaşım, temel eğitim sürecini özel gereksinimlerine göre özelleştirirken YOLO arayüzünün sadeliğini korumanı sağlar.
Sık Sorulan Sorular#
Özel modeline ve veri yükleyicine uyarlamak için yöntemlerini geçersiz kılarak
DetectionTraineröğesini belirli görevlere göre özelleştir.DetectionTrainersınıfından türeterek başla ve özel işlevler uygulamak içinget_modelgibi yöntemleri yeniden tanımla. Ö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 # En iyi modeli alKayıp işlevini değiştirmek veya bir callback eklemek gibi daha ileri özelleştirmeler için Callbacks Kılavuzu sayfasına bak.
BaseTrainer, eğitim rutinlerinin temelini oluşturur ve genel yöntemleri geçersiz kılınarak çeşitli görevlere göre özelleştirilebilir. Temel bileşenler şunlardır:get_model(cfg, weights): Eğitilecek modeli oluşturur.get_dataloader(dataset_path, batch_size, rank, mode): Veri yükleyiciyi oluşturur.preprocess_batch(): Modelin ileri geçişinden önce yığın ön işlemeyi gerçekleştirir.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 kod hakkında daha fazla ayrıntı için
BaseTrainerReferansı sayfasına bak.Eğitim sürecini izlemek ve değiştirmek için
DetectionTraineröğesine callback'ler ekle. Her eğitim epoch sonrasında model ağırlıklarını günlüğe kaydeden bir callback'i şu şekilde ekleyebilirsin:from ultralytics.models.yolo.detect import DetectionTrainer # Model ağırlıklarını günlüğe kaydetmek için callback 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) # Mevcut callback'lere ekler trainer.train()Callback olayları ve giriş noktaları hakkında daha fazla ayrıntı için Callbacks Kılavuzu sayfasına bak.
Ultralytics YOLO, güçlü motor yürütücülerine yönelik üst düzey bir soyutlama sunarak hızlı geliştirme ve özelleştirme için ideal bir çözüm sağlar. Başlıca 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örsel yapay zekâ uygulamaları için optimize edilmiştir.
- Özelleştirme: Özel modelleri, kayıp işlevlerini ve veri yükleyicileri kolayca genişletmene olanak tanır.
- Modülerlik: Bileşenler, tüm işlem hattını etkilemeden bağımsız olarak değiştirilebilir.
- Entegrasyon: Makine öğrenimi ekosistemindeki popüler çerçeveler ve araçlarla sorunsuz çalışır.
YOLO'nun yetenekleri hakkında daha fazla bilgi edinmek için ana Ultralytics YOLO sayfasını incele.
Evet,
DetectionTrainerstandart dışı modeller için son derece esnek ve özelleştirilebilirdir.DetectionTrainersınıfından türet ve belirli modelinin gereksinimlerini desteklemek için yöntemleri genişlet. 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ı yönergeler ve örnekler için
DetectionTrainerReferansı sayfasını incele.