Skip to content

dli7319/psh-pytorch

Repository files navigation

Perfect Spatial Hashing in PyTorch

This library is an unofficial implementation of Perfect Spatial Hashing by Lefebvre and Hoppe.

Usage

Install the library with:

# For the latest version:
pip install git+https://github.com/dli7319/psh-pytorch.git

# For the PyPI version:
# pip install psh-pytorch

Instantiate a PerfectSpatialHash object with:

from psh_pytorch import PerfectSpatialHash

occupancy_grid # A 2D (or higher dimensional) occupancy grid
out_features = 3
perfect_hash = PerfectSpatialHash(
    occupancy_grid, out_features)

# 2D forward pass
indices = torch.stack(torch.meshgrid(
    torch.arange(128, device=device),
    torch.arange(128, device=device),
    indexing='ij'), -1)
values, sparsity = perfect_hash(indices.reshape(-1, 2))
#   Values are of shape (128 * 128, 3)
#   Sparsity is of shape (128 * 128)
#   Note that values are unmasked
masked_values = values * sparsity.unsqueeze(-1)

Examples

See examples/ for a simple example of how to use the library.

If you clone the repository, you can run the example with:

python -m examples.2D_bulb

Limitations

  1. Currently, interpolation is not supported. Hence, you must use long indices and there are no gradients with respect to the indices.

Development

  • Run tests with pytest.

Acknowledgement

If you find this library useful, please consider citing the original paper:

@article{lefebvre2006perfect,
author = {Lefebvre, Sylvain and Hoppe, Hugues},
title = {Perfect Spatial Hashing},
year = {2006},
issue_date = {July 2006},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {25},
number = {3},
issn = {0730-0301},
url = {https://doi.org/10.1145/1141911.1141926},
doi = {10.1145/1141911.1141926},
journal = {ACM Trans. Graph.},
month = {jul},
pages = {579–588},
numpages = {10},
keywords = {vector images, minimal perfect hash, sparse data, adaptive textures, multidimensional hashing, 3D-parameterized textures}
}

About

Perfect Spatial Hashing in PyTorch

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages