تخطي إلى المحتوى

عمليات الاستدعاء

عمليات الاستدعاء

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 يدعم العديد من التطبيقات العملية لعمليات الاسترجاع لتحسين وتخصيص مراحل مختلفة مثل التدريب والتحقق من الصحة والتنبؤ. تتضمن بعض الأمثلة العملية ما يلي:

  1. تسجيل المقاييس المخصصة: تسجيل مقاييس إضافية في مراحل مختلفة، مثل نهاية مراحل التدريب أو التحقق من الصحة.
  2. زيادة البيانات: تنفيذ عمليات تحويل أو زيادة بيانات مخصصة أثناء التنبؤ أو دفعات التدريب.
  3. النتائج الوسيطة: احفظ النتائج الوسيطة مثل التنبؤات أو الإطارات لمزيد من التحليل أو التصور.

مثال: دمج الإطارات مع نتائج التنبؤ أثناء التنبؤ باستخدام 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

استكشف مرجع رد الاتصال الكامل للعثور على المزيد من الخيارات والأمثلة.

📅 تم إنشاؤها منذ 1 سنة مضت ✏️ تم التحديث منذ 2 شهر

التعليقات