Сопоставление объектов с помощью VisionEye View и Ultralytics YOLO26#
Что такое сопоставление объектов VisionEye?#
Ultralytics YOLO26 VisionEye позволяет компьютерам распознавать объекты и определять их местоположение, имитируя точность человеческого зрения. Благодаря этой функции компьютеры могут различать конкретные объекты и фокусироваться на них, подобно тому как человеческий глаз замечает детали с определённой точки обзора.
Сопоставляй объекты с помощью YOLO26#
VisionEye задаёт в кадре фиксированную точку наблюдения и проводит от неё луч к каждому отслеживаемому объекту, позволяя визуализировать сцену с одной точки обзора. Задай vision_point как пиксельные координаты наблюдателя, а затем запусти решение на видео с помощью Python API или CLI.
# Monitor objects position with visioneye
yolo solutions visioneye show=True
# Pass a source video
yolo solutions visioneye source="path/to/video.mp4"
# Monitor the specific classes
yolo solutions visioneye classes="[0, 5]"Аргументы VisionEye#
Вот таблица с аргументами VisionEye:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
model | str | None | Путь к файлу модели Ultralytics YOLO. |
vision_point | tuple[int, int] | (20, 20) | Точка, в которой Vision отслеживает объекты и рисует траектории с помощью решения VisionEye. |
line_width | int | 2 | Толщина линий рамок, ключевых точек и счётчиков, которые рисует решение. |
verbose | bool | True | Включает журнал решения для каждого кадра с указанием формы входных данных, количества объектов по классам и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода сообщений. |
В решении VisionEye также можно использовать различные аргументы track:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | Задаёт алгоритм отслеживания. Встроенные варианты: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Задаёт порог уверенности для обнаружений: при более низких значениях можно отслеживать больше объектов, но возрастает вероятность ложноположительных срабатываний. |
iou | float | 0.7 | Задаёт порог пересечения над объединением (IoU) для фильтрации перекрывающихся обнаружений. |
classes | list | None | Фильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы. |
device | str | None | Задаёт устройство для инференса (например, cpu, cuda:0 или 0). Позволяет выбрать CPU, определённый GPU или другое вычислительное устройство для выполнения модели. |
imgsz | int or tuple | 640 | Целевой размер изображения для инференса: целое число для квадратного изображения или пара (height, width). Размеры корректируются с учётом шага модели. |
max_det | int | 300 | Максимальное количество обнаружений, сохраняемых в каждом кадре перед отслеживанием; ограничивает число объектов, обрабатываемых решением в насыщенных сценах. |
quantize | int or str | None | Точность инференса: 16 (FP16) или 32/не задано (FP32) для моделей PyTorch и TorchScript; другие форматы используют точность, выбранную артефактом и средой выполнения. Заменяет устаревший флаг half. |
Кроме того, поддерживаются некоторые аргументы визуализации, перечисленные ниже:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
show | bool | False | Если True, показывает аннотированные изображения или видео в окне. Полезно для мгновенной визуальной проверки во время разработки или тестирования. |
show_conf | bool | True | Показывает оценку уверенности каждой детекции рядом с меткой. Позволяет оценить уверенность модели в каждой детекции. |
show_labels | bool | True | Показывает метки каждой детекции на визуализации. Помогает сразу понять, какие объекты обнаружены. |
Как работает VisionEye#
VisionEye задаёт в кадре фиксированную точку наблюдения и проводит от неё линии к обнаруженным объектам. Это имитирует способность человеческого зрения фокусироваться на нескольких объектах с одной точки обзора. Решение использует отслеживание объектов, чтобы сохранять их идентификацию от кадра к кадру и наглядно показывать пространственные отношения между наблюдателем (точкой обзора) и объектами в сцене.
Метод process класса VisionEye выполняет несколько основных операций:
- Извлекает данные об отслеживании из входного изображения (ограничивающие рамки, классы и идентификаторы объектов)
- Создаёт аннотатор для отрисовки ограничивающих рамок и меток
- Для каждого обнаруженного объекта рисует рамку с меткой и проводит линию от точки обзора
- Возвращает аннотированное изображение со статистикой отслеживания
Этот подход особенно полезен в приложениях, которым важно учитывать пространственное окружение и визуализировать взаимосвязи объектов, например в системах видеонаблюдения, автономной навигации и интерактивных инсталляциях.
Применение VisionEye#
Сопоставление объектов с помощью VisionEye находит множество практических применений в различных отраслях:
- Безопасность и видеонаблюдение: отслеживание нескольких интересующих объектов с фиксированной позиции камеры
- Аналитика розничной торговли: отслеживание перемещений покупателей относительно витрин и выкладки товаров
- Спортивная аналитика: анализ расположения и перемещений игроков с точки зрения тренера
- Автономные транспортные средства: визуализация того, как транспортное средство «видит» объекты вокруг себя и определяет их приоритет
- Взаимодействие человека с компьютером: создание более интуитивных интерфейсов, учитывающих пространственные взаимосвязи
Сочетая VisionEye с другими решениями Ultralytics, например с расчётом расстояния или оценкой скорости, ты можешь создавать комплексные системы, которые не только отслеживают объекты, но и распознают их пространственные взаимосвязи и поведение.
Часто задаваемые вопросы#
Чтобы начать использовать сопоставление объектов VisionEye с Ultralytics YOLO26, сначала установи пакет Ultralytics YOLO с помощью pip. Затем настрой обнаружение объектов с VisionEye, используя пример кода из документации. Вот простой пример для начала:
import cv2 from ultralytics import solutions cap = cv2.VideoCapture("path/to/video.mp4") assert cap.isOpened(), "Error reading video file" # Запись видео 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("vision-eye-mapping.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) # Инициализация объекта VisionEye visioneye = solutions.VisionEye( show=True, # отобразить результат model="yolo26n.pt", # используй любую модель, поддерживаемую Ultralytics, например yolo26s.pt classes=[0, 2], # создание представления VisionEye для выбранных классов ) # Обработка видео while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or video processing has been successfully completed.") break results = visioneye(im0) print(results) # доступ к результату video_writer.write(results.plot_im) # запись видеофайла cap.release() video_writer.release() cv2.destroyAllWindows() # закрытие всех открытых оконUltralytics YOLO26 известна своей скоростью, точностью и простотой интеграции, поэтому это отличный выбор для сопоставления и отслеживания объектов. К основным преимуществам относятся:
- Передовая производительность: высокая точность обнаружения объектов в реальном времени.
- Гибкость: обнаружение объектов, отслеживание и расчёт расстояния в рамках одного конвейера.
- Сообщество и поддержка: подробная документация и активное сообщество GitHub, где можно получить помощь в устранении неполадок и улучшении решения.
- Простота использования: интуитивно понятный API упрощает сложные задачи и позволяет быстро развёртывать и дорабатывать решение.
Подробнее о применении и преимуществах читай в документации Ultralytics YOLO26.
Ultralytics YOLO26 легко интегрируется с различными инструментами машинного обучения, такими как Comet и ClearML, что упрощает отслеживание экспериментов, совместную работу и воспроизводимость. Чтобы начать, следуй подробным руководствам по интеграции YOLO26 с Comet и интеграции YOLO26 с ClearML.
Дополнительные материалы и примеры интеграции смотри в руководстве по интеграциям Ultralytics.