Расширение возможностей приложений компьютерного зрения с помощью визуализации
Узнай, как с помощью пакета Ultralytics для Python преобразовывать данные приложений компьютерного зрения в понятные графики и получать более ценные выводы.
Nuvola Ladi9 мин. чтения
Каждую минуту создаются огромные объёмы данных — от аэропортов и железнодорожных вокзалов до торговых центров. По мере распространения ИИ всё больше этих данных анализируют и систематизируют. Но иногда результаты работы моделей ИИ затрудняют поиск закономерностей и быстрое понимание тенденций. Здесь помогает визуализация данных: она превращает сложные результаты в понятные выводы, которые легко воспринимать.
Это особенно актуально для приложений компьютерного зрения. Компьютерное зрение — это область искусственного интеллекта (AI), которая помогает машинам интерпретировать и понимать визуальную информацию из окружающего мира, например изображения и видео. Модели компьютерного зрения, такие как Ultralytics YOLO11, помогают анализировать эти визуальные данные и извлекать из них информацию, а визуализация данных позволяет представить эту информацию в понятном формате.
Проще говоря, визуализация данных с помощью информативных аналитических графиков помогает перейти от исходных данных к их осмысленному пониманию. Это важно, потому что машинам недостаточно просто выполнять задачи — они должны ещё и рассказывать историю.
Именно поэтому визуализация данных становится всё популярнее: к 2030 году объём рынка, по прогнозам, достигнет 18,36 миллиарда долларов. Ранее мы рассказывали, как компьютерное зрение помогает получать ценные аналитические выводы для бизнеса. Сегодня пойдём дальше и покажем, как с помощью пакета Ultralytics создавать понятные и информативные аналитические графики для приложений компьютерного зрения.

Рис. 1. Пример визуализации данных на основе результатов YOLO11.
Обзор визуализации данных в приложениях компьютерного зрения#
Визуализация данных в приложениях компьютерного зрения предполагает преобразование результатов задач компьютерного зрения, таких как обнаружение и отслеживание объектов, в понятные диаграммы или дашборды. Эти наглядные материалы помогают выявлять закономерности и тенденции, особенно при работе с большими объемами видеозаписей.
Например, вместо того чтобы вручную просматривать часы записей с камер наблюдения, можно построить простой линейный график, показывающий количество обнаруженных автомобилей или людей с течением времени. Он быстро выявит часы пик или необычно тихие периоды.
Вот несколько основных причин, по которым полезно визуализировать данные:
- Упрощает сложные данные: Тысячи обнаруженных объектов могут сбивать с толку, но такие способы визуализации, как столбчатые или круговые диаграммы, помогают увидеть общую картину, например понять, какие объекты встречаются чаще всего.
- Выявляет тенденции: Линейные графики и столбчатые диаграммы помогают находить закономерности во времени, например определять, когда и где обычно увеличивается пешеходный трафик.
- Экономит время: Вместо просмотра каждого кадра видео можно быстро выявить важные детали с помощью графиков, например резкие всплески активности транспорта или появление необычных объектов в закрытых зонах.
- Упрощает коммуникацию: Наглядные материалы облегчают обмен выводами с нетехнической аудиторией и помогают всем лучше понять результаты.
Разные виды визуализации данных#
Разные типы аналитических графиков помогают наглядно и понятно представить результаты компьютерного зрения. Допустим, ты работаешь над приложением компьютерного зрения, которое обнаруживает людей и транспорт на записях с камер наблюдения. В этом случае линейный график отлично подойдет, чтобы показать, как меняется количество обнаружений со временем, например отследить всплески пешеходного трафика в течение дня.
Столбчатые диаграммы полезны, когда нужно сравнить количество обнаруженных объектов разных типов, например понять, каких объектов на видео больше — автомобилей, велосипедов или пешеходов. Круговые диаграммы показывают, какую долю от общего числа обнаружений составляет каждый тип объектов. У каждого графика свое назначение; все они помогают упростить интерпретацию сложных данных компьютерного зрения и обмен результатами.

Рис. 2. Примеры аналитических графиков.
Создание аналитических графиков для извлечения полезных выводов из данных компьютерного зрения#
Теперь, когда мы разобрались, что такое визуализация данных и почему важны разные типы аналитических графиков, давай рассмотрим, как использовать решение Ultralytics Analytics для визуализации результатов предсказаний твоей модели компьютерного зрения. Прежде чем перейти к пошаговой инструкции, рассмотрим инструменты и варианты настройки для обучения и использования пакета Ultralytics и таких моделей, как YOLO11.
Пакет Ultralytics для Python упрощает обучение моделей, обнаружение объектов, запуск предсказаний и визуализацию результатов. Для начала работы понадобится среда программирования. Вот три простых варианта:
- Интерфейс командной строки (CLI): это простой текстовый инструмент, в котором можно вводить команды для запуска кода. У него нет графического интерфейса: взаимодействие происходит через инструкции, введённые в терминале или командной строке.
- Jupyter Notebooks: это интерактивная среда программирования, в которой можно писать, запускать и проверять небольшие фрагменты кода (так называемые «ячейки») по одному. Результат отображается прямо под каждой ячейкой, поэтому легко понять, что происходит на каждом шаге. Такая среда особенно полезна для обучения и экспериментов.
- Google Colab: это бесплатная облачная версия Jupyter Notebooks, работающая в браузере. Её не нужно настраивать на компьютере, а для ускорения обработки можно бесплатно использовать GPU.
Эти инструменты отлично подходят для быстрого старта, но Ultralytics можно также интегрировать в интегрированные среды разработки (IDE), например Visual Studio Code (VS Code), или в производственные конвейеры. Другие варианты смотри в официальной документации Ultralytics.
Шаг 1. Настройка среды#
Выбрав подходящую среду, настрой ее для запуска предсказаний и визуализации результатов. Можно использовать любую из перечисленных выше сред — ту, с которой тебе удобнее работать.
Если ты работаешь в Google Colab, помни, что по умолчанию он использует CPU, из-за чего работа может замедлиться. Чтобы ускорить обработку, переключись на GPU: открой меню «Среда выполнения», выбери «Сменить тип среды выполнения» и установи в качестве аппаратного ускорителя GPU (лучше T4).
Чтобы подготовить среду, установи пакет Ultralytics для Python с помощью команды ниже. В инструментах на основе блокнотов, таких как Colab или Jupyter, не забудь поставить перед командой восклицательный знак (!).
pip install ultralyticsШаг 2. Скачивание видеофайла#
Далее понадобится видео для работы. Его можно легко скачать с бесплатного сайта со стоковыми материалами, например Pexels. Выбери видео с объектами, которые может обнаруживать Ultralytics YOLO11. Поскольку модель предварительно обучена на наборе данных COCO, она распознает распространенные объекты, например людей, автомобили и велосипеды.
В этом руководстве мы используем видео с обработкой багажа в оживленном терминале аэропорта. Ты можешь взять то же видео или выбрать другое, подходящее для твоего проекта.

Рис. 3. Кадр из входного видео, на котором обрабатывают багаж в терминале аэропорта.
Шаг 3. Импорт библиотек#
Далее импортируем необходимые библиотеки и загрузим входное видео.
Начнем с импорта OpenCV (cv2) — широко используемой библиотеки для работы с изображениями и видео в задачах компьютерного зрения. Также импортируем библиотеку Ultralytics, которая помогает запускать обнаружение объектов и создавать аналитику по видео.
Затем попробуем открыть видеофайл, указав его путь. Не забудь заменить "path/to/video.mp4" фактическим расположением скачанного видеофайла.
В приведенном ниже фрагменте кода также есть простая проверка, которая убеждается, что видео загружено правильно. Если путь указан неверно или файл поврежден, программа остановится и выведет сообщение об ошибке: "Error reading video file."
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"Шаг 4. Подготовка видеозаписи#
Затем настроим запись видео, чтобы сохранить результат. При запуске аналитики эта часть кода создаст новый видеофайл с обновленными графиками, сформированными для каждого кадра исходного видео.
В приведенном ниже фрагменте кода сначала извлекаются основные характеристики входного видео: ширина, высота и частота кадров (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),
)Шаг 5. Настройка решения Ultralytics Analytics#
Теперь настроим решение Ultralytics Analytics для построения графиков по видео. Можно выбрать способ отображения данных — линейный, круговой, с областями или столбчатый график, — а также модель YOLO. В этом примере мы используем компактную модель YOLO11n («yolo11n.pt») и представим результаты в виде графика с областями.
analytics = solutions.Analytics(
show=True,
analytics_type="area",
model="yolo11n.pt",
)Шаг 6. Обработка входного видео#
На заключительном этапе код запускает цикл, обрабатывающий видео по одному кадру за раз. Каждый кадр передается инструменту аналитики, который обновляет график в реальном времени. Затем обновленный график записывается в выходное видео. Если кадр не удается прочитать, цикл останавливается. После обработки всех кадров видео сохраняется, а все открытые окна закрываются.
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()Шаг 7. Собираем все вместе#
Наконец, соберем все вместе. С помощью всего нескольких дополнительных строк кода можно создать два выходных видео: одно с результатами обнаружения объектов Ultralytics YOLO11, где объекты отмечены рамками и подписями, и второе с графиками аналитики в реальном времени.
Для этого настроим два экземпляра VideoWriter: один для сохранения видео с предсказаниями, а другой — для аналитики. Эта версия кода включает отслеживание объектов и построение графиков, поэтому ты сможешь одновременно видеть результаты обнаружения и наглядные выводы.
Ниже приведен полный код, а также примеры видео с результатами предсказаний и аналитики.
import cv2
from ultralytics import YOLO, solutions
# Загрузка модели и видео
model = YOLO('yolo11n.pt')
cap = cv2.VideoCapture('path/to/video.mp4')
assert cap.isOpened(), "Error opening video"
# Получение характеристик
w, h = int(cap.get(3)), int(cap.get(4))
fps = cap.get(5)
analytics_res = (1280, 720)
# Запись видео с предсказаниями и аналитикой
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 = solutions.Analytics(show=True, analytics_type="area", model='yolo11n.pt')
# Обработка кадров
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” — графики аналитики в реальном времени, построенные на основе результатов обнаружения.

Рис. 4. Кадр из файла “output_predictions.avi”.
Вот кадр из выходного видео с аналитикой, построенной на основе предсказаний. График с областями помогает увидеть, например, как со временем меняется количество чемоданов: всплеск примерно на кадре 268 указывает на перемещение чемоданов или активность в этой части видео.

Рис. 5. Предсказания Ultralytics YOLO11 в виде графика с областями.
Использование графиков в реальных приложениях компьютерного зрения#
Вот несколько реальных приложений компьютерного зрения, в которых визуализация данных приносит заметную пользу:
- Здравоохранение: системы компьютерного зрения могут в реальном времени отслеживать активность пациентов, перемещения персонала и использование оборудования. В результате накапливается много визуальных данных, анализ которых помогает выявлять закономерности — например, периоды максимальной загруженности палат или задержки с оказанием помощи.
- Розничная торговля и электронная коммерция: ИИ на основе компьютерного зрения можно использовать для отслеживания перемещения покупателей, времени, которое они проводят у полок, и взаимодействия с товарами. Наглядная аналитика, например столбчатые или круговые диаграммы, показывает, какие зоны магазина или товары привлекают больше всего внимания, и помогает ритейлерам оптимизировать выкладку и повышать конверсию.
- Производство: Камеры с моделями компьютерного зрения могут следить за сборочными линиями, выявляя дефекты, нарушения техники безопасности и состояние оборудования. Визуализация данных показывает тенденции для наиболее распространенных типов дефектов и выявляет периоды с наибольшим числом ошибок, помогая быстрее принимать решения и проводить профилактическое обслуживание.
Главные выводы#
С пакетом Ultralytics ты легко превратишь видеозаписи в понятные и содержательные графики, которые покажут, что происходит, например сколько людей или объектов появляется со временем. Вместо того чтобы вручную просматривать часы видео, можно создавать наглядные сводки, выделяющие ключевые закономерности и тенденции, чтобы быстрее принимать меры. В больницах, магазинах или на производственных предприятиях такие графики превращают сложные результаты работы ИИ в выводы, понятные каждому и полезные в работе.
Хочешь узнать больше об ИИ? Изучи репозиторий на GitHub, присоединяйся к нашему сообществу и ознакомься с вариантами лицензирования, чтобы быстрее запустить проект в области компьютерного зрения. Подробнее об инновациях, таких как ИИ в производстве и компьютерное зрение в логистике, читай на страницах наших решений.
Автор
Комментарии
Задай вопрос, поделись результатами или помоги кому-нибудь.










