Geri Çağrı İşlevleri (Callbacks)
Ultralytics çerçevesi, sırasında stratejik aşamalarda giriş noktaları olarak hizmet veren geri aramaları destekler. train
, val
, export
ve predict
modları. Her geri çağırma bir kabul eder Trainer
, Validator
, veya Predictor
işlem türüne bağlı olarak nesne. Bu nesnelerin tüm özellikleri şurada ayrıntılı olarak açıklanmıştır: Referans bölümü belgelerin.
İzle: Ultralytics Geri Çağrıları Nasıl Kullanılır | Tahmin, Eğitim, Doğrulama ve Dışa Aktarma Geri Çağrıları | Ultralytics YOLO 🚀
Örnekler
Tahminle Birlikte Ek Bilgiler Döndürme
Bu örnekte, her sonuç nesnesiyle birlikte orijinal çerçevenin nasıl döndürüleceğini gösteriyoruz:
from ultralytics import YOLO
def on_predict_batch_end(predictor):
"""Combine prediction results with corresponding frames."""
_, 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("yolo11n.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
Model metriklerine şuradan erişin: on_model_save
geri çağırma (callback)
Bu örnek, kullanılarak bir kontrol noktası kaydedildikten sonra best_fitness puanı, total_loss ve diğer metrikler gibi eğitim ayrıntılarının nasıl alınacağını gösterir. on_model_save
geri çağırma (callback).
from ultralytics import YOLO
# Load a YOLO model
model = YOLO("yolo11n.pt")
def print_checkpoint_metrics(trainer):
"""Print trainer metrics and loss details after each checkpoint is saved."""
print(
f"Model details\n"
f"Best fitness: {trainer.best_fitness}, "
f"Loss names: {trainer.loss_names}, " # List of loss names
f"Metrics: {trainer.metrics}, "
f"Total loss: {trainer.tloss}" # Total loss value
)
if __name__ == "__main__":
# Add on_model_save callback.
model.add_callback("on_model_save", print_checkpoint_metrics)
# Run model training on custom dataset.
results = model.train(data="coco8.yaml", epochs=3)
Tüm Geri Çağrı İşlevleri
Aşağıda desteklenen tüm geri aramalar bulunmaktadır. Daha fazla ayrıntı için geri aramalar kaynak koduna bakın.
Eğitici Geri Çağrıları
Geri Çağırma (Callback) | Açıklama |
---|---|
on_pretrain_routine_start |
Ön eğitim rutininin başlangıcında tetiklenir. |
on_pretrain_routine_end |
Ön eğitim rutininin sonunda tetiklenir. |
on_train_start |
Eğitim başladığında tetiklenir. |
on_train_epoch_start |
Her bir eğitim epoch'unun başlangıcında tetiklenir. |
on_train_batch_start |
Her bir eğitim batch'inin başlangıcında tetiklenir. |
optimizer_step |
Optimizasyon algoritması adımı sırasında tetiklenir. |
on_before_zero_grad |
Gradyanlar sıfırlanmadan önce tetiklenir. |
on_train_batch_end |
Her bir eğitim batch'inin sonunda tetiklenir. |
on_train_epoch_end |
Her bir eğitim epoch'unun sonunda tetiklenir. |
on_fit_epoch_end |
Her bir uygunluk epoch'unun 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ğrıları
Geri Çağırma (Callback) | Açıklama |
---|---|
on_val_start |
Doğrulama başladığında tetiklenir. |
on_val_batch_start |
Her bir doğrulama batch'inin başlangıcında tetiklenir. |
on_val_batch_end |
Her bir doğrulama batch'inin sonunda tetiklenir. |
on_val_end |
Doğrulama sona erdiğinde tetiklenir. |
Tahmin Edici Geri Çağrıları
Geri Çağırma (Callback) | Açıklama |
---|---|
on_predict_start |
Tahmin işlemi başladığında tetiklenir. |
on_predict_batch_start |
Her bir tahmin batch'inin başlangıcında tetiklenir. |
on_predict_postprocess_end |
Tahmin son işlemlemenin sonunda tetiklenir. |
on_predict_batch_end |
Her bir tahmin batch'inin sonunda tetiklenir. |
on_predict_end |
Tahmin işlemi sona erdiğinde tetiklenir. |
Dışa Aktarıcı Geri Çağrıları
Geri Çağırma (Callback) | 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 çağrıları nelerdir ve bunları nasıl kullanabilirim?
Ultralytics geri çağrıları, eğitim, doğrulama, dışa aktarma ve tahmin gibi model işlemlerinin kilit aşamalarında tetiklenen özel giriş noktalarıdır. Bu geri çağrıları, süreçteki belirli noktalarda özel işlevselliğe olanak tanıyarak iş akışında iyileştirmeler ve değişiklikler yapılmasını sağlar. Her geri çağırma bir kabul eder Trainer
, Validator
, veya Predictor
işlem türüne bağlı olarak nesne. Bu nesnelerin ayrıntılı özellikleri için şuraya bakın: Referans bölümü.
Bir geri çağırma kullanmak için, bir fonksiyon tanımlayın ve şunu kullanarak modele ekleyin: model.add_callback()
method'u. İşte tahmin sırasında ek bilgi döndürme örneği:
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("yolo11n.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?
Eğitim sürecinin belirli aşamalarında mantık enjekte ederek Ultralytics eğitim rutininizi özelleştirin. Ultralytics YOLO, aşağıdakiler gibi çeşitli eğitim geri aramaları sağlar: on_train_start
, on_train_end
ve on_train_batch_end
, özel metrikler, işleme veya günlük kaydı eklemenize olanak tanır.
İşte geri aramalarla katmanları dondururken BatchNorm istatistiklerini nasıl dondurabileceğinize dair bir örnek:
from ultralytics import YOLO
# Add a callback to put the frozen layers in eval mode to prevent BN values from changing
def put_in_eval_mode(trainer):
n_layers = trainer.args.freeze
if not isinstance(n_layers, int):
return
for i, (name, module) in enumerate(trainer.model.named_modules()):
if name.endswith("bn") and int(name.split(".")[1]) < n_layers:
module.eval()
module.track_running_stats = False
model = YOLO("yolo11n.pt")
model.add_callback("on_train_epoch_start", put_in_eval_mode)
model.train(data="coco.yaml", epochs=10)
Eğitim geri aramalarını etkili bir şekilde kullanma hakkında daha fazla ayrıntı için Eğitim Kılavuzu'na bakın.
Ultralytics YOLO'da doğrulama sırasında neden geri aramaları kullanmalıyım?
Ultralytics YOLO'da doğrulama sırasında geri aramaları kullanmak, özel işleme, günlüğe kaydetme veya metrik hesaplamasına olanak tanıyarak model değerlendirmesini geliştirir. Şu gibi geri aramalar: on_val_start
, on_val_batch_end
ve on_val_end
ayrıntılı ve kapsamlı doğrulama süreçleri sağlayarak özel mantık enjekte etmek için giriş noktaları sağlar.
Örneğin, yalnızca ilk üçü yerine tüm doğrulama kümelerini çizmek için:
import inspect
from ultralytics import YOLO
def plot_samples(validator):
frame = inspect.currentframe().f_back.f_back
v = frame.f_locals
validator.plot_val_samples(v["batch"], v["batch_i"])
validator.plot_predictions(v["batch"], v["preds"], v["batch_i"])
model = YOLO("yolo11n.pt")
model.add_callback("on_val_batch_end", plot_samples)
model.val(data="coco.yaml")
Geri çağırmaları doğrulama sürecinize dahil etme konusunda daha fazla bilgi için Doğrulama Kılavuzu'na bakın.
Ultralytics YOLO'da tahmin modu için özel bir geri çağırma (callback) nasıl ekleyebilirim?
Ultralytics YOLO'da tahmin modu için özel bir geri çağırma eklemek için, bir geri çağırma işlevi tanımlayın ve bunu tahmin sürecine kaydedin. Yaygın tahmin geri çağırmaları şunları içerir: on_predict_start
, on_predict_batch_end
ve on_predict_end
. Bunlar, tahmin çıktılarını değiştirmeye ve veri kaydı veya sonuç dönüştürme gibi ek işlevlerin entegrasyonuna olanak tanır.
İşte belirli bir sınıfa ait bir nesnenin mevcut olup olmadığına bağlı olarak özel bir geri aramanın tahminleri kaydettiği bir örnek:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
class_id = 2
def save_on_object(predictor):
r = predictor.results[0]
if class_id in r.boxes.cls:
predictor.args.save = True
else:
predictor.args.save = False
model.add_callback("on_predict_postprocess_end", save_on_object)
results = model("pedestrians.mp4", stream=True, save=True)
for results in results:
pass
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'da 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 şunları içerir:
- Özel Metrikleri Günlüğe Kaydetme: Eğitim veya doğrulama evreleri sonunda olduğu gibi, farklı aşamalarda ek metrikler günlüğe kaydedin.
- Veri Artırma: Tahmin veya eğitim kümeleri sırasında özel veri dönüşümleri veya artırmaları uygulayın.
- Ara Sonuçlar: Daha fazla analiz veya görselleştirme için tahminler veya çerçeveler gibi ara sonuçları kaydedin.
Örnek: Kullanarak tahmin sırasında çerçeveleri tahmin sonuçlarıyla birleştirme 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("yolo11n.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 için geri arama kaynak kodunu keşfedin.