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

عد الكائنات باستخدام Ultralytics YOLO11

ما هو عد الكائنات؟

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


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

شاهد: عد الكائنات على مستوى الفئة باستخدام Ultralytics YOLO11

مزايا عد الكائنات؟

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

التطبيقات الواقعية

الخدمات اللوجستية تربية الأحياء المائية
عد حزم الحزام الناقل باستخدام Ultralytics YOLO11 عد الأسماك في البحر باستخدام Ultralytics YOLO11
عد حزم الحزام الناقل باستخدام Ultralytics YOLO11 عد الأسماك في البحر باستخدام Ultralytics YOLO11

عد الكائنات باستخدام YOLO11 مثال على

# Run a counting example
yolo solutions count show=True

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

# Pass region coordinates
yolo solutions count region=[(20, 400), (1080, 400), (1080, 360), (20, 360)]
import cv2

from ultralytics import solutions

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))

# Define region points
# region_points = [(20, 400), (1080, 400)]  # For line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]  # For rectangle region counting
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)]  # For polygon region counting

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

# Init Object Counter
counter = solutions.ObjectCounter(
    show=True,  # Display the output
    region=region_points,  # Pass region points
    model="yolo11n.pt",  # model="yolo11n-obb.pt" for object counting using YOLO11 OBB model.
    # classes=[0, 2],  # If you want to count specific classes i.e person and car with COCO pretrained model.
    # show_in=True,  # Display in counts
    # show_out=True,  # Display out counts
    # line_width=2,  # Adjust the line width for bounding boxes and text display
)

# 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
    im0 = counter.count(im0)
    video_writer.write(im0)

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

الجدال ObjectCounter

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

الاسم النوع افتراضي الوصف
model str None المسار إلى Ultralytics YOLO ملف نموذج
region list [(20, 400), (1260, 400)] قائمة النقاط التي تحدد منطقة العد.
line_width int 2 سُمك الخط للمربعات المحدودة.
show bool False علامة للتحكم في عرض دفق الفيديو من عدمه.
show_in bool True علامة للتحكم في ما إذا كان سيتم عرض التعداد الداخلي على دفق الفيديو أم لا.
show_out bool True علامة للتحكم في ما إذا كان سيتم عرض الأعداد الخارجة على دفق الفيديو.

الحجج model.track

الجدال النوع افتراضي الوصف
source str None يحدد الدليل المصدر للصور أو مقاطع الفيديو. يدعم مسارات الملفات وعناوين URL.
persist bool False تمكين التتبع المستمر للكائنات بين الإطارات، والحفاظ على المعرفات عبر تسلسلات الفيديو.
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 يتحكم في عرض نتائج التتبع، مما يوفر إخراجًا مرئيًا للأجسام المتعقبة.

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

كيف يمكنني عد الكائنات في مقطع فيديو باستخدام Ultralytics YOLO11 ؟

لعد الكائنات في مقطع فيديو باستخدام Ultralytics YOLO11 ، يمكنك اتباع الخطوات التالية:

  1. استيراد المكتبات اللازمة (cv2, ultralytics).
  2. حدد منطقة العد (على سبيل المثال، مضلع، خط، إلخ).
  3. قم بإعداد التقاط الفيديو وتهيئة عداد الكائنات.
  4. قم بمعالجة كل إطار لتتبع الأجسام وإحصائها داخل المنطقة المحددة.

إليك مثال بسيط للعد في منطقة ما:

import cv2

from ultralytics import solutions


def count_objects_in_region(video_path, output_video_path, model_path):
    """Count objects in a specific region within a video."""
    cap = cv2.VideoCapture(video_path)
    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))
    video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

    region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
    counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)

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

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


count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo11n.pt")

استكشف المزيد من التكوينات والخيارات في قسم عد الكائنات.

ما هي مزايا استخدام Ultralytics YOLO11 لعد الكائنات؟

يوفر استخدام Ultralytics YOLO11 لعدّ الكائنات العديد من المزايا:

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

للحصول على تطبيقات واقعية وأمثلة على التعليمات البرمجية، قم بزيارة قسم مزايا عد الكائنات.

كيف يمكنني حساب فئات محددة من الكائنات باستخدام Ultralytics YOLO11 ؟

لحساب فئات محددة من الكائنات باستخدام Ultralytics YOLO11 ، تحتاج إلى تحديد الفئات التي تهتم بها أثناء مرحلة التتبع. فيما يلي مثال Python :

import cv2

from ultralytics import solutions


def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
    """Count specific classes of objects in a video."""
    cap = cv2.VideoCapture(video_path)
    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))
    video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

    line_points = [(20, 400), (1080, 400)]
    counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)

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

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


count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo11n.pt", [0, 2])

في هذا المثال classes_to_count=[0, 2]مما يعني أنه يحسب كائنات الفئة 0 و 2 (على سبيل المثال، شخص وسيارة).

لماذا يجب استخدام YOLO11 بدلاً من نماذج اكتشاف الكائنات الأخرى لتطبيقات الوقت الحقيقي؟

Ultralytics YOLO11 العديد من المزايا مقارنةً بنماذج اكتشاف الأجسام الأخرى مثل Faster R-CNN و SSD والإصدارات السابقة YOLO :

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

راجع Ultralytics YOLO11 Documentation للتعمق أكثر في ميزاته ومقارنات الأداء.

هل يمكنني استخدام YOLO11 للتطبيقات المتقدمة مثل تحليل الحشود وإدارة حركة المرور؟

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

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

لمزيد من المعلومات وتفاصيل التنفيذ، راجع الدليل الخاص بالتطبيقات الواقعية لعد الكائنات باستخدام YOLO11.

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

التعليقات