Fully Steerable 3D Spherical Neurons

Creating a steerable spherical classifer

in the following steps:

Step 1. Train the ancestor MLGP.

Step 2. Transform the hidden unit parameters into filter banks.

Step 3. Fix the learned parameters and add the interpolation coefficients $v^k$ as learnable parameters to fulfill the steerability constraint $\rightarrow$ Steerable spherical classifier.

Step 1

Load the UTKinect skeleton data

Train the MLGP on the shapes in the canonical orientation

Test the model on the test shape data

Step 2

The main function in this step is construct_filter_banks:

\begin{equation*} B(\tilde{S}_k) = \begin{bmatrix} R_O^{k\top} R_{T0} R_O^{k} \tilde{S}_k \\ R_O^{k\top} R_{T1} R_O^{k} \tilde{S}_k \\ R_O^{k\top} R_{T2} R_O^{k} \tilde{S}_k \\ R_O^{k\top} R_{T3} R_O^{k} \tilde{S}_k \\ \end{bmatrix} ~; \end{equation*}

To demonstrate how it works, we first extract the ancestor model hidden layer (i.e., geometric neurons) spheres, and then take one of them to form a filter bank:

Visualize

We normalize, i.e., unembed, the resulting spheres to get their Euclidean $\mathbb{R}^3$ representation.

By unembedding the 5-vectors, we will get the first three elements that represent the Euclidean coordinates of the sphere center:

Step 2 is wrapped into the function transform_parameters:

Step 3

Step 3 is wrapped into the build_steerable_model function:

Paper experiments

Get the ancestor MLGP activations

(used in the experiments further down)

The known rotation experiment (Section 5.3)

The adaptive rotation experiment (Section 5.4)