Сопоставление объектов в поле зрения 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 отслеживает объекты и рисует траектории с помощью решения 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 | Задаёт порог пересечения над объединением (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" # 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., yolo26s.pt 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 известен своей скоростью, точностью и простотой интеграции, что делает его отличным выбором для отображения и отслеживания объектов. Ключевые преимущества:
- Производительность уровня state of the art: обеспечивает высокую точность обнаружения объектов в реальном времени.
- Гибкость: поддерживает обнаружение, отслеживание и расчёт расстояния в рамках одного конвейера.
- Сообщество и поддержка: подробная документация и активное сообщество GitHub для устранения неполадок и улучшения продукта.
- Простота использования: интуитивно понятный API упрощает выполнение сложных задач, обеспечивая быстрое развёртывание и итеративную разработку.
Дополнительную информацию о применении и преимуществах см. в документации Ultralytics YOLO26.
Ultralytics YOLO26 легко интегрируется с различными инструментами машинного обучения, такими как Comet и ClearML, улучшая отслеживание экспериментов, совместную работу и воспроизводимость. Чтобы начать работу, ознакомься с подробными руководствами о том, как использовать YOLOv5 с Comet и интегрировать YOLO26 с ClearML.
Дополнительные примеры использования и интеграции см. в нашем руководстве по интеграциям Ultralytics.