رد
رد
Ultralytics يدعم Framework عمليات الاسترجاعات كنقاط دخول في المراحل الإستراتيجية لأوضاع القطار و VAL والتصدير والتنبؤ. يقبل كل رد اتصال Trainer
, Validator
أو Predictor
كائن حسب نوع العملية. يمكن العثور على جميع خصائص هذه الكائنات في قسم المرجع في المستندات.
شاهد: Mastering Ultralytics YOLO: Callbacks
امثله
إرجاع معلومات إضافية باستخدام "التنبؤ"
في هذا المثال، نريد إرجاع الإطار الأصلي مع كل كائن ناتج. إليك كيف يمكننا القيام بذلك
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
جميع عمليات الاسترجاعات
فيما يلي جميع عمليات الاسترجاعات المدعومة. راجع الكود المصدري لعمليات الاسترجاعات للحصول على تفاصيل إضافية.
معاودة الاتصال بالمدرب
رد | وصف |
---|---|
on_pretrain_routine_start |
يتم تشغيله في بداية روتين ما قبل التدريب |
on_pretrain_routine_end |
يتم تشغيله في نهاية روتين ما قبل التدريب |
on_train_start |
يتم تشغيله عند بدء التدريب |
on_train_epoch_start |
Triggered at the start of each training epoch |
on_train_batch_start |
يتم تشغيله في بداية كل دفعة تدريب |
optimizer_step |
يتم تشغيله أثناء خطوة المحسن |
on_before_zero_grad |
يتم تشغيله قبل تصفير التدرجات |
on_train_batch_end |
يتم تشغيله في نهاية كل دفعة تدريب |
on_train_epoch_end |
يتم تشغيله في نهاية كل حقبة تدريب |
on_fit_epoch_end |
يتم تشغيله في نهاية كل حقبة مناسبة |
on_model_save |
يتم تشغيله عند حفظ النموذج |
on_train_end |
يتم تشغيله عند انتهاء عملية التدريب |
on_params_update |
يتم تشغيله عند تحديث معلمات النموذج |
teardown |
يتم تشغيله عند تنظيف عملية التدريب |
عمليات رد اتصال المدقق
رد | وصف |
---|---|
on_val_start |
يتم تشغيله عند بدء التحقق من الصحة |
on_val_batch_start |
يتم تشغيله في بداية كل دفعة تحقق من الصحة |
on_val_batch_end |
يتم تشغيله في نهاية كل دفعة تحقق من الصحة |
on_val_end |
يتم تشغيله عند انتهاء التحقق من الصحة |
استرجاعات التوقع
رد | وصف |
---|---|
on_predict_start |
يتم تشغيله عند بدء عملية التنبؤ |
on_predict_batch_start |
يتم تشغيله في بداية كل دفعة تنبؤ |
on_predict_postprocess_end |
يتم تشغيله في نهاية المعالجة اللاحقة للتنبؤ |
on_predict_batch_end |
يتم تشغيله في نهاية كل دفعة تنبؤ |
on_predict_end |
يتم تشغيله عند انتهاء عملية التنبؤ |
عمليات رد الاتصال للمصدرين
رد | وصف |
---|---|
on_export_start |
يتم تشغيله عند بدء عملية التصدير |
on_export_end |
يتم تشغيله عند انتهاء عملية التصدير |
الأسئلة المتداولة
ما هي عمليات الاسترجاع Ultralytics وكيف يمكنني استخدامها؟
Ultralytics عمليات الاستدعاء هي نقاط دخول متخصصة يتم تشغيلها خلال المراحل الرئيسية لعمليات النموذج مثل التدريب والتحقق من الصحة والتصدير والتنبؤ. تسمح عمليات الاستدعاء هذه بوظائف مخصصة في نقاط محددة في العملية، مما يتيح إجراء تحسينات وتعديلات على سير العمل. يقبل كل رد استدعاء Trainer
, Validator
أو Predictor
بناءً على نوع العملية. للاطلاع على الخصائص التفصيلية لهذه الكائنات، ارجع إلى القسم المرجعي.
لاستخدام رد الاستدعاء، يمكنك تعريف دالة ثم إضافتها إلى النموذج باستخدام add_callback
الطريقة. إليك مثال على كيفية إرجاع معلومات إضافية أثناء التنبؤ:
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 باستخدام عمليات الاسترجاع؟
لتخصيص روتين التدريب Ultralytics الخاص بك باستخدام عمليات الاستدعاء، يمكنك حقن منطقك في مراحل محددة من عملية التدريب. Ultralytics YOLO يوفر مجموعة متنوعة من عمليات استدعاء التدريب مثل on_train_start
, on_train_end
و on_train_batch_end
. هذه تسمح لك بإضافة مقاييس مخصصة أو معالجة أو تسجيل.
فيما يلي مثال على كيفية تسجيل مقاييس إضافية في نهاية كل حقبة تدريبية:
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)
ارجع إلى دليل التدريب للحصول على مزيد من التفاصيل حول كيفية استخدام عمليات رد الاستدعاء للتدريب بفعالية.
لماذا يجب استخدام عمليات الاسترجاع أثناء التحقق من الصحة في Ultralytics YOLO ؟
استخدام عمليات الاستدعاء أثناء التحقق من الصحة في Ultralytics YOLO تحسين تقييم النموذج من خلال السماح بمعالجة مخصصة أو تسجيل أو حساب المقاييس. عمليات الاستدعاء مثل on_val_start
, on_val_batch_end
و on_val_end
توفير نقاط دخول لحقن منطق مخصص، مما يضمن عمليات تحقق مفصلة وشاملة.
على سبيل المثال، قد ترغب في تسجيل مقاييس تحقق إضافية أو حفظ النتائج الوسيطة لمزيد من التحليل. إليك مثال على كيفية تسجيل مقاييس مخصصة في نهاية التحقق من الصحة:
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")
راجع دليل التحقق من الصحة للحصول على مزيد من الأفكار حول دمج عمليات الاسترجاع في عملية التحقق من الصحة.
كيف يمكنني إرفاق رد استدعاء مخصص لوضع التنبؤ في Ultralytics YOLO ؟
لإرفاق رد استدعاء مخصص لـ وضع التنبؤ في Ultralytics YOLO ، تقوم بتعريف دالة رد نداء وتسجيلها في عملية التنبؤ. تتضمن عمليات استدعاء التنبؤ الشائعة ما يلي on_predict_start
, on_predict_batch_end
و on_predict_end
. تسمح بتعديل مخرجات التنبؤ ودمج وظائف إضافية مثل تسجيل البيانات أو تحويل النتائج.
فيما يلي مثال حيث يتم استخدام رد استدعاء مخصص لتسجيل التنبؤات:
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")
لمزيد من الاستخدام الشامل، راجع دليل التنبؤ الذي يتضمن تعليمات مفصلة وخيارات تخصيص إضافية.
ما هي بعض الأمثلة العملية لاستخدام عمليات الاسترجاع في Ultralytics YOLO ؟
Ultralytics YOLO يدعم العديد من التطبيقات العملية لعمليات الاسترجاع لتحسين وتخصيص مراحل مختلفة مثل التدريب والتحقق من الصحة والتنبؤ. تتضمن بعض الأمثلة العملية ما يلي:
- تسجيل المقاييس المخصصة: تسجيل مقاييس إضافية في مراحل مختلفة، مثل نهاية مراحل التدريب أو التحقق من الصحة.
- Data Augmentation: Implement custom data transformations or augmentations during prediction or training batches.
- النتائج الوسيطة: احفظ النتائج الوسيطة مثل التنبؤات أو الإطارات لمزيد من التحليل أو التصور.
مثال: دمج الإطارات مع نتائج التنبؤ أثناء التنبؤ باستخدام 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
استكشف مرجع رد الاتصال الكامل للعثور على المزيد من الخيارات والأمثلة.