Table of Contents

Class MeshCNNOptions

Namespace
AiDotNet.Models.Options
Assembly
AiDotNet.dll

Configuration options for the MeshCNN neural network.

public class MeshCNNOptions
Inheritance
MeshCNNOptions
Inherited Members

Remarks

MeshCNN is a deep learning architecture for processing 3D mesh data. It operates directly on the mesh structure using edge convolutions and mesh pooling operations.

For Beginners: These options control how the MeshCNN network is configured. The defaults are set to match the original paper and work well for most 3D shape classification and segmentation tasks.

Properties

ConvChannels

Gets or sets the channel sizes for each edge convolution block.

public int[] ConvChannels { get; set; }

Property Value

int[]

Remarks

Each value represents the number of output channels for one edge conv layer. The default [64, 128, 256, 256] matches the original MeshCNN paper.

DropoutRate

Gets or sets the dropout rate for regularization.

public double DropoutRate { get; set; }

Property Value

double

Remarks

Dropout is applied to fully connected layers to prevent overfitting. A value of 0 disables dropout.

FullyConnectedSizes

Gets or sets the sizes of fully connected layers before output.

public int[] FullyConnectedSizes { get; set; }

Property Value

int[]

Remarks

After edge convolutions and pooling, the features are aggregated and passed through fully connected layers for classification.

InputFeatures

Gets or sets the number of input features per edge.

public int InputFeatures { get; set; }

Property Value

int

Remarks

The default value of 5 corresponds to the standard MeshCNN edge features: - Dihedral angle - Two symmetric edge-length ratios - Two symmetric face angles

LearningRate

Gets or sets the initial learning rate for training.

public double LearningRate { get; set; }

Property Value

double

NumClasses

Gets or sets the number of output classes for classification.

public int NumClasses { get; set; }

Property Value

int

Remarks

For ModelNet40, this would be 40. For SHREC, this would be 30.

NumNeighbors

Gets or sets the number of neighboring edges to consider for each edge.

public int NumNeighbors { get; set; }

Property Value

int

Remarks

In a triangular mesh, each edge has 4 neighboring edges (2 from each adjacent face). This is the standard value and should not be changed unless using a different mesh type.

PoolTargets

Gets or sets the target edge counts after each pooling operation.

public int[] PoolTargets { get; set; }

Property Value

int[]

Remarks

Each pooling layer reduces the number of edges to the specified target. Should have one fewer element than ConvChannels (pooling after each conv except last).

UseBatchNorm

Gets or sets whether to use batch normalization after each conv layer.

public bool UseBatchNorm { get; set; }

Property Value

bool

Remarks

Batch normalization can help training stability and convergence speed.

UseGlobalAveragePooling

Gets or sets whether to use global average pooling before FC layers.

public bool UseGlobalAveragePooling { get; set; }

Property Value

bool

Remarks

If false, uses global max pooling instead.