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

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

ما هو تعداد الأجسام؟

افتح عد الكائنات في Colab

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



شاهد: كيفية إجراء عد الكائنات في الوقت الفعلي باستخدام Ultralytics YOLO11 🍏

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

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

تطبيقات العالم الحقيقي

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

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

# Run a counting example
yolo solutions count show=True

# Pass a source video
yolo solutions count source="path/to/video.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.mp4")
assert cap.isOpened(), "Error reading video file"

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

# 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("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize object counter object
counter = solutions.ObjectCounter(
    show=True,  # display the output
    region=region_points,  # pass region points
    model="yolo11n.pt",  # model="yolo11n-obb.pt" for object counting with OBB model.
    # classes=[0, 2],  # count specific classes i.e. person and car with COCO pretrained model.
    # tracker="botsort.yaml",  # choose trackers i.e "bytetrack.yaml"
)

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

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = counter(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

ObjectCounter الوسائط

إليك جدول مع ObjectCounter arguments:

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

في ObjectCounter يسمح الحل باستخدام العديد من track arguments:

الوسيطة النوع افتراضي الوصف
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 يعرض تسميات لكل كائن يتم الكشف عنه في الناتج المرئي. يوفر فهمًا فوريًا للكائنات التي تم الكشف عنها.

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

كيف يمكنني عد الكائنات في فيديو باستخدام 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 processing is complete.")
            break
        results = counter(im0)
        video_writer.write(results.plot_im)

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


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

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

ما هي مزايا استخدام Ultralytics YOLO11 لعدّ العناصر؟

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

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

لأمثلة التنفيذ والتطبيقات العملية، استكشف حل TrackZone لتتبع الأجسام في مناطق معينة.

كيف يمكنني حساب فئات معينة من الكائنات باستخدام 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 processing is complete.")
            break
        results = counter(im0)
        video_writer.write(results.plot_im)

    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 (على سبيل المثال، شخص وسيارة في مجموعة بيانات COCO). يمكنك العثور على مزيد من المعلومات حول فهارس الفئات في توثيق مجموعة بيانات COCO.

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

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

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

راجع وثائق Ultralytics YOLO11 للحصول على نظرة أكثر تعمقًا في ميزاتها ومقارنات الأداء.

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

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

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

للتطبيقات الأكثر تخصصًا، استكشف حلول Ultralytics للحصول على مجموعة شاملة من الأدوات المصممة لتحديات رؤية الكمبيوتر في العالم الحقيقي.



📅 تم الإنشاء منذ سنة واحدة ✏️ تم التحديث منذ شهرين

تعليقات