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