Ultralytics YOLO27:
Get Started

عدّ الكائنات باستخدام Ultralytics YOLO26#

ما عدّ الكائنات؟#

Open Object Counting In Colab

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



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

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

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

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

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

عدّ الكائنات باستخدام YOLO26#

حدّد region للعدّ — نقطتين لخط أو ثلاث نقاط أو أكثر لمضلع — ومرّره إلى حلّ ObjectCounter. يتتبع العداد كل كائن عبر الإطارات، ويحصي حالات الدخول والخروج عند عبور الكائنات المتعقبة الخط أو مرورها عبر المنطقة، ثم يعيد إطارًا مشروحًا يمكنك كتابته في فيديو ناتج.

عدّ الكائنات باستخدام 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 نقطتين (لخط) أو مضلعًا يتكون من ثلاث نقاط أو أكثر. حدّد الإحداثيات بالترتيب الذي ينبغي وصلها به، ليعرف العداد بدقة مواضع الدخول والخروج.

وسيطات ObjectCounter#

إليك جدولًا بمعاملات ObjectCounter:

المعاملالنوعالافتراضيالوصف
modelstrNoneمسار ملف نموذج Ultralytics YOLO.
show_inboolTrueعلم للتحكم في عرض أعداد الدخول على بث الفيديو.
show_outboolTrueعلم للتحكم في عرض أعداد الخروج على بث الفيديو.
regionlist أو dictNoneالنقاط التي تحدد منطقة الاهتمام، سواء أكانت قائمة من الصفوف (x, y) أم قاموسًا يربط أسماء المناطق بقوائم النقاط لمناطق متعددة (في RegionCounter فقط). عندما يكون None، تستخدم الحلول التي تتطلب منطقة إعدادًا افتراضيًا محددًا مسبقًا.
line_widthint2سماكة الخط للصناديق والنقاط المفتاحية والعدادات التي يرسمها الحل.
verboseboolTrueيفعّل سجل الحل لكل إطار، ويشمل شكل المدخل وعدد الفئات وسرعة المعالجة. يظل استدعاء التتبع نفسه صامتًا دائمًا.

يتيح حلّ ObjectCounter استخدام عدة وسيطات track:

المعاملالنوعالافتراضيالوصف
trackerstr'tracktrack.yaml'يحدد خوارزمية التتبع المطلوب استخدامها. الخيارات المضمنة: botsort.yaml، bytetrack.yaml، ocsort.yaml، deepocsort.yaml، fasttrack.yaml، tracktrack.yaml.
conffloat0.25يضبط عتبة الثقة للكشوفات؛ إذ تسمح القيم الأقل بتتبع مزيد من الكائنات، لكنها قد تتضمن إيجابيات كاذبة.
ioufloat0.7يضبط عتبة التقاطع على الاتحاد (IoU) لتصفية الكشوفات المتداخلة.
classeslistNoneيصفّي النتائج حسب فهرس الفئة. على سبيل المثال، لا يتتبع classes=[0, 2, 3] إلا الفئات المحددة.
devicestrNoneيحدد الجهاز المستخدم للاستدلال (مثل cpu أو cuda:0 أو 0). ويتيح للمستخدمين الاختيار بين CPU أو GPU محددة أو أجهزة حوسبة أخرى لتنفيذ النموذج.
imgszint or tuple640حجم صورة الاستدلال المستهدف: عدد صحيح لصورة مربعة، أو زوج (height, width). تُعدّل الأبعاد وفقًا لخطوة النموذج.
max_detint300الحد الأقصى لعدد الكشوفات التي يُحتفظ بها لكل إطار قبل التتبع، ما يحد من عدد الكائنات التي يعالجها الحل في المشاهد الكثيفة.
quantizeint or strNoneدقة الاستدلال: 16 (FP16) أو 32/unset (FP32) لنماذج PyTorch وTorchScript خارج CPU؛ أما التنسيقات الأخرى فتستخدم الدقة التي يحددها الملف الاصطناعي وبيئة التشغيل. يحل هذا الوسيط محل الوسيطة half المهملة.

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

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

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

  • لعدّ الكائنات في فيديو باستخدام 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 لعدّ الكائنات مزايا عديدة:

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

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

  • لعدّ فئات محددة من الكائنات باستخدام Ultralytics YOLO26، عليك تحديد الفئات التي تهمك أثناء مرحلة التتبع. فيما يلي مثال باستخدام 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.

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

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

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

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

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

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

التعليقات