Analysis and Deep Learning on Geometric Data
CSC_53431_EP · Year 2 · Period 1
Contents
- Introduction and overview
- 0. Reminders: spectrum, surfaces, vector calculus
- 1. Discrete differential geometry
- 2. The Laplace-Beltrami operator
- 3. Shape descriptors and distances
- 4. Functional maps
- 5. Parameterization and processing
- 6. Deep learning on surfaces
- 7. Euclidean equivariance
- 8. Applications and LLGA connections
- 9. Course research notes — Geometric Data Analysis (Ovsjanikov)
- Exercises
- Projects and assessment
- References
Introduction and overview
| Module | Analysis and Deep Learning on Geometric Data |
| Code | CSC_53431_EP |
| Team and workload | Instructor: Maks Ovsjanikov (École Polytechnique, LIX — Geometric Data Analysis group) · 24 h · 2 ECTS · discrete differential geometry, shape operators, functional maps, then deep learning on surfaces: classification, correspondence, parameterization. |
| Period | M2 · period 1 (master’s wiki) |
| Status in the program | M2 M2 program being finalized by the course instructors (the wiki indicates that the detailed M2 curriculum is still under development); course unit description confirmed by the wiki, SynapseS 2026-2027 sheet not yet published (the S3/S4 tracks of the catalog are currently empty). |
Audience: an engineer comfortable with GNNs and meshes who wants the geometric operators behind shape analysis (the Laplacian, functional maps).
Empirical first: we start from what fails in practice — a shape-matching accuracy that collapses (from about 82% to 51% in a typical lab run) as soon as the mesh is remeshed, a 3D network that ignores curvature — and only then name the tools that fix it: the spectrum, functional maps, networks on surfaces.
The module goes from discrete differential geometry to deep learning on surfaces, following the work of Maks Ovsjanikov’s Geometric Data Analysis (GDA) group.
What you will be able to do
- Discretize the notions of differential geometry on meshes.
- Compute and interpret the Laplace-Beltrami operator and the spectrum of a shape.
- Build shape descriptors and distances that are comparable across surfaces.
- Put shapes in correspondence through functional maps.
- Parameterize and process surfaces to make them usable.
- Train networks that operate directly on surfaces.
- Understand Euclidean equivariance and its role in geometric learning.
Official objectives and syllabus
Official description (master’s wiki): the SynapseS 2026-2027 sheet of this course unit is not yet published (the S3/S4 tracks of the catalog are currently empty); the description confirmed below is that of the wiki, which specifies the volume (24 h), credits (2 ECTS) and instructor.
An introduction to advanced topics in the modern analysis of geometric data, centered on a) the mathematical foundations — discrete differential geometry, mapping, optimization — and b) deep learning for the state-of-the-art methods: a panorama of the foundations of shape analysis and processing, then a move to modern deep-learning-based techniques to solve problems such as shape classification, correspondence and parameterization.
The following table maps these official themes to the sections of the material.
| Official syllabus theme (wiki) | Course section covering it |
|---|---|
| Mathematical foundations: discrete differential geometry | ch. 0 “Reminders: spectrum, surfaces, vector calculus” and ch. 1 “Discrete differential geometry” |
| Mathematical foundations: mapping | ch. 3 “Shape descriptors and distances” and ch. 4 “Functional maps” |
| Mathematical foundations: optimization | no dedicated chapter; encountered along the way in the discrete constructions (ch. 1) and parameterization (ch. 5) |
| Panorama of the foundations of shape analysis and processing | ch. 2 “The Laplace-Beltrami operator”, ch. 3 “Shape descriptors and distances” and ch. 5 “Parameterization and processing” |
| Deep learning: shape classification | ch. 6 “Deep learning on surfaces” and ch. 7 “Euclidean equivariance” |
| Deep learning: correspondence | ch. 4 “Functional maps” |
| Deep learning: parameterization | ch. 5 “Parameterization and processing” |
Beyond this official description, the material adds two deepenings: the reading of the course instructor’s research (ch. 9) and the applications and connections of the master’s program (ch. 8).
Where this course fits in the program
M2 module (period 1), 24 h for 2 ECTS, mandatory for every LLGA student.
Prerequisites: Graph Machine and Deep Learning for Generative AI (mandatory; its spectral graph Laplacian foreshadows the Laplace-Beltrami operator) and a Deep Learning course. Digital Representation and Analysis of Shapes and Signal Processing help if you took them, but they are not required: the boxes of chapter 0 (meshes, Fourier and heat, optimal transport) give what this page uses from them.
If you took Shapes (AI-systems route): you have already seen most of sessions 2–4 (Shapes ch. 5, 7 and 8). Skim ch. 1–3 for the proofs and the notation, then spend the time on functional maps and learning (ch. 4–7).
Canonical statements. Other LLGA pages link here instead of re-deriving: discrete Gauss–Bonnet, the mean-curvature normal, the cotangent Laplacian from the Dirichlet energy and the HKS with its stability bound.
Downstream, it prepares Graph Generative Models and Applications — where 3D molecules become graphs to be generated — and is one of the entry routes toward the research track of the master.
Course outline
- Reminders: spectrum, surfaces, vector calculus — the mathematics of the module, put back in hand on surface examples.
- Discrete differential geometry — transposing curvatures and derivatives to the discrete world of meshes.
- The Laplace-Beltrami operator — the central spectral operator of shape analysis.
- Shape descriptors and distances — comparing surfaces through computable signatures.
- Functional maps — putting shapes in correspondence by transporting functions.
- Parameterization and processing — flattening and parameterizing surfaces to process them.
- Deep learning on surfaces — defining and training networks directly on geometry.
- Euclidean equivariance — building models that respect the symmetries of space.
- Applications and LLGA connections — where geometry meets the other tracks of the master, with three worked bridges to graphs and language (self-study).
- Course research notes — Geometric Data Analysis (Ovsjanikov) — the papers of the Geometric Data Analysis group, read with the tools of the module (self-study).
- Exercises — spectral computations and correspondences to carry out on real meshes.
- Projects and assessment — solo and group project subjects, a written-exam proposal and a grading rubric.
- References — the foundational papers of geometric analysis and learning on shapes.
Session plan
24 h in class = 8 sessions of 3 h. The volume is the one the master’s wiki gives for this course unit (24 h, 2 ECTS; the SynapseS 2026–2027 sheet is not yet published); no session-by-session programme is published, so the split below is our proposal for covering these notes in that time. Level 1 = foundations (reviews, definitions, first worked examples), 2 = core methods, 3 = advanced theory; the level never goes down from one session to the next.
| Session | Hours | Level | Content | Practice |
|---|---|---|---|---|
| 1 | 3 h | 1 | ch. 0 Reminders: spectral theorem, generalized eigenproblem, surfaces and charts, triangle meshes, Green’s formula, Fourier analogy and heat as a low-pass filter | lab: eigsh on a small mesh |
| 2 | 3 h | 1 | ch. 1 Discrete differential geometry: Voronoi areas, angle deficit, discrete Gauss–Bonnet, mean curvature, hat functions | Ex. 2 |
| 3 | 3 h | 2 | ch. 2 The Laplace-Beltrami operator: cotangent matrix from the Dirichlet energy, heat kernel, diffusion distances, isometric invariance | Ex. 1, 4, 6 |
| 4 | 3 h | 2 | ch. 3 Shape descriptors and distances: HKS and its stability, WKS, ShapeDNA, geodesic distances, isospectral shapes | Ex. 3, 7 |
| 5 | 3 h | 2 | ch. 4 Functional maps: the matrix C, its constraints, least-squares resolution, conversion to point maps and refinement | Ex. 8, 9 |
| 6 | 3 h | 2 | ch. 5 Parameterization and processing: harmonic maps and Tutte’s guarantee, conformal maps and the LSCM energy, ARAP, smoothing, Poisson reconstruction, decimation | lab: spectral smoothing |
| 7 | 3 h | 3 | ch. 6 Deep learning on surfaces: PointNet, PointNet++ and DGCNN, the gauge problem, DiffusionNet and its training recipe, learned functional maps (Architecture 6.3) | Ex. 10, 11 |
| 8 | 3 h | 3 | ch. 7 Euclidean equivariance: invariance vs equivariance on point clouds and surfaces, EGNN recalled from Graph ML, E(2)-symmetric routing; ch. 8 Applications and LLGA connections | Ex. 5; Ex. 12 (≈ 1 h in class, freed by the EGNN recall) |
Self-study, outside the 24 h (about 5.5 h in total): ch. 0 box OT in one page, to read before session 5 (≈ 0.5 h) · ch. 8 Worked bridges — HKS on a graph, graph alignment by functional maps, text–shape retrieval (≈ 2 h) · ch. 9 Course research notes — HKS, functional maps, ZoomOut, DiffusionNet, read as papers (≈ 3 h).
How to study this module
- Connect each new operator to its graph cousin: the Graph ML Laplacian is the best anchor point of the module.
- Visualize: eigenfunctions of the Laplace-Beltrami operator, heat kernels, and descriptors are understood as colors on a mesh.
- Implement the descriptors on small meshes before moving on to full datasets.
- Redo chapter 0 without hesitation: vector calculus and spectra are used in every chapter.
- Read the foundational papers on functional maps after the corresponding chapter — the course provides a guided reading of them.
- Look early at the applications of chapter 8 and the research notes of chapter 9: that is where internship and research topics take shape.
This module in the LLGA master Geometry is the master’s third structured data type, alongside graphs and text: here, the spectral analysis of shapes meets deep learning and prepares the 3D molecule generation of the Graph Generative Models module. This rare intersection — geometry, graphs, and generative models — opens original research avenues and careers where 3D data is central, from vision to design.
0. Reminders: spectrum, surfaces, vector calculus
Every later chapter rests on three pieces of mathematics: the spectral theorem for symmetric matrices, the notion of a surface, and integration by parts on it. This chapter recalls them, with proofs, and sets up the Fourier analogy that the module follows.
L3/M1 prerequisites mobilized
- Differential calculus: gradient, divergence, Laplacian in \mathbb{R}^2 (\Delta f = \partial_{xx} f + \partial_{yy} f); Green’s formula;
- Symmetric diagonalization: L = U\Lambda U^\top, orthonormal basis of eigenfunctions — already seen for the graph Laplacian (Graph ML module, ch. 0);
- Convolution & Fourier (Signal Processing, if you took it — the essentials are recalled at the end of this chapter): the Laplacian is the frequency operator; heat diffusion \partial_t u = \Delta u;
- GNN (Graph ML module): a mesh is a graph — but a geometric one (3D positions, metric).
Theorem 0.1 — Spectral (reminder with proof) If A \in \mathbb{R}^{n \times n} is symmetric, its eigenvalues are real and there exists an orthonormal basis of eigenvectors: A = U \Lambda U^\top . Moreover the Rayleigh quotient satisfies R(x) = \frac{x^\top A\, x}{x^\top x}, \qquad \lambda_{\min} = \min_{x \ne 0} R(x), \quad \lambda_{\max} = \max_{x \ne 0} R(x).
Proof. Standard sketch. R is continuous on the (compact) unit sphere, so it attains its maximum at some u_1, \|u_1\| = 1.
On the sphere, the critical points of R satisfy Au = R(u)\,u (set the gradient of x^\top A x to zero under the constraint x^\top x = 1, Lagrange multipliers): u_1 is an eigenvector.
Iterate on the orthogonal complement of u_1, which is stable under A by symmetry: \langle Au_1, v\rangle = \lambda_1\langle u_1, v\rangle = 0 . This yields the basis by recursion.
The characterization of \lambda_{\min}/\lambda_{\max} follows from R(x) = \sum_k \lambda_k c_k^2 with \sum_k c_k^2 = 1 (barycenter of the \lambda_k). ∎
Generalized problem — the one Laplacian object of the page Geometric operators give a pair (L_c, M): a symmetric positive semi-definite stiffness matrix L_c (the cotangent matrix of ch. 1–2) and a positive definite diagonal mass matrix M (vertex areas). One solves L_c\,\phi = \lambda M\phi, \qquad 0 = \lambda_1 < \lambda_2 \le \dots \quad (\text{1-based, as for graphs; connected mesh}). Setting \tilde L = M^{-1/2}L_cM^{-1/2} (symmetric!), thm. 0.1 applies and \phi = M^{-1/2}\tilde\phi; the \phi_k are M-orthonormal.
The smooth Laplacian \Delta_{\mathcal M} = \mathrm{div}\,\nabla is negative semi-definite, and its discrete version is -M^{-1}L_c.
In the labs, libigl returns the negative semi-definite matrix, so negate it once and pass L_c to scipy: L_c = -igl.cotmatrix(v, f), then eigsh(L_c, k, M=M, sigma=-1e-8).
Definition 0.2 — Surface, charts, atlas A surface (2-dimensional manifold) is a set covered by charts: bijections x : U \subset \mathbb{R}^2 \to V \subset \mathcal M whose chart transitions x_2^{-1} \circ x_1 are smooth. The collection of charts is an atlas.
Example: the sphere. Two stereographic charts (from the North pole and the South pole) suffice; on their intersection, the chart transition is the inversion u \mapsto u/\|u\|^2 — smooth.
A function f : \mathcal M \to \mathbb{R} is smooth if f \circ x is in every chart; intrinsic quantities (lengths, areas, Laplacian) do not depend on the chosen chart.
Triangle meshes in one box (for students who did not take Shapes)
- Arrays: a mesh is stored as
V, an n \times 3 float array of vertex positions, andF, an m \times 3 integer array of vertex indices, one row per triangle. A consistent order of the three indices orients each face, and the normal follows the right-hand rule. - Half-edge structure: each edge is split into two oriented half-edges. Each half-edge stores its twin, the next half-edge of its face, its origin vertex and its face, so walking around a vertex or a face costs O(1) per step. This is how Shapes ch. 1 and libraries such as OpenMesh or CGAL traverse one-rings; libigl keeps only
VandFand builds adjacency arrays on demand. - Manifold mesh: every edge belongs to one face (boundary) or two faces (interior), and the faces around each vertex form one fan, a disk or a half-disk. The cotangent Laplacian of ch. 2 assumes this; a non-manifold edge shared by three faces breaks it.
- Euler characteristic: \chi = |V| - |E| + |F|. For a closed orientable surface of genus g, \chi = 2 - 2g (sphere 2, torus 0), and a closed triangle mesh has 3|F| = 2|E|. Ch. 1 shows that \chi fixes the total curvature.
Proposition 0.3 — Vector calculus: Green’s formula and self-adjointness Gradient (direction of steepest slope), divergence (outgoing flux per unit area), \Delta f = \mathrm{div}\,\nabla f.
Green’s formula (geometric integration by parts), \int_{\Omega} \langle \nabla f, \nabla g\rangle\, dA = -\int_\Omega f\,\Delta g\, dA + \oint_{\partial\Omega} f\,\partial_n g\, ds, is the reason why the Laplacian is symmetric. On a closed surface (without boundary), \int f \Delta g = \int g \Delta f — and this symmetry carries over to the discrete setting (ch. 2).
| Euclidean \mathbb{R}^n | Surface \mathcal M |
|---|---|
| translations/rotations | isometries of \mathcal M |
| exponentials e^{i\langle \omega, x\rangle} | eigenfunctions \phi_k of \Delta_{\mathcal M} |
| frequencies \|\omega\|^2 | eigenvalues \lambda_k |
| convolution (translation invariant) | operators that are functions of \Delta_{\mathcal M} |
| low-pass filter | attenuating the high \lambda_k |
Convolution and Fourier (reminder). Convolution (f * g)(x) = \int f(x-y)g(y)dy is the unique commutative, bilinear, continuous, translation-invariant product. The Fourier transform diagonalizes it: \widehat{f*g} = \hat f \cdot \hat g, \qquad \widehat{\Delta f} = -\|\omega\|^2\hat f . This whole machinery disappears on a surface (no translation group); the Laplacian — and it alone — plays its role: this is the program of chapters 2–4.
Heat is a low-pass filter (reminder). On \mathbb{R}^n, the heat equation \partial_t u = \Delta u is solved by convolution with a Gaussian, and in Fourier each frequency is damped: u(t) = G_t * u_0, \qquad G_t(x) = (4\pi t)^{-n/2}e^{-\|x\|^2/4t}, \qquad \hat u(t,\omega) = e^{-t\|\omega\|^2}\,\hat u_0(\omega). High frequencies die first, so diffusing for a time t keeps the details larger than about \sqrt t. On a surface, \|\omega\|^2 becomes \lambda_k and the damping becomes e^{-t\lambda_k} (Theorem 2.3): the HKS of ch. 3 and DiffusionNet of ch. 6 are built on this filter.
OT in one page (self-study, read before session 5)
Optimal transport (OT) compares two distributions by the cheapest way of moving one onto the other. It appears in ch. 4 (functional maps as transport), Ex. 12 and the first group project; the full treatment is Optimal Transport, ch. 1–5.
- Kantorovich problem: for discrete measures with weights a \in \mathbb{R}^n, b \in \mathbb{R}^m (each summing to 1) and a cost matrix c_{ij}, \mathrm{OT}(a, b) = \min_{P \in U(a,b)} \sum_{i,j} P_{ij}\,c_{ij}, \qquad U(a,b) = \{P \ge 0 : P\mathbf{1} = a,\ P^\top\mathbf{1} = b\}. The coupling P is a soft correspondence; it is a linear program.
- Wasserstein distance: with c_{ij} = d(x_i, y_j) the optimum is W_1(a, b), a true distance between distributions of points (for example, distributions of HKS descriptors on two shapes). Adding an entropy term -\varepsilon H(P) gives the Sinkhorn algorithm, a few matrix–vector products per iteration.
- Gromov–Wasserstein: when the two shapes live in different spaces (two poses, no common coordinates), compare their internal distance matrices D^X, D^Y (geodesic or diffusion): \mathrm{GW}(a, b) = \min_{P \in U(a,b)} \sum_{i,j,k,l} \big(D^X_{ik} - D^Y_{jl}\big)^2 P_{ij}P_{kl}. It is a non-convex quadratic problem, solved by iterated linearisation.
- In code (POT library):
ot.emd2(a, b, cost),ot.sinkhorn2(a, b, cost, reg)andot.gromov.gromov_wasserstein2(DX, DY, a, b).
1. Discrete differential geometry
A computer stores a surface as a mesh of triangles, while curvature, gradients and the Laplacian are defined on smooth surfaces. This chapter transposes these notions to meshes. A concrete scene shows why they matter: to align two scans of the same object, raw XYZ coordinates work when the pose is fixed but break as soon as the object bends; we need intrinsic quantities, which do not change under such deformations.
What breaks Three classic failures: extrinsic features (coordinates, normals) that change when the shape bends without stretching; a badly discretized Laplacian on a non-manifold mesh; and too few eigenmodes to resolve the details one needs.
Definition 1.1 — Triangulated surface A mesh \mathcal M = (V, E, F): vertices v_i \in \mathbb{R}^3, edges, triangular faces. It is both a graph and an approximation of a smooth surface; the mixed Voronoi area A_i associates a “zone” with each vertex.
Construction 1.2 — Barycentric Voronoi areas (computation) Each vertex i receives, within each incident triangle, the portion of the Voronoi cell contained in that triangle. Summed up, the dual area is written per edge: A_i = \frac{1}{8}\sum_{j \sim i}\big(\cot\alpha_{ij} + \cot\beta_{ij}\big)\,\|v_i - v_j\|^2, where \alpha_{ij}, \beta_{ij} are the angles opposite to edge (i,j).
Check on a regular triangular lattice of side a: each vertex has 6 neighbors, each edge has two opposite angles of 60°, hence \cot\alpha + \cot\beta = 2/\sqrt3 per edge and A_i = \frac{1}{8}\cdot 6\cdot\frac{2}{\sqrt3}\,a^2 = \frac{\sqrt3\,a^2}{2} = 6 \times \frac{A_T}{3}, \qquad A_T = \frac{\sqrt3\,a^2}{4}, that is, exactly one third of the area of each of the six incident triangles.
For obtuse triangles, the per-edge formula can become negative: one switches locally to the barycenter (“mixed”, Meyer et al. 2003).
Discrete curvature: the Gauss angle deficit K_i = \frac{2\pi - \sum_{f \ni i}\theta_{i,f}}{A_i} (flat ⇒ K = 0; cone ⇒ positive; saddle ⇒ negative). This is a total measure of Gaussian curvature over the zone A_i.
Proof. Why 2\pi minus the sum of the angles? Transport a tangent vector parallel to itself around vertex i, staying on the faces. Unfold the incident faces one after the other into the plane, so that inside each face and across each edge the vector does not rotate (the faces are flat).
The unfolded faces cover a total angle \sum_f \theta_{i,f} instead of 2\pi. So when the loop closes, the final vector makes with the initial one an angle equal to the deficit: 2\pi - \sum_f \theta_{i,f} .
Now on a smooth surface, parallel transport around a loop encircling a total Gaussian curvature \int K\,dA rotates by exactly this angle (local Gauss–Bonnet theorem, “transport” equivalent of the theorema egregium: curvature is intrinsic). The deficit is therefore the discrete analogue of \int_{A_i} K\,dA, hence the density K_i. ∎
Theorem 1.3 — Discrete Gauss–Bonnet (statement + numerical example) \sum_{i \in V} K_i\, A_i \;=\; \sum_i \Big(2\pi - \sum_{f\ni i}\theta_{i,f}\Big) \;=\; 2\pi\,\chi(\mathcal M), \qquad \chi = |V| - |E| + |F|. The total curvature depends only on the topology.
Example: the cube. Eight vertices, three squares (faces split into triangles: angles of \pi/2) meet at each vertex. The deficit per vertex and the total are 2\pi - 3\times\frac{\pi}{2} = \frac{\pi}{2}, \qquad 8 \times \frac{\pi}{2} = 4\pi = 2\pi \times 2 — the characteristic of the sphere.
A useful counterexample: the torus (donut) has \chi = 0: however it is meshed, the positive and negative deficits cancel out exactly.
Principal curvatures, mean curvature: via the Laplacian of positions At each point, the normal sections of the surface have extreme curvatures k_1 \le k_2 (principal); Gaussian curvature K = k_1k_2 (the deficit approximates it); mean curvature H = \frac{k_1+k_2}{2}.
Vector version, computable directly on the mesh, with \mathbf{n} the outward unit normal (so that H = 1/r > 0 on a sphere of radius r): \Delta_{\mathcal M}\, \mathbf{x} = -2H\,\mathbf{n} \qquad\text{(positions }\mathbf{x}(p) \text{ viewed as 3 functions on } \mathcal{M}\text{)}. Check on the unit sphere: the coordinate functions are eigenfunctions, \Delta x = -2x, and \mathbf{n} = \mathbf{x}, so H = 1.
Justification (sketch). The vector -\Delta\mathbf{x} is the gradient of area: varying the surface by \varepsilon\,f\,\mathbf{n} changes the area by \varepsilon \int 2Hf\,dA (first variation; minimal surfaces — soap films — are those with H = 0). Computing the same derivative by integration by parts (prop. 0.3) brings out -\Delta\mathbf{x}; comparing the two yields the formula.
In the discrete setting, with the stiffness L_c and the mass M of ch. 0 (so that \Delta \approx -M^{-1}L_c): H_i\,\mathbf{n}_i = \tfrac12\big(M^{-1}L_c\,\mathbf{x}\big)_i . One line of libigl. On a 642-vertex icosphere of radius 1, with the Voronoi mass of the code in ch. 2, it gives H_i = 1 at every vertex, pointing outward to within half a degree; with the barycentric mass, H_i = 1.00 \pm 0.02.
- Normal of a face: n_f \propto (v_j - v_i) \times (v_k - v_i); vertex normal: area-weighted (or angle-weighted) average;
- Barycentric coordinates: in a triangle (i,j,k), every point can be written \alpha v_i + \beta v_j + \gamma v_k, \alpha + \beta + \gamma = 1, with \alpha = normalized area of the opposite sub-triangle; they serve to interpolate any function from the vertices to the interior of the faces (a mesh carries values only at vertices);
- Finite differences vs finite elements: the “FD” route approximates \Delta f by combinations of neighbors (like the graph Laplacian). The “FEM” route projects onto the basis of hat functions \psi_i (1 at v_i, 0 at the other vertices, affine on the faces) and assembles the stiffness matrix L_c and the mass matrix M: (L_c)_{ij} = \int_{\mathcal M} \langle\nabla\psi_i, \nabla\psi_j\rangle\, dA, \qquad M_{ij} = \int_{\mathcal M} \psi_i\psi_j\, dA . In practice M is lumped to the diagonal of vertex areas A_i, and the discrete Laplacian is \Delta \approx -M^{-1}L_c. The explicit computation of (L_c)_{ij} on a triangle — an object of ch. 2 — recovers exactly the cotangents: FEM and discrete geometry converge.
Useful jargon The pair (L_c, M) of ch. 0 is called “stiffness/mass” here (the Gaussian curvature keeps the letter K); the convergence of discrete operators toward the smooth Laplace-Beltrami (as the mesh is refined) is subtle — the cotangent one converges in the weak sense (Wardetzky 2007); this is the reason why DiffusionNet (ch. 6, ch. 9) prefers to require only heat operators from the discrete setting.
2. The Laplace-Beltrami operator
On a surface there is no Fourier transform, because there are no translations; the operator that takes its place is the Laplacian of the surface. This chapter builds it on meshes (the cotangent matrix), derives it from an energy, and proves the two properties that make it the central tool of shape analysis: its eigenfunctions act as frequencies, and it does not change when the surface bends without stretching.
Definition 2.1 — Laplace-Beltrami The Laplacian on the surface: \Delta_{\mathcal M} f = \mathrm{div}_{\mathcal M}(\nabla_{\mathcal M} f). In a local chart with metric g = (g_{ab}) (the g_{ab} measure how the chart distorts lengths): \Delta_{\mathcal M} f = \frac{1}{\sqrt{|g|}}\sum_{a,b}\partial_a\!\Big(\sqrt{|g|}\,g^{ab}\,\partial_b f\Big), with |g| = \det(g_{ab}) and (g^{ab}) the inverse matrix, which recovers \partial_{xx} + \partial_{yy} when g = I.
In the discrete setting, the cotangent stiffness matrix L_c (symmetric, positive semi-definite): (L_c)_{ij} = \begin{cases} \sum_{l \sim i} w_{il} & i = j\\[2pt] -w_{ij} & j \sim i\\ 0 & \text{otherwise} \end{cases}, \qquad w_{ij} = \tfrac12\big(\cot\alpha_{ij} + \cot\beta_{ij}\big), where \alpha_{ij}, \beta_{ij} are the angles opposite to edge (i,j). With the lumped mass M = \mathrm{diag}(A_i), the discrete Laplace-Beltrami operator is \Delta \approx -M^{-1}L_c, \qquad (\Delta f)_i \approx \frac{1}{2A_i}\sum_{j \sim i}(\cot\alpha_{ij} + \cot\beta_{ij})\,(f_j - f_i). This area-normalised matrix already contains M^{-1}: the eigenproblem uses L_c and M separately (ch. 0), otherwise the mass is divided twice.
Like the graph Laplacian L = D - A, the matrix L_c is symmetric positive semi-definite. Its Fourier basis \{\phi_k\} solves L_c\phi_k = \lambda_k M\phi_k, \qquad\text{that is}\qquad \Delta \phi_k = -\lambda_k \phi_k, with increasing \lambda_k (= the “frequencies” of the surface, 1-based: \lambda_1 = 0).
Derivation 2.2 — The cotangent operator via the Dirichlet energy The starting point is the Dirichlet energy (the “stiffness” of f): E_D(f) = \tfrac12 \int_{\mathcal M} \|\nabla f\|^2\, dA = \tfrac12\sum_{T}\int_T \|\nabla f\|^2\, dA. By approximating f with its barycentric interpolant (affine on each triangle, values f_i at vertices), one gets an exact quadratic form: E_D(f) = \tfrac14 \sum_{i}\sum_{j \sim i} w_{ij}\,(f_i - f_j)^2, \qquad w_{ij} = \tfrac12\big(\cot\alpha_{ij} + \cot\beta_{ij}\big) (each edge is counted twice, once from each endpoint).
The stiffness L_c is the matrix of this quadratic form, E_D(f) = \tfrac12 f^\top L_c f: \frac{\partial E_D}{\partial f_i} = \sum_{j\sim i} w_{ij}(f_i - f_j) = (L_cf)_i \approx -A_i\,(\Delta f)_i . In words, L_c f is the gradient of the Dirichlet energy, and L_c f = 0 at the interior vertices characterizes the functions of minimal energy (discrete harmonic functions).
Proof. Step 1 — gradient of an affine function on a triangle. On triangle T = (i,j,k), the interpolant is f = f_i\psi_i + f_j\psi_j + f_k\psi_k . Each \nabla\psi is constant on T, orthogonal to the opposite side, with norm 1/h (associated height). In particular \nabla\psi_i + \nabla\psi_j + \nabla\psi_k = 0 .
Step 2 — inner product of two gradients. Let h_i, h_j denote the heights from i and j, and \theta_k the angle at vertex k (opposite to edge (i,j)).
The gradient \nabla\psi_i is orthogonal to side (j,k), points toward i, and \|\nabla\psi_i\| = 1/h_i; likewise \|\nabla\psi_j\| = 1/h_j, orthogonal to side (i,k).
The two sides (j,k) and (i,k) making an angle \theta_k with each other, their normals make an angle \pi - \theta_k, and the pointing directions flip the sign: \langle\nabla\psi_i, \nabla\psi_j\rangle = -\frac{\cos\theta_k}{h_i h_j} \qquad \text{(constant on } T\text{)}. Then, with |T| the area and |e| the side lengths: \int_T \langle\nabla\psi_i, \nabla\psi_j\rangle\, dA = |T|\cdot\Big(-\frac{\cos\theta_k}{h_i h_j}\Big) = -\frac{|T|\,|e_{jk}|\,|e_{ik}|}{(2|T|)(2|T|)}\cos\theta_k = -\frac{\cos\theta_k}{2\sin\theta_k} = -\frac12\cot\theta_k, where we used h_i = 2|T|/|e_{jk}|, h_j = 2|T|/|e_{ik}| and then |T| = \tfrac12|e_{jk}|\,|e_{ik}|\sin\theta_k.
Step 3 — assembly. Each edge (i,j) belongs to one or two triangles. Sum over these triangles the terms \tfrac12 f_i f_j \int_T\langle\nabla\psi_i,\nabla\psi_j\rangle and reorganize the quadratic form as \tfrac14\sum_{ij} w_{ij}(f_i - f_j)^2 (the diagonal terms absorb the off-diagonal ones — exercise 6). The cotangent weights appear, with the contribution -\tfrac12\cot\theta_k of each opposite triangle. ∎
Key result — the cotangent weights w_{ij} = \tfrac12\big(\cot\alpha_{ij} + \cot\beta_{ij}\big), \qquad (L_cf)_i = \sum_{j\sim i} w_{ij}(f_i - f_j), \qquad \Delta \approx -M^{-1}L_c
Properties (and why they hold)
- Symmetry: W = (w_{ij}) is symmetric (each edge carries its weight, constructed symmetrically), so L_c = L_c^\top; this is the discrete version of the self-adjointness of ch. 0;
- Constants annihilated: L_c\mathbf{1} = 0 because the quadratic form only sees the differences f_i - f_j;
- Linear precision: on a flat mesh, every affine function (in particular each coordinate x, y) satisfies (L_c f)_i = 0 at the interior vertices — a generic f does not;
- Positivity: E_D(f) \ge 0, zero iff f is constant (on each connected component); hence \lambda_1 = 0 has multiplicity 1 and \lambda_2 > 0 measures the “connectivity” (the Fiedler value of surfaces);
- Convergence: as the mesh is refined, -M^{-1}L_c converges to \Delta_{\mathcal M} in the weak sense — subject to triangle quality (no too-obtuse angles; Wardetzky 2007);
- Nodal sets: the zeros of \phi_k cut the surface into increasingly fine regions as k grows — the “wavefronts” of the surface; \lambda_k \sim c\,k (Weyl’s law in dimension 2).
Theorem 2.3 — Heat kernel: spectral construction The solution of the heat equation \partial_t u = \Delta u, u(0) = u_0, reads (recall \Delta\phi_k = -\lambda_k\phi_k with \lambda_k \ge 0) u(t) = e^{t\Delta}u_0 = \sum_k e^{-\lambda_k t}\,\langle \phi_k, u_0\rangle\,\phi_k, \qquad h_t(x, y) = \sum_k e^{-\lambda_k t}\,\phi_k(x)\phi_k(y). Each mode \phi_k is damped by e^{-\lambda_k t}: diffusion = spectral low-pass filtering.
Proof. Direct substitution, term by term (using \Delta\phi_k = -\lambda_k\phi_k): \partial_t\big[e^{-\lambda_k t}\langle\phi_k,u_0\rangle\phi_k\big] = -\lambda_k e^{-\lambda_k t}\langle\phi_k,u_0\rangle\phi_k = \Delta\big[e^{-\lambda_k t}\langle\phi_k,u_0\rangle\phi_k\big]. At t = 0, the sum reduces to \sum_k\langle\phi_k,u_0\rangle\phi_k = u_0 (orthonormal basis — for the M-weighted inner product of the lab sessions).
The kernel h_t is just the same writing in “integral” form: u(x,t) = \int h_t(x,y)u_0(y)dy (exercise 4). ∎
Proposition 2.4 — Diffusion distances: geometry of the heat kernel D_t^2(x, y) = \|h_t(x, \cdot) - h_t(y, \cdot)\|^2_{L^2} = \sum_k e^{-2\lambda_k t}\,\big(\phi_k(x) - \phi_k(y)\big)^2. Two points are close if their “thermal fingerprints” are close; the exponential weighting short-circuits high frequencies — robust to noise, unlike the geodesic distance. This is the building block of the diffusion geometry of ch. 3.
Theorem 2.5 — Isometric invariance (proved) If T : \mathcal M \to \mathcal N is an isometry (preserves the lengths of curves), then for every f on \mathcal N and every x \in \mathcal M: \Delta_{\mathcal M} (f \circ T)(x) = (\Delta_{\mathcal N} f)(T(x)). Consequence: identical spectra, transported eigenfunctions — the foundation of all non-rigid shape comparison.
Proof. An isometry preserves lengths and areas, hence inner products of gradients and integration: for all u, v on \mathcal N, \int_{\mathcal N} \langle\nabla u, \nabla v\rangle\, dA_{\mathcal N} = \int_{\mathcal M} \langle\nabla(u\circ T), \nabla(v\circ T)\rangle\, dA_{\mathcal M} (change of variable T, Jacobian = 1).
By Green’s formula (prop. 0.3 — self-adjointness), for every v, \int v\,\Delta_{\mathcal N} u = \int (v\circ T)\,\Delta_{\mathcal M}(u\circ T). Since this holds for every test function v\circ T (surjective), the two Laplacians agree pointwise: \Delta_{\mathcal M}(u\circ T) = (\Delta_{\mathcal N} u)\circ T . ∎
import igl # libigl: reference discrete geometry library
import numpy as np
from scipy.sparse.linalg import eigsh
v, f = igl.read_triangle_mesh("bunny.obj")
L_c = -igl.cotmatrix(v, f) # libigl returns the NSD matrix: negate ONCE -> PSD stiffness
M = igl.massmatrix(v, f, igl.MASSMATRIX_TYPE_VORONOI) # lumped mass
# generalized problem L_c phi = lambda M phi (shift-invert around 0)
evals, evecs = eigsh(L_c, k=20, M=M, sigma=-1e-8) # 0 = lambda_1 < lambda_2 <= ...
# visualize evecs[:, k] as a "texture" on the mesh -> vibration modes
# NB: the Dirichlet energy can also be assembled face by face:
G = igl.grad(v, f) # per-face gradients, shape (3|F|, |V|)
# E_D(f) = 0.5 * sum_T area_T * |grad f|_T^2 (= 0.5 * f @ L_c @ f)Why this is the central tool
- Isometric invariance: the spectrum does not change if the surface is “bent” without stretching — non-rigid shape comparison (a moving human);
- Diffusion: heat u(t) = e^{t\Delta}u_0 — “Can one hear the shape of a drum?”: the spectrum encodes the geometry (with honest limits, ch. 3);
- Reduced dimension: projecting onto the first k eigenfunctions ≈ PCA of the surface; all of ch. 4 follows from it.
3. Shape descriptors and distances
To compare or match two shapes we need, at each point, a signature that is computable and unchanged when the shape bends. This chapter builds such descriptors from the spectrum of chapter 2 (HKS, WKS, ShapeDNA), together with intrinsic distances, and states the limit of the whole spectral approach.
Definition 3.1 — Heat Kernel Signature (HKS) The amount of residual heat at x after time t: \mathrm{HKS}(x, t) = h_t(x, x) = \sum_k e^{-t\lambda_k}\, \phi_k(x)^2 — an intrinsic descriptor: stable, isometrically invariant; multi-scale (small t = local detail, large = global). These signatures play the role of “features” for correspondence.
Proof. Stability (proof sketch). Perturb the metric by a relative amount \varepsilon (scan noise, different mesh). Two perturbation bounds are used, the second one in the sup norm and for an isolated eigenvalue: |\delta\lambda_k| \le C\varepsilon\lambda_k \ \ \text{(min–max)}, \qquad \|\delta\phi_k\|_\infty \le \frac{C'\varepsilon\lambda_k B_k}{\mathrm{gap}_k}, \qquad B_k = \|\phi_k\|_\infty, where \mathrm{gap}_k is the distance from \lambda_k to the rest of the spectrum.
To first order in \varepsilon, each term of the HKS varies as \delta\mathrm{HKS}(x,t) = \sum_k e^{-\lambda_k t}\big(-t\,\delta\lambda_k\,\phi_k(x)^2 + 2\,\phi_k(x)\,\delta\phi_k(x)\big). Bounding each factor pointwise, over the K eigenpairs actually computed: |\delta\mathrm{HKS}(x,t)| \le \varepsilon\sum_{k=1}^{K} e^{-\lambda_k t}\,\lambda_k B_k^2\Big(C\,t + \frac{2C'}{\mathrm{gap}_k}\Big) + O(\varepsilon^2).
- For a fixed t > 0 this is a finite sum: the HKS is Lipschitz in the metric — hence its empirical robustness. The constant grows as t \to 0 (more modes count) and as gaps close.
- The gaps are an artefact of the eigenfunction route. The HKS only involves the sum of \phi_k(x)^2 over each eigenspace, which does not change when the basis of that eigenspace rotates; a perturbation argument on spectral projectors replaces \mathrm{gap}_k by the distance between well-separated clusters of eigenvalues.
Note that this computation also justifies the limitation: at large t, only the small \lambda_k contribute (a global, not very discriminative descriptor); at small t, the series is sensitive to high frequencies (noise); hence the choice of a logarithmic grid of t. ∎
Scale-normalized HKS: dilating the shape by s gives \lambda_k \to s^{-2}\lambda_k and \phi_k \to s^{-1}\phi_k (unit norm on an area multiplied by s^2), hence \mathrm{HKS}'(x, t) = s^{-2}\,\mathrm{HKS}(x,\, t/s^2). Dividing by \max_x \mathrm{HKS}(x,t) removes the amplitude s^{-2} but not the rescaled time t/s^2. Two fixes:
- measure time in units of the shape, t = \tau\cdot\mathrm{Area} or t = \tau/\lambda_2, and then normalise the amplitude;
- the scale-invariant HKS of Bronstein & Kokkinos (2010): sample t = \alpha^\tau, take \log\mathrm{HKS}, differentiate in \tau (removes the amplitude), and keep the modulus of its Fourier transform in \tau (removes the shift in \tau);
Wave Kernel Signature (Aubry et al., 2011): a quantum particle of energy e distributed log-uniformly: \mathrm{WKS}(x, e) = \sum_k \phi_k(x)^2 e^{-(\log e - \log\lambda_k)^2/2\sigma^2} — a Gaussian window on a logarithmic scale: each energy probes one precise frequency band (better localization than the HKS, whose every t mixes low frequencies);
ShapeDNA (Reuter et al.): the vector (\lambda_1, \dots, \lambda_k) — normalized by area — as a global “fingerprint”; L^2 distance between fingerprints;
Intrinsic distances:
- geodesic (shortest path on the surface): Dijkstra’s algorithm on the graph of the mesh (edge lengths) gives an upper bound — edge paths are only some of the paths on the surface, and their zigzag error does not vanish when a regular mesh is refined;
- continuous refinement (Fast Marching, Kimmel–Sethian) lets paths cross faces and solves the eikonal equation \|\nabla d\| = 1 by a growing wavefront, which lowers the Dijkstra estimate toward the true distance;
- the modern “heat method” variant (Crane et al.) first solves heat and then takes its renormalized gradient — O(linear solver);
- diffusion distance (prop. 2.4): truncated spectral approximations of both;
Can one hear the shape of a drum? No — Gordon, Webb, and Wolpert (1992) constructed pairs of planar domains (polygonal drums) that are isospectral but not isometric. The spectrum does not determine the shape: this is a fundamental (and mathematically sound) limit of the whole spectral pipeline — ShapeDNA, spectral constraints of functional maps, HKS.
In practice: the spectrum discriminates almost everything, and one always complements it with operator and descriptor constraints (ch. 4);
Flattening (embedding): the first non-constant eigenfunctions give an embedding x \mapsto (\phi_2(x), \dots, \phi_{k+1}(x)) that “unfolds” the shape (\phi_1 is constant and dropped) — the exact analogue of Laplacian eigenmaps and spectral clustering for graphs (Graph ML, ch. 4; spectral positional encodings in Advanced GNN ch. 4 if you take it): same algebra, different object.
4. Functional maps
Finding which point of one shape corresponds to which point of another is a huge combinatorial problem. This chapter replaces it with a small linear one: instead of matching points, we transport functions, and in the spectral bases of chapter 2 the map becomes a k \times k matrix.
Theorem/Concept 4.1 — Functional Maps (Ovsjanikov et al., 2012) Instead of looking for the point-to-point correspondence (a combinatorial discrete map, costly), transport functions defined on the surfaces: T_F : \mathcal{F}(\mathcal M) \to \mathcal{F}(\mathcal N), \qquad T_F(g) = g \circ T^{-1} Restricted to the spectral bases \Phi_{\mathcal M}, \Phi_{\mathcal N} (the first k eigenfunctions, M-orthonormal), the map becomes a small matrix C \in \mathbb{R}^{k \times k}: b_{\mathcal N} \approx C\, b_{\mathcal M}, \qquad b = \Phi^\top M f, \qquad C_{ij} = \big\langle \phi_i^{\mathcal N},\, T_F\,\phi_j^{\mathcal M}\big\rangle, where b holds the spectral coefficients of a function f and M is the mass matrix of the shape it lives on. A correspondence of 10^5 points is replaced by k^2 numbers (k \sim 30): this is the paradigm shift of the field.
Key result — a map between shapes is a small matrix b_{\mathcal N} \approx C\, b_{\mathcal M}, \qquad C \in \mathbb{R}^{k \times k}, \quad b = \Phi^\top M f
Constraints 4.2 — what C must satisfy
- Descriptor preservation: if D_{\mathcal M} \in \mathbb{R}^{k \times q} are the coefficients of q descriptors (HKS, WKS…) on \mathcal M and D_{\mathcal N} on \mathcal N (in the same order): C\,D_{\mathcal M} \approx D_{\mathcal N} \qquad (k \times q \text{ equations});
- Commutation with operators: C\,\Lambda_{\mathcal M} \approx \Lambda_{\mathcal N}\,C (spectral regularization — the subject of the proof below);
- Orthogonality: if one believes in an isometry, C^\top C \approx I. An isometry preserves areas, so T_F preserves the L^2 inner products of functions, \langle T_F f, T_F g\rangle_{\mathcal N} = \langle f, g\rangle_{\mathcal M}; in orthonormal bases the matrix of such a map is orthogonal (exactly for complete bases, approximately after truncation to k functions);
- Correspondence coupling: if a few pairs of points are known, encode them in a 0/1 matrix \Pi with one row per vertex of the second shape and one column per vertex of the first, and \Pi_{yx} = 1 when T(x) = y. Then T_F acts as \Pi on vertex values, and C \approx \Phi_{\mathcal N}^\top M_{\mathcal N}\, \Pi\, \Phi_{\mathcal M} (hard constraint vs least squares).
Proof. Commutation: proved. Assume T : \mathcal M \to \mathcal N is an isometry. Theorem 2.5 says that, for every f on \mathcal N, \Delta_{\mathcal M}(f \circ T) = (\Delta_{\mathcal N} f)\circ T . Since T_F^{-1}f = f \circ T, this is an identity between operators — T_F^{-1} intertwines the two Laplacians — that is T_F\, \Delta_{\mathcal M} = \Delta_{\mathcal N}\, T_F .
Apply it to an eigenfunction f = \phi_j^{\mathcal M} of \mathcal M, with eigenvalue \lambda_j^{\mathcal M}: \Delta_{\mathcal N}\,T_F\phi_j^{\mathcal M} = T_F\,\Delta_{\mathcal M}\phi_j^{\mathcal M} = -\lambda_j^{\mathcal M}\,T_F\phi_j^{\mathcal M} . The transport of an eigenfunction is an eigenfunction for the same eigenvalue.
In coefficients, apply the self-adjointness of \Delta_{\mathcal N} (prop. 0.3) to the entry C_{ij} defined in 4.1: -\lambda_i^{\mathcal N}C_{ij} = \langle \Delta_{\mathcal N}\phi_i^{\mathcal N}, T_F\phi_j^{\mathcal M}\rangle = \langle \phi_i^{\mathcal N}, \Delta_{\mathcal N}T_F\phi_j^{\mathcal M}\rangle = -\lambda_j^{\mathcal M}C_{ij}. So C_{ij}\,\big(\lambda_j^{\mathcal M} - \lambda_i^{\mathcal N}\big) = 0, which is entry (i,j) of C\Lambda_{\mathcal M} = \Lambda_{\mathcal N} C: C_{ij} \ne 0 only if \lambda_i^{\mathcal N} = \lambda_j^{\mathcal M}.
If the spectrum is simple, T_F\phi_j^{\mathcal M} = \pm\phi_j^{\mathcal N} and C is diagonal with entries \pm 1. Real surfaces are only approximately isometric and multiple eigenvalues create blocks, hence a weak constraint, in the least-squares sense. ∎
Resolution 4.3 — least squares and normal equations C^* = \arg\min_C\ \big\|C D_{\mathcal M} - D_{\mathcal N}\big\|_F^2 + \alpha\big\|C\Lambda_{\mathcal M} - \Lambda_{\mathcal N} C\big\|_F^2 + \beta\big\|C^\top C - I\big\|_F^2 + \mu\|C\|_F^2. Without the orthogonality term, the problem separates over the rows of C. The commutativity penalty is a sum over entries, \big\|C\Lambda_{\mathcal M} - \Lambda_{\mathcal N} C\big\|_F^2 = \sum_{i,j} C_{ij}^2\,\big(\lambda_j^{\mathcal M} - \lambda_i^{\mathcal N}\big)^2, so row i (written as a column c_i) gets its own diagonal penalty and its own normal equations: c_i = \big(D_{\mathcal M} D_{\mathcal M}^\top + \alpha\,\Omega_i + \mu I\big)^{-1} D_{\mathcal M}\, (d_i^{\mathcal N})^\top, \qquad \Omega_i = \mathrm{diag}\big((\lambda_j^{\mathcal M} - \lambda_i^{\mathcal N})^2\big)_{j=1}^{k}, with d_i^{\mathcal N} the i-th row of D_{\mathcal N} — k linear systems of size k \times k, solved in a few milliseconds.
With orthogonality, one projects onto orthogonal matrices (SVD C = U\Sigma V^\top, then C \leftarrow UV^\top — Procrustes projection).
Conversion to point-to-point correspondence + refinement Soft correspondence: P = \Phi_{\mathcal N}\, C\, \Phi_{\mathcal M}^\top \in \mathbb{R}^{|V_{\mathcal N}| \times |V_{\mathcal M}|}, \qquad \Pi(x) = \arg\max_y P_{yx} — the matrix P (barely dense, a product of three long matrices) encodes the “probability” that y corresponds to x.
Refinement (the ZoomOut spirit, ch. 9): iteratively,
- increase k by one notch;
- recompute C using the current hard correspondence as a coupling constraint;
- re-derive P.
The growing spectral resolution acts as annealing: large structures settle at small k (strong regularization), details adjust afterwards — algorithm:
C = least_squares(k=k0, descriptors) # coarse start
for k in range(k0, kmax, step):
Pi = argmax_per_column(Phi_N[k] @ C @ Phi_M[k].T) # hard
C = solve(constraints + coupling(Pi), dim=k) # soft
return Pi # final correspondence- Partial maps: when only a part of \mathcal M corresponds to \mathcal N, T_F becomes a restriction; the matrix C is then rectangular (or one embeds \mathcal M into \mathcal N via a prolongation operator); the constraints adapt (descriptors only on the visible part);
- Learned extensions: the descriptors D can be produced by a network (FMNet of Litany et al. 2017, then GeomFMaps of Donati et al. 2020 — deep geometric functional maps): the network learns descriptors that are optimal for the matrix C, the resolution remaining a differentiable least squares; the complete computation graph (network → C → correspondence loss) is trained end to end (Architecture 6.3);
- Supervised vs unsupervised: with annotated pairs (FAUST), one directly supervises C or the geodesic error of \Pi; otherwise, one penalizes the structure that C should have — bijectivity, orthogonality, Laplacian commutativity (Architecture 6.3): unsupervised works well for quasi-isometries (humans);
- Applications: texture transfer: the texture (a color function!) on \mathcal M is transported by b_{\mathcal N} = C\,b_{\mathcal M} — a matrix multiplication; pose transfer (the correspondence coordinates), morphing;
- LLGA connection: a functional map ≈ an optimal transport between reduced bases; shape alignment ≈ graph alignment by Gromov-Wasserstein (box OT in one page of ch. 0; Optimal Transport, ch. 5); the three languages — GNN, OT, functional maps — describe the same operation of structural correspondence.
5. Parameterization and processing
Many tasks — texturing, remeshing, editing, reconstruction from a scan — need a surface to be flattened, smoothed or rebuilt. This chapter shows that most of these operations reduce to minimizing an energy built on the Laplacian of chapter 2, hence to solving a sparse linear system.
Harmonic maps — equations proved Flatten a surface with boundary onto the disk \Omega \subset \mathbb{R}^2: look for u : \mathcal M \to \mathbb{R}^2 minimizing the Dirichlet energy E_D(u) = \tfrac12\int\|\nabla u\|^2 with the boundary fixed on \partial\Omega (unit circle, uniformly — Tutte).
Proof. First variation: for every perturbation \delta u that vanishes on the boundary, 0 = \frac{d}{d\varepsilon}E_D(u + \varepsilon\,\delta u)\Big|_{\varepsilon=0} = \int_{\mathcal M} \langle\nabla u, \nabla\delta u\rangle\, dA = -\int_{\mathcal M} \delta u\,\Delta u\, dA + \oint_{\partial \mathcal M}\delta u\,\partial_n u\, ds. The boundary term vanishes (\delta u = 0 on \partial \mathcal M). Since \delta u is arbitrary in the interior, the minimizer is harmonic (component by component): \Delta u \equiv 0 .
Injectivity, smooth case: the Radó–Kneser–Choquet theorem says that a harmonic map onto a convex domain, whose boundary map is a homeomorphism onto the convex boundary, is a diffeomorphism (no folding).
In the discrete setting: the discrete Dirichlet energy (derivation 2.2!) leads to the linear system (L_c u)_i = 0 at the interior vertices, with the boundary rows replaced by the constraints — a Poisson solver, a few tens of milliseconds. ∎
Discrete injectivity needs positive weights Tutte’s theorem (1963), extended by Floater (2003), guarantees a fold-free map when the boundary goes to a convex polygon and each interior vertex is a convex combination of its neighbours, i.e. all weights are positive: uniform (Tutte) or mean-value (Floater) weights.
Cotangent weights do not qualify: w_{ij} < 0 as soon as \alpha_{ij} + \beta_{ij} > \pi, which happens on meshes with obtuse triangles, and the discrete cotangent-harmonic map can then fold. Use mean-value weights when injectivity must be guaranteed, or an (intrinsic) Delaunay mesh, on which the cotangent weights of interior edges are non-negative, and positive in the generic case.
Conformal: a map is conformal if it preserves angles — the local Jacobian is a similarity du = s\,R (Cauchy–Riemann intuition: real and imaginary parts are conjugate harmonic); it preserves the shape of small details (textures without shear), but distorts areas;
LSCM — least-squares conformal maps (Lévy et al. 2002): for a map (u, v), conformality is the Cauchy–Riemann equation \nabla v = R_{90}\nabla u on each face. LSCM minimizes its squared residual, which splits into the Dirichlet energy minus the signed area of the image: E_{\mathrm{LSCM}}(u,v) = \tfrac12\sum_T |T|\,\big\|\nabla_T v - R_{90}\nabla_T u\big\|^2 = E_D(u) + E_D(v) - \mathcal A(u, v). The energy is quadratic in (u,v); its minimizer is only defined up to a similarity, so one pins two vertices and solves one sparse linear system. Unlike Tutte, the boundary is free;
ARAP — as-rigid-as-possible: minimize E_{\mathrm{ARAP}}(u) = \sum_{T}\min_{R_T \in SO(2)} \big\|J_T(u) - R_T\big\|_F^2, where J_T(u) is the Jacobian of the map on face T and R_T the “closest” rotation. Local/global solver:
- local: each face fixes R_T = UV^\top (SVD of J_T);
- global: with the rotations fixed, E becomes quadratic in u → linear system;
alternate until convergence — a geometric EM; an angle/area compromise without excessive distortion;
Spectral smoothing/filtering: attenuate high frequencies (denoise), sharpening — signal processing (M1) transported to surfaces;
Deformation: laplacian editing: move handles while preserving \Delta\mathbf{x} of the positions (the details): minimize \sum_i\|(L_c\mathbf{x}')_i - (L_c\mathbf{x})_i\|^2 under constraints — the same machinery as the harmonic map; skinning, morphing — graphics/AR applications of the sister ViCAI module;
Poisson reconstruction: from a normal field \mathbf{v} (oriented, scan): look for the indicator function \chi of the solid whose gradient best matches \mathbf{v}. An exact solution would satisfy \nabla\chi = \mathbf{v} \quad\Longrightarrow\quad \Delta\chi = \mathrm{div}\,\mathbf{v}, but a measured \mathbf{v} is generally not a gradient, so the converse fails. The Poisson equation is the normal equation of \min_\chi \int\|\nabla\chi - \mathbf{v}\|^2: it computes the least-squares projection of \mathbf{v} onto gradients. This is the bridge scan → closed mesh;
Decimation — quadric error metric: associate to each vertex the quadric (sum of the products of the unit plane equations) Q_i = \sum_{p \in \text{incident planes}} A_p^\top A_p . The cost of contracting edge (i,j) to the point \bar v is Q_{ij}(\bar v) = Q_i(\bar v) + Q_j(\bar v) — a quadratic form, minimized in closed form; one contracts the lowest-cost edges with a binary heap;
Curvature-based remeshing: vertex density \propto local curvature (deficit of ch. 1) — allocate the triangle budget where the geometry demands it.
# Spectral smoothing: low-pass filtering on the eigenfunctions
import numpy as np
from scipy.sparse.linalg import eigsh
# L_c, M: stiffness and mass of ch. 2; f: per-vertex function, shape (n,)
evals, evecs = eigsh(L_c, k=200, M=M, sigma=-1e-8) # 200 modes (ch. 2 kept only 20)
k = 30 # keep the 30 lowest frequencies
coef = evecs.T @ (M @ f) # spectral coefficients, shape (200,)
coef[k:] = 0 # axis 0 is the eigen-index: cut modes k+1..200
f_smooth = evecs @ coef
# soft variant: coef *= 1/(1 + (evals/lambda0)**2) (Butterworth)
# for an (n, d) signal, use coef[k:, :] = 0 and evals[:, None]6. Deep learning on surfaces
The networks of image processing assume a regular grid, which point clouds and meshes do not have. This chapter presents the architectures that learn directly on 3D data — PointNet and its local extensions, then DiffusionNet — and the obstacle they all face: a surface has no canonical orientation for a filter.
Architecture 6.1 — PointNet (Qi et al., 2017) Point clouds (without a mesh): per point: shared MLP; global max aggregation (permutation-invariant — the same requirement as GNNs, Graph ML module ch. 2); cloud classification/segmentation: f(X) = \rho\Big(\max_{x_i \in X}\ \gamma(x_i)\Big), \qquad |X| = n,\ x_i \in \mathbb{R}^3.
Proof. Invariance. A permutation \pi reorders the rows (points) of X. The shared MLP \gamma is applied row by row, to each point separately, so it only reorders the rows of \gamma(X); the entrywise max over rows does not depend on their order: f(\pi X) = f(X).
Why max rather than another invariant aggregator?
- The product \prod_i \gamma(x_i) is likewise permutation-invariant, but numerically disastrous (explodes toward 0 or \infty, unstable multiplicative gradients);
- the mean is stable but dilutes local signals — a discriminative sub-region representing 1% of the cloud is drowned;
- the max is selective: it captures “at least one point exhibits the characteristic”, which is exactly the building block of the universal approximation that follows.
Universality (sketch). On a compact set K, a continuous permutation-invariant function can be uniformly approximated by sums of “soft indicator functions” of balls: g(x) \approx \sum_j c_j\,\mathbb{1}_{B(c_j, r_j)}(x). Now, with h_\varepsilon a steep sigmoid, \mathbb{1}_{B(c,r)}(x) \approx h_\varepsilon(\|x - c\|), and \max_{x_i}\big[1 - h_\varepsilon(\|x_i - c\|)\big] equals ~1 as soon as a single point falls in the ball. The union of balls is expressed via the max: PointNet approximates the functions of “membership of at least one point in a ball”, the universal building block for compact sets (thm. 1 of the paper). ∎
PointNet++ and DGCNN — injecting the local PointNet only sees unions of regions (the global max ignores co-localization). Two answers:
PointNet++:
- farthest point sampling: iteratively choose the point farthest from the already chosen centers (uniform coverage, greedy algorithm in O(n\,k));
- ball query: group the neighbors in a ball of fixed radius;
- a local PointNet per group, then a hierarchy (progressive subsampling — exactly a spatial pooling);
multi-scale through nested radii;
DGCNN: dynamic k-NN graph in feature space (EdgeConv): x_i' = \square_{j : (i,j) \in \mathrm{kNN}}\ h_\theta(x_i, x_j), \qquad h_\theta(x_i, x_j) = \mathrm{MLP}\big(x_i,\ x_j - x_i\big), the max (or mean) over the edges; the graph is rebuilt at every layer — the neighbors drift apart in latent space: a growing receptive field (from local to global, like stacked convolutions).
Geodesic convolutions and the gauge problem A convolution filters a patch (geodesic neighborhood, anisotropic). But on a surface, there is no canonical frame in the tangent plane: where should “north” go? Every choice of gauge (local rotation of the frame) rotates the filter: an anisotropic filter is not well-defined. Three strategies:
- measure the alignment with an extrinsic direction (the gradient, the normal) — fragile;
- principal coordinates (eigenframes of the curvature tensor): stable but sign-ambiguous;
- isotropic filtering (angularly invariant): one gives up anisotropy — this is the spectral answer (filters that are functions of \Delta, cf. ChebNet of the Graph ML module) and… the DiffusionNet answer below.
Architecture 6.2 — DiffusionNet (Sharp, Attaiki, Crane, Ovsjanikov — TOG 2022): the block equations Replace convolution with learned diffusion. Each block maps per-vertex features U \in \mathbb{R}^{n \times d} (column u_c = channel c) to new features of the same width:
- Learned diffusion, one time per channel: each channel c has its own learned time t_c > 0, and h_c = e^{t_c\Delta}u_c = \Phi\,\mathrm{diag}\big(e^{-\lambda_k t_c}\big)\,\Phi^\top M\,u_c in a truncated spectral basis (about 128 modes). Small t_c keeps the channel local, large t_c makes it global; no grid of scales is fixed by hand.
- Spatial gradient features (gauge-invariant): at each vertex i, the tangent gradient of every diffused channel, written in an arbitrary local frame as a complex number, gives z_i \in \mathbb{C}^d. With a learned complex matrix A \in \mathbb{C}^{d \times d}, g_i = \tanh\Big(\mathrm{Re}\big(\overline{z_i} \odot A z_i\big)\Big) \in \mathbb{R}^d . Rotating the frame by an angle \theta multiplies every entry of z_i by e^{-\mathrm{i}\theta}. The factor cancels between \overline{z_i} and Az_i, so g_i does not depend on the frame; the raw gradient does, which is why it is never used directly.
- Per-vertex MLP with a residual: u \leftarrow u + \mathrm{MLP}\big([u,\ h,\ g]\big) at each vertex — a pointwise operator (no gauge!).
- Stack a few blocks (4 blocks of width 128 by default), between an input and an output linear layer.
Properties: discretization-agnostic (only a Laplacian, a mass matrix and a tangent gradient are required — available on meshes and on point clouds, through the point-cloud Laplacian of Sharp & Crane 2020); isotropic diffusion (no gauge) + inner products of gradients for directional information; learned scales; state of the art on FAUST/SCAPE at the time, robust to re-meshings — the “discrete element” of the field.
DiffusionNet in practice: the training recipe
- Precompute once per shape, and cache: center the shape and scale it to unit area; compute the mass M, about 128 eigenpairs of L_c\phi = \lambda M\phi, and the tangent-gradient operators. This is the only costly step (seconds per mesh); training then only multiplies small dense matrices.
- Inputs: either raw XYZ, with a random rotation of each training shape at each step (augmentation, since XYZ is not rotation-invariant), or 16 HKS values on a log-spaced time grid, which are intrinsic and need no rotation augmentation.
- Loss by task: classification — mass-weighted mean over vertices, then cross-entropy; segmentation — per-vertex cross-entropy; correspondence — a functional-map head (Architecture 6.3), supervised by the ground-truth map or with the unsupervised loss.
- Optimizer and test: Adam with learning rate 10^{-3} and step decay. Always also evaluate on remeshed test shapes, never seen in training: that is the robustness claim to check.
Architecture 6.3 — Learned functional maps (level 3) Put the network before the functional map of ch. 4 and train through it.
- A feature extractor F_\theta (DiffusionNet) produces q descriptors per vertex on both shapes, G_{\mathcal M} = F_\theta(\mathcal M) and G_{\mathcal N} = F_\theta(\mathcal N), with shared weights.
- Project them on the spectral bases, as in Theorem 4.1: D_{\mathcal M} = \Phi_{\mathcal M}^\top M_{\mathcal M}\,G_{\mathcal M}, \qquad D_{\mathcal N} = \Phi_{\mathcal N}^\top M_{\mathcal N}\,G_{\mathcal N} \qquad (k \times q).
- Functional-map layer: solve Resolution 4.3 row by row in closed form (with the per-row penalty \Omega_i). A linear solve is differentiable, so gradients reach \theta: c_i = \big(D_{\mathcal M}D_{\mathcal M}^\top + \alpha\,\Omega_i\big)^{-1}D_{\mathcal M}\,(d_i^{\mathcal N})^\top .
- Supervised loss (GeomFMaps, Donati, Sharma & Ovsjanikov 2020): \|C - C_{\mathrm{gt}}\|_F^2, with C_{\mathrm{gt}} built from the ground-truth point map as in Constraints 4.2.
- Unsupervised loss (Roufosse, Sharma & Ovsjanikov 2019): compute C_{\mathcal M\mathcal N} and C_{\mathcal N\mathcal M} and penalize what a near-isometry implies: \mathcal L = w_{b}\big\|C_{\mathcal N\mathcal M}C_{\mathcal M\mathcal N} - I\big\|_F^2 + w_{o}\big\|C_{\mathcal M\mathcal N}^\top C_{\mathcal M\mathcal N} - I\big\|_F^2 + w_{l}\big\|C_{\mathcal M\mathcal N}\Lambda_{\mathcal M} - \Lambda_{\mathcal N}C_{\mathcal M\mathcal N}\big\|_F^2, plus the same terms with the roles of the shapes swapped: bijectivity, orthogonality, Laplacian commutativity.
- At test time, convert C into a point map and refine it with ZoomOut (ch. 4, ch. 9).
Why it works: the network no longer has to output a correspondence for 10^4 vertices; it only has to make the k \times k problem of ch. 4 well posed. The structure of C (ch. 4) becomes the training signal.
- Transformers on surfaces: global attention between points/vertices with intrinsic positional encodings (HKS, random geodesic distances) as the positional add-on: the GPS recipe transplanted. A GPS layer (Rampášek et al. 2022) adds, with residuals and normalization, a local message-passing update and a global self-attention update over all nodes, then applies an MLP; positional encodings (Laplacian eigenvectors, random-walk statistics, or here the HKS) are concatenated to the input features. Details in Advanced GNN ch. 5 if you take it; quadratic cost → hierarchical subsampling;
- Self-supervised learning: geometric pretexts — predict descriptors (HKS: “know thyself”), local orientation, reconstruct masked regions; contrastive pre-training between views/poses of the same shape (as PointContrast, Xie et al. 2020, does for point clouds): LLM pre-training applied to surfaces;
- Benchmarks: Dataset Task Metric —————- ————————————– —————————- FAUST / SCAPE human correspondence (various poses) mean geodesic error (×100) SHREC shape retrieval mAP ModelNet40 cloud classification accuracy ShapeNet-parts part segmentation mIoU
# Mesh classification via LBO-features + small classifier (lab skeleton)
import torch
# features: (n, 7) = [Gauss_curvature, Mean_curvature, HKS(t1..t5)] per vertex
encoder = torch.nn.Sequential(
torch.nn.Linear(7, 128), torch.nn.ReLU(),
torch.nn.Linear(128, 64),
)
head = torch.nn.Linear(64, n_classes) # classification head
pooled = encoder(features).max(dim=0).values # (64,): max over VERTICES (dim 0)
logits = head(pooled).unsqueeze(0) # (1, n_classes)
# DiffusionNet "learned diffusion" (Architecture 6.2): one time per channel
class LearnedDiffusion(torch.nn.Module):
def __init__(self, d):
super().__init__()
self.t = torch.nn.Parameter(torch.zeros(d)) # softplus(t) > 0, one per channel
def forward(self, H, evals, evecs, mass): # H: (n, d); evecs: (n, k); mass: (n,)
H_spec = evecs.T @ (mass[:, None] * H) # (k, d) spectral coefficients
t = torch.nn.functional.softplus(self.t) # (d,)
decay = torch.exp(-evals[:, None] * t[None, :]) # (k, d): e^{-lambda_k t_c}
return evecs @ (decay * H_spec) # (n, d); parentheses matter7. Euclidean equivariance
A rotated or translated molecule is the same molecule, and a network should not have to learn this from data. This chapter defines equivariance, recalls the EGNN layer proved equivariant in Graph ML, and asks what invariance means for point clouds and surfaces — where bending adds a symmetry that rotations alone do not cover.
Definition 7.1 — Equivariance and invariance A group G acts on inputs and outputs through representations \rho_{\mathrm{in}}(g) and \rho_{\mathrm{out}}(g). A map f is equivariant if f\big(\rho_{\mathrm{in}}(g)\,x\big) = \rho_{\mathrm{out}}(g)\,f(x) \qquad \forall g \in G, and invariant if \rho_{\mathrm{out}} is trivial: f(\rho_{\mathrm{in}}(g)x) = f(x). For clouds/meshes, the natural group is E(n): an element (Q, t) with Q \in O(n) (rotations and reflections) acts on each point as x \mapsto Qx + t. A rotated molecule remains the same molecule — the network should neither relearn every orientation, nor confuse them.
Recall — EGNN (Satorras, Hoogeboom, Welling, ICML 2021), proved in Graph ML
State: positions x_i \in \mathbb{R}^n, features h_i. Layer: m_{ij} = \phi_e\big(\|x_i - x_j\|^2,\ h_i, h_j\big), \qquad x_i' = x_i + \sum_{j \ne i} (x_i - x_j)\,\phi_x(m_{ij}), \qquad h_i' = \phi_h\big(h_i, \textstyle\sum_j m_{ij}\big).
- Why it works: Q is orthogonal, so distances, hence messages and h_i', are invariant; the position update is a sum of differences x_i - x_j, each mapped to Q(x_i - x_j), so x' \mapsto Qx' + t.
- Full proof: Graph ML, ch. 8, Proposition 8.3; Ex. 5 below asks you to redo it in the notation of this page.
- Point clouds: PointNet on raw XYZ (ch. 6) is permutation-invariant but not rotation-invariant. Three cures, in increasing strength: random-rotation augmentation (approximate, learned from data), invariant inputs (distances, angles), or layers that are equivariant by construction (EGNN, SE(3)-transformers);
- Surfaces: intrinsic objects — \Delta_{\mathcal M}, its spectrum, the HKS, DiffusionNet fed with HKS — are invariant to rigid motions and to isometric bending, a much larger symmetry than E(3). DiffusionNet fed with XYZ is not, hence the rotation augmentation of the recipe in ch. 6. Its gradient features (Architecture 6.2) are invariant to a local change of tangent frame — a gauge symmetry, the surface cousin of E(n) equivariance;
- Equivariance vs invariance: for classification, invariance suffices (max pooling) — but to generate or localize, one needs equivariance (to output positions consistent with the inputs); the same debate as “final aggregation vs messages” in GNN theory;
- SE(3)-transformers (sketch): for the continuous version, attention is built on equivariant fields (irreducible representations; invariant keys/queries, vector-valued values) — the machinery exceeds this course, but the principle stands: invariant similarities, transformed values;
- E(2)-symmetric routing: in a routing problem on a 2D map (travelling salesman, vehicle routing), the optimal tour does not change when the customer coordinates are rotated, reflected or translated. Sym-NCO (Kim, Park & Park, NeurIPS 2022) trains a neural solver with a REINFORCE baseline shared across rotated copies of each instance, plus a regularizer that makes the encoder’s embedding rotation-invariant — augmentation turned into a training signal. The Year 2 dispatcher subject of the transverse project (Y2.4) builds on it;
- Connection with the Advanced GNN module, ch. 8: EGNN is a GNN whose messages are constrained by geometry — “geometry first, network second”; the generation of conformers by EGNN (positions = equivariant output) meets diffusion models (the three-line DDPM recall is in ch. 8).
8. Applications and LLGA connections
This chapter gathers where the tools of the module are used — molecules, proteins, industry, shape generation — and then works out, for self-study, three bridges to the graph and LLM tracks of the master.
- 3D molecules: a molecule is an equivariant cloud (EGNN, ch. 7) — conformer prediction (equilibrium geometries minimize energy); generation by equivariant diffusion, where an EGNN is the denoiser (EDM, Hoogeboom et al. 2022; see the recall below, Graph Generative Models, ch. 5 for EDM among the diffusion models and ch. 8 for the applications); properties (solubility, toxicity) via geometric descriptors (molecular HKS/WKS);
- Proteins: binding interfaces = correspondence of molecular surfaces (shape complementarity — partial functional maps); docking; geometry meets the master’s molecule-graph pipeline (Graph ML);
- Industry: CAD/mesh retrieval, 3D scanning (reverse engineering: Poisson reconstruction of ch. 5), quality control by comparison to tolerances, dental/orthopedics (crowns = quasi-isometric shapes); autonomous vehicles (lidars = clouds → PointNet++/DGCNN); AR/VR: avatars (human body correspondence — FAUST in production), mesh compression (spectral coordinates);
- Shape generation: diffusion on point clouds and meshes (noising/denoising positions and connectivities — the DDPM recalled below, in \mathbb{R}^{3n} with equivariance); the “shape-GPT” future: surface tokens.
DDPM in three lines (full treatment: Deep Learning P1 9.4 or Deep Learning P2 7.3)
Noise the data x_0 in closed form, with a schedule \beta_t, \alpha_t = 1 - \beta_t and \bar\alpha_t = \prod_{s \le t}\alpha_s: x_t = \sqrt{\bar\alpha_t}\,x_0 + \sqrt{1 - \bar\alpha_t}\,\varepsilon, \qquad \varepsilon \sim \mathcal N(0, I). Train a network to predict the noise, then sample by running the learned denoising steps from x_T \sim \mathcal N(0, I) back to x_0: \mathcal L(\theta) = \mathbb E_{t,\,x_0,\,\varepsilon}\,\big\|\varepsilon - \varepsilon_\theta(x_t, t)\big\|^2 . For 3D point sets, take \varepsilon_\theta to be an EGNN acting on centered positions: the generated distribution is then invariant to rotations. Links: Deep Learning (P1), ch. 9, Deep Learning (P2), 7.3, Multimodal GenAI, ch. 3.
Worked bridges (self-study, ≈ 2 h)
Three worked examples connect the module to graphs and to language. Each one reuses a chapter almost verbatim, and each one is the seed of a Year 2 transverse-project subject.
Bridge A — the HKS on a graph Laplacian. A graph has no metric, but it has a Laplacian L = D - A (symmetric positive semi-definite, 1-based spectrum, Graph ML, ch. 4). It plays the role of L_c, with M = I, and Definition 3.1 carries over unchanged: \mathrm{HKS}(v,t) is the heat that stays at node v after time t.
Two things change. Graphs have no physical scale, so measure time in units of 1/\lambda_2 and normalise each time column — the scale normalisation of ch. 3. And graphs can be large: there, compute only the low end of the spectrum with a sparse shift-invert solver, and check what it returns. Lanczos can return fewer copies of a repeated eigenvalue than its multiplicity, and leaves hanging on the same node, frequent in real graphs, create exactly such repeats. On the 77-node example below, the dense solver is exact and instant.
import numpy as np, networkx as nx
from scipy.sparse.linalg import eigsh
G = nx.les_miserables_graph() # 77 characters, weighted co-appearance graph
L = nx.laplacian_matrix(G).astype(float) # L = D - A: sparse, PSD (plays L_c, M = I)
lam, phi = np.linalg.eigh(L.toarray()) # all 77 eigenpairs, ascending
# large graph: lam, phi = eigsh(L, k=200, sigma=-1e-3), then check repeated eigenvalues
ts = np.geomspace(0.1, 10, 8) / lam[1] # time grid in units of 1/lambda_2
hks = (phi**2) @ np.exp(-np.outer(lam, ts)) # (n, 8): HKS(v, t)
hks /= hks.sum(axis=0, keepdims=True) # amplitude normalisation per time
nodes = list(G.nodes())
print([nodes[i] for i in np.argsort(-hks[:, 0])[:3]]) # most heat kept at small tAt small t the heat stays longest at peripheral characters of degree 1 — low degree means slow leakage. Jondrette and MlleVaubois come first; then six characters seen only with Myriel tie exactly (they are twins, see Bridge B), so which of them is printed third depends on rounding.
These leaves make \lambda = 1 an eigenvalue of multiplicity 9. A 30-mode eigsh run often misses some of its copies, and the ranking then changes from run to run: the warning above, observed. Used as node features, these columns are a structural encoding of the kind studied in Advanced GNN, ch. 4.
On a knowledge graph (Y2.1) or a transaction graph (Y2.5), the stability bound of ch. 3 suggests that a few injected edges move the HKS little. Treat this as a hypothesis to test, not a theorem: the bound is for small perturbations, and one edge can be a large perturbation of a sparse graph.
Bridge B — graph alignment by functional maps. Two graphs on the same entities, with an unknown node correspondence (two snapshots of a network, two knowledge graphs over shared entities), are two “shapes”. Ch. 4 applies verbatim: eigenbases of both Laplacians, HKS columns as the functions to preserve, C by Resolution 4.3, then a one-to-one node map. This is the pipeline of GRASP (Hermanns et al., 2021), without its base-alignment step.
The protocol needs gold correspondences: take G_2 as a randomly permuted copy of G_1, optionally with a fraction of its edges removed, and score the fraction of nodes mapped to their true partner.
from scipy.optimize import linear_sum_assignment
def basis(G, k): # dense eigh: fine below ~5,000 nodes
Ld = nx.laplacian_matrix(G, nodelist=range(len(G))).toarray().astype(float)
lam, phi = np.linalg.eigh(Ld); return lam[:k], phi[:, :k]
def hks_cols(lam, phi, q=16):
return (phi**2) @ np.exp(-np.outer(lam, np.geomspace(0.1, 10, q) / lam[1]))
def fmap(D1, D2, l1, l2, alpha=1e-3, mu=1e-6): # Resolution 4.3, one Omega_i per row
k = len(l1)
return np.stack([np.linalg.solve(D1 @ D1.T + alpha * np.diag((l1 - l2[i])**2)
+ mu * np.eye(k), D1 @ D2[i]) for i in range(k)])
G1 = nx.convert_node_labels_to_integers(nx.karate_club_graph())
perm = np.random.default_rng(0).permutation(len(G1)) # gold: node u of G1 is perm[u] in G2
G2 = nx.relabel_nodes(G1, dict(enumerate(perm))) # remove a few edges here for noise
l1, P1 = basis(G1, 30); l2, P2 = basis(G2, 30)
C = fmap(P1.T @ hks_cols(l1, P1), P2.T @ hks_cols(l2, P2), l1, l2)
cost = ((P2[:, None, :] - (P1 @ C.T)[None, :, :])**2).sum(-1) # delta functions, mapped by C
rows, cols = linear_sum_assignment(cost) # node rows[i] of G2 <-> cols[i] of G1
print("accuracy", np.mean(perm[cols] == rows))- On Zachary’s karate club (34 nodes, weighted edges) this recovers every node without noise. With 5% of the edges removed (4 of 78, graph kept connected), it averages about 85%, with a wide spread: from about 73% to 94% over 60 random draws.
- On Les Misérables it reaches only about 80% even without noise (75–92% across random permutations). Eleven of the 77 characters are exact twins — six seen only with Myriel, five only with Valjean, all with the same edge weight — and no structural method can tell twins apart. Guessing within each group caps the expected accuracy at about 88%: report this ceiling next to the accuracy.
- Removing edges can disconnect a graph, which adds zero eigenvalues and breaks the spectral matching: align the largest connected components.
Bridge C — 3D + language: contrastive text–shape retrieval. The CLIP objective of LLM 8.2b works with a shape tower in place of the image tower.
- Towers: a shape encoder f_\theta — PointNet (Architecture 6.1) on 2,048 points sampled on the surface, or DiffusionNet — followed by a linear projection; a frozen pretrained text encoder g followed by a trainable projection; both outputs are \ell_2-normalised. A few thousand captioned shapes cannot train a language model, so the shape tower learns to land in the text space.
- InfoNCE in three lines: for a batch of B pairs (x_i, y_i) and a temperature \tau (about 0.07, often learned), s_{ij} = \frac{\langle f_\theta(x_i),\, g(y_j)\rangle}{\tau}, \qquad \mathcal L = -\frac{1}{2B}\sum_{i=1}^{B}\Big[\log\frac{e^{s_{ii}}}{\sum_{j} e^{s_{ij}}} + \log\frac{e^{s_{ii}}}{\sum_{j} e^{s_{ji}}}\Big]. Each row and each column of S = (s_{ij}) is a B-way classification whose correct class is the diagonal.
- Data: ABO, Amazon Berkeley Objects (Collins et al., CVPR 2022), about 8,000 artist-made 3D models of real products with their catalogue listings; use the product title and category as the caption, and split by product.
- Metric: Recall@k for text → shape, the fraction of text queries whose shape is among the k nearest shape embeddings, for k = 1, 5, 10; then again on remeshed or resampled test shapes, the robustness question of ch. 6.
- Towards an LLM: the projected shape embedding can enter an LLM as a soft token through a trained projector, as images do in LLM 8.2b — the “3D tokens” idea made concrete, and the shape tower of the Y2.3 subject.
import torch.nn.functional as F
zs = F.normalize(proj_s(pointnet(points)), dim=-1) # (B, d) shape embeddings
zt = F.normalize(proj_t(text_encoder(titles)), dim=-1) # (B, d); text_encoder frozen
S = zs @ zt.T / tau # (B, B) similarities
y = torch.arange(len(S))
loss = 0.5 * (F.cross_entropy(S, y) + F.cross_entropy(S.T, y)) # InfoNCE, both directions9. Course research notes — Geometric Data Analysis (Ovsjanikov)
Maks Ovsjanikov heads the Geometric Data Analysis group at LIX (École Polytechnique). The four publications below are not merely “references” for this course: they are the course — every chapter from 2 to 6 stems directly from them.
Functional Maps — SIGGRAPH 2012 (the founding paper) M. Ovsjanikov, M. Ben-Chen, J. Solomon, A. Butscher, L. Guibas, arXiv:1204.3967 — Best Paper Award.
The story. Before 2012, shape correspondence was handled point to point: combinatorial matching of tens of thousands of vertices, fragile heuristics. The idea: represent the map as a linear operator on functions (ch. 4), which becomes a small matrix in spectral bases.
Beyond chapter 4. The paper also introduces: the effective computation of the constraints, the inverse conversion (matrix → correspondence), and above all the demonstration that a few well-chosen constraints suffice (descriptors + commutation).
Extensions (by the hundreds): dense coupling, partial maps, the shape Differences formulation (comparing how two shapes transport functions), and the ZoomOut refinement below.
Positioning. It is one of the most influential papers of modern shape analysis; the framework is today the standard and the basis of learned methods (GeomFMaps).
HKS — Sun, Ovsjanikov, Guibas, SGP 2009 A Concise and Provably Informative Multi-Scale Signature.
The genesis. The heat kernel h_t(x, y) (ch. 2) transports information between points; its diagonal h_t(x,x) — the heat that returns to its starting point — is a descriptor of x at every scale t.
Contributions.
- the multi-scale characterization (small t = local, large = global);
- the proof of isometric invariance and stability (the proof sketch of ch. 3);
- the analysis of the space of scales.
Impact. The HKS and its WKS variant are the input descriptors of almost all correspondence pipelines (including functional maps); the scale-invariant version extends it to heterogeneous scans.
ZoomOut — SIGGRAPH Asia 2019 S. Melzi, J. Ren, E. Rodolà, A. Sharma, P. Wonka, M. Ovsjanikov, arXiv:1904.07865.
Problem. The spectrum truncated to k eigenfunctions is a trade-off: small k = robust but coarse; large k = precise but noisy.
Idea. The iterative spectral refinement of ch. 4: reconstruct a hard correspondence at resolution k, reinject it as a coupling constraint at resolution k + \Delta, and repeat. The regularization emerges from the upsampling rhythm; no additional data is required.
Results. Substantial improvements on mediocre initial correspondences, near-zero cost (matrix products); it became the standard post-processor.
Positioning. The “soft ↔︎ hard” loop is the geometric ancestor of iterative refinements; its spirit resurfaces in the local/global solvers of ch. 5.
DiffusionNet — TOG 2022 N. Sharp, S. Attaiki, K. Crane, M. Ovsjanikov, arXiv:2012.00888.
Problem. All “CNN-like” architectures on surfaces depend on the discretization (mesh vs cloud, resolution) and run into the gauge problem (ch. 6).
Idea. A minimal and geometrically honest layer: diffusion with one learned time per channel + gauge-invariant gradient features + pointwise MLP — block equations in ch. 6 (Architecture 6.2).
Results. State of the art at publication on FAUST/SCAPE correspondence (also when training on one dataset and testing on the other), SHREC’11 classification and human-body segmentation; demonstrated robustness to discretization changes; works on point clouds without a mesh, through the point-cloud Laplacian of Sharp & Crane (2020).
Positioning. The prototype of “sober geometric deep learning”: instead of adapting convolution to the surface, inject the physical operator (heat) as a learning building block — the convergence of chapters 2 (operators) and 6 (networks).
The common thread HKS (2009: eigenfunctions as descriptors) → Functional Maps (2012: the map as an operator) → ZoomOut (2019: spectral refinement) → DiffusionNet (2022: the operator inside the network): fifteen years of research that follow exactly the progression of this course — from the spectral to deep learning.
Exercises
- ★ Cotangents. Verify that the stiffness matrix L_c is symmetric and that L_c\mathbf{1} = 0. On a flat mesh, check that the coordinate functions are discretely harmonic — (L_c x)_i = (L_c y)_i = 0 at every interior vertex (linear precision) — whereas a generic f, such as \sin(3x)\,y^2, gives L_c f \ne 0.
- ★ Gauss–Bonnet on the cube. Verify numerically theorem 1.3 on the cube meshed into 12 triangles; what happens to the sum of deficits if each face is subdivided into 4? (answer: unchanged — why?).
- ★ Spectrum = fingerprint. Compute the first 20 eigenvalues of \Delta for two rigid shapes and their articulated (bent) versions; plot the superimposed spectra and comment on the isometric invariance.
- ★ Heat kernel and PDEs. Verify that h_t(x, y) = \sum_k e^{-\lambda_k t}\phi_k(x)\phi_k(y) solves \partial_t h_t = \Delta_y h_t, h_0(x, y) = \delta_x(y), and deduce that u(t) = e^{t\Delta}u_0 diffuses any initial condition.
- ★ EGNN invariance. In the EGNN equations recalled in ch. 7, show that the messages m_{ij} depend only on distances that are invariant under E(n), and that the position update is equivariant; compare your proof with Graph ML, Proposition 8.3.
- ★★ Stiffness of a triangle. On a triangle T = (i, j, k) with hat functions \psi_i, \psi_j, \psi_k, show that \int_T \langle\nabla\psi_i, \nabla\psi_j\rangle\, dA = -\frac12\cot\theta_k, where \theta_k is the angle at vertex k, opposite to edge (i,j).
- ★★ HKS. Show that \mathrm{HKS}(x, t) is isometrically invariant; compute and visualize multi-scale HKS on a FAUST human — identify the “self-descriptive points” (hands, head).
- ★★ Toy functional map. Two known isometric meshes: build C by least squares (descriptor + commutation constraints); reconstruct the correspondence; measure the mean geodesic error; what happens if k is too small?
- ★★ Spectral commutation. Show that if T : \mathcal M \to \mathcal N is an isometry, then T_F \Delta_{\mathcal M} = \Delta_{\mathcal N} T_F, and that in the eigenbasis this forces C\Lambda_{\mathcal M} \approx \Lambda_{\mathcal N} C — hence the structure (almost block-diagonal over clusters of close eigenvalues) of C.
- ★★ PointNet invariance. Show that max pooling and the product are permutation-invariant, but that the product is numerically unstable (explosion/underflow of multiplicative gradients) while the mean dilutes local signals; implement the three aggregators and check on a permuted cloud (stability + selectivity of a discriminative sub-region).
- ★★★ DiffusionNet vs GCN. On FAUST (correspondence): compare a GCN on the graph of the mesh vs DiffusionNet (learned diffusion times); discuss why diffusion is a good geometric “mixer”.
- Data: FAUST (Bogo et al., CVPR 2014; free registration at faust.is.tue.mpg.de): 100 registered human scans, 10 people × 10 poses, all with the same 6,890-vertex template, so vertex i of one scan corresponds to vertex i of every other — the ground truth. Train on scans 0–79, test on 80–99.
- Robustness set: the remeshed FAUST of Ren et al. (2018), about 5,000 vertices per shape with different connectivities, distributed with its correspondences to the template.
- Setup:
pip install torch potpourri3d robust_laplacian, clonegithub.com/nmwsharp/diffusion-net, precompute and cache the operators once (recipe of ch. 6); a free GPU tier is enough. - Protocol: both networks output per-vertex features fed to the functional-map head of Architecture 6.3; report the mean geodesic error, normalised by the square root of the area, on the original and on the remeshed test shapes.
- ★★★ Project. Shape retrieval: extract (HKS, spectrum, curvatures) → aggregation → similarity by optimal transport (W_1 on descriptor distributions); evaluate the mAP on a subset of SHREC; the three connections of the course at work.
- Data: the SHREC’11 non-rigid track (Lian et al., 2011), 600 watertight meshes in 30 classes of 20 shapes in various poses. A subset of 10 classes × 20 shapes is enough; the simplified versions distributed with MeshCNN (Hanocka et al., 2019) load in seconds.
- Pipeline: per shape, normalise to unit area and compute 100 eigenpairs; then the HKS (16 times, ch. 3), the WKS, ShapeDNA (the first 50 eigenvalues) and a histogram of the angle deficit (ch. 1). Compare two shapes by W_1 between their area-weighted HKS distributions with POT’s
ot.emd2(box OT in one page, ch. 0). - Evaluation: each shape queries the 199 others; report the mean average precision (mAP) and compare with the baseline ShapeDNA + Euclidean distance.
Solution 1 — Symmetry and constants Each edge weight w_{ij} = \frac12(\cot\alpha_{ij} + \cot\beta_{ij}) is constructed symmetrically in i, j (the two opposite angles favor neither endpoint): W = W^\top.
And L_c\mathbf{1} = 0 because the diagonal term of each row i is the opposite of the sum of the off-diagonal entries: \sum_{j\sim i}w_{ij} - \sum_{j\sim i}w_{ij} = 0 .
On a flat mesh, only affine functions have a zero discrete Laplacian at the interior vertices (linear precision of the cotangent weights). For a coordinate x, (L_cx)_i = \sum_j w_{ij}(x_i - x_j) = 0 at every interior vertex, even on an irregular Delaunay mesh (numerically about 10^{-14}). A generic f, such as \sin(3x)\,y^2, gives values of order 1. At boundary vertices the one-ring is incomplete and (L_c\mathbf{x})_i \ne 0: it points along the in-plane normal to the boundary.
Solution 2 — Gauss–Bonnet on the cube Each corner receives three angles of \pi/2: \text{deficit } 2\pi - 3\times\frac{\pi}{2} = \frac{\pi}{2}, \qquad \text{total } 8\times\frac{\pi}{2} = 4\pi = 2\pi\chi \text{ with } \chi = 2. The vertices added by subdivision (the edge midpoints, inside a square face or on a crease of the cube) are flat — their angles sum to 2\pi, zero deficit — and the 8 corners keep their \frac{\pi}{2}: the sum is unchanged.
This illustrates that the right-hand side of Gauss–Bonnet is topological; it is a practical integrity test for a closed mesh: \sum_iK_iA_i = 2\pi\chi whatever the resolution.
Solution 4 — The heat kernel solves the PDE Term-by-term derivative: \partial_t h_t(x,y) = -\sum_k\lambda_ke^{-\lambda_kt}\phi_k(x)\phi_k(y), and \Delta_yh_t(x,y) gives the same sum after applying \Delta\phi_k = -\lambda_k\phi_k to the second factor — equal.
As t \to 0, h_t(x,\cdot) \to \delta_x (an approximate identity family, orthonormal basis); by superposition, u(t) = e^{t\Delta}u_0 with each mode damped by e^{-\lambda_kt}.
Solution 6 — Stiffness of a triangle Case i \ne j: redo step 2 of derivation 2.2. \nabla\psi_i is constant, orthogonal to the opposite side, with norm 1/h_i; the angle between \nabla\psi_i and \nabla\psi_j equals \pi - \theta_k, hence \int_T\langle\nabla\psi_i,\nabla\psi_j\rangle dA = |T|\cdot\big(-\frac{\cos\theta_k}{h_ih_j}\big) = -\frac12\cot\theta_k (via h_i = 2|T|/|e_{jk}|, h_j = 2|T|/|e_{ik}|, |T| = \frac12|e_{jk}||e_{ik}|\sin\theta_k).
Case i = j: \int_T\|\nabla\psi_i\|^2 dA = |T|/h_i^2 = \frac{|e_{jk}|}{2h_i} = \frac12(\cot\theta_j + \cot\theta_k), because the height from i splits the opposite side into segments h_i\cot\theta_j and h_i\cot\theta_k (an algebraic identity, also valid for obtuse angles via the signs of the cotangents).
Solution 7 — HKS invariance By theorem 2.5 (proved invariance), \phi_k^{\mathcal N} \circ T is an eigenfunction of \mathcal M for \lambda_k^{\mathcal N}. The spectra coincide after sorting and, if the eigenvalues are simple, \phi_k^{\mathcal N}(Tx) = \pm\phi_k^{\mathcal M}(x). Then \mathrm{HKS}_{\mathcal N}(Tx,t) = \sum_k e^{-\lambda_kt}\phi_k^{\mathcal N}(Tx)^2 = \sum_k e^{-\lambda_kt}\phi_k^{\mathcal M}(x)^2 = \mathrm{HKS}_{\mathcal M}(x,t) (the square kills the sign; for multiple eigenvalues: equality after a basis rotation within each eigenspace).
On FAUST: at small t, extremities (hands, head) = self-descriptive points; at large t, convergence toward the constant component — hence the logarithmic grid in t.
Solution 9 — Commutation and the structure of C With T_F(g) = g \circ T^{-1}, we have T_F^{-1}f = f \circ T, so Theorem 2.5 gives \Delta_{\mathcal M}T_F^{-1} = T_F^{-1}\Delta_{\mathcal N}, \qquad\text{that is}\qquad T_F\Delta_{\mathcal M} = \Delta_{\mathcal N}T_F . The proof of 4.2 then establishes, for simple spectra, T_F\phi_j^{\mathcal M} = \pm\phi_{\sigma(j)}^{\mathcal N} \quad\text{with}\quad \lambda_j^{\mathcal M} = \lambda_{\sigma(j)}^{\mathcal N} . In coefficients, C_{ij} vanishes unless \lambda_j^{\mathcal M} = \lambda_i^{\mathcal N}: the matrix of T_F in eigenbases is block-diagonal — C_{ij} \ne 0 only if \lambda_i^{\mathcal N} and \lambda_j^{\mathcal M} coincide.
For quasi-isometric surfaces, the equalities become proximities: the soft constraint \|C\Lambda_{\mathcal M} - \Lambda_{\mathcal N}C\|_F^2 encodes this structure, locks the frequency correspondences, and blocks spectrally absurd matchings. Limitation: close or multiple eigenvalues leave undecided blocks — resolved by the descriptor constraints.
Solution 10 — PointNet aggregators Max and product are permutation-invariant (reordering a set changes neither its max nor its product); experiment confirms this on a permuted cloud. But:
- the product of n factors below 1 collapses (underflow) and multiplies the gradients — unstable;
- the mean is stable but dilutes: if 1% of the cloud carries the discriminative signal, it drowns it where the max captures it;
- the max learns local “detectors” — the building block of universality (proof of 6.1).
Projects and assessment
The official assessment is not displayed: the SynapseS 2026–2027 sheet of this course unit is not yet published, and the master’s wiki gives only its volume (24 h), credits (2 ECTS) and instructor. Everything below is therefore a proposal: project subjects at the scale of a course project, a written exam and a rubric.
The projects exercise mainly O4 (graph-structured and geometric data) and O6 (3D data as a modality), O5 (graphs × language) through the worked bridges of ch. 8, and O7 (hands-on work on real datasets) throughout. They are course-sized versions of the Year 2 transverse-project subjects (Y2.1–Y2.5), which all draw on this module.
Solo projects
- [Solo · ≈ 25 h] Why matching collapses under remeshing. Papers: Sharp, Attaiki, Crane and Ovsjanikov (2022), DiffusionNet; Melzi et al. (2019), ZoomOut.
- Question: which correspondence pipelines survive a change of mesh, and why do the others fail — the collapse described in the introduction?
- Work: on FAUST and its remeshed version (setup of Ex. 11), compare a GCN on raw XYZ, HKS/WKS functional maps (Resolution 4.3), the same refined by ZoomOut, and DiffusionNet with a functional-map head (Architecture 6.3). Plot the mean geodesic error against k and against mesh resolution, and explain each failure with ch. 2 (graph Laplacian vs cotangent Laplacian, eigenvalue drift across meshes).
- Success: a table original vs remeshed for the four pipelines over 3 seeds, in which every degradation larger than the seed spread is explained by a measured cause.
- Deliverables: code, 4–6 page report, 10-minute talk. Chapters: ch. 2, ch. 3, ch. 4, ch. 6.
- [Solo · ≈ 25 h] Equivariant 3D molecular property prediction. Paper: Satorras, Hoogeboom and Welling (2021), EGNN. Connects this course to Graph ML, ch. 8 and Graph Generative Models, ch. 8.
- Question: how much training data does built-in E(3) equivariance save on molecular property prediction?
- Work: implement an EGNN layer (recall of ch. 7) and test its equivariance with random orthogonal matrices and translations. On QM9 (Ramakrishnan et al., 2014;
torch_geometric.datasets.QM9), predict the HOMO–LUMO gap with the EGNN and with a non-equivariant GNN fed raw coordinates, with and without rotation augmentation, for 1k, 5k and 20k training molecules. - Success: learning curves over 3 seeds; an equivariance error at float precision (relative error below 10^{-5} in float32); a clear statement of where augmentation closes the gap and where it does not. Stretch goal: an EGNN denoiser for a tiny conformer DDPM (recall of ch. 8).
- Deliverables: code, 4–6 page report, 10-minute talk. Chapters: ch. 7, ch. 8.
- [Solo · ≈ 20 h] From raw scans to texture transfer. Papers: Kazhdan, Bolitho and Hoppe (2006), Poisson reconstruction; Lévy et al. (2002), LSCM.
- Question: how much distortion does each flattening method introduce, and can a functional map carry a texture from one person to another?
- Work: from two raw FAUST scans (FAUST ships raw scans next to the registrations), run Poisson reconstruction and quadric decimation (Open3D); cut a disk-like patch and flatten it with Tutte (uniform weights), cotangent-harmonic, LSCM and ARAP maps; measure angle and area distortion and count folded triangles. Then transfer a texture between the two registrations with a functional map (ch. 4).
- Success: a four-method distortion table; a fold count per method — zero for uniform weights, as Tutte guarantees, and for cotangent weights the folds, if any, traced to negative-weight edges (perturb the patch to create obtuse triangles if none occur); a texture-error map against the ground-truth correspondence.
- Deliverables: code, 4–6 page report, 10-minute talk. Chapters: ch. 4, ch. 5.
Group projects
- [Group of 3 · ≈ 30 h each] Spectral shape retrieval with optimal transport. Papers: Mémoli (2011), Gromov–Wasserstein distances and the metric approach to object matching; Reuter, Wolter and Peinecke (2006), ShapeDNA. Connects this course to Optimal Transport, ch. 5.
- Question: on non-rigid shapes, which pair (descriptor, transport distance) retrieves best, and at what cost?
- Work: extend Ex. 12 on the SHREC’11 subset. Descriptors: HKS, WKS, ShapeDNA, curvature histograms. Distances: W_1, Sinkhorn, and Gromov–Wasserstein on geodesic or diffusion distance matrices (POT). Ablate the time grid, k and the entropic regularisation; probe isospectral pairs (the Gordon–Webb–Wolpert drums, meshed in 2D) and near-isometric failure cases.
- Split: descriptors and spectra; transport distances and their cost; evaluation, ablations and failure cases.
- Success: an mAP table with bootstrap intervals over queries, a cost–accuracy plot, and at least one failure explained by the theory of ch. 3.
- Deliverables: code, joint 8–10 page report, 20-minute talk. Chapters: ch. 0 (OT box), ch. 1, ch. 3, ch. 8.
- [Group of 3 · ≈ 30 h each] Text-to-shape retrieval: 3D tokens for an LLM. Data: ABO, Amazon Berkeley Objects (Collins et al., 2022). Connects this course to Large Language Models, 8.2b and prepares the Y2.3 subject.
- Question: can a shape encoder trained against a frozen text encoder answer language queries over a 3D catalogue, and does it survive remeshing?
- Work: Bridge C of ch. 8 at full scale — PointNet and DiffusionNet shape towers, a frozen text tower, InfoNCE. Then expose retrieval to an LLM, either as a tool that returns the top-k shape identifiers or through a trained projector that turns the shape embedding into a soft token.
- Split: data and shape towers; contrastive training and evaluation; LLM interface and robustness study.
- Success: Recall@1, 5 and 10 (text → shape) on held-out products with bootstrap intervals, Recall@10 at least five times the chance level; the drop under remeshing reported for each tower; one logged end-to-end demo.
- Deliverables: code, joint 8–10 page report, 20-minute talk with the demo. Chapters: ch. 6, ch. 8.
- [Group of 3 · ≈ 30 h each] Graph alignment with functional maps, reproduced. Paper: Hermanns, Tsitsulin, Munkhoeva, Bronstein, Mottin and Karras (2021), GRASP: Graph Alignment through Spectral Signatures. Connects this course to Graph ML, ch. 4 and Advanced GNN, ch. 4; seed of the Y2.1 subject.
- Question: how far does Bridge B go on real networks with noise, and what do GRASP’s extra steps buy?
- Work: SNAP graphs (ego-Facebook, 4,039 nodes; CA-GrQc, 5,242 nodes), each permuted with 0–5% of its edges removed, largest connected component kept. Implement Bridge B with sparse eigensolvers, then GRASP’s base alignment and a ZoomOut-style refinement; compare with a Hungarian matching on HKS columns alone.
- Split: data and noise protocol; spectral pipeline and refinement; evaluation, twin ceiling and scaling to 10^4 nodes.
- Success: accuracy-vs-noise curves over 5 seeds with the twin ceiling marked, and a measured answer to “which step brings which gain”.
- Deliverables: code, joint 8–10 page report, 20-minute talk. Chapters: ch. 3, ch. 4, ch. 8.
Written exam (proposal)
Two hours, one handwritten A4 sheet allowed, no electronic device; four questions.
Question (5 points). A matching pipeline built on raw XYZ coordinates works on test shapes in the training pose, but fails on bent poses and on remeshed copies. Explain both failures, name the tools of the course that fix each one, and give one limit of these fixes. Expected: XYZ is extrinsic, so it changes under rotation and isometric bending, while the spectrum and the HKS are intrinsic (Theorem 2.5). A graph Laplacian depends on connectivity; the cotangent Laplacian converges to \Delta_{\mathcal M} and DiffusionNet needs only operators. Limits: isospectral shapes, intrinsic symmetries, scale, multiple eigenvalues.
Question (7 points). A regular octahedron with unit edges has its six vertices at (\pm r, 0, 0), (0, \pm r, 0), (0, 0, \pm r), with r = 1/\sqrt2.
- Compute the angle deficit at each vertex and check Theorem 1.3. (b) Compute the cotangent weight w_{ij} of an edge and the barycentric area A_i. (c) Compute H_i\mathbf{n}_i = \tfrac12(M^{-1}L_c\mathbf{x})_i at (r, 0, 0) and compare with the circumscribed sphere.
Expected: (a) four angles of \pi/3 meet at each vertex, so the deficit is 2\pi/3, and 6 \times \frac{2\pi}{3} = 4\pi = 2\pi\chi, \qquad \chi = 6 - 12 + 8 = 2 .
Both opposite angles are 60°, so w_{ij} = \tfrac12\cdot\tfrac{2}{\sqrt3} = 1/\sqrt3. Four triangles of area \sqrt3/4 meet at each vertex, so A_i = 4 \cdot \tfrac13 \cdot \tfrac{\sqrt3}{4} = 1/\sqrt3.
The four neighbours of (r,0,0) are (0,\pm r,0) and (0,0,\pm r); their differences with the vertex sum to (4r, 0, 0), so (L_c\mathbf{x})_i = \frac{1}{\sqrt3}\,(4r, 0, 0), \qquad H_i\mathbf{n}_i = \tfrac12\sqrt3\cdot\frac{1}{\sqrt3}(4r,0,0) = (\sqrt2, 0, 0). The normal points outward and H_i = \sqrt2 = 1/r, exactly the mean curvature of the circumscribed sphere.
Question (5 points). Let T : \mathcal M \to \mathcal N be an isometry and T_F(g) = g \circ T^{-1}, and let C be its matrix in orthonormal eigenbases, as in Theorem 4.1: C_{ij} = \big\langle\phi_i^{\mathcal N},\, T_F\phi_j^{\mathcal M}\big\rangle .
- Prove that C\Lambda_{\mathcal M} = \Lambda_{\mathcal N}C. (b) Prove that C^\top C = I when complete bases are used.
Expected: (a) Theorem 2.5 gives T_F\Delta_{\mathcal M} = \Delta_{\mathcal N}T_F. Compute one inner product in two ways, using the self-adjointness of \Delta_{\mathcal N}: -\lambda_i^{\mathcal N}C_{ij} = \big\langle \Delta_{\mathcal N}\phi_i^{\mathcal N}, T_F\phi_j^{\mathcal M}\big\rangle = \big\langle \phi_i^{\mathcal N}, T_F\Delta_{\mathcal M}\phi_j^{\mathcal M}\big\rangle = -\lambda_j^{\mathcal M}C_{ij}. Hence, for all i, j, C_{ij}\big(\lambda_j^{\mathcal M} - \lambda_i^{\mathcal N}\big) = 0, which is the entrywise form of C\Lambda_{\mathcal M} = \Lambda_{\mathcal N}C.
- An isometry preserves areas, hence the inner products of functions. By Parseval in the complete basis of \mathcal N: (C^\top C)_{jl} = \sum_i C_{ij}C_{il} = \big\langle T_F\phi_j^{\mathcal M}, T_F\phi_l^{\mathcal M}\big\rangle = \big\langle \phi_j^{\mathcal M}, \phi_l^{\mathcal M}\big\rangle = \delta_{jl}.
Question (3 points). In DiffusionNet, the gradient of a feature at a vertex is a complex number z written in an arbitrary tangent frame. Show that z depends on the frame but g = \mathrm{Re}(\bar z\,a z), with a learned a \in \mathbb{C}, does not. Why does the diffusion step need no frame at all?
Expected: rotating the frame by \theta maps z to e^{-\mathrm{i}\theta}z, so z itself rotates, while \overline{e^{-\mathrm{i}\theta}z}\;a\,e^{-\mathrm{i}\theta}z = e^{\mathrm{i}\theta}e^{-\mathrm{i}\theta}\,\bar z\,a z = \bar z\,a z . Diffusion e^{t\Delta} acts on scalar functions through the intrinsic, isotropic operator \Delta: no direction is ever chosen.
Grading rubric (proposal)
| Criterion | Weight | What earns the marks |
|---|---|---|
| Understanding of the method and the theory | 25 % | Correct statement of the method, its invariances and its assumptions, linked to the chapters used |
| Implementation and reproducibility | 25 % | Correct, readable code; fixed seeds and scripts that regenerate every figure; operators cached as in the recipe of ch. 6 |
| Experiments | 25 % | The success criterion reached or the gap explained; an honest baseline; robustness to remeshing or noise measured, not assumed |
| Analysis and critical view | 15 % | Failure cases traced to a cause (symmetry, isospectrality, connectivity, scale); one proposed improvement |
| Report and talk | 10 % | Clear structure, readable figures, talk within time, precise answers to questions; in groups, each member presents their part |
References
- M. Ovsjanikov, M. Ben-Chen, J. Solomon, A. Butscher, L. Guibas, Functional Maps: A Flexible Representation of Maps Between Shapes, SIGGRAPH 2012 — the founding paper of the course.
- N. Sharp, S. Attaiki, K. Crane, M. Ovsjanikov, DiffusionNet: Discretization Agnostic Learning on Surfaces, TOG 2022; S. Melzi, J. Ren, E. Rodolà, A. Sharma, P. Wonka, M. Ovsjanikov, ZoomOut: Spectral Upsampling for Efficient Shape Correspondence, SIGGRAPH Asia 2019; J. Sun, M. Ovsjanikov, L. Guibas, A Concise and Provably Informative Multi-Scale Signature Based on Heat Kernel (HKS), SGP 2009.
- M. Bronstein et al., Shape Analysis: Foundations and Trends (non-rigid shape); Geometric Deep Learning: Going beyond Euclidean Data, IEEE SPM 2017; Geometric Deep Learning: Grids, Groups, Graphs, Geodesics, and Gauges (the “blueprint”), 2021.
- C. Qi et al., PointNet, CVPR 2017; PointNet++, NeurIPS 2017; Y. Wang et al., Dynamic Graph CNN for Learning on Point Clouds (DGCNN/EdgeConv), TOG 2019.
- V. Satorras, E. Hoogeboom, M. Welling, E(n) Equivariant Graph Neural Networks (EGNN), ICML 2021.
- K. Crane, F. de Goes, M. Desbrun, P. Schröder, Digital Geometry Processing with Discrete Exterior Calculus, 2013 — the reference DGP course; U. Pinkall & K. Polthier, Computing Discrete Minimal Surfaces and Their Conjugates (discrete Dirichlet and cotangents), 1993; M. Meyer, M. Desbrun, P. Schröder, A. Barr, Discrete Differential-Geometry Operators for Triangulated 2-Manifolds (mixed Voronoi, deficit), 2003.
- D. Boscaini et al., Learning Spectral Descriptors / Geodesic CNN — the entry of deep learning on surfaces; M. Aubry, U. Schlickewei, D. Cremers (Wave Kernel Signature), ICCV 2011; M. Reuter, F. Wolter, N. Peinecke (ShapeDNA), CAD 2006.
- C. Gordon, D. Webb, S. Wolpert, One cannot hear the shape of a drum, Bull. AMS 1992 (isospectral but not isometric); R. Kimmel & J. Sethian, Computing Geodesic Paths on Manifolds (Fast Marching), PNAS 1998; K. Crane, C. Weischedel, M. Wardetzky, The Heat Method for Distance Computation, TOG 2013.
- M. Garland & P. Heckbert, Surface Simplification Using Quadric Error Metrics, SIGGRAPH 1997; L. Liu, L. Zhang, Y. Xu, C. Gotsman, S. Gortler, A Local/Global Approach to Mesh Parameterization (ARAP), SGP 2008; M. Kazhdan, M. Bolitho, H. Hoppe, Poisson Surface Reconstruction, SGP 2006.
- Added with the 2026 revision: M. Bronstein, I. Kokkinos, Scale-Invariant Heat Kernel Signatures for Non-rigid Shape Recognition, CVPR 2010; B. Lévy, S. Petitjean, N. Ray, J. Maillot, Least Squares Conformal Maps for Automatic Texture Atlas Generation, SIGGRAPH 2002; W. Tutte, How to Draw a Graph, Proc. LMS 1963; M. Floater, One-to-one Piecewise Linear Mappings over Triangulations, Math. Comp. 2003, and Mean Value Coordinates, CAGD 2003; N. Sharp, K. Crane, A Laplacian for Nonmanifold Triangle Meshes (with the point-cloud Laplacian), SGP 2020.
- Learned functional maps: O. Litany et al., Deep Functional Maps (FMNet), ICCV 2017; J.-M. Roufosse, A. Sharma, M. Ovsjanikov, Unsupervised Deep Learning for Structured Shape Matching, ICCV 2019; N. Donati, A. Sharma, M. Ovsjanikov, Deep Geometric Functional Maps (GeomFMaps), CVPR 2020.
- Bridges and projects: J. Hermanns, A. Tsitsulin, M. Munkhoeva, A. Bronstein, D. Mottin, P. Karras, GRASP: Graph Alignment through Spectral Signatures, APWeb-WAIM 2021; M. Kim, J. Park, J. Park, Sym-NCO: Leveraging Symmetricity for Neural Combinatorial Optimization, NeurIPS 2022; J. Collins et al., ABO: Dataset and Benchmarks for Real-World 3D Object Understanding, CVPR 2022; E. Hoogeboom, V. Satorras, C. Vignac, M. Welling, Equivariant Diffusion for Molecule Generation in 3D, ICML 2022; F. Mémoli, Gromov–Wasserstein Distances and the Metric Approach to Object Matching, Found. Comput. Math. 2011; L. Rampášek et al., Recipe for a General, Powerful, Scalable Graph Transformer (GPS), NeurIPS 2022; S. Xie et al., PointContrast, ECCV 2020.
- Datasets: F. Bogo, J. Romero, M. Loper, M. Black, FAUST, CVPR 2014; J. Ren, A. Poulenard, P. Wonka, M. Ovsjanikov, Continuous and Orientation-preserving Correspondences via Functional Maps (remeshed FAUST/SCAPE), SIGGRAPH Asia 2018; Z. Lian et al., SHREC’11 Track: Shape Retrieval on Non-rigid 3D Watertight Meshes, 3DOR 2011; R. Ramakrishnan et al., Quantum Chemistry Structures and Properties of 134 kilo Molecules (QM9), Scientific Data 2014.
- libigl; Discrete Differential Geometry (Caltech/Coursera) — the tools of the lab sessions.