Skip to content

PointConv

PointConv classification model.

First page of PointConv: Deep Convolutional Networks on 3D Point Clouds

1811.07246 · November 2018

Classes:

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:

Attributes:

  • num_features (int) –

    Feature dimension \(C\) of the encoder output.

num_features property

num_features: int

Feature dimension \(C\) of the encoder output.

configure_encoder

configure_encoder() -> PointConvDensityEncoder

Build the PointConvDensityEncoder backbone.