Узнай, как с помощью пакета 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 , зайдя в меню "Runtime", выбрав "Change runtime type" и установив в качестве аппаратного ускорителя 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, общайся с нашим сообществом и ознакомься с нашими вариантами лицензирования, чтобы начать свой проект по компьютерному зрению. Узнай больше о таких инновациях, как ИИ в производстве и компьютерное зрение в логистике, на страницах наших решений.
Начни свое путешествие с будущим машинного обучения