Skip to content

geometric_affine

PointMLP grouping convolution with geometric affine neighborhood normalization.

Classes:

  • GeometricAffineConv –

    Grouping convolution with geometric affine normalization (PointMLP) from

GeometricAffineConv

GeometricAffineConv(
    local_nn: Module,
    channels: int,
    spatial_dim: int = 3,
    use_pos: bool = True,
    normalize: NormalizeType = "center",
    std_mode: StdModeType = "graph",
    add_self_loops: bool = False,
    eps: float = 1e-05,
    **kwargs: Unpack[MessagePassingParams],
)

Bases: MessagePassing

Grouping convolution with geometric affine normalization (PointMLP) from Rethinking Network Design and Local Geometry in Point Cloud: A Simple Residual MLP Framework by Xu Ma, Can Qin, Haoxuan You, Haoxi Ran, Yun Fu.

Each neighborhood is recentered (normalize="center" subtracts the neighborhood mean, "anchor" subtracts the center's values), rescaled by the standard deviation of the offsets over the graph (std_mode="graph") or over the whole batch (std_mode="batch"), and modulated by learnable affine parameters; the center features are appended to each normalized message before local_nn and aggregation. The batch scope reproduces the normalization of the original PointMLP release, whose checkpoints expect it; it makes the output of one sample depend on the other samples in the batch.

Parameters:

  • local_nn (Module) –

    Network applied to each message.

  • channels (int) –

    Number of input feature channels.

  • spatial_dim (int, default: 3 ) –

    Dimension of point coordinates.

  • use_pos (bool, default: True ) –

    Whether to concatenate the point positions to the features before normalization.

  • normalize (NormalizeType, default: 'center' ) –

    Neighborhood normalization mode ("center" or "anchor").

  • std_mode (StdModeType, default: 'graph' ) –

    Scope of the standard deviation that rescales the offsets: one per graph ("graph") or one over every graph in the batch ("batch").

  • add_self_loops (bool, default: False ) –

    Whether to add self-loops to the edge index.

  • **kwargs (Unpack[MessagePassingParams], default: {} ) –

    Additional MessagePassing arguments.