point_patch_embed
Mini-PointNet patch embedding turning local point groups into tokens.
Classes:
-
PointPatchEmbedβMini-PointNet patch (token) embedding for grouped point clouds.
PointPatchEmbed [source] ΒΆ
PointPatchEmbed(
embed_dim: int,
in_channels: int = 3,
local_channels: Sequence[int] = (128, 256),
global_channels: Sequence[int] = (512,),
act: Union[str, Callable, None] = "relu",
act_kwargs: Optional[Dict[str, Any]] = None,
norm: Union[str, Callable, None] = "batch_norm",
norm_kwargs: Optional[Dict[str, Any]] = None,
)
Bases: Module
Mini-PointNet patch (token) embedding for grouped point clouds.
Embeds each local group of points into a single token via a two-stage shared MLP with an intermediate per-group max-pool and global-feature concatenation, as used by the masked / autoregressive point self-supervised models (Point-MAE, Point-BERT, PointGPT, Point-M2AE). A shared \(1 \times 1\) convolution over \((B, C, M)\) is equivalent to a MLP over the feature dim, so both stages are plain PyG MLPs. local_mlp maps in_channels \(\to \text{local\_channels}\); the per-group max-pool is concatenated to give \(2 \cdot \text{local\_channels}[-1]\); global_mlp maps that to embed_dim through global_channels. The module is permutation-invariant over the points within a group.
Parameters:
-
embed_dim(int) βOutput token dimension.
-
in_channels(int, default:3) βChannels per input point (\(3\) for coordinates only, plus any concatenated features).
-
local_channels(Sequence[int], default:(128, 256)) βHidden widths of the per-point MLP (
in_channelsis prepended). -
global_channels(Sequence[int], default:(512,)) βHidden widths of the per-group MLP (\(2 \cdot \text{local\_channels}[-1]\) input and
embed_dimoutput are added). -
act(Union[str, Callable, None], default:'relu') βActivation of the MLPs.
-
act_kwargs(Optional[Dict[str, Any]], default:None) βExtra arguments for the activation.
-
norm(Union[str, Callable, None], default:'batch_norm') βNormalization of the MLPs.
-
norm_kwargs(Optional[Dict[str, Any]], default:None) βExtra arguments for the normalization.
Shape
- Input: \((B, G, M, C)\) where \(B\) is the batch size, \(G\) the number of groups, \(M\) the group size, and \(C\) =
in_channels. - Output: \((B, G, D)\) where \(D\) =
embed_dim.