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

عد الأجسام باستخدام Ultralytics YOLO26

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

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

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



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

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

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

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

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

عد الكائنات باستخدام 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)]"

في region تقبل الوسيطة إما نقطتين (لخط) أو مضلعًا بثلاث نقاط أو أكثر. حدد الإحداثيات بالترتيب الذي يجب توصيلها به حتى يعرف العداد بالضبط مكان حدوث الإدخالات والمخارج.

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)]  # rectangular 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="yolo26n.pt",  # model="yolo26n-obb.pt" for object counting with OBB model.
    # classes=[0, 2],  # count specific classes, e.g., person and car with the COCO pretrained model.
    # tracker="botsort.yaml",  # choose trackers, e.g., "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:

الوسيطةالنوعافتراضيالوصف
modelstrNoneمسار إلى ملف نموذج Ultralytics YOLO.
show_inboolTrueFlag للتحكم فيما إذا كان سيتم عرض عدد الأسماك الداخلة في بث الفيديو.
show_outboolTrueFlag للتحكم فيما إذا كان سيتم عرض عدد الأسماك الخارجة في بث الفيديو.
regionlist'[(20, 400), (1260, 400)]'قائمة النقاط التي تحدد منطقة العد.

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

الوسيطةالنوعافتراضيالوصف
trackerstr'botsort.yaml'يحدد خوارزمية التتبع المراد استخدامها، على سبيل المثال، bytetrack.yaml أو botsort.yaml.
conffloat0.1يحدد عتبة الثقة للكشف؛ القيم الأقل تسمح بتتبع المزيد من الكائنات ولكن قد تتضمن نتائج إيجابية كاذبة.
ioufloat0.7يحدد عتبة التقاطع على الاتحاد (IoU) لتصفية عمليات الكشف المتداخلة.
classeslistNoneيقوم بتصفية النتائج حسب فهرس الفئة. على سبيل المثال، classes=[0, 2, 3] يتتبع الفئات المحددة فقط.
verboseboolTrueيتحكم في عرض نتائج التتبع، مما يوفر مخرجًا مرئيًا للكائنات التي يتم تتبعها.
devicestrNoneيحدد الجهاز الخاص بالاستدلال (على سبيل المثال، cpu, cuda:0 أو 0). يسمح للمستخدمين بالاختيار بين CPU أو GPU معين أو أجهزة حساب أخرى لتنفيذ النموذج.

بالإضافة إلى ذلك، يتم دعم وسائط العرض المرئي المدرجة أدناه:

الوسيطةالنوعافتراضيالوصف
showboolFalseإذا True، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للحصول على تعليقات مرئية فورية أثناء التطوير أو الاختبار.
line_widthint or NoneNoneيحدد عرض خطوط مربعات الإحاطة. إذا None، يتم تعديل عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصًا مرئيًا للوضوح.
show_confboolTrueيعرض قيمة الثقة لكل كائن يتم الكشف عنه بجانب التسمية. يعطي نظرة ثاقبة حول يقين النموذج لكل كائن تم الكشف عنه.
show_labelsboolTrueيعرض تسميات لكل كائن يتم الكشف عنه في الناتج المرئي. يوفر فهمًا فوريًا للكائنات التي تم الكشف عنها.

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

كيف أعد الأجسام في مقطع فيديو باستخدام Ultralytics YOLO26؟

لعد الأجسام في مقطع فيديو باستخدام Ultralytics YOLO26، يمكنك اتباع هذه الخطوات:

  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", "yolo26n.pt")

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

ما هي مزايا استخدام Ultralytics YOLO26 لعد الأجسام؟

يقدم استخدام Ultralytics YOLO26 لعد الكائنات عدة مزايا:

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

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

كيف يمكنني عد فئات محددة من الأجسام باستخدام Ultralytics YOLO26؟

لعد فئات محددة من الكائنات باستخدام Ultralytics YOLO26، تحتاج إلى تحديد الفئات التي تهتم بها خلال مرحلة الـ track. فيما يلي مثال 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", "yolo26n.pt", [0, 2])

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

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

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

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

اطلع على وثائق Ultralytics YOLO26 للاطلاع المتعمق على ميزاته ومقارنات الأداء.

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

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

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

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



📅 تم الإنشاء قبل 2 أعوام ✏️ تم التحديث قبل 7 أيام
glenn-jocherRizwanMunawarRizwanMunawarMatthewNoycepderrengerleonnilBurhan-QUltralyticsAssistantIvorZhu331AyushExel

تعليقات