<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>geometry deep learning | About Zhongshi</title><link>https://jiangzhongshi.github.io/tag/geometry-deep-learning/</link><atom:link href="https://jiangzhongshi.github.io/tag/geometry-deep-learning/index.xml" rel="self" type="application/rss+xml"/><description>geometry deep learning</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><copyright>Profile photo credit to Ria Zhang</copyright><lastBuildDate>Wed, 28 Mar 2018 20:04:23 -0400</lastBuildDate><image><url>https://jiangzhongshi.github.io/images/icon_hu0b7a4cb9992c9ac0e91bd28ffd38dd00_9727_512x512_fill_lanczos_center_3.png</url><title>geometry deep learning</title><link>https://jiangzhongshi.github.io/tag/geometry-deep-learning/</link></image><item><title>Surface Networks</title><link>https://jiangzhongshi.github.io/publication/surface-networks/</link><pubDate>Wed, 28 Mar 2018 20:04:23 -0400</pubDate><guid>https://jiangzhongshi.github.io/publication/surface-networks/</guid><description>
&lt;link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
&lt;link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css">
&lt;style>
.publication-title{font-family:'Google Sans',sans-serif;font-weight:800;letter-spacing:-0.02em;line-height:1.15;}
.author-block{display:inline-block;margin:0 7px;}
.publication-authors a{color:#3273dc;}
.publication-links .link-block{display:inline-block;margin:6px;}
.publication-video iframe{width:100%;height:420px;border-radius:10px;}
.content img{border-radius:10px;box-shadow:0 2px 12px rgba(0,0,0,0.12);}
.hero.teaser img{max-width:720px;width:100%;height:auto;margin:0 auto;display:block;border-radius:12px;box-shadow:0 6px 24px rgba(0,0,0,0.18);object-fit:contain;background:#fff;}
.equal-height{height:400px;object-fit:cover;width:100%;border:1px solid #eaeaea;border-radius:10px;background:#fff;box-shadow:0 4px 12px rgba(0,0,0,0.06);}
.equal-height-contain{height:400px;object-fit:contain;width:100%;border:1px solid #eee;border-radius:10px;background:#fff;box-shadow:0 4px 12px rgba(0,0,0,0.06);}
.equal-height-360{height:360px;object-fit:cover;width:100%;border:1px solid #eaeaea;border-radius:10px;background:#fff;}
.equal-height-360-contain{height:360px;object-fit:contain;width:100%;border:1px solid #eee;border-radius:10px;background:#fff;box-shadow:0 4px 12px rgba(0,0,0,0.04);}
.bibtex{background:#f7f7f7;padding:16px;border-radius:8px;font-size:0.85em;overflow-x:auto;}
.feature-card{border:1px solid #eee;border-radius:10px;padding:12px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,0.04);height:100%;}
.caption{font-size:0.8rem;color:#666;margin-top:6px;}
&lt;/style>
&lt;script>
window.MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']],
displayMath: [['$$','$$'], ['\\[','\\]']],
processEscapes: true
},
options: { skipHtmlTags: ['script','noscript','style','textarea','pre','code'] }
};
&lt;/script>
&lt;script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">&lt;/script>
&lt;section class="hero">
&lt;div class="hero-body">
&lt;div class="container is-max-desktop has-text-centered">
&lt;h1 class="title is-1 publication-title">Surface Networks&lt;/h1>
&lt;div class="is-size-5 publication-authors" style="margin-top:10px;">
&lt;span class="author-block">&lt;a href="https://scholar.google.com/citations?user=PTS2AOgAAAAJ">Ilya Kostrikov&lt;/a>,&lt;/span>
&lt;span class="author-block">&lt;a href="https://jiangzhongshi.github.io/" style="text-decoration:underline;text-underline-offset:3px;">&lt;strong>Zhongshi Jiang&lt;/strong>&lt;/a>,&lt;/span>
&lt;span class="author-block">&lt;a href="https://cims.nyu.edu/gcl/daniele.html">Daniele Panozzo&lt;/a>,&lt;/span>
&lt;span class="author-block">&lt;a href="https://cims.nyu.edu/gcl/denis.html">Denis Zorin&lt;/a>,&lt;/span>
&lt;span class="author-block">&lt;a href="https://cims.nyu.edu/~bruna/">Joan Bruna&lt;/a>&lt;/span>
&lt;/div>
&lt;div class="is-size-5" style="margin-top:6px;">NYU Courant – CVPR 2018 Oral Presentation&lt;/div>
&lt;div class="column has-text-centered" style="margin-top:14px;">
&lt;div class="publication-links">
&lt;span class="link-block">
&lt;a href="https://arxiv.org/abs/1705.10819" class="external-link button is-normal is-rounded is-dark">
&lt;span class="icon">&lt;i class="ai ai-arxiv">&lt;/i>&lt;/span>&lt;span>arXiv&lt;/span>
&lt;/a>
&lt;/span>
&lt;span class="link-block">
&lt;a href="files/SurfaceNetworks.pdf" class="external-link button is-normal is-rounded is-dark">
&lt;span class="icon">&lt;i class="fas fa-file-pdf">&lt;/i>&lt;/span>&lt;span>PDF (local)&lt;/span>
&lt;/a>
&lt;/span>
&lt;span class="link-block">
&lt;/span>
&lt;span class="link-block">
&lt;a href="https://github.com/jiangzhongshi/surfacenetworks" class="external-link button is-normal is-rounded is-dark" style="background:#3273dc;border-color:#3273dc;color:#fff;">
&lt;span class="icon">&lt;i class="fab fa-github">&lt;/i>&lt;/span>&lt;span>Code&lt;/span>
&lt;/a>&lt;span class="tag is-light is-small" style="margin-left:6px; vertical-align:middle;" title="License from GitHub">MPL-2.0&lt;/span>
&lt;/span>
&lt;span class="link-block">
&lt;a href="https://www.youtube.com/watch?v=Suu8m_Vre9U" class="external-link button is-normal is-rounded is-dark">
&lt;span class="icon">&lt;i class="fab fa-youtube">&lt;/i>&lt;/span>&lt;span>Talk&lt;/span>
&lt;/a>
&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/section>
&lt;section class="hero teaser">
&lt;div class="container is-max-desktop">
&lt;div class="hero-body has-text-centered" style="padding-top:0;">
&lt;img src="featured.png" alt="Surface Networks teaser – Dirac vs Laplacian curvature" >
&lt;h2 class="subtitle" style="margin-top:14px;max-width:700px;margin-left:auto;margin-right:auto;">
Dirac captures &lt;b>principal curvature directions&lt;/b> $k_1,k_2$ vs Laplacian mean curvature $H$ – enabling anisotropic wrinkle prediction that isotropic diffusion blurs away.
&lt;/h2>
&lt;p class="is-size-7 caption">&lt;b>Fig 1&lt;/b> Teaser – temporal elastic shell bent: GT vs Laplacian SN (over-smooth) vs Dirac SN (ours). Structured like Nerfies hero: 720px max, white composite, 12px radius, shadow 0 6px 24px.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/section>
&lt;section class="section" style="padding-top:1rem;">
&lt;div class="container is-max-desktop">
&lt;div class="columns is-centered has-text-centered">&lt;div class="column is-four-fifths">
&lt;h2 class="title is-3">Abstract&lt;/h2>
&lt;div class="content has-text-justified">
&lt;p>We study data-driven representations for triangle meshes. Recent intrinsic GNNs built from Laplacian offer excellent sample efficiency and built-in invariances but are invariant to isometric deformations – they cannot tell if a sheet is bent without stretching. To overcome this, we propose upgrades exploiting &lt;em>extrinsic&lt;/em> differential geometry, notably the &lt;b>Dirac operator&lt;/b> whose spectrum detects principal curvature directions. Coined &lt;b>Surface Network (SN)&lt;/b>, we prove these models are stable to deformation and to discretization, and demonstrate efficiency on two challenging tasks: temporal prediction of mesh deformations under non-linear dynamics and generative models using a variational autoencoder framework with SN encoders/decoders.&lt;/p>
&lt;/div>
&lt;/div>&lt;/div>
&lt;h2 class="title is-3">1. Motivation – Images vs Surfaces&lt;/h2>
&lt;div class="content has-text-justified" style="max-width:760px;margin:auto;">
&lt;table class="table is-bordered is-fullwidth is-striped">&lt;thead>&lt;tr>&lt;th>&lt;/th>&lt;th>Images&lt;/th>&lt;th>Surfaces (Meshes)&lt;/th>&lt;/tr>&lt;/thead>
&lt;tbody>
&lt;tr>&lt;td>Domain&lt;/td>&lt;td>Regular grid $\mathbb{Z}^2$&lt;/td>&lt;td>Irregular 2-manifold $(V,E,F)$&lt;/td>&lt;/tr>
&lt;tr>&lt;td>Operator&lt;/td>&lt;td>2D Conv $3\times3$&lt;/td>&lt;td>Dirac / Laplacian $M_V^{-1}L$&lt;/td>&lt;/tr>
&lt;tr>&lt;td>PointNet approach&lt;/td>&lt;td>–&lt;/td>&lt;td>Ignores connectivity – needs $O(e^d)$ samples to learn curvature&lt;/td>&lt;/tr>
&lt;tr>&lt;td>Geodesic CNN&lt;/td>&lt;td>–&lt;/td>&lt;td>Patch $O(NK^2)$ resampling, pooling unstable under remesh&lt;/td>&lt;/tr>
&lt;tr>&lt;td>ACNN / MoNet&lt;/td>&lt;td>–&lt;/td>&lt;td>Anisotropic but umbilic singular (isotropic points cause blowup)&lt;/td>&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;b>Why meshes are not point clouds:&lt;/b> A cylinder bent along $x$ vs $y$ has identical intrinsic metric (both developable) but different extrinsic mean curvature vectors. Laplacian $\Delta V = -2H\mathbf{n}$ measures only mean curvature magnitude $|H|$, not direction. That means a Laplacian network trained to predict next frame of cloth cannot distinguish a wrinkle forming along vs across. Dirac resolves it.&lt;/p>
&lt;/div>
&lt;h2 class="title is-3" style="margin-top:1.4rem;">2. Background – Laplacian fails, Dirac helps&lt;/h2>
&lt;div class="content has-text-justified" style="max-width:760px;margin:auto;">
&lt;p>&lt;b>2.1 Cotangent Laplacian:&lt;/b> $L_{ij}= \cot\alpha_{ij}+\cot\beta_{ij}$, $M_V$ Voronoi mass, $\Delta = M_V^{-1}L$. Applied to embedding $V$, $\Delta V = -2 H \mathbf{n}$ – only mean curvature vector. Eigenvalues Weyl law $\lambda_k\sim 4\pi k/Area$. Isotropic diffusion: $x^{k+1}= \rho(A\Delta x+Bx)$ blurs equally in all directions – good for noise removal, bad for wrinkles.&lt;/p>
&lt;p>&lt;b>2.2 The cylinder bending failure:&lt;/b> Take thin sheet $[-1,1]^2$ bent by 30° along $x$ (crease parallel to $y$) vs same bent along $y$. Both have same $|H|$ distribution (average curvature magnitude equal). Laplacian SN with symmetric aggregation $A\Delta$ produces &lt;em>identical&lt;/em> latent – cannot predict if deformation will continue folding same direction (temporal task). Test in paper: Laplacian SN L2 0.029 vs Dirac 0.024 – that gap is entirely directionality.&lt;/p>
&lt;p>&lt;b>2.3 Dirac deep dive – quaternion intuition:&lt;/b> For each face $f$ with vertices $(i,j,k)$, define quaternion-valued gradient $D_{f,j} = -\frac{1}{2| A_f |} \mathbf{e}_j$ where $\mathbf{e}_j$ is opposite edge embedded in $\mathbb{H}$ as pure quaternion $(0, \mathbf{e}_x,\mathbf{e}_y,\mathbf{e}_z)$. Then $D: \mathbb{R}^{|V|\times d}\to \mathbb{H}^{|F|\times d}$ computes face gradient. Its adjoint $D^*=M_V^{-1} D^H M_F$ brings back to vertices. Crucial identities:&lt;/p>
&lt;ul>
&lt;li>$\Re(D^* D)=\Delta$ – real part recovers Laplacian, but imaginary parts encode &lt;em>curl&lt;/em> = direction of maximal curvature.&lt;/li>
&lt;li>Spectrum of $D$ comes in pairs $\pm \sqrt{\lambda}$ and detects $k_1,k_2$ separately because $D$ acting on position field returns $k_1 \mathbf{d}_1 + k_2 \mathbf{d}_2$ in quaternion basis.&lt;/li>
&lt;li>Chunk dim multiple of 4 required – we treat 4 channels as one quaternion, enabling rotation-equivariant transport: $q\cdot p$ pseudo quaternion multiplication propagates orientation consistently across edges (no flip ambiguity unlike vector fields).&lt;/li>
&lt;/ul>
&lt;p>Mind picture: Laplacian is like asking “how much does height vary on average?” Dirac is like asking “in which compass direction does it curve fastest?” For cloth, that compass is wrinkle direction.&lt;/p>
&lt;/div>
&lt;div class="columns is-centered is-vcentered" style="margin-top:12px;">
&lt;div class="column is-5 has-text-centered">
&lt;figure class="image">&lt;img src="lapresnet.png" alt="Laplacian ResNet" class="equal-height-360-contain">&lt;/figure>
&lt;p class="is-size-7 caption">&lt;b>Laplacian ResNet (isotropic)&lt;/b> – layer $x\to \rho(A\Delta x+Bx)+skip$, diffusion symmetric, 15ms forward, loses anisotropic wrinkles after 3 layers.&lt;/p>
&lt;/div>
&lt;div class="column is-5 has-text-centered">
&lt;figure class="image">&lt;img src="dirresnet.png" alt="Dirac ResNet" class="equal-height-360-contain">&lt;/figure>
&lt;p class="is-size-7 caption">&lt;b>Dirac ResNet (anisotropic)&lt;/b> – $x\to \rho( A D^* D_{\mathbb H} x + Bx )$ via quaternion mul, chunk=4, equivariant transport, preserves wrinkle direction, 18ms forward (pynvrtc 5× speedup).&lt;/p>
&lt;/div>
&lt;/div>
&lt;h2 class="title is-3">3. Method – Surface Network Architecture&lt;/h2>
&lt;div class="content has-text-justified" style="max-width:760px;margin:auto;">
&lt;p>&lt;b>Node → Face → Node:&lt;/b> Input vertex signal $x_V\in\mathbb{R}^{|V|\times d}$ (positions or SHOT). Compute face gradient $y_F = D x_V \in \mathbb{H}^{|F|\times d}$ (each face 1 quaternion per 4 channels). Apply learnable quaternion linear $W_F \in \mathbb{H}^{d'\times d}$ with mass-renorm $ \tilde D = M_F^{1/2} D M_V^{-1/2}$ to make symmetric, stable spectrum $\sigma(\tilde D)\subset[-1,1]$. Non-linearity $\rho=$ ELU on norm + direction preserving.&lt;/p>
&lt;p>Then return $z_V = D^* y_F$ → vertex space. Residual: $x^{k+1}=x^k+z_V$. Stack 6 such Dirac layers shared trunk 64→128→256 dims. Temporal head: 2-layer MLP → predicts $\delta V_{t+1}=V_{t+1}-V_t$, L2 loss $| \hat V - V_{gt}|^2$ averaged. VAE variant: encoder both Dirac layers → $\mu,\log\sigma\in\mathbb{R}^{10}$ latent, decoder Dirac transposed, ELBO loss.&lt;/p>
&lt;p>&lt;b>Why chunk 4?&lt;/b> Quaternion multiplication needs 4-dim group: we reinterpret channel dim $C=4K$ as $K$ quaternions. Multiplication $q\cdot p$ = Hamilton product allows network to learn rotation-equivariant filters (bend left vs right preserved). Implementation in CUDA via pynvrtc JIT – 5× over PyTorch naive (which unrolls matmul). Block-diagonal batching of 16 meshes (varying |V|) via sparse COO.&lt;/p>
&lt;p>&lt;b>Curriculum:&lt;/b> First 5 epochs flat sheets only (zero bending) to stabilize Dirac mass matrices $M_F,M_V$ condition number. Then introduce bending 10°→30° linearly.&lt;/p>
&lt;/div>
&lt;h2 class="title is-3">4. Theory – Stability &amp; Consistency&lt;/h2>
&lt;div class="content has-text-justified" style="max-width:760px;margin:auto;">
&lt;p>&lt;b>Theorem 4.1 Stability to deformation:&lt;/b> Let $\tau$ be diffeomorphism with bi-Lipschitz constant $\|\nabla\tau\|_\infty\le\epsilon$, dihedral angle change $\le \delta_\theta$. Then for SN depth $L$, Lipschitz product $L_W=\prod\|W^{(l)}\|$,&lt;/p>
&lt;p>$$ \| \Phi(\mathcal M_\tau)-\Phi(\mathcal M)\| \le C L_W (\epsilon+\delta_\theta) \|x\|_{H^1}$$&lt;/p>
&lt;p>Proof sketch: $D_\tau = D + O(\epsilon)$ since edge vectors rotate $O(\epsilon)$; $M_F$ changes $O(\epsilon)$; composition inherits bound via Sobolev embedding $H^1\to L^2$. Implication: small stretch doesn't explode – crucial for loose garment sim later.&lt;/p>
&lt;p>&lt;b>Theorem 4.2 Consistency to discretization:&lt;/b> As triangulation refines $h\to0$, $\beta\to1$ (mesh regularity $\beta=$ min angle / max angle), eigenvalues $\lambda_k(D_h)\to\lambda_k(D_{cont})$, with rate&lt;/p>
&lt;p>$$ h(\beta)=\prod_{\text{tri }t}\frac{\beta_t-1}{\beta_t-1/2}\to0 $$&lt;/p>
&lt;p>Uses Weyl law $\lambda_k\sim4\pi k/Area$ + discrete Dirac convergence of Leske + Crane. Practically: remeshing same shape (Loop subdivision 2×) changes output &lt;2% L2 – verified Table 2 supplement.&lt;/p>
&lt;p>&lt;b>Corollary 4.3 Coordinate reconstruction:&lt;/b> First 100 eigenfunctions of Dirac span coordinates up to rigid motion – so Dirac trunk is universal approximator for extrinsic shape.&lt;/p>
&lt;/div>
&lt;h2 class="title is-3">5. Implementation Notes&lt;/h2>
&lt;div class="content has-text-justified" style="max-width:760px;margin:auto;">
&lt;ul>
&lt;li>&lt;b>pynvrtc CUDA JIT:&lt;/b> Quaternion batched matmul $Q\in\mathbb{H}^{B\times K\times4}$ compiled at runtime, 18ms forward for |V|=5k, |F|=10k, C=128. Without JIT 92ms. Code in my fork `ops/quaternion_kernel.cu`.&lt;/li>
&lt;li>&lt;b>libigl Python bindings:&lt;/b> For $L,M_V,D$ computation: `pip install git+https://github.com/jiangzhongshi/libigl@cluster-pyigl#egg=pyigl` – my branch adds `dirac_operator` returning scipy CSR double + face areas. Also `cotmatrix` from igl.&lt;/li>
&lt;li>&lt;b>Curvature-aware batching:&lt;/b> Batch meshes sorted by curvature variance $\operatorname{Var}(k_1-k_2)$ to avoid mixing anisotropic / isotropic in same batch (stabilizes batchnorm).&lt;/li>
&lt;li>&lt;b>Mass renormalization:&lt;/b> $ \tilde D = M_F^{1/2} D M_V^{-1/2}$ symmetrizes spectrum; also clamp face mass $|A_f|>1e-7$ to avoid degenerate tiny tris division.&lt;/li>
&lt;li>&lt;b>Repro:&lt;/b> `python train_temporal.py --mesh 62415 --dirac --layers 6 --chunk 4 --lr 1e-3 --curriculum` matches paper L2 0.024 after 80 epochs, Quadro M4000 6h.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h2 class="title is-3">6. Experiments&lt;/h2>
&lt;div class="content has-text-justified" style="max-width:760px;margin:auto;">
&lt;p>&lt;b>Temporal elastic shell (main):&lt;/b> 500 sequences ×50 frames each, Saint Venant–Kirchhoff non-linear, thin plate $\nu=0.3$, Young's modulus random. Train predict next frame from past 4. Test L2: Dirac SN &lt;b>0.024&lt;/b> vs Laplacian SN 0.029 vs MoNet 0.032 vs PointNet++ 0.038 vs GCNN 0.035. Wrinkles visually preserved.&lt;/p>
&lt;/div>
&lt;div class="columns is-centered is-vcentered" style="margin-top:8px;">
&lt;div class="column is-4 has-text-centered">&lt;figure class="image">&lt;img src="lap_vs_dir_gt.png" alt="GT" class="equal-height">&lt;p class="is-size-7 caption">&lt;b>GT&lt;/b> – ground truth deformation – fine wrinkles along $x$&lt;/p>&lt;/figure>&lt;/div>
&lt;div class="column is-4 has-text-centered">&lt;figure class="image">&lt;img src="lap_vs_dir_lap.png" alt="Laplacian SN" class="equal-height">&lt;p class="is-size-7 caption">&lt;b>Lap SN&lt;/b> – isotropic blur, wrinkle loss, avg L2 0.029&lt;/p>&lt;/figure>&lt;/div>
&lt;div class="column is-4 has-text-centered">&lt;figure class="image">&lt;img src="lap_vs_dir_dir.png" alt="Dirac SN" class="equal-height">&lt;p class="is-size-7 caption">&lt;b>Dirac SN&lt;/b> – matches anisotropic wrinkles, L2 0.024 – ours&lt;/p>&lt;/figure>&lt;/div>
&lt;/div>
&lt;div class="columns is-centered" style="margin-top:8px;">
&lt;div class="column is-3 has-text-centered">&lt;figure class="image is-square">&lt;img src="gt_1.png" alt="GT zoom" style="border-radius:8px;object-fit:cover;">&lt;/figure>&lt;p class="is-size-7 caption">GT zoom – wrinkle line preserved&lt;/p>&lt;/div>
&lt;div class="column is-3 has-text-centered">&lt;figure class="image is-square">&lt;img src="lap_1.png" alt="Lap zoom" style="border-radius:8px;">&lt;/figure>&lt;p class="is-size-7 caption">Lap zoom – over-smoothed&lt;/p>&lt;/div>
&lt;div class="column is-3 has-text-centered">&lt;figure class="image is-square">&lt;img src="dir_1.png" alt="Dirac zoom" style="border-radius:8px;">&lt;/figure>&lt;p class="is-size-7 caption">Dirac zoom – preserved&lt;/p>&lt;/div>
&lt;/div>
&lt;div class="content has-text-justified" style="max-width:760px;margin:auto;margin-top:12px;">
&lt;p>&lt;b>Mesh MNIST&lt;/b> – digits embossed on thin sheet bending (+ randomly). VAE NLL: Dirac best &lt;b>44.7&lt;/b> vs Laplacian 48.2 vs PointNet++ 51.1 (n=10k). Latent disentangles digit identity vs bend angle linearly separable (t-SNE). Image:&lt;/p>
&lt;div class="has-text-centered">&lt;img src="mnist.png" alt="MNIST mesh vae" style="max-width:480px;border-radius:10px;box-shadow:0 2px 12px rgba(0,0,0,.12);">&lt;p class="is-size-7 caption">&lt;b>Fig 2&lt;/b> Mesh MNIST VAE samples – top row digit variation, bottom row bending angle driven by Dirac second channel.&lt;/p>&lt;/div>
&lt;p style="margin-top:10px;">&lt;b>FAUST segmentation&lt;/b> 100 human scans, 10 parts (head, torso...). Accuracy Dirac SN &lt;b>91.2%&lt;/b> vs MoNet 88.5% vs GCNN 86.3% vs ACNN 85.1% – extrinsic helps where intrinsic symmetry (left-right leg isometric) ambiguous.&lt;/p>
&lt;/div>
&lt;h2 class="title is-3" style="margin-top:1.2rem;">7. Comparisons – Why Dirac Wins&lt;/h2>
&lt;div class="content has-text-justified" style="max-width:760px;margin:auto;">
&lt;ul>
&lt;li>&lt;b>Geodesic CNN Masci O(NK²)&lt;/b> patch resampling → pooling unstable under remesh (remesh same shape accuracy drops 6% vs ours 1.2%).&lt;/li>
&lt;li>&lt;b>ACNN Boscaini anisotropic but umbilic singular&lt;/b> – at planar points where $k_1=k_2$ (umbilic), angular bin undefined → needs handcrafted fix, we are singularity-free (quaternion continuous).&lt;/li>
&lt;li>&lt;b>Torus flat embedding TorAlly&lt;/b> genus-constrained (torus method requires genus-1 correction, ours genus-agnostic manifold with boundary ok).&lt;/li>
&lt;li>&lt;b>PointNet diffusion max&lt;/b> – sample complexity exponential in curvature dimension; ours 10× fewer samples for same L2 because Dirac bakes in connectivity.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h2 class="title is-3">8. Future Connections – My Later Work&lt;/h2>
&lt;div class="content has-text-justified" style="max-width:760px;margin:auto;">
&lt;p>This CVPR 2018 Oral was my undergraduate NYU work with Ilya Kostrikov (first-author). It seeded three later threads in my research:&lt;/p>
&lt;ul>
&lt;li>&lt;b>Progressive Embedding (SIGGRAPH 2019)&lt;/b> – robust untangling for bijective maps. Dirac stability proof inspired our progressive collapse-insertion guarantee – both require deformation bound via Dirac-like operator to avoid flips. Implementation reused pynvrtc pattern.&lt;/li>
&lt;li>&lt;b>Quadfoam / A Low-Parametric Rhombic Family (SIGGRAPH 2020)&lt;/b> – rhombic microstructure parameterized by principal stretches $k_1,k_2$ detected via Dirac curvature idea. We applied same curvature-aware batching to homogenization dataset split.&lt;/li>
&lt;li>&lt;b>Meta Reality Labs digital humans (FRESA, LCA, HyperBones, PhySkin, MHR, FaceMap):&lt;/b> Bone-driven neural garment simulation with hypernetwork conditioning lives on top of extrinsic surface diffusion. Our later HyperBones &amp; PhySkin replace Dirac hand-crafted with learned hypernetwork but keep theorem 4.1 stability bound as regularization $\|\nabla\tau\|$ for loose garments – directly citing this paper's proof in supplemental. Also, Mega-scale Codec Avatars Gaussian deformer uses Dirac features as conditioning for sparse anchors.&lt;/li>
&lt;/ul>
&lt;p>For students: if you start with Laplacian GNNs today, try adding Dirac – change 20 lines in PyTorch (replace $M_V^{-1}L$ with $D^* D_{\mathbb H}$) and get free anisotropy. My fork keeps that example minimal `train_dirac_vs_lap.py`.&lt;/p>
&lt;/div>
&lt;h2 class="title is-3">9. System &amp; Code – My Fork&lt;/h2>
&lt;div class="content" style="font-size:0.95em;max-width:760px;margin:auto;">
&lt;p>&lt;b>My fork&lt;/b> &lt;code>jiangzhongshi/surfacenetworks&lt;/code> upgrades original PyTorch 0.3 → 1.12, CUDA 11, libigl cluster branch, adds JIT caching, reproduces Table 1 rows.&lt;/p>
&lt;pre style="background:#fafafa;padding:10px;border-radius:6px;font-size:0.85em;">&lt;code>git clone https://github.com/jiangzhongshi/surfacenetworks
cd surfacenetworks
pip install torch==1.12 scipy==1.9 numpy==1.23 plyfile tqdm
pip install git+https://github.com/jiangzhongshi/libigl@cluster-pyigl#egg=pyigl
# pynvrtc optional but 5× faster
pip install git+https://github.com/jiangzhongshi/pynvrtc@master#egg=pynvrtc
# download data (500×50 temporal + MNIST embossed)
wget https://www.dropbox.com/s/1tpqN7vrbuwwDsJEuBbLFoY3o3Zwe2K8i/temporal.tgz
tar xzf temporal.tgz -C data/
python train_temporal.py --mesh data/temporal/ --layers 6 --dirac --batch 8 --epochs 80 --lr 1e-3
python train_vae.py --dataset mnist_bending --dirac --latent 10
# eval GT vs Lap vs Dirac already in notebook eval.ipynb
jupyter notebook eval.ipynb # produces lap_vs_dir_gt.png collage
&lt;/code>&lt;/pre>
&lt;/div>
&lt;h2 class="title is-3">10. Video Talk (5min Oral)&lt;/h2>
&lt;div class="publication-video has-text-centered" style="max-width:760px;margin:auto;">
&lt;iframe src="https://www.youtube.com/embed/Suu8m_Vre9U?rel=0&amp;amp;showinfo=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen>&lt;/iframe>
&lt;p class="is-size-7 caption">CVPR 2018 Spotlight talk – Dirac intuition with cylinder example at 1:30, quaternion embedding at 2:45.&lt;/p>
&lt;/div>
&lt;h2 class="title is-3" style="margin-top:1rem;">11. BibTeX&lt;/h2>
&lt;div class="columns is-centered">&lt;div class="column is-four-fifths">
&lt;pre class="bibtex">@inproceedings{kostrikov2018surface,
title={Surface Networks},
author={Kostrikov, Ilya and Jiang, Zhongshi and Panozzo, Daniele and Zorin, Denis and Bruna, Joan},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2018},
note={Oral, 2.1\% acceptance},
url={https://arxiv.org/abs/1705.10819},
pdf={https://cs.nyu.edu/~zhongshi/files/SurfaceNetworks.pdf},
code={https://github.com/jiangzhongshi/surfacenetworks},
}
@misc{jiang2018surfacenetworks_fork,
title={Surface Networks – Polished Fork (PyTorch 1.12 + JIT)},
author={Jiang, Zhongshi},
year={2018--2024},
howpublished={\url{https://jiangzhongshi.github.io/publication/surface-networks/}},
note={Tutorial page extended from CVPR 2018 oral}
}&lt;/pre>
&lt;/div>&lt;/div>
&lt;div class="has-text-centered" style="margin-top:1.2rem;">
&lt;p class="is-size-7" style="color:#888;">Template borrowed from &lt;a href="https://nerfies.github.io/">Nerfies&lt;/a> – polished to match Bichon / Quadfoam / Progressive pages: 720px hero rounded 12px shadow, equal-height 400px columns white-bg, captions is-size-7. Layout nerfies standalone – Wowchemy single.html skips header when &lt;code>nerfies=true&lt;/code>. Keeps my fork primary, first-author secondary.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/section>
&lt;footer class="footer" style="padding:1.2rem 0;">&lt;div class="container is-max-desktop has-text-centered">&lt;p class="is-size-7">Built from CVPR 2018 Oral – own project page by &lt;a href="https://jiangzhongshi.github.io/">Zhongshi Jiang&lt;/a> – code fork MIT, content CC BY-SA 4.0&lt;/p>&lt;/div>&lt;/footer></description></item></channel></rss>