انتقل إلى المحتوى

رد

رد

Ultralytics يدعم Framework عمليات الاسترجاعات كنقاط دخول في المراحل الإستراتيجية لأوضاع القطار و VAL والتصدير والتنبؤ. يقبل كل رد اتصال Trainer, Validatorأو Predictor كائن حسب نوع العملية. يمكن العثور على جميع خصائص هذه الكائنات في قسم المرجع في المستندات.



شاهد: اتقان Ultralytics YOLOv8:رد

امثله

إرجاع معلومات إضافية باستخدام "التنبؤ"

في هذا المثال، نريد إرجاع الإطار الأصلي مع كل كائن ناتج. إليك كيف يمكننا القيام بذلك

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("yolov8n.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("yolov8n.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("yolov8n.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("yolov8n.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("yolov8n.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("yolov8n.pt")
model.add_callback("on_predict_batch_end", on_predict_batch_end)
for result, frame in model.predict():
    pass

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



تم الإنشاء 2023-11-12، تم التحديث 2024-07-04
المؤلفون: جلين-جوتشر (9)، رضوان منور (1)، الضاحك-ك (1)

التعليقات