File size: 3,088 Bytes
0098249
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
---
license: mit
library_name: pytorch
tags:
  - spherical-cnn
  - so3-equivariant
  - sola
  - spherical-harmonics
  - icosphere
  - image-classification
---

# Spherical-equivariance classifiers (spectral conv vs SoLA)

Tiny spherical-MNIST classifiers from the
[**Spherical Equivariance Benchmark**](https://huggingface.co/datasets/evalstate/spherical-equivariance-bench),
built to compare **classical zonal spectral spherical convolution** (Cohen et al.,
[ICML 2018, arXiv:1711.06721](https://arxiv.org/abs/1711.06721)) with **SoLA**
local SO(3)-equivariant attention ([Sekikawa et al., ICML 2026 #1440,
OpenReview S1StjDehJS](https://openreview.net/forum?id=S1StjDehJS)).

These are intentionally tiny (≤2k parameters) and trained at small scale to fit a
local-compute budget; they are **not** paper-scale accuracy models. Their job is to
demonstrate the equivariance contrast on a real spherical image task.

## Architectures (rank-2 icosphere, 162 vertices; dim=16; lmax=6; 9 classes)
- `spectral.pt` — two zonal `SpectralConvLayer`s (exact complex SHT via least-squares
  pseudo-inverse + per-degree scalar filter) → mean-pool → linear head. **2057 params**.
- `sola.pt` — two `SoLALayer`s (`score(i,j)=<q_i,k_j>·(b+w·u_i·u_j)` over mesh 2-ring
  neighborhoods) → mean-pool → linear head. **973 params**.
- `mlp.pt` — per-vertex MLP baseline (non-equivariant). **1001 params**.
- `mlp_aug.pt` — same MLP, trained with random SO(3) augmentation (empirically-learned
  equivariance). **1001 params**.

Checkpoints store **learnable parameters only** (the complex SHT basis buffers and the
icosphere geometry are deterministic and rebuilt by `make_model(...)` in `train.py`).
Load with `strict=False`.

## Results (25-40 epochs, CPU)
| Model | canonical acc | rotated acc (mean of 3) | params | latency (ms, batch-1 CPU) |
|---|---|---|---|---|
| spectral conv | 45.2% | 40.7% | 2057 | 2.31 |
| SoLA | 17.0% | 17.7% | 973 | 2.35 |
| MLP (no aug) | 21.8% | 22.1% | 1001 | 0.31 |
| MLP (+ rot aug) | 24.9% | 25.1% | 1001 | 1.84 |

All models underfit at this scale; the point is that the **equivariant** models retain
rotated ≈ canonical accuracy by construction (e.g. spectral 40.7 vs 45.2), even when
underfit. Paper-scale rotation robustness (SoLA 71.8 vs a position-embedding baseline
13.5 under SO(3) test rotation) is reproduced in the
[SoLA reproduction logbook](https://huggingface.co/spaces/dmitry-rov/repro-sola-spherical-so3-equivariant-local-attention).

## Checkpoint + code locations (canonical, in the research bucket)
- checkpoints: `hf://buckets/evalstate/research-agent/26-08-21-classical-vs-modern-spherical-6ab9/scratch/research/data/checkpoints/`
  ([HTTPS](https://huggingface.co/buckets/evalstate/research-agent/tree/26-08-21-classical-vs-modern-spherical-6ab9/scratch/research/data/checkpoints))
- model/training code: `train.py` under
  `.../scratch/research/code/`
- full comparative report: [`output/report.md`](https://huggingface.co/buckets/evalstate/research-agent/tree/26-08-21-classical-vs-modern-spherical-6ab9/output/report.md)