Ultralytics YOLO27:

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

التطبيقات الواقعية#

الزراعةالنقل
تتبع النباتات في الحقل باستخدام 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'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يعرض تسميات كل كشف في المخرجات المرئية. ويوفر فهمًا فوريًا للكائنات المكتشفة.

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

يعيد كل استدعاء للمتتبّع كائنًا من النوع 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 عندما تحتاج إلى مناطق متعددة أو شكل غير محدب.

التعليقات