заглушки Применение ИИ для обработки видео в реальном времени: основы и многое другое - Unite.AI
Свяжитесь с нами:

Лидеры мысли

Применение ИИ для обработки видео в реальном времени: основы и многое другое

mm

опубликованный

 on

Максим Татарьянц, Наука данных Инженер в МобиДев.

Нет ничего нового в использовании искусственного интеллекта (ИИ) для обработки видео. Если вы посмотрите не только на обработку изображений — это один из наиболее распространенных вариантов использования ИИ. И точно так же, как обработка изображений, обработка видео использует установленные методы, такие как компьютерное зрениераспознавание объектов, машинное обучение и глубокое обучение для улучшения этого процесса. 

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

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

Основы обработки видео в реальном времени

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

Итак, как работает обработка видео? Обработка видео включает ряд шагов, которые включают декодирование, вычисление и кодирование. Вот что вам нужно знать:

  • Расшифровка: Процесс, необходимый для преобразования видео из сжатого файла обратно в необработанный формат.
  • Вычисления: Специфическая операция, выполняемая над необработанным видеокадром.
  • Encoding: Процесс преобразования обработанного кадра обратно в исходное сжатое состояние.

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

Что такое разделение видеофайлов?

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

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

Несмотря на это, разделение видеофайлов — не лучший вариант для обработки видео в реальном времени. Почему именно? Этот процесс затрудняет приостановку, возобновление и перемотка файл во время его обработки.

Что такое конвейерная архитектура?

Другой вариант — конвейерная архитектура. Этот процесс работает для разделения и параллелизации задач, выполняемых во время обработки, а не для прямого разделения видео.

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

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

Объяснение декодирования и кодирования

А декодирование и кодирование? Есть два способа выполнить эти процессы: программный и аппаратный.

Возможно, вы уже знакомы с концепцией аппаратного ускорения. Этот процесс стал возможен благодаря декодерам и кодировщикам, установленным в новейшие видеокарты NVIDIA, а также ядрам CUDA.

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

  • Скомпилируйте OpenCV с поддержкой CUDA: Компиляция OpenCV с CUDA оптимизирует как декодирование, так и любые конвейерные вычисления, использующие OpenCV. Имейте в виду — вам нужно будет написать их на C++, так как оболочка Python этого не поддерживает. Но в ситуациях, когда требуется как декодирование, так и числовые вычисления с помощью графического процессора без копирования из памяти процессора, это по-прежнему один из лучших доступных вариантов.
  • Скомпилируйте FFmpeg или GStreamer с поддержкой кодеков NVDEC/NVENC: Другой вариант — использовать встроенный декодер и кодировщик NVIDIA, включенный в пользовательские установки FFmpeg и Gstreamer. Однако мы рекомендуем использовать FFmpeg, если это возможно, так как он требует меньше обслуживания. Кроме того, большинство библиотек работают на FFmpeg, что означает, что вы автоматически повысите производительность библиотеки, заменив ее.
  • Используйте платформу обработки видео NVIDIA: Последний вариант — использовать оболочку Python для декодирования кадра непосредственно в тензор PyTorch на графическом процессоре. Эта опция удаляет дополнительное копирование с ЦП на ГП.

Распознавание лиц и размытие

Модели обнаружения объектов (SSD или RetinaFace) являются популярным вариантом для завершения обнаружения лиц. Эти решения работают, чтобы найти человеческое лицо в кадре. И на основе нашего опыт, мы предпочитаем модели отслеживания лиц Caffe и обнаружения объектов TensorFlow, поскольку они обеспечивают наилучшие результаты. Кроме того, оба доступны с использованием библиотеки OpenCV. модуль dnn.

Итак, что дальше после обнаружения лица? Далее, Python и OpenCVсистема будет показывать ограничивающие рамки и достоверность обнаружения. Наконец, алгоритм размытия применяется к обрезанным областям.

Как вы можете создать программное обеспечение для обработки видео в реальном времени на основе искусственного интеллекта?

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

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

Вот краткое описание того, что вам нужно сделать:

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

Разработка MVP для аналогичного программного обеспечения для обработки видео может занять до четырех месяцев с использованием предварительно обученной нейронной сети и простых прикладных слоев. Однако объем и сроки зависят от деталей каждого проекта. В большинстве случаев имеет смысл начать с разработки Proof of Concept, чтобы изучить специфику проекта и найти оптимальный поток.

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