Аналитика с помощью Ultralytics YOLO26

Введение

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



Watch: How to generate Analytical Graphs using Ultralytics | Line Graphs, Bar Plots, Area and Pie Charts

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

Линейный графикГистограммаКруговая диаграмма
Линейный график аналитики YOLO для отслеживания объектовГистограмма аналитики YOLO для подсчета обнаруженийКруговая диаграмма аналитики YOLO для распределения классов

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

  • Линейные графики идеально подходят для отслеживания изменений на коротких и длительных промежутках времени, а также для сравнения изменений в нескольких группах за один и тот же период.
  • Гистограммы, напротив, подходят для сравнения количественных показателей по различным категориям и демонстрации взаимосвязи между категорией и ее числовым значением.
  • Наконец, круговые диаграммы эффективны для иллюстрации пропорций между категориями и отображения частей целого.
Аналитика с помощью 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

Аргументы Analytics

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

АргументТипПо умолчаниюОписание
modelstrNoneПуть к файлу модели Ultralytics YOLO.
analytics_typestr'line'Тип графика, например, line (линейный), bar (столбчатый), area (диаграмма с областями) или pie (круговой).

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

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

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

АргументТипПо умолчаниюОписание
showboolFalseЕсли True, отображает аннотированные изображения или видео в окне. Полезно для мгновенной визуальной проверки в процессе разработки или тестирования.
line_widthint or NoneNoneЗадает толщину линий ограничивающих рамок. Если None, толщина подбирается автоматически в зависимости от размера изображения. Обеспечивает визуальную настройку для ясности.

Заключение

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

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

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

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

  1. Загрузи модель YOLO26 и открой видеофайл.
  2. Инициализируй класс Analytics с параметром type, установленным на "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 YOLO26.

В чем преимущества использования Ultralytics YOLO26 для создания гистограмм?

Использование Ultralytics YOLO26 для создания гистограмм дает несколько преимуществ:

  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 YOLO26 для создания круговых диаграмм в проектах по визуализации данных?

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

  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 YOLO26 для отслеживания объектов и динамического обновления визуализаций?

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

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

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

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

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

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

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

Для более подробного сравнения и ознакомления с примерами использования изучи наш Блог Ultralytics.

Комментарии