Rückrufe
Rückrufe
Ultralytics Framework unterstützt Rückrufe als Einstiegspunkte in strategischen Phasen der Modi train, val, export und predict. Jeder Callback akzeptiert eine Trainer
, Validator
, oder Predictor
Objekt abhängig von der Art der Operation. Alle Eigenschaften dieser Objekte finden Sie im Abschnitt Referenz der Dokumentation.
Beobachten: Mastering Ultralytics YOLO : Rückrufe
Beispiele
Rückgabe zusätzlicher Informationen mit Vorhersage
In diesem Beispiel wollen wir mit jedem Ergebnisobjekt das Originalbild zurückgeben. So können wir das tun
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("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
Alle Rückrufe
Hier sind alle unterstützten Rückrufe. Siehe Quellcode der Rückrufe für zusätzliche Details.
Trainer-Rückrufe
Rückruf | Beschreibung |
---|---|
on_pretrain_routine_start |
Ausgelöst zu Beginn der Trainingsvorbereitung |
on_pretrain_routine_end |
Ausgelöst am Ende der Vorübungen |
on_train_start |
Ausgelöst, wenn das Training beginnt |
on_train_epoch_start |
Ausgelöst zu Beginn einer jeden Trainingsepoche |
on_train_batch_start |
Ausgelöst zu Beginn eines jeden Trainingsstapels |
optimizer_step |
Ausgelöst während des Optimierungsschritts |
on_before_zero_grad |
Ausgelöst, bevor die Gradienten auf Null gesetzt werden |
on_train_batch_end |
Ausgelöst am Ende eines jeden Trainingsstapels |
on_train_epoch_end |
Ausgelöst am Ende jeder Trainingsepoche |
on_fit_epoch_end |
Ausgelöst am Ende jeder Anpassungsepoche |
on_model_save |
Ausgelöst, wenn das Modell gespeichert wird |
on_train_end |
Ausgelöst, wenn der Trainingsprozess endet |
on_params_update |
Ausgelöst, wenn Modellparameter aktualisiert werden |
teardown |
Wird ausgelöst, wenn der Trainingsprozess bereinigt wird |
Validator Rückrufe
Rückruf | Beschreibung |
---|---|
on_val_start |
Ausgelöst, wenn die Validierung beginnt |
on_val_batch_start |
Ausgelöst zu Beginn einer jeden Validierungscharge |
on_val_batch_end |
Ausgelöst am Ende einer jeden Validierungscharge |
on_val_end |
Ausgelöst, wenn die Validierung endet |
Rückrufe von Prädiktoren
Rückruf | Beschreibung |
---|---|
on_predict_start |
Ausgelöst, wenn der Vorhersageprozess beginnt |
on_predict_batch_start |
Ausgelöst zu Beginn einer jeden Vorhersagecharge |
on_predict_postprocess_end |
Ausgelöst am Ende der Nachbearbeitung der Vorhersage |
on_predict_batch_end |
Ausgelöst am Ende jeder Vorhersagecharge |
on_predict_end |
Ausgelöst, wenn der Vorhersageprozess endet |
Exporter Rückrufe
Rückruf | Beschreibung |
---|---|
on_export_start |
Ausgelöst, wenn der Exportvorgang beginnt |
on_export_end |
Ausgelöst, wenn der Exportvorgang beendet ist |
FAQ
Was sind Ultralytics Rückrufe und wie kann ich sie nutzen?
Ultralytics Rückrufe sind spezielle Einstiegspunkte, die in wichtigen Phasen der Modelloperationen wie Training, Validierung, Export und Vorhersage ausgelöst werden. Diese Rückrufe ermöglichen benutzerdefinierte Funktionen an bestimmten Punkten des Prozesses, die Erweiterungen und Änderungen des Arbeitsablaufs ermöglichen. Jeder Callback akzeptiert eine Trainer
, Validator
, oder Predictor
Objekt, abhängig von der Art des Vorgangs. Die detaillierten Eigenschaften dieser Objekte finden Sie in der Referenzabschnitt.
Um einen Rückruf zu verwenden, können Sie eine Funktion definieren und sie dann dem Modell mit der Option add_callback
Methode. Hier ein Beispiel dafür, wie zusätzliche Informationen während der Vorhersage zurückgegeben werden können:
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
Wie kann ich die Ultralytics Trainingsroutine mit Rückrufen anpassen?
Um Ihre Ultralytics Trainingsroutine mit Hilfe von Rückrufen anzupassen, können Sie Ihre Logik in bestimmten Phasen des Trainingsprozesses einfügen. Ultralytics YOLO bietet eine Vielzahl von Trainingsrückrufen wie on_train_start
, on_train_end
und on_train_batch_end
. Diese ermöglichen es Ihnen, benutzerdefinierte Metriken, Verarbeitungen oder Protokollierungen hinzuzufügen.
Das folgende Beispiel zeigt, wie zusätzliche Metriken am Ende jeder Trainingsepoche protokolliert werden können:
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("yolo11n.pt")
model.add_callback("on_train_epoch_end", on_train_epoch_end)
model.train(data="coco.yaml", epochs=10)
Weitere Einzelheiten zum effektiven Einsatz von Trainingsrückrufen finden Sie im Trainingshandbuch.
Warum sollte ich Callbacks während der Validierung in Ultralytics YOLO verwenden?
Verwendung von Rückrufe während der Validierung in Ultralytics YOLO können die Modellevaluation verbessern, indem sie eine benutzerdefinierte Verarbeitung, Protokollierung oder Berechnung von Metriken ermöglichen. Rückrufe wie z.B. on_val_start
, on_val_batch_end
und on_val_end
bieten Einstiegspunkte für die Einbindung benutzerdefinierter Logik und gewährleisten detaillierte und umfassende Validierungsprozesse.
So können Sie beispielsweise zusätzliche Validierungsmetriken protokollieren oder Zwischenergebnisse für weitere Analysen speichern. Hier ist ein Beispiel für die Protokollierung benutzerdefinierter Metriken am Ende der Validierung:
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("yolo11n.pt")
model.add_callback("on_val_end", on_val_end)
model.val(data="coco.yaml")
Im Validierungsleitfaden finden Sie weitere Informationen zur Integration von Rückrufen in Ihren Validierungsprozess.
Wie füge ich einen benutzerdefinierten Callback für den Vorhersagemodus in Ultralytics YOLO hinzu?
Um einen benutzerdefinierten Callback für die Prognosemodus in Ultralytics YOLO definieren Sie eine Rückruffunktion und registrieren sie mit dem Vorhersageprozess. Übliche Rückrufe für die Vorhersage sind on_predict_start
, on_predict_batch_end
und on_predict_end
. Diese ermöglichen die Änderung der Vorhersageergebnisse und die Integration zusätzlicher Funktionen wie Datenprotokollierung oder Ergebnisumwandlung.
Hier ein Beispiel, bei dem ein benutzerdefinierter Rückruf zur Protokollierung von Vorhersagen verwendet wird:
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("yolo11n.pt")
model.add_callback("on_predict_end", on_predict_end)
results = model.predict(source="image.jpg")
Für eine umfassendere Verwendung lesen Sie bitte die Anleitung zur Vorhersage, die detaillierte Anweisungen und zusätzliche Anpassungsoptionen enthält.
Was sind einige praktische Beispiele für die Verwendung von Rückrufen in Ultralytics YOLO ?
Ultralytics YOLO unterstützt verschiedene praktische Implementierungen von Rückrufen zur Verbesserung und Anpassung verschiedener Phasen wie Training, Validierung und Vorhersage. Einige praktische Beispiele sind:
- Protokollierung benutzerdefinierter Metriken: Protokollieren Sie zusätzliche Metriken in verschiedenen Phasen, z. B. am Ende von Trainings- oder Validierungsepochen.
- Datenerweiterung: Implementieren Sie benutzerdefinierte Datentransformationen oder -erweiterungen während der Vorhersage oder der Trainingsbatches.
- Zwischenergebnisse: Speichern Sie Zwischenergebnisse wie Vorhersagen oder Frames zur weiteren Analyse oder Visualisierung.
Beispiel: Kombinieren von Frames mit Vorhersageergebnissen während der Vorhersage mit 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
In der vollständigen Callback-Referenz finden Sie weitere Optionen und Beispiele.