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

Аналитика с использованием 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:

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

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

АргументТипПо умолчаниюОписание
trackerstr'botsort.yaml'Указывает алгоритм отслеживания, например, bytetrack.yaml или botsort.yaml.
conffloat0.3Устанавливает порог уверенности для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания.
ioufloat0.5Устанавливает порог пересечения над объединениемIoU) для фильтрации перекрывающихся обнаружений.
classeslistNoneФильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы.
verboseboolTrueУправляет отображением результатов отслеживания, обеспечивая визуальный вывод отслеживаемых объектов.
devicestrNoneУказывает устройство для инференса (например, cpu, cuda:0 или 0). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели.

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

АргументТипПо умолчаниюОписание
showboolFalseЕсли True, отображает аннотированные изображения или видео в окне. Полезно для немедленной визуальной обратной связи во время разработки или тестирования.
line_widthNone or intNoneУказывает ширину линии ограничивающих рамок. Если 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 для track объектов и динамического обновления визуализации?

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

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

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 год назад ✏️ Обновлено 8 месяцев назад
RizwanMunawarglenn-jocherMatthewNoycelakshanthadUltralyticsAssistantIvorZhu331

Комментарии