رؤية YOLO 2026:

تتبع المناطق (TrackZone) باستخدام Ultralytics YOLO26#

ما هو TrackZone؟#

Open TrackZone In Colab

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



Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀

مزايا تتبع الكائنات في المناطق (TrackZone)#

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

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

الزراعةالنقل
Plants Tracking in Field Using Ultralytics YOLO26Vehicles Tracking on Road using Ultralytics YOLO26
تتبع النباتات في الحقل باستخدام Ultralytics YOLO26تتبع المركبات على الطريق باستخدام Ultralytics YOLO26
TrackZone باستخدام Ultralytics YOLO
# Run a trackzone example
yolo solutions trackzone show=True

# Pass a source video
yolo solutions trackzone source="path/to/video.mp4" show=True

# Pass region coordinates
yolo solutions trackzone show=True region="[(150, 150), (1130, 150), (1130, 570), (150, 570)]"

تعتمد TrackZone على قائمة region لمعرفة أي جزء من الإطار يجب مراقبته. قم بتحديد المضلع ليتطابق مع المنطقة الفيزيائية التي تهتم بها (الأبواب، البوابات، إلخ)، واحتفظ بـ show=True ممكناً أثناء التكوين حتى تتمكن من التحقق من توافق الطبقة مع تغذية الفيديو.

تحديد منطقة التتبع
  • كل إدخال في region هو إحداثي بكسل (x, y) في إطار الفيديو. قم سرد النقاط بالترتيب الذي يجب أن تُربط به حول محيط المنطقة التي تريد مراقبتها.
  • ترتبط الإحداثيات بدقة الإطار، لذا فإن المنطقة ذات الحجم المخصص لتغذية 1280×720 لن تتطابق مع تغذية 640×480. احتفظ بـ show=True أثناء التكوين حتى تتمكن من تأكيد توافق الطبقة مع التغذية الخاصة بك.
  • يقوم TrackZone بتقليص النقاط إلى هيكلها المحدب، لذا يتم تبسيط الشكل غير المحدب إلى أصغر مضلع محدب يحتوي على جميع نقاطه. للأشكال غير المحدبة أو عدة مناطق منفصلة، استخدم حل RegionCounter بدلاً من ذلك.
  • إذا قomت بإغفال region تماماً، يتم استخدام منطقة افتراضية من [(75, 75), (565, 75), (565, 285), (75, 285)].

وسائط TrackZone#

إليك جدول يحتوي على وسائط TrackZone:

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

يتضمن حل TrackZone دعماً لمعلمات track:

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

علاوة على ذلك، تتوفر خيارات التصور التالية:

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

عد الكائنات داخل المنطقة#

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

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
trackzone = solutions.TrackZone(show=False, region=region_points, model="yolo26n.pt")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    results = trackzone(im0)
    print(f"Objects currently in zone: {results.total_tracks}")  # live zone occupancy

cap.release()

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

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

    yolo solutions trackzone source="path/to/video.mp4" show=True
  • باستخدام بضعة أسطر فقط من الكود، يمكنك إعداد تتبع الكائنات في مناطق محددة، مما يسهل دمجه في مشاريعك.

    import cv2
    
    from ultralytics import solutions
    
    cap = cv2.VideoCapture("path/to/video.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))
    video_writer = cv2.VideoWriter("trackzone_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
    
    trackzone = solutions.TrackZone(
        show=True, region=[(150, 150), (1130, 150), (1130, 570), (150, 570)], model="yolo26n.pt"
    )
    
    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            break
        results = trackzone(im0)
        video_writer.write(results.plot_im)
    
    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()
  • تعد تهيئة نقاط المنطقة لمعالجة الفيديو باستخدام Ultralytics TrackZone أمراً بسيطاً وقابلاً للتخصيص. يمكنك تعريف المناطق وتعديلها مباشرة من خلال سكربت Python، مما يسمح بالتحكم الدقيق في المناطق التي ترغب في مراقبتها.

    # Define region points
    region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
    
    # Initialize trackzone
    trackzone = solutions.TrackZone(
        show=True,  # display the output
        region=region_points,  # pass region points
    )

    تذكر أن TrackZone يقلص النقاط إلى هيكلها المحدب، لذا قم بسردها بالترتيب حول محيط المنطقة التي تريد مراقبتها.

  • تعمل الحلول الثلاثة جميعها مع المناطق، لكنها تجيب على أسئلة مختلفة:

    الحلاستخدمه لـالمخرجات النموذجية
    TrackZoneتتبع الكائنات ومراقبة الإشغال المباشر داخل منطقة محدبة واحدةالمعرفات المتتبعة وtotal_tracks للمنطقة
    ObjectCounterعد الكائنات التي تعبر خطاً أو تدخل وتخرج من منطقةإجمالي أعداد الدخول والخروج
    RegionCounterعد الكائنات داخل منطقة واحدة أو أكثر عشوائية (بما في ذلك غير المحدبة)أعداد الكائنات لكل منطقة

    اختر TrackZone عندما تريد تتبعاً مستمراً داخل منطقة واحدة، وRegionCounter عندما تحتاج إلى مناطق متعددة أو شكلاً غير محدب.

التعليقات