Commit Graph
84 Commits
Author SHA1 Message Date
Justin Kerr e0d8f04267 Render oriented crops in viewer beta (#2447)
* add obb to the rendering pipeline

* useless line

* lint

* remove todo

* pyright

* more pyright
2023-09-19 16:48:54 -07:00
Brent YiandJustin Kerr 3e1d4af821 Add share link support for beta viewer (#2445)
* Add share link support for beta viewer

* More consistent CLI experience

* fix viewer jitter by adding atomic update on camera pose

* change to make_share_url

* fix

* remove incorrect assert

---------

Co-authored-by: Justin Kerr <justin.g.kerr@gmail.com>
2023-09-19 16:22:55 -07:00
Sid Mehta 7269a7ee16 Add Comet Logging (#2431)
* initial commit

* fixed naming

* added comet_ml as depedency

* added comet to docs

* Update custom_gui.md

* Update models.md

* Update benchmarking.md

* added Comet to ReadMe

* added decorator

* fixed link and added comet examples

* fixed link and added comet example

* fixed format

* fixed type ignore error

* fixed readme typo

* fixed typo
2023-09-15 09:21:09 -07:00
James Gardner cba8d22d3b Optimizers.scheduler_step() bug fix (#2352)
optimizer bug fix
2023-08-18 09:01:50 -07:00
Frederik WarburgandEthan Weber 9b03299d40 Train and eval data splits (Nerfbusters) (#2207)
* nerfbusters dataparser

* nerfbuster dataparser and visualization of eval views

* resolved some errors from  pyright

* enable ns-process-data to take two videos as input and use one for eval and the other for train

* resolve some pyright issues

* instead of data being a tuple, I added eval_data as another argument

* implemented train eval split for all cases

* implemented train eval split for all cases

* reverting equi changes

* reverting reality capture changes

* raise valueerror

* revert comment

* added split override code back to dataparser

* reverted one change

* using image border now

* adding docs

---------

Co-authored-by: Ethan Weber <eweb0124@gmail.com>
2023-08-04 10:11:55 -04:00
hyperzy e7fd1aefa2 Load schedulers from ckpt in a backward-compatible manner (#2236) 2023-07-18 18:02:15 +00:00
hyperzy cebe787bed Add saving/loading scheduler state_dict (#2203)
- Add saving/loading scheduler stat_dict
2023-07-12 14:14:59 +00:00
machenmusik 82b3f70f87 Avoid zero duration crash (#2193)
Avoid zero duration divide-by-zero crash when processing too quickly.
2023-07-10 22:09:44 +00:00
ksnzhandZhang Jian c55f5d36b9 add gradient accumulation support (#2049)
* add gradient accumulation support

* fix 2 blank lines

* fix possibly unbound variable

* update gradient accumulation step with for loop

* add seert and ignore pyright check

---------

Co-authored-by: Zhang Jian <zhangjian49@lenovo.com>
2023-06-18 07:17:35 -07:00
b17268e83b [WIP] dreamfusion implementation (#1008)
* starting the framework for dreamfusion

* Removed view direction from RGB to calculate albedo

* Started diffusion

* Added dreamfusion to CLI, removed direction embeddings

* Normals in dreamfusion

* Lambertian shading added

* Train normals in Dreamfusion

* Stable diffusion from Stable Dreamfusion

* Fix normal orientation loss

* Configurable light direction sampling

* adding density initalization at origin

* V1 datamanager

* Don't train normals for first 1k iters

* SDS loss added to dreamfusion

* Dreamfusion pipeline

* Background MLP and SphereCollider

* Normals prediction training fixed

* Sigmoid on background, prompt in config

* Shading hyperparameter adjustements

* Shading hyperparameter tuning

* Location based prompting, density initialization fades, LR change

* Cleaned imports, more config options

* Tuning, more config changes

* remove unused sampler, normalize predicted normals from network

* change position encoding to direction encoding for background color mlp

* Updating dreamfusion to use custom trainer, fixed bug, multi-gpu support (put diffusion on one specific device), merged with main

* Hard coding less, offloading to config

* Appeasing the linter

* First pass opacity / sparsity losses

* Small patches and configs

* Accidentally pushed logs

* Removing logs for real this time

* Transmittance loss bug fix

* 12 GB Dreamfusion!

* Lint

* Remove unecissary collider changes

* Start SD cleanup

* Cleanup SD code

* adding overhead location prompting

* Use lambertian renderer

* turn grad accum off by default, decrease background mlp size, add overhead text embedding

* Cleanup

* Fix normals vis

* change uniform sampler to prediction network, add option to jit unet for faster sds_loss

* Use shaders

* cleaning up jit code

* add warning if using non jit unet

* add proposal network optimizer to config

* speed up render and cleanup code

* Clean up datamanager

* Add distortion loss

* fix wanb

* adding interpolated location sampling

* Update configs

* interpolated location prompting option, lowering init density, transmittance loss interpolation flipped

* rename alphas mult to alphas loss mult

* Mess around with normals

* add option to use random bg color + bg mlp

* Remove Dreamfusion Trainer (#1423)

* Dreamfusion trainer no longer needed

* Added typing for grad scaler

* SDS return loss

* Fix CFG

* Cleanup

* Update configs

* Fix opacity loss, use unform sampling first round of prop

* add prompt edditing to viewer

* Choose your own diffusion

* remove dreamfusion pipeline file

* merging + remove dreamfusion pipeline file

* Update configs

* add stable diff utils

* cleanup

* cleanup

* Fix test

* positional prompting bugfix

* Warmups

* tune

* lint

* Remove dataparser

* merging + text embedding bugfix

* Set data path to launch viewer for DreamFusion (#1776)

* Set data path to launch viewer for DreamFusion

* Apply formatter

* Fallback to 'base_dir' if data manager has no path

* Make if statement non-inline

* Reformat

---------

Co-authored-by: Matthew Tancik <mattt4001@gmail.com>

* add deepfloyd option first try

* merging

* merging from main

* merging

* removing comments, cleaning code, making stable diff utils usable for deepfloyd, remove deepfloyd text encoder after use

* undo chagnes in data folder

* cleaning code, removing unneccesary changes from main, removed normals prediction network

* remove old scripts files, rename generative pipeline flag to no_input_data, revert to default histogram padding in proposal sampler

* changing pipeline flag

* move no input data flag from pipeline to datamanager

* undo config and merge in deepfloyd from main

* merging grad scaler pipeline addition

* merging + setting proposal net scheduler

* revert nerfacto config change

* typing + linting

* rename dreamfusion datamanager to random camras datamanager, check datamanager typing in pipeline and trainer

* fix test import

* fix test import

* changing datamanager check in trainer, add typing in random cameras datamanager

* add Tensor to randomcamerasdatamanager

* remove old comments

* resolve tyro warning

* update fields to use tcnn

* lint

* add packages for deepfloyd

* add versions

* docs first draft

* rename to generfacto, clean docs

* fix import error

* minor changes

* fix orientation loss bug, retune params

* cleanup

* typing

* trying docs fix

* fixing generative package imports

* fix pyright

* docs fix

* merge w main

* docs minor change

* tuning + bugfixes

* remove torch.backends

---------

Co-authored-by: Abhik Ahuja <ahujaabhik@berkeley.edu>
Co-authored-by: David McAllister <davidrmc2@gmail.com>
Co-authored-by: Jake Austin <jake-austin@berkeley.edu>
Co-authored-by: Matthew Tancik <tancik@berkeley.edu>
Co-authored-by: Matt Tancik <mattt4001@gmail.com>
Co-authored-by: SeungWoo Yoo <dreamy1534@gmail.com>
Co-authored-by: ayaanzhaque <ayaanzhaque@gmail.com>
Co-authored-by: Ayaan Haque <ayaanzhaque@berkeley.edu>
2023-06-17 23:34:04 -07:00
Justin Kerr 8fad92c39a nerfacto-huge (#2003)
An even larger version of nerfacto with scaled hashgrid resolution, MLP sizes, batch sizes, appearance embeddings, proposal sampler resolution, and more.
Also includes some minor tweaks to nerfacto-big configs
2023-06-15 11:05:53 -07:00
Matthew Tancik addf477e8c add controls to the beta viewer (#2005)
* add controls to the beta viewer

* Remove misc file

* works now
2023-05-26 15:15:36 -07:00
Ethan WeberandEthan Weber bb6925bac6 Ability to use vanilla pytorch instead of tcnn for Nerfacto (#1936)
* started a package to easily swap out tcnn for pytorch

* trains with pytorch and not tcnn

* cleaned up imports

* making it easy to install on mac

* removed/reverted files

* merged main

* reverted changes

* updating config

* starting to add nerfacto to tests

* fixxing default value

* fixed default implementation

* defaults to torch if tcnn and not installed

* update log

* add comment

* resolved pr comments

* fix

* update default

---------

Co-authored-by: Ethan Weber <ethanweber@eecs-128-32-175-250.dhcp.berkeley.edu>
2023-05-25 14:55:42 -07:00
Matthew Tancik 400ab5a313 Fix exponential decay warmup (#2002)
Fix exponendial decay warmup
2023-05-25 10:07:22 -07:00
Terrance WangandMatthew Tancik a8bce87ada pass grad scaler from trainer to pipeline (#1996)
* pass grad sclaer from trainer to pipeline

* lint

* add grad scaler to arg doc

---------

Co-authored-by: Matthew Tancik <tancik@berkeley.edu>
2023-05-25 09:27:58 -07:00
Matias TurkulainenandMatthew Tancik 33d95f3e71 Added at_train_end logic to base pipeline (#1932)
* process additional images

* added on_train_end to base pipeline

* added on_train_end to base pipeline

* remove on_train_end from Base Model and Base Datamanager

* Add new callback type OnTrainEndCallback

* return empty list as default

* add on_train_end to trainingcallbacklocation enum

* make step var into union of int and None

* after train end callback

* Delete unnecessary file

* Delete unnecessary file

* Delete unnecessary file

---------

Co-authored-by: Matthew Tancik <tancik@berkeley.edu>
2023-05-23 16:03:55 -07:00
Matthew Tancik efd83abb6d Basic viser frontend (#1973)
* Use viser frontend

* Rendering but poses incorrect

* Fix cameras
2023-05-23 12:21:38 -07:00
Jonáš Kulhánekandmachenmusik 3bc160cc7d Backward compatibility for torch 1.x and fix for windows (#1962)
* backward compatibility for torch 1.x and fix for windows

* Update pyproject.toml

* Update README.md

* Update README.md

(As per request)

---------

Co-authored-by: machenmusik <machenmusik@users.noreply.github.com>
2023-05-22 08:58:08 -07:00
Jonáš KulhánekandBrent Yi f481f5ebec Fix some typing problems (#1940)
* Fix some typing problems

* nerfstudio.data typing error fixes

* Add tiny fixes

* Remove ABC from pipeline

* Prevent circular imports

* Tweak ModuleList typing

* TrainingCallbackAttributes cleanup

* Various minor nits

* More nits

* Run `ruff`

---------

Co-authored-by: Brent Yi <yibrenth@gmail.com>
2023-05-17 17:36:56 -07:00
e898f562e6 Switching to Torch 2.0 by default. (#1922)
* Update requirements for torch 2.0

* Update docs

* Fix missing _LRScheduler import

* Fix pylint issues

* Update docs, drop 1.13

* Fix pip postfix version

* fix docs

* Allow python 1.13 (for now)

* Minor fix for torch.compile

* Switch to torch.compile

* ruff

* Fix test

---------

Co-authored-by: Matt Tancik <mattt4001@gmail.com>
Co-authored-by: Matthew Tancik <tancik@berkeley.edu>
2023-05-17 16:03:17 -07:00
Brent YiandMatt Tancik d542646c72 Switch to ruff (#1939)
* `isort` -> `ruff`

* `pylint` -> `ruff`

* Remove line

* More minor cleanup

* Better documentation for rules we are enabling

* Fix gitignore, run black

* vscode settings

---------

Co-authored-by: Matt Tancik <mattt4001@gmail.com>
2023-05-17 10:08:14 -07:00
Brent Yi 814db32ec4 More typing fixes (#1941)
* Fix more types

* Fix tests

* Minor cleaning

* Address comments

* Resolve linting errors

* Re-ignore pymeshlab type

* Add extra assert / error message to mipnerf model
2023-05-17 07:17:40 -07:00
J.YandEthan Weber 7851dfa9db Fix bug related to distributed data parallel training (#1856)
* Fix bug related to distributed data parallel training

* fix format by black

* Add nerfacto-big multi-gpu commands

* cleaned up docs

* reverted default dataset to poster

---------

Co-authored-by: Ethan Weber <eweb0124@gmail.com>
2023-05-15 14:23:29 -07:00
ksnzh 445e17a3c6 fix pytorch 2.0 optimizer no inf check error (#1919)
* fix pytorch 2.0 optimizer no inf check error

* Update optimizers.py
2023-05-15 16:49:55 +02:00
Ethan Weber 13e0fce122 Update copyright (#1917)
* updated copyright

* including txt file

* updated black

* removing license

* fixing license
2023-05-12 16:16:13 -07:00
Matthew Tancik 4242a3c982 Make rich console global (#1916) 2023-05-12 14:20:40 -07:00
Matthew TancikandJonas Kulhanek 069fa0f498 Skip scheduler step is opt is not performed (#1854)
Skip scheduler step is opt is not perfomed

Co-authored-by: Jonas Kulhanek <jonas.kulhanek@live.com>
2023-05-09 07:30:53 -07:00
Matthew Tancik f299098f46 Fix viewer quit-on-train-completion (#1885) 2023-05-08 11:48:28 -07:00
Brent Yi 63c6303736 Bump minimum Python version to 3.8 (#1876)
* Bump minimum Python version to 3.8

* typing_extensions.Literal -> typing.Literal

* ns-dev-test

* typing_extensions.get_args => typing.get_args

* Format with older version of black

* Bump `black`

* Run black
2023-05-06 13:29:48 -07:00
Ethan Weber 081bf82bf5 Wandb/experiment improvements (#1879)
exposing experiment settings
2023-05-05 18:28:52 -07:00
Matthew Tancik 28e6f9c8fc Quit when not using viewer (#1873) 2023-05-04 10:06:25 -07:00
wuziruiandMatthew Tancik 817e2caabf add individual grad_scaler config (#1762)
* add individual grad_scaler config

* reword the description

* Update trainer.py

---------

Co-authored-by: Matthew Tancik <mattt4001@gmail.com>
2023-04-19 21:12:29 -07:00
Matthew Tancik cbb0511619 Add completed training state (#1768) 2023-04-18 16:55:38 -07:00
Jonáš Kulhánek ea14152ae6 Add PyTorch profiler to support tracing of forward/backward calls (#1761)
* Add PyTorch profiler support

* Add support for wrapped code, fix linting errors

* Update docs
2023-04-18 20:29:09 +02:00
6a7c8820b8 Viewer backend refactor (#1702)
* Copy in `viser` communication infrastructure

* Update background image

* Add build directory to fix viser HTTP server
May want to remove these later

* Copy in `viser` communication infrastructure

* Update background image

* Pass dataset vis using viser

* initial impl of ViewerParameter

* idk what i did but brent and matt know

* Suppress eslint typescript warnings

* implement ViewerElement base class, then ViewerButton, ViewerSlider, etc

* client -> server message setup

* multi folder stuff

* Stream controls over viser

* import

* add types to viewer_param.py

* Move another message to viser

* Update folder color

* Use non throttled messages

* multiple folders works

* Cleanup, more porting

* starting impl of control panel in viser

* More porting

* scenebox to viser

* Cleanup

* Fix render updates

* More cleanup, docs, typing

* start control_panel.py

* set_hidden logic but not merged in

* control_panel replicates behavior of existing control panel (visually), except for setting the list of output options. not yet integrated with viewer_utils.py for logic flow. also implemented set_disabled and set_hidden in javscript/ViewerElement side

* Remove some original leva components

* add some train util logic, attempt set_value, doesn't work on javascript side fully yet (value updates but not slider visually

* bye zmq

* missing call to decoder

* 'gui_set' works properly, control panel now replicates behavior of original

* remove print

* Fix status viewer message

* More cleanup

* support set_options in dropdown

* hiding buttons works correctly

* fix set_options, switch from cur_value to get_value()

* Fix slowdown

* output options

* colormap logic converted

* add handle to cb_hook

* fix some lambda bugs

* cleanup

* Save checkpoint logic readded

* Cleanup and minor fixes

* snappier ui

* Refactoring

* Fix state update bugs

* Bug fixes

* Write less to redux

* added comments to reducer code

* Render state machine (#1727)

* state machine works, but train step throttling not implemented

* more step logic, cleanup

* remove random try catcH

* mutex logic for render

* Update lock logic

* types and docs

* added some state machine logic to help rerenders

* merge

---------

Co-authored-by: Justin <justin.g.kerr@gmail.com>

* Refactor and cleanup

* More cleanup and docs

* docstring to gui_utils

* docstrings, rename viewer_param.py to viewer_elements.py

* Fix viewer, remove bridge stuff

* Render on connect

* Fix lint errors

* More eslint fixes

* render_freq logic

* better rerender logic for crop

* More cleanup

* Purge

* Cleanup

* Lint fixes

* Fix cache

* better parsing logic

* Fix infinite test

* More cleanup

* typo

* Update webdocs

* Update docs

* rerender on custom hooks

* add more docs

* Use shared utilities in `viser.infra`

* rework callback to use elements instead of handles

* Fix ESlint errors

* change naming of handle to element, add setter for value

* cleanup

---------

Co-authored-by: Matt Tancik <mattt4001@gmail.com>
Co-authored-by: Justin <justin.g.kerr@gmail.com>
Co-authored-by: Ethan Weber <eweb0124@gmail.com>
Co-authored-by: Matthew Tancik <tancik@berkeley.edu>
2023-04-14 14:53:10 -07:00
Pablo VelaandEthan Weber 8126d47d8c NeusFacto (#1654)
* add neus_facto method

* fix missing pixsfm from video process

* fix dev errors and small typos

---------

Co-authored-by: Ethan Weber <eweb0124@gmail.com>
2023-04-12 19:08:53 -05:00
Ruilong Li(李瑞龙) fa72a9767a Monitor actual gpu memory allocation (#1715)
monity actual gpu allocation
2023-04-09 20:47:24 -07:00
Alvin Xu 9b99802042 Check port before loading data (#1633)
* Check port before loading data

* Fix formatting
2023-03-22 14:37:35 -07:00
Pablo Vela ddfa463f4d NeuS Implementation (#1444)
* add initial method configs and data manager

* add neus scheduler

* add initial surface model and neus

* add Neus ray sampler

* add sdf field

* move scale/shift calc to math utils

* add debug and fix sdf_dataset typo

* update vscode neus debug

* fix dataset and get initial working version

* add magic number from original repo

* black fixes

* clean up get weights/transmittance from alphas

* clean up typos in sdf datamanager

* type annotations on neus scheduler and remove unused params

* clean up and annotate sdf field along w/ other fixes

* more clean up

* remove unnessary directions norm

* resolve comments

* update neus scheduler to follow refactor

* fix linter errors

* fix some typos

* remove get_weights_from_alpha

* more comment fixes

* more linter error fixes

* clean up and add comments

* more little fixes for types/comments

* more comments

* rename NeuS Scheduler to DelayedScheduler

* rename DelayedScheduler to CosineDecayScheduler
2023-03-12 16:01:18 -04:00
Sacha Lewin 6912e7cde9 Fix crash when having no eval dataset and not using the viewer (#1537)
Fixed crash when no eval imgs on wandb/tensorboard
2023-03-01 15:02:41 -08:00
Matthew Tancik bfaf11cd72 Remove dataparser dependency (#1529) 2023-02-27 18:32:40 -08:00
Jonáš Kulhánek 955497fcb2 Add weight-decay option to RAdam optimizer (#1525) 2023-02-27 09:21:00 -08:00
Saurav Maheshkar 0b87c43d0d feat(engine): improve type hints (#1509)
* feat(engine): improve type hints

* fix: add pylint ignore statement

* fix: order imports as per isort

* fix: update Optimizer setup return type

* feat: add new TORCH_DEVICE type
2023-02-25 16:33:43 -08:00
Matthew Tancik 27eb33f491 Enable viewer with eval (#1474) 2023-02-22 10:21:55 -08:00
Matthew Tancik 0d336a181e Update exponential scheduler (#1468) 2023-02-21 16:09:38 -08:00
Matthew Tancik f3a34bbf95 Refactor schedulers (#1466)
* Refactor schedulers

* lint

* lint
2023-02-21 12:51:51 -08:00
NCJ 92cadf5ce4 Fix Multiple Typos (#1376)
fix multiple typos
2023-02-08 10:33:23 -08:00
Jonáš Kulhánek 6136745d75 Fix ns-train help (#1370) 2023-02-07 09:49:09 -08:00
hturki d547279a92 add option to log training gradients (#1334) 2023-02-02 09:48:45 -08:00
Matthew Tancik db83068fcd Update optimizer docstrings (#1333) 2023-02-01 15:15:08 -08:00