--- title: Evaluation of the Performance of Randomized FFD Control Grids subtitle: Master Thesis author: Stefan Dresselhaus affiliation: Graphics & Geometry Group ... # Introduction - Many modern industrial design processes require advanced optimization methods due to increased complexity - Examples are - physical domains - aerodynamics (i.e. drag) - fluid dynamics (i.e. throughput of liquid) - NP-hard problems - layouting of circuit boards - stacking of 3D--objects ----- # Motivation - Evolutionary algorithms cope especially well with these problem domains ![Example of the use of evolutionary algorithms in automotive design](../arbeit/img/Evo_overview.png) - But formulation can be tricky ----- # Motivation - Problems tend to be very complex - i.e. a surface with $n$ vertices has $3\cdot n$ Degrees of Freedom (DoF). - Need for a small-dimensional representation that manipulates the high-dimensional problem-space. - We concentrate on smooth deformations ($C^3$-continuous) - But what representation is good? ----- # What representation is good? - In biological evolution this measure is called *evolvability*. - no consensus on definition - meaning varies from context to context - measurable? - Measure depends on representation as well. ----- # RBF and FFD - Andreas Richter uses Radial Basis Functions (RBF) to smoothly deform meshes ![Example of RBF--based deformation and FFD targeting the same mesh.](../arbeit/img/deformations.png) ----- # RBF and FFD - My master thesis transferred his idea to Freeform-Deformation (FFD) - same setup - same measurements - same results? ![Example of RBF--based deformation and FFD targeting the same mesh.](../arbeit/img/deformations.png) ----- # Outline - **What is FFD?** - What is evolutionary optimization? - How to measure evolvability? - Scenarios - Results ----- # What is FFD? - Create a function $s : [0,1[^d \mapsto \mathbb{R}^d$ that is parametrized by some special control--points $p_i$ with coefficient functions $a_i(u)$: $$ s(\vec{u}) = \sum_i a_i(\vec{u}) \vec{p_i} $$ - All points inside the convex hull of $\vec{p_i}$ accessed by the right $u \in [0,1[^d$. ![Example of a parametrization of a line with corresponding deformation to generate a deformed objet](../arbeit/img/B-Splines.png) ----- # Definition B-Splines - The coefficient functions $a_i(u)$ in $s(\vec{u}) = \sum_i a_i(\vec{u}) \vec{p_i}$ are different for each control-point - Given a degree $d$ and position $\tau_i$ for the $i$th control-point $p_i$ we define \begin{equation} N_{i,0,\tau}(u) = \begin{cases} 1, & u \in [\tau_i, \tau_{i+1}[ \\ 0, & \mbox{otherwise} \end{cases} \end{equation} and \begin{equation} \label{eqn:ffd1d2} N_{i,d,\tau}(u) = \frac{u-\tau_i}{\tau_{i+d}} N_{i,d-1,\tau}(u) + \frac{\tau_{i+d+1} - u}{\tau_{i+d+1}-\tau_{i+1}} N_{i+1,d-1,\tau}(u) \end{equation} - The derivatives of these coefficients are also easy to compute: $$\frac{\partial}{\partial u} N_{i,d,r}(u) = \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u)$$ # Properties of B-Splines - Coefficients vanish after $d$ differentiations - Coefficients are continuous with respect to $u$ - A change in prototypes only deforms the mapping locally (between $p_i$ to $p_{i+d+1}$) ![Example of Basis-Functions for degree $2$. [Brunet, 2010]
Note, that Brunet starts his index at $-d$ opposed to our definition, where we start at $0$.](../arbeit/img/unity.png) # Definition FFD - FFD is a space-deformation resulting based on the underlying B-Splines - Coefficients of space-mapping $s(u) = \sum_j a_j(u) p_j$ for an initial vertex $v_i$ are constant - Set $u_{i,j}~:=~N_{j,d,\tau}$ for each $v_i$ and $p_j$ to get the projection: $$ v_i = \sum_j u_{i,j} \cdot p_j = \vec{u}_i^{T} \vec{p} $$ or written with matrices: $$ \vec{v} = \vec{U} \vec{p} $$ - $\vec{U}$ is called **deformation matrix** # Implementation of FFD - As we deal with 3D-Models we have to extend the introduced 1D-version - We get one parameter for each dimension: $u,v,w$ instead of $u$ - Task: Find correct $u,v,w$ for each vertex in our model - We used a gradient-descent (via the gauss-newton algorithm) # Implementation of FFD - Given $n,m,o$ control-points in $x,y,z$--direction each Point inside the convex hull is defined by $$V(u,v,w) = \sum_i \sum_j \sum_k N_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot C_{ijk}.$$ - Given a target vertex $\vec{p}^*$ and an initial guess $\vec{p}=V(u,v,w)$ we define the error--function for the gradient--descent as: $$Err(u,v,w,\vec{p}^{*}) = \vec{p}^{*} - V(u,v,w)$$ # Implementation of FFD - Derivation is straightforward $$ \scriptsize \begin{array}{rl} \displaystyle \frac{\partial Err_x}{\partial u} & p^{*}_x - \displaystyle \sum_i \sum_j \sum_k N_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot {c_{ijk}}_x \\ = & \displaystyle - \sum_i \sum_j \sum_k N'_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot {c_{ijk}}_x \end{array} $$ yielding a Jacobian: $$ \scriptsize J(Err(u,v,w)) = \left( \begin{array}{ccc} \frac{\partial Err_x}{\partial u} & \frac{\partial Err_x}{\partial v} & \frac{\partial Err_x}{\partial w} \\ \frac{\partial Err_y}{\partial u} & \frac{\partial Err_y}{\partial v} & \frac{\partial Err_y}{\partial w} \\ \frac{\partial Err_z}{\partial u} & \frac{\partial Err_z}{\partial v} & \frac{\partial Err_z}{\partial w} \end{array} \right) $$ # Implementation of FFD - Armed with this we iterate the formula $$J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)$$ using Cramer's rule for inverting the small Jacobian. - Usually terminates after $3$ to $5$ iteration with an $\epsilon := \vec{p^*} - V(u,v,w) < 10^{-4}$ - self-intersecting grids can invalidate the results - no problem, as these get not generated and contradict some properties we want (like locality) ----- # Outline - What is FFD? - **What is evolutionary optimization?** - How to measure evolvability? - Scenarios - Results ----- # What is evolutionary optimization? ## 1 1 ~~~ $t := 0$; initialize $P(0) := \{\vec{a}_1(0),\dots,\vec{a}_\mu(0)\} \in I^\mu$; evaluate $F(0) : \{\Phi(x) | x \in P(0)\}$; while($c(F(t)) \neq$ true) { recombine: $P’(t) := r(P(t))$; mutate: $P''(t) := m(P’(t))$; evaluate $F(t) : \{\Phi(x) | x \in P''(t)\}$ select: $P(t + 1) := s(P''(t) \cup Q,\Phi)$; $t := t + 1$; } ~~~ ~~~ $t$: Iteration-step $I$: Set of possible Individuals $P$: Population of Individuals $F$: Fitness of Individuals $Q$: Either set of parents or $\emptyset$ $r(..) : I^\mu \mapsto I^\lambda$ $m(..) : I^\lambda \mapsto I^\lambda$ $s(..) : I^{\lambda + \mu} \mapsto I^\mu$ ~~~ - Algorithm to model simple inheritance - Consists of three main steps - recombination - mutation - selection - An "individual" in our case is the displacement of control-points # Evolutional loop - **Recombination** generates $\lambda$ new individuals based on the characteristics of the $\mu$ parents. - This makes sure that the next guess is close to the old guess. - **Mutation** introduces new effects that cannot be produced by mere recombination of the parents. - Typically these are minor defects to individual members of the population i.e. through added noise - **Selection** selects $\mu$ individuals from the children (and optionally the parents) using a *fitness--function* $\Phi$. - Fitness could mean low error, good improvement, etc. - Fitness not solely determines who survives, there are many possibilities # Outline - What is FFD? - What is evolutionary optimization? - **How to measure evolvability?** - Scenarios - Results # How to measure evolvability? - Different (conflicting) optimization targets - convergence speed? - convergence quality? - As $\vec{v} = \vec{U}\vec{p}$ is linear, we can also look at $\Delta \vec{v} = \vec{U}\, \Delta \vec{p}$ - We only change $\Delta \vec{p}$, so evolvability should only use $\vec{U}$ for predictions # Evolvability criteria - **Variability** - roughly: "How many actual Degrees of Freedom exist?" - Defined by $$\mathrm{variability}(\vec{U}) := \frac{\mathrm{rank}(\vec{U})}{n} \in [0..1]$$ - in FFD this is $1/\#\textrm{CP}$ for the number of control-points used for parametrization # Evolvability criteria - **Regularity** - roughly: "How numerically stable is the optimization?" - Defined by $$\mathrm{regularity}(\vec{U}) := \frac{1}{\kappa(\vec{U})} = \frac{\sigma_{min}}{\sigma_{max}} \in [0..1]$$ with $\sigma_{min/max}$ being the least/greatest right singular value. - high, when $\|\vec{Up}\| \propto \|\vec{p}\|$ # Evolvability criteria - **Improvement Potential** - roughly: "How good can the best fit become?" - Defined by $$\mathrm{potential}(\vec{U}) := 1 - \|(\vec{1} - \vec{UU}^+)\vec{G}\|^2_F$$ with a unit-normed guessed gradient $\vec{G}$ # Outline - What is FFD? - What is evolutionary optimization? - How to measure evolvability? - **Scenarios** - Results # Scenarios - 2 Testing Scenarios - 1-dimensional fit - $xy$-plane to $xyz$-model, where only the $z$-coordinate changes - can be solved analytically with known global optimum - 3-dimensional fit - fit a parametrized sphere into a face - cannot be solved analytically - number of vertices differ between models # 1D-Scenario ![Left: A regular $7 \times 4$--grid
Right: The same grid after a random distortion to generate a testcase.](../arbeit/img/example1d_grid.png) ![The target--shape for our 1--dimensional optimization--scenario including a wireframe--overlay of the vertices.](../arbeit/img/1dtarget.png){width=70%} # 3D-Scenarios ![\newline Left: The sphere we start from with 10 807 vertices
Right: The face we want to deform the sphere into with 12 024 vertices.](../arbeit/img/3dtarget.png) # Outline - What is FFD? - What is evolutionary optimization? - How to measure evolvability? - Scenarios - **Results** # Variability 1D - Should measure Degrees of Freedom and thus quality ![The squared error for the various grids we examined.
Note that $7 \times 4$ and $4 \times 7$ have the same number of control--points.](../arbeit/img/evolution1d/variability_boxplot.png) - $5 \times 5$, $7 \times 7$ and $10 \times 10$ have *very strong* correlation ($-r_S = 0.94, p = 0$) between the *variability* and the evolutionary error. # Variability 3D - Should measure Degrees of Freedom and thus quality ![The fitting error for the various grids we examined.
Note that the number of control--points is a product of the resolution, so $X \times 4 \times 4$ and $4 \times 4 \times X$ have the same number of control--points.](../arbeit/img/evolution3d/variability_boxplot.png) - $4 \times 4 \times 4$, $5 \times 5 \times 5$ and $6 \times 6 \times 6$ have *very strong* correlation ($-r_S = 0.91, p = 0$) between the *variability* and the evolutionary error. # Varying Variability ## 1 1 ![A high resolution ($10 \times 10$) of control--points over a circle. Yellow/green points contribute to the parametrization, red points don't.
An Example--point (blue) is solely determined by the position of the green control--points.](../arbeit/img/enoughCP.png) ![Histogram of ranks of various $10 \times 10 \times 10$ grids with $1000$ control--points each showing in this case how many control--points are actually used in the calculations.](../arbeit/img/evolution3d/variability2_boxplot.png) # Regularity 1D - Should measure convergence speed ![Left: *Improvement potential* against number of iterations until convergence
Right: *Regularity* against number of iterations until convergence
Coloured by their grid--resolution, both with a linear fit over the whole dataset.](../arbeit/img/evolution1d/55_to_1010_steps.png){width=70%} - Not in our scenarios - maybe due to the fact that a better solution simply takes longer to converge, thus dominating. # Regularity 3D - Should measure convergence speed ![Plots of *regularity* against number of iterations for various scenarios together with a linear fit to indicate trends.](../arbeit/img/evolution3d/regularity_montage.png){width=70%} - Only *very weak* correlation - Point that contributes the worst dominates regularity by lowering the least right singular value towards 0. # Improvement Potential in 1D - Should measure expected quality given a gradient ![*Improvement potential* plotted against the error yielded by the evolutionary optimization for different grid--resolutions](../arbeit/img/evolution1d/55_to_1010_improvement-vs-evo-error.png){width=70%} - *very strong* correlation of $- r_S = 1.0, p = 0$. - Even with a distorted gradient # Improvement Potential in 3D - Should measure expected quality given a gradient ![Plots of *improvement potential* against error given by our *fitness--function* after convergence together with a linear fit of each of the plotted data to indicate trends.](../arbeit/img/evolution3d/improvement_montage.png){width=70%} - *weak* to *moderate* correlation within each group. # Summary - *Variability* and *Improvement Potential* are good measurements in our cases - *Regularity* does not work well because of small singular right values - But optimizing for regularity *could* still lead to a better grid-setup (not shown, but likely) - Effect can be dominated by other factors (i.e. better solutions just take longer) # Outlook / Further research - Only focused on FFD, but will DM-FFD perform better? - for RBF the indirect manipulation also performed worse than the direct one - Do grids with high regularity indeed perform better? # Thank you Any questions?