Link to this sectionGeri Çağırmalar (Callbacks)#
Ultralytics çerçevesi; train, val, export ve predict modları sırasında stratejik aşamalarda giriş noktası olarak hizmet veren geri çağırmaları (callbacks) destekler. Her geri çağırma, işlem türüne bağlı olarak bir Trainer, Validator veya Predictor nesnesini kabul eder. Bu nesnelerin tüm özellikleri, belgelerin Referans bölümünde ayrıntılı olarak açıklanmıştır.
Watch: How to use Ultralytics Callbacks | Predict, Train, Validate and Export Callbacks | Ultralytics YOLO🚀
Link to this sectionÖrnekler#
Link to this sectionTahmin ile Ek Bilgi Döndürme#
Bu örnekte, her bir sonuç nesnesiyle birlikte orijinal kareyi (frame) nasıl döndüreceğimizi 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("yolo26n.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()
passLink to this sectionon_model_save geri çağırmasını kullanarak Model metriklerine erişim#
Bu örnek, on_model_save geri çağırması kullanılarak bir kontrol noktası (checkpoint) kaydedildikten sonra best_fitness skoru, total_loss ve diğer metrikler gibi eğitim ayrıntılarının nasıl alınacağını gösterir.
from ultralytics import YOLO
# Load a YOLO model
model = YOLO("yolo26n.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)Link to this sectionTüm Geri Çağırmalar#
Desteklenen tüm geri çağırmalar aşağıdadır. Daha fazla ayrıntı için geri çağırmalar kaynak koduna bakın.
Link to this sectionEğitmen (Trainer) Geri Çağırmaları#
| Geri Çağırma | Açıklama |
|---|---|
on_pretrain_routine_start | Ön eğitim rutininden önce, veri yükleme ve model kurulumundan önce tetiklenir. |
on_pretrain_routine_end | Ön eğitim rutininden sonra, veri yükleme ve model kurulumu tamamlandıktan sonra tetiklenir. |
on_train_start | Eğitim başladığında, ilk epoch başlamadan önce tetiklenir. |
on_train_epoch_start | Her eğitim epochunun başlangıcında, yığın (batch) yinelemesi başlamadan önce tetiklenir. |
on_train_batch_start | Her eğitim yığınının başlangıcında, ileri geçişten (forward pass) önce tetiklenir. |
optimizer_step | İyileştirici (optimizer) adımı sırasında tetiklenir. Özel entegrasyonlar için ayrılmıştır; varsayılan eğitim döngüsü tarafından çağrılmaz. |
on_before_zero_grad | Gradyanlar sıfırlanmadan önce tetiklenir. Özel entegrasyonlar için ayrılmıştır; varsayılan eğitim döngüsü tarafından çağrılmaz. |
on_train_batch_end | Her eğitim yığınının sonunda, geri geçişten (backward pass) sonra tetiklenir. İyileştirici adımı, gradyan birikimi nedeniyle ertelenebilir. |
on_train_epoch_end | Her eğitim epochunun sonunda, tüm yığınlar işlendikten sonra ancak doğrulama (validation) öncesinde tetiklenir. Doğrulama metrikleri ve uygunluk (fitness) henüz mevcut olmayabilir. |
on_model_save | Model kontrol noktası kaydedildiğinde, doğrulamadan sonra tetiklenir. |
on_fit_epoch_end | Her uyum (fit) epochunun (eğitim + doğrulama) sonunda, doğrulamadan ve herhangi bir kontrol noktası kaydından sonra tetiklenir. Doğrulama metrikleri ve uygunluk, epoch bazlı eğitim çağrısı için mevcuttur. Bu geri çağırma aynı zamanda, hiçbir kontrol noktası kaydının gerçekleşmediği ve uygunluğun mevcut olmayabileceği nihai en iyi model değerlendirmesi sırasında da çağrılır. |
on_train_end | Eğitim süreci sona erdiğinde, en iyi modelin nihai değerlendirmesinden sonra tetiklenir. |
on_params_update | Model parametreleri güncellendiğinde tetiklenir. Özel entegrasyonlar için ayrılmıştır; varsayılan eğitim döngüsü tarafından çağrılmaz. |
teardown | Eğitim süreci temizlenirken tetiklenir. |
Link to this sectionDoğrulayıcı (Validator) Geri Çağırmaları#
| Geri Çağırma | Açıklama |
|---|---|
on_val_start | Doğrulama başladığında tetiklenir. |
on_val_batch_start | Her doğrulama yığınının başlangıcında tetiklenir. |
on_val_batch_end | Her doğrulama yığınının sonunda tetiklenir. |
on_val_end | Doğrulama sona erdiğinde tetiklenir. |
Link to this sectionTahminci (Predictor) Geri Çağırmaları#
| Geri Çağırma | Açıklama |
|---|---|
on_predict_start | Tahmin süreci başladığında tetiklenir. |
on_predict_batch_start | Her tahmin yığınının başlangıcında tetiklenir. |
on_predict_postprocess_end | Tahmin sonrası işlemlerin (post-processing) sonunda tetiklenir. |
on_predict_batch_end | Her tahmin yığınının sonunda tetiklenir. |
on_predict_end | Tahmin süreci sona erdiğinde tetiklenir. |
Link to this sectionDışa Aktarıcı (Exporter) Geri Çağırmaları#
| Geri Çağırma | Açıklama |
|---|---|
on_export_start | Dışa aktarma süreci başladığında tetiklenir. |
on_export_end | Dışa aktarma süreci sona erdiğinde tetiklenir. |
Link to this sectionSSS#
Link to this sectionUltralytics geri çağırmaları nelerdir ve bunları nasıl kullanabilirim?#
Ultralytics geri çağırmaları; eğitim, doğrulama, dışa aktarma ve tahmin gibi temel model işlemleri sırasında tetiklenen özel giriş noktalarıdır. Bu geri çağırmalar, sürecin belirli noktalarında özel işlevsellik sağlayarak iş akışında iyileştirmelere ve değişikliklere olanak tanır. Her geri çağırma, işlem türüne bağlı olarak bir Trainer, Validator veya Predictor nesnesini kabul eder. Bu nesnelerin ayrıntılı özellikleri için Referans bölümüne bakın.
Bir geri çağırma kullanmak için bir fonksiyon tanımla ve bunu model.add_callback() yöntemini kullanarak modele ekle. İşte tahmin sırasında ek bilgi döndürmeye dair bir örnek:
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("yolo26n.pt")
model.add_callback("on_predict_batch_end", on_predict_batch_end)
for result, frame in model.predict():
passLink to this sectionUltralytics eğitim rutinini geri çağırmaları kullanarak nasıl özelleştirebilirim?#
Eğitim sürecinin belirli aşamalarında mantık ekleyerek Ultralytics eğitim rutinini özelleştir. Ultralytics YOLO, özel metrikler, işleme veya günlük kaydı eklemeni sağlayan on_train_start, on_train_end ve on_train_batch_end gibi çeşitli eğitim geri çağırmaları sağlar.
Geri çağırmalarla katmanları dondururken BatchNorm istatistiklerini dondurmanın yolu budur:
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("yolo26n.pt")
model.add_callback("on_train_epoch_start", put_in_eval_mode)
model.train(data="coco.yaml", epochs=10)Eğitim geri çağırmalarını etkili bir şekilde kullanma hakkında daha fazla ayrıntı için Eğitim Kılavuzuna bak.
Link to this sectionUltralytics YOLO'da doğrulama sırasında neden geri çağırmaları kullanmalıyım?#
Ultralytics YOLO'da doğrulama sırasında geri çağırmaları kullanmak, özel işleme, günlük kaydı veya metrik hesaplamasını etkinleştirerek model değerlendirmesini geliştirir. on_val_start, on_val_batch_end ve on_val_end gibi geri çağırmalar, özel mantık eklemek için giriş noktaları sağlayarak ayrıntılı ve kapsamlı doğrulama süreçleri sunar.
Örneğin, sadece ilk üç yığın yerine tüm doğrulama yığınlarını çizdirmek 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("yolo26n.pt")
model.add_callback("on_val_batch_end", plot_samples)
model.val(data="coco.yaml")Doğrulama sürecine geri çağırmaları dahil etme konusunda daha fazla bilgi için Doğrulama Kılavuzuna bak.
Link to this sectionUltralytics YOLO'da tahmin modu için özel bir geri çağırmayı nasıl eklerim?#
Ultralytics YOLO'da tahmin modu için özel bir geri çağırma eklemek istiyorsan, bir geri çağırma fonksiyonu tanımla ve bunu tahmin süreciyle kaydet. Yaygın tahmin geri çağırmaları arasında on_predict_start, on_predict_batch_end ve on_predict_end bulunur. Bunlar, tahmin çıktılarının değiştirilmesine 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 bulunup bulunmadığına bağlı olarak tahminleri kaydeden özel bir geri çağırma örneği:
from ultralytics import YOLO
model = YOLO("yolo26n.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:
passDaha kapsamlı kullanım için, ayrıntılı talimatlar ve ek özelleştirme seçenekleri içeren Tahmin Kılavuzuna bak.
Link to this sectionUltralytics YOLO'da geri çağırmaları kullanmaya dair bazı pratik örnekler nelerdir?#
Ultralytics YOLO, eğitim, doğrulama ve tahmin gibi farklı aşamaları geliştirmek ve özelleştirmek için çeşitli pratik geri çağırma uygulamalarını destekler. Bazı pratik örnekler şunlardır:
- Özel Metriklerin Günlüğünü Tutma: Eğitim veya doğrulama epochlarının sonu gibi farklı aşamalarda ek metriklerin günlüğünü tut.
- Veri Artırma: Tahmin veya eğitim yığınları sırasında özel veri dönüşümleri veya artırmaları uygula.
- Ara Sonuçlar: Daha fazla analiz veya görselleştirme için tahminler veya kareler gibi ara sonuçları kaydet.
Örnek: on_predict_batch_end kullanarak tahmin sırasında kareleri tahmin sonuçlarıyla birleştirme:
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("yolo26n.pt")
model.add_callback("on_predict_batch_end", on_predict_batch_end)
for result, frame in model.predict():
passDaha fazla seçenek ve örnek için geri çağırma kaynak kodunu keşfet.