# Rotation Invariant Graph Neural Network for 3D Point Clouds
## 2 Related Work
### Rotation Invariant Classification and Part Segmentation Networks  
Rotation invariance is obtained either using a rotation normalization algorithm or by computing rotation invariant features from the point cloud. Rotation normalization implies a computation of a rotation matrix specific to each point cloud that places the input in a canonical position and can be treated as a preprocessing of the input data. Rotation invariant features are built by using neighborhoods and relationships among points. If any rotation applied on the point cloud does not change the underlying neighborhoods and relationships among points, the entire network displays rotation invariance. A trade-off occurs between the prediction power of the features and the cost of computing them. Examples of handcrafted rotation invariant features are described in [21; 22; 23; 24; 25]. These are handcrafted features computed on knn distance neighborhoods of a sub-sample of points from the input. Ref. [27] extends the rotation invariant Point-Pair-Feature (PPF) from [21] such that the local pose information from patches is used in the convolution process. This leads to global rotation invariance and better prediction if only a subset of patches is rotated. Another example of a rotation invariant feature is the sorted Gram matrix applied in [28]. For a point cloud \(P\in\mathbb{R}^{N\times 3}\), it computes the Gram matrix \(G=P^{\top}\cdot P\), \(G\in\mathbb{R}^{N\times N}\). Sorting ascending each line of the Gram matrix endows it with permutation invariance. The sorted Gram matrix contains the \(N\times N\) relationships among all points and these relationships are rotation invariant. One clear vulnerability of this method is that it leads to an increase in the network size depending on the number of points of the input. Refs. [10; 18] use spectral graph convolutional neural networks to create features that are rotation invariant. Ref. [10] uses Chebnet spectral graph convolution modules [29], whereas [18] uses GCN modules described in [20]. Figure 1: Spectral graph convolution for \(n\) points with \(f_{in}\in\mathbb{N}\) input number of features, given by the size of the previous layer and \(f_{out}\in\mathbb{N}\), the desired output feature size. Ref. [30] uses two networks to compute local and global rotation invariant features. For both global and local features, they use an SVD decomposition of the point cloud to determine the best orientation and using a neighbor point resolves the ambiguity of the orientation. The global rotation invariance is similar to the PCA rotation normalization. Using the furthest point from the mean as an anchor point, they achieve the pose disambiguation by comparing the axes in the rotated point cloud with the vector from the center to the anchor point. Our proposed solution has a similar technique as [3; 8], which perform a rotation normalization. It uses PCA to compute a bounding box that best fits the dimensions of the point cloud. The orientations of the length, width, and height of the bounding box give the rotation relative to the rotation matrix of the box relative to the global frame. This method offers an intuitive visualization for the rotation normalization as the rotation neutralizes the inclination of a bounding box. The same object with a random rotation has the bounding box oriented slightly differently. Knowing the inclination of the bounding box, we can multiply with its transpose to align to the coordinate axis. The papers that use a method similar to us are [3; 8; 31]. They all use PCA to place a point cloud in a canonical position. For each point cloud \(P\in\mathbb{R}^{N\times 3}\), an eigenvalue decomposition is conducted on a matrix \(R=P^{\top}\cdot P\), \(R\in\mathbb{R}^{3\times 3}\). By ordering the eigenvalues in descending order and placing the corresponding eigenvectors, the rotation normalizing matrix \(U\in\mathbb{R}^{3\times 3}\) is obtained.