YOLO Vision 2026:

Расчет расстояния с помощью Ultralytics YOLO26#

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

Расчет расстояния — это процесс измерения пространства между двумя обнаруженными объектами в кадре изображения или видео. В случае Ultralytics YOLO26 для расчета расстояния для выделенных пользователем bounding box используется центроид ограничивающей рамки.



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

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

Расчет расстояния с помощью Ultralytics YOLO26
Ultralytics YOLO26 Distance Calculation

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

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

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

Вычисляй расстояния с YOLO26#

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

Расчет расстояния с помощью 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.
line_widthint2Толщина линий для рамок, ключевых точек и подсчетов, отрисовываемых решением.
verboseboolTrueВключает покадровый лог решения, содержащий форму входных данных, количество классов и скорость обработки. Сам вызов трекинга всегда выполняется молча.

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

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

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

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

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

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

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

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

Применение#

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

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

FAQ#

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

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

    • Точность локализации: обеспечивает точное пространственное позиционирование объектов.
    • Оценка размера: помогает оценивать физические размеры, способствуя лучшему пониманию контекста.
    • Понимание сцены: улучшает восприятие 3D-сцены, способствуя принятию более эффективных решений в таких приложениях, как автономное вождение и видеонаблюдение.
    • Обработка в реальном времени: выполняет вычисления «на лету», что делает решение пригодным для анализа видео в реальном времени.
    • Возможности интеграции: Бесшовно работает с другими решениями YOLO26, такими как object tracking и speed estimation.
  • Да, ты можешь выполнять расчет расстояний в потоках видео в реальном времени с помощью Ultralytics YOLO26. Процесс включает захват кадров видео с помощью OpenCV, запуск object detection YOLO26 и использование класса DistanceCalculation для расчета расстояний между объектами в последовательных кадрах. Подробную реализацию см. в примере видеопотока.

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

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

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

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

Комментарии