Ultralytics YOLO27:
Get Started

TrackZone باستخدام Ultralytics YOLO26#

ما TrackZone؟#

Open TrackZone In Colab

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



شاهد: كيفية تتبع الكائنات داخل منطقة باستخدام Ultralytics YOLO26 | TrackZone 🚀

مزايا تتبّع الأجسام ضمن المناطق (TrackZone)#

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

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

الزراعةالنقل والمواصلات
تتبّع النباتات في حقل باستخدام Ultralytics YOLO26تتبّع المركبات على الطريق باستخدام 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 بدلًا منه.
  • إذا حذفت 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'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يعرض تسميات كل اكتشاف في المخرجات المرئية، ما يتيح فهم الكائنات المكتشفة فورًا.

عدّ الأجسام داخل المنطقة#

يعيد كل استدعاء لأداة التتبّع كائنًا من النوع 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، مما يتيح تحكمًا دقيقًا في المناطق التي تريد مراقبتها.

    from ultralytics import solutions
    
    # ⁨تحديد نقاط المنطقة⁩
    region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
    
    # ⁨تهيئة trackzone⁩
    trackzone = solutions.TrackZone(
        show=True,  # ⁨# اعرض الناتج⁩
        region=region_points,  # ⁨# مرر نقاط المنطقة⁩
    )

    تذكّر أن TrackZone يختزل النقاط إلى غلافها المحدب، لذا يُبسّط المحيط المقعّر إلى أصغر مضلع محدب يحتوي على جميع نقاطه.

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

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

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

التعليقات