Vincent Sitzmann*, Julien NP Martel*, Alexander W. Bergman, David B. Lindell, Gordon Wetzstein
Stanford University, *bezeichnet den gleichen Beitrag
Dies ist die offizielle Umsetzung des Papiers "implizite neuronale Darstellungen mit regelmäßigen Aktivierungsfunktionen".
Wenn Sie mit Siren experimentieren möchten, haben wir ein Colab geschrieben. Es ist ziemlich umfassend und verfügt über eine Sirene-Implementierung von No-Frills und Drop-In-Implementierung. Es erfordert keine Installation und durchläuft die folgenden Experimente / Sireneneigenschaften:
Sie können Arond auch mit einer winzigen Sirene interaktiv, direkt im Browser, über den Tensorflow -Spielplatz spielen. Vielen Dank an David Cato für die Implementierung dessen!
Wenn Sie alle im Papier gezeigten Ergebnisse (einschließlich der Basislinien) reproduzieren möchten, finden Sie hier Videos, Punktwolken und Audiodateien.
Sie können dann eine Conda -Umgebung mit allen Abhängigkeiten wie SO einrichten:
conda env create -f environment.yml
conda activate siren
Der Code ist wie folgt organisiert:
Das Verzeichnis experiment_scripts
enthält ein Skript pro Experiment im Papier.
Um den Fortschritt zu überwachen, schreibt der Trainingscode Tensorboard -Zusammenfassungen in ein "Zusammenfassungs" -Subdadum in der logging_root.
Das Bildversuch kann mit reproduziert werden
python experiment_scripts/train_img.py --model_type=sine
Die Figuren im Papier wurden durch Extrahieren von Bildern aus den Zusammenfassungen des Tensorboards gemacht. Beispielcode, wie dies zu tun ist, finden Sie im Skript make_Figures.py.
Dieses GitHub -Repository wird sowohl mit den Audioclips "Zähl" als auch mit "Bach" unter ./Data geliefert.
Sie können mit trainiert werden
python experiment_scipts/train_audio.py --model_type=sine --wav_path=<path_to_audio_file>
Die Videosequenz "Bikes" wird mit Scikit-Video geliefert und muss nicht heruntergeladen werden. Das Katzenvideo kann mit dem obigen Link heruntergeladen werden.
Um ein Modell in ein Video anzupassen, laufen Sie aus
python experiment_scipts/train_video.py --model_type=sine --experiment_name bikes_video
Für die Poisson -Experimente gibt es drei separate Skripte: eines für die Rekonstruktion eines Bildes aus seinen Gradienten (train_poisson_grad_img.py) aus seinem Laplacian (train_poisson_lapl_image.py) und zum Kombinieren von zwei Bildern (Train_poisson_gradcomp_img.py).
Einige der Experimente wurden mit dem BSD500 -Datast durchgeführt, den Sie hier herunterladen können.
Um eine signierte Abstandsfunktion (SDF) mit Sirene anzupassen, benötigen Sie zunächst ein PointCloud im .xyz -Format, das Oberflächennormalen enthält. Wenn Sie nur eine Mesh / Ply-Datei haben, kann dies mit dem Open-Source-Tool Meshlab erreicht werden.
Um unsere Ergebnisse zu reproduzieren, stellen wir beide Modelle der thailändischen Statue aus dem 3D Stanford Model Repository und dem in unserem Papier verwendeten Wohnzimmer zum Download zum Download zur Verfügung.
Um eine Sirene auszubilden, rennen Sie:
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
Dadurch wird regelmäßig Checkpoints in dem vom Stammpfosten im Skript angegebenen Verzeichnis in einem Subverzeichnis "Experiment_1" gespeichert. Die batch_size wird normalerweise so eingestellt, dass sie in den gesamten Speicher Ihrer GPU eingebaut ist. Unsere Experimente zeigen, dass mit einer 256, 3 versteckten Schicht Sirene die Chargengröße zwischen 230 und 250 000 für eine NVIDIA-GPU mit 12 GB Speicher festlegen kann.
Um eine SDF zu inspizieren, die in eine 3D-Punkt-Wolke eingebaut ist, müssen wir nun ein Netz aus dem SDF-Set auf Null-Ebene erstellen. Dies wird mit einem anderen Skript durchgeführt, bei dem ein Algorithmus für Marching Cubes verwendet wird (angepasst aus dem DeepSDF Github Repo) und das in einem Dateiformat gespeicherte Netz erstellt. Es kann aufgerufen werden mit:
python experiments_scripts/test_single_sdf.py --checkpoint_path=<path_to_the_checkpoint_of_the_trained_model> --experiment_name=experiment_1_rec
Dies speichert die .PLY -Datei als "Rekonstruktion. Das Skript wird wahrscheinlich einfrieren. Wenn dies der Fall ist, verwenden Sie bitte die Option -Auflösung = 512 in der obigen Befehlszeile (standardmäßig auf 1600 festgelegt), die das Netz bei einer niedrigeren räumlichen Auflösung rekonstruiert.
Die Datei .PLY kann mithilfe einer Software wie Meshlab (einem plattformübergreifenden Visualizer und Editor für 3D-Modelle) visualisiert werden.
Die Experimente von Helmholtz und Wave -Gleichung können mit den Skripten von Train_wave_equation.py und Train_helmholtz.py reproduziert werden.
Wir verwenden die ausgezeichnete Torchmeta, um Hyperetworks zu implementieren. Wir haben festgestellt, dass es einen technischen Bericht gibt, den wir vergessen haben zu zitieren - er wird es in die Kamera -fähige Version schaffen!
Wenn Sie unsere Arbeit in Ihrer Forschung nützlich finden, zitieren Sie bitte:
@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}
}
Wenn Sie Fragen haben, können Sie die Autoren per E -Mail senden.