in

Создание приложений компьютерного зрения без создания медиа-проводов

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

Pipeless – это простой в использовании мультимедийный фреймворк с открытым исходным кодом, предназначенный для работы с искусственным интеллектом.

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

 

Вы можете создать приложение, которое сможет распознавать кошек в любом видео.

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

Вот репозиторий с готовыми к выполнению примерами. examples/cats каталог.

Проблема

Искусственный интеллект/ML доминирует в мире программирования в течение последних нескольких лет. Количество моделей компьютерного зрения (CV), доступных в открытом доступе, растет очень быстро.

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

Однако фактическая обработка мультимедиа по-прежнему очень сложна.

Например, все эти CV-модели используют матрицы RGB / BGR для ввода изображений.

Если вы хотите использовать их для изображений, проще преобразовать их в матрицу RGB. Для видео все быстро усложняется.

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

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

Как работает Pipeless

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

Предположим, вы создали приложение для обнаружения кошек на определенном видео.(это один из готовых к запуску примеров). Вам нужно будет:

  1. Демультипликатор видео: откройте контейнер (например, mp4), чтобы извлечь отдельные потоки (видео, аудио, субтитры и т.д.)
  2. Декодируйте каждый поток: преобразуйте закодированный поток в поток raw. В случае видеопотока mp4 это эквивалентно использованию кадров в кодировке H.264 и преобразованию их в кадры RGB.
  3. Обработайте видео: теперь вы можете предоставить изображение RGB в качестве входных данных для нашей модели компьютерного зрения, например, для получения ограничивающих рамок, а затем изменить рамку, нарисовав квадрат над мордочкой кошки.
  4. Кодирование потока: в точности противоположно этапу декодирования. Вы должны передавать кадры через кодек H.264.
  5. Мультиплексируйте новое видео: возьмите наш видеопоток в кодировке H.264, снова возьмите аудиопоток и создайте для них контейнер mp4, включая временные метки презентации для синхронизации потоков.

.Описанная выше процедура – это простейший конвейер, который можно создать для работы с локальным видео: уже существует несколько инструментов, таких как OpenCV, которые могут легко перебирать видеокадры в цикле for.

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

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

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

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

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

Она делает всю основную работу автоматически – с Pipeless все, что вам нужно сделать в приведенном выше случае, это взять RGB-изображение, пропустить его через модель, нарисовать квадрат и вуаля. Вы сэкономили недели времени!

Это точно такая же модель, как и та, что показана в демонстрационном разделе в начале статьи.

Бесканальная архитектура

Pipeless разработан для легкого развертывания в облаке, но также может быть запущен локально с помощью одной команды. В основном он состоит из трех независимых компонентов, которые обмениваются сообщениями с помощью легковесной библиотеки Nanomsg Next Generation (NNG):

  • Ввод: обеспечивает чтение / прием потоков, декодирование и демультиплирование их в отдельные кадры. Он отправляет необработанные кадры воркерам для обработки по циклическому графику.
  • Worker: заботится о выполнении пользовательских приложений (ваших приложений). Вы можете задействовать любое количество воркеров для параллельной обработки кадров, это помогает увеличить частоту кадров потока при обработке в режиме реального времени и распределить “тяжелую” нагрузку по разным компьютерам.
  • Вывод: обеспечивает получение обработанных необработанных потоков, их кодирование и мультиплексирование в формат выходного контейнера, например mp4. Это позволяет отправлять видео на внешний URI, воспроизводить его непосредственно на экране устройства или сохранять в файле.

В системе должны быть установлены Gstreamer и Python. См. подробные требования и список версий здесь.

Дорожная карта

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

Список поддерживаемых форматов ввода и вывода можно найти в разделе “Текущее состояние” в Readme. Нужно что-то новое? Создайте запрос на исправление или запросите проблему на GitHub.

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

Следите за обновлениями! Нравится ли вам Pipeless? Мы приветствуем ваши комментарии и отзывы. Пожалуйста, присылайте свои комментарии и отзывы по адресу.

Вы также можете помочь нам, создав библиотеку ресурсов и поделившись ею со своими друзьями!

What do you think?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

GIPHY App Key not set. Please check settings