نظرة عامة على مجموعات بيانات تتبع الأجسام المتعددة#
تتبع الأجسام المتعددة هو مكون حاسم في تحليلات الفيديو يقوم بتحديد الأجسام والحفاظ على معرفات فريدة لكل جسم مكتشف عبر إطارات الفيديو. يوفر Ultralytics YOLO قدرات تتبع قوية يمكن تطبيقها في مجالات متنوعة بما في ذلك المراقبة، وتحليلات الرياضة، ومراقبة المرور.
تنسيق مجموعة البيانات#
لا يقوم وضع التتبع (Track mode) بتدريب متتبع أو يتطلب مجموعة بيانات خاصة بالمتتبع. قم بتدريب نموذج كشف (detection) أو تجزئة (segmentation) أو وضعية (pose) أو صندوق محيط موجه (OBB) باستخدام تنسيق مجموعة البيانات القياسي لتلك المهمة، ثم استخدم الأوزان الناتجة مع model.track() أو yolo track. يربط المتتبع المحدد تنبؤات النموذج عبر الإطارات في وقت الاستدلال (inference).
المتتبعات المتاحة#
يدعم Ultralytics YOLO خوارزميات التتبع التالية:
- BoT-SORT - استخدم
botsort.yamlلتفعيل هذا المتتبع - ByteTrack - استخدم
bytetrack.yamlلتفعيل هذا المتتبع - OC-SORT - استخدم
ocsort.yamlلتفعيل هذا المتتبع - Deep OC-SORT - استخدم
deepocsort.yamlلتفعيل هذا المتتبع - FastTracker - استخدم
fasttrack.yamlلتفعيل هذا المتتبع - TrackTrack - استخدم
tracktrack.yamlلتفعيل هذا المتتبع (الافتراضي)
الاستخدام#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.track(source="https://youtu.be/LNwODJXcvt4", conf=0.1, iou=0.7, show=True)استمرار التتبع بين الإطارات#
للتتبع المستمر عبر إطارات الفيديو، يمكنك استخدام معامل persist=True:
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo26n.pt")
# Open the video file
cap = cv2.VideoCapture("path/to/video.mp4")
while cap.isOpened():
success, frame = cap.read()
if success:
# Run tracking with persistence between frames
results = model.track(frame, persist=True)
# Visualize the results
annotated_frame = results[0].plot()
cv2.imshow("Tracking", annotated_frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
break
cap.release()
cv2.destroyAllWindows()الأسئلة الشائعة#
لاستخدام تتبع الأجسام المتعددة مع Ultralytics YOLO، يمكنك البدء باستخدام أمثلة Python أو CLI المتاحة. إليك كيفية البدء:
مثالfrom ultralytics import YOLO model = YOLO("yolo26n.pt") # Load the YOLO26 model results = model.track(source="https://youtu.be/LNwODJXcvt4", conf=0.1, iou=0.7, show=True)تقوم هذه الأوامر بتحميل نموذج YOLO26 واستخدامه لتتبع الكائنات في مصدر الفيديو المحدد باستخدام عتبات الثقة (
conf) وIntersection over Union (iou). لمزيد من التفاصيل، راجع توثيق وضع التتبع.يعد Ultralytics YOLO نموذجاً متطوراً لكشف الكائنات معروفاً بأدائه في الوقت الفعلي ودقتة العالية. يوفر استخدام YOLO لتتبع الكائنات المتعددة عدة مزايا:
- التتبع في الوقت الفعلي: تحقيق تتبع فعال وعالي السرعة ومثالي للبيئات الديناميكية.
- مرونة مع النماذج المدربة مسبقاً: لا حاجة للتدريب من الصفر؛ ما عليك سوى استخدام نماذج الكشف أو التجزئة أو الوضع أو OBB المدربة مسبقاً.
- سهولة الاستخدام: تجعل تكامل واجهة برمجة التطبيقات البسيط مع كل من Python وCLI إعداد خطوط أنابيب التتبع أمراً مباشراً.
- توثيق واسع ودعم المجتمع: توفر Ultralytics توثيقاً شاملاً ومنتدى مجتمعياً نشطاً لاستكشاف الأخطاء وإصلاحها وتحسين نماذج التتبع الخاصة بك.
لمزيد من التفاصيل حول إعداد واستخدام YOLO للتتبع، تفضل بزيارة دليل استخدام التتبع الخاص بنا.
نعم. قم بتدريب نموذج كشف (detection) أو تجزئة (segmentation) أو وضعية (pose) أو صندوق محيط موجه (OBB) على مجموعة البيانات المخصصة الخاصة بك، ثم مرر أوزانه إلى
model.track(). يعمل المتتبع نفسه أثناء الاستدلال (inference) ولا يتطلب بيانات تدريب منفصلة.بعد تشغيل مهمة تتبع باستخدام Ultralytics YOLO، تتضمن النتائج نقاط بيانات مختلفة مثل معرفات الأجسام المتعقبة، ومربعات الإحاطة الخاصة بها، ودرجات الثقة. إليك نظرة عامة موجزة حول كيفية تفسير هذه النتائج:
- معرفات التتبع: يتم تعيين معرف فريد لكل جسم، مما يساعد في تتبعه عبر الإطارات.
- مربعات الإحاطة: تشير هذه إلى موقع الأجسام المتعقبة داخل الإطار.
- درجات الثقة: تعكس هذه ثقة النموذج في اكتشاف الجسم المتعقب.
للحصول على إرشادات تفصيلية حول تفسير هذه النتائج وتصورها، راجع دليل التعامل مع النتائج.
يمكنك تخصيص المتتبع عن طريق إنشاء نسخة معدلة من ملف تكوين المتتبع. قم بنسخ ملف تكوين المتتبع الموجود من ultralytics/cfg/trackers، وقم بتعديل المعاملات حسب الحاجة، وقم بتحديد هذا الملف عند تشغيل المتتبع:
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model.track(source="video.mp4", tracker="custom_tracker.yaml")