Sampling
Contents
Sampling#
After generating coordinates, we can use them to query some image or voxel-like
matrix using ts.sample
.
image = torch.rand(16, 3, 480, 640)
coords = ts.coord.random(16, 4096, 2)
samples = ts.sample(coords, image) # (16, 4096, 3)
Frequently, the sampled features are fed into an MLP-like network.
Because of this, sample
places the feature dimension last by default
so that downstream linear layers can be computed efficiently. The features can be
returned in the standard first dimension-after-batch, if supplied with feat_last=False
.
Sampling with positional encoding#
sample
can take in an optional function handle encoder
.
If provided, the encoder function is applied to the passed in coordinates, and the
encoded coordinates will be concatenated onto the output sampled featuremap.
This can be useful if sampling a featuremap and you want the downstream MLP
to also have the coordinates available as input.
image = torch.rand(16, 3, 480, 640)
coords = ts.coord.random(16, 4096, 2)
samples = ts.sample(coords, image, encoder=ts.encoding.gamma) # (16, 4096, 43)
See Positional Encoding for available encoders.
samples = ts.sample(coords, image, feat_last=False) # (16, 3, 4096)