Применение ИИ в сфере видео — заградительный огонь пронизывает людей

задняя часть Архитектура
Применение ИИ в сфере видео — заградительный огонь пронизывает людей

Сегодня Station B стал крупнейшим веб-сайтом видеозаграждения в Китае, а другие видеоплатформы, комиксы, чтение и другие платформы контента также добавили функции заграждения. Экран-пуля стал важным средством взаимодействия с контентом, поэтому очень важно разработать набор компонентов экрана-пули с гибким доступом и богатым игровым процессом.

Полный текст составляет 3979 слов, расчетное время чтения — 9 минут.

введение:

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

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

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

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

Первый опыт окончательного рендеринга реализации:

图片


1. Структурная схема экрана пули

图片

  • Модуль управления данными заграждения: Его основная функция — предоставлять данные для модуля рендеринга заграждений. Сначала он просматривает модуль кеша пули чата, чтобы увидеть, есть ли данные пули чата на данный момент времени.Если данные есть, они будут напрямую переданы в модуль рендеринга пули чата; если данных нет, сеть запрос данных пули чата будет инициирован для получения данных пули чата, а затем предоставить их модулю рендеринга экрана пули. Поскольку экран маркеров предъявляет высокие требования к своевременности, этот модуль разрабатывает стратегию предварительной выборки, чтобы гарантировать, что модуль рендеринга экрана маркеров как можно чаще попадает в модуль кэширования при получении данных, уменьшая временную задержку, вызванную сетевыми запросами.

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

  • Заградительный пробивной модуль: этот модуль использует технологию сегментации изображений AI для создания серии файлов масок, а затем обрабатывает маски для создания соответствующих масок в соответствии с методом видеообрезки видеоплеера Наконец, в соответствии с временной шкалой видео, соответствующие маски Капюшон визуализируется на виде заграждения. Конкретный план будет представлен позже.

2. Заградительный огонь пронзает людей

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

Схема архитектуры пробивного заграждения:

图片

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

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

Ниже перечислены задачи, выполняемые каждым модулем или подмодулем.

1. Алгоритмическая сторона

1) Модуль извлечения видеокадров: кадрирование видеопотока с частотой 32 кадра в секунду (настраивается). Чем выше частота кадров, тем более сглажена маска и тем более деликатное качество изображения на дисплее маски, но увеличивается время работы алгоритма распознавания лиц, а также увеличивается потеря производительности мобильного телефона, например энергопотребление памяти и т.д.

2) Модуль обучения модели: предоставление нескольких изображений персонажей, появляющихся в драмах с несколькими углами зрения, обучение модуля обучения модели созданию соответствующей библиотеки лиц, а затем взаимодействие с обученной библиотекой звезд, эти две библиотеки могут значительно повысить точность распознавания лиц;

3) Обнаружение лица: идентифицируйте лицо в каждом кадре изображения и предоставляйте данные о контуре лица;

4) Сходство лиц: чтобы уменьшить нагрузку на передачу данных по сети, один или несколько кадров будут отброшены для двух кадров со сходством более 95%.

2. Сервер

1) Управление метаданными извлечения видеокадра: управление данными кадра, предоставленными стороной алгоритма, упаковка большого количества метаданных видео в соответствии с измерением видео и измерением периода времени в видео, а также создание индекса отображения, который может быть предоставлен для SDK за определенный период времени Группа метаданных для видео

2) Объединение: сторона алгоритма выдает метаданные каждого кадра, но клиент обеспокоен процессом изменения лица, и сервер объединит метаданные для реорганизации данных группы лиц;

3) Служба чата Bullet: предоставление основных данных чата Bullet.

3. Клиентский SDK

1) Модуль рендеринга: Модуль рендеринга имеет две схемы:

▌Один из них — рисовать в режиме setXfermode напрямую через режим наложения Canvas. Этот режим будет выборочно накладывать два слоя на холст, так что на слое части аватара мы решили рисовать только слой маски вместо слоя экрана пули для достижения эффекта маски;

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

2) Кэш данных лица: кэшировать индексную таблицу всего видео, находить конкретный пакет масок в соответствии с индексной таблицей и выбирать соответствующую маску в пакете масок в соответствии с текущим ходом воспроизведения;

3) API базового управления барьером и API конфигурации.

3. Развертывание службы

**1: Среда: **Зависимости от среды: FFmpeg, Python2.7, OpenCV, numpy

  • Служба распознавания лиц 2qps

  • Сервис портретной сегментации 10qps

2: Структура хранения данных в автономном режиме

Каталог хранения файлов и суффикс файла во время автономной обработки:
Имя каталога: {vid}_{media_id} создает соответствующую папку в соответствии с видео и media_id, включая следующие подфайлы:

  1. рамка (файл чертежа рамки .jpg)

  2. humaneg (информация об изображении base64 .json после портретной сегментации)

  3. контур_png (контурная карта .png, сгенерированная во время обработки изображения)

  4. контур_svg (изображения в формате svg .svg)

  5. zip (окончательный файл пакета .zip)

  6. сопоставление (индексный файл .json)

  7. лог (журнал скрипта)

3: Скрипт рисования кадра:

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

图片


4. Проблемы со встроенной моделью лица SDK

Фабрика также опробовала решение с использованием встроенной модели лица на терминале. Столкнулся со следующими проблемами:

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

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


5. Сложные вопросы

1: файл маски слишком большой

Если отрисовать 2-минутное видео с частотой 32 кадра в секунду и сегментировать изображение, то получится 3840 файлов маски.В настоящее время файл маски, полученный от оператора сегментации изображения, представляет собой бинарное изображение (формат PNG), которое составляет примерно Более 100 КБ, а затем 2-минутное видео генерирует в общей сложности 375 М файлов масок. Согласно таким спецификациям, файл маски экрана пули может быть больше, чем само видео, занимая большую полосу пропускания, поэтому его нельзя реализовывать. Кроме того, поскольку файл маски экрана пули слишком велик, загрузка занимает много времени, что неизбежно приведет к тому, что видео будет воспроизводиться в течение длительного времени, но маска экрана пули все еще загружается, и взаимодействие с пользователем будет очень плохо.

В ответ на эту проблему мы в основном начинаем с двух аспектов: во-первых, конвертируем двоичное изображение в файл svg, потому что файл svg представляет собой чистый XML и очень сжимаем. Вам нужно только записать контур фигуры человека в бинарном изображении в файл svg (то есть набор точек). Кроме того, вы можете гибко настроить детализацию записи контура гуманоида, чтобы дополнительно настроить размер файла svg. В итоге мы сжимаем размер бинарного изображения с более чем 100 Кб до нескольких сотен байт. Во-вторых, набор файлов масок сжимается и хранится в виде сегментов, что позволяет добиться эффекта смены загрузки во время воспроизведения. Более того, после завершения первой загрузки ее можно отрендерить для улучшения взаимодействия с пользователем; кроме того, там, где транслируется видео и где загружается файл маски экрана пули, это также экономит пропускную способность.

Формат SVG-архива:

правила именования zip-файлов:

{vid}_{интервал} _{index}.zip

Пример: 4752528107223374247_10_0.zip

правила именования файлов svg:

{индекс}.svg Пример: 0000001.svg

▎** Структура индексного файла: **index.json

图片

2: потребление памяти мобильного телефона слишком велико

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

Поскольку размер каждого файла маски составляет около 100–200 КБ, наша маска будет генерировать 32 кадра в минуту, что все равно будет огромным даже после слияния. Рассчитайте использование памяти за 1 минуту следующим образом:

Memory Total = 32 * 100kb = 3.125MB

На стороне ios все в порядке. На стороне Android использование 3 МБ памяти в минуту приведет к снижению производительности, даже если выполняется перезапуск памяти. Обычная переработка памяти потребляет много производительности, что приводит к очевидным зависаниям приложения.

Решения:

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

6. Перспективы будущего

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

Рекомендуемое чтение:

проверка подписи iOS эти вещи

Изучение интеллектуальных решений доставки для системы рекомендаций по информационным потокам

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

---------- END ----------

Байду Гик говорит

Официальный технический общедоступный аккаунт Baidu доступен онлайн!

Технические галантереи · Отраслевая информация · Интернет-салон · Отраслевая конференция

Информация о найме · Внутренняя информация · Технические книги · Периферийные устройства Baidu

Приглашаем студентов обратить внимание