Улучшение приложений компьютерного зрения с помощью визуализаций

12 мая 2025 г.
Узнайте, как с помощью пакета Ultralytics Python превратить данные из приложений компьютерного зрения в удобные для восприятия графики.

12 мая 2025 г.
Узнайте, как с помощью пакета Ultralytics Python превратить данные из приложений компьютерного зрения в удобные для восприятия графики.
Каждую минуту создаются огромные объемы данных, от аэропортов и вокзалов до торговых центров. По мере того, как ИИ становится все более широко используемым, большая часть этих данных теперь анализируется и разбивается на части. Но иногда результаты, полученные от этих моделей ИИ, могут затруднить выявление закономерностей или понимание тенденций с первого взгляда. Именно здесь помогает визуализация данных — она превращает сложные выходные данные в четкие и легко усваиваемые аналитические выводы.
Это особенно актуально, когда речь идет о приложениях для компьютерного зрения. Компьютерное зрение - это направление искусственного интеллекта (ИИ), которое помогает машинам интерпретировать и понимать визуальную информацию из окружающего мира, такую как изображения и видео. В то время как модели искусственного интеллекта, основанные на зрении, такие как Ultralytics YOLO11помогают анализировать визуальные данные для получения информации, а визуализация данных помогает представить эту информацию в удобном для восприятия формате.
Проще говоря, визуализация данных устраняет разрыв между необработанными данными и реальным пониманием, используя значимые аналитические графики. В современном мире, основанном на данных, это является ключевым моментом, потому что машинам недостаточно просто выполнять задачи — нам нужно, чтобы они рассказывали историю.
Именно поэтому визуализация данных становится все более востребованной. К 2030 году объем этого рынка достигнет 18,36 миллиарда долларов. Ранее мы уже рассказывали о том, как компьютерное зрение позволяет получать ценные сведения о бизнесе. Сегодня мы сделаем еще один шаг вперед и расскажем, как с помощью пакета Ultralytics создавать четкие и понятные аналитические графики для приложений компьютерного зрения. Давайте приступим!

Визуализация данных в приложениях компьютерного зрения включает преобразование результатов задач компьютерного зрения, таких как обнаружение и отслеживание объектов, в простые для понимания диаграммы или панели мониторинга. Эти визуальные элементы помогают выявлять закономерности и тенденции, особенно при работе с большими объемами видеоматериалов.
Например, вместо ручного просмотра часов видеозаписей с камер наблюдения, простой линейный график, показывающий количество автомобилей или людей, обнаруженных с течением времени, может быстро выделить часы пик или необычно тихие периоды.
Вот несколько основных причин, почему визуализация данных полезна:
Различные типы аналитических графиков могут превратить результаты компьютерного зрения в четкие и простые для понимания визуальные элементы. Предположим, вы работаете над приложением компьютерного зрения, которое обнаруживает людей и транспортные средства на видеозаписях с камер наблюдения. В этом случае линейный график отлично подходит для отображения того, как количество обнаружений изменяется с течением времени, например, для отслеживания пиков пешеходного трафика в течение дня.
Аналогично, столбчатые диаграммы полезны, когда вы хотите сравнить количество обнаруженных различных типов объектов, например, чтобы увидеть, появляется ли на видео больше автомобилей, велосипедов или пешеходов. Круговые диаграммы, с другой стороны, показывают, какой процент от общего числа обнаружений составляет каждый тип объекта. Каждый график имеет свое собственное применение и помогает сделать сложные данные компьютерного зрения более легкими для интерпретации и обмена.

Теперь, когда мы выяснили, что такое визуализация данных и почему разные типы аналитических графиков имеют значение, давайте подробнее рассмотрим, как использовать решениеUltralytics Analytics для визуализации результатов предсказаний модели компьютерного зрения. Прежде чем мы пройдем пошаговый процесс, давайте рассмотрим инструменты и варианты настройки для обучения и использования пакета Ultralytics и таких моделей, как YOLO11.
Пакет Ultralytics Python позволяет легко обучать модели, detect объекты, выполнять прогнозы и визуализировать результаты. Чтобы начать работу с ним, вам понадобится среда кодирования. Вот три простых варианта:
Эти инструменты отлично подходят для быстрого начала работы, но пользователи также могут интегрировать Ultralytics в интегрированные среды разработки (IDE), такие как Visual Studio Code (VS Code), или в производственные конвейеры. Для получения дополнительной информации изучите официальную документациюUltralytics .
После того, как вы выбрали предпочтительную среду, следующим шагом будет ее настройка для выполнения прогнозов и визуализации результатов. Вы можете использовать любую из упомянутых выше сред, в зависимости от того, с чем вам удобнее всего работать.
Если вы работаете в Google Colab, имейте в виду, что по умолчанию он использует CPU , что может снижать производительность. Чтобы ускорить работу, переключитесь на GPU , зайдя в меню "Время выполнения", выбрав "Изменить тип времени выполнения" и установив в качестве аппаратного ускорителя GPU (в идеале T4).
Чтобы подготовить среду, вам нужно установить пакетUltralytics Python с помощью команды, указанной ниже. В инструментах на базе блокнотов, таких как Colab или Jupyter, не забудьте добавить восклицательный знак (!) перед командой.
pip install ultralyticsДалее нам понадобится видео для работы. Вы можете легко загрузить его с бесплатного стокового сайта, например Pexels. Обязательно выберите видео, в котором есть объекты, которые YOLO11 может detect. Поскольку модель была предварительно обучена на наборе данных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, свяжитесь с нашим сообществом и ознакомьтесь с нашими вариантами лицензирования, чтобы дать старт своему проекту в области компьютерного зрения. Узнайте больше об инновациях, таких как ИИ в производстве и компьютерное зрение в логистике, на страницах наших решений.