Inferers¶
An inferer decides how a model is run at test time: on the whole scene, on fragments of it, or under several views. It returns one prediction per point.
import torch
from torch_pointcloud import create_model
from torch_pointcloud.inferers import SlidingWindowInferer
scene = {
"pos": torch.rand(20_000, 3) * 10,
"x": torch.rand(20_000, 3),
"batch": torch.zeros(20_000, dtype=torch.long),
}
model = create_model(...)
inferer = SlidingWindowInferer(block_size=5.0)
scores = inferer(scene, predictor=lambda d: model(d["x"], d["pos"], d["batch"]))
| Inferer | Description |
|---|---|
SimpleInferer |
Single forward pass on the whole scene |
SlidingWindowInferer |
Blocks on a regular grid, predicted one at a time |
VoxelPartitionInferer |
Passes of one point per voxel, each over the whole scene |
KNNWindowInferer |
Crops of the \(k\) nearest points around a center |
PotentialSphereInferer |
Spheres of fixed radius around a center |
TTAInferer |
Another inferer run under several views, scores averaged |
PartRefinementInferer |
Another inferer, then a neighbor vote on implausible part labels |