تخطي إلى المحتوى

TrackZone باستخدام Ultralytics YOLO11

ما هو TrackZone؟

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

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

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

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

الزراعة النقل والمواصلات
تتبع النباتات في الحقل باستخدام Ultralytics YOLO11 تتبع المركبات على الطريق باستخدام Ultralytics YOLO11
تتبع النباتات في الحقل باستخدام Ultralytics YOLO11 تتبع المركبات على الطريق باستخدام Ultralytics YOLO11

تتبع المنطقة باستخدام YOLO11 مثال على ذلك

# Run a trackzone example
yolo solutions trackzone show=True

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

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

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video/file.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))

# Define region points
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init TrackZone (Object Tracking in Zones, not complete frame)
trackzone = solutions.TrackZone(
    show=True,  # Display the output
    region=region_points,  # Pass region points
    model="yolo11n.pt",  # You can use any model that Ultralytics support, i.e. YOLOv9, YOLOv10
    # line_width=2,  # Adjust the line width for bounding boxes and text display
    # classes=[0, 2],  # If you want to count specific classes i.e. person and car with COCO pretrained model.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    im0 = trackzone.trackzone(im0)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

الجدال TrackZone

إليك الجدول الذي يحتوي على TrackZone الحجج

الاسم النوع افتراضي الوصف
model str None المسار إلى Ultralytics YOLO ملف نموذج
region list [(150, 150), (1130, 150), (1130, 570), (150, 570)] قائمة النقاط التي تحدد منطقة تتبع الكائن.
line_width int 2 سُمك الخط للمربعات المحدودة.
show bool False علامة للتحكم في عرض دفق الفيديو من عدمه.

الحجج model.track

الجدال النوع افتراضي الوصف
source str None يحدد الدليل المصدر للصور أو مقاطع الفيديو. يدعم مسارات الملفات وعناوين URL.
persist bool False تمكين التتبع المستمر للكائنات بين الإطارات، والحفاظ على المعرفات عبر تسلسلات الفيديو.
tracker str botsort.yaml يحدد خوارزمية التتبع المراد استخدامها، على سبيل المثال, bytetrack.yaml أو botsort.yaml.
conf float 0.3 تعيين عتبة الثقة للاكتشافات؛ تسمح القيم المنخفضة بتتبع المزيد من الكائنات ولكنها قد تتضمن نتائج إيجابية كاذبة.
iou float 0.5 يضبط عتبة التقاطع على الاتحاد (IoU) لتصفية الاكتشافات المتداخلة.
classes list None تصفية النتائج حسب فهرس الفئة. على سبيل المثال, classes=[0, 2, 3] يتتبع الفئات المحددة فقط.
verbose bool True يتحكم في عرض نتائج التتبع، مما يوفر إخراجًا مرئيًا للأجسام المتعقبة.

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

كيف يمكنني تتبع الأجسام في منطقة أو منطقة معينة من إطار فيديو باستخدام Ultralytics YOLO11 ؟

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

yolo solutions trackzone source="path/to/video/file.mp4" show=True

كيف يمكنني استخدام TrackZone في Python مع Ultralytics YOLO11 ؟

من خلال بضعة أسطر من التعليمات البرمجية، يمكنك إعداد تتبع الكائنات في مناطق محددة، مما يسهل دمجها في مشاريعك.

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video/file.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))

# Define region points
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init TrackZone (Object Tracking in Zones, not complete frame)
trackzone = solutions.TrackZone(
    show=True,  # Display the output
    region=region_points,  # Pass region points
    model="yolo11n.pt",
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    im0 = trackzone.trackzone(im0)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

كيف يمكنني تكوين نقاط المنطقة لمعالجة الفيديو باستخدام Ultralytics TrackZone؟

إن تكوين نقاط المنطقة لمعالجة الفيديو باستخدام Ultralytics TrackZone بسيط وقابل للتخصيص. يمكنك تحديد المناطق وضبطها مباشرةً من خلال برنامج نصي Python ، مما يسمح بالتحكم الدقيق في المناطق التي تريد مراقبتها.

# Define region points
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]

# Init TrackZone (Object Tracking in Zones, not complete frame)
trackzone = solutions.TrackZone(
    show=True,  # Display the output
    region=region_points,  # Pass region points
)
📅 تم الإنشاء منذ 8 أيام ✏️ تم التحديث منذ 8 أيام

التعليقات