Ultralytics YOLO27:

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

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

Open Object Counting In Colab

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



Watch: How to Perform Real-Time Object Counting with 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'botsort.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/غير محدد (FP32) لنموذجي PyTorch وTorchScript؛ بينما تحسب التنسيقات الأخرى بالدقة التي تحددها ملفاتها ومحيط تشغيلها. يحل محل علامة 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. الدقة: يوفّر دقة متطورة في الاكتشاف والتتبّع، مما يقلل الإيجابيات الكاذبة ويحسّن موثوقية النظام overall.
    3. سهولة التكامل: يوفّر YOLO26 تكاملًا سلسًا مع مختلف المنصات والأجهزة، بما في ذلك الأجهزة المحمولة والأجهزة الطرفية، وهو أمر بالغ الأهمية لتطبيقات الذكاء الاصطناعي الحديثة.
    4. المرونة: يدعم مهام الاكتشاف والتقسيم، مع وضع التتبّع فوقها، كما يدعم نماذج قابلة للتهيئة لتلبية متطلبات حالات الاستخدام المحددة.

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

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

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

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

التعليقات