From 5fb16a951038facc2facf7009fa4c6563940ebb0 Mon Sep 17 00:00:00 2001 From: Matin Ghavami Date: Fri, 5 Dec 2025 17:53:48 -0500 Subject: [PATCH] math writeup first draft --- .gitignore | 2 + docs/fmb-math.qmd | 190 +++++++++++++++++++++++++++++++++++++++++ docs/make_fig.sh | 4 + docs/plate_diagram.png | Bin 0 -> 46309 bytes docs/plate_diagram.tex | 77 +++++++++++++++++ 5 files changed, 273 insertions(+) create mode 100644 docs/fmb-math.qmd create mode 100755 docs/make_fig.sh create mode 100644 docs/plate_diagram.png create mode 100644 docs/plate_diagram.tex diff --git a/.gitignore b/.gitignore index 3ef5ac2..181daa2 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ build/ /output/ /.vscode/ /.pixi/ +*.aux +*.log diff --git a/docs/fmb-math.qmd b/docs/fmb-math.qmd new file mode 100644 index 0000000..75ce728 --- /dev/null +++ b/docs/fmb-math.qmd @@ -0,0 +1,190 @@ +\newcommand{\L}{\mathcal{L}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\R}{\mathbb{R}} +\newcommand{\SE}{\mathrm{SE}} +\newcommand{\argmax}{\operatorname*{argmax}} + +# Mathematical Description of Fuzzy Metaball Rendering + +## Notation + +$\N_n$ denotes the set $\{1, 2, \ldots, n\}$. $\SE(d)$ denotes the group of +$d$-dimensional rigid transformations (hence $\SE(3)$ is the group of poses). +$S^d$ denotes the $d$-dimensional sphere, i.e. the set of $d + 1$ dimensional +unit vectors. + +The notation $\mathrm{symbol} := \mathrm{expression}$ offers the definition of "symbol" in terms of the "expression." + +Greek letters are unknowns, Latin letters are known + +Writing $(\tau, \rho) := \pi $ for $\pi \in \SE(3)$ means that $\pi$'s translational +component is $\tau$ and it's rotational component is $\rho$. For $v \in \R^d$ +we write $\pi\cdot v$ to denote $v$ transformed by $\pi$. + +| Symbol | Type | Meaning | +|:------:|:----:|:--------| +| $N$ | $\N$ | number of fuzzy metaballs | +| $T$ | $\N$ | number of time steps (frames) | +| $H$ | $\N$ | height of each observed frame in pixels | +| $W$ | $\N$ | width of each observed frame in pixels | +| $i$ | $\N_H$ | index ranging over the rows in each observed frame | +| $j$ | $\N_W$ | index ranging over the columns in each observed frame | +| $k$ | $\N_N$ | index ranging over the fuzzy metaballs | +| $t$ | $\N_T$ | index ranging over frames | +| $v_{ij}$ | $S^2$ | direction of the ray corresponding to pixel $(i, j)$ in the camera frame | +| $\pi^{(t)}$ | $\SE(3)$ | camera pose in world frame at frame $t$ | +| $\mu_k$ | $\R^3$ | the mean vector of the $k$-the fuzzy metaball | +| $\Sigma_k$ | $\R^{3\times 3}_{\succ 0}$ | the covariance matrix of the $k$-the fuzzy metaball | +| $\lambda_k$ | $\R$ | log-weight of the $k$-the fuzzy metaball | +| $d_{ijk}^{(t)}$ | $\R$ | intersection depth of ray corresponding to pixel $(i, j)$ at frame $t$ with the $k$-th fuzzy metaball | +| $q_{ijk}^{(t)}$ | $\R$ | the value of the quadratic form of $k$-th fuzzy metaball at the intersection of ray $(i, j)$ at frame $t$ | +| $w_{ijk}^{(t)}$ | $\R$ | depth blending weight of the $k$-th fuzzy metaball for pixel $(i, j)$ at frame $t$ | +| $\bar{d}_{ij}^{(t)}$ | $\R$ | depth value of pixel $(i, j)$ at frame $t$ | +| $c_{ij}^{(t)}$ | $[0, 1]$ | confidence value of pixel $(i, j)$ at frame $t$ | +| $\L_c$ | $\R$ | contour loss (a function of $c_{ij}^{(t)}$) | +| $\L_d$ | $\R$ | depth loss (a function of $d_{ij}^{(t)}$) | + + +## Forward Pass + +\begin{align*} +%\argmax_{d \in \R} (\mu_k - \Delta x^{(t)} - dv_{ij}^{(t)})^\top +%\Sigma^{-1} (\mu_k - \Delta x^{(t)} - dv_{ij}^{(t)}) \\ +(\tau^{(t)}, \rho^{(t)}) &:= \pi^{(t)} \\ +v_{ij}^{(t)} &:= \rho^{(t)}v_{ij} \\ +d_{ijk}^{(t)} &:= \frac{(\mu_k - \tau^{(t)})^\top\Sigma_k^{-1}v_{ij}^{(t)}} + {{v_{ij}^{(t)}}^\top\Sigma_k^{-1}v_{ij}^{(t)}} \\ +q_{ijk}^{(t)} &:= (\mu_k - \tau^{(t)} - d_{ijk}^{(t)}v_{ij}^{(t)})^\top + \Sigma_k^{-1} (\mu_k - \tau^{(t)} - d_{ijk}^{(t)}v_{ij}^{(t)}) \\ +\tilde{w}_{ijk}^{(t)} &:= + \exp\left(\beta_1(-q_{ijk}^{(t)}/2 + \lambda_k) - \beta_2 d_{ijk}^{(t)}\right) \\ +w_{ijk}^{(t)} &:= \frac{\tilde{w}_{ijk}^{(t)}}{\sum_{k=1}^N \tilde{w}_{ijk}^{(t)}} \\ +\bar{d}_{ij}^{(t)} &:= \sum_{k=1}^N w_{ijk}^{(t)} d_{ijk}^{(t)} \\ +c_{ij}^{(t)} &:= 1 - \exp\left(\sum_{k=1} \exp(q_{ijk}^{(t)}/2 - \lambda_k)\right) +\end{align*} + +![Dependency graph of the variables in the forward pass using plate +notation](plate_diagram.png){width=540} + +## Depth Backward Pass + +\begin{align*} +\frac{\partial \L_d}{\partial \tilde{w}_{ijk}^{(t)}} &= + \frac{\partial \L_d}{\partial \bar{d}_{ij}^{(t)}} + \frac{\partial \bar{d}_{ij}^{(t)}}{\partial \tilde{w}_{ijk}^{(t)}}\\ +\frac{\partial \L_d}{\partial q_{ijk}^{(t)}} &= + \frac{\partial \L_d}{\partial \tilde{w}_{ijk}^{(t)}} + \frac{\partial \tilde{w}_{ijk}^{(t)}}{\partial q_{ijk}^{(t)}}\\ +\frac{\partial \L_d}{\partial d_{ijk}^{(t)}} &= + \frac{\partial \L_d}{\partial q_{ijk}^{(t)}} + \frac{\partial q_{ijk}^{(t)}}{\partial d_{ijk}^{(t)}} + + \frac{\partial \L_d}{\partial \tilde{w}_{ijk}^{(t)}} + \frac{\partial \tilde{w}_{ijk}^{(t)}}{\partial d_{ijk}^{(t)}} + + \frac{\partial \L_d}{\partial \bar{d}_{ij}^{(t)}} + \frac{\partial \bar{d}_{ij}^{(t)}}{\partial d_{ijk}^{(t)}} \\ +\frac{\partial \L_d}{\partial \tau^{(t)}} &= + \sum_{i,j}\sum_k \frac{\partial \L_d}{\partial q_{ijk}^{(t)}} + \frac{\partial q_{ijk}^{(t)}}{\partial \tau^{(t)}} + + \sum_{i,j}\sum_k \frac{\partial \L_d}{\partial d_{ijk}^{(t)}} + \frac{\partial d_{ijk}^{(t)}}{\partial \tau^{(t)}} \\ +\frac{\partial \L_d}{\partial v_{ij}^{(t)}} &= + \sum_k \frac{\partial \L_d}{\partial q_{ijk}^{(t)}} + \frac{\partial q_{ijk}^{(t)}}{\partial v_{ij}^{(t)}} + + \sum_k \frac{\partial \L_d}{\partial d_{ijk}^{(t)}} + \frac{\partial d_{ijk}^{(t)}}{\partial v_{ij}^{(t)}} \\ +\frac{\partial \L_d}{\partial \rho^{(t)}} &= + \sum_{i,j} \frac{\partial \L_d}{\partial v_{ij}^{(t)}} + \frac{\partial v_{ij}^{(t)}}{\partial \rho^{(t)}} \\ +\frac{\partial \L_d}{\partial \lambda_k} &= + \sum_t \sum_{i, j} + \frac{\partial \L_d}{\partial \tilde{w}_{ijk}^{(t)}} + \frac{\partial \tilde{w}_{ijk}^{(t)}}{\partial \lambda_k} \\ +\frac{\partial \L_d}{\partial \mu_k} &= + \sum_t \sum_{i, j} \frac{\partial \L_d}{\partial q_{ijk}^{(t)}} + \frac{\partial q_{ijk}^{(t)}}{\partial \mu_k} + + \sum_t \sum_{i, j} \frac{\partial \L_d}{\partial d_{ijk}^{(t)}} + \frac{\partial d_{ijk}^{(t)}}{\partial \mu_k} \\ +\frac{\partial \L_d}{\partial \Sigma_k} &= + \sum_t \sum_{i, j} \frac{\partial \L_d}{\partial q_{ijk}^{(t)}} + \frac{\partial q_{ijk}^{(t)}}{\partial \Sigma_k} + + \sum_t \sum_{i, j} \frac{\partial \L_d}{\partial d_{ijk}^{(t)}} + \frac{\partial d_{ijk}^{(t)}}{\partial \Sigma_k} \\ +\end{align*} + + +## Confidence Backward Pass + +\begin{align*} +\frac{\partial \L_c}{\partial d_{ijk}^{(t)}} &= + \frac{\partial \L_c}{\partial q_{ijk}^{(t)}} + \frac{\partial q_{ijk}^{(t)}}{\partial d_{ijk}^{(t)}}\\ +\frac{\partial \L_c}{\partial q_{ijk}^{(t)}} &= + \frac{\partial \L_c}{\partial c_{ij}^{(t)}} + \frac{\partial c_{ij}^{(t)}}{\partial q_{ijk}^{(t)}}\\ +\frac{\partial \L_c}{\partial \tau^{(t)}} &= + \sum_{i,j}\sum_k \frac{\partial \L_c}{\partial d_{ijk}^{(t)}} + \frac{\partial d_{ijk}^{(t)}}{\partial \tau^{(t)}} + + \sum_{i,j}\sum_k \frac{\partial \L_c}{\partial q_{ijk}^{(t)}} + \frac{\partial q_{ijk}^{(t)}}{\partial \tau^{(t)}}\\ +\frac{\partial \L_c}{\partial v_{ij}^{(t)}} &= + \sum_{k} \frac{\partial \L_c}{\partial d_{ijk}^{(t)}} + \frac{\partial d_{ijk}^{(t)}}{\partial v_{ij}^{(t)}} + + \sum_{k} \frac{\partial \L_c}{\partial q_{ijk}^{(t)}} + \frac{\partial q_{ijk}^{(t)}}{\partial v_{ij}^{(t)}} \\ +\frac{\partial \L_c}{\partial \rho^{(t)}} &= + \sum_{i,j} \frac{\partial \L_c}{\partial v_{ij}^{(t)}} + \frac{\partial v_{ij}^{(t)}}{\partial \rho^{(t)}} \\ +\frac{\partial \L_c}{\partial \lambda_k} &= + \sum_{t}\sum_{i,j} \frac{\partial \L_c}{\partial c_{ij}^{(t)}} + \frac{\partial c_{ij}^{(t)}}{\partial \lambda_k} \\ +\frac{\partial \L_c}{\partial \mu_k} &= + \sum_{t}\sum_{i,j} \frac{\partial \L_c}{\partial q_{ijk}^{(t)}} + \frac{\partial q_{ijk}^{(t)}}{\partial \mu_k} + + \sum_{t}\sum_{i,j} \frac{\partial \L_c}{\partial d_{ijk}^{(t)}} + \frac{\partial d_{ijk}^{(t)}}{\partial \mu_k} \\ +\frac{\partial \L_c}{\partial \Sigma_k} &= + \sum_{t}\sum_{i,j} \frac{\partial \L_c}{\partial q_{ijk}^{(t)}} + \frac{\partial q_{ijk}^{(t)}}{\partial \Sigma_k} + + \sum_{t}\sum_{i,j} \frac{\partial \L_c}{\partial d_{ijk}^{(t)}} + \frac{\partial d_{ijk}^{(t)}}{\partial \Sigma_k} +\end{align*} + +We can simplify the backward pass by inlining those derivatives that depend on +fixed $i$, $j$, and $t$. We get: + +\begin{align*} +\frac{\partial \L_c}{\partial \tau^{(t)}} &= + \sum_{i,j}\sum_k \frac{\partial \L_c}{\partial c_{ij}^{(t)}} + \frac{\partial c_{ij}^{(t)}}{\partial q_{ijk}^{(t)}} \left( + \frac{\partial q_{ijk}^{(t)}}{\partial d_{ijk}^{(t)}} + \frac{\partial d_{ijk}^{(t)}}{\partial \tau^{(t)}} + + \frac{\partial q_{ijk}^{(t)}}{\partial \tau^{(t)}} + \right)\\ +\frac{\partial \L_c}{\partial \rho^{(t)}} &= + \sum_{i,j} \sum_{k} \frac{\partial \L_c}{\partial c_{ij}^{(t)}} + \frac{\partial c_{ij}^{(t)}}{\partial q_{ijk}^{(t)}} \left( + \frac{\partial q_{ijk}^{(t)}}{\partial d_{ijk}^{(t)}} + \frac{\partial d_{ijk}^{(t)}}{\partial v_{ij}^{(t)}} + + \frac{\partial q_{ijk}^{(t)}}{\partial v_{ij}^{(t)}} + \right) + \frac{\partial v_{ij}^{(t)}}{\partial \rho^{(t)}} \\ +\frac{\partial \L_c}{\partial \lambda_k} &= + \sum_{t}\sum_{i,j} \frac{\partial \L_c}{\partial c_{ij}^{(t)}} + \frac{\partial c_{ij}^{(t)}}{\partial \lambda_k} \\ +\frac{\partial \L_c}{\partial \mu_k} &= + \sum_{t}\sum_{i,j} \frac{\partial \L_c}{\partial c_{ij}^{(t)}} + \frac{\partial c_{ij}^{(t)}}{\partial q_{ijk}^{(t)}} \left( + \frac{\partial q_{ijk}^{(t)}}{\partial \mu_k} + + \frac{\partial q_{ijk}^{(t)}}{\partial d_{ijk}^{(t)}} + \frac{\partial d_{ijk}^{(t)}}{\partial \mu_k} + \right) \\ +\frac{\partial \L_c}{\partial \Sigma_k} &= + \sum_{t}\sum_{i,j} \frac{\partial \L_c}{\partial c_{ij}^{(t)}} + \frac{\partial c_{ij}^{(t)}}{\partial q_{ijk}^{(t)}} \left( + \frac{\partial q_{ijk}^{(t)}}{\partial \Sigma_k} + + \frac{\partial q_{ijk}^{(t)}}{\partial d_{ijk}^{(t)}} + \frac{\partial d_{ijk}^{(t)}}{\partial \Sigma_k} + \right) \\ +\end{align*} + +## diff --git a/docs/make_fig.sh b/docs/make_fig.sh new file mode 100755 index 0000000..4ddc240 --- /dev/null +++ b/docs/make_fig.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +pdflatex plate_diagram.tex +convert -verbose -density 300 -trim plate_diagram.pdf -size 1080x1080 -quality 100 -flatten -sharpen 0x1.0 plate_diagram.png diff --git a/docs/plate_diagram.png b/docs/plate_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..b62195916cf6a723b641f5a2c892b7fe984c2f70 GIT binary patch literal 46309 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[length=2mm]}, + every node/.style={font=\small}, + every edge/.style = {draw, -latex} +] + +% Define coordinates for nodes +\node (lambdak) at ( -1, 5) {$\lambda_k$}; +\node (muk) at ( 0, 5) {$\mu_k$}; +\node (Sigmak) at ( 1, 5) {$\Sigma_k$}; + +\node (vij) at (2.5, 4) {$v_{ij}^{(t)}$}; +\node (rho) at ( 4, 4) {$\rho^{(t)}$}; + +\node (tau) at ( 4, 3.5) {$\tau^{(t)}$}; + +\node (qijk) at ( 0, 2.5) {$q_{ijk}^{(t)}$}; +\node (dijk) at ( 1, 2.5) {$d_{ijk}^{(t)}$}; + +\node (wijk) at ( 0, 1) {$\tilde{w}_{ijk}^{(t)}$}; + +\node (cij) at ( -1, -0.2) {$c_{ij}^{(t)}$}; +\node (dijbar) at ( 1, -0.2) {$\bar{d}_{ij}^{(t)}$}; + +\node (Lc) at ( -1, -1.4) {$\mathcal{L}_c$}; +\node (Ld) at ( 1, -1.4) {$\mathcal{L}_d$}; + + +\draw (Sigmak.south) edge (qijk.north) edge (dijk.north) + (muk.south) edge (qijk.north) edge (dijk.north) + (vij.south) edge (qijk.north) edge (dijk.north) + (rho.west) edge (vij.east) + (tau.west) edge (qijk.north) edge (dijk.north) + (lambdak.south) edge (wijk.north) edge (cij.north) + (qijk.south) edge (wijk.north) edge (cij.north) + (dijk.south) edge (wijk.north) edge (dijbar.north) + (dijk.west) edge (qijk.east) + (wijk.south) edge (dijbar.north) + (cij) edge (Lc) + (dijbar) edge (Ld); + +% Inner plate k +\begin{scope}[on background layer] + \node[draw, rectangle, rounded corners=2pt, + inner sep=4pt, + fit=(Sigmak)(muk)(lambdak)(wijk)(dijk), + label={[anchor=south east, font=\small]south east:$k$}] (plate_k) {}; +\end{scope} + +% Middle plate (i,j) +\begin{scope}[on background layer] + \node[draw, rectangle, rounded corners=2pt, + inner sep=4pt, + fit=(wijk)(dijk)(vij)(cij)(dijbar), + label={[anchor=south east, font=\small]south east:$(i,j)$}] (plate_ij) {}; +\end{scope} + +% Outer plate t +\begin{scope}[on background layer] + \node[draw, rectangle, rounded corners=2pt, + inner sep=4pt, + fit=(plate_ij)(rho)(tau), + label={[anchor=south east, font=\small]south east:$t$}] (plate_t) {}; +\end{scope} + +\end{tikzpicture} +\end{document}