TrackZone باستخدام Ultralytics YOLO26#
ما TrackZone؟#
يتخصص TrackZone في مراقبة الأجسام ضمن مناطق محددة من الإطار بدلًا من الإطار بأكمله. وقد بُني على Ultralytics YOLO26، ويدمج اكتشاف الأجسام وتتبّعها داخل مناطق محددة لمقاطع الفيديو والبث المباشر من الكاميرات. تجعل الخوارزميات المتقدمة وتقنيات التعلم العميق في YOLO26 منه خيارًا مثاليًا لحالات الاستخدام في الوقت الفعلي، إذ يوفر تتبّعًا دقيقًا وفعّالًا للأجسام في تطبيقات مثل مراقبة الحشود والمراقبة الأمنية.
شاهد: كيفية تتبع الكائنات داخل منطقة باستخدام Ultralytics YOLO26 | TrackZone 🚀
مزايا تتبّع الأجسام ضمن المناطق (TrackZone)#
- التحليل الموجّه: يتيح تتبّع الأجسام ضمن مناطق محددة الحصول على رؤى أكثر تركيزًا، مما يسمح بمراقبة المناطق موضع الاهتمام وتحليلها بدقة، مثل نقاط الدخول أو المناطق المحظورة.
- تقليل عبء المعالجة اللاحقة: يتجاهل TrackZone الأجسام خارج المنطقة، فيستبعد الاكتشافات غير ذات الصلة ويقلل عدد الأجسام التي ينبغي عدّها أو تسجيلها أو إصدار تنبيهات بشأنها في المنطق الذي تبنيه فوقه. يظل الاكتشاف يعمل على إطار مقنّع بالحجم الكامل، لا على قصاصة ضيقة للمنطقة؛ لذا تتمثل الفائدة في مخرجات أنقى وأكثر تركيزًا، لا في تسريع استدلال النموذج.
- تعزيز الأمن: يحسّن التتبّع حسب المناطق المراقبة الأمنية من خلال مراقبة المناطق الحيوية، مما يساعد على الكشف المبكر عن الأنشطة غير المعتادة أو الاختراقات الأمنية.
- حلول قابلة للتوسع: تجعل القدرة على التركيز على مناطق محددة TrackZone قابلًا للتكيف مع سيناريوهات متنوعة، من متاجر البيع بالتجزئة إلى البيئات الصناعية، مع ضمان التكامل السلس وقابلية التوسع.
تطبيقات في العالم الحقيقي#
| الزراعة | النقل والمواصلات |
|---|---|
![]() | ![]() |
| تتبّع النباتات في حقل باستخدام Ultralytics YOLO26 | تتبّع المركبات على الطريق باستخدام Ultralytics YOLO26 |
# 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:
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
model | str | None | مسار ملف نموذج Ultralytics YOLO. |
region | list أو dict | None | النقاط التي تحدد منطقة الاهتمام، سواء أكانت قائمة من الصفوف (x, y) أم قاموسًا يربط أسماء المناطق بقوائم النقاط لمناطق متعددة (في RegionCounter فقط). عندما يكون None، تستخدم الحلول التي تتطلب منطقة إعدادًا افتراضيًا محددًا مسبقًا. |
line_width | int | 2 | سماكة الخط للصناديق والنقاط المفتاحية والعدادات التي يرسمها الحل. |
verbose | bool | True | يفعّل سجل الحل لكل إطار، ويشمل شكل المدخل وعدد الفئات وسرعة المعالجة. يظل استدعاء التتبع نفسه صامتًا دائمًا. |
يتضمن حل TrackZone دعم معلمات track:
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | يحدد خوارزمية التتبع المطلوب استخدامها. الخيارات المضمنة: botsort.yaml، bytetrack.yaml، ocsort.yaml، deepocsort.yaml، fasttrack.yaml، tracktrack.yaml. |
conf | float | 0.25 | يضبط عتبة الثقة للكشوفات؛ إذ تسمح القيم الأقل بتتبع مزيد من الكائنات، لكنها قد تتضمن إيجابيات كاذبة. |
iou | float | 0.7 | يضبط عتبة التقاطع على الاتحاد (IoU) لتصفية الكشوفات المتداخلة. |
classes | list | None | يصفّي النتائج حسب فهرس الفئة. على سبيل المثال، لا يتتبع classes=[0, 2, 3] إلا الفئات المحددة. |
device | str | None | يحدد الجهاز المستخدم للاستدلال (مثل cpu أو cuda:0 أو 0). ويتيح للمستخدمين الاختيار بين CPU أو GPU محددة أو أجهزة حوسبة أخرى لتنفيذ النموذج. |
imgsz | int or tuple | 640 | حجم صورة الاستدلال المستهدف: عدد صحيح لصورة مربعة، أو زوج (height, width). تُعدّل الأبعاد وفقًا لخطوة النموذج. |
max_det | int | 300 | الحد الأقصى لعدد الكشوفات التي يُحتفظ بها لكل إطار قبل التتبع، ما يحد من عدد الكائنات التي يعالجها الحل في المشاهد الكثيفة. |
quantize | int or str | None | دقة الاستدلال: 16 (FP16) أو 32/unset (FP32) لنماذج PyTorch وTorchScript خارج CPU؛ أما التنسيقات الأخرى فتستخدم الدقة التي يحددها الملف الاصطناعي وبيئة التشغيل. يحل هذا الوسيط محل الوسيطة half المهملة. |
علاوة على ذلك، تتوفر خيارات التصور التالية:
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
show | bool | False | إذا كان True، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. يفيد ذلك في الحصول على ملاحظات مرئية فورية أثناء التطوير أو الاختبار. |
show_conf | bool | True | يعرض درجة الثقة لكل اكتشاف بجوار التسمية، ما يوضح مدى يقين النموذج بشأن كل اكتشاف. |
show_labels | bool | True | يعرض تسميات كل اكتشاف في المخرجات المرئية، ما يتيح فهم الكائنات المكتشفة فورًا. |
عدّ الأجسام داخل المنطقة#
يعيد كل استدعاء لأداة التتبّع كائنًا من النوع 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 عندما تحتاج إلى مناطق متعددة أو شكل غير محدب.

