PointNetFeatureBlock(*args: Any, **kwargs: Any)¶
PointNet block allowing to embed a variable sized set of point observations into a fixed size feature vector via the PointNet mechanics. (https://arxiv.org/abs/1612.00593 from Stanford University).
The block processed the input with one input transformation, two 1d convolutions each followed by an optional batch normalization and a non linearity. Then an optional feature transformation is applied before a final convolutional layer. Lastly a masked global pooling block is used to pool all values in the point dimension resulting in a two dimensional vector (batch_dim, feature_dim). The mask for pooling is an optional parameter.
in_keys – One key identifying the input tensors, a second optional one identifying the masking tensor.
out_keys – One key identifying the output tensors, a second optional one for identifying the features.
in_shapes – List of input shapes.
embedding_dim – The embedding dimension to use throughout the block, this is also specifies the dimension of the output. (Paper: 1024)
pooling_func_name – A string in (‘max’, ‘mean’, ‘sum’) specifying the pooling function to use. (Paper: ‘max’)
use_feature_transform – Whether to use the feature transformation after the second convolution. (Paper: True)
use_batch_norm – Specify whether to use batch_norm (is disables for batches of size <2).
non_lin – The non-linearity to apply after each layer.
normalized_forward(block_input: Dict[str, torch.Tensor]) → Dict[str, torch.Tensor]¶