Отображение объектов в режиме VisionEye с использованием 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) | Точка, где зрение будет отслеживать объекты и рисовать пути, используя решение VisionEye. |
line_width | int | 2 | Толщина линий для рамок, ключевых точек и подсчетов, отрисовываемых решением. |
verbose | bool | True | Включает покадровый лог решения, содержащий форму входных данных, количество классов и скорость обработки. Сам вызов трекинга всегда выполняется молча. |
Ты также можешь использовать различные аргументы track в решении VisionEye:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Задает алгоритм трекинга, который нужно использовать. Встроенные опции: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Устанавливает порог уверенности для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания. |
iou | float | 0.7 | Устанавливает порог Intersection over Union (IoU) для фильтрации пересекающихся детекций. |
classes | list | None | Фильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы. |
device | str | None | Задает устройство для инференса (например, cpu, cuda:0 или 0). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели. |
Кроме того, поддерживаются некоторые аргументы визуализации, перечисленные ниже:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
show | bool | False | Если True, отображает аннотированные изображения или видео в окне. Полезно для немедленной визуальной обратной связи во время разработки или тестирования. |
show_conf | bool | True | Отображает показатель уверенности для каждого обнаружения рядом с меткой. Дает представление об уверенности модели в каждом обнаружении. |
show_labels | bool | True | Отображает метки для каждого обнаружения в визуальном выводе. Обеспечивает быстрое понимание того, какие объекты были обнаружены. |
Как работает VisionEye#
VisionEye работает путем установления фиксированной точки обзора в кадре и проведения линий из этой точки к обнаруженным объектам. Это имитирует то, как человеческое зрение фокусируется на нескольких объектах с одной точки зрения. Решение использует отслеживание объектов для поддержания постоянной идентификации объектов между кадрами, создавая визуальное представление пространственного отношения между наблюдателем (точкой обзора) и объектами в сцене.
Метод process в классе VisionEye выполняет несколько ключевых операций:
- Извлекает треки (ограничивающие рамки, классы и маски) из входного изображения
- Создает аннотатор для отрисовки ограничивающих рамок и подписей
- Для каждого обнаруженного объекта рисует подпись рамки и создает линию зрения от точки зрения
- Возвращает аннотированное изображение со статистикой отслеживания
Этот подход особенно полезен для приложений, требующих пространственного восприятия и визуализации взаимосвязей объектов, таких как системы наблюдения, автономная навигация и интерактивные инсталляции.
Применение VisionEye#
Отображение объектов VisionEye имеет множество практических применений в различных отраслях:
- Безопасность и наблюдение: мониторинг нескольких объектов интереса с фиксированной позиции камеры
- Розничная аналитика: отслеживание моделей движения покупателей по отношению к витринам магазинов
- Спортивный анализ: анализ расположения и движения игроков с точки зрения тренера
- Автономные транспортные средства: визуализация того, как автомобиль «видит» и расставляет приоритеты объектов в своей среде
- Взаимодействие человека и компьютера: создание более интуитивно понятных интерфейсов, реагирующих на пространственные отношения
Комбинируя VisionEye с другими решениями Ultralytics, такими как расчет расстояния или оценка скорости, ты можешь создавать комплексные системы, которые не только отслеживают объекты, но и понимают их пространственные отношения и поведение.
FAQ#
Чтобы начать использовать VisionEye Object Mapping с 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" # 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("vision-eye-mapping.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) # Init vision eye object visioneye = solutions.VisionEye( show=True, # display the output model="yolo26n.pt", # use any model that Ultralytics supports, e.g., YOLOv10 classes=[0, 2], # generate visioneye view for specific classes ) # Process video 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) # access the output video_writer.write(results.plot_im) # write the video file cap.release() video_writer.release() cv2.destroyAllWindows() # destroy all opened windowsUltralytics YOLO26 известен своей скоростью, точностью и легкостью интеграции, что делает его лучшим выбором для сопоставления и отслеживания объектов. Ключевые преимущества включают:
- Передовая производительность: высокая точность обнаружения объектов в реальном времени.
- Гибкость: Поддерживает детекцию, трекинг и расчет расстояния в едином пайплайне.
- Сообщество и поддержка: обширная документация и активное сообщество GitHub для решения проблем и улучшений.
- Простота использования: интуитивно понятный API упрощает сложные задачи, позволяя быстро развертывать и итерировать решения.
Для получения дополнительной информации о приложениях и преимуществах ознакомься с документацией Ultralytics YOLO26.
Ultralytics YOLO26 может бесшовно интегрироваться с различными инструментами машинного обучения, такими как Comet и ClearML, улучшая отслеживание экспериментов, совместную работу и воспроизводимость. Следуй подробным руководствам о том, как использовать YOLOv5 с Comet и интегрировать YOLO26 с ClearML, чтобы начать работу.
Для дальнейшего изучения и примеров интеграции ознакомься с нашим руководством по интеграциям Ultralytics.