Vincent Sitzmann*, Julien NP Martel*, Alexander W. Bergman, David B. Lindell, Gordon Wetzstein
Universitas Stanford, *menunjukkan kontribusi yang sama
Ini adalah implementasi resmi dari makalah ini "representasi saraf implisit dengan fungsi aktivasi berkala".
Jika Anda ingin bereksperimen dengan sirene, kami telah menulis seekor colab. Ini cukup komprehensif dan dilengkapi dengan implementasi sirene tanpa embel-embel, drop-in. Tidak perlu menginstal apa pun, dan melalui eksperimen / properti sirene berikut:
Anda juga dapat bermain Arond dengan sirene kecil secara interaktif, langsung di browser, melalui taman bermain Tensorflow di sini. Terima kasih kepada David Cato karena telah menerapkan ini!
Jika Anda ingin mereproduksi semua hasil (termasuk garis dasar) yang ditunjukkan di koran, video, awan titik, dan file audio dapat ditemukan di sini.
Anda kemudian dapat mengatur lingkungan Conda dengan semua dependensi seperti SO:
conda env create -f environment.yml
conda activate siren
Kode ini diatur sebagai berikut:
Direktori experiment_scripts
berisi satu skrip per percobaan di koran.
Untuk memantau kemajuan, kode pelatihan menulis ringkasan Tensorboard menjadi subdirektori "ringkasan" "di logging_root.
Eksperimen gambar dapat direproduksi
python experiment_scripts/train_img.py --model_type=sine
Angka -angka di koran dibuat dengan mengekstraksi gambar dari ringkasan Tensorboard. Contoh kode bagaimana melakukan ini dapat ditemukan di skrip make_figures.py.
Repositori GitHub ini hadir dengan klip audio "penghitungan" dan "Bach" di bawah ./data.
Mereka dapat dilatih dengan
python experiment_scipts/train_audio.py --model_type=sine --wav_path=<path_to_audio_file>
Urutan video "sepeda" hadir dengan Scikit-Video dan tidak perlu diunduh. Video kucing dapat diunduh dengan tautan di atas.
Agar sesuai dengan model ke video, jalankan
python experiment_scipts/train_video.py --model_type=sine --experiment_name bikes_video
Untuk eksperimen Poisson, ada tiga skrip terpisah: satu untuk merekonstruksi gambar dari gradiennya (train_poisson_grad_img.py), dari Laplacian (train_poisson_lapl_image.py), dan untuk menggabungkan dua gambar (train_poisson_gradcompercomper).
Beberapa percobaan dijalankan menggunakan Datast BSD500, yang dapat Anda unduh di sini.
Agar sesuai dengan fungsi jarak yang ditandatangani (SDF) dengan sirene, pertama -tama Anda membutuhkan pointcloud dalam format .xyz yang mencakup normals permukaan. Jika Anda hanya memiliki file mesh / ply, ini dapat dicapai dengan alat open-source meshlab.
Untuk mereproduksi hasil kami, kami menyediakan kedua model patung Thailand dari repositori model 3D Stanford dan ruang tamu yang digunakan dalam makalah kami untuk diunduh di sini.
Untuk mulai melatih sirene, jalankan:
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
Ini secara teratur akan menyimpan pos pemeriksaan di direktori yang ditentukan oleh rootpath dalam skrip, dalam subdirektori "Experiment_1". Batch_Size biasanya disesuaikan agar sesuai dengan seluruh memori GPU Anda. Eksperimen kami menunjukkan bahwa dengan 256, 3 sirene lapisan tersembunyi, seseorang dapat mengatur ukuran batch antara 230-250'000 untuk GPU NVIDIA dengan memori 12GB.
Untuk memeriksa SDF yang dipasang ke awan titik 3D, kita sekarang perlu membuat mesh dari set tingkat nol SDF. Ini dilakukan dengan skrip lain yang menggunakan algoritma Marching Cubes (diadaptasi dari repo gitub deepsdf) dan membuat mesh yang disimpan dalam format file .ply. Itu bisa disebut dengan:
python experiments_scripts/test_single_sdf.py --checkpoint_path=<path_to_the_checkpoint_of_the_trained_model> --experiment_name=experiment_1_rec
Ini akan menyimpan file .ply sebagai "rekonstruksi.ply" di "Experiment_1_rec" (bersabarlah, langkah meshing kubus berbaris membutuhkan waktu;)) Jika mesin yang Anda gunakan untuk rekonstruksi tidak memiliki cukup RAM, menjalankan test_sdf Script kemungkinan akan membeku. Jika ini masalahnya, silakan gunakan opsi - -resolusi = 512 di baris perintah di atas (diatur ke 1600 secara default) yang akan merekonstruksi mesh pada resolusi spasial yang lebih rendah.
File .ply dapat divisualisasikan menggunakan perangkat lunak seperti meshlab (visualisasi cross-platform dan editor untuk model 3D).
Eksperimen persamaan Helmholtz dan Wave dapat direproduksi dengan skrip train_wave_etation.py dan train_helmholtz.py.
Kami menggunakan Torchmeta yang sangat baik untuk mengimplementasikan HyperNetWorks. Kami menyadari bahwa ada laporan teknis, yang kami lupa mengutip - itu akan membuatnya menjadi versi yang siap kamera!
Jika Anda menemukan pekerjaan kami berguna dalam penelitian Anda, silakan kutip:
@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}
}
Jika Anda memiliki pertanyaan, jangan ragu untuk mengirim email kepada penulis.