Перейти к содержанию

Аналитика с использованием Ultralytics YOLO11

Введение

В этом руководстве представлен всесторонний обзор трех основных типов визуализации данных: линейные графики, столбчатые диаграммы и круговые диаграммы. Каждый раздел включает пошаговые инструкции и фрагменты кода о том, как создать эти визуализации с помощью Python.



Смотреть: Как создавать аналитические графики с использованием Ultralytics | Линейные графики, столбчатые диаграммы, площадные и круговые диаграммы

Визуальные примеры

Линейный график Столбчатая диаграмма Круговая диаграмма
Линейный график Столбчатая диаграмма Круговая диаграмма

Почему важны графы

  • Линейные графики идеально подходят для отслеживания изменений за короткие и длительные периоды и для сравнения изменений для нескольких групп за один и тот же период.
  • Столбчатые диаграммы, с другой стороны, подходят для сравнения величин по различным категориям и отображения взаимосвязей между категорией и ее числовым значением.
  • Наконец, круговые диаграммы эффективны для иллюстрации пропорций между категориями и отображения частей целого.

Аналитика с использованием Ultralytics YOLO

yolo solutions analytics show=True

# Pass the source
yolo solutions analytics source="path/to/video.mp4"

# Generate the pie chart
yolo solutions analytics analytics_type="pie" show=True

# Generate the bar plots
yolo solutions analytics analytics_type="bar" show=True

# Generate the area plots
yolo solutions analytics analytics_type="area" show=True
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))
out = cv2.VideoWriter(
    "analytics_output.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

# Initialize analytics object
analytics = solutions.Analytics(
    show=True,  # display the output
    analytics_type="line",  # pass the analytics type, could be "pie", "bar" or "area".
    model="yolo11n.pt",  # path to the YOLO11 model file
    # classes=[0, 2],  # display analytics for specific detection classes
)

# Process video
frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame

        # print(results)  # access the output

        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()  # destroy all opened windows

Analytics Аргументы

Вот таблица с описанием аргументов Analytics:

Аргумент Тип По умолчанию Описание
model str None Путь к файлу модели Ultralytics YOLO.
analytics_type str line Тип графа, т.е. line, bar, area, или pie.

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

Аргумент Тип По умолчанию Описание
tracker str 'botsort.yaml' Указывает алгоритм отслеживания, например, bytetrack.yaml или botsort.yaml.
conf float 0.3 Устанавливает порог уверенности для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания.
iou float 0.5 Устанавливает порог Intersection over Union (IoU) для фильтрации перекрывающихся обнаружений.
classes list None Фильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы.
verbose bool True Управляет отображением результатов отслеживания, обеспечивая визуальный вывод отслеживаемых объектов.
device str None Указывает устройство для инференса (например, cpu, cuda:0 или 0). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели.

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

Аргумент Тип По умолчанию Описание
show bool False Если True, отображает аннотированные изображения или видео в окне. Полезно для немедленной визуальной обратной связи во время разработки или тестирования.
line_width None or int None Указывает ширину линии ограничивающих рамок. Если None, ширина линии автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для большей четкости.

Заключение

Понимание того, когда и как использовать различные типы визуализаций, имеет решающее значение для эффективного анализа данных. Линейные графики, столбчатые диаграммы и круговые диаграммы являются основными инструментами, которые могут помочь вам более четко и эффективно передать историю ваших данных. Решение Ultralytics YOLO11 Analytics предоставляет оптимизированный способ создания этих визуализаций на основе ваших результатов обнаружения объектов и отслеживания, что упрощает извлечение значимой информации из ваших визуальных данных.

Часто задаваемые вопросы

Как создать линейный график с использованием Ultralytics YOLO11 Analytics?

Чтобы создать линейный график с помощью Ultralytics YOLO11 Analytics, выполните следующие действия:

  1. Загрузите модель YOLO11 и откройте свой видеофайл.
  2. Инициализировать Analytics класс с типом, установленным в "line".
  3. Выполните итерацию по кадрам видео, обновляя линейный график соответствующими данными, такими как количество объектов на кадр.
  4. Сохранить выходное видео, отображающее линейный график.

Пример:

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))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Для получения более подробной информации о настройке Analytics класс, посетите Аналитика с использованием Ultralytics YOLO11 раздел.

Каковы преимущества использования Ultralytics YOLO11 для создания столбчатых диаграмм?

Использование Ultralytics YOLO11 для создания столбчатых диаграмм предлагает несколько преимуществ:

  1. Визуализация данных в реальном времени: Легко интегрируйте результаты обнаружения объектов в столбчатые диаграммы для динамического обновления.
  2. Простота использования: Простой API и функции упрощают реализацию и визуализацию данных.
  3. Настройка: Настраивайте заголовки, метки, цвета и многое другое в соответствии с вашими конкретными требованиями.
  4. Эффективность: Эффективная обработка больших объемов данных и обновление графиков в реальном времени во время обработки видео.

Используйте следующий пример для создания столбчатой диаграммы:

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))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="bar",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Для получения дополнительной информации посетите раздел Гистограмма в руководстве.

Почему мне следует использовать Ultralytics YOLO11 для создания круговых диаграмм в моих проектах по визуализации данных?

Ultralytics YOLO11 – отличный выбор для создания круговых диаграмм, поскольку:

  1. Интеграция с обнаружением объектов: Непосредственно интегрируйте результаты обнаружения объектов в круговые диаграммы для получения немедленных результатов.
  2. Удобный API: Простая настройка и использование с минимальным количеством кода.
  3. Настраиваемый: Различные параметры настройки для цветов, меток и многого другого.
  4. Обновления в реальном времени: Обрабатывайте и визуализируйте данные в реальном времени, что идеально подходит для проектов видеоаналитики.

Вот краткий пример:

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))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="pie",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Для получения дополнительной информации обратитесь к разделу Круговая диаграмма в руководстве.

Можно ли использовать Ultralytics YOLO11 для отслеживания объектов и динамического обновления визуализаций?

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

Пример отслеживания и обновления линейного графика:

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))

out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720),  # this is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count)  # update analytics graph every frame
        out.write(results.plot_im)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Чтобы узнать о полной функциональности, см. раздел Tracking.

Чем Ultralytics YOLO11 отличается от других решений для обнаружения объектов, таких как OpenCV и TensorFlow?

Ultralytics YOLO11 выделяется среди других решений для обнаружения объектов, таких как OpenCV и TensorFlow, по нескольким причинам:

  1. Современная точность: YOLO11 обеспечивает превосходную точность в задачах обнаружения объектов, сегментации и классификации.
  2. Простота использования: Удобный API позволяет быстро выполнять реализацию и интеграцию без обширного кодирования.
  3. Производительность в реальном времени: Оптимизирована для высокоскоростной обработки, подходит для приложений реального времени.
  4. Разнообразные приложения: Поддерживает различные задачи, включая отслеживание нескольких объектов, обучение пользовательских моделей и экспорт в различные форматы, такие как ONNX, TensorRT и CoreML.
  5. Подробная документация: Обширная документация и ресурсы блогов, которые помогут пользователям на каждом этапе.

Для получения более подробных сравнений и вариантов использования изучите наш блог Ultralytics.



📅 Создано 1 год назад ✏️ Обновлено 4 месяца назад

Комментарии