PointConv
PointConv classification model.

Classes:
-
PointConvIntermediate–Input features and point cloud of one set-abstraction stage, recorded before it downsamples.
-
PointConvDensityEncoder–Stack of density-reweighted set-abstraction stages, each sampling centroids with FPS.
-
PointConvDensityClassification–PointConv classification model with density re-weighting from
PointConvIntermediate
¶
Bases: NamedTuple
Input features and point cloud of one set-abstraction stage, recorded before it downsamples.
PointConvDensityEncoder
¶
PointConvDensityEncoder(
in_channels: int,
channels: Sequence[Sequence[int]],
num_neighbors: Sequence[int],
bandwidths: Sequence[float],
ratios: Sequence[float],
weight_channels: Union[Sequence[int]] = (8, 8),
density_channels: Union[Sequence[int]] = (16, 8),
spatial_dim: int = 3,
act: Union[str, Callable, None] = "relu",
act_kwargs: Optional[Dict[str, Any]] = None,
act_first: bool = False,
norm: Union[str, Callable, None] = "batch_norm",
norm_kwargs: Optional[Dict[str, Any]] = None,
bias: bool = True,
global_pool: Optional[PoolLike] = None,
)
Bases: Module
Stack of density-reweighted set-abstraction stages, each sampling centroids with FPS.
When global_pool is given, the last stage becomes a PointConvDensityGlobalSetAbstraction and
collapses the cloud to one feature vector per sample.
PointConvDensityClassification
¶
PointConvDensityClassification(
in_channels: int,
num_classes: int,
*,
channels: Sequence[Sequence[int]] = (
[64, 64, 128],
[128, 128, 256],
[256, 512, 1024],
),
num_neighbors: Sequence[int] = (32, 64, 1024),
bandwidths: Sequence[float] = (0.1, 0.2, 0.4),
ratios: Sequence[float] = (0.5, 0.25, 0.0),
density_channels: Sequence[int] = (16, 8),
weight_channels: Sequence[int] = (8, 8),
act: Union[str, Callable, None] = "relu",
act_kwargs: Optional[Dict[str, Any]] = None,
act_first: bool = False,
norm: Union[str, Callable, None] = "batch_norm",
norm_kwargs: Optional[Dict[str, Any]] = None,
bias: bool = True,
dropout: float = 0.5,
global_pool: PoolLike = "mean",
head_channels: Sequence[int] = (512, 256),
)
Bases: ClassificationModel
PointConv classification model with density re-weighting from PointConv: Deep Convolutional Networks on 3D Point Clouds by Wenxuan Wu, Zhongang Qi, Li Fuxin.
Each set-abstraction stage samples centroids with farthest point sampling, estimates a kernel density per point, and applies a density-reweighted continuous convolution over each \(k\)-NN neighborhood. The last stage pools globally, so the classification head operates on one feature vector per sample.
Shape
- Input: features of shape \((N, \text{in\_channels})\) (optional), points of shape \((N, \text{spatial\_dim})\), batch indices of shape \((N,)\).
- Output: logits of shape \((B, \text{num\_classes})\).
Methods:
-
configure_encoder–Build the
PointConvDensityEncoderbackbone.
Attributes:
-
num_features(int) –Feature dimension \(C\) of the encoder output.
configure_encoder
¶
configure_encoder() -> PointConvDensityEncoder
Build the PointConvDensityEncoder backbone.