Расчет расстояния с использованием Ultralytics YOLO26

Что такое расчет расстояния?

Измерение промежутка между двумя объектами называется расчетом расстояния в заданном пространстве. В случае с Ultralytics YOLO26 для вычисления расстояния между выбранными пользователем bounding box используется их центроид.



Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀

Визуализация

Расчет расстояния с использованием Ultralytics YOLO26
Расчет расстояния с Ultralytics YOLO26

Преимущества расчета расстояния

  • Точность локализации: Улучшает точность пространственного позиционирования в задачах компьютерного зрения.
  • Оценка размера: Позволяет оценивать размер объектов для лучшего понимания контекста.
  • Понимание сцены: Улучшает восприятие 3D-сцены для принятия более эффективных решений в таких приложениях, как автономные транспортные средства и системы видеонаблюдения.
  • Предотвращение столкновений: Позволяет системам обнаруживать потенциальные столкновения путем отслеживания расстояний между движущимися объектами.
  • Пространственный анализ: Облегчает анализ взаимоотношений и взаимодействий объектов в контролируемой среде.
Расчет расстояния
  • Нажми левую кнопку мыши на любых двух ограничивающих рамках (bounding boxes), чтобы рассчитать расстояние.
  • Используй правую кнопку мыши, чтобы удалить все нарисованные точки.
  • Нажми левой кнопкой мыши в любом месте кадра, чтобы добавить новые точки.
Расстояние является оценочным

Расстояние является оценочным и может быть не совсем точным, так как оно рассчитывается с использованием 2D-данных, в которых отсутствует информация о глубине.

Расчет расстояния с использованием 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="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 windows

Аргументы DistanceCalculation()

Вот таблица с аргументами DistanceCalculation:

АргументТипПо умолчаниюОписание
modelstrNoneПуть к файлу модели Ultralytics YOLO.

Ты также можешь использовать различные аргументы track в решении DistanceCalculation.

АргументТипПо умолчаниюОписание
trackerstr'botsort.yaml'Указывает алгоритм отслеживания, который необходимо использовать, например, bytetrack.yaml или botsort.yaml.
conffloat0.1Устанавливает порог достоверности для обнаружения; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания.
ioufloat0.7Устанавливает порог Intersection over Union (IoU) для фильтрации перекрывающихся обнаружений.
classeslistNoneФильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы.
verboseboolTrueУправляет отображением результатов отслеживания, предоставляя визуальный вывод отслеживаемых объектов.
devicestrNoneУказывает устройство для вывода (например, cpu, cuda:0 или 0). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели.

Кроме того, доступны следующие аргументы визуализации:

АргументТипПо умолчаниюОписание
showboolFalseЕсли True, отображает аннотированные изображения или видео в окне. Полезно для мгновенной визуальной проверки в процессе разработки или тестирования.
line_widthint or NoneNoneЗадает толщину линий ограничивающих рамок. Если None, толщина подбирается автоматически в зависимости от размера изображения. Обеспечивает визуальную настройку для ясности.
show_confboolTrueОтображает показатель уверенности для каждого обнаруженного объекта рядом с меткой. Дает представление об уверенности модели в каждом обнаружении.
show_labelsboolTrueОтображает метки для каждого обнаруженного объекта на визуальном выводе. Дает быстрое понимание того, какие объекты были найдены.

Детали реализации

Класс DistanceCalculation работает за счет отслеживания объектов на кадрах видео и вычисления евклидова расстояния между центроидами выбранных ограничивающих рамок. Когда ты кликаешь на два объекта, решение:

  1. Извлекает центроиды (центральные точки) выбранных ограничивающих рамок
  2. Вычисляет евклидово расстояние между этими центроидами в пикселях
  3. Отображает расстояние на кадре с помощью линии, соединяющей объекты

Реализация использует метод mouse_event_for_distance для обработки взаимодействий с мышью, позволяя выбирать объекты и при необходимости очищать выделение. Метод process отвечает за покадровую обработку, отслеживание объектов и расчет расстояний.

Приложения

Расчет расстояния с YOLO26 находит множество практических применений:

  • Розничная аналитика: Измеряй близость клиентов к товарам и анализируй эффективность планировки магазина
  • Промышленная безопасность: Контролируй безопасные расстояния между работниками и оборудованием
  • Управление трафиком: Анализируй интервалы между транспортными средствами и обнаруживай опасное сокращение дистанции
  • Спортивная аналитика: Рассчитывай расстояния между игроками, мячом и ключевыми позициями на поле
  • Здравоохранение: Обеспечивай соблюдение дистанции в зонах ожидания и отслеживай перемещение пациентов
  • Робототехника: Позволяй роботам поддерживать надлежащие расстояния от препятствий и людей

Часто задаваемые вопросы (FAQ)

Как рассчитать расстояние между объектами с помощью Ultralytics YOLO26?

Чтобы рассчитать расстояние между объектами с использованием Ultralytics YOLO26, тебе нужно определить центроиды ограничивающих рамок обнаруженных объектов. Этот процесс включает инициализацию класса DistanceCalculation из модуля solutions от Ultralytics и использование выходных данных трекинга модели для расчета расстояний.

Каковы преимущества использования расчета расстояния с Ultralytics YOLO26?

Использование расчета расстояния с Ultralytics YOLO26 дает несколько преимуществ:

  • Точность локализации: Обеспечивает точное пространственное позиционирование объектов.
  • Оценка размера: Помогает оценивать физические размеры, способствуя лучшему пониманию контекста.
  • Понимание сцены: Улучшает восприятие 3D-сцены, помогая принимать более правильные решения в таких приложениях, как автономное вождение и наблюдение.
  • Обработка в реальном времени: Выполняет расчеты «на лету», что делает решение подходящим для анализа видео в реальном времени.
  • Возможности интеграции: Беспрепятственно работает с другими решениями YOLO26, такими как отслеживание объектов и оценка скорости.

Можно ли выполнять расчет расстояния в потоках видео в реальном времени с помощью Ultralytics YOLO26?

Да, ты можешь выполнять расчет расстояния в потоках видео в реальном времени с помощью Ultralytics YOLO26. Процесс включает захват кадров видео с помощью OpenCV, выполнение детекции объектов с YOLO26 и использование класса DistanceCalculation для расчета расстояний между объектами в последовательных кадрах. Подробную реализацию смотри в примере с видеопотоком.

Как удалить точки, нарисованные во время расчета расстояния с помощью Ultralytics YOLO26?

Чтобы удалить точки, нарисованные во время расчета расстояния с помощью Ultralytics YOLO26, используй щелчок правой кнопкой мыши. Это действие очистит все точки, которые ты нарисовал. Дополнительные сведения см. в разделе примечаний под примером расчета расстояния.

Каковы ключевые аргументы для инициализации класса DistanceCalculation в Ultralytics YOLO26?

Ключевые аргументы для инициализации класса DistanceCalculation в Ultralytics YOLO26 включают:

  • model: Путь к файлу модели YOLO26.
  • tracker: Используемый алгоритм трекинга (по умолчанию 'botsort.yaml').
  • conf: Порог уверенности для детекций.
  • show: Флаг отображения вывода.

Для получения полного списка и значений по умолчанию см. аргументы DistanceCalculation.

Комментарии