عمليات الاستدعاء
عمليات الاستدعاء
Ultralytics يدعم إطار العمل عمليات رد النداء كنقاط دخول في المراحل الاستراتيجية لأوضاع القطار، و val، والتصدير، والتنبؤ. كل رد استدعاء يقبل Trainer
, Validator
أو Predictor
بناءً على نوع العملية. يمكن العثور على جميع خصائص هذه الكائنات في القسم المرجعي من المستندات.
شاهد: إتقان Ultralytics YOLO : عمليات الاسترداد : عمليات الاسترداد
أمثلة
إرجاع معلومات إضافية مع التنبؤ
في هذا المثال، نريد إرجاع الإطار الأصلي مع كل كائن نتيجة. إليك كيفية القيام بذلك
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 |
يتم تشغيله في بداية كل حقبة تدريبية |
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 يدعم العديد من التطبيقات العملية لعمليات الاسترجاع لتحسين وتخصيص مراحل مختلفة مثل التدريب والتحقق من الصحة والتنبؤ. تتضمن بعض الأمثلة العملية ما يلي:
- تسجيل المقاييس المخصصة: تسجيل مقاييس إضافية في مراحل مختلفة، مثل نهاية مراحل التدريب أو التحقق من الصحة.
- زيادة البيانات: تنفيذ عمليات تحويل أو زيادة بيانات مخصصة أثناء التنبؤ أو دفعات التدريب.
- النتائج الوسيطة: احفظ النتائج الوسيطة مثل التنبؤات أو الإطارات لمزيد من التحليل أو التصور.
مثال: دمج الإطارات مع نتائج التنبؤ أثناء التنبؤ باستخدام 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
استكشف مرجع رد الاتصال الكامل للعثور على المزيد من الخيارات والأمثلة.