from torch.autograd import Function | |
import torch | |
import torch.nn.functional as F | |
__all__ = ['trilinear_devoxelize'] | |
def trilinear_devoxelize(c, coords, r, training=None): | |
coords = (coords * 2 + 1.0) / r - 1.0 | |
coords = coords.permute(0, 2, 1).reshape(c.shape[0], 1, 1, -1, 3) | |
f = F.grid_sample(input=c, grid=coords, padding_mode='border', align_corners=False) | |
f = f.squeeze(dim=2).squeeze(dim=2) | |
return f | |