Повышение эффективности кодирования видеоданных в системах видеоконференцсвязи при помощи моделирования лица человека на основе речевого сигнала
Выпускная квалификационная работа, Университет ИТМО, 2022 год.
Целью работы было спроектировать и обучить нейронную сеть, позволяющую по голосу человеку и заданному кадру, содержащему лицо человека, моделировать движение губ и использовать это для повышения эффективности кодирования (сжатия) видеоданных в системах видеокоцференцсвязи (например, Zoom).
В результате работы была спроектирована, обучена и протестирована нейронная сеть для генерации видеоданных. Проведенные в работе тесты показали, что данная нейронная сеть позволяет повысить эффективность сжадить видеоданных на 3-4% (в масштабах Zoom, это позволит уменьшить объем передаваемых данных на сотни терабайтов в сутки и уменьшить расходы компании на миллионы долларов).
-
В Главе 1 данной работы была изучена тема генерации речевого сигнала по видеозаписи, которая является смежной с темой моделирования лица человека на основе речевого сигнала. Также был проведен обзор современных методов машинного обучения для решения задачи генерации объекта и технологий для сжатия видео.
-
В Главе 2 была предложена и реализована на практике архитектура нейронной сети для генерации видеокадров по речевому сигналу. Во второй главе была описана реализованная архитектура, процесс предварительной подготовки данных и процесс обучения нейросети. Также были описаны реализованные алгоритмы, направленные на улучшение качества генерируемого изображения и повышение эффективности обучения, такие как:
- нормализация по каналам
- аугментация данных
- использование взвешенной функции потерь.
- В Главе 3 был предложен и реализован способ применения нейронной сети и MultiView расширения видеокодека HEVC для повышения эффективности кодирования. Тестирование показало существование зависимости между аудио и видео каналами в системах видеоконференцсвязи и, что данная нейронная сеть может быть успешно применена для повышения эффективности кодирования видеоданных.
- Скачать dlib shape_predictor (для 5-ти точек) и указать на него путь в main.py
- Указать путь до папки с видеофайлами в формате .yuv и до аудиофайла
- Запустить
На выходе будет получена папка с видеозаписями, на которых будет изображено смоделированное лицо.
Примечание: этот код предзначался для оценки оффективности кодирования при использовании различных параметров квантования одной видеозаписи, поэтому на вход подается несколько разных видеофайлов (которые на самом деле были получены из одного исходного видео) и один аудиофайл (соответсвующий исходной видеозаписи). Для тестирования можно просто положить в папку один yuv файл и соответсвующую ему аудиозапись.
В папке расположен весь код,
необходимый для предварительной обработки
датасета The Grid. Пример полученного датасета см. в /dataset_small
В папке расположен весь код, необходимый для обучения нейросети (код перекопирован из Colab, лучше это делать там).
В папке расположен исходный код генератора, посволяющий по видеокадрам и аудиоданным смоделировать кадры и собрать и в видеозапись
Генератор принимает путь до видеофайла, аудиофайла и частоту ключевых кадров (например каждый 8) и генерирует новое видео, используя ключевые кадры как опорные.
В папке расположен весь код (на языке matlab), позволяющий оценить повышение эффективности кодирования видеоданных.