Releases: PhoenixDL/rising
Dependency Updates & Bug Fixes
This release unpins dependencies to make the package compatible with latest torch versions, fixes CI and two minor bugs.
Full Changelog: v0.2.2...v0.3.0
Models Genesis Transforms
What's Changed
- Models Genesis Transforms by @weningerleon in #105
- CI for fork PRs by @Borda in #118
- Attempt to fix docs builds by @justusschock in #120
- Pre-commit by @Borda in #117
- imports: Isort by @Borda in #119
- Update README.md by @justusschock in #121
- using Black by @Borda in #122
- [pre-commit.ci] pre-commit suggestions by @pre-commit-ci in #123
New Contributors
- @weningerleon made their first contribution in #105
- @Borda made their first contribution in #118
- @pre-commit-ci made their first contribution in #123
Full Changelog: v0.2.1...v0.2.2
Bugfix Release
Includes the following fixes:
- Download of mednist (#101)
- Adds
BaseTransformSeeded
+ warnings (#100) - Adds compatibility with newer torch versions (#106)
- Adds correct image transforms (#110)
- Fixes support for DDP (#116)
Thanks to @NKPmedia @ndalton12 @FirasGit @mibaumgartner for these fixes
Release 0.2.0
New Features
- Add Resizing Transforms [Commit]
- Transforms for filter an remove keys Commit
- Add support for Python 3.8 Commit
- Transforms in Compose can now be shuffled [Commit]
- Test Examples more intesively [Commit]
- Random Parameter Injection API [Commit]
- Transform to Rename Keys [Commit]
- ArgMax Transform [Commit]
- OneOf Transform [Commit]
- Per Sample Option for Affines [Commit]
- Hosted Docs on ReadTheDocs
- Tested and available Examples on ReadTheDocs
- Segmentation Example with PyTorch Lightning (3D)
- Classification Example with PyTorch Lightning (2D)
Bug Fixes/Enhancements
- Use
ModuleList
in Compose Transforms [Commit] - Update DataLoader for better integration with frameworks like PyTorch Lightning or PyTorch ignite, which parse the loaders attributes [Commit]
- Make transforms in compose mutable [Commit]
- Refactoring for Python 3.6 Support [Commit]
- Tests on all major platforms [Commit]
- Filter warnings after first occurence [Commit]
- Disable Warnings in all workers but one [Commit]
Breaking Changes
- Cleanup Affine Interface [Commit]
- Remove previous random transforms for random parameter injection API [Commit]
- Move device functional [Commit]
Deprecations
--None--
Removals
- Remove Data Containers [Commit]
Release v 0.1.0
This release candidate is the first ever release containing the most convenient transforms as well as a brand new DataLoader
class.
New Features
- Option to Compose single transforms [Commit]
- First spatial Transforms [Commit]
- Custom Dataloader as Drop-In replacement for PyTorch [Commit]
- Custom Dataset Class to extend the PyTorch dataset [Commit]
- Transform call dispatching algorithm can now be changed by user [Commit]
- Utility Transforms [Commit]
- User-Controllable call dispatch within the
Compose
class [Commit] - Basic Affine Transforms [Commit]
Bug Fixes/Enhancements
- Shared memory for progressive resizing [Commit]
Breaking Changes
--None--
Deprecations
--None--
Removals
--None--
Towards the API
The new DataLoader
class was defined to be an exact drop-in replacement for the loader provided by PyTorch. As such it only extends the PyTorch loader but under the hood it uses the same multiprocessing and structure as the one already available.
- Support for Batch-Transformations
- Support for GPU Transformations
- Support to disable automated conversion to
torch.Tensor
- Support to specify, how the transform call should be dispatched
- Automated seed for
numpy
in all child processes
However there are some limitations to this:
- using CUDA from different processes is troublesome on most machines
- GPU transforms will therefore always be executed after the CPU
batch_transforms
The usage is quite simple: Just replace the import! all your previous keywords are still working correctly, but there are some new keywords available for the previously mentioned features:
Before:
from torch.utils.data import DataLoader
dset = torchvision.datasets.MNIST(root='/tmp', dowload=True)
# this does not seed numpy per worker
loader = DataLoader(dset, shuffle=True, num_workers=4)
Ours:
from rising.loading import DataLoader
dset = torchvision.datasets.MNIST(root='/tmp', dowload=True)
# this also seeds numpy!
loader = DataLoader(dset, shuffle=True, num_workers=4)
Note: To seed numpy for all child processes in a reproducible way, it must be seeded in the main process, since the base-seed for all the child processes is computed within the main process!
First Alpha Release
This release includes the following:
- Basic tensor operations (currently numpy and torch one hot transformations)
- Basic spatial transforms (mirroring and ro90)
- Intensity transforms (norm_min_max, norm_range, norm_zero_mean_unit_std, add_noise, gamma_correction, add_value, scale_by_value)