Link to this sectionРасчет расстояния с помощью Ultralytics YOLO26#
Link to this sectionЧто такое расчет расстояния?#
Расчет расстояния — это процесс измерения пространства между двумя обнаруженными объектами на изображении или кадре видео. В случае Ultralytics YOLO26 для вычисления расстояния для выбранных пользователем ограничивающих рамок используется центроид ограничивающей рамки.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
Link to this sectionВизуализация#
| Расчет расстояния с помощью Ultralytics YOLO26 |
|---|
![]() |
Link to this sectionПреимущества расчета расстояния#
- Точность локализации: улучшает точное пространственное позиционирование в задачах компьютерного зрения.
- Оценка размера: позволяет оценивать размер объекта для лучшего понимания контекста.
- Понимание сцены: улучшает восприятие 3D-сцены для принятия более эффективных решений в таких приложениях, как автономные транспортные средства и системы наблюдения.
- Предотвращение столкновений: позволяет системам обнаруживать потенциальные столкновения путем мониторинга расстояний между движущимися объектами.
- Пространственный анализ: способствует анализу взаимосвязей и взаимодействий объектов в отслеживаемой среде.
Расчет расстояния
- Нажми левой кнопкой мыши на любые две ограничивающие рамки, чтобы вычислить расстояние.
- Используй правую кнопку мыши, чтобы удалить все нарисованные точки.
- Кликни левой кнопкой мыши в любом месте кадра, чтобы добавить новые точки.
Расстояние является оценочным
Расстояние является оценочным и может быть не совсем точным, так как оно вычисляется с использованием 2D-данных, в которых отсутствует информация о глубине.
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="yolo26n.pt", # path to the YOLO26 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 windowsLink to this sectionАргументы DistanceCalculation()#
Вот таблица с аргументами DistanceCalculation:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
model | str | None | Путь к файлу модели Ultralytics YOLO. |
Ты также можешь использовать различные аргументы track в решении DistanceCalculation.
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Указывает алгоритм отслеживания, который нужно использовать. Встроенные опции: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.1 | Устанавливает порог уверенности для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания. |
iou | float | 0.7 | Устанавливает порог Intersection over Union (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 | int or None | None | Указывает ширину линии ограничивающих рамок. Если None, ширина линии автоматически подстраивается под размер изображения. Обеспечивает визуальную настройку для ясности. |
show_conf | bool | True | Отображает показатель уверенности для каждого обнаружения рядом с меткой. Дает представление об уверенности модели в каждом обнаружении. |
show_labels | bool | True | Отображает метки для каждого обнаружения в визуальном выводе. Обеспечивает быстрое понимание того, какие объекты были обнаружены. |
Link to this sectionДетали реализации#
Класс DistanceCalculation работает путем отслеживания объектов на кадрах видео и вычисления евклидова расстояния между центроидами выбранных ограничивающих рамок. Когда ты кликаешь на два объекта, решение:
- Извлекает центроиды (центральные точки) выбранных ограничивающих рамок
- Вычисляет евклидово расстояние между этими центроидами в пикселях
- Отображает расстояние на кадре с помощью соединительной линии между объектами
В реализации используется метод mouse_event_for_distance для обработки взаимодействий с мышью, что позволяет пользователям выбирать объекты и при необходимости очищать выделения. Метод process управляет покадровой обработкой, отслеживанием объектов и вычислением расстояний.
Link to this sectionПрименение#
Расчет расстояния с помощью YOLO26 имеет множество практических применений:
- Розничная аналитика: измерение близости покупателей к товарам и анализ эффективности планировки магазина
- Промышленная безопасность: мониторинг безопасных расстояний между рабочими и оборудованием
- Управление движением: анализ дистанции между транспортными средствами и обнаружение опасного приближения
- Спортивный анализ: вычисление расстояний между игроками, мячом и ключевыми позициями на поле
- Здравоохранение: обеспечение надлежащего дистанцирования в зонах ожидания и мониторинг перемещения пациентов
- Робототехника: обеспечение способности роботов поддерживать надлежащие расстояния до препятствий и людей
Link to this sectionFAQ#
Link to this sectionКак мне вычислить расстояние между объектами с помощью Ultralytics YOLO26?#
Чтобы вычислить расстояние между объектами с помощью Ultralytics YOLO26, тебе нужно определить центроиды ограничивающих рамок обнаруженных объектов. Этот процесс включает инициализацию класса DistanceCalculation из модуля solutions библиотеки Ultralytics и использование результатов отслеживания модели для вычисления расстояний.
Link to this sectionКаковы преимущества использования расчета расстояния с Ultralytics YOLO26?#
Использование расчета расстояния с Ultralytics YOLO26 предлагает несколько преимуществ:
- Точность локализации: обеспечивает точное пространственное позиционирование объектов.
- Оценка размера: помогает оценивать физические размеры, способствуя лучшему пониманию контекста.
- Понимание сцены: улучшает восприятие 3D-сцены, способствуя принятию более эффективных решений в таких приложениях, как автономное вождение и видеонаблюдение.
- Обработка в реальном времени: выполняет вычисления «на лету», что делает решение пригодным для анализа видео в реальном времени.
- Возможности интеграции: работает безупречно с другими решениями YOLO26, такими как отслеживание объектов и оценка скорости.
Link to this sectionМогу ли я выполнять расчет расстояния в потоках видео реального времени с помощью Ultralytics YOLO26?#
Да, ты можешь выполнять расчет расстояния в потоках видео реального времени с помощью Ultralytics YOLO26. Процесс включает захват кадров видео с использованием OpenCV, выполнение обнаружения объектов с помощью YOLO26 и использование класса DistanceCalculation для вычисления расстояний между объектами в последовательных кадрах. Подробную реализацию смотри в примере с потоковым видео.
Link to this sectionКак мне удалить точки, нарисованные во время расчета расстояния с помощью Ultralytics YOLO26?#
Чтобы удалить точки, нарисованные во время расчета расстояния с Ultralytics YOLO26, ты можешь воспользоваться кликом правой кнопкой мыши. Это действие очистит все точки, которые ты нарисовал. Подробности см. в разделе примечаний в примере расчета расстояния.
Link to this sectionКаковы ключевые аргументы для инициализации класса DistanceCalculation в Ultralytics YOLO26?#
К ключевым аргументам для инициализации класса DistanceCalculation в Ultralytics YOLO26 относятся:
model: путь к файлу модели YOLO26.tracker: используемый алгоритм отслеживания (по умолчанию 'botsort.yaml').conf: пороговое значение уверенности для обнаружений.show: флаг для отображения вывода.
Полный список и значения по умолчанию см. в разделе аргументы DistanceCalculation.
