Callbacks
Callbacks
Ultralytics Framework hỗ trợ callback làm điểm vào trong các giai đoạn chiến lược của chế độ Train, Val, Export và Predict. Mỗi callback chấp nhận một Trainer
, Validator
hoặc Predictor
đối tượng tùy thuộc vào loại hoạt động. Tất cả các thuộc tính của các đối tượng này có thể được tìm thấy trong phần Tham khảo của tài liệu.
Xem: Làm chủ Ultralytics YOLO : Gọi lại
Ví dụ
Trả về thông tin bổ sung bằng Dự đoán
Trong ví dụ này, chúng ta muốn trả về khung ban đầu với mỗi đối tượng kết quả. Đây là cách chúng ta có thể làm điều đó
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
Tất cả các callback
Dưới đây là tất cả các callback được hỗ trợ. Xem mã nguồn callbacks để biết thêm chi tiết.
Gọi lại huấn luyện viên
Gọi lại | Sự miêu tả |
---|---|
on_pretrain_routine_start | Được kích hoạt khi bắt đầu thói quen trước khi đào tạo |
on_pretrain_routine_end | Được kích hoạt vào cuối thói quen trước khi đào tạo |
on_train_start | Được kích hoạt khi quá trình đào tạo bắt đầu |
on_train_epoch_start | Được kích hoạt vào đầu mỗi kỷ nguyên đào tạo |
on_train_batch_start | Được kích hoạt khi bắt đầu mỗi đợt đào tạo |
optimizer_step | Được kích hoạt trong bước tối ưu hóa |
on_before_zero_grad | Được kích hoạt trước khi gradient bằng không |
on_train_batch_end | Được kích hoạt vào cuối mỗi đợt đào tạo |
on_train_epoch_end | Được kích hoạt vào cuối mỗi kỷ nguyên đào tạo |
on_fit_epoch_end | Được kích hoạt vào cuối mỗi kỷ nguyên phù hợp |
on_model_save | Được kích hoạt khi mô hình được lưu |
on_train_end | Được kích hoạt khi quá trình đào tạo kết thúc |
on_params_update | Được kích hoạt khi các tham số mô hình được cập nhật |
teardown | Được kích hoạt khi quá trình đào tạo đang được dọn dẹp |
Callback trình xác thực
Gọi lại | Sự miêu tả |
---|---|
on_val_start | Được kích hoạt khi quá trình xác thực bắt đầu |
on_val_batch_start | Được kích hoạt khi bắt đầu mỗi lô xác thực |
on_val_batch_end | Được kích hoạt vào cuối mỗi lô xác thực |
on_val_end | Được kích hoạt khi quá trình xác thực kết thúc |
Callback dự đoán
Gọi lại | Sự miêu tả |
---|---|
on_predict_start | Được kích hoạt khi quá trình dự đoán bắt đầu |
on_predict_batch_start | Được kích hoạt khi bắt đầu mỗi đợt dự đoán |
on_predict_postprocess_end | Được kích hoạt khi kết thúc quá trình xử lý hậu kỳ dự đoán |
on_predict_batch_end | Được kích hoạt vào cuối mỗi đợt dự đoán |
on_predict_end | Được kích hoạt khi quá trình dự đoán kết thúc |
Callback của nhà xuất khẩu
Gọi lại | Sự miêu tả |
---|---|
on_export_start | Được kích hoạt khi quá trình xuất bắt đầu |
on_export_end | Được kích hoạt khi quá trình xuất kết thúc |
FAQ
Là gì Ultralytics callback và làm thế nào tôi có thể sử dụng chúng?
Ultralytics Callbacks là các điểm vào chuyên biệt được kích hoạt trong các giai đoạn chính của hoạt động mô hình như đào tạo, xác nhận, xuất và dự đoán. Các callback này cho phép chức năng tùy chỉnh tại các điểm cụ thể trong quy trình, cho phép cải tiến và sửa đổi quy trình làm việc. Mỗi callback chấp nhận một Trainer
, Validator
hoặc Predictor
đối tượng, tùy thuộc vào loại hoạt động. Để biết các thuộc tính chi tiết của các đối tượng này, hãy tham khảo Phần tham khảo.
Để sử dụng callback, bạn có thể định nghĩa một hàm và sau đó thêm nó vào mô hình với add_callback
phương pháp. Dưới đây là ví dụ về cách trả về thông tin bổ sung trong quá trình dự đoán:
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
Làm thế nào tôi có thể tùy chỉnh Ultralytics Thói quen đào tạo bằng cách sử dụng callback?
Để tùy chỉnh Ultralytics Thói quen đào tạo Sử dụng callback, bạn có thể đưa logic của mình vào các giai đoạn cụ thể của quá trình đào tạo. Ultralytics YOLO Cung cấp nhiều callback đào tạo như on_train_start
, on_train_end
và on_train_batch_end
. Chúng cho phép bạn thêm số liệu tùy chỉnh, xử lý hoặc ghi nhật ký.
Dưới đây là ví dụ về cách ghi lại các chỉ số bổ sung vào cuối mỗi kỷ nguyên đào tạo:
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)
Tham khảo Hướng dẫn đào tạo để biết thêm chi tiết về cách sử dụng hiệu quả callback đào tạo.
Tại sao tôi nên sử dụng callback trong quá trình xác thực trong Ultralytics YOLO?
Sử dụng Callback trong quá trình xác thực trong Ultralytics YOLO có thể nâng cao đánh giá mô hình bằng cách cho phép xử lý tùy chỉnh, ghi nhật ký hoặc tính toán số liệu. Các callback như on_val_start
, on_val_batch_end
và on_val_end
Cung cấp các điểm vào để đưa logic tùy chỉnh, đảm bảo các quy trình xác thực chi tiết và toàn diện.
Ví dụ: bạn có thể muốn ghi lại các số liệu xác thực bổ sung hoặc lưu kết quả trung gian để phân tích thêm. Dưới đây là ví dụ về cách ghi chỉ số tùy chỉnh khi kết thúc quá trình xác thực:
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")
Hãy xem Hướng dẫn xác thực để biết thêm thông tin chi tiết về cách kết hợp callback vào quy trình xác thực của bạn.
Làm cách nào để đính kèm callback tùy chỉnh cho chế độ dự đoán trong Ultralytics YOLO?
Để đính kèm callback tùy chỉnh cho Chế độ dự đoán trong Ultralytics YOLO, bạn định nghĩa một hàm callback và đăng ký nó với quá trình dự đoán. Các callback dự đoán phổ biến bao gồm on_predict_start
, on_predict_batch_end
và on_predict_end
. Chúng cho phép sửa đổi đầu ra dự đoán và tích hợp các chức năng bổ sung như ghi dữ liệu hoặc chuyển đổi kết quả.
Dưới đây là ví dụ trong đó callback tùy chỉnh được sử dụng để ghi nhật ký dự đoán:
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")
Để sử dụng toàn diện hơn, hãy tham khảo Hướng dẫn dự đoán bao gồm hướng dẫn chi tiết và các tùy chọn tùy chỉnh bổ sung.
Một số ví dụ thực tế về việc sử dụng callback trong là gì Ultralytics YOLO?
Ultralytics YOLO Hỗ trợ triển khai thực tế khác nhau của callback để nâng cao và tùy chỉnh các giai đoạn khác nhau như đào tạo, xác nhận và dự đoán. Một số ví dụ thực tế bao gồm:
- Ghi nhật ký số liệu tùy chỉnh: Ghi nhật ký các chỉ số bổ sung ở các giai đoạn khác nhau, chẳng hạn như kết thúc kỷ nguyên đào tạo hoặc xác thực.
- Tăng cường dữ liệu : Triển khai chuyển đổi hoặc tăng cường dữ liệu tùy chỉnh trong quá trình dự đoán hoặc đào tạo.
- Kết quả trung gian: Lưu các kết quả trung gian như dự đoán hoặc khung để phân tích hoặc trực quan hóa thêm.
Ví dụ: Kết hợp khung với kết quả dự đoán trong quá trình dự đoán bằng cách sử dụng 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
Khám phá Tham chiếu gọi lại hoàn chỉnh để tìm thêm tùy chọn và ví dụ.