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
MessagePassingarguments.