Rückrufe
Rückrufe
Ultralytics Framework unterstützt Callbacks 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 des Vorgangs. Alle Eigenschaften dieser Objekte findest du im Abschnitt "Referenz" in der Dokumentation.
Pass auf: Mastering Ultralytics YOLO: Callbacks
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 Callbacks. Weitere Details findest du im Quellcode der Rückrufe.
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 |
Triggered at the start of each training epoch |
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 Fit-Epoche |
on_model_save |
Wird 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 Ausbildungsprozess aufgeräumt 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 jeder Validierungscharge |
on_val_end |
Ausgelöst, wenn die Validierung endet |
Prädikator-Rückrufe
Rückruf | Beschreibung |
---|---|
on_predict_start |
Ausgelöst, wenn der Vorhersageprozess beginnt |
on_predict_batch_start |
Ausgelöst zu Beginn jeder 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 |
Wird ausgelöst, wenn der Exportvorgang beginnt |
on_export_end |
Ausgelöst, wenn der Exportvorgang endet |
FAQ
Was sind Ultralytics Rückrufe und wie kann ich sie nutzen?
Ultralytics Rückrufe sind spezielle Einstiegspunkte, die während wichtiger 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. Detaillierte Eigenschaften dieser Objekte findest du in der Referenzabschnitt.
Um einen Rückruf zu verwenden, kannst du eine Funktion definieren und sie dann dem Modell mit der Option add_callback
Methode. Hier ist ein Beispiel dafür, wie du bei der Vorhersage zusätzliche Informationen erhältst:
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 deine Ultralytics Trainingsroutine mit Hilfe von Callbacks anzupassen, kannst du deine Logik in bestimmten Phasen des Trainingsprozesses einfügen. Ultralytics YOLO bietet eine Vielzahl von Trainings-Callbacks wie on_train_start
, on_train_end
, und on_train_batch_end
. Diese ermöglichen es dir, benutzerdefinierte Metriken, Verarbeitungen oder Protokollierungen hinzuzufügen.
Hier ist ein Beispiel dafür, wie du am Ende jeder Trainingsepoche zusätzliche Metriken aufzeichnen kannst:
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)
Im Trainingsleitfaden findest du weitere Informationen darüber, wie du Trainingsrückrufe effektiv nutzen kannst.
Warum sollte ich Callbacks bei der Validierung in Ultralytics YOLO verwenden?
Mit 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.
Du könntest zum Beispiel zusätzliche Validierungskennzahlen protokollieren oder Zwischenergebnisse für weitere Analysen speichern wollen. Hier ist ein Beispiel dafür, wie du benutzerdefinierte Metriken am Ende der Validierung protokollieren kannst:
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 findest du weitere Informationen zur Integration von Rückrufen in deinen Validierungsprozess.
Wie füge ich einen benutzerdefinierten Callback für den Vorhersagemodus in Ultralytics YOLO hinzu?
Um einen benutzerdefinierten Callback für die Vorhersagemodus in Ultralytics YOLO definierst du eine Callback-Funktion und registrierst sie für den Vorhersageprozess. Übliche Rückrufe für die Vorhersage sind on_predict_start
, on_predict_batch_end
, und on_predict_end
. Diese ermöglichen es, die Vorhersageergebnisse zu ändern und zusätzliche Funktionen wie Datenprotokollierung oder Ergebnisumwandlung zu integrieren.
Hier ist ein Beispiel, in dem ein benutzerdefinierter Callback verwendet wird, um Vorhersagen zu protokollieren:
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 Nutzung siehe den Prediction Guide, der detaillierte Anweisungen und zusätzliche Anpassungsoptionen enthält.
Welche praktischen Beispiele gibt es für die Verwendung von Rückrufen in Ultralytics YOLO ?
Ultralytics YOLO unterstützt verschiedene praktische Implementierungen von Rückrufen, um verschiedene Phasen wie Training, Validierung und Vorhersage zu verbessern und anzupassen. Einige praktische Beispiele sind:
- Benutzerdefinierte Metriken protokollieren: Protokolliere zusätzliche Metriken in verschiedenen Phasen, z. B. am Ende von Trainings- oder Validierungsepochen.
- Data Augmentation: Implement custom data transformations or augmentations during prediction or training batches.
- Zwischenergebnisse: Speichere Zwischenergebnisse wie Vorhersagen oder Rahmen für weitere Analysen oder Visualisierungen.
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 findest du weitere Optionen und Beispiele.