133 Commits

Author SHA1 Message Date
Jeremy Reizenstein
3145dd4d16 version 0.7.2
Summary: version number

Reviewed By: davidsonic

Differential Revision: D42072729

fbshipit-source-id: 50adaac4daca7786479d33e218d15e941a725bb6
2022-12-15 16:15:45 -08:00
Jeremy Reizenstein
6c053a6cea Update notebooks for 0.7.2
Summary: Expect pytorch 1.13

Reviewed By: davidsonic

Differential Revision: D42072731

fbshipit-source-id: 13ba4e7de18060dc4e5c0e10f850f17a88750fc9
2022-12-15 16:15:45 -08:00
Jeremy Reizenstein
3bbe26124a README.md and INSTALL.md updates
Summary: misc updates

Reviewed By: davidsonic

Differential Revision: D42072730

fbshipit-source-id: fc885d14346083bd6493f18e9d965b35a8d4bdfd
2022-12-15 16:15:45 -08:00
Jeremy Reizenstein
c773830b88 fix and pythonify conda build (#1394)
Summary:
Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1394

The bash logic for building conda packages became fiddly to edit. We need to switch cuda-toolkit to pytorch-cuda when PyTorch>=1.12 which was going to be a pain, so here I rewrite the code in python and do it.

Reviewed By: shapovalov

Differential Revision: D42036406

fbshipit-source-id: 8bb80c2f7545477182b23fc97c8514dcafcee176
2022-12-15 03:22:07 -08:00
Jeremy Reizenstein
b7a316232a fix saved glb length
Summary: Make GLB files report their own length correctly. They were off by 28.

Reviewed By: davidsonic

Differential Revision: D41838340

fbshipit-source-id: 9cd66e8337c142298d5ae1d7c27e51fd812d5c7b
2022-12-13 05:34:45 -08:00
generatedunixname89002005307016
de3a474d2b suppress errors in vision/fair/pytorch3d
Differential Revision: D41897914

fbshipit-source-id: 675f4ad6938bc12d295bbb63a69e3ff98b319a9a
2022-12-09 18:50:58 -08:00
Jeremy Reizenstein
a4a29b013b remove python 3.7 builds
Summary: Python 3.7 not needed any more

Reviewed By: shapovalov

Differential Revision: D41841033

fbshipit-source-id: c0cfd048c70e6b9e47224ab8cddcd6b5f4fc5597
2022-12-09 07:31:39 -08:00
Jeremy Reizenstein
e7851f7c79 Mac builds: python 3.10, pytorch 1.13
Summary: All mac builds now pytorch 1.13

Reviewed By: shapovalov

Differential Revision: D41841035

fbshipit-source-id: b932eb2fefed77ae22f9757f9bd628ce12b11fad
2022-12-09 07:31:39 -08:00
Jeremy Reizenstein
20a774e266 builds for PyTorch 1.13.0
Summary: Add builds for current pytorch

Reviewed By: shapovalov

Differential Revision: D41841034

fbshipit-source-id: 4a58515bd5c83b26f14763a3cec9279e905391d2
2022-12-09 07:31:39 -08:00
Jeremy Reizenstein
91b4c04c64 small readme update
Summary: followup D41534315 (5add065f8a)

Reviewed By: shapovalov

Differential Revision: D41842250

fbshipit-source-id: 54413e30880717f083fdc7acbce2eb3e646ffb94
2022-12-08 09:46:09 -08:00
Jiali Duan
cc2840eb44 Write meshes to GLB
Summary: Write the amalgamated mesh from the Mesh module to glb. In this version, the json header and the binary data specified by the buffer are merged into glb. The image texture attributes are added.

Reviewed By: bottler

Differential Revision: D41489778

fbshipit-source-id: 3af0e9a8f9e9098e73737a254177802e0fb6bd3c
2022-12-05 01:25:43 -08:00
David Novotny
dba48fb410 Add tutorial links to main README.md
Summary: <See title>

Reviewed By: bottler

Differential Revision: D41534604

fbshipit-source-id: 20111db87083b2cce7374cc2bd223ae220d7b010
2022-11-30 07:02:01 -08:00
David Novotny
5add065f8a Readme updates
Summary:
Running:
- clearly points users to experiment.py/visualize_reconstruction.py
Reproducing:
- Adds NeRF training on Blender
- Adds CO3Dv2 configs

Reviewed By: bottler

Differential Revision: D41534315

fbshipit-source-id: e85f5f1eafed8c35c9e91d748a04f238509cf8ec
2022-11-30 07:02:01 -08:00
Jeremy Reizenstein
a2c6af9250 more code blocks for readthedocs
Summary: More rst syntax fixes

Reviewed By: davidsonic

Differential Revision: D40977328

fbshipit-source-id: a3a3accbf2ba7cd9c84a0a82d0265010764a9d61
2022-11-29 03:13:40 -08:00
David Novotny
94f321fa3d render_flyaround bugfix
Summary: Fixes a bug which would crash render_flyaround anytime  visualize_preds_keys is adjusted

Reviewed By: shapovalov

Differential Revision: D41124462

fbshipit-source-id: 127045a91a055909f8bd56c8af81afac02c00f60
2022-11-28 04:36:41 -08:00
David Novotny
35f8cb9430 Downgrade "Assigning param_group " msg to DEBUG
Summary: <See title>

Reviewed By: bottler

Differential Revision: D41534524

fbshipit-source-id: 9c39198b9b8d5fc95f857b03ad39bfe0bd720cbb
2022-11-28 02:58:15 -08:00
David Novotny
c3a6ab02da Bug-fix visualize reconstruction
Summary:
Addresses the following issue:
https://github.com/facebookresearch/pytorch3d/issues/1345#issuecomment-1272881244

I.e., when installed from conda, `pytorch3d_implicitron_visualizer` crashes since it invokes `main()` while `main` requires a single positional arg `argv`.

Reviewed By: shapovalov

Differential Revision: D41533497

fbshipit-source-id: e53a923eb8b2f0f9c0e92e9c0866d9cb310c4799
2022-11-25 10:30:01 -08:00
Jeremy Reizenstein
60ab1cdb72 make x_enabled compulsory
Summary: Optional[some_configurable] won't autogenerate the enabled flag

Reviewed By: shapovalov

Differential Revision: D41522104

fbshipit-source-id: 555ff6b343faf6f18aad2f92fbb7c341f5e991c6
2022-11-24 09:38:02 -08:00
Jiali Duan
1706eb8216 Simplify MC C++ hashing logic
Summary: To be consistent with CUDA hashing, the diff replaces boost hasher with a simplified hasher for storing unique global edge_ids.

Reviewed By: kjchalup

Differential Revision: D41140382

fbshipit-source-id: 2ce598e5edcf6369fe13bd15d1f5e014b252027b
2022-11-15 19:42:04 -08:00
Jiali Duan
8b8291830e Marching Cubes cuda extension
Summary:
Torch CUDA extension for Marching Cubes
- MC involving 3 steps:
  - 1st forward pass to collect vertices and occupied state for each voxel
  - Compute compactVoxelArray to skip non-empty voxels
  - 2nd pass to genereate interpolated vertex positions and faces by marching through the grid
- In contrast to existing MC:
   - Bind each interpolated vertex with a global edge_id to address floating-point precision
   - Added deduplication process to remove redundant vertices and faces

Benchmarks (ms):

| N / V(^3)      | python          | C++             |   CUDA   | Speedup |
| 2 / 20          |    12176873  |       24338     |     4363   | 2790x/5x|
| 1 / 100          |     -             |    3070511     |   27126   |    113x    |
| 2 / 100          |     -             |    5968934     |   53129   |    112x    |
| 1 / 256          |     -             |  61278092     | 430900   |    142x    |
| 2 / 256          |     -             |125687930     | 856941   |    146x   |

Reviewed By: kjchalup

Differential Revision: D39644248

fbshipit-source-id: d679c0c79d67b98b235d12296f383d760a00042a
2022-11-15 19:42:04 -08:00
Jeremy Reizenstein
9a0b0c2e74 renderer and vis readthedocs #1363
Summary: Autogenerate docs for the renderer too. This will be helpful but make a slightly ugly TOC

Reviewed By: kjchalup

Differential Revision: D40977315

fbshipit-source-id: 10831de3ced68080cb5671c5dc31d4da8500f761
2022-11-15 14:10:22 -08:00
Daniel L. Lu
d0fbe2cb63 fix typo pucuda.gl --> pycuda.gl (#1379)
Summary:
Every time I try to run code, I get this warning:

```
  warnings.warn("Can't import pucuda.gl, not importing MeshRasterizerOpenGL.")
```

Of course, `pucuda` is a typo of `pycuda`.

This PR fixes the typo

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1379

Reviewed By: kjchalup

Differential Revision: D41295562

Pulled By: bottler

fbshipit-source-id: 2bfa2a2dbe20a5347861d36fbff5094994c1253d
2022-11-15 12:02:44 -08:00
Roman Shapovalov
719c33a7f9 Fix: visualisation with Enums fields in Configurables
Summary:
Enum fields cause the following to crash since they are loaded as strings:
```
config = OmegaConf.load(autodumped_cfg_file)
Experiment(**config)
```

It would be good to come up with the general solution but for now just fixing the visualisation script.

Reviewed By: bottler

Differential Revision: D41140426

fbshipit-source-id: 71c1c6b1fffe3b5ab1ca0114cfa3f0d81160278f
2022-11-08 15:58:41 -08:00
Roman Shapovalov
f3c1e0837c MC rasterize supports heterogeneous bundle; refactoring of bundle-to-padded
Summary:
Rasterize MC was not adapted to heterogeneous bundles.

There are some caveats though:
1) on CO3D, we get up to 18 points per image, which is too few for a reasonable visualisation (see below);
2) rasterising for a batch of 100 is slow.

I also moved the unpacking code close to the bundle to be able to reuse it.

{F789678778}

Reviewed By: bottler, davnov134

Differential Revision: D41008600

fbshipit-source-id: 9f10f1f9f9a174cf8c534b9b9859587d69832b71
2022-11-07 13:43:31 -08:00
Jeremy Reizenstein
7be49bf46f allow dots in param_groups
Summary:
Allow a module's param_group member to specify overrides to the param groups of its members or their members.
Also logging for param group assignments.

This allows defining `params.basis_matrix` in the param_groups of a voxel_grid.

Reviewed By: shapovalov

Differential Revision: D41080667

fbshipit-source-id: 49f3b0e5b36e496f78701db0699cbb8a7e20c51e
2022-11-07 06:41:40 -08:00
Jeremy Reizenstein
a1f2ded58a voxel_grid_implicit_function scaffold fixes
Summary: Fix indexing of directions after filtering of points by scaffold.

Reviewed By: shapovalov

Differential Revision: D40853482

fbshipit-source-id: 9cfdb981e97cb82edcd27632c5848537ed2c6837
2022-11-03 05:46:31 -07:00
David Novotny
e4a3298149 CO3Dv2 multi-category extension
Summary:
Allows loading of multiple categories.
Multiple categories are provided in a comma-separated list of category names.

Reviewed By: bottler, shapovalov

Differential Revision: D40803297

fbshipit-source-id: 863938be3aa6ffefe9e563aede4a2e9e66aeeaa8
2022-11-02 13:55:25 -07:00
Jeremy Reizenstein
c54e048666 more readthedocs
Summary: Quote formats, spelling

Reviewed By: shapovalov

Differential Revision: D40913734

fbshipit-source-id: d6dea65d5204b3c463c656a07ef9b447b7be6a0a
2022-11-02 05:19:15 -07:00
David Novotny
f7ac7b604a readthedocs fixes
Summary: Fixes readthedocs. Sphinx build looks good.

Reviewed By: bottler

Differential Revision: D40893196

fbshipit-source-id: bf00384b921d4ef54e64745ed39172358c2f9bb3
2022-11-01 05:46:13 -07:00
Jeremy Reizenstein
cd113efd98 Add implicitron to readthedocs
Summary: Try to document implicitron. Most of this is autogenerated.

Reviewed By: shapovalov

Differential Revision: D40623742

fbshipit-source-id: 453508277903b7d987b1703656ba1ee09bc2c570
2022-10-31 14:44:41 -07:00
Jeremy Reizenstein
322c8f2f50 make lpips optional
Summary: So that lpips isn't needed in readthedocs

Reviewed By: shapovalov

Differential Revision: D40859351

fbshipit-source-id: 58933bd3b71e78e658fbce56c3663b11ee2331f6
2022-10-31 14:44:41 -07:00
David Novotny
eff0aad15a Bugfix - normalize emitted ray directions after substraction
Summary: The bug lead to non-coinciding origins of the rays emitted from perspective cameras when unit_directions=True

Reviewed By: bottler

Differential Revision: D40865610

fbshipit-source-id: 398598e9e919b53e6bea179f0400e735bbb5b625
2022-10-31 14:00:49 -07:00
David Novotny
bea84a6fcd voxel_grid_if -> remove union type from the settings.
Summary: see title

Reviewed By: shapovalov

Differential Revision: D40803670

fbshipit-source-id: 211189167837af577d6502a698e2f3fb3aec3e30
2022-10-31 11:37:43 -07:00
Roman Shapovalov
f711c4bfe9 Fix parameters not wrapped with nn.Parameter, antialiasing compatibility
Summary: Some things fail if a parameter is not wraped; in particular, it prevented other tensors moving to GPU.

Reviewed By: bottler

Differential Revision: D40819932

fbshipit-source-id: a23b38ceacd7f0dc131cb0355fef1178e3e2f7fd
2022-10-31 01:43:00 -07:00
Jeremy Reizenstein
88620b6847 attempt to fix doc build #1363
Summary: installing from git: is failing

Reviewed By: shapovalov

Differential Revision: D40635668

fbshipit-source-id: 604ba5425e14caeabe4e178bf7f851f2163419bd
2022-10-27 07:26:36 -07:00
generatedunixname89002005307016
db7c80bf76 upgrade pyre version in fbcode/vision - batch 2
Differential Revision: D40695068

fbshipit-source-id: 9944a872d93a9dac348b252a0f8bf9c7e6f929f3
2022-10-25 22:42:06 -07:00
Jeremy Reizenstein
995b60e3b9 version 0.7.1
Summary: update version number

Reviewed By: shapovalov

Differential Revision: D40622583

fbshipit-source-id: 87fa55e1b02fc114f65ee8a5c3d998ba50226ab1
2022-10-23 07:16:40 -07:00
Jeremy Reizenstein
ca58863347 yaml test fix
Summary: Yaml bool case fix

Reviewed By: shapovalov

Differential Revision: D40623031

fbshipit-source-id: 29b2fba171c2cbebfa03834e38b614d07275c997
2022-10-23 07:09:26 -07:00
Jeremy Reizenstein
74754bbf17 voxel_grid_implicit_function
Reviewed By: shapovalov

Differential Revision: D40622304

fbshipit-source-id: 277515a55c46d9b8300058b439526539a7fe00a0
2022-10-23 05:36:34 -07:00
Jeremy Reizenstein
611aba9a20 replicate_last_interval in raymarcher
Summary: Add option to flat pad the last delta. Might to help when training on rgb only.

Reviewed By: shapovalov

Differential Revision: D40587475

fbshipit-source-id: c763fa38948600ea532c730538dc4ff29d2c3e0a
2022-10-23 02:47:09 -07:00
Jeremy Reizenstein
ff933ab82b make visdom optional
Summary: Make Implicitron run without visdom installed.

Reviewed By: shapovalov

Differential Revision: D40587974

fbshipit-source-id: dc319596c7a4d10a4c54c556dabc89ad9d25c2fb
2022-10-22 15:51:22 -07:00
Jiali Duan
46cb5aaaae Omit _check_valid_rotation_matrix by default
Summary:
According to the profiler trace D40326775, _check_valid_rotation_matrix is slow because of aten::all_close operation and _safe_det_3x3 bottlenecks. Disable the check by default unless environment variable PYTORCH3D_CHECK_ROTATION_MATRICES is set to 1.

Comparison after applying the change:
```
Profiling/Function    get_world_to_view (ms)   Transform_points(ms)    specular(ms)
before                12.751                    18.577                  21.384
after                 4.432 (34.7%)             9.248 (49.8%)           11.507 (53.8%)
```

Profiling trace:
https://pxl.cl/2h687
More details in https://docs.google.com/document/d/1kfhEQfpeQToikr5OH9ZssM39CskxWoJ2p8DO5-t6eWk/edit?usp=sharing

Reviewed By: kjchalup

Differential Revision: D40442503

fbshipit-source-id: 954b58de47de235c9d93af441643c22868b547d0
2022-10-20 16:05:22 -07:00
Jeremy Reizenstein
8339cf2610 hydra/OC.structured: don't hide error
Summary: Keep the cause of hydra errors visible in some more cases.

Reviewed By: shapovalov

Differential Revision: D40516202

fbshipit-source-id: 8d214be5cc808a37738add77cc305fe099788546
2022-10-20 03:43:05 -07:00
Jeremy Reizenstein
9535c576e0 test fix for param_groups
Summary: param_groups only expected on MLPDecoder, not ElementwiseDecoder

Reviewed By: shapovalov

Differential Revision: D40508539

fbshipit-source-id: ea040ad6f7e26bd7d87e5de2eaadae2cf4b04faf
2022-10-19 04:08:30 -07:00
Jeremy Reizenstein
fe5bdb2fb5 different learning rate for different parts
Summary:
Adds the ability to have different learning rates for different parts of the model. The trainable parts of the implicitron have a new member

       param_groups: dictionary where keys are names of individual parameters,
            or module’s members and values are the parameter group where the
            parameter/member will be sorted to. "self" key is used to denote the
            parameter group at the module level. Possible keys, including the "self" key
            do not have to be defined. By default all parameters are put into "default"
            parameter group and have the learning rate defined in the optimizer,
            it can be overriden at the:
                - module level with “self” key, all the parameters and child
                    module s parameters will be put to that parameter group
                - member level, which is the same as if the `param_groups` in that
                    member has key=“self” and value equal to that parameter group.
                    This is useful if members do not have `param_groups`, for
                    example torch.nn.Linear.
                - parameter level, parameter with the same name as the key
                    will be put to that parameter group.

And in the optimizer factory, parameters and their learning rates are recursively gathered.

Reviewed By: shapovalov

Differential Revision: D40145802

fbshipit-source-id: 631c02b8d79ee1c0eb4c31e6e42dbd3d2882078a
2022-10-18 15:58:18 -07:00
Jeremy Reizenstein
a819ecb00b MLP last layer config
Summary:
Added initialization configuration for the last layer of the MLP decoding function. You can now set:
- last activation function (tensorf uses sigmoid)
- last bias init (tensorf uses 0, because of sigmoid ofc)
- option to use xavier initialization (we use relu so this should not be set)

Reviewed By: davnov134

Differential Revision: D40304981

fbshipit-source-id: ec398eb2235164ae85cb7c09b9660e843490ea04
2022-10-18 15:58:18 -07:00
Ji Hou
a2659e1730 Update iou3d.md (#1351)
Summary:
fix a typo

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1351

Reviewed By: shapovalov

Differential Revision: D40209834

Pulled By: bottler

fbshipit-source-id: 118133e0eab2df211e5c4f04371f2c695a9ceced
2022-10-15 21:41:02 -07:00
Jeremy Reizenstein
3b3306f9b4 suppress ffmpeg output
Summary: Restore the suppression of ffmpeg output.

Reviewed By: shapovalov

Differential Revision: D40296595

fbshipit-source-id: 41b2c14b6f6245f77e0ef6cc94fa7b41fbb83e33
2022-10-13 14:56:09 -07:00
Jeremy Reizenstein
f13086779d avoid torch.range
Summary: Avoid unintended use of torch.range.

Reviewed By: kjchalup

Differential Revision: D40341396

fbshipit-source-id: 108295983afdec0ca9e43178fef9c65695150bc1
2022-10-13 14:37:46 -07:00
Jeremy Reizenstein
4d9215b3b4 fix to get_default_args(instance)
Summary:
Small config system fix. Allows get_default_args to work on an instance which has been created with a dict (instead of a DictConfig) as an args field. E.g.

```
gm = GenericModel(
        raysampler_AdaptiveRaySampler_args={"scene_extent": 4.0}
    )
    OmegaConf.structured(gm1)
```

Reviewed By: shapovalov

Differential Revision: D40341047

fbshipit-source-id: 587d0e8262e271df442a80858949a48e5d6db3df
2022-10-13 06:05:07 -07:00
Darijan Gudelj
76cddd90be Elementwise decoder
Summary: Tensorf does relu or softmax after the density grid. This diff adds the ability to replicate that.

Reviewed By: bottler

Differential Revision: D40023228

fbshipit-source-id: 9f19868cd68460af98ab6e61c7f708158c26dc08
2022-10-13 05:59:22 -07:00
Jeremy Reizenstein
a607dd063e better implicit function #channels errors
Summary: More helpful errors when the output channels aren't 1 for density and 3 for color

Reviewed By: shapovalov

Differential Revision: D40341088

fbshipit-source-id: 6074bf7fefe11c8e60fee4db2760b776419bcfee
2022-10-13 05:43:36 -07:00
Krzysztof Chalupka
17bc043a0c Remove structured binding
Summary: Couldn't build p3d on devfair because C++17 is unsupported. Two structured bindings sneaked in.

Reviewed By: bottler

Differential Revision: D40280967

fbshipit-source-id: 9627f3f9f76247a6cefbeac067fdead67c6f4e14
2022-10-12 10:34:21 -07:00
Darijan Gudelj
f55d37f07d volume cropping
Summary:
TensoRF at step 2000 does volume croping and resizing.
At those steps it calculates part of the voxel grid which has density big enough to have objects and resizes the grid to fit that object.
Change is done on 3 levels:
- implicit function subscribes to epochs and at specific epochs finds the bounding box of the object and calls resizing of the color and density voxel grids to fit it
- VoxelGrid module calls cropping of the underlaying voxel grid and resizing to fit previous size it also adjusts its extends and translation to match wanted size
- Each voxel grid has its own way of cropping the underlaying data

Reviewed By: kjchalup

Differential Revision: D39854548

fbshipit-source-id: 5435b6e599aef1eaab980f5421d3369ee4829c50
2022-10-12 08:31:51 -07:00
Jeremy Reizenstein
0b5def5257 avoid numpy warning in split
Summary:
avoid creating a numpy array of random things just to split it: this can now generate a warning e.g. if the list contains lists of varying lengths. There might also be a performance win here, and we could do more of the same if we care about that.

(The vanilla way to avoid the new warning is to replace `np.split(a,` with `np.split(np.array(a, dtype=object), ` btw.)

Reviewed By: shapovalov

Differential Revision: D40209308

fbshipit-source-id: daae33a23ceb444e8e7241f72ce1525593e2f239
2022-10-11 14:49:51 -07:00
Darijan Gudelj
56d3465b09 scaffold
Summary: Forward method is sped up using the scaffold, a low resolution voxel grid which is used to filter out the points in empty space. These points will be predicted as having 0 density and (0, 0, 0) color. The points which were not evaluated as empty space will be passed through the steps outlined above.

Reviewed By: kjchalup

Differential Revision: D39579671

fbshipit-source-id: 8eab8bb43ef77c2a73557efdb725e99a6c60d415
2022-10-10 11:01:00 -07:00
Jeremy Reizenstein
95a2acf763 Co3Dv2 point cloud fix
Summary: Avoid certain hardcoded paths in co3dv2 data

Reviewed By: davnov134

Differential Revision: D40209309

fbshipit-source-id: 0e83a15baa47d5bd07d2d23c6048cb4522c1ccba
2022-10-09 05:06:49 -07:00
Jiali Duan
9df875bb5e Fix Circleci build failure: Add != operator for Marching Cubes Vertex struct
Summary: Fix Circleci error: https://app.circleci.com/pipelines/github/facebookresearch/pytorch3d/1066/workflows/94df137b-4882-4959-8fe4-738af447db23/jobs/56560.

Reviewed By: kjchalup

Differential Revision: D40185409

fbshipit-source-id: 7121b0cae66bd60f718df2a5d9ef5d2ac3bc658c
2022-10-07 12:14:24 -07:00
David Novotny
73ba66e4ab Bugfix in reduction feature aggr.
Summary: Bugfix

Reviewed By: bottler

Differential Revision: D40146840

fbshipit-source-id: a8415c361ed3cd939999b87311aff4d3bb1bcfe1
2022-10-07 01:45:24 -07:00
Kyle Hundman
4c8338b00f Improve memory efficiency in VolumeSampler
Summary: Avoids use of `torch.cat` operation when rendering a volume by instead issuing multiple calls to `torch.nn.functional.grid_sample`. Density and color tensors can be large.

Reviewed By: bottler

Differential Revision: D40072399

fbshipit-source-id: eb4cd34f6171d54972bbf2877065f973db497de0
2022-10-06 12:10:26 -07:00
Jiali Duan
0d8608b9f9 Marching Cubes C++ torch extension
Summary:
Torch C++ extension for Marching Cubes

- Add torch C++ extension for marching cubes. Observe a speed up of ~255x-324x speed up (over varying batch sizes and spatial resolutions)

- Add C++ impl in existing unit-tests.

(Note: this ignores all push blocking failures!)

Reviewed By: kjchalup

Differential Revision: D39590638

fbshipit-source-id: e44d2852a24c2c398e5ea9db20f0dfaa1817e457
2022-10-06 11:13:53 -07:00
Jiali Duan
850efdf706 Python marching cubes improvements
Summary: Overhaul of marching_cubes_naive for better performance and to avoid relying on unstable hashing. In particular, instead of hashing vertex positions, we index each interpolated vertex with its corresponding edge in the 3d grid.

Reviewed By: kjchalup

Differential Revision: D39419642

fbshipit-source-id: b5fede3525c545d1d374198928dfb216262f0ec0
2022-10-06 11:08:49 -07:00
Gavin Peng
6471893f59 Multithread CPU naive mesh rasterization
Summary:
Threaded the for loop:
```
for (int yi = 0; yi < H; ++yi) {...}
```
in function `RasterizeMeshesNaiveCpu()`.
Chunk size is approx equal.

Reviewed By: bottler

Differential Revision: D40063604

fbshipit-source-id: 09150269405538119b0f1b029892179501421e68
2022-10-06 06:42:58 -07:00
Darijan Gudelj
37bd280d19 load whole dataset in train loop
Summary: Loads the whole dataset and moves it to the device and sends it to for sampling to enable full dataset heterogeneous raysampling.

Reviewed By: bottler

Differential Revision: D39263009

fbshipit-source-id: c527537dfc5f50116849656c9e171e868f6845b1
2022-10-03 08:36:47 -07:00
Darijan Gudelj
c311a4cbb9 Enable mixed frame raysampling
Summary:
Changed ray_sampler and metrics to be able to use mixed frame raysampling.

Ray_sampler now has a new member which it passes to the pytorch3d raysampler.
If the raybundle is heterogeneous metrics now samples images by padding xys first. This reduces memory consumption.

Reviewed By: bottler, kjchalup

Differential Revision: D39542221

fbshipit-source-id: a6fec23838d3049ae5c2fd2e1f641c46c7c927e3
2022-10-03 08:36:47 -07:00
Darijan Gudelj
ad8907d373 ImplicitronRayBundle
Summary: new implicitronRayBundle with added cameraIDs and camera counts. Added to enable a single raybundle inside Implicitron and easier extension in the future. Since RayBundle is named tuple and RayBundleHeterogeneous is dataclass and RayBundleHeterogeneous cannot inherit RayBundle. So if there was no ImplicitronRayBundle every function that uses RayBundle now would have to use Union[RayBundle, RaybundleHeterogeneous] which is confusing and unecessary complicated.

Reviewed By: bottler, kjchalup

Differential Revision: D39262999

fbshipit-source-id: ece160e32f6c88c3977e408e966789bf8307af59
2022-10-03 08:36:47 -07:00
Darijan Gudelj
6ae863f301 Heterogeneous raysampling -> RayBundleHeterogeneous
Summary:
Added heterogeneous raysampling to pytorch3d raysampler, different cameras are sampled different number of times.

 It now returns RayBundle if heterogeneous raysampling is off and new RayBundleHeterogeneous (with added fields `camera_ids` and `camera_counts`).  Heterogeneous raysampling is on if `n_rays_total` is not None.

Reviewed By: bottler

Differential Revision: D39542222

fbshipit-source-id: d3d88d822ec7696e856007c088dc36a1cfa8c625
2022-09-30 04:03:01 -07:00
Roman Shapovalov
9a0f9ae572 Extending the API of Transform3d with SE(3) log
Summary:
This is quite a thin wrapper – not sure we need it. The motivation is that `Transform3d` is not as matrix-centric now, it can be converted to SE(3) logarithm equally easily.

It simplifies things like averaging cameras and getting axis-angle of camera rotation (previously, one would need to call `se3_log_map(cameras.get_world_to_camera_transform().get_matrix())`), now one fewer thing to call / discover.

Reviewed By: bottler

Differential Revision: D39928000

fbshipit-source-id: 85248d5b8af136618f1d08791af5297ea5179d19
2022-09-29 11:56:14 -07:00
Roman Shapovalov
74bbd6fd76 Fix returning a proper rotation in levelling; supporting batches and default centroid
Summary:
`get_rotation_to_best_fit_xy` is useful to expose externally, however there was a bug (which we probably did not care about for our use case): it could return a rotation matrix with det(R) == −1.
The diff fixes that, and also makes centroid optional (it can be computed from points).

Reviewed By: bottler

Differential Revision: D39926791

fbshipit-source-id: 5120c7892815b829f3ddcc23e93d4a5ec0ca0013
2022-09-29 11:56:14 -07:00
generatedunixname89002005307016
de98c9cc2f upgrade pyre version in fbcode/vision - batch 2
Differential Revision: D39894833

fbshipit-source-id: 95a32d9cb352c5fea345c6947194ad52971d4fe9
2022-09-28 20:07:00 -07:00
Darijan Gudelj
5005f09118 Add rescaling to voxel grids
Summary: Any module can be subscribed to step updates from the training loop. Once the training loop publishes a step the voxel grid changes its dimensions. During the construction of VoxelGridModule and its parameters it does not know which is the resolution that will be loaded from checkpoint, so before the checkpoint loading a hook runs which changes the VoxelGridModule's parameters to match shapes of the loaded checkpoint.

Reviewed By: bottler

Differential Revision: D39026775

fbshipit-source-id: 0d359ea5c8d2eda11d773d79c7513c83585d5f17
2022-09-28 05:23:22 -07:00
Jeremy Reizenstein
efea540bbc Fix camera clone() with torch.save
Summary:
User reported that cloned cameras fail to save. The error with latest PyTorch is

```
pickle.PicklingError: Can't pickle ~T_destination: attribute lookup T_destination on torch.nn.modules.module failed
```

This fixes it.

Reviewed By: btgraham

Differential Revision: D39692258

fbshipit-source-id: 75bbf3b8dfa0023dc28bf7d4cc253ca96e46a64d
2022-09-22 14:52:09 -07:00
Michaël Ramamonjisoa
ce3fce49d7 Adding a Checkerboard mesh utility to Pytorch3d
Summary: Adding a checkerboard mesh utility to Pytorch3d.

Reviewed By: bottler

Differential Revision: D39718916

fbshipit-source-id: d43cd30e566b5db068bae6eed0388057634428c8
2022-09-22 12:51:37 -07:00
Darijan Gudelj
f34da3d3b6 packed_to_padded now accepts all sizes
Summary:
We need to make packing/unpacking in 2 places for mixed frame raysampling (metrics and raysampler) but those tensors that need to be unpacked/packed have more than two dimensions.
I could have reshaped and stored dimensions but this seems to just complicate code there with something which packed_to_padded should support.
I could have made a separate function for implicitron but it would confusing to have two different padded_to_packed functions inside pytorch3d codebase one of which does packing for (b, max) and (b, max, f) and the other for (b, max, …)

Reviewed By: bottler

Differential Revision: D39729026

fbshipit-source-id: 2bdebf290dcc6c316b7fe1aeee49bbb5255e508c
2022-09-22 11:27:43 -07:00
Darijan Gudelj
c2d876c9e8 voxel grid implicit function
Summary: The implicit function and its members and internal working

Reviewed By: kjchalup

Differential Revision: D38829764

fbshipit-source-id: 28394fe7819e311ed52c9defc9a1b29f37fbc495
2022-09-22 10:56:00 -07:00
Jeremy Reizenstein
d6a197be36 make expand_args_fields optional
Summary: Call expand_args_field when instantiating an object.

Reviewed By: shapovalov

Differential Revision: D39541931

fbshipit-source-id: de8e1038927ff0112463394412d5d8c26c4a1e17
2022-09-22 08:36:09 -07:00
Jeremy Reizenstein
209c160a20 foreach optimizers
Summary: Allow using the new `foreach` option on optimizers.

Reviewed By: shapovalov

Differential Revision: D39694843

fbshipit-source-id: 97109c245b669bc6edff0f246893f95b7ae71f90
2022-09-22 05:11:56 -07:00
Darijan Gudelj
db3c12abfb arbitrary shape input to voxel_grids
Summary: Add the ability to process arbitrary point shapes `[n_grids, ..., 3]` instead of  only `[n_grids, n_points, 3]`.

Reviewed By: bottler

Differential Revision: D39574373

fbshipit-source-id: 0a9ecafe9ea58cd8f909644de43a1185ecf934f4
2022-09-22 03:35:11 -07:00
Michaël Ramamonjisoa
6ae6ff9cf7 include TexturesUV in IO.save_mesh(x.obj)
Summary:
Added export of UV textures to IO.save_mesh in Pytorch3d
MeshObjFormat now passes verts_uv, faces_uv, and texture_map as input to save_obj

TODO: check if TexturesUV.verts_uv_list or TexturesUV.verts_uv_padded() should be passed to save_obj

IO.save_mesh(obj_file, meshes, decimal_places=2) should be IO().save_mesh(obj_file, meshes, decimal_places=2)

Reviewed By: bottler

Differential Revision: D39617441

fbshipit-source-id: 4628b7f26f70e38c65f235852b990c8edb0ded23
2022-09-21 06:16:48 -07:00
Jeremy Reizenstein
305cf32f6b Avoid raysampler dict
Summary:
A significant speedup (e.g. >2% of a forward pass).

Move NDCMultinomialRaysampler parts of AbstractMaskRaySampler to members instead of living in a dict. The dict was hiding them from the nn.Module system so their _xy_grid members were remaining on the CPU. Therefore they were being copied to the GPU in every forward pass.

(We couldn't easily use a ModuleDict here because the enum keys are not strs.)

Reviewed By: shapovalov

Differential Revision: D39668589

fbshipit-source-id: 719b88e4a08fd7263a284e0ab38189e666bd7e3a
2022-09-21 04:29:44 -07:00
Jeremy Reizenstein
da7fe2854e small fixes to config
Summary:
- indicate location of OmegaConf.structured failures
- split the data gathering from enable_get_default_args to ease experimenting with it.
- comment fixes.
- nicer error when a_class_type has weird type.

Reviewed By: kjchalup

Differential Revision: D39434447

fbshipit-source-id: b80c7941547ca450e848038ef5be95b7ebbe8f3e
2022-09-15 03:03:52 -07:00
Jeremy Reizenstein
cb7bd33e7f validate lengths in chamfer and farthest_points
Summary: Fixes #1326

Reviewed By: kjchalup

Differential Revision: D39259697

fbshipit-source-id: 51392f4cc4a956165a62901cb115fcefe0e17277
2022-09-08 15:03:36 -07:00
Jeremy Reizenstein
6e25fe8cb3 visualize_reconstruction fixes
Summary: Various fixes to get visualize_reconstruction running, and an interactive test for it.

Reviewed By: kjchalup

Differential Revision: D39286691

fbshipit-source-id: 88735034cc01736b24735bcb024577e6ab7ed336
2022-09-07 20:10:07 -07:00
Jeremy Reizenstein
34ad77b841 trainer test completion
Summary: allow TESTIT to complete properly

Reviewed By: kjchalup

Differential Revision: D39280546

fbshipit-source-id: 38fe69988a736e32dbe78d1d05e6d8421353854a
2022-09-07 14:21:15 -07:00
Jeremy Reizenstein
90b758f725 hydra fix
Summary: Workaround for oddity with new hydra.

Reviewed By: davnov134

Differential Revision: D39280639

fbshipit-source-id: 76e91947f633589945446db93cf2dbc259642f8a
2022-09-07 03:25:39 -07:00
Jeremy Reizenstein
df36223ddf raysampling stratified_sampling doc
Summary: Followup to D39259775 (438c194ec6)

Reviewed By: davnov134

Differential Revision: D39271753

fbshipit-source-id: 5cf11c1210369e1762ef0d5d0c7b60336711b261
2022-09-06 10:28:45 -07:00
David Novotny
73ea4187de SimpleDataLoaderMapProvider sample batches without replacement if num_samples is not specified
Summary: Samples batches without replacement if the number of samples is not specified. This makes sure that we always iterate over the whole dataset in each epoch.

Reviewed By: bottler

Differential Revision: D39270786

fbshipit-source-id: 0c983d1f5e0af711463abfb23939bc0d2b5172a0
2022-09-06 05:59:01 -07:00
David Novotny
f6d43eaa62 Bugfixes in render_flyaround
Summary: Fixes bugs in render_flyaround

Reviewed By: bottler

Differential Revision: D39271932

fbshipit-source-id: 07e6c9ee07ba91feb437b725af0a8942fd98db0b
2022-09-06 05:45:31 -07:00
David Novotny
c79c954dea Rename and move render_flyaround into core implicitron
Summary:
Move the flyaround rendering function into core implicitron.
The unblocks an example in the facebookresearch/co3d repo.

Reviewed By: bottler

Differential Revision: D39257801

fbshipit-source-id: 6841a88a43d4aa364dd86ba83ca2d4c3cf0435a4
2022-09-06 03:03:08 -07:00
Matthias Treder
438c194ec6 stratified_sampling argument: set default to None (#1324)
Summary:
The self._stratified_sampling attribute is always overridden unless stratified_sampling is explicitly set to None. However, the desired default behavior is that the value of self._stratified_sampling is used unless the argument stratified_sampling is set to True/False. Changing the default to None achieves this

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1324

Reviewed By: bottler

Differential Revision: D39259775

Pulled By: davnov134

fbshipit-source-id: e01bb747ac80c812eb27bf22e67f5e14f29acadd
2022-09-05 11:16:25 -07:00
Darijan Gudelj
dd58ded73d stats object counting time wrong
Summary: On each call of the stats.update the object calculates current average iteration time by getting time elapsed from the time_start and then dividing it by the current number of steps. It saves the result to AverageMeter object which when queried returns the average of things saved, so the time is averaged twice which biases it towards the start value (which is often larger).

Reviewed By: kjchalup

Differential Revision: D39206989

fbshipit-source-id: ccab5233d7aaca1ac4fd626fb329b83c7c0d6af9
2022-09-05 06:27:37 -07:00
Darijan Gudelj
72c3a0ebe5 raybundle input to ImplicitFunctions -> api unification
Summary: Currently some implicit functions in implicitron take a raybundle, others take ray_points_world. raybundle is what they really need. However, the raybundle is going to become a bit more flexible later, as it will contain different numbers of rays for each camera.

Reviewed By: bottler

Differential Revision: D39173751

fbshipit-source-id: ebc038e426d22e831e67a18ba64655d8a61e1eb9
2022-09-05 06:26:06 -07:00
Pyre Bot Jr
70dc9c451a suppress errors in vision/fair/pytorch3d
Reviewed By: stroxler

Differential Revision: D39230408

fbshipit-source-id: dce7a461507ee7199f588341773096c06051b2dc
2022-09-03 09:22:49 -07:00
Jiali Duan
8a96770dc2 Update the docstring for try_get_projection_transform
Summary: Update the docstring for try_get_projection_transform on the API design.

Reviewed By: kjchalup

Differential Revision: D39227333

fbshipit-source-id: c9d0e625735d4972116d1f71865fb9b763e684de
2022-09-02 13:44:08 -07:00
Jiali Duan
84fa966643 Fix the typing for a Camera helper function
Summary: Fixed the typing for try_get_projection_transform.

Reviewed By: kjchalup

Differential Revision: D39211811

fbshipit-source-id: ef05c6b545831d1a9f3c754aeb02fb9776e360ed
2022-09-01 12:37:02 -07:00
Pyre Bot Jr
c80e5fd07a suppress errors in vision/fair/pytorch3d
Reviewed By: kjchalup

Differential Revision: D39198333

fbshipit-source-id: 3f4ebcf625215f21d165073837578ff69b05f72d
2022-09-01 11:46:55 -07:00
Jiali Duan
d19e6243d0 Update Rasterizer and add end2end fisheye integration test
Summary:
1) Update rasterizer/point rasterizer to accommodate fisheyecamera. Specifically, transform_points is in placement of explicit transform compositions.

2) In rasterizer unittests, update corresponding tests for rasterizer and point_rasterizer. Address comments to test fisheye against perspective camera when distortions are turned off.

3) Address comments to add end2end test for fisheyecameras. In test_render_meshes, fisheyecameras are added to camera enuerations whenever possible.

4) Test renderings with fisheyecameras of different params on cow mesh.

5) Use compositions for linear cameras whenever possible.

Reviewed By: kjchalup

Differential Revision: D38932736

fbshipit-source-id: 5b7074fc001f2390f4cf43c7267a8b37fd987547
2022-08-31 16:50:41 -07:00
Jiali Duan
b0515e1461 Amend D38407094: Fisheye Camera for PyTorch3D
Summary:
Amend FisheyeCamera by adding tests for all
combination of params and for different batch_sizes.

Reviewed By: kjchalup

Differential Revision: D39176747

fbshipit-source-id: 830d30da24beeb2f0df52db0b17a4303ed53b59c
2022-08-31 13:50:50 -07:00
Chris Lambert
d4a1051e0f Remove pytorch3d's wrappers for eigh, solve, lstsq, qr
Summary: Remove the compat functions eigh, solve, lstsq, and qr. Migrate callers to use torch.linalg directly.

Reviewed By: bottler

Differential Revision: D39172949

fbshipit-source-id: 484230a553237808f06ee5cdfde64651cba91c4c
2022-08-31 13:04:07 -07:00
Jeremy Reizenstein
9a1213e0e5 test order fix
Summary: A dummy value in test_opengl_utils seems to be able to break tests in test_mesh_renderer_opengl{,_to}.

Reviewed By: kjchalup

Differential Revision: D39173275

fbshipit-source-id: 83b15159f70135ea575d5085c7b6b37badd6e49e
2022-08-31 11:47:51 -07:00
Krzysztof Chalupka
95771985b7 Make PyTorch3D C++17 incompatible again :(
Summary: D38919607 (c4545a7cbc) and D38858887 (06cbba2628) were premature, turns out CUDA 10.2 doesn't support C++17.

Reviewed By: bottler

Differential Revision: D39156205

fbshipit-source-id: 5e2e84cc4a57d1113a915166631651d438540d56
2022-08-31 02:38:31 -07:00
Sergii Dymchenko
1530a66469 Update deprecated torch.symeig in vision/fair/pytorch3d/projects/nerf/nerf/eval_video_utils.py
Summary:
torch.symeig is deprecated for a long time and is being removed by https://github.com/pytorch/pytorch/pull/70988.

Created from CodeHub with https://fburl.com/edit-in-codehub

Reviewed By: bottler

Differential Revision: D39153103

fbshipit-source-id: 3a1397b6d86fb3e45e4777e06a4da3ee76591b32
2022-08-30 17:15:11 -07:00
David Novotny
1163eaab43 CO3Dv2 trainer configs
Summary:
Adds yaml configs to train selected methods on CO3Dv2.

Few more updates:
1) moved some fields to base classes so that we can check is_multisequence in experiment.py
2) skip loading all train cameras for multisequence datasets, without this, co3d-fewview is untrainable
3) fix bug in json index dataset provider v2

Reviewed By: kjchalup

Differential Revision: D38952755

fbshipit-source-id: 3edac6fc8e20775aa70400bd73a0e6d52b091e0c
2022-08-30 13:42:19 -07:00
Jiali Duan
03562d87f5 Benchmark Cameras
Summary: Address comments to add benchmarkings for cameras and the new fisheye cameras. The dependency functions in test_cameras have been updated in Diff 1. The following two snapshots show benchmarking results.

Reviewed By: kjchalup

Differential Revision: D38991914

fbshipit-source-id: 51fe9bb7237543e4ee112c9f5068a4cf12a9d482
2022-08-28 11:43:46 -07:00
Jiali Duan
2283c292a9 Fisheye Camera for PyTorch3D
Summary:
1. A Fisheye camera model that generalizes pinhole camera by considering distortions (i.e. radial, tangential and thin-prism distortions).

2. Added tests against perspective cameras when distortions are off and Aria data points when distortions are on.

3. Address comments to test unhandled shapes between points and transforms. Added tests for __FIELDS, shape broadcasts, cuda etc.

4. Address earlier comments for code efficiency (e.g., adopted torch.norm; torch.solve for matrix inverse; removed inplace operations; unnecessary clone; expand in place of repeat etc).

Reviewed By: jcjohnson

Differential Revision: D38407094

fbshipit-source-id: a3ab48c85c496ac87af692d5d461bb3fc2a2db13
2022-08-28 11:17:20 -07:00
Darijan Gudelj
4711d12a09 MultiPassEmissionAbsorptionRenderer
Summary: I think there is a typo here could not find any MultiPassEARenderer just MultiPassEmissionAbsorptionRenderer?

Reviewed By: bottler

Differential Revision: D39056641

fbshipit-source-id: 4dd0b123fc795a0083a957786c032e23dc5abac9
2022-08-26 09:23:49 -07:00
Darijan Gudelj
e7c609f198 Decoding functions
Summary: Added replacable decoding functions which will be applied after the voxel grid to get color and density

Reviewed By: bottler

Differential Revision: D38829763

fbshipit-source-id: f21ce206c1c19548206ea2ce97d7ebea3de30a23
2022-08-26 08:47:30 -07:00
Darijan Gudelj
24f5f4a3e7 VoxelGridModule
Summary: Simple wrapper around voxel grids to make them a module

Reviewed By: bottler

Differential Revision: D38829762

fbshipit-source-id: dfee85088fa3c65e396cc7d3bf7ebaaffaadb646
2022-08-25 09:40:43 -07:00
Krzysztof Chalupka
6653f4400b Fix up docstrings
Summary:
One of the docstrings is a disaster see https://pytorch3d.readthedocs.io/en/latest/modules/ops.html

Also some minor fixes I encountered when browsing the code

Reviewed By: bottler

Differential Revision: D38581595

fbshipit-source-id: 3b6ca97788af380a44df9144a6a4cac782c6eab8
2022-08-23 14:58:49 -07:00
Krzysztof Chalupka
c4545a7cbc Add structured bindings to iou to prove that we're C++17-friendly. Also other minor improvements to bbox iou
Summary: Recently we removed C++14-only compilation, should work.

Reviewed By: bottler

Differential Revision: D38919607

fbshipit-source-id: 6a26fa7713f7ba2163364ccc673ad774aa3a5adb
2022-08-23 13:35:21 -07:00
Jeremy Reizenstein
5e7707b157 Update SMPL url
Summary: Fix issue #1306

Reviewed By: kjchalup

Differential Revision: D38941342

fbshipit-source-id: 306ea698ab6af22b874df6e2abdaa9021b65e1ef
2022-08-23 13:19:18 -07:00
Krzysztof Chalupka
a65928dcb9 Remove spurious compute in _compute_vertex_normals
Summary: https://github.com/facebookresearch/pytorch3d/issues/736

Reviewed By: bottler

Differential Revision: D38881935

fbshipit-source-id: 62aa3575513ab752a5afda4a257a985032bc7f6d
2022-08-23 10:08:14 -07:00
Darijan Gudelj
898ba5c53b Moved MLP and Transformer
Summary: Moved the MLP and transformer from nerf to a new file to be reused.

Reviewed By: bottler

Differential Revision: D38828150

fbshipit-source-id: 8ff77b18b3aeeda398d90758a7bcb2482edce66f
2022-08-23 07:22:41 -07:00
Darijan Gudelj
edee25a1e5 voxel grids with interpolation
Summary: Added voxel grid classes from TensoRF, both in their factorized (CP and VM) and full form.

Reviewed By: bottler

Differential Revision: D38465419

fbshipit-source-id: 8b306338af58dc50ef47a682616022a0512c0047
2022-08-23 07:22:41 -07:00
Jeremy Reizenstein
af799facdd silence stalebot
Summary: Stop stale workflow

Reviewed By: kjchalup

Differential Revision: D38858730

fbshipit-source-id: 25a5c00a0295739bac841ca6f0d5ff8230e689d0
2022-08-23 06:57:54 -07:00
Georgia Gkioxari
1bfe6bf20a eps fix for iou3d
Summary: Fix EPS issue that causes numerical instabilities when boxes are very close

Reviewed By: kjchalup

Differential Revision: D38661465

fbshipit-source-id: d2b6753cba9dc2f0072ace5289c9aa815a1a29f6
2022-08-22 04:26:19 -07:00
Jeremy Reizenstein
06cbba2628 Don't force C++14
Summary: Remove compiler arguments which insist on C++14.

Reviewed By: kjchalup

Differential Revision: D38858887

fbshipit-source-id: 542173ec97cacfa724d14c8a4b9ce9dc2457c5d5
2022-08-21 12:10:51 -07:00
Jeremy Reizenstein
7ce31b4e0f updates to CONTRIBUTING
Summary: Fix outdated info

Reviewed By: kjchalup

Differential Revision: D38858766

fbshipit-source-id: 52b120f355e8f9e86d777875627af02c80ee45b6
2022-08-21 11:51:46 -07:00
Max Wasylow
8ea4da2938 Replacing custom CUDA block reductions with CUB in sample_farthest_points
Summary: Removing hardcoded block reduction operation from `sample_farthest_points.cu` code, and replace it with `cub::BlockReduce` reducing complexity of the code, and letting established libraries do the thinking for us.

Reviewed By: bottler

Differential Revision: D38617147

fbshipit-source-id: b230029c55f05cda0aab1648d3105a8d3e92d27b
2022-08-19 09:17:19 -07:00
David Novotny
597bc7c7f6 Blender config fixes
Summary: Fixes the blender synthetic configs.

Reviewed By: kjchalup

Differential Revision: D38786095

fbshipit-source-id: 6d0784ced41a3f2904f074221108cdb56bd20e7f
2022-08-19 06:03:34 -07:00
Darijan Gudelj
f825f7e42c Split Volumes class to data and location part
Summary: Split Volumes class to data and location part so that location part can be reused in planned VoxelGrid classes.

Reviewed By: bottler

Differential Revision: D38782015

fbshipit-source-id: 489da09c5c236f3b81961ce9b09edbd97afaa7c8
2022-08-18 08:12:33 -07:00
Jeremy Reizenstein
fdaaa299a7 remove stray "generic_model_args" references
Summary:
generic_model_args no longer exists. Update some references to it, mostly in doc.

This fixes the testing of all the yaml files in test_forward pass.

Reviewed By: shapovalov

Differential Revision: D38789202

fbshipit-source-id: f11417efe772d7f86368b3598aa66c52b1309dbf
2022-08-18 07:18:55 -07:00
Jeremy Reizenstein
d42e0d3d86 1GPU for implicitron tests
Reviewed By: shapovalov

Differential Revision: D38794764

fbshipit-source-id: 140c8a935d760bab8569d903cc52ac3dd73cd553
2022-08-18 03:23:21 -07:00
Christoph Lassner
7623457686 Removing LOGGER.debug statements for performance gain. (#1260)
Summary:
We identified that these logging statements can deteriorate performance in certain cases. I propose removing them from the regular renderer implementation and letting individuals re-insert debug logging wherever needed on a case-by-case basis.

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1260

Reviewed By: kjchalup

Differential Revision: D38737439

Pulled By: bottler

fbshipit-source-id: cf9dcbbeae4dbf214c2e17d5bafa00b2ff796393
2022-08-17 12:22:05 -07:00
Roman Shapovalov
d281f8efd1 Filtering outlier input cameras in trajectory estimation
Summary: Useful for visualising colmap output where some frames are not correctly registered.

Reviewed By: bottler

Differential Revision: D38743191

fbshipit-source-id: e823df2997870dc41d76784e112d4349f904d311
2022-08-17 03:47:31 -07:00
Roman Shapovalov
b7c826b786 Boolean indexing of cameras
Summary: Reasonable to expect bool indexing.

Reviewed By: bottler, kjchalup

Differential Revision: D38741446

fbshipit-source-id: 22b607bf13110043c5624196c66ca1484fdbce6c
2022-08-16 15:19:39 -07:00
Ashish Sinha
60808972b8 typo fix (#1293)
Summary:
fixes typo of the docstring.

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1293

Differential Revision: D38737416

Pulled By: bottler

fbshipit-source-id: 3f9da3e97b55c2acd858263de9e85eaee272a98f
2022-08-16 06:46:11 -07:00
David Novotny
d35781f2d7 Rename psnr -> psnr_masked to avoid confusion
Summary: Previously, "psnr" was evaluated between the masked g.t. image and the render. To avoid confusion, "psnr" is now renamed to "psnr_masked".

Reviewed By: bottler

Differential Revision: D38707511

fbshipit-source-id: 8ee881ab1a05453d6692dde9782333a47d8c1234
2022-08-15 09:11:52 -07:00
Jeremy Reizenstein
b6771233e0 builds for PyTorch 1.12.1, drop 1.8
Summary: Builds for new PyTorch 1.12.1. Drop builds for PyTorch 1.8.0 and 1.8.1.

Reviewed By: kjchalup

Differential Revision: D38658991

fbshipit-source-id: 6192e226c2154cd051eeee98498d9a395cfd6fd5
2022-08-15 08:51:12 -07:00
David Novotny
2ff2c7c836 Enable additional test-time source views for json dataset provider v2
Summary: Adds additional source views to the eval batches for evaluating many-view models on CO3D Challenge

Reviewed By: bottler

Differential Revision: D38705904

fbshipit-source-id: cf7d00dc7db926fbd1656dd97a729674e9ff5adb
2022-08-15 08:40:09 -07:00
Jeremy Reizenstein
e8616cc8ba news to README
Summary: 0.6.2 and 0.7.0

Reviewed By: kjchalup

Differential Revision: D38659393

fbshipit-source-id: eb99f3fbe381039b391419c878b7bbac4a88d619
2022-08-12 22:55:34 -07:00
David Novotny
7b985702bb Add full-image PSNR metric
Summary: Reports also the PSNR between the unmasked G.T. image and the render.

Reviewed By: bottler

Differential Revision: D38655943

fbshipit-source-id: 1603a2d02116ea1ce037e5530abe1afc65a2ba93
2022-08-12 07:56:44 -07:00
Luca Di Grazia
a91f15f24e Incompatible variable type fixed (#1288)
Summary:
**"filename"**: "projects/nerf/nerf/implicit_function.py"
**"warning_type"**: "Incompatible variable type [9]",
**"warning_message"**: " input_skips is declared to have type `Tuple[int]` but is used as type `Tuple[]`.",
**"warning_line"**: 256,
**"fix"**: input_skips: Tuple[int,...] = ()

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/1288

Reviewed By: kjchalup

Differential Revision: D38615188

Pulled By: bottler

fbshipit-source-id: a014344dd6cf2125f564f948a3c905ceb84cf994
2022-08-11 08:54:37 -07:00
333 changed files with 14683 additions and 3981 deletions

View File

@@ -117,7 +117,7 @@ jobs:
- run:
name: build
no_output_timeout: 20m
command: MAX_JOBS=15 TEST_FLAG=--no-test packaging/build_conda.sh
command: MAX_JOBS=15 TEST_FLAG=--no-test python3 packaging/build_conda.py
- store_artifacts:
path: /opt/conda/conda-bld/linux-64
- persist_to_workspace:
@@ -154,7 +154,7 @@ jobs:
export JUST_TESTRUN=1
VARS_TO_PASS="-e PYTHON_VERSION -e BUILD_VERSION -e PYTORCH_VERSION -e CU_VERSION -e JUST_TESTRUN"
docker run --gpus all --ipc=host -v $(pwd):/remote -w /remote ${VARS_TO_PASS} ${TESTRUN_DOCKER_IMAGE} ./packaging/build_conda.sh
docker run --gpus all --ipc=host -v $(pwd):/remote -w /remote ${VARS_TO_PASS} ${TESTRUN_DOCKER_IMAGE} python3 ./packaging/build_conda.py
binary_macos_wheel:
<<: *binary_common
@@ -182,23 +182,23 @@ workflows:
# context: DOCKERHUB_TOKEN
{{workflows()}}
- binary_linux_conda_cuda:
name: testrun_conda_cuda_py37_cu102_pyt190
name: testrun_conda_cuda_py38_cu102_pyt190
context: DOCKERHUB_TOKEN
python_version: "3.7"
python_version: "3.8"
pytorch_version: '1.9.0'
cu_version: "cu102"
- binary_macos_wheel:
cu_version: cpu
name: macos_wheel_py37_cpu
python_version: '3.7'
pytorch_version: '1.12.0'
- binary_macos_wheel:
cu_version: cpu
name: macos_wheel_py38_cpu
name: macos_wheel_py3.8_cpu
python_version: '3.8'
pytorch_version: '1.12.0'
pytorch_version: '1.13.0'
- binary_macos_wheel:
cu_version: cpu
name: macos_wheel_py39_cpu
name: macos_wheel_py3.9_cpu
python_version: '3.9'
pytorch_version: '1.12.0'
pytorch_version: '1.13.0'
- binary_macos_wheel:
cu_version: cpu
name: macos_wheel_py3.10_cpu
python_version: '3.10'
pytorch_version: '1.13.0'

View File

@@ -117,7 +117,7 @@ jobs:
- run:
name: build
no_output_timeout: 20m
command: MAX_JOBS=15 TEST_FLAG=--no-test packaging/build_conda.sh
command: MAX_JOBS=15 TEST_FLAG=--no-test python3 packaging/build_conda.py
- store_artifacts:
path: /opt/conda/conda-bld/linux-64
- persist_to_workspace:
@@ -154,7 +154,7 @@ jobs:
export JUST_TESTRUN=1
VARS_TO_PASS="-e PYTHON_VERSION -e BUILD_VERSION -e PYTORCH_VERSION -e CU_VERSION -e JUST_TESTRUN"
docker run --gpus all --ipc=host -v $(pwd):/remote -w /remote ${VARS_TO_PASS} ${TESTRUN_DOCKER_IMAGE} ./packaging/build_conda.sh
docker run --gpus all --ipc=host -v $(pwd):/remote -w /remote ${VARS_TO_PASS} ${TESTRUN_DOCKER_IMAGE} python3 ./packaging/build_conda.py
binary_macos_wheel:
<<: *binary_common
@@ -180,205 +180,6 @@ workflows:
jobs:
# - main:
# context: DOCKERHUB_TOKEN
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu101
name: linux_conda_py37_cu101_pyt180
python_version: '3.7'
pytorch_version: 1.8.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py37_cu102_pyt180
python_version: '3.7'
pytorch_version: 1.8.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu111
name: linux_conda_py37_cu111_pyt180
python_version: '3.7'
pytorch_version: 1.8.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu101
name: linux_conda_py37_cu101_pyt181
python_version: '3.7'
pytorch_version: 1.8.1
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py37_cu102_pyt181
python_version: '3.7'
pytorch_version: 1.8.1
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu111
name: linux_conda_py37_cu111_pyt181
python_version: '3.7'
pytorch_version: 1.8.1
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py37_cu102_pyt190
python_version: '3.7'
pytorch_version: 1.9.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu111
name: linux_conda_py37_cu111_pyt190
python_version: '3.7'
pytorch_version: 1.9.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py37_cu102_pyt191
python_version: '3.7'
pytorch_version: 1.9.1
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu111
name: linux_conda_py37_cu111_pyt191
python_version: '3.7'
pytorch_version: 1.9.1
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py37_cu102_pyt1100
python_version: '3.7'
pytorch_version: 1.10.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu111
name: linux_conda_py37_cu111_pyt1100
python_version: '3.7'
pytorch_version: 1.10.0
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda113
context: DOCKERHUB_TOKEN
cu_version: cu113
name: linux_conda_py37_cu113_pyt1100
python_version: '3.7'
pytorch_version: 1.10.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py37_cu102_pyt1101
python_version: '3.7'
pytorch_version: 1.10.1
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu111
name: linux_conda_py37_cu111_pyt1101
python_version: '3.7'
pytorch_version: 1.10.1
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda113
context: DOCKERHUB_TOKEN
cu_version: cu113
name: linux_conda_py37_cu113_pyt1101
python_version: '3.7'
pytorch_version: 1.10.1
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py37_cu102_pyt1102
python_version: '3.7'
pytorch_version: 1.10.2
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu111
name: linux_conda_py37_cu111_pyt1102
python_version: '3.7'
pytorch_version: 1.10.2
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda113
context: DOCKERHUB_TOKEN
cu_version: cu113
name: linux_conda_py37_cu113_pyt1102
python_version: '3.7'
pytorch_version: 1.10.2
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py37_cu102_pyt1110
python_version: '3.7'
pytorch_version: 1.11.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu111
name: linux_conda_py37_cu111_pyt1110
python_version: '3.7'
pytorch_version: 1.11.0
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda113
context: DOCKERHUB_TOKEN
cu_version: cu113
name: linux_conda_py37_cu113_pyt1110
python_version: '3.7'
pytorch_version: 1.11.0
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda115
context: DOCKERHUB_TOKEN
cu_version: cu115
name: linux_conda_py37_cu115_pyt1110
python_version: '3.7'
pytorch_version: 1.11.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py37_cu102_pyt1120
python_version: '3.7'
pytorch_version: 1.12.0
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda113
context: DOCKERHUB_TOKEN
cu_version: cu113
name: linux_conda_py37_cu113_pyt1120
python_version: '3.7'
pytorch_version: 1.12.0
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda116
context: DOCKERHUB_TOKEN
cu_version: cu116
name: linux_conda_py37_cu116_pyt1120
python_version: '3.7'
pytorch_version: 1.12.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu101
name: linux_conda_py38_cu101_pyt180
python_version: '3.8'
pytorch_version: 1.8.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py38_cu102_pyt180
python_version: '3.8'
pytorch_version: 1.8.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu111
name: linux_conda_py38_cu111_pyt180
python_version: '3.8'
pytorch_version: 1.8.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu101
name: linux_conda_py38_cu101_pyt181
python_version: '3.8'
pytorch_version: 1.8.1
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py38_cu102_pyt181
python_version: '3.8'
pytorch_version: 1.8.1
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu111
name: linux_conda_py38_cu111_pyt181
python_version: '3.8'
pytorch_version: 1.8.1
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
@@ -506,42 +307,40 @@ workflows:
name: linux_conda_py38_cu116_pyt1120
python_version: '3.8'
pytorch_version: 1.12.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu101
name: linux_conda_py39_cu101_pyt180
python_version: '3.9'
pytorch_version: 1.8.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py39_cu102_pyt180
python_version: '3.9'
pytorch_version: 1.8.0
name: linux_conda_py38_cu102_pyt1121
python_version: '3.8'
pytorch_version: 1.12.1
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda113
context: DOCKERHUB_TOKEN
cu_version: cu111
name: linux_conda_py39_cu111_pyt180
python_version: '3.9'
pytorch_version: 1.8.0
cu_version: cu113
name: linux_conda_py38_cu113_pyt1121
python_version: '3.8'
pytorch_version: 1.12.1
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda116
context: DOCKERHUB_TOKEN
cu_version: cu101
name: linux_conda_py39_cu101_pyt181
python_version: '3.9'
pytorch_version: 1.8.1
cu_version: cu116
name: linux_conda_py38_cu116_pyt1121
python_version: '3.8'
pytorch_version: 1.12.1
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda116
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py39_cu102_pyt181
python_version: '3.9'
pytorch_version: 1.8.1
cu_version: cu116
name: linux_conda_py38_cu116_pyt1130
python_version: '3.8'
pytorch_version: 1.13.0
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda117
context: DOCKERHUB_TOKEN
cu_version: cu111
name: linux_conda_py39_cu111_pyt181
python_version: '3.9'
pytorch_version: 1.8.1
cu_version: cu117
name: linux_conda_py38_cu117_pyt1130
python_version: '3.8'
pytorch_version: 1.13.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
@@ -669,6 +468,40 @@ workflows:
name: linux_conda_py39_cu116_pyt1120
python_version: '3.9'
pytorch_version: 1.12.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
name: linux_conda_py39_cu102_pyt1121
python_version: '3.9'
pytorch_version: 1.12.1
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda113
context: DOCKERHUB_TOKEN
cu_version: cu113
name: linux_conda_py39_cu113_pyt1121
python_version: '3.9'
pytorch_version: 1.12.1
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda116
context: DOCKERHUB_TOKEN
cu_version: cu116
name: linux_conda_py39_cu116_pyt1121
python_version: '3.9'
pytorch_version: 1.12.1
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda116
context: DOCKERHUB_TOKEN
cu_version: cu116
name: linux_conda_py39_cu116_pyt1130
python_version: '3.9'
pytorch_version: 1.13.0
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda117
context: DOCKERHUB_TOKEN
cu_version: cu117
name: linux_conda_py39_cu117_pyt1130
python_version: '3.9'
pytorch_version: 1.13.0
- binary_linux_conda:
context: DOCKERHUB_TOKEN
cu_version: cu102
@@ -715,24 +548,58 @@ workflows:
name: linux_conda_py310_cu116_pyt1120
python_version: '3.10'
pytorch_version: 1.12.0
- binary_linux_conda_cuda:
name: testrun_conda_cuda_py37_cu102_pyt190
- binary_linux_conda:
context: DOCKERHUB_TOKEN
python_version: "3.7"
cu_version: cu102
name: linux_conda_py310_cu102_pyt1121
python_version: '3.10'
pytorch_version: 1.12.1
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda113
context: DOCKERHUB_TOKEN
cu_version: cu113
name: linux_conda_py310_cu113_pyt1121
python_version: '3.10'
pytorch_version: 1.12.1
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda116
context: DOCKERHUB_TOKEN
cu_version: cu116
name: linux_conda_py310_cu116_pyt1121
python_version: '3.10'
pytorch_version: 1.12.1
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda116
context: DOCKERHUB_TOKEN
cu_version: cu116
name: linux_conda_py310_cu116_pyt1130
python_version: '3.10'
pytorch_version: 1.13.0
- binary_linux_conda:
conda_docker_image: pytorch/conda-builder:cuda117
context: DOCKERHUB_TOKEN
cu_version: cu117
name: linux_conda_py310_cu117_pyt1130
python_version: '3.10'
pytorch_version: 1.13.0
- binary_linux_conda_cuda:
name: testrun_conda_cuda_py38_cu102_pyt190
context: DOCKERHUB_TOKEN
python_version: "3.8"
pytorch_version: '1.9.0'
cu_version: "cu102"
- binary_macos_wheel:
cu_version: cpu
name: macos_wheel_py37_cpu
python_version: '3.7'
pytorch_version: '1.12.0'
- binary_macos_wheel:
cu_version: cpu
name: macos_wheel_py38_cpu
name: macos_wheel_py3.8_cpu
python_version: '3.8'
pytorch_version: '1.12.0'
pytorch_version: '1.13.0'
- binary_macos_wheel:
cu_version: cpu
name: macos_wheel_py39_cpu
name: macos_wheel_py3.9_cpu
python_version: '3.9'
pytorch_version: '1.12.0'
pytorch_version: '1.13.0'
- binary_macos_wheel:
cu_version: cpu
name: macos_wheel_py3.10_cpu
python_version: '3.10'
pytorch_version: '1.13.0'

View File

@@ -20,8 +20,6 @@ from packaging import version
# version of pytorch.
# Pytorch 1.4 also supports cuda 10.0 but we no longer build for cuda 10.0 at all.
CONDA_CUDA_VERSIONS = {
"1.8.0": ["cu101", "cu102", "cu111"],
"1.8.1": ["cu101", "cu102", "cu111"],
"1.9.0": ["cu102", "cu111"],
"1.9.1": ["cu102", "cu111"],
"1.10.0": ["cu102", "cu111", "cu113"],
@@ -29,6 +27,8 @@ CONDA_CUDA_VERSIONS = {
"1.10.2": ["cu102", "cu111", "cu113"],
"1.11.0": ["cu102", "cu111", "cu113", "cu115"],
"1.12.0": ["cu102", "cu113", "cu116"],
"1.12.1": ["cu102", "cu113", "cu116"],
"1.13.0": ["cu116", "cu117"],
}
@@ -41,6 +41,8 @@ def conda_docker_image_for_cuda(cuda_version):
return "pytorch/conda-builder:cuda115"
if cuda_version == "cu116":
return "pytorch/conda-builder:cuda116"
if cuda_version == "cu117":
return "pytorch/conda-builder:cuda117"
raise ValueError("Unknown cuda version")
@@ -64,7 +66,7 @@ def pytorch_versions_for_python(python_version):
def workflows(prefix="", filter_branch=None, upload=False, indentation=6):
w = []
for btype in ["conda"]:
for python_version in ["3.7", "3.8", "3.9", "3.10"]:
for python_version in ["3.8", "3.9", "3.10"]:
for pytorch_version in pytorch_versions_for_python(python_version):
for cu_version in CONDA_CUDA_VERSIONS[pytorch_version]:
w += workflow_pair(

View File

@@ -16,14 +16,13 @@ We do not always accept new features, and we take the following factors into con
When sending a PR, please ensure you complete the following steps:
1. Fork the repo and create your branch from `master`. Follow the instructions
1. Fork the repo and create your branch from `main`. Follow the instructions
in [INSTALL.md](../INSTALL.md) to build the repo.
2. If you've added code that should be tested, add tests.
3. If you've changed any APIs, please update the documentation.
4. Ensure the test suite passes:
4. Ensure the test suite passes, by running this from the project root:
```
cd pytorch3d/tests
python -m unittest -v
python -m unittest discover -v -s tests -t .
```
5. Make sure your code lints by running `dev/linter.sh` from the project root.
6. If a PR contains multiple orthogonal changes, split it into multiple separate PRs.

BIN
.github/implicitron_config.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

View File

@@ -1,27 +0,0 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: '31 5 * * *'
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
exempt-issue-labels: 'enhancement,how-to'
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
stale-pr-message: 'This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.'
close-issue-message: 'This issue was closed because it has been stalled for 5 days with no activity.'
close-pr-message: 'This PR was closed because it has been stalled for 10 days with no activity.'
days-before-issue-stale: 30
days-before-pr-stale: 45
days-before-issue-close: 5
days-before-pr-close: 10

View File

@@ -8,8 +8,8 @@
The core library is written in PyTorch. Several components have underlying implementation in CUDA for improved performance. A subset of these components have CPU implementations in C++/PyTorch. It is advised to use PyTorch3D with GPU support in order to use all the features.
- Linux or macOS or Windows
- Python 3.6, 3.7, 3.8 or 3.9
- PyTorch 1.8.0, 1.8.1, 1.9.0, 1.9.1, 1.10.0, 1.10.1, 1.10.2, 1.11.0 or 1.12.0.
- Python 3.8, 3.9 or 3.10
- PyTorch 1.9.0, 1.9.1, 1.10.0, 1.10.1, 1.10.2, 1.11.0, 1.12.0, 1.12.1 or 1.13.0.
- torchvision that matches the PyTorch installation. You can install them together as explained at pytorch.org to make sure of this.
- gcc & g++ ≥ 4.9
- [fvcore](https://github.com/facebookresearch/fvcore)
@@ -21,11 +21,11 @@ The runtime dependencies can be installed by running:
```
conda create -n pytorch3d python=3.9
conda activate pytorch3d
conda install -c pytorch pytorch=1.9.1 torchvision cudatoolkit=10.2
conda install -c pytorch pytorch=1.9.1 torchvision cudatoolkit=11.6
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
```
For the CUB build time dependency, if you are using conda, you can continue with
For the CUB build time dependency, which you only need if you have CUDA older than 11.7, if you are using conda, you can continue with
```
conda install -c bottler nvidiacub
```
@@ -78,14 +78,14 @@ Or, to install a nightly (non-official, alpha) build:
conda install pytorch3d -c pytorch3d-nightly
```
### 2. Install from PyPI, on Mac only.
This works with pytorch 1.12.0 only. The build is CPU only.
This works with pytorch 1.13.0 only. The build is CPU only.
```
pip install pytorch3d
```
### 3. Install wheels for Linux
We have prebuilt wheels with CUDA for Linux for PyTorch 1.11.0, for each of the supported CUDA versions,
for Python 3.7, 3.8 and 3.9. This is for ease of use on Google Colab.
for Python 3.8 and 3.9. This is for ease of use on Google Colab.
These are installed in a special way.
For example, to install for Python 3.8, PyTorch 1.11.0 and CUDA 11.3
```

View File

@@ -56,6 +56,11 @@ Get started with PyTorch3D by trying one of the tutorial notebooks.
|:------------------------------------------------------------:|:--------------------------------------------------:|
| [Fit Textured Volume](https://github.com/facebookresearch/pytorch3d/blob/main/docs/tutorials/fit_textured_volume.ipynb)| [Fit A Simple Neural Radiance Field](https://github.com/facebookresearch/pytorch3d/blob/main/docs/tutorials/fit_simple_neural_radiance_field.ipynb)|
| <img src="https://raw.githubusercontent.com/facebookresearch/pytorch3d/main/.github/fit_textured_volume.gif" width="310"/> | <img src="https://raw.githubusercontent.com/facebookresearch/pytorch3d/main/.github/implicitron_config.gif" width="310" height="310"/>
|:------------------------------------------------------------:|:--------------------------------------------------:|
| [Fit Textured Volume in Implicitron](https://github.com/facebookresearch/pytorch3d/blob/main/docs/tutorials/implicitron_volumes.ipynb)| [Implicitron Config System](https://github.com/facebookresearch/pytorch3d/blob/main/docs/tutorials/implicitron_config_system.ipynb)|
@@ -95,6 +100,7 @@ In alphabetical order:
* Amitav Baruah
* Steve Branson
* Krzysztof Chalupka
* Jiali Duan
* Luya Gao
* Georgia Gkioxari
* Taylor Gordon
@@ -138,6 +144,12 @@ If you are using the pulsar backend for sphere-rendering (the `PulsarPointRender
Please see below for a timeline of the codebase updates in reverse chronological order. We are sharing updates on the releases as well as research projects which are built with PyTorch3D. The changelogs for the releases are available under [`Releases`](https://github.com/facebookresearch/pytorch3d/releases), and the builds can be installed using `conda` as per the instructions in [INSTALL.md](INSTALL.md).
**[Oct 23rd 2022]:** PyTorch3D [v0.7.1](https://github.com/facebookresearch/pytorch3d/releases/tag/v0.7.1) released.
**[Aug 10th 2022]:** PyTorch3D [v0.7.0](https://github.com/facebookresearch/pytorch3d/releases/tag/v0.7.0) released with Implicitron and MeshRasterizerOpenGL.
**[Apr 28th 2022]:** PyTorch3D [v0.6.2](https://github.com/facebookresearch/pytorch3d/releases/tag/v0.6.2) released
**[Dec 16th 2021]:** PyTorch3D [v0.6.1](https://github.com/facebookresearch/pytorch3d/releases/tag/v0.6.1) released
**[Oct 6th 2021]:** PyTorch3D [v0.6.0](https://github.com/facebookresearch/pytorch3d/releases/tag/v0.6.0) released

View File

@@ -17,7 +17,8 @@ It has no dependencies.
def get_test_files() -> List[Path]:
root = Path(__file__).parent.parent
return list((root / "tests").glob("**/test*.py"))
dirs = ["tests", "projects/implicitron_trainer"]
return [i for dir in dirs for i in (root / dir).glob("**/test*.py")]
def tests_from_file(path: Path, base: str) -> List[str]:

162
docs/generate_stubs.py Normal file
View File

@@ -0,0 +1,162 @@
#!/usr/bin/env python3
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
"""
This script makes the stubs for implicitron in docs/modules.
"""
from pathlib import Path
ROOT_DIR = Path(__file__).resolve().parent.parent
def paths_to_modules(paths):
"""
Given an iterable of paths, return equivalent list of modules.
"""
return [
str(i.relative_to(ROOT_DIR))[:-3].replace("/", ".")
for i in paths
if "__pycache__" not in str(i)
]
def create_one_file(title, description, sources, dest_file):
with open(dest_file, "w") as f:
print(title, file=f)
print("=" * len(title), file=f)
print(file=f)
print(description, file=f)
for source in sources:
if source.find("._") != -1:
# ignore internal modules including __init__.py
continue
print(f"\n.. automodule:: {source}", file=f)
print(" :members:", file=f)
print(" :undoc-members:", file=f)
print(" :show-inheritance:", file=f)
def iterate_directory(directory_path, dest):
"""
Create a file for each module in the given path
"""
toc = []
if not dest.exists():
dest.mkdir()
for file in sorted(directory_path.glob("*.py")):
if file.stem.startswith("_"):
continue
module = paths_to_modules([file])
create_one_file(module[0], file.stem, module, dest / f"{file.stem}.rst")
toc.append(file.stem)
for subdir in directory_path.iterdir():
if not subdir.is_dir():
continue
if subdir.name == "fb":
continue
if subdir.name.startswith("_"):
continue
iterate_directory(subdir, dest / (subdir.name))
toc.append(f"{subdir.name}/index")
paths_to_modules_ = paths_to_modules([directory_path.with_suffix(".XX")])
if len(paths_to_modules_) == 0:
return
title = paths_to_modules_[0]
with open(dest / "index.rst", "w") as f:
print(title, file=f)
print("=" * len(title), file=f)
print("\n.. toctree::\n", file=f)
for item in toc:
print(f" {item}", file=f)
def make_directory_index(title: str, directory_path: Path):
index_file = directory_path / "index.rst"
directory_rsts = sorted(directory_path.glob("*.rst"))
subdirs = sorted([f for f in directory_path.iterdir() if f.is_dir()])
with open(index_file, "w") as f:
print(title, file=f)
print("=" * len(title), file=f)
print("\n.. toctree::\n", file=f)
for subdir in subdirs:
print(f" {subdir.stem}/index.rst", file=f)
for rst in directory_rsts:
if rst.stem == "index":
continue
print(f" {rst.stem}", file=f)
def do_implicitron():
DEST_DIR = Path(__file__).resolve().parent / "modules/implicitron"
iterate_directory(ROOT_DIR / "pytorch3d/implicitron/models", DEST_DIR / "models")
unwanted_tools = ["configurable", "depth_cleanup", "utils"]
tools_sources = sorted(ROOT_DIR.glob("pytorch3d/implicitron/tools/*.py"))
tools_modules = [
str(i.relative_to(ROOT_DIR))[:-3].replace("/", ".")
for i in tools_sources
if i.stem not in unwanted_tools
]
create_one_file(
"pytorch3d.implicitron.tools",
"Tools for implicitron",
tools_modules,
DEST_DIR / "tools.rst",
)
dataset_files = sorted(ROOT_DIR.glob("pytorch3d/implicitron/dataset/*.py"))
basic_dataset = [
"dataset_base",
"dataset_map_provider",
"data_loader_map_provider",
"data_source",
"scene_batch_sampler",
]
basic_dataset_modules = [
f"pytorch3d.implicitron.dataset.{i}" for i in basic_dataset
]
create_one_file(
"pytorch3d.implicitron.dataset in general",
"Basics of data for implicitron",
basic_dataset_modules,
DEST_DIR / "data_basics.rst",
)
specific_dataset_files = [
i for i in dataset_files if i.stem.find("_dataset_map_provider") != -1
]
create_one_file(
"pytorch3d.implicitron.dataset specific datasets",
"specific datasets",
paths_to_modules(specific_dataset_files),
DEST_DIR / "datasets.rst",
)
evaluation_files = sorted(ROOT_DIR.glob("pytorch3d/implicitron/evaluation/*.py"))
create_one_file(
"pytorch3d.implicitron.evaluation",
"evaluation",
paths_to_modules(evaluation_files),
DEST_DIR / "evaluation.rst",
)
make_directory_index("pytorch3d.implicitron", DEST_DIR)
def iterate_toplevel_module(name: str) -> None:
dest_dir = Path(__file__).resolve().parent / "modules" / name
iterate_directory(ROOT_DIR / "pytorch3d" / name, dest_dir)
do_implicitron()
iterate_toplevel_module("renderer")
iterate_toplevel_module("vis")

View File

@@ -0,0 +1,29 @@
pytorch3d.implicitron.dataset in general
========================================
Basics of data for implicitron
.. automodule:: pytorch3d.implicitron.dataset.dataset_base
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.dataset.dataset_map_provider
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.dataset.data_loader_map_provider
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.dataset.data_source
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.dataset.scene_batch_sampler
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,29 @@
pytorch3d.implicitron.dataset specific datasets
===============================================
specific datasets
.. automodule:: pytorch3d.implicitron.dataset.blender_dataset_map_provider
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.dataset.json_index_dataset_map_provider
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.dataset.json_index_dataset_map_provider_v2
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.dataset.llff_dataset_map_provider
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.dataset.rendered_mesh_dataset_map_provider
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,14 @@
pytorch3d.implicitron.evaluation
================================
evaluation
.. automodule:: pytorch3d.implicitron.evaluation.evaluate_new_view_synthesis
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.evaluation.evaluator
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,10 @@
pytorch3d.implicitron
=====================
.. toctree::
models/index.rst
data_basics
datasets
evaluation
tools

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.base_model
=======================================
base_model
.. automodule:: pytorch3d.implicitron.models.base_model
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.feature_extractor.feature_extractor
================================================================
feature_extractor
.. automodule:: pytorch3d.implicitron.models.feature_extractor.feature_extractor
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pytorch3d.implicitron.models.feature_extractor
==============================================
.. toctree::
feature_extractor
resnet_feature_extractor

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.feature_extractor.resnet_feature_extractor
=======================================================================
resnet_feature_extractor
.. automodule:: pytorch3d.implicitron.models.feature_extractor.resnet_feature_extractor
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.generic_model
==========================================
generic_model
.. automodule:: pytorch3d.implicitron.models.generic_model
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.global_encoder.autodecoder
=======================================================
autodecoder
.. automodule:: pytorch3d.implicitron.models.global_encoder.autodecoder
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.global_encoder.global_encoder
==========================================================
global_encoder
.. automodule:: pytorch3d.implicitron.models.global_encoder.global_encoder
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pytorch3d.implicitron.models.global_encoder
===========================================
.. toctree::
autodecoder
global_encoder

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.implicit_function.base
===================================================
base
.. automodule:: pytorch3d.implicitron.models.implicit_function.base
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.implicit_function.decoding_functions
=================================================================
decoding_functions
.. automodule:: pytorch3d.implicitron.models.implicit_function.decoding_functions
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.implicit_function.idr_feature_field
================================================================
idr_feature_field
.. automodule:: pytorch3d.implicitron.models.implicit_function.idr_feature_field
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,13 @@
pytorch3d.implicitron.models.implicit_function
==============================================
.. toctree::
base
decoding_functions
idr_feature_field
neural_radiance_field
scene_representation_networks
utils
voxel_grid
voxel_grid_implicit_function

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.implicit_function.neural_radiance_field
====================================================================
neural_radiance_field
.. automodule:: pytorch3d.implicitron.models.implicit_function.neural_radiance_field
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.implicit_function.scene_representation_networks
============================================================================
scene_representation_networks
.. automodule:: pytorch3d.implicitron.models.implicit_function.scene_representation_networks
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.implicit_function.utils
====================================================
utils
.. automodule:: pytorch3d.implicitron.models.implicit_function.utils
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.implicit_function.voxel_grid
=========================================================
voxel_grid
.. automodule:: pytorch3d.implicitron.models.implicit_function.voxel_grid
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.implicit_function.voxel_grid_implicit_function
===========================================================================
voxel_grid_implicit_function
.. automodule:: pytorch3d.implicitron.models.implicit_function.voxel_grid_implicit_function
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,15 @@
pytorch3d.implicitron.models
============================
.. toctree::
base_model
generic_model
metrics
model_dbir
feature_extractor/index
global_encoder/index
implicit_function/index
renderer/index
view_pooler/index
visualization/index

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.metrics
====================================
metrics
.. automodule:: pytorch3d.implicitron.models.metrics
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.model_dbir
=======================================
model_dbir
.. automodule:: pytorch3d.implicitron.models.model_dbir
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.renderer.base
==========================================
base
.. automodule:: pytorch3d.implicitron.models.renderer.base
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,14 @@
pytorch3d.implicitron.models.renderer
=====================================
.. toctree::
base
lstm_renderer
multipass_ea
ray_point_refiner
ray_sampler
ray_tracing
raymarcher
rgb_net
sdf_renderer

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.renderer.lstm_renderer
===================================================
lstm_renderer
.. automodule:: pytorch3d.implicitron.models.renderer.lstm_renderer
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.renderer.multipass_ea
==================================================
multipass_ea
.. automodule:: pytorch3d.implicitron.models.renderer.multipass_ea
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.renderer.ray_point_refiner
=======================================================
ray_point_refiner
.. automodule:: pytorch3d.implicitron.models.renderer.ray_point_refiner
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.renderer.ray_sampler
=================================================
ray_sampler
.. automodule:: pytorch3d.implicitron.models.renderer.ray_sampler
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.renderer.ray_tracing
=================================================
ray_tracing
.. automodule:: pytorch3d.implicitron.models.renderer.ray_tracing
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.renderer.raymarcher
================================================
raymarcher
.. automodule:: pytorch3d.implicitron.models.renderer.raymarcher
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.renderer.rgb_net
=============================================
rgb_net
.. automodule:: pytorch3d.implicitron.models.renderer.rgb_net
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.renderer.sdf_renderer
==================================================
sdf_renderer
.. automodule:: pytorch3d.implicitron.models.renderer.sdf_renderer
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.view_pooler.feature_aggregator
===========================================================
feature_aggregator
.. automodule:: pytorch3d.implicitron.models.view_pooler.feature_aggregator
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,8 @@
pytorch3d.implicitron.models.view_pooler
========================================
.. toctree::
feature_aggregator
view_pooler
view_sampler

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.view_pooler.view_pooler
====================================================
view_pooler
.. automodule:: pytorch3d.implicitron.models.view_pooler.view_pooler
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.view_pooler.view_sampler
=====================================================
view_sampler
.. automodule:: pytorch3d.implicitron.models.view_pooler.view_sampler
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,6 @@
pytorch3d.implicitron.models.visualization
==========================================
.. toctree::
render_flyaround

View File

@@ -0,0 +1,9 @@
pytorch3d.implicitron.models.visualization.render_flyaround
===========================================================
render_flyaround
.. automodule:: pytorch3d.implicitron.models.visualization.render_flyaround
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,64 @@
pytorch3d.implicitron.tools
===========================
Tools for implicitron
.. automodule:: pytorch3d.implicitron.tools.camera_utils
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.tools.circle_fitting
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.tools.config
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.tools.eval_video_trajectory
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.tools.image_utils
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.tools.metric_utils
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.tools.model_io
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.tools.point_cloud_utils
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.tools.rasterize_mc
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.tools.stats
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.tools.video_writer
:members:
:undoc-members:
:show-inheritance:
.. automodule:: pytorch3d.implicitron.tools.vis_utils
:members:
:undoc-members:
:show-inheritance:

View File

@@ -12,4 +12,5 @@ API Documentation
utils
datasets
common
vis
vis/index
implicitron/index

View File

@@ -1,7 +1,9 @@
blending
pytorch3d.renderer.blending
===========================
blending
.. automodule:: pytorch3d.renderer.blending
:members:
:undoc-members:
:show-inheritance:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.camera_conversions
=====================================
camera_conversions
.. automodule:: pytorch3d.renderer.camera_conversions
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.camera_utils
===============================
camera_utils
.. automodule:: pytorch3d.renderer.camera_utils
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +1,9 @@
pytorch3d.renderer.cameras
==========================
cameras
===========================
.. automodule:: pytorch3d.renderer.cameras
:members:
:undoc-members:
:show-inheritance:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.compositing
==============================
compositing
.. automodule:: pytorch3d.renderer.compositing
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.fisheyecameras
=================================
fisheyecameras
.. automodule:: pytorch3d.renderer.fisheyecameras
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.implicit.harmonic_embedding
==============================================
harmonic_embedding
.. automodule:: pytorch3d.renderer.implicit.harmonic_embedding
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,11 @@
pytorch3d.renderer.implicit
===========================
.. toctree::
harmonic_embedding
raymarching
raysampling
renderer
sample_pdf
utils

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.implicit.raymarching
=======================================
raymarching
.. automodule:: pytorch3d.renderer.implicit.raymarching
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.implicit.raysampling
=======================================
raysampling
.. automodule:: pytorch3d.renderer.implicit.raysampling
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.implicit.renderer
====================================
renderer
.. automodule:: pytorch3d.renderer.implicit.renderer
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.implicit.sample_pdf
======================================
sample_pdf
.. automodule:: pytorch3d.renderer.implicit.sample_pdf
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.implicit.utils
=================================
utils
.. automodule:: pytorch3d.renderer.implicit.utils
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,15 +1,19 @@
pytorch3d.renderer
===========================
pytorch3d.renderer
==================
.. toctree::
rasterizer
blending
camera_conversions
camera_utils
cameras
compositing
fisheyecameras
lighting
materials
texturing
blending
shading
shader
renderer
utils
splatter_blend
utils
implicit/index
mesh/index
opengl/index
points/index

View File

@@ -1,6 +1,9 @@
lighting
pytorch3d.renderer.lighting
===========================
lighting
.. automodule:: pytorch3d.renderer.lighting
:members:
:undoc-members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +1,9 @@
pytorch3d.renderer.materials
============================
materials
===========================
.. automodule:: pytorch3d.renderer.materials
:members:
:undoc-members:
:show-inheritance:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.mesh.clip
============================
clip
.. automodule:: pytorch3d.renderer.mesh.clip
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,13 @@
pytorch3d.renderer.mesh
=======================
.. toctree::
clip
rasterize_meshes
rasterizer
renderer
shader
shading
textures
utils

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.mesh.rasterize_meshes
========================================
rasterize_meshes
.. automodule:: pytorch3d.renderer.mesh.rasterize_meshes
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.mesh.rasterizer
==================================
rasterizer
.. automodule:: pytorch3d.renderer.mesh.rasterizer
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.mesh.renderer
================================
renderer
.. automodule:: pytorch3d.renderer.mesh.renderer
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +1,9 @@
pytorch3d.renderer.mesh.shader
==============================
shader
===========================
.. automodule:: pytorch3d.renderer.mesh.shader
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +1,9 @@
pytorch3d.renderer.mesh.shading
===============================
shading
===========================
.. automodule:: pytorch3d.renderer.mesh.shading
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.mesh.textures
================================
textures
.. automodule:: pytorch3d.renderer.mesh.textures
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.mesh.utils
=============================
utils
.. automodule:: pytorch3d.renderer.mesh.utils
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pytorch3d.renderer.opengl
=========================
.. toctree::
opengl_utils
rasterizer_opengl

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.opengl.opengl_utils
======================================
opengl_utils
.. automodule:: pytorch3d.renderer.opengl.opengl_utils
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.opengl.rasterizer_opengl
===========================================
rasterizer_opengl
.. automodule:: pytorch3d.renderer.opengl.rasterizer_opengl
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.points.compositor
====================================
compositor
.. automodule:: pytorch3d.renderer.points.compositor
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,10 @@
pytorch3d.renderer.points
=========================
.. toctree::
compositor
rasterize_points
rasterizer
renderer
pulsar/index

View File

@@ -0,0 +1,7 @@
pytorch3d.renderer.points.pulsar
================================
.. toctree::
renderer
unified

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.points.pulsar.renderer
=========================================
renderer
.. automodule:: pytorch3d.renderer.points.pulsar.renderer
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.points.pulsar.unified
========================================
unified
.. automodule:: pytorch3d.renderer.points.pulsar.unified
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.points.rasterize_points
==========================================
rasterize_points
.. automodule:: pytorch3d.renderer.points.rasterize_points
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.points.rasterizer
====================================
rasterizer
.. automodule:: pytorch3d.renderer.points.rasterizer
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.points.renderer
==================================
renderer
.. automodule:: pytorch3d.renderer.points.renderer
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,10 +0,0 @@
rasterizer
===========================
.. automodule:: pytorch3d.renderer.mesh.rasterize_meshes
:members:
:undoc-members:
.. automodule:: pytorch3d.renderer.mesh.rasterizer
:members:
:undoc-members:

View File

@@ -0,0 +1,9 @@
pytorch3d.renderer.splatter_blend
=================================
splatter_blend
.. automodule:: pytorch3d.renderer.splatter_blend
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
texturing
===========================
.. automodule:: pytorch3d.renderer.mesh.texturing
:members:
:undoc-members:

View File

@@ -1,6 +1,9 @@
pytorch3d.renderer.utils
========================
utils
===========================
.. automodule:: pytorch3d.renderer.utils
:members:
:undoc-members:
:undoc-members:
:show-inheritance:

View File

@@ -1,6 +0,0 @@
pytorch3d.vis
===========================
.. automodule:: pytorch3d.vis
:members:
:undoc-members:

View File

@@ -0,0 +1,7 @@
pytorch3d.vis
=============
.. toctree::
plotly_vis
texture_vis

View File

@@ -0,0 +1,9 @@
pytorch3d.vis.plotly_vis
========================
plotly_vis
.. automodule:: pytorch3d.vis.plotly_vis
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
pytorch3d.vis.texture_vis
=========================
texture_vis
.. automodule:: pytorch3d.vis.texture_vis
:members:
:undoc-members:
:show-inheritance:

View File

@@ -62,7 +62,7 @@ Below we compare the performance for Objectron (in C++) and our algorithm, in C+
```python
from pytorch3d.ops import box3d_overlap
# Assume inputs: boxes1 (M, 8, 3) and boxes2 (N, 8, 3)
intersection_vol, iou_3d = box3d_overal(boxes1, boxes2)
intersection_vol, iou_3d = box3d_overlap(boxes1, boxes2)
```
For more details, read [iou_box3d.py](https://github.com/facebookresearch/pytorch3d/blob/main/pytorch3d/ops/iou_box3d.py).

View File

@@ -5,7 +5,8 @@ sphinx_rtd_theme
sphinx_markdown_tables
mock
numpy
git+git://github.com/facebookresearch/fvcore.git
git+git://github.com/facebookresearch/iopath.git
iopath
fvcore
https://download.pytorch.org/whl/cpu/torchvision-0.8.2%2Bcpu-cp37-cp37m-linux_x86_64.whl
https://download.pytorch.org/whl/cpu/torch-1.7.1%2Bcpu-cp37-cp37m-linux_x86_64.whl
omegaconf

View File

@@ -89,7 +89,7 @@
"except ModuleNotFoundError:\n",
" need_pytorch3d=True\n",
"if need_pytorch3d:\n",
" if torch.__version__.startswith(\"1.12.\") and sys.platform.startswith(\"linux\"):\n",
" if torch.__version__.startswith(\"1.13.\") and sys.platform.startswith(\"linux\"):\n",
" # We try to install PyTorch3D via a released wheel.\n",
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
" version_str=\"\".join([\n",

View File

@@ -76,7 +76,7 @@
"except ModuleNotFoundError:\n",
" need_pytorch3d=True\n",
"if need_pytorch3d:\n",
" if torch.__version__.startswith(\"1.12.\") and sys.platform.startswith(\"linux\"):\n",
" if torch.__version__.startswith(\"1.13.\") and sys.platform.startswith(\"linux\"):\n",
" # We try to install PyTorch3D via a released wheel.\n",
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
" version_str=\"\".join([\n",

Some files were not shown because too many files have changed in this diff Show More