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

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

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

Аргумент Тип По умолчанию Описание
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 Устанавливает порог пересечения над объединением (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 класс с типом "линия".
  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()

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

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

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

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

Более подробные сравнения и примеры использования можно найти в нашем блогеUltralytics .

📅 Создано 10 месяцев назад ✏️ Обновлено 5 дней назад

Комментарии