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