.. include:: ../../../reuse_content/general.rst
.. |a_config| raw:: html
.. |a_model_fa| raw:: html
.. |a_model_fv| raw:: html
.. |a_guide| raw:: html
Модуль объединения модальностей
===============================
Команда для запуска модуля объединения модальностей:
.. code-block:: sh
openav_train_audiovisual --config <путь_к_вашему_конфигурационному_файлу>.yaml
.. important:: Для запуска команды необходимо обязательно указать путь к конфигурационному файлу. Запускать программу необходимо из директории, где она расположена.
Конфигурационный файл
~~~~~~~~~~~~~~~~~~~~~
Конфигурационный файл включает в себя следующие настройки:
* Отображение процесса выполнения программы в терминале (командной строке)
* Работа с файловой системой
* Параметры процесса обучения аудиовизуальных нейросетевых моделей
.. rst-class:: config-link
|a_config|
Пример конфигурационного файла
|/a|
.. important:: Для обучения на видеоадапторе потребуется вручную установить библиотеку для машинного обучения PyTorch с использованием GPU.
|a_guide|
Инструкция для установки PyTorch с использованием GPU
|/a|
Отображение процесса выполнения команды в терминале
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. rst-class:: custom-table shell-table
.. csv-table::
:align: center
:header: "Параметр", "Тип", "Значение по умолчанию", "Описание"
:widths: 23, 7, 25, 45
"hide_metadata", "bool", "``false``", "Включение отображения метаданных"
"hide_libs_vers", "bool", "``false``", "Включение отображения версий установленных библиотек в командной строке"
Работа с файловой системой
~~~~~~~~~~~~~~~~~~~~~~~~~~
.. rst-class:: custom-table filesystem-table
.. csv-table::
:align: center
:header: "Параметр", "Тип", "Значение по умолчанию", "Описание"
:widths: 23, 7, 25, 45
"path_to_dataset", "str", "``<путь_к_набору_данных>``", "Директория, где размещается подготовленный набор данных для обучения нейросетевых моделей"
"subfolders", "str","``train: ""train""`` |br| ``val: ""val""`` |br| ``test: ""test""``", "Директории с обучающей, тестовой и валидационной выборками"
"path_to_model_fa", "str", "``<путь_к_весам_аудио_модели>``", "Путь к предобученной модели , которая используются для извлечения акустических признаков. Предобученную модель можно скачать по |a_model_fa| ссылке |/a|"
"path_to_model_fv", "str", "``<путь_к_весам_видео_модели>``", "Путь к предобученной модели, которая используются для извлечения визуальных признаков. Предобученную модель можно скачать по |a_model_fv| ссылке |/a|"
"path_to_save_models", "str", "``<путь_сохранения_обученных_моделей>``", "Путь, по которому будут храниться обученные нейросетевые модели"
Параметры процесса обучения аудиовизуальных нейросетевых моделей
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. rst-class:: custom-table encode-table
.. csv-table::
:align: center
:header: "Параметр", "Тип", "Значение по умолчанию", "Описание"
:widths: 23, 7, 20, 50
"n_classes", "int", "``26``", "Количество классов для задачи классификации. Соответствуют количеству фраз из базы данных"
"classes", "list", "``[""1_Левая"", ""2_Правая"",`` |br| ``...`` |br| ``""26_Калибровка""]``", "Список названий классов, которые представлены в базе данных"
"seed", "int", "``42``", "Параметр, задающий начальное значение генератора псевдослучайных чисел в PyTorch. Установка фиксированного ``seed`` обеспечивает воспроизводимость результатов между разными запусками программы. При одинаковом ``seed`` все случайные операции, такие как инициализация весов нейронной сети, перемешивание данных и др., будут давать одинаковые результаты."
"max_segment", "int", "``2``", "Гиперпараметр, определяющий максимальное количество перекрывающихся сегментов, на которые разбиваются длинные последовательности аудио и видео данных перед подачей их на вход нейронной сети для обучения или вывода"
"epochs", "int", "``150``", "Количество эпох обучения модели. Проход одной эпохи значит, что весь датасет прошел через нейронную сеть в прямом и обратном направлении только один раз. Параметр ``patience`` позволяет избежать переобучения модели"
"patience", "int", "``15``", "Количество эпох, в течении которых модель не прогрессирует в обучении. Т.е. если по прошествии, например, ``5`` эпох модель не показывала прирост ``accuracy`` (либо ваша метрика), то в данном случае процесс обучения останавливается и сохраняется модель на эпохе с наибольшей точностью. Данный параметр позволяет предотвратить переобучение модели, а также снизить длительность обучения"
"batch_size", "int", "``2``", "Размер батча. Общее число тренировочных объектов, представленных в одном батче. Устанавливается в зависимости от возможности вашего оборудования"
"leaning_rate", "float", "``0.0001``", "Коэффициент скорости обучения. Чем меньше значение, тем дольше будет идти обучение модели. Однако, стоит помнить, что может наступить переобучение модели. Данный коэффициент подбирается эмпирическим путем"
"weight_decay", "float", "``0.0``", "Параметр, используемый для регуляризации весов нейронной сети путем добавления L2-регуляризации к функции потерь во время обучения. Позволяет предотвратить переобучение и подбирается экспериментальным путем "
"hidden_units", "int", "``256``", "Количество скрытых единиц (hidden units) в декодере нейронной сети. Этот параметр определяет размерность внутреннего представления данных в декодере, что влияет на емкость (expressive capacity) и способность декодера извлекать и обобщать сложные зависимости в данных. Подбирается эмипирическим путем"
"hidden_features", "int", "``128``", "Количество скрытых признаков (hidden features) или временных шагов, используемых в нейросетевые модели. Этот гиперпараметр связан с тем, как модель обрабатывает последовательные данные, такие как аудио и видео. Увеличение этого параметра позволяет модели обрабатывать более длинные входные последовательности, но также увеличивает вычислительную сложность и требования к памяти, уменьшение может ускорить обучение, но при этом модель будет видеть только более короткие временные зависимости. Подбирается эмпирически"
"input_dim", "int", "``512``", "Размерность входных векторов признаков для аудио и видео данных, подаваемых в модель. Например, параметр ``input_dim=512`` указывает, что на вход нейронной сети будут подаваться векторы признаков размера 512 для каждого временного шага последовательности. Размер входного вектора обычно является результатом предварительной обработки и извлечения низкоуровневых признаков из исходных аудио/видео данных с помощью отдельных моделей или методов обработки сигналов."
"shape_audio", "int","``channels: ""1""`` |br| ``n_mels: ""64""`` |br| ``samples: ""306""``", "Здесь определяется размерность входных тензоров аудиоданных, ожидаемые моделью. Это форма задается тремя числами ``channels`` - количество каналов в аудиоданных, чаще всего аудио является моно, поэтому здесь канал равен ``1``. При стерео он равен ``2``. ``n_mels`` - количество мел-частотных кепстральных коэффициентов (MFCC), используемых для представления аудиоданных. ``samples`` - количество временных выборок или окон, входящих в одно аудио представление. Являются фиксированными параметрами"
"shape_video", "int","``frames: ""29""`` |br| ``channels: ""3""`` |br| ``width: ""88""`` |br| ``height: ""88""``", "Здесь определяется размерность входных тензоров видеоданных, ожидаемые моделью. ``frames`` - это количество видеокадров в одном сегменте. ``channels`` - это количество цветовых каналов (R, G, B) в видеокадре. Для изображения в серых тонах количество каналов равно ``1``. ``width`` - ширина видеокадра в пикселях. ``height`` - высота видеокадра в пикселях. Являются фиксированными параметрами"
"encoder_decoder", "int", "``5``", "Количество блоков энкодера и декодера в архитектуре трансформера, который используется в этой модели. Доступные значения от ``1`` до ``50``. Правильный выбор количества энкодер/декодер блоков является важным гиперпараметром и часто подбирается экспериментально в зависимости от размера данных, доступных вычислительных ресурсов и требуемого качества модели"
"optimizer", "str", "``lion``", "Выбор оптимизатора обучения нейросетевой модели. Может существенно оказывать влияние на скорость сходимости, стабильность и окончательную точность модели. Разные оптимизаторы имеют свои преимущества и недостатки, подходящие для определенных задач и архитектур моделей. Доступные варианты ``adam``, ``adamw``, ``sgd``, ``lion``"
"requires_grad", "str", "``av``", "Этот параметр предоставляет гибкий способ настройки режима обучения сложных моделей, позволяя либо полностью зафиксировать предобученные компоненты, либо обучать их совместно с основной частью модели. ``none`` - обучаются все компоненты модели: аудио, видео и трансформер. ``a`` - заморозка весов для аудио компонента. ``v`` - заморозка весов для видео компонента. ``av`` - заморозка весов для аудио и видео компонентов, обучается только трансформер"