Аналитика с использованием 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 | Устанавливает порог пересечения над объединением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, выполните следующие действия:
- Загрузите модель YOLO11 и откройте свой видеофайл.
- Инициализировать
Analyticsкласс с типом, установленным в "line". - Выполните итерацию по кадрам видео, обновляя линейный график соответствующими данными, такими как количество объектов на кадр.
- Сохранить выходное видео, отображающее линейный график.
Пример:
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 для создания столбчатых диаграмм предлагает несколько преимуществ:
- Визуализация данных в реальном времени: Легко интегрируйте результаты обнаружения объектов в столбчатые диаграммы для динамического обновления.
- Простота использования: Простой API и функции упрощают реализацию и визуализацию данных.
- Настройка: Настраивайте заголовки, метки, цвета и многое другое в соответствии с вашими конкретными требованиями.
- Эффективность: Эффективная обработка больших объемов данных и обновление графиков в реальном времени во время обработки видео.
Используйте следующий пример для создания столбчатой диаграммы:
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 – отличный выбор для создания круговых диаграмм, поскольку:
- Интеграция с обнаружением объектов: Непосредственно интегрируйте результаты обнаружения объектов в круговые диаграммы для получения немедленных результатов.
- Удобный API: Простая настройка и использование с минимальным количеством кода.
- Настраиваемый: Различные параметры настройки для цветов, меток и многого другого.
- Обновления в реальном времени: Обрабатывайте и визуализируйте данные в реальном времени, что идеально подходит для проектов видеоаналитики.
Вот краткий пример:
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 , по нескольким причинам:
- Современная точность: YOLO11 обеспечивает превосходную точность в задачах обнаружения объектов, сегментации и классификации.
- Простота использования: Удобный API позволяет быстро выполнять реализацию и интеграцию без обширного кодирования.
- Производительность в реальном времени: Оптимизирована для высокоскоростной обработки, подходит для приложений реального времени.
- Разнообразные приложения: Поддерживает различные задачи, включая отслеживание нескольких объектов, обучение пользовательских моделей и экспорт в различные форматы, такие как ONNX, TensorRT и CoreML.
- Подробная документация: Обширная документация и ресурсы блогов, которые помогут пользователям на каждом этапе.
Для получения более подробных сравнений и вариантов использования изучите наш блог Ultralytics.


