Ultralytics YOLO27:

Сопоставление объектов в поле зрения VisionEye с использованием 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)Точка, в которой VisionEye отслеживает объекты и рисует траектории с помощью решения VisionEye.
line_widthint2Толщина линий для рамок, ключевых точек и счётчиков, которые рисует решение.
verboseboolTrueВключает покадровый журнал решения с указанием формы входных данных, количества классов и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода.

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

АргументТипПо умолчаниюОписание
trackerstr'botsort.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"
    
    # 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 windows
  • Ultralytics YOLO26 известен своей скоростью, точностью и простотой интеграции, что делает его отличным выбором для отображения и отслеживания объектов. Ключевые преимущества:

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

    Дополнительную информацию о применении и преимуществах см. в документации Ultralytics YOLO26.

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

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

Комментарии