This release brings a lot of fixes and improvements to implicitron.
PyTorch 1.8 is no longer supported. We support from PyTorch 1.9.0 to PyTorch 1.12.1.
New features
- Marching cubes fixes to existing python implementation, and fast C++ implementation for when data is on CPU https://github.com/facebookresearch/pytorch3d/commit/0d8608b9f99ac53d95256e124eaf9126e00adef5 https://github.com/facebookresearch/pytorch3d/commit/850efdf7065c238d4d1294d375278318005fd098
- New fisheye camera object. This involves a change to the API to allow such “nonlinear” cameras, i.e. those whose projection is not a projective transformation. In particular, get_projection_transform can now fail. https://github.com/facebookresearch/pytorch3d/commit/b0515e14615abe6e154f6dcf671ec8e54f29aaf4 https://github.com/facebookresearch/pytorch3d/commit/d19e6243d0294bf83a9f6debc6f55e14becf43b6 https://github.com/facebookresearch/pytorch3d/commit/84fa966643aa002b0075f3b4a0eddd22d1076a86 https://github.com/facebookresearch/pytorch3d/commit/8a96770dc28d393ebc2caacd18c7f5dfee8889a0
Minor new features
- get_se3_log function on Transform3D https://github.com/facebookresearch/pytorch3d/commit/9a0f9ae57280d5d38c9e59d0517599ccb834b81b
- get_rotation_to_best_fit_xy in circle_fitting https://github.com/facebookresearch/pytorch3d/commit/74bbd6fd76742466bc28134c9b8dfb99e4a677af
- Saving a mesh via IO to OBJ now includes TexturesUV texture https://github.com/facebookresearch/pytorch3d/commit/6ae6ff9cf73221ce60617ef4658b4892b986ba9d
- Checkerboard mesh utility https://github.com/facebookresearch/pytorch3d/commit/ce3fce49d7ad1a680d8c9be660164d5f7a0bb976
- Camera batches can now be indexed by bool tensors https://github.com/facebookresearch/pytorch3d/commit/b7c826b7863a4fb3c4ce0e10e5ed7400d32ed512
- Implicitron: You can just use a Configurable class straight away, you no longer need to call expand_args_fields or get_default_args first. https://github.com/facebookresearch/pytorch3d/commit/d6a197be3662cdfa57a34e3134fea1bb04eb1614
- Implicitron: In the newest pytorch versions, you can now use the faster `foreach` versions of optimizers https://github.com/facebookresearch/pytorch3d/commit/209c160a20ce4d87d4ca7a06f2975ba998765087
- Implicitron: full_image variants of psnr, l1 and lpips losses (ignoring mask). The masked image ones are renamed to make this clear. https://github.com/facebookresearch/pytorch3d/commit/7b985702bb660110dc70c2b8c6e6ed0a1a6bcd66 https://github.com/facebookresearch/pytorch3d/commit/d35781f2d79ffe5a895025ec386c47f7d77c085c
- Implicitron: Enable additional test-time source views for json dataset provider v2 https://github.com/facebookresearch/pytorch3d/commit/2ff2c7c836c2d47bb5b6fab57e7363862de6e423
- Implicitron: Option for filtering outlier input cameras in trajectory estimation https://github.com/facebookresearch/pytorch3d/commit/d281f8efd1e52172256ecdf21e82c7547f235ef2
- Implicitron: yaml configs to train selected methods on CO3Dv2 https://github.com/facebookresearch/pytorch3d/commit/1163eaab43af034ad36dce957511e32e6f7b8d62
- Implicitron raymarcher replicate_last_interval option. https://github.com/facebookresearch/pytorch3d/commit/611aba9a202886cf493d841610ae21c27401b923
- Mixed Frame Raysampling. You can now sample rays iid from a group of cameras, instead of a fixed number from each camera. This needed a new RayBundleHeterogeneous alternative to RayBundle. Implicitron now has its own raybundle object. https://github.com/facebookresearch/pytorch3d/commit/c311a4cbb93be458f8f48e7b269c6d3ee7fc2cf4 https://github.com/facebookresearch/pytorch3d/commit/ad8907d3738fbf4c80aa269954d1d8ba4f307530 https://github.com/facebookresearch/pytorch3d/commit/6ae863f301c66b82c8caf18e12cbae17d2620415
Major bug fix
- Implicitron: stratified_sampling no longer disabled https://github.com/facebookresearch/pytorch3d/commit/438c194ec61b34b377727c97d5922897546c581d https://github.com/facebookresearch/pytorch3d/commit/df36223ddf3b0bb75b9d9c080c5fe5dd940de34b
Bug fixes
- Cloned camera objects can now be saved with pickle and torch.save https://github.com/facebookresearch/pytorch3d/commit/efea540bbcab56fccde6f4bc729d640a403dac56
- Fix implicitron iteration time measurement https://github.com/facebookresearch/pytorch3d/commit/dd58ded73d049aa3143ee48c0c288195412594ce
- IOU3d fix for numerical stability https://github.com/facebookresearch/pytorch3d/commit/1bfe6bf20a1de877cc623d11c2eeed8c7091ae90
- Update SMPL url https://github.com/facebookresearch/pytorch3d/commit/5e7707b157861fd6ddb0564b6a727f79ea76fd56
- Implicitron doc fixes https://github.com/facebookresearch/pytorch3d/commit/fdaaa299a72eddbfff30a5f31fe2a643a2a4ca42 https://github.com/facebookresearch/pytorch3d/commit/4711d12a091ad31f51e761bee4a8cce7b4bab504
- Implicitron reduction feature aggregation broadcasting fix https://github.com/facebookresearch/pytorch3d/commit/73ba66e4abb14abd328d2e96f572337e04770cda
- Implicitron Fix for loading Co3Dv2’s point clouds https://github.com/facebookresearch/pytorch3d/commit/95a2acf7632241d09baff55e635e1e4904ed7505
Performance improvements
- Omit _check_valid_rotation_matrix by default https://github.com/facebookresearch/pytorch3d/commit/46cb5aaaae0cd40f729fd41a39c0c9a232b484c0
- _compute_vertex_normals does less work https://github.com/facebookresearch/pytorch3d/commit/a65928dcb965b114f3239603106e2b8e7c52b1c0
- Pulsar logging removed for performance gain https://github.com/facebookresearch/pytorch3d/commit/76234576868e96847097c6f6509f06a6fa9c0e5c
- VolumeSampler memory saving https://github.com/facebookresearch/pytorch3d/commit/4c8338b00f4a5b9dab31df6cecb5d21ce7ee0285
- Implicitron: Avoid extra CPU->GPU communication in raysampling https://github.com/facebookresearch/pytorch3d/commit/305cf32f6bfab02f735a938afed29d41d1759e4c
- Mesh rasterization on CPU now uses multiple threads https://github.com/facebookresearch/pytorch3d/commit/6471893f59f2c844c844be949bb64cccdcc5fdaa
Minor
- In implicitron, there are components in progress for voxel-grid-based implicit functions: decoders, voxel grids, param groups https://github.com/facebookresearch/pytorch3d/commit/edee25a1e5385ae62f37995dee1b5960b2a5ea66 https://github.com/facebookresearch/pytorch3d/commit/e7c609f1980780e1a3df1525011425ffd5aa4e7a https://github.com/facebookresearch/pytorch3d/commit/fe5bdb2fb501199e2be915b8f65859a970bbfd60 https://github.com/facebookresearch/pytorch3d/commit/24f5f4a3e7faec460e25ab0c1690f7d8329f92a6
- Implicitron config system fixes https://github.com/facebookresearch/pytorch3d/commit/4d9215b3b4851a209d24b19e4503360c08b42ea8 https://github.com/facebookresearch/pytorch3d/commit/da7fe2854eee7cdbba8b6c4b68065e857377591e https://github.com/facebookresearch/pytorch3d/commit/8339cf2610d3e1bbbe9ba4e86d65a216518ccceb
- Implicitron error improvements https://github.com/facebookresearch/pytorch3d/commit/a607dd063efde73288a3ffbd9c70f5447235e4fb
- Implicitron JsonIndexDataset fix for numpy.split warning https://github.com/facebookresearch/pytorch3d/commit/0b5def5257f53526ef81e1a83d462ef08af628d5
- Doc fix for IOU https://github.com/facebookresearch/pytorch3d/commit/a2659e1730a37345d882222464180a20a2547905 https://github.com/facebookresearch/pytorch3d/commit/60808972b8b1bffa9df770529d52099bfc286a01
- Doc fix for Implicitron base renderer https://github.com/facebookresearch/pytorch3d/commit/4711d12a091ad31f51e761bee4a8cce7b4bab504
- pytorch3d.ops doc fixes https://github.com/facebookresearch/pytorch3d/commit/6653f4400b0f8cd6cd66d042c49c60be28d06edd
- Lengths validation in chamfer and farthest_points https://github.com/facebookresearch/pytorch3d/commit/cb7bd33e7fd2c151a1676140ce7fb43ceb2b0663
- Implicitron visualize_reconstruction and render_flyaround improvements and fixes https://github.com/facebookresearch/pytorch3d/commit/6e25fe8cb312d6fa07ea5d7acfb608104f040a2d https://github.com/facebookresearch/pytorch3d/commit/3b3306f9b4c0de111644ad9d2ac5ffdecc5ee17c https://github.com/facebookresearch/pytorch3d/commit/f6d43eaa62fffa350a20b65121ac4d08b90807eb https://github.com/facebookresearch/pytorch3d/commit/c79c954dea6a7fcfed6839df09cf1ea4ac8907b3
- Implicitron compatibility with hydra 1.2 https://github.com/facebookresearch/pytorch3d/commit/90b758f7250239f353a046c9ef488ac8f17ecba1
- Implicitron SimpleDataLoaderMapProvider sample batches without replacement https://github.com/facebookresearch/pytorch3d/commit/73ea4187dec669f75f141ec11bdf0aef6ba4fe37
- Implicitron: visdom is now optional https://github.com/facebookresearch/pytorch3d/commit/ff933ab82b3fe63d67354714a58e8e3b497ebf00
Internal
- packed_to_padded now accepts all sizes https://github.com/facebookresearch/pytorch3d/commit/f34da3d3b6187b857a43cbf2dd5eeddf70833a3f
- test_opengl_utils unfriendly test fixed https://github.com/facebookresearch/pytorch3d/commit/9a1213e0e534a14b5f907ec4a0033bd9954034ef
- Implicitron: raybundle input to ImplicitFunctions has been made more consistent https://github.com/facebookresearch/pytorch3d/commit/72c3a0ebe59a7bc058c8f3a081ed9a2b7cb132bf
- location logic factored out of Volumes into a new VolumeLocator class so it can be reused in other objects. https://github.com/facebookresearch/pytorch3d/commit/f825f7e42caebdc61dd11997b485d4a7ed577068
- Sample_farthest_points uses CUB instead of a handwritten block reduction https://github.com/facebookresearch/pytorch3d/commit/8ea4da293846e64bee5cc99c8cb008888479947f
- Implicitron: MLP and Transformer have moved as they are no-longer only used by nerf. https://github.com/facebookresearch/pytorch3d/commit/898ba5c53be04b1c3ffbd981fcdb8f79b31767f4
- Cameras benchmarking https://github.com/facebookresearch/pytorch3d/commit/03562d87f5afd4004faff4f5d9a90261a62c8c7d
- Removed wrappers for eigh, solve, lstsq, and qr because we now rely on PyTorch 1.9 or greater https://github.com/facebookresearch/pytorch3d/commit/d4a1051e0f9f93a2052487cb42e34fe6e1987f84