Узнайте, как с помощью пакета Ultralytics Python превратить данные из приложений компьютерного зрения в удобные для восприятия графики.
.webp)
Узнайте, как с помощью пакета Ultralytics Python превратить данные из приложений компьютерного зрения в удобные для восприятия графики.
Каждую минуту создаются огромные объемы данных - от терминалов аэропортов и вокзалов до торговых центров. По мере распространения искусственного интеллекта многие из этих данных стали анализироваться и разбиваться на части. Но иногда в результатах, полученных с помощью моделей ИИ, сложно заметить закономерности или понять тенденции с первого взгляда. Именно здесь на помощь приходит визуализация данных - она превращает сложные результаты в понятные и легко усваиваемые выводы.
Это особенно актуально, когда речь идет о приложениях для компьютерного зрения. Компьютерное зрение - это направление искусственного интеллекта (ИИ), которое помогает машинам интерпретировать и понимать визуальную информацию из окружающего мира, такую как изображения и видео. Модели искусственного зрения, такие как Ultralytics YOLO11, помогают анализировать визуальные данные для получения информации, а визуализация данных помогает представить эту информацию в удобном для восприятия формате.
Проще говоря, визуализация данных позволяет преодолеть разрыв между необработанными данными и их реальным пониманием с помощью содержательных аналитических графиков. В современном мире, основанном на данных, это очень важно, потому что машинам недостаточно просто выполнять задачи - нужно, чтобы они рассказывали историю.
Именно поэтому визуализация данных становится все более востребованной. К 2030 году объем этого рынка достигнет 18,36 миллиарда долларов. Ранее мы уже рассказывали о том, как компьютерное зрение позволяет получать ценные сведения о бизнесе. Сегодня мы сделаем еще один шаг вперед и расскажем о том, как с помощью пакета Ultralytics создавать четкие и понятные аналитические графики для приложений компьютерного зрения. Давайте приступим!
Визуализация данных в приложениях компьютерного зрения предполагает преобразование результатов задач компьютерного зрения, таких как обнаружение и отслеживание объектов, в удобные для восприятия графики или приборные панели. Такие графики помогают выявить закономерности и тенденции, особенно при работе с большими объемами видеоматериалов.
Например, вместо того чтобы вручную просматривать многочасовые видеозаписи с камер наблюдения, простой линейный график, отображающий количество обнаруженных автомобилей или людей за определенное время, поможет быстро выделить пиковые часы или необычно спокойные периоды.
Вот несколько основных причин, по которым визуализация данных может быть полезной:
Различные типы аналитических графиков позволяют превратить результаты работы компьютерного зрения в четкие и понятные изображения. Допустим, вы работаете над приложением компьютерного зрения, которое обнаруживает людей и автомобили на записях камер видеонаблюдения. В этом случае линейный график отлично подходит для того, чтобы показать, как меняется количество обнаружений с течением времени, например, для отслеживания пиков пешеходного движения в течение дня.
Аналогично, столбчатые диаграммы полезны, когда нужно сравнить количество обнаруженных объектов разных типов, например, чтобы увидеть, сколько автомобилей, велосипедов или пешеходов появилось на видео. Круговые диаграммы, с другой стороны, показывают, какой процент каждого типа объектов составляет от общего числа обнаруженных. Каждый график имеет свое применение и помогает упростить интерпретацию и обмен сложными данными компьютерного зрения.
Теперь, когда мы выяснили, что такое визуализация данных и почему разные типы аналитических графиков имеют значение, давайте подробнее рассмотрим, как использовать решение Ultralytics Analytics для визуализации результатов предсказаний модели компьютерного зрения. Прежде чем мы пройдем пошаговый процесс, давайте рассмотрим инструменты и варианты настройки для обучения и использования пакета Ultralytics и таких моделей, как YOLO11.
Пакет Ultralytics Python позволяет легко обучать модели, обнаруживать объекты, выполнять прогнозы и визуализировать результаты. Чтобы начать работу с ним, вам понадобится среда кодирования. Вот три простых варианта:
Эти инструменты отлично подходят для быстрого начала работы, но пользователи также могут интегрировать Ultralytics в интегрированные среды разработки (IDE), такие как Visual Studio Code (VS Code), или в производственные конвейеры. Для получения дополнительной информации изучите официальную документацию Ultralytics.
После того как вы выбрали предпочтительную среду, следующий шаг - настройка ее для выполнения прогнозов и визуализации результатов. Вы можете использовать любую из перечисленных выше сред, в зависимости от того, с какой вам удобнее работать.
Если вы работаете в Google Colab, имейте в виду, что по умолчанию он использует CPU, что может снижать производительность. Чтобы ускорить работу, переключитесь на GPU, зайдя в меню "Время выполнения", выбрав "Изменить тип времени выполнения" и установив в качестве аппаратного ускорителя GPU (в идеале T4).
Чтобы подготовить среду, вам нужно установить пакет Ultralytics Python с помощью команды, указанной ниже. В инструментах на базе блокнотов, таких как Colab или Jupyter, не забудьте добавить восклицательный знак (!) перед командой.
pip install ultralytics
Далее нам понадобится видео для работы. Вы можете легко загрузить его с бесплатного стокового сайта, например Pexels. Обязательно выберите видео, в котором есть объекты, которые YOLO11 может обнаружить. Поскольку модель была предварительно обучена на наборе данных COCO, она может распознавать такие распространенные объекты, как люди, автомобили и велосипеды.
В этом уроке мы используем видео, на котором запечатлена обработка багажа в оживленном терминале аэропорта. Вы можете использовать то же самое видео или выбрать другое, подходящее для вашего проекта.
Далее мы можем импортировать необходимые библиотеки и загрузить входное видео.
Начнем с импорта OpenCV (cv2), которая является широко используемой библиотекой для работы с изображениями и видео в компьютерном зрении. Мы также импортируем библиотеку Ultralytics, которая помогает нам выполнять обнаружение объектов и генерировать аналитику из видео.
Затем попробуем открыть видеофайл, указав путь к нему. Не забудьте заменить "path/to/video.mp4" на реальное местоположение загруженного видеофайла.
Кроме того, в приведенном ниже фрагменте кода есть простая проверка, чтобы убедиться, что видео загружается правильно. Если путь неверен или файл поврежден, программа остановится и выдаст сообщение об ошибке: "Ошибка при чтении видеофайла".
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
Затем мы настроим видеописатель для сохранения результатов. Когда мы запустим аналитику, эта часть кода создаст новый видеофайл, в котором будут записаны обновленные графики, сгенерированные на основе каждого кадра исходного видео.
В приведенном ниже фрагменте кода мы сначала извлекаем ключевые свойства из входного видео - его ширину, высоту и количество кадров в секунду (fps). Эти значения берутся непосредственно из видео и преобразуются в целые числа, чтобы обеспечить их правильный формат для записи выходных данных.
Далее мы используем функцию cv2.VideoWriter для создания нового видеофайла с именем "analytics_output.avi" (вы можете переименовать его по своему усмотрению). Видео сохраняется с использованием формата MJPG, который является распространенным методом сжатия видео. Выходное разрешение устанавливается на 1280×720 пикселей, независимо от размера исходного видео.
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),
)
Теперь мы настроим решение Ultralytics Analytics для создания графиков на основе видео. Вы можете выбрать способ отображения данных - линейную, круговую, площадную или столбчатую диаграмму, а также модель YOLO. В этом примере мы используем облегченную модель "yolo11n.pt" и покажем результаты в виде диаграммы областей.
analytics = solutions.Analytics(
show=True,
analytics_type="area",
model="yolo11n.pt",
)
Последняя часть кода запускает цикл, который обрабатывает видео по одному кадру за раз. Каждый кадр передается в инструмент аналитики, который обновляет график в режиме реального времени. Затем обновленный график записывается на выходное видео. Если кадр не может быть прочитан, цикл останавливается. После обработки всех кадров видео сохраняется, а все открытые окна закрываются.
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
results = analytics(im0, frame_count)
out.write(results.plot_im)
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
Наконец, давайте соберем все вместе. С помощью нескольких дополнительных строк кода мы можем сгенерировать два выходных видео: одно показывает результаты обнаружения объектов YOLO11 с ограничительными рамками и метками, а другое - графики аналитики в реальном времени.
Для этого мы создадим два экземпляра VideoWriter - один для сохранения видео с предсказаниями, а другой - для аналитики. Эта версия кода включает в себя отслеживание объектов и построение графиков, так что вы сможете увидеть результаты обнаружения наряду с визуальным анализом.
Здесь представлен полный код с примерами предсказаний и аналитических результатов.
import cv2
from ultralytics import YOLO, solutions
# Load model and video
model = YOLO('yolo11n.pt')
cap = cv2.VideoCapture('path/to/video.mp4')
assert cap.isOpened(), "Error opening video"
# Get properties
w, h = int(cap.get(3)), int(cap.get(4))
fps = cap.get(5)
analytics_res = (1280, 720)
# Writers for prediction and analytics videos
out_pred = cv2.VideoWriter('output_predictions.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, (w, h))
out_ana = cv2.VideoWriter('output_analytics.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, analytics_res)
# Analytics setup
analytics = solutions.Analytics(show=True, analytics_type="area", model='yolo11n.pt')
# Process frames
frame_count = 0
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
frame_count += 1
pred_frame = model.track(frame, persist=True)[0].plot()
out_pred.write(pred_frame)
resized = cv2.resize(pred_frame, analytics_res)
out_ana.write(analytics(resized, frame_count).plot_im)
cap.release(), out_pred.release(), out_ana.release(), cv2.destroyAllWindows()
После успешного выполнения приведенного выше кода будет сгенерировано два выходных видео. В файле "output_predictions.avi" будут показаны результаты обнаружения объектов с ограничительными рамками и метками, а в "output_analytics.avi" - графики аналитики в реальном времени на основе обнаруженных объектов.
Вот кадр из аналитического вывода, основанного на прогнозах. Используя диаграмму областей, мы можем получить такие сведения, как колебания количества чемоданов с течением времени, например всплеск в районе кадра 268, что указывает на движение чемоданов или активность в этой части видео.
Вот несколько реальных приложений компьютерного зрения, в которых визуализация данных оказывает значительное влияние:
С помощью пакета Ultralytics вы можете легко превратить видеозаписи в четкие и понятные графики, которые показывают, что происходит, например, отслеживая, сколько людей или объектов появляется с течением времени. Вместо того чтобы вручную просматривать многочасовые видеозаписи, вы можете генерировать визуальные сводки, которые выделяют основные закономерности и тенденции, что облегчает принятие быстрых мер. Будь то больницы, розничные магазины или производственные предприятия, эти графики превращают сложные результаты работы ИИ в понятные и полезные любому человеку сведения.
Хотите узнать больше об искусственном интеллекте? Изучите наш репозиторий GitHub, общайтесь с нашим сообществом и ознакомьтесь с нашими вариантами лицензирования, чтобы начать свой проект по компьютерному зрению. Узнайте больше о таких инновациях, как ИИ в производстве и компьютерное зрение в логистике, на страницах наших решений.