Винсент Ситцманн*, Жюльен Н.П. Мартель*, Александр В. Бергман, Дэвид Б. Линделл, Гордон Ветцштейн
Стэнфордский университет, *обозначает равный вклад
Это официальная реализация статьи «Неявные нейронные представления с периодической активацией».
Если вы хотите поэкспериментировать с сиреной, мы написали колаб. Это довольно всеобъемлющее и поставляется с бессмысленным внедрением сирены. Он не требует ничего, что ничего не требует, и проходит следующие эксперименты / свойства сирены:
Вы также можете играть в Arond с крошечной сиреной интерактивно, прямо в браузере, через игровую площадку Tensorflow здесь. Спасибо Дэвиду Като за реализацию этого!
Если вы хотите воспроизвести все результаты (включая базовые линии), показанные в статье, видео, точечные облака и аудиофайлы можно найти здесь.
Затем вы можете настроить среду Conda со всеми зависимостями, как SO:
conda env create -f environment.yml
conda activate siren
Код организован следующим образом:
experiment_scripts
по каталогу.
Чтобы отслеживать прогресс, код обучения записывает резюме Tensorboard в подкаталог «резюме» в Logging_ROOT.
Эксперимент на изображении может быть воспроизведен с помощью
python experiment_scripts/train_img.py --model_type=sine
Цифры в бумаге были сделаны путем извлечения изображений из резюме для тензора. Пример кода, как это сделать, можно найти в сценарии make_figures.py.
Этот репозиторий GitHub поставляется как с аудидио -клипами «подсчета», так и с «Bach» под ./data.
Их можно обучать
python experiment_scipts/train_audio.py --model_type=sine --wav_path=<path_to_audio_file>
Видеопоследовательность «велосипеды» поставляется с Scikit-Video и не должна быть загружена. Видео Cat можно загрузить по ссылке выше.
Чтобы соответствовать модели на видео, запустите
python experiment_scipts/train_video.py --model_type=sine --experiment_name bikes_video
Для экспериментов Пуассона есть три отдельных сценария: один для реконструкции изображения из его градиентов (train_poisson_grad_img.py), из его Лапласиана (train_poisson_lapl_image.py) и для объединения двух изображений (train_poisson_gradcomp_img.py).
Некоторые из экспериментов проводились с использованием данных BSD500, который вы можете скачать здесь.
Чтобы соответствовать подписанной функции расстояния (SDF) с сиреной, вам сначала нужна точка в формате .xyz, который включает нормы поверхности. Если у вас есть только файл сетки / ply, это может быть достигнуто с помощью инструмента с открытым исходным кодом Meshlab.
Чтобы воспроизвести наши результаты, мы предоставляем обе модели тайской статуи из 3D -репозитория Стэнфорда и гостиной, используемой в нашей статье для загрузки здесь.
Чтобы начать обучение сирены, беги:
python experiments_scripts/train_single_sdf.py --model_type=sine --point_cloud_path=<path_to_the_model_in_xyz_format> --batch_size=250000 --experiment_name=experiment_1
Это регулярно сохраняет контрольные точки в каталоге, указанном корневым путем в скрипте, в подкаталоге "Эксперимент_1". BATCH_SIZE обычно регулируется так, чтобы соответствовать во всей памяти вашего графического процессора. Наши эксперименты показывают, что с 256-3, 3 скрытой слоей сирены можно установить размер партии между 230-20000 для графического процессора NVIDIA с памятью 12 ГБ.
Чтобы осмотреть SDF, установленную в облаке 3D-точки, теперь нам нужно создать сетку из набора SDF нулевого уровня. Это выполняется с помощью другого сценария, который использует алгоритм марширующих кубов (адаптированный из репозитория DeepsDF GitHub) и создает сетку, сохраненную в формате файла .ply. Это можно вызвать с:
python experiments_scripts/test_single_sdf.py --checkpoint_path=<path_to_the_checkpoint_of_the_trained_model> --experiment_name=experiment_1_rec
Это сохранит файл .ply как «Reconstruction.ply» в «Experiment_1_Rec» (будьте терпеливы, шаг сетки марширования кубика занимает некоторое время;)) В случае, когда машина, которую вы используете для реконструкции, не имеет достаточно оперативной памяти, выполняя test_sdf Скрипт, скорее всего, заморозит. Если это так, пожалуйста, используйте опцию -Resolution = 512 в командной строке выше (по умолчанию установите 1600), которая будет реконструировать сетку с более низким пространственным разрешением.
Файл .ply может быть визуализирован с использованием программного обеспечения, такого как Meshlab (кроссплатформенный визуализатор и редактор для 3D-моделей).
Эксперименты по уравнению Гельмгольц и волновых уравнений могут быть воспроизведены с помощью сценариев Train_wave_evation.py и Train_helmholtz.py.
Мы используем отличную Torchmeta для реализации HypernetWorks. Мы поняли, что есть технический отчет, который мы забыли процитировать - он превратится в версию, готовую к камере!
Если вы найдете нашу работу полезной в своем исследовании, пожалуйста, укажите:
@inproceedings{sitzmann2019siren,
author = {Sitzmann, Vincent
and Martel, Julien N.P.
and Bergman, Alexander W.
and Lindell, David B.
and Wetzstein, Gordon},
title = {Implicit Neural Representations
with Periodic Activation Functions},
booktitle = {arXiv},
year={2020}
}
Если у вас есть какие -либо вопросы, пожалуйста, не стесняйтесь написать авторам.