İçeriğe geç

Geri aramalar

Geri aramalar

Ultralytics çerçevesi, train, val, export ve predict modlarının stratejik aşamalarında giriş noktaları olarak geri aramaları destekler. Her geri arama bir Trainer, Validatorveya Predictor işlem türüne bağlı olarak nesne. Bu nesnelerin tüm özellikleri dokümanların Referans bölümünde bulunabilir.



İzle: Mastering Ultralytics YOLOv8 : Geri aramalar

Örnekler

Tahmin ile ek bilgi döndürme

Bu örnekte, her sonuç nesnesiyle birlikte orijinal kareyi döndürmek istiyoruz. Bunu şu şekilde yapabiliriz

from ultralytics import YOLO


def on_predict_batch_end(predictor):
    """Handle prediction batch end by combining results with corresponding frames; modifies predictor results."""
    _, image, _, _ = predictor.batch

    # Ensure that image is a list
    image = image if isinstance(image, list) else [image]

    # Combine the prediction results with the corresponding frames
    predictor.results = zip(predictor.results, image)


# Create a YOLO model instance
model = YOLO("yolov8n.pt")

# Add the custom callback to the model
model.add_callback("on_predict_batch_end", on_predict_batch_end)

# Iterate through the results and frames
for result, frame in model.predict():  # or model.track()
    pass

Tüm geri aramalar

İşte desteklenen tüm geri aramalar. Ek ayrıntılar için callbacks kaynak koduna bakın.

Eğitmen Geri Aramaları

Geri arama Açıklama
on_pretrain_routine_start Antrenman öncesi rutinin başlangıcında tetiklenir
on_pretrain_routine_end Antrenman öncesi rutinin sonunda tetiklenir
on_train_start Eğitim başladığında tetiklenir
on_train_epoch_start Her eğitim epokunun başlangıcında tetiklenir
on_train_batch_start Her eğitim grubunun başlangıcında tetiklenir
optimizer_step Optimize edici adım sırasında tetiklenir
on_before_zero_grad Gradyanlar sıfırlanmadan önce tetiklenir
on_train_batch_end Her eğitim grubunun sonunda tetiklenir
on_train_epoch_end Her eğitim epokunun sonunda tetiklenir
on_fit_epoch_end Her fit epokunun sonunda tetiklenir
on_model_save Model kaydedildiğinde tetiklenir
on_train_end Eğitim süreci sona erdiğinde tetiklenir
on_params_update Model parametreleri güncellendiğinde tetiklenir
teardown Eğitim süreci temizlenirken tetiklenir

Doğrulayıcı Geri Çağırmaları

Geri arama Açıklama
on_val_start Doğrulama başladığında tetiklenir
on_val_batch_start Her doğrulama grubunun başlangıcında tetiklenir
on_val_batch_end Her doğrulama grubunun sonunda tetiklenir
on_val_end Doğrulama sona erdiğinde tetiklenir

Tahminci Geri Çağırmaları

Geri arama Açıklama
on_predict_start Tahmin süreci başladığında tetiklenir
on_predict_batch_start Her tahmin grubunun başlangıcında tetiklenir
on_predict_postprocess_end Tahmin son işlemenin sonunda tetiklenir
on_predict_batch_end Her tahmin grubunun sonunda tetiklenir
on_predict_end Tahmin süreci sona erdiğinde tetiklenir

İhracatçı Geri Çağırmaları

Geri arama Açıklama
on_export_start Dışa aktarma işlemi başladığında tetiklenir
on_export_end Dışa aktarma işlemi sona erdiğinde tetiklenir

SSS

Ultralytics geri aramaları nedir ve bunları nasıl kullanabilirim?

Ultralytics geri aramalar eğitim, doğrulama, dışa aktarma ve tahmin gibi model işlemlerinin önemli aşamalarında tetiklenen özel giriş noktalarıdır. Bu geri aramalar, sürecin belirli noktalarında özel işlevsellik sağlayarak iş akışında geliştirmeler ve değişiklikler yapılmasına olanak tanır. Her geri arama bir Trainer, Validatorveya Predictor nesnesi, işlem türüne bağlı olarak. Bu nesnelerin ayrıntılı özellikleri için bkz. Referans bölümü.

Geri arama kullanmak için bir işlev tanımlayabilir ve ardından bunu modele add_callback yöntemini kullanabilirsiniz. Tahmin sırasında ek bilgilerin nasıl döndürüleceğine dair bir örnek aşağıda verilmiştir:

from ultralytics import YOLO


def on_predict_batch_end(predictor):
    """Handle prediction batch end by combining results with corresponding frames; modifies predictor results."""
    _, image, _, _ = predictor.batch
    image = image if isinstance(image, list) else [image]
    predictor.results = zip(predictor.results, image)


model = YOLO("yolov8n.pt")
model.add_callback("on_predict_batch_end", on_predict_batch_end)
for result, frame in model.predict():
    pass

Geri aramaları kullanarak Ultralytics eğitim rutinini nasıl özelleştirebilirim?

Geri aramaları kullanarak Ultralytics eğitim rutininizi özelleştirmek için, eğitim sürecinin belirli aşamalarına mantığınızı enjekte edebilirsiniz. Ultralytics YOLO aşağıdaki gibi çeşitli eğitim geri aramaları sağlar on_train_start, on_train_endve on_train_batch_end. Bunlar özel ölçümler, işleme veya günlük kaydı eklemenize olanak tanır.

İşte her eğitim döneminin sonunda ek ölçümlerin nasıl kaydedileceğine dair bir örnek:

from ultralytics import YOLO


def on_train_epoch_end(trainer):
    """Custom logic for additional metrics logging at the end of each training epoch."""
    additional_metric = compute_additional_metric(trainer)
    trainer.log({"additional_metric": additional_metric})


model = YOLO("yolov8n.pt")
model.add_callback("on_train_epoch_end", on_train_epoch_end)
model.train(data="coco.yaml", epochs=10)

Eğitim geri aramalarının nasıl etkili bir şekilde kullanılacağı hakkında daha fazla bilgi için Eğitim Kılavuzuna bakın.

Neden Ultralytics YOLO adresinde doğrulama sırasında geri aramalar kullanmalıyım?

Kullanma doğrulama sırasında geri aramalar Ultralytics YOLO özel işleme, günlük kaydı veya metrik hesaplamaya izin vererek model değerlendirmesini geliştirebilir. Geri aramalar, örneğin on_val_start, on_val_batch_endve on_val_end özel mantık enjekte etmek için giriş noktaları sağlayarak ayrıntılı ve kapsamlı doğrulama süreçleri sağlar.

Örneğin, ek doğrulama ölçümlerini günlüğe kaydetmek veya daha fazla analiz için ara sonuçları kaydetmek isteyebilirsiniz. Doğrulamanın sonunda özel metriklerin nasıl kaydedileceğine dair bir örnek aşağıda verilmiştir:

from ultralytics import YOLO


def on_val_end(validator):
    """Log custom metrics at end of validation."""
    custom_metric = compute_custom_metric(validator)
    validator.log({"custom_metric": custom_metric})


model = YOLO("yolov8n.pt")
model.add_callback("on_val_end", on_val_end)
model.val(data="coco.yaml")

Doğrulama sürecinize geri aramaları dahil etme hakkında daha fazla bilgi için Doğrulama Kılavuzu 'na göz atın.

Ultralytics YOLO adresinde tahmin modu için özel bir geri çağırmayı nasıl ekleyebilirim?

için özel bir geri arama eklemek için Tahmin Modu Ultralytics YOLO adresinde bir geri arama işlevi tanımlar ve bunu tahmin sürecine kaydedersiniz. Yaygın tahmin geri çağrıları şunları içerir on_predict_start, on_predict_batch_endve on_predict_end. Bunlar, tahmin çıktılarının değiştirilmesine ve veri kaydı veya sonuç dönüşümü gibi ek işlevlerin entegrasyonuna izin verir.

İşte tahminleri günlüğe kaydetmek için özel bir geri aramanın kullanıldığı bir örnek:

from ultralytics import YOLO


def on_predict_end(predictor):
    """Log predictions at the end of prediction."""
    for result in predictor.results:
        log_prediction(result)


model = YOLO("yolov8n.pt")
model.add_callback("on_predict_end", on_predict_end)
results = model.predict(source="image.jpg")

Daha kapsamlı kullanım için ayrıntılı talimatlar ve ek özelleştirme seçenekleri içeren Tahmin Kılavuzu 'na bakın.

Ultralytics YOLO adresinde geri aramaları kullanmanın bazı pratik örnekleri nelerdir?

Ultralytics YOLO eğitim, doğrulama ve tahmin gibi farklı aşamaları geliştirmek ve özelleştirmek için çeşitli pratik geri arama uygulamalarını destekler. Bazı pratik örnekler şunlardır:

  1. Özel Metrikleri Günlüğe Kaydetme: Eğitim veya doğrulama dönemlerinin sonu gibi farklı aşamalarda ek metrikleri günlüğe kaydedin.
  2. Veri Büyütme: Tahmin veya eğitim partileri sırasında özel veri dönüşümleri veya artırımları uygulayın.
  3. Ara Sonuçlar: Daha fazla analiz veya görselleştirme için tahminler veya çerçeveler gibi ara sonuçları kaydedin.

Örnek: Tahmin sırasında çerçevelerin tahmin sonuçlarıyla birleştirilmesi on_predict_batch_end:

from ultralytics import YOLO


def on_predict_batch_end(predictor):
    """Combine prediction results with frames."""
    _, image, _, _ = predictor.batch
    image = image if isinstance(image, list) else [image]
    predictor.results = zip(predictor.results, image)


model = YOLO("yolov8n.pt")
model.add_callback("on_predict_batch_end", on_predict_batch_end)
for result, frame in model.predict():
    pass

Daha fazla seçenek ve örnek bulmak için Complete Callback Reference 'ı keşfedin.



Oluşturma 2023-11-12, Güncelleme 2024-07-04
Yazarlar: glenn-jocher (9), RizwanMunawar (1), Laughing-q (1)

Yorumlar