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

تجزئة المثيل وتتبعه باستخدام 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.
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، يتم ضبط عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصاً مرئياً للوضوح.
show_conf bool True يعرض درجة الثقة لكل اكتشاف إلى جانب التسمية. يعطي فكرة عن مدى يقين النموذج لكل اكتشاف.
show_labels bool True يعرض تسميات لكل اكتشاف في الإخراج المرئي. يوفر فهماً فورياً للأجسام المكتشفة.

تطبيقات تقسيم المثيلات

تجزئة المثيل باستخدام 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، COCO8-Seg (مجموعة فرعية أصغر للاختبار السريع)، Package-Seg، و Crack-Seg. تأتي مجموعات البيانات هذه مع تعليقات توضيحية على مستوى البكسل ضرورية لمهام تقسيم المثيلات. للتطبيقات الأكثر تخصصًا، يمكنك أيضًا إنشاء مجموعات بيانات مخصصة باتباع تنسيق Ultralytics. يمكن العثور على معلومات كاملة عن مجموعة البيانات وإرشادات الاستخدام في Ultralytics Datasets documentation.



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

التعليقات