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

اقتصاص الكائنات باستخدام Ultralytics YOLOv8

ما هو اقتصاص الكائن؟

اقتصاص الكائن باستخدام Ultralytics YOLOv8 يتضمن عزل واستخراج كائنات محددة تم اكتشافها من صورة أو مقطع فيديو. ال YOLOv8 يتم استخدام إمكانات النموذج لتحديد الكائنات وتحديدها بدقة ، مما يتيح الاقتصاص الدقيق لمزيد من التحليل أو المعالجة.



شاهد: اقتصاص الكائنات باستخدام Ultralytics YOLOv8

مزايا اقتصاص الكائن؟

  • التحليل المركز: YOLOv8 يسهل اقتصاص الكائنات المستهدفة ، مما يسمح بالفحص المتعمق أو معالجة العناصر الفردية داخل المشهد.
  • انخفاض حجم البيانات: من خلال استخراج الكائنات ذات الصلة فقط ، يساعد اقتصاص الكائنات في تقليل حجم البيانات ، مما يجعلها فعالة للتخزين أو الإرسال أو المهام الحسابية اللاحقة.
  • دقة محسنة: YOLOv8، تضمن دقة الكشف عن الكائنات أن تحافظ الكائنات التي تم اقتصاصها على علاقاتها المكانية ، مع الحفاظ على سلامة المعلومات المرئية للتحليل التفصيلي.

صور

أمتعة المطار
الحزام الناقل في حقائب المطار الاقتصاص باستخدام Ultralytics YOLOv8
حقائب الاقتصاص في الحزام الناقل المطار باستخدام Ultralytics YOLOv8

اقتصاص الكائن باستخدام YOLOv8 مثل

import os

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolov8n.pt")
names = model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

crop_dir_name = "ultralytics_crop"
if not os.path.exists(crop_dir_name):
    os.mkdir(crop_dir_name)

# Video writer
video_writer = cv2.VideoWriter("object_cropping_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

idx = 0
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = model.predict(im0, show=False)
    boxes = results[0].boxes.xyxy.cpu().tolist()
    clss = results[0].boxes.cls.cpu().tolist()
    annotator = Annotator(im0, line_width=2, example=names)

    if boxes is not None:
        for box, cls in zip(boxes, clss):
            idx += 1
            annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])

            crop_obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]

            cv2.imwrite(os.path.join(crop_dir_name, str(idx) + ".png"), crop_obj)

    cv2.imshow("ultralytics", im0)
    video_writer.write(im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
video_writer.release()
cv2.destroyAllWindows()

الحجج model.predict

جدال نوع افتراضي وصف
source str 'ultralytics/assets' يحدد مصدر البيانات للاستدلال. يمكن أن يكون مسار صورة أو ملف فيديو أو دليل أو عنوان URL أو معرف جهاز للخلاصات المباشرة. يدعم مجموعة واسعة من التنسيقات والمصادر ، مما يتيح التطبيق المرن عبر أنواع مختلفة من المدخلات.
conf float 0.25 يعين الحد الأدنى للثقة للاكتشافات. سيتم تجاهل الكائنات المكتشفة بثقة أقل من هذا الحد. يمكن أن يساعد ضبط هذه القيمة في تقليل الإيجابيات الخاطئة.
iou float 0.7 عتبة التقاطع فوق الاتحاد (IoU) للقمع غير الأقصى (NMS). تؤدي القيم المنخفضة إلى عدد أقل من الاكتشافات عن طريق إزالة المربعات المتداخلة ، وهو أمر مفيد لتقليل التكرارات.
imgsz int or tuple 640 يحدد حجم الصورة للاستدلال. يمكن أن يكون عددا صحيحا واحدا 640 لتغيير حجم المربع أو مجموعة (الارتفاع والعرض). يمكن أن يؤدي التحجيم المناسب إلى تحسين دقة الكشف وسرعة المعالجة.
half bool False تمكين الاستدلال بنصف الدقة (FP16) ، والذي يمكنه تسريع استدلال النموذج على وحدات معالجة الرسومات المدعومة بأقل تأثير على الدقة.
device str None يحدد جهاز الاستدلال (على سبيل المثال ، cpu, cuda:0 أو 0). يسمح للمستخدمين بالاختيار بين CPU ، أو جهاز GPU معين، أو أجهزة حوسبة أخرى لتنفيذ النموذج.
max_det int 300 الحد الأقصى لعدد الاكتشافات المسموح بها لكل صورة. يحد من العدد الإجمالي للكائنات التي يمكن للنموذج اكتشافها في استدلال واحد، مما يمنع المخرجات الزائدة في المشاهد الكثيفة.
vid_stride int 1 خطوة الإطار لمدخلات الفيديو. يسمح بتخطي الإطارات في مقاطع الفيديو لتسريع المعالجة على حساب الدقة الزمنية. قيمة 1 تعالج كل إطار ، القيم الأعلى تتخطى الإطارات.
stream_buffer bool False يحدد ما إذا كان يجب تخزين كل الإطارات مؤقتا عند معالجة تدفقات الفيديو (True)، أو إذا كان يجب أن يعيد النموذج أحدث إطار (False). مفيد للتطبيقات في الوقت الحقيقي.
visualize bool False ينشط تصور ميزات النموذج أثناء الاستدلال ، مما يوفر رؤى حول ما "يراه" النموذج. مفيد لتصحيح الأخطاء وتفسير النموذج.
augment bool False يتيح زيادة وقت الاختبار (TTA) للتنبؤات ، مما قد يؤدي إلى تحسين متانة الكشف على حساب سرعة الاستدلال.
agnostic_nms bool False تمكين منع عدم الحد الأقصى (NMS) اللاأدري للفئة ، والذي يدمج المربعات المتداخلة لفئات مختلفة. مفيد في سيناريوهات الكشف متعددة الفئات حيث يكون تداخل الفئة شائعا.
classes list[int] None تصفية التوقعات إلى مجموعة من معرفات الفئة. سيتم إرجاع الاكتشافات التي تنتمي إلى الفئات المحددة فقط. مفيد للتركيز على الكائنات ذات الصلة في مهام الكشف متعددة الفئات.
retina_masks bool False يستخدم أقنعة تجزئة عالية الدقة إذا كانت متوفرة في النموذج. يمكن أن يؤدي ذلك إلى تحسين جودة القناع لمهام التجزئة ، مما يوفر تفاصيل أدق.
embed list[int] None يحدد الطبقات التي سيتم استخراج متجهات المعالم أو الدمجات منها. مفيد للمهام النهائية مثل التجميع أو البحث عن التشابه.

الأسئلة المتداولة

ما هو اقتصاص الكائنات في Ultralytics YOLOv8 وكيف يعمل؟

اقتصاص الكائنات باستخدام Ultralytics YOLOv8 يتضمن عزل واستخراج كائنات محددة من صورة أو مقطع فيديو استنادًا إلى قدرات الكشف YOLOv8. تتيح هذه العملية إجراء تحليل مركّز وتقليل حجم البيانات وتحسين الدقة من خلال الاستفادة من YOLOv8 لتحديد الأجسام بدقة عالية واقتصاصها وفقًا لذلك. للحصول على برنامج تعليمي متعمق، راجع مثال اقتصاص الكائنات.

لماذا يجب استخدام Ultralytics YOLOv8 لاقتصاص الكائنات بدلاً من الحلول الأخرى؟

Ultralytics YOLOv8 نظرًا لدقته وسرعته وسهولة استخدامه. فهو يسمح باكتشاف الكائنات واقتصاصها بشكل مفصّل ودقيق، وهو أمر ضروري للتحليل المركّز والتطبيقات التي تحتاج إلى تكامل عالٍ للبيانات. وعلاوةً على ذلك، يتكامل YOLOv8 بسلاسة مع أدوات مثل OpenVINO و TensorRT لعمليات النشر التي تتطلب قدرات في الوقت الفعلي والتحسين على أجهزة متنوعة. استكشف الفوائد في الدليل الخاص بتصدير النماذج.

كيف يمكنني تقليل حجم بيانات مجموعة البيانات الخاصة بي باستخدام اقتصاص الكائنات؟

من خلال استخدام Ultralytics YOLOv8 لاقتصاص الكائنات ذات الصلة فقط من الصور أو مقاطع الفيديو الخاصة بك، يمكنك تقليل حجم البيانات بشكل كبير، مما يجعلها أكثر كفاءة للتخزين والمعالجة. تتضمن هذه العملية تدريب النموذج على اكتشاف كائنات محددة ثم استخدام النتائج لاقتصاص هذه الأجزاء وحفظها فقط. لمزيد من المعلومات حول استغلال إمكانيات Ultralytics YOLOv8 ، تفضل بزيارة دليل البدء السريع.

هل يمكنني استخدام Ultralytics YOLOv8 لتحليل الفيديو في الوقت الفعلي واقتصاص الأجسام؟

نعم، يمكن للنموذج Ultralytics YOLOv8 معالجة موجزات الفيديو في الوقت الفعلي لاكتشاف الأجسام واقتصاصها ديناميكيًا. إن قدرات الاستدلال عالية السرعة التي يتمتع بها النموذج تجعله مثاليًا للتطبيقات في الوقت الفعلي مثل المراقبة والتحليل الرياضي وأنظمة الفحص الآلي. راجع أوضاع التتبع والتنبؤ لفهم كيفية تنفيذ المعالجة في الوقت الفعلي.

ما هي متطلبات الأجهزة اللازمة لتشغيل YOLOv8 بكفاءة في اقتصاص الكائنات؟

Ultralytics YOLOv8 تم تحسينه لكلٍ من بيئات CPU و GPU ، ولكن لتحقيق الأداء الأمثل، خاصةً للاستدلال في الوقت الحقيقي أو الاستدلال بكميات كبيرة، يوصى باستخدام GPU مخصص (على سبيل المثال، NVIDIA تسلا، سلسلة RTX). للنشر على الأجهزة خفيفة الوزن، فكر في استخدام CoreML لـ iOS أو TFLite لـ Android. يمكن العثور على مزيد من التفاصيل حول الأجهزة والتنسيقات المدعومة في خيارات نشر النموذج لدينا.



تم الإنشاء 2024-01-09، تم التحديث 2024-07-05
المؤلفون: جلين-جوتشر (8)، رضوان منور (2)، إيفور زو331 (1)، أيوش إكسل (1)

التعليقات