TrackZone باستخدام Ultralytics YOLO11
ما هو TrackZone؟
تتخصص TrackZone في مراقبة الأجسام داخل مناطق محددة من الإطار بدلاً من الإطار بأكمله. مبنية على Ultralytics YOLO11، فهو يدمج خاصية الكشف عن الأجسام وتتبعها تحديدًا داخل مناطق محددة لمقاطع الفيديو وموجزات الكاميرا المباشرة. YOLO11 الخوارزميات المتقدمة وتقنيات التعلُّم العميق تجعله خيارًا مثاليًا لحالات الاستخدام في الوقت الفعلي، حيث يوفر تتبعًا دقيقًا وفعالًا للأجسام في تطبيقات مثل مراقبة الحشود والمراقبة.
مزايا تتبع الكائنات في المناطق (TrackZone)
- التحليل المستهدف: يتيح تتبع الأجسام داخل مناطق محددة الحصول على رؤى أكثر تركيزًا، مما يتيح المراقبة والتحليل الدقيق للمناطق ذات الأهمية، مثل نقاط الدخول أو المناطق المحظورة.
- تحسين الكفاءة: من خلال تضييق نطاق التتبع ليقتصر على مناطق محددة، يقلل TrackZone من النفقات الحسابية الزائدة، مما يضمن معالجة أسرع وأداءً أمثل.
- تعزيز الأمن: يعمل تتبع المناطق على تحسين المراقبة من خلال مراقبة المناطق الحساسة، مما يساعد في الكشف المبكر عن أي نشاط غير عادي أو خروقات أمنية.
- حلول قابلة للتطوير: إن القدرة على التركيز على مناطق محددة تجعل TrackZone قابلاً للتكيف مع مختلف السيناريوهات، من مساحات البيع بالتجزئة إلى الإعدادات الصناعية، مما يضمن التكامل السلس وقابلية التوسع.
التطبيقات الواقعية
الزراعة | النقل والمواصلات |
---|---|
تتبع النباتات في الحقل باستخدام Ultralytics YOLO11 | تتبع المركبات على الطريق باستخدام Ultralytics YOLO11 |
تتبع المنطقة باستخدام 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", # 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 . ما عليك سوى استخدام الأمر الوارد أدناه لبدء التتبع. يضمن هذا النهج تحليلاً فعالاً ونتائج دقيقة، مما يجعله مثاليًا لتطبيقات مثل المراقبة أو إدارة الحشود أو أي سيناريو يتطلب تتبع المنطقة.
كيف يمكنني استخدام 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
)