Файл: Направление подготовки 09. 03. 04 Программная инженерия.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 29.10.2023

Просмотров: 749

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Рис.2.5–АрхитектураAudioEncoder В качестве рекуррентного слоя в обоих кодировщиках применяется LSTM, которая может эффективно применятся для обработки аудио- и видеоинформации [39; 40]. Возможность вос- принимать набор частей данных как единую последовательность в нашем случае (в случае VideoEncoder) реализуется при помощи переноса краткосрочной и долгосрочной памяти от одной итерации слоя к другой.

      1. Дискриминатор
Дискриминатор в качестве входных принимает отдельно мел-спектрограмму и видео в фор- мате последовательности изображений. Видеоинформация имеет вид тензора ранга 4 и про- ходит обработку двумя слоями одномерной свертки в комбинации с ReLU; мел-спектрограмма обрабатывается одним слоем одномерной свертки. Полученные матрицы конкатенируются по принципу увеличения количества столбцов, и результат обрабатывается пятью слоями дву- мерной свертки в комбинации с ReLU.Далее применяeтся слой Sigmoid (реализует логистическую функцию) - таким образом вы- ходными данными дискриминатора является число в диапазоне от нуля до единицы. Архитектурадискриминатораизображенанарисунке2.6.

      1. Генератор
Генератор в качестве входных данных принимает конкатенацию матриц, построенных ко- дировщиками.Матрицысоединяютсяпопринципуувеличенияколичествастолбцов(рис.2.7).Рис.2.6–АрхитектурадискриминатораОна проходит обработку пятью слоями одномерной свертки (ядро движется в двумерном про- странстве) в комбинации с LeakyReLU (2.7) и BatchNorm (2.8). В итоге создается матрица, опи- сывающая мел-спектрограмму. Рис.2.7–КонкатенацияматрицBatchNorm(2.8)осуществеляетнормализациюданныхвнутринейроннойсетипутемсве- денияматематическогоожиданияк

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


(2.8)
x E(x)

BatchNorm(x) = Var(x)

где E- математическое ожидание, Var - дисперсия. Архитектура генератора изображена на рисунке 2.8.



Рис. 2.8 – Архитектура генератора

    1. 1   ...   7   8   9   10   11   12   13   14   15

Выводы

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

  1. Представлена нейросетевая модель генерации звука по видео.

  2. Описана архитектура реализуемых нейросетевых моделей.
  1. Построение модуля генерации аудиоинформации на основе видеозаписи

    1. Требования к модулю генерации аудиоинформации на основе видеоза- писи

Разрабатываемый модуль должен предоставлять набор методов для обработки видеозапи- сей.Входнымиданнымидлямодуляявляетсявидеодлительностьюнеболеедесятисекунд, содержащее или не содержащее звук, в формате mp4. Выходными данными является мел- спектрограмма в виде матрицы чисел с плавающей запятой, которая может быть выведенав консоль, записана в файл или изображена в виде спектрограммы.Модуль должен иметь возможность быть запущен на операционных системах, использую- щий ядра Windows NT и UNIX. Для работы модуля предполагается наличие GPU, количество используемой модулей видеопамяти - не более 12 Гб.
    1. Выбор инструментальных средств для разработки модуля генерации аудио- информации на основе видеозаписи

Для разработки модуля генерации аудиоинформации на основе видеозаписи в качестве основного языка программирования был выбран Python, в качестве альтернатив рассматрива- лись Matlab и С++. Python обладает рядом преимуществ: высокая скорость разработки, возмож- ностьпростойинтеграциисклиент-сервернымиприложениями,большоеколичествомбиб- лиотек, позволяющих высокоуровневое выполнения математических операций. На данный момент существует два основных фреймворка для работы с нейроннными сетями - PyTorch и TensorFlow от компании Google, оба из них опираются на понятия тензоров и графов

, по которым данные тензоры ”перемещаются”. Фреймворк PyTorch является более удобным при кроссплатформенном использовании, а также является более эффективным (с точки зрения скорости проведения вычислений) и в процессе тренировки, и в процессе инференса при ис- пользовании GPU. Таким образом, для разработки данного модуля был выбран PyTorch.

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

ботки аудиоинформации была использована библиотека librosa. Для предобработки видео и визуальной информации был использован набор библиотек FFmpeg и библиотека алгоритмов компьютерного зрения OpenCV.

    1. Реализация программного модуля генерации аудиоинформации на ос- нове видеозаписи

В модуле определены два компоненты - нейросетевой и обрабатывающий. Первый из них выполняет функции генерации мел-спектрограмм. Обрабатывающий - реализует обработку входныхданныхвформат,необходимыйдлянейросетевогокомпонента.Рис.3.1–Взаимодействиекомпонентов

      1. Обрабатывающий компонент
Задача обрабатывающего компонента состоит в том, чтобы преобразовать видео в формат данныхпринимаемыйнейросетевымкомпонентоввовремяобученияилииспользования.ПрипомощинаборабиблиотекFFmpegвидео,еслиданныенужныдлятренировкинейро- сетевогокомпонента,
приводитсякдлительностидесятьсекундпутемповторенияиобрезки. Далее разделяются на аудио- и видеоинформацию, видеоинформация преобразуется путем из- менениячастотыкадров(21.5fps),частотадискретизацииаудиоинформацииконвертируется в значение 220500.#changeaudiosampleratesr_audio_dir=P.join(output_dir,f”audio_{duration_target}s_{sr}hz”) os.makedirs(sr_audio_dir,exist_ok=True)os.system(”ffmpeg−i{}−loglevelerror−ac1−ab16k−ar{}−y{}”.format( P.join(cut_audio_dir,audio_name),sr,P.join(sr_audio_dir,audio_name)))#changevideofpsfps_audio_dir=P.join(output_dir,f”videos_{duration_target}s_{fps}fps”)os.makedirs(fps_audio_dir,exist_ok=True)os.system(”ffmpeg−y−i{}−loglevelerror−r{}−c:vlibx264−strict−2{}”.format( P.join(cut_video_dir,video_name),fps,P.join(fps_audio_dir,video_name)))ПрипомощибиблиотекиOpenCVконвертированноевидеоразделяетсянакадры,таккак длительность видео и частота кадров фиксирована, то для каждого видео мы получаем одина- ковое количество кадров - 215. Каждый кадр подвергается изменению размеров и конвертиру- ется в черно-белый формат.whilevideo.isOpened(): reg,img=video.read() if notreg:breakimg=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY) img=cv2.resize(img,(width,height))cv2.imwrite(P.join(save_dir,f”img_{num:05d}.jpg”),img)При помощи библиотеки librosa аудиоинформация конвертируется в мел-спектрограмму. Выбранныенамипараметрыконвертации:размерокна-2048,размерпересеченияокон-512 (применяются для оконного преобразования Фурье), количество мел-фильтров - 80. Так как частота дискретизации и длительность аудиоинформации фиксирована, мы получаем мел- спектрограммы одинакового формата в виде матрицы (80, 430). Полученные мел-спектрограммы нормализуютсяметодомминимакс