DiffDRR

Auto-differentiable digitally reconstructed radiographs in PyTorch

MIT License

Downloads
697
Stars
136
Committers
5

Bot releases are visible (Hide)

DiffDRR - v0.4.4 Latest Release

Published by eigenvivek 3 months ago

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.4.3...v0.4.4

DiffDRR - v0.4.3

Published by eigenvivek 3 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.4.2...v0.4.3

What's Changed

New Contributors

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.4.2...v0.4.3

DiffDRR - v0.4.2

Published by eigenvivek 4 months ago

What's Changed

A bunch more improvements to the implementations of diffdrr.renderers.Siddon and diffdrr.renderers.Trilinear. Siddon's rendering time is down to 37.9 ms -> 29.5 ms -> 26.9 ms!

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.4.1...v0.4.2

DiffDRR - v0.4.1

Published by eigenvivek 4 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.4.0...v0.4.1

DiffDRR - v0.4.0

Published by eigenvivek 5 months ago

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.3.12...v0.4.0

DiffDRR - v0.3.12

Published by eigenvivek 7 months ago

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.3.11...v0.3.12

DiffDRR - v0.3.11

Published by eigenvivek 8 months ago

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.3.10...v0.3.11

DiffDRR - v0.3.10

Published by eigenvivek 8 months ago

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.3.9...v0.3.10

DiffDRR - v0.3.9

Published by eigenvivek 9 months ago

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.3.8...v0.3.9

DiffDRR - Parsing intrinsic matrices and docs

Published by eigenvivek 11 months ago

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.3.7...v0.3.8

DiffDRR - v0.3.7

Published by eigenvivek 12 months ago

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.3.6...v0.3.7

DiffDRR - Multiple SO(3) representations and 3D plotting

Published by eigenvivek about 1 year ago

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.3.5...v0.3.6

DiffDRR - v0.3.5

Published by eigenvivek about 1 year ago

Small tweaks to the detector (ensured rays only cast from source to target) and add a new image similarity metric.

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/commits/v0.3.5

DiffDRR - v0.3.3

Published by eigenvivek over 1 year ago

Prioritize differentiable rendering

Final API change for DiffDRR

DRR objects now act purely as a differentiable renderer. That means DRR objects take in rotations and translations parameters to specify (batched) camera poses, and render X-rays from those poses.

The pose parameters are not stored as nn.Parameters of the module. This introduced too many annoyances with the DRR module, such as gradients not flowing backwards past the pose parameters, or only being able to render a specific batch size.

2D-to-3D registration is still possible with DiffDRR. This is done by creating a lightweight wrapper module that stores rotations and translations as nn.Parameters, and calls a DRR object in its forward call. An example is available in the updated documentation.

Small changes:

  • DRR generation can now be performed patch-wise (i.e., generate a 600^2 DRR as four 300^2 in series). This means DiffDRR can generate insanely large DRRs since computation memory is no longer a constraint. See an example in the updated timing notebook.

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.3.2...v0.3.3

DiffDRR - v0.3.2

Published by eigenvivek over 1 year ago

What's Changed

The DRR module will now behave as follows:

  • Initialize the DRR module as before (volume, spacing, height, pixel_spacing) except don't pass any pose parameters. Instead, initialize a set of dummy pose parameters that are internal to the model.
  • Rename _update_params to move_carm. Change the function signature to input two batched vectors, one for translations and rotations. This will be the only way to reposition the C-Arm.
  • To render a DRR, only use the forward call (i.e., drr()). No separate project function. This will return a batch of DRRs that are differentiable wrt to all downstream parameters.

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.3.1...v0.3.2

DiffDRR - v0.3.1

Published by eigenvivek over 1 year ago

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.3.0...v0.3.1

DiffDRR - v0.3.0

Published by eigenvivek over 1 year ago

DiffDRR is now built using nbdev as the backend! Main advantage: there's now a functional docs site: https://vivekg.dev/DiffDRR

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.2.3...v0.3.0

DiffDRR - v0.2.3

Published by eigenvivek over 1 year ago

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.2.1...v0.2.3

DiffDRR - v0.2.1

Published by eigenvivek over 1 year ago

Main changes

  • Batching fully works!
  • Output DRRs have shape [b c h w]
  • Initialization of parameters are different now
  • You can use .to() to move DRR to devices and dtypes

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.1.5...v0.2.1

DiffDRR - v0.1.5

Published by eigenvivek over 1 year ago

What's Changed

Full Changelog: https://github.com/eigenvivek/DiffDRR/compare/v0.1.3...v0.1.5