Geri aramalar
Ultralytics çerçevesi, işlem sırasında stratejik aşamalarda giriş noktaları olarak hizmet veren geri aramaları destekler train
, val
, export
ve predict
modları. Her geri arama bir Trainer
, Validator
veya Predictor
nesnesi, işlem türüne bağlı olarak. Bu nesnelerin tüm özellikleri şu bölümde ayrıntılı olarak açıklanmıştır Referans bölümü dokümantasyonun.
İzle: Mastering Ultralytics YOLO : Geri aramalar
Örnekler
Tahminle Birlikte Ek Bilgi Döndürme
Bu örnekte, her bir sonuç nesnesiyle birlikte orijinal karenin 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
Tüm Geri Çağırmalar
Aşağıda desteklenen tüm geri aramalar bulunmaktadır. Daha fazla ayrıntı için geri aramalar 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 |
Ön eğitim rutininin sonunda tetiklenir. |
on_train_start |
Eğitim başladığında tetiklenir. |
on_train_epoch_start |
Her eğitim döneminin başı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 döneminin sonunda tetiklenir. |
on_fit_epoch_end |
Her uyum 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
, Validator
veya 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 fonksiyon tanımlayın ve bunu modele eklemek için model.add_callback()
yöntemini kullanabilirsiniz. İşte tahmin sırasında ek bilgi döndürmeye 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("yolo11n.pt")
model.add_callback("on_predict_batch_end", on_predict_batch_end)
for result, frame in model.predict():
pass
Ultralytics eğitim rutinini geri aramaları kullanarak 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 ölçümler, işleme veya günlük kaydı eklemenize olanak tanır.
Geri aramalarla katmanları dondururken BatchNorm istatistiklerinin nasıl dondurulacağı aşağıda açıklanmıştır:
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ı etkin bir şekilde kullanma hakkında daha fazla bilgi için Eğitim Kılavuzu'na bakın.
Neden Ultralytics YOLO adresinde doğrulama sırasında geri aramalar kullanmalıyım?
Ultralytics YOLO 'da doğrulama sırasında geri aramaları kullanmak, özel işleme, günlük kaydı veya metrik hesaplamayı etkinleştirerek model değerlendirmesini geliştirir. Geri aramalar gibi on_val_start
, on_val_batch_end
ve 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, yalnızca ilk üç yerine tüm doğrulama gruplarını ç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 aramaları doğrulama sürecinize dahil etme hakkında daha fazla bilgi için Doğrulama Kılavuzu'na bakın.
Ultralytics YOLO adresinde tahmin modu için özel bir geri çağırmayı nasıl ekleyebilirim?
Ultralytics YOLO'da tahmin modu için özel bir geri arama eklemek için, bir geri arama işlevi tanımlayın ve bunu tahmin işlemine kaydedin. Yaygın tahmin geri çağrıları şunları içerir on_predict_start
, on_predict_batch_end
ve 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.
Burada, özel bir geri aramanın belirli bir sınıftan bir nesnenin mevcut olup olmadığına bağlı olarak tahminleri kaydettiği bir örnek yer almaktadır:
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 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:
- Özel Metrikleri Günlüğe Kaydetme: Eğitim veya doğrulama epoklarının sonu gibi farklı aşamalarda ek metrikleri günlüğe kaydedin.
- Veri Büyütme: Tahmin veya eğitim partileri sırasında özel veri dönüşümleri veya artırımları uygulayın.
- 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("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.