Перейти к содержанию

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

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

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



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

Визуальные материалы

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

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

  • Точность локализации: Повышает точность пространственного позиционирования в задачах компьютерного зрения.
  • Оценка размера: Позволяет оценить размер объекта для лучшего контекстного понимания.
  • Понимание сцены: Улучшает понимание 3D-сцены для принятия более эффективных решений в таких приложениях, как автономные транспортные средства и системы наблюдения.
  • Предотвращение столкновений: Позволяет системам обнаруживать потенциальные столкновения путем мониторинга расстояний между движущимися объектами.
  • Пространственный анализ: Облегчает анализ взаимосвязей и взаимодействий объектов в пределах контролируемой среды.
Расчет расстояния
  • Кликните на любые два ограничивающих прямоугольника левой кнопкой мыши для расчета расстояния
  • Правая кнопка мыши удалит все нарисованные точки
  • Левая кнопка мыши используется для рисования точек
Расстояние является оценочным
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 аргументы:

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

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

Аргумент Тип По умолчанию Описание
tracker str 'botsort.yaml' Указывает алгоритм отслеживания, например, bytetrack.yaml или botsort.yaml.
conf float 0.3 Устанавливает порог уверенности для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания.
iou float 0.5 Устанавливает порог 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 None or int None Указывает ширину линии ограничивающих рамок. Если None, ширина линии автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для большей четкости.
show_conf bool True Отображает оценку достоверности для каждого обнаружения рядом с меткой. Дает представление об уверенности модели для каждого обнаружения.
show_labels bool True Отображает метки для каждого обнаружения в визуальном выводе. Обеспечивает немедленное понимание обнаруженных объектов.

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

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

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

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

Приложения

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

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

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

Как рассчитать расстояния между объектами, используя Ultralytics YOLO11?

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

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

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

  • Точность локализации: Обеспечивает точное пространственное позиционирование объектов.
  • Оценка размера: Помогает оценить физические размеры, способствуя лучшему контекстному пониманию.
  • Понимание сцены: Улучшает понимание 3D-сцен, помогая принимать более взвешенные решения в таких приложениях, как автономное вождение и наблюдение.
  • Обработка в реальном времени: Выполняет вычисления на лету, что делает его подходящим для анализа видео в реальном времени.
  • Возможности интеграции: Бесперебойно работает с другими решениями 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.



📅 Создано 1 год назад ✏️ Обновлено 2 месяца назад

Комментарии