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

تجزئة المثيل وتتبعه باستخدام Ultralytics YOLO11 🚀 🚀

ما هو تجزئة المثيل؟

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

Ultralytics YOLO11 يوفر إمكانات قوية لتجزئة النماذج تتيح اكتشاف حدود الكائنات بدقة مع الحفاظ على السرعة والكفاءة التي تشتهر بها نماذج YOLO .

يتوفر نوعان من تتبع تجزئة المثيل في الحزمة Ultralytics :

  • تقسيم المثيل مع كائنات الفئة: يتم تعيين لون فريد لكل كائن من كائنات الفئة للفصل البصري الواضح.

  • تجزئة المثيل مع مسارات الكائنات: يتم تمثيل كل مسار بلون مميز، مما يسهل التعرف عليه وتتبعه بسهولة عبر إطارات الفيديو.



شاهد: تجزئة المثيل مع تتبع الكائنات باستخدام Ultralytics YOLO11

العينات

تجزئة المثيل تجزئة المثيل + تتبع الكائنات
Ultralytics تجزئة المثيل Ultralytics تجزئة المثيل مع تتبع الكائنات
Ultralytics تجزئة المثيل 😍 Ultralytics تجزئة المثيل مع تتبع الكائنات 🔥

تجزئة المثيل باستخدام Ultralytics YOLO

# Instance segmentation using Ultralytics YOLO11
yolo solutions isegment show=True

# Pass a source video
yolo solutions isegment source="path/to/video.mp4"

# Monitor the specific classes
yolo solutions isegment classes="[0, 5]"
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("isegment_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize instance segmentation object
isegment = solutions.InstanceSegmentation(
    show=True,  # display the output
    model="yolo11n-seg.pt",  # model="yolo11n-seg.pt" for object segmentation using YOLO11.
    # classes=[0, 2],  # segment specific classes i.e, person and car with pretrained model.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = isegment(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

InstanceSegmentation الحجج

إليك الجدول الذي يحتوي على InstanceSegmentation الحجج

الجدال النوع افتراضي الوصف
model str None المسار إلى ملف نموذج Ultralytics YOLO Model File.
region list [(20, 400), (1260, 400)] قائمة النقاط التي تحدد منطقة العد.

يمكنك أيضاً الاستفادة من track الحجج ضمن InstanceSegmentation الحل:

الجدال النوع افتراضي الوصف
tracker str 'botsort.yaml' يحدد خوارزمية التتبع المراد استخدامها، على سبيل المثال, bytetrack.yaml أو botsort.yaml.
conf float 0.3 تعيين عتبة الثقة للاكتشافات؛ تسمح القيم المنخفضة بتتبع المزيد من الكائنات ولكنها قد تتضمن نتائج إيجابية كاذبة.
iou float 0.5 يضبط عتبة التقاطع على الاتحاد (IoU) لتصفية الاكتشافات المتداخلة.
classes list None تصفية النتائج حسب فهرس الفئة. على سبيل المثال, classes=[0, 2, 3] يتتبع الفئات المحددة فقط.
verbose bool True يتحكم في عرض نتائج التتبع، مما يوفر إخراجًا مرئيًا للأجسام المتعقبة.
device str None يحدد جهاز الاستدلال (على سبيل المثال, cpu, cuda:0 أو 0). يسمح للمستخدمين بالاختيار بين CPU ، أو جهاز GPU معين، أو أجهزة حوسبة أخرى لتنفيذ النموذج.

علاوة على ذلك، تتوفر وسائط التصور التالية:

الجدال النوع افتراضي الوصف
show bool False إذا كان Trueيعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للتعليقات المرئية الفورية أثناء التطوير أو الاختبار.
line_width None or int None يحدد عرض خط المربعات المحدودة. إذا كان None، يتم ضبط عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصاً مرئياً للوضوح.

تطبيقات تجزئة المثيل

يحتوي تجزئة المثيل باستخدام YOLO11 على العديد من التطبيقات الواقعية في مختلف الصناعات:

إدارة النفايات وإعادة تدويرها

يمكن استخدام YOLO11 في مرافق إدارة النفايات لتحديد وفرز أنواع مختلفة من المواد. يمكن للنموذج أن يقسم النفايات البلاستيكية والكرتون والمعادن وغيرها من المواد القابلة لإعادة التدوير بدقة عالية، مما يتيح لأنظمة الفرز الآلي معالجة النفايات بكفاءة أكبر. ويكتسب ذلك قيمة خاصة بالنظر إلى أن حوالي 10% فقط من 7 مليارات طن من النفايات البلاستيكية المتولدة على مستوى العالم يتم إعادة تدويرها.

المركبات ذاتية القيادة

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

التصوير الطبي

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

مراقبة مواقع الإنشاءات

في مواقع البناء، يمكن لتقسيم المثيل تتبع الآلات الثقيلة والعمال والمواد في مواقع البناء. يساعد ذلك على ضمان السلامة من خلال مراقبة مواقع المعدات واكتشاف دخول العمال إلى المناطق الخطرة، مع تحسين سير العمل وتخصيص الموارد.

ملاحظة

لأية استفسارات، لا تتردد في نشر أسئلتك في قسم المشكلاتUltralytics أو قسم المناقشة المذكور أدناه.

الأسئلة الشائعة

كيف يمكنني إجراء تجزئة المثيل باستخدام Ultralytics YOLO11 ؟

لإجراء تجزئة المثيل باستخدام Ultralytics YOLO11 ، قم بتهيئة نموذج YOLO بنسخة تجزئة من YOLO11 ومعالجة إطارات الفيديو من خلاله. إليك مثال كود مبسط

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("instance-segmentation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init InstanceSegmentation
isegment = solutions.InstanceSegmentation(
    show=True,  # display the output
    model="yolo11n-seg.pt",  # model="yolo11n-seg.pt" for object segmentation using YOLO11.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or processing is complete.")
        break
    results = isegment(im0)
    video_writer.write(results.plot_im)

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

تعرف على المزيد حول تجزئة المثيل في الدليلUltralytics YOLO11 .

ما الفرق بين تجزئة المثيل وتتبع الكائن في Ultralytics YOLO11 ؟

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

لماذا يجب أن أستخدم Ultralytics YOLO11 للتجزئة والتتبع على سبيل المثال بدلاً من النماذج الأخرى مثل Mask R-CNN أو Faster R-CNN؟

يوفر Ultralytics YOLO11 أداءً فورياً ودقة فائقة وسهولة في الاستخدام مقارنةً بالنماذج الأخرى مثل Mask R-CNN أو Faster R-CNN. يعالج YOLO11 الصور في مسار واحد (الكشف على مرحلة واحدة)، مما يجعله أسرع بكثير مع الحفاظ على دقة عالية. كما أنه يوفر تكاملاً سلسًا مع Ultralytics HUB، مما يسمح للمستخدمين بإدارة النماذج ومجموعات البيانات وخطوط أنابيب التدريب بكفاءة. بالنسبة للتطبيقات التي تتطلب كلاً من السرعة والدقة، يوفر YOLO11 التوازن الأمثل.

هل هناك أي مجموعات بيانات مقدمة من Ultralytics مناسبة لتدريب نماذج YOLO11 على سبيل المثال التجزئة والتتبع؟

نعم، تقدم Ultralytics العديد من مجموعات البيانات المناسبة لتدريب نماذج YOLO11 لتجزئة النماذج، بما في ذلك COCO-Seg وCO8-Seg (مجموعة فرعية أصغر للاختبار السريع) وBACKGE-Seg وCrack-Seg. تأتي مجموعات البيانات هذه مع التعليقات التوضيحية على مستوى البكسل اللازمة لمهام التجزئة على سبيل المثال. بالنسبة للتطبيقات الأكثر تخصصًا، يمكنك أيضًا إنشاء مجموعات بيانات مخصصة باتباع تنسيق Ultralytics . يمكن العثور على معلومات مجموعة البيانات الكاملة وتعليمات الاستخدام في وثائق مجموعات بياناتUltralytics .

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

التعليقات