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

Нувола Лади

4 мин. чтения

12 мая 2025 г.

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

Каждую минуту создаются огромные объемы данных - от терминалов аэропортов и вокзалов до торговых центров. По мере распространения искусственного интеллекта многие из этих данных стали анализироваться и разбиваться на части. Но иногда в результатах, полученных с помощью моделей ИИ, сложно заметить закономерности или понять тенденции с первого взгляда. Именно здесь на помощь приходит визуализация данных - она превращает сложные результаты в понятные и легко усваиваемые выводы.

Это особенно актуально, когда речь идет о приложениях для компьютерного зрения. Компьютерное зрение - это направление искусственного интеллекта (ИИ), которое помогает машинам интерпретировать и понимать визуальную информацию из окружающего мира, такую как изображения и видео. Модели искусственного зрения, такие как Ultralytics YOLO11, помогают анализировать визуальные данные для получения информации, а визуализация данных помогает представить эту информацию в удобном для восприятия формате.

Проще говоря, визуализация данных позволяет преодолеть разрыв между необработанными данными и их реальным пониманием с помощью содержательных аналитических графиков. В современном мире, основанном на данных, это очень важно, потому что машинам недостаточно просто выполнять задачи - нужно, чтобы они рассказывали историю.

Именно поэтому визуализация данных становится все более востребованной. К 2030 году объем этого рынка достигнет 18,36 миллиарда долларов. Ранее мы уже рассказывали о том, как компьютерное зрение позволяет получать ценные сведения о бизнесе. Сегодня мы сделаем еще один шаг вперед и расскажем о том, как с помощью пакета Ultralytics создавать четкие и понятные аналитические графики для приложений компьютерного зрения. Давайте приступим!

Рис. 1. Пример визуализации данных на основе результатов работы YOLO11.

Обзор визуализации данных в приложениях компьютерного зрения

Визуализация данных в приложениях компьютерного зрения предполагает преобразование результатов задач компьютерного зрения, таких как обнаружение и отслеживание объектов, в удобные для восприятия графики или приборные панели. Такие графики помогают выявить закономерности и тенденции, особенно при работе с большими объемами видеоматериалов. 

Например, вместо того чтобы вручную просматривать многочасовые видеозаписи с камер наблюдения, простой линейный график, отображающий количество обнаруженных автомобилей или людей за определенное время, поможет быстро выделить пиковые часы или необычно спокойные периоды.

Вот несколько основных причин, по которым визуализация данных может быть полезной:

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

Различные типы визуализации данных

Различные типы аналитических графиков позволяют превратить результаты работы компьютерного зрения в четкие и понятные изображения. Допустим, вы работаете над приложением компьютерного зрения, которое обнаруживает людей и автомобили на записях камер видеонаблюдения. В этом случае линейный график отлично подходит для того, чтобы показать, как меняется количество обнаружений с течением времени, например, для отслеживания пиков пешеходного движения в течение дня.

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

Рис. 2. Примеры аналитических графов.

Создание аналитических графиков для получения информации о компьютерном зрении

Теперь, когда мы выяснили, что такое визуализация данных и почему разные типы аналитических графиков имеют значение, давайте подробнее рассмотрим, как использовать решение Ultralytics Analytics для визуализации результатов предсказаний модели компьютерного зрения. Прежде чем мы пройдем пошаговый процесс, давайте рассмотрим инструменты и варианты настройки для обучения и использования пакета Ultralytics и таких моделей, как YOLO11. 

Пакет Ultralytics Python позволяет легко обучать модели, обнаруживать объекты, выполнять прогнозы и визуализировать результаты. Чтобы начать работу с ним, вам понадобится среда кодирования. Вот три простых варианта:

  • Интерфейс командной строки (CLI): Это базовый инструмент, работающий только с текстом, в котором можно вводить команды для выполнения кода. У него нет визуального интерфейса, и вы взаимодействуете с ним, вводя команды в терминале или командной строке.
  • Блокноты Jupyter: Это интерактивная среда кодирования, в которой вы можете писать, запускать и тестировать небольшие фрагменты кода (называемые "ячейками") по очереди. Результаты отображаются непосредственно под каждой ячейкой, что позволяет легко понять, что происходит шаг за шагом. Это особенно полезно для обучения и экспериментов.
  • Google Colab: Это бесплатная облачная версия Jupyter Notebooks, которая запускается в веб-браузере. Она не требует установки на компьютер и предоставляет доступ к бесплатным графическим процессорам для более быстрой обработки.

Эти инструменты отлично подходят для быстрого начала работы, но пользователи также могут интегрировать Ultralytics в интегрированные среды разработки (IDE), такие как Visual Studio Code (VS Code), или в производственные конвейеры. Для получения дополнительной информации изучите официальную документацию Ultralytics.

Шаг 1: Настройка среды

После того как вы выбрали предпочтительную среду, следующий шаг - настройка ее для выполнения прогнозов и визуализации результатов. Вы можете использовать любую из перечисленных выше сред, в зависимости от того, с какой вам удобнее работать.

Если вы работаете в Google Colab, имейте в виду, что по умолчанию он использует CPU, что может снижать производительность. Чтобы ускорить работу, переключитесь на GPU, зайдя в меню "Время выполнения", выбрав "Изменить тип времени выполнения" и установив в качестве аппаратного ускорителя GPU (в идеале T4).

Чтобы подготовить среду, вам нужно установить пакет Ultralytics Python с помощью команды, указанной ниже. В инструментах на базе блокнотов, таких как Colab или Jupyter, не забудьте добавить восклицательный знак (!) перед командой.

pip install ultralytics

Шаг 2: Загрузка видеофайла

Далее нам понадобится видео для работы. Вы можете легко загрузить его с бесплатного стокового сайта, например Pexels. Обязательно выберите видео, в котором есть объекты, которые YOLO11 может обнаружить. Поскольку модель была предварительно обучена на наборе данных COCO, она может распознавать такие распространенные объекты, как люди, автомобили и велосипеды. 

В этом уроке мы используем видео, на котором запечатлена обработка багажа в оживленном терминале аэропорта. Вы можете использовать то же самое видео или выбрать другое, подходящее для вашего проекта.

Рис. 3. Кадр из входного видео, демонстрирующий обработку багажа в терминале аэропорта.

Шаг 3: Импорт пакетов

Далее мы можем импортировать необходимые библиотеки и загрузить входное видео.

Начнем с импорта 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"

Шаг 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.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: Собираем все вместе

Наконец, давайте соберем все вместе. С помощью нескольких дополнительных строк кода мы можем сгенерировать два выходных видео: одно показывает результаты обнаружения объектов 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" - графики аналитики в реальном времени на основе обнаруженных объектов.

Рис. 4. Кадр из файла "output_predictions.avi".

Вот кадр из аналитического вывода, основанного на прогнозах. Используя диаграмму областей, мы можем получить такие сведения, как колебания количества чемоданов с течением времени, например всплеск в районе кадра 268, что указывает на движение чемоданов или активность в этой части видео.

Рис. 5. Предсказания YOLO11, визуализированные в виде графика площадей.

Использование графов в реальных приложениях компьютерного зрения

Вот несколько реальных приложений компьютерного зрения, в которых визуализация данных оказывает значительное влияние:

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

Основные выводы

С помощью пакета Ultralytics вы можете легко превратить видеозаписи в четкие и понятные графики, которые показывают, что происходит, например, отслеживая, сколько людей или объектов появляется с течением времени. Вместо того чтобы вручную просматривать многочасовые видеозаписи, вы можете генерировать визуальные сводки, которые выделяют основные закономерности и тенденции, что облегчает принятие быстрых мер. Будь то больницы, розничные магазины или производственные предприятия, эти графики превращают сложные результаты работы ИИ в понятные и полезные любому человеку сведения.

Хотите узнать больше об искусственном интеллекте? Изучите наш репозиторий GitHub, общайтесь с нашим сообществом и ознакомьтесь с нашими вариантами лицензирования, чтобы начать свой проект по компьютерному зрению. Узнайте больше о таких инновациях, как ИИ в производстве и компьютерное зрение в логистике, на страницах наших решений.

Давайте вместе построим будущее
искусственного интеллекта!

Начните свое путешествие в будущее машинного обучения

Начните бесплатно
Ссылка копируется в буфер обмена