تحديد مواقع العناصر في عرض VisionEye باستخدام Ultralytics YOLO11 🚀
ما هو VisionEye Object Mapping؟
يوفر Ultralytics YOLO11 VisionEye القدرة لأجهزة الكمبيوتر على تحديد وتحديد الكائنات، ومحاكاة الدقة الرصدية للعين البشرية. تمكن هذه الوظيفة أجهزة الكمبيوتر من تمييز الكائنات المحددة والتركيز عليها، تمامًا مثل الطريقة التي تراقب بها العين البشرية التفاصيل من وجهة نظر معينة.
تخطيط VisionEye باستخدام Ultralytics YOLO
# Monitor objects position with visioneye
yolo solutions visioneye show=True
# Pass a source video
yolo solutions visioneye source="path/to/video.mp4"
# Monitor the specific classes
yolo solutions visioneye classes="[0, 5]"
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
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("visioneye_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize vision eye object
visioneye = solutions.VisionEye(
show=True, # display the output
model="yolo11n.pt", # use any model that Ultralytics support, i.e, YOLOv10
classes=[0, 2], # generate visioneye view for specific classes
vision_point=(50, 50), # the point, where vision will view objects and draw tracks
)
# 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
results = visioneye(im0)
print(results) # access the output
video_writer.write(results.plot_im) # write the video file
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
VisionEye
الوسائط
إليك جدول مع VisionEye
arguments:
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
model |
str |
None |
مسار إلى ملف نموذج Ultralytics YOLO. |
vision_point |
tuple[int, int] |
(20, 20) |
النقطة التي ستتعقب فيها الرؤية الكائنات وترسم المسارات باستخدام VisionEye Solution. |
يمكنك أيضًا الاستفادة من مختلف track
الوسائط داخل VisionEye
الحل:
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
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 |
يتحكم في عرض نتائج التتبع، مما يوفر مخرجًا مرئيًا للكائنات التي يتم تتبعها. |
device |
str |
None |
يحدد الجهاز الخاص بالاستدلال (على سبيل المثال، cpu , cuda:0 أو 0 ). يسمح للمستخدمين بالاختيار بين CPU أو GPU معين أو أجهزة حساب أخرى لتنفيذ النموذج. |
علاوة على ذلك، يتم دعم بعض وسيطات التصور، كما هو موضح أدناه:
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
show |
bool |
False |
إذا True ، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للحصول على تعليقات مرئية فورية أثناء التطوير أو الاختبار. |
line_width |
None or int |
None |
يحدد عرض خطوط مربعات الإحاطة. إذا None ، يتم تعديل عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصًا مرئيًا للوضوح. |
show_conf |
bool |
True |
يعرض قيمة الثقة لكل كائن يتم الكشف عنه بجانب التسمية. يعطي نظرة ثاقبة حول يقين النموذج لكل كائن تم الكشف عنه. |
show_labels |
bool |
True |
يعرض تسميات لكل كائن يتم الكشف عنه في الناتج المرئي. يوفر فهمًا فوريًا للكائنات التي تم الكشف عنها. |
كيف يعمل VisionEye
تعمل VisionEye عن طريق إنشاء نقطة رؤية ثابتة في الإطار ورسم خطوط من هذه النقطة إلى الكائنات المكتشفة. يحاكي هذا كيف تركز الرؤية البشرية على كائنات متعددة من وجهة نظر واحدة. يستخدم الحل تتبع الكائنات للحفاظ على تحديد متسق للكائنات عبر الإطارات، مما يخلق تمثيلًا مرئيًا للعلاقة المكانية بين المراقب (نقطة الرؤية) والكائنات في المشهد.
في process
ينفذ الأسلوب في فئة VisionEye عدة عمليات رئيسية:
- يستخرج المسارات (المربعات المحيطة والفئات والأقنعة) من الصورة المدخلة
- ينشئ مُعلِّمًا لرسم مربعات الإحاطة والتسميات
- لكل كائن يتم اكتشافه، يرسم مربع تسمية وينشئ خط رؤية من نقطة الرؤية
- إرجاع الصورة المشروحة مع إحصائيات التتبع
تعتبر هذه الطريقة مفيدة بشكل خاص للتطبيقات التي تتطلب وعيًا مكانيًا وتصورًا للعلاقة بين الكائنات، مثل أنظمة المراقبة والملاحة الذاتية والتركيبات التفاعلية.
تطبيقات VisionEye
يحتوي تخطيط كائنات VisionEye على العديد من التطبيقات العملية في مختلف الصناعات:
- الأمن والمراقبة: مراقبة العديد من الكائنات المهمة من موضع كاميرا ثابت.
- تحليلات قطاع البيع بالتجزئة: تتبع أنماط حركة العملاء بالنسبة إلى معروضات المتجر.
- تحليل الألعاب الرياضية: تحليل تمركز اللاعبين وحركتهم من وجهة نظر المدرب
- المركبات ذاتية القيادة: تصور كيف "ترى" السيارة الأشياء وتعطيها الأولوية في بيئتها
- التفاعل بين الإنسان والحاسوب: إنشاء واجهات أكثر سهولة تستجيب للعلاقات المكانية
من خلال الجمع بين VisionEye وحلول Ultralytics الأخرى مثل حساب المسافة أو تقدير السرعة، يمكنك بناء أنظمة شاملة لا تتبع الأجسام فحسب، بل تفهم أيضًا علاقاتها المكانية وسلوكياتها.
ملاحظة
لأية استفسارات، لا تتردد في نشر أسئلتك في قسم المشكلات في Ultralytics أو قسم المناقشة المذكور أدناه.
الأسئلة الشائعة
كيف يمكنني البدء في استخدام VisionEye Object Mapping مع Ultralytics YOLO11؟
لبدء استخدام VisionEye Object Mapping مع Ultralytics YOLO11، ستحتاج أولاً إلى تثبيت حزمة Ultralytics YOLO عبر pip. بعد ذلك، يمكنك استخدام نموذج التعليمات البرمجية المتوفر في الوثائق لإعداد الكشف عن الكائنات باستخدام VisionEye. إليك مثال بسيط لمساعدتك على البدء:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
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("vision-eye-mapping.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init vision eye object
visioneye = solutions.VisionEye(
show=True, # display the output
model="yolo11n.pt", # use any model that Ultralytics support, i.e, YOLOv10
classes=[0, 2], # generate visioneye view for specific classes
)
# 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
results = visioneye(im0)
print(results) # access the output
video_writer.write(results.plot_im) # write the video file
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
لماذا يجب علي استخدام Ultralytics YOLO11 لرسم خرائط وتتبع الكائنات؟
يشتهر Ultralytics YOLO11 بسرعته و دقته وسهولة دمجه، مما يجعله الخيار الأفضل لرسم الخرائط وتتبع الأجسام. تشمل المزايا الرئيسية ما يلي:
- أداء حديث: يوفر دقة عالية في الكشف عن الكائنات في الوقت الفعلي.
- المرونة: يدعم مهامًا متنوعة مثل الكشف والتتبع وحساب المسافة.
- المجتمع والدعم: وثائق شاملة ومجتمع GitHub نشط لاستكشاف الأخطاء وإصلاحها والتحسينات.
- سهولة الاستخدام: واجهة برمجة تطبيقات سهلة الاستخدام تعمل على تبسيط المهام المعقدة، مما يسمح بالنشر والتكرار السريع.
لمزيد من المعلومات حول التطبيقات والفوائد، تحقق من وثائق Ultralytics YOLO11.
كيف يمكنني دمج VisionEye مع أدوات التعلم الآلي الأخرى مثل Comet أو ClearML؟
يمكن أن تتكامل Ultralytics YOLO11 بسلاسة مع أدوات تعلم الآلة المختلفة مثل Comet و ClearML، مما يعزز تتبع التجارب والتعاون وإمكانية التكرار. اتبع الأدلة التفصيلية حول كيفية استخدام YOLOv5 مع Comet و دمج YOLO11 مع ClearML للبدء.
لمزيد من الاستكشاف وأمثلة التكامل، تحقق من دليل تكامل Ultralytics الخاص بنا.