Ultralytics YOLO27:
Get Started

Сопоставление объектов с помощью VisionEye View и Ultralytics YOLO26#

Что такое сопоставление объектов VisionEye?#

Ultralytics YOLO26 VisionEye позволяет компьютерам распознавать объекты и определять их местоположение, имитируя точность человеческого зрения. Благодаря этой функции компьютеры могут различать конкретные объекты и фокусироваться на них, подобно тому как человеческий глаз замечает детали с определённой точки обзора.

VisionEye object mapping with YOLO tracking

Сопоставляй объекты с помощью YOLO26#

VisionEye задаёт в кадре фиксированную точку наблюдения и проводит от неё луч к каждому отслеживаемому объекту, позволяя визуализировать сцену с одной точки обзора. Задай vision_point как пиксельные координаты наблюдателя, а затем запусти решение на видео с помощью Python API или CLI.

Сопоставление с помощью VisionEye на базе Ultralytics YOLO
# 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:

АргументТипПо умолчаниюОписание
modelstrNoneПуть к файлу модели Ultralytics YOLO.
vision_pointtuple[int, int](20, 20)Точка, в которой Vision отслеживает объекты и рисует траектории с помощью решения VisionEye.
line_widthint2Толщина линий рамок, ключевых точек и счётчиков, которые рисует решение.
verboseboolTrueВключает журнал решения для каждого кадра с указанием формы входных данных, количества объектов по классам и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода сообщений.

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

АргументТипПо умолчаниюОписание
trackerstr'tracktrack.yaml'Задаёт алгоритм отслеживания. Встроенные варианты: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Задаёт порог уверенности для обнаружений: при более низких значениях можно отслеживать больше объектов, но возрастает вероятность ложноположительных срабатываний.
ioufloat0.7Задаёт порог пересечения над объединением (IoU) для фильтрации перекрывающихся обнаружений.
classeslistNoneФильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы.
devicestrNoneЗадаёт устройство для инференса (например, cpu, cuda:0 или 0). Позволяет выбрать CPU, определённый GPU или другое вычислительное устройство для выполнения модели.
imgszint or tuple640Целевой размер изображения для инференса: целое число для квадратного изображения или пара (height, width). Размеры корректируются с учётом шага модели.
max_detint300Максимальное количество обнаружений, сохраняемых в каждом кадре перед отслеживанием; ограничивает число объектов, обрабатываемых решением в насыщенных сценах.
quantizeint or strNoneТочность инференса: 16 (FP16) или 32/не задано (FP32) для моделей PyTorch и TorchScript; другие форматы используют точность, выбранную артефактом и средой выполнения. Заменяет устаревший флаг half.

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

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

Как работает VisionEye#

VisionEye задаёт в кадре фиксированную точку наблюдения и проводит от неё линии к обнаруженным объектам. Это имитирует способность человеческого зрения фокусироваться на нескольких объектах с одной точки обзора. Решение использует отслеживание объектов, чтобы сохранять их идентификацию от кадра к кадру и наглядно показывать пространственные отношения между наблюдателем (точкой обзора) и объектами в сцене.

Метод process класса VisionEye выполняет несколько основных операций:

  1. Извлекает данные об отслеживании из входного изображения (ограничивающие рамки, классы и идентификаторы объектов)
  2. Создаёт аннотатор для отрисовки ограничивающих рамок и меток
  3. Для каждого обнаруженного объекта рисует рамку с меткой и проводит линию от точки обзора
  4. Возвращает аннотированное изображение со статистикой отслеживания

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

Применение 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 известна своей скоростью, точностью и простотой интеграции, поэтому это отличный выбор для сопоставления и отслеживания объектов. К основным преимуществам относятся:

    1. Передовая производительность: высокая точность обнаружения объектов в реальном времени.
    2. Гибкость: обнаружение объектов, отслеживание и расчёт расстояния в рамках одного конвейера.
    3. Сообщество и поддержка: подробная документация и активное сообщество GitHub, где можно получить помощь в устранении неполадок и улучшении решения.
    4. Простота использования: интуитивно понятный API упрощает сложные задачи и позволяет быстро развёртывать и дорабатывать решение.

    Подробнее о применении и преимуществах читай в документации Ultralytics YOLO26.

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

    Дополнительные материалы и примеры интеграции смотри в руководстве по интеграциям Ultralytics.

Комментарии