open3d.ml.torch.models.PVCNN

class open3d.ml.torch.models.PVCNN(name='PVCNN', device='cuda', num_classes=13, num_points=40960, extra_feature_channels=6, width_multiplier=1, voxel_resolution_multiplier=1, batcher='DefaultBatcher', augment=None, **kwargs)

Semantic Segmentation model. Based on Point Voxel Convolutions. https://arxiv.org/abs/1907.03739

Uses PointNet architecture with separate Point and Voxel processing.

name

Name of model. Default to “PVCNN”.

num_classes

Number of classes.

num_points

Number of points to sample per pointcloud.

extra_feature_channels

Number of extra features. Default to 6 (RGB + Coordinate norms).

batcher

Batching method for dataloader.

augment

dictionary for augmentation.

__init__(name='PVCNN', device='cuda', num_classes=13, num_points=40960, extra_feature_channels=6, width_multiplier=1, voxel_resolution_multiplier=1, batcher='DefaultBatcher', augment=None, **kwargs)

Initialize.

Parameters
  • cfg (cfg object or str) – cfg object or path to cfg file

  • dataset_path (str) – path to the dataset

  • **kwargs (dict) – Dict of args

forward(inputs)

Forward pass for the model.

Parameters

inputs – A dict object for inputs with following keys point (torch.float32): Input pointcloud (B, 3, N) feat (torch.float32): Input features (B, 9, N)

Returns

probability distribution (B, N, C).

Return type

torch.float32

get_loss(sem_seg_loss, results, inputs, device)

Calculate the loss on output of the model.

sem_seg_loss

Object of type SemSegLoss.

results

Output of the model.

inputs

Input of the model.

device

device(cpu or cuda).

Returns

Returns loss, labels and scores.

get_optimizer(cfg_pipeline)

Returns an optimizer object for the model.

Parameters

cfg_pipeline – A Config object with the configuration of the pipeline.

Returns

Returns a new optimizer object.

inference_begin(data)

Function called right before running inference.

Parameters

data – A data from the dataset.

inference_end(inputs, results)

This function is called after the inference.

This function can be implemented to apply post-processing on the network outputs.

Parameters

results – The model outputs as returned by the call() function. Post-processing is applied on this object.

Returns

Returns True if the inference is complete and otherwise False. Returning False can be used to implement inference for large point clouds which require multiple passes.

inference_preprocess()

This function prepares the inputs for the model.

Returns

The inputs to be consumed by the call() function of the model.

preprocess(data, attr)

Data preprocessing function.

This function is called before training to preprocess the data from a dataset. It consists of subsampling and normalizing the pointcloud and creating new features.

Parameters
  • data – A sample from the dataset.

  • attr – The corresponding attributes.

Returns

Returns the preprocessed data

transform(data, attr)

Transform function for the point cloud and features.

This function is called after preprocess method. It consists of converting numpy arrays to torch Tensors.

Parameters
  • data – A sample from the dataset.

  • attr – The corresponding attributes.

Returns

Returns dictionary data with keys (point, feat, label).

update_probs(inputs, results, test_probs, test_labels)
blocks = ((64, 1, 32), (64, 2, 16), (128, 1, 16), (1024, 1, None))
training: bool