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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Шаг 1: Настройка окружения

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

Если ты работаешь в Google Colab, имей в виду, что по умолчанию она использует CPU , что может замедлить производительность. Чтобы ускорить работу, переключись на GPU , зайдя в меню "Runtime", выбрав "Change runtime type" и установив в качестве аппаратного ускорителя 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 , визуализированные в виде графика площадей.

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

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

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

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

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

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

Логотип LinkedInЛоготип ТвиттераЛоготип FacebookСимвол копирования-ссылки

Читайте больше в этой категории

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

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