حساب المسافة باستخدام Ultralytics YOLO11
ما هو حساب المسافة (Distance Calculation)؟
تُعرف عملية قياس الفجوة بين كائنين بحساب المسافة داخل مساحة محددة. في حالة Ultralytics YOLO11، يتم استخدام مركز المربع المحيط لحساب المسافة للمربعات المحيطة التي يبرزها المستخدم.
شاهد: حساب المسافة باستخدام Ultralytics YOLO11
مرئيات
حساب المسافة باستخدام Ultralytics YOLO11 |
---|
![]() |
ما هي مزايا حساب المسافة؟
- دقة تحديد الموقع: يعزز تحديد المواقع المكانية الدقيقة في مهام الرؤية الحاسوبية.
- تقدير الحجم: يسمح بتقدير حجم الكائن لفهم سياقي أفضل.
- فهم المشهد: يحسن فهم المشهد ثلاثي الأبعاد لاتخاذ قرارات أفضل في تطبيقات مثل المركبات ذاتية القيادة وأنظمة المراقبة.
- تجنب الاصطدام: يمكّن الأنظمة من اكتشاف الاصطدامات المحتملة من خلال مراقبة المسافات بين الأجسام المتحركة.
- التحليل المكاني: يسهل تحليل علاقات الكائنات وتفاعلاتها داخل البيئة الخاضعة للمراقبة.
حساب المسافة
- انقر بزر الفأرة الأيسر على أي مربعين محيطين لحساب المسافة
- سيؤدي النقر بزر الفأرة الأيمن إلى حذف جميع النقاط المرسومة
- يمكن استخدام النقر بزر الفأرة الأيسر لرسم النقاط
المسافة هي تقدير
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data,
which lacks information about the object's depth.
حساب المسافة باستخدام Ultralytics YOLO
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("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
model="yolo11n.pt", # path to the YOLO11 model file.
show=True, # display the output
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = distancecalculator(im0)
print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
DistanceCalculation()
الوسائط
إليك جدول مع DistanceCalculation
arguments:
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
model |
str |
None |
مسار إلى ملف نموذج Ultralytics YOLO. |
يمكنك أيضًا الاستفادة من العديد من track
الوسائط في DistanceCalculation
الحل.
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
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 |
يعرض تسميات لكل كائن يتم الكشف عنه في الناتج المرئي. يوفر فهمًا فوريًا للكائنات التي تم الكشف عنها. |
تفاصيل التنفيذ
في DistanceCalculation
class يعمل عن طريق تتبع الأجسام عبر إطارات الفيديو وحساب المسافة الإقليدية بين مراكز الثقل للمربعات المحيطة المحددة. عندما تنقر على جسمين، يكون الحل:
- يستخرج مراكز الثقل (النقاط المركزية) للمربعات المحيطة المحددة
- لحساب المسافة الإقليدية بين هذه المراكز في وحدات البكسل
- يعرض المسافة على الإطار مع خط توصيل بين الكائنات
يستخدم التطبيق mouse_event_for_distance
الأسلوب للتعامل مع تفاعلات الماوس، مما يسمح للمستخدمين بتحديد الكائنات ومسح التحديدات حسب الحاجة. إن process
يتعامل الأسلوب مع المعالجة إطارًا بإطار، وتتبع الكائنات، وحساب المسافات.
التطبيقات
حساب المسافة باستخدام YOLO11 لديه العديد من التطبيقات العملية:
- تحليلات قطاع البيع بالتجزئة: قياس مدى قرب العملاء من المنتجات وتحليل فعالية تصميم المتجر.
- السلامة الصناعية: مراقبة المسافات الآمنة بين العمال والآلات
- إدارة حركة المرور: تحليل تباعد المركبات واكتشاف القيادة المتهورة
- تحليل الألعاب الرياضية: حساب المسافات بين اللاعبين والكرة ومواقع الملعب الرئيسية
- الرعاية الصحية: ضمان التباعد المناسب في مناطق الانتظار ومراقبة حركة المرضى
- الروبوتات: تمكين الروبوتات من الحفاظ على مسافات مناسبة من العوائق والأشخاص
الأسئلة الشائعة
كيف يمكنني حساب المسافات بين الكائنات باستخدام Ultralytics YOLO11؟
لحساب المسافات بين الكائنات باستخدام Ultralytics YOLO11، تحتاج إلى تحديد مراكز مربعات الإحاطة للكائنات المكتشفة. تتضمن هذه العملية تهيئة الـ DistanceCalculation
فئة من Ultralytics' solutions
الوحدة النمطية واستخدام مخرجات تتبع النموذج لحساب المسافات.
ما هي مزايا استخدام حساب المسافة مع Ultralytics YOLO11؟
يوفر استخدام حساب المسافة مع Ultralytics YOLO11 العديد من المزايا:
- دقة تحديد الموقع: يوفر تحديد المواقع المكانية الدقيقة للكائنات.
- تقدير الحجم: يساعد في تقدير الأحجام الفعلية، مما يساهم في فهم سياقي أفضل.
- فهم المشهد: يعزز فهم المشهد ثلاثي الأبعاد، مما يساعد على تحسين اتخاذ القرارات في تطبيقات مثل القيادة الذاتية والمراقبة.
- معالجة في الوقت الفعلي: يجري العمليات الحسابية أثناء التنفيذ، مما يجعله مناسبًا لتحليل الفيديو المباشر.
- إمكانيات التكامل: يعمل بسلاسة مع حلول YOLO11 الأخرى مثل تتبع الكائنات و تقدير السرعة.
هل يمكنني إجراء حساب المسافة في تدفقات الفيديو في الوقت الفعلي باستخدام Ultralytics YOLO11؟
نعم، يمكنك إجراء حساب المسافة في تدفقات الفيديو في الوقت الفعلي باستخدام Ultralytics YOLO11. تتضمن العملية التقاط إطارات الفيديو باستخدام OpenCV، تشغيل YOLO11 اكتشاف الكائنات، واستخدام DistanceCalculation
فئة لحساب المسافات بين الكائنات في الإطارات المتتالية. للحصول على تطبيق تفصيلي، راجع مثال على تدفق الفيديو.
كيف يمكنني حذف النقاط المرسومة أثناء حساب المسافة باستخدام Ultralytics YOLO11؟
لحذف النقاط المرسومة أثناء حساب المسافة باستخدام Ultralytics YOLO11، يمكنك استخدام النقر بزر الماوس الأيمن. سيؤدي هذا الإجراء إلى مسح جميع النقاط التي رسمتها. لمزيد من التفاصيل، راجع قسم الملاحظات ضمن مثال حساب المسافة.
ما هي الحجج الرئيسية لتهيئة فئة DistanceCalculation في Ultralytics YOLO11؟
الوسائط الرئيسية لتهيئة DistanceCalculation
تشمل الفئات في Ultralytics YOLO11 ما يلي:
model
: مسار إلى ملف نموذج YOLO11.tracker
: خوارزمية التتبع المراد استخدامها (الافتراضي هو 'botsort.yaml').conf
: عتبة الثقة للكشف.show
: علامة لعرض الإخراج.
للحصول على قائمة شاملة والقيم الافتراضية، راجع وسائط DistanceCalculation.