Загрузите последний выпуск nn~! Обязательно загрузите версию, подходящую для вашей установки.
Пользователи Mac , вам следует загрузить версию Arm64 тогда и только тогда, когда ваш Mac — это M1-2, и ваша установка Max/MSP или PureData не использует Rosetta!
Для пользователей Windows на данный момент требуется, чтобы все файлы .dll
в пакете nn~
были скопированы рядом с исполняемым файлом ˋMax.exeˋ.
Распакуйте файл .tar.gz
в папке Package вашей установки Max, т. е. в Documents/Max 8/Packages/
.
Затем вы можете создать экземпляр объекта nn~
. В зависимости от вашей установки вы можете получить предупреждение о карантине, например это
В большинстве случаев продолжение удаления приведет к отключению этого предупреждения до следующего обновления nn~
. Если MacOS продолжает блокировать внешний код, возможно, вам придется скомпилировать его самостоятельно.
Щелкните правой кнопкой мыши объект nn~
, чтобы открыть патч справки, и перейдите по вкладкам, чтобы узнать больше об этом проекте.
Распакуйте файл .tar.gz
в папке Package вашей установки Pd, т. е. в Documents/Pd/externals/
. Затем вы можете добавить новый путь в меню Pd/File/Preferences/Path
указывающий на папку nn_tilde
.
В MacOS, в отличие от Max/MSP, PureData не включает процедуру автоматического удаления из карантина. Поэтому нам приходится делать это вручную. Запустите терминал и cd
в папку nn_tilde
. Следующая команда устранит проблему
xattr -r -d com.apple.quarantine .
По своей сути nn~
— это уровень трансляции между Max/MSP или PureData и интерфейсом C++ libtorch для глубокого обучения. В одиночку nn~
похож на пустую оболочку и для работы требует предварительно обученных моделей . Вы можете найти несколько моделей RAVE здесь или несколько моделей vschaos2 здесь.
Предварительно обученная модель для nn~
— это файлы torchscript с расширением .ts
. Создайте папку где-нибудь на своем компьютере, например в
Documents/pretrained_models/
и добавьте этот путь в Max или PureData, включая путь (Max: Options/File Preferences
, PureData: File/Preferences/Path
).
Как только это будет сделано, вы можете загрузить модель, используя следующий синтаксис (здесь для загрузки предварительно обученной модели, расположенной в Documents/pretrained_models/decoder_only.ts
).
Макс / MSP | Чистые данные |
---|---|
Обратите внимание, что вам необходимо включить расширение .ts
в версию PureData. В зависимости от загруженной модели будет разное количество входов/выходов, соответствующих различным входам и выходам модели.
Данная предварительно обученная модель может иметь несколько разных методов с разными эффектами и использованием. Например, модель RAVE имеет три разных метода, соответствующих разным частям модели. Для примера опишем их в следующей таблице:
Имя метода | Описание | Входы | Выходы |
---|---|---|---|
кодировать | Кодирует звуковой сигнал в скрытую траекторию. | звуковой сигнал | несколько скрытых траекторий |
декодировать | Декодирует скрытую траекторию в звуковой сигнал. | несколько скрытых траекторий | звуковой сигнал |
вперед (по умолчанию) | Кодирует и декодирует аудиосигнал | звуковой сигнал | звуковой сигнал |
Пользователь может переключаться между методами во время создания экземпляра, добавляя второй аргумент к nn~
вызывая нужный метод.
Макс / MSP | Чистые данные |
---|---|
Можно настраивать модели после их инициализации с помощью специальных атрибутов , тип и эффект которых полностью определяются самой моделью, за исключением атрибута enable
, которому можно установить значение 0 или 1 для включения или отключения модели, что потенциально позволяет сэкономить вверх по вычислениям.
Атрибуты модели можно установить с помощью messages со следующим синтаксисом:
set ATTRIBUTE_NAME ATTRIBUTE_VAL_1 ATTRIBUTE_VAL_2
Используя графические объекты Max/MSP и PureData, это может привести к интуитивно понятному способу изменения поведения модели, как показано ниже, где у нас есть два атрибута модели (т. е. температура генерации и режим генерации), а также специальный атрибут enable
.
Макс / MSP | Чистые данные |
---|---|
Список и значения атрибутов снова зависят от модели и должны быть получены из документации модели.
Внутри nn~
имеет механизм циклического буфера, который помогает поддерживать разумную вычислительную нагрузку. Вы можете изменить его размер, используя дополнительное целое число после объявления метода, как показано ниже.
Макс / MSP | Чистые данные |
---|---|
Версия nn~
для Max/MSP включает дополнительные внешние компоненты, а именно mc.nn~
и mcs.nn~
, позволяющие использовать многоканальные возможности Max 8+ для упрощения процесса внесения исправлений с помощью nn~
и, при необходимости, снижения вычислительной нагрузки.
В следующих примерах два аудиофайла кодируются, а затем параллельно декодируются одной и той же моделью.
Этот патч можно улучшить как визуально, так и вычислительно, используя mc.nn~
и используя пакетные операции.
Используя mc.nn~
мы формируем многоканальные сигналы из разных пакетов . В приведенном выше примере каждый многоканальный сигнал будет иметь два разных канала. Мы также предлагаем внешний компонент mcs.nn~
, который формирует многоканальные сигналы по различным измерениям , как показано в примере ниже.
В приведенном выше примере два многоканальных сигнала, создаваемые объектом nn~ rave encode 2
имеют по 16 каналов каждый, что соответствует 16 скрытым измерениям. Это может помочь в исправлении, сохраняя при этом возможности пакетной обработки mc.nn~
, создавая явное количество входов/выходов, соответствующее количеству примеров, которые мы хотим обрабатывать параллельно.
Напомним, что обычный nn~
работает на одном примере и имеет столько входов/выходов, сколько входов/выходов имеет модель. Внешний mc.nn~
похож на nn~
, но может обрабатывать несколько примеров одновременно . Вариант mcs.nn~
немного отличается и может обрабатывать несколько примеров одновременно, но будет иметь один вход/выход для каждого примера .
Включите/отключите вычисления, чтобы сохранить вычисления без удаления модели. Аналогично тому, как будет работать функция обхода .
Динамически перезагружает модель. Может быть полезно, если вы хотите периодически обновлять состояние модели во время обучения.
git clone https://github.com/acids-ircam/nn_tilde --recursive
cd nn_tilde
mkdir build
cd build
cmake ../src/ -DCMAKE_PREFIX_PATH=/path/to/libtorch -DCMAKE_BUILD_TYPE=Release
make
.mxo
в ~/Documents/Max 8/Packages/nn_tilde/externals/
Вы можете собрать nn~
для PureData, добавив -DPUREDATA_INCLUDE_DIR=/Applications/Pd-X.XX-X.app/Contents/Resources/src/
к вызову cmake.
git clone https://github.com/acids-ircam/nn_tilde --recurse-submodules
cd nn_tilde
mkdir build
cd build
cmake .. s rc -A x64 -DCMAKE_PREFIX_PATH= " <unzipped libtorch directory> " -DPUREDATA_INCLUDE_DIR= " <path-to-pd/src> " -DPUREDATA_BIN_DIR= " <path-to-pd/bin> "
cmake --build . --config Release
Хотя nn~ можно скомпилировать и использовать на Raspberry Pi, вам, возможно, придется рассмотреть возможность использования более легких моделей глубокого обучения. В настоящее время мы поддерживаем только 64-битную ОС.
Установите nn~ для PureData, используя
curl -s https://raw.githubusercontent.com/acids-ircam/nn_tilde/master/install/raspberrypi.sh | bash
Эта работа проводится в IRCAM и финансируется следующими проектами.