2017-08-23 19:18:44 +00:00
|
|
|
---
|
|
|
|
fontsize: 11pt
|
|
|
|
---
|
|
|
|
|
2017-08-30 18:56:35 +00:00
|
|
|
\chapter*{How to read this Thesis}
|
2017-08-23 19:18:44 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
As a guide through the nomenclature used in the formulas we prepend this
|
|
|
|
chapter.
|
2017-08-28 16:39:18 +00:00
|
|
|
|
|
|
|
Unless otherwise noted the following holds:
|
|
|
|
|
|
|
|
- lowercase letters $x,y,z$
|
|
|
|
refer to real variables and represent a point in 3D-Space.
|
|
|
|
- lowercase letters $u,v,w$
|
2017-10-01 18:06:41 +00:00
|
|
|
refer to real variables between $0$ and $1$ used as coefficients in a 3D
|
|
|
|
B-Spline grid.
|
2017-08-28 16:39:18 +00:00
|
|
|
- other lowercase letters
|
|
|
|
refer to other scalar (real) variables.
|
|
|
|
- lowercase **bold** letters (e.g. $\vec{x},\vec{y}$)
|
|
|
|
refer to 3D coordinates
|
2017-09-09 16:38:43 +00:00
|
|
|
- uppercase **BOLD** letters (e.g. $\vec{D}, \vec{M}$)
|
2017-08-28 16:39:18 +00:00
|
|
|
refer to Matrices
|
|
|
|
|
|
|
|
# Introduction
|
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
In this Master Thesis we try to extend a previously proposed concept of
|
|
|
|
predicting the evolvability of \acf{FFD} given a
|
|
|
|
Deformation-Matrix\cite{anrichterEvol}. In the original publication the author
|
|
|
|
used random sampled points weighted with \acf{RBF} to deform the mesh and
|
|
|
|
defined three different criteria that can be calculated prior to using an
|
|
|
|
evolutional optimization algorithm to asses the quality and potential of such
|
|
|
|
optimization.
|
2017-08-28 16:39:18 +00:00
|
|
|
|
|
|
|
We will replicate the same setup on the same meshes but use \acf{FFD} instead of
|
|
|
|
\acf{RBF} to create a deformation and evaluate if the evolution-criteria still
|
2017-09-06 15:07:46 +00:00
|
|
|
work as a predictor given the different deformation scheme.
|
2017-08-28 16:39:18 +00:00
|
|
|
|
|
|
|
## What is \acf{FFD}?
|
|
|
|
|
|
|
|
First of all we have to establish how a \ac{FFD} works and why this is a good
|
2017-10-01 18:06:41 +00:00
|
|
|
tool for deforming meshes in the first place. For simplicity we only summarize
|
|
|
|
the 1D-case from \cite{spitzmuller1996bezier} here and go into the extension to
|
|
|
|
the 3D case in chapter \ref{3dffd}.
|
2017-09-06 15:07:46 +00:00
|
|
|
|
|
|
|
Given an arbitrary number of points $p_i$ alongside a line, we map a scalar
|
|
|
|
value $\tau_i \in [0,1[$ to each point with $\tau_i < \tau_{i+1} \forall i$.
|
2017-10-01 18:06:41 +00:00
|
|
|
Given a degree of the target polynomial $d$ we define the curve
|
|
|
|
$N_{i,d,\tau_i}(u)$ as follows:
|
2017-09-06 15:07:46 +00:00
|
|
|
|
2017-09-09 16:38:43 +00:00
|
|
|
\begin{equation} \label{eqn:ffd1d1}
|
2017-09-06 15:07:46 +00:00
|
|
|
N_{i,0,\tau}(u) = \begin{cases} 1, & u \in [\tau_i, \tau_{i+1}[ \\ 0, & \mbox{otherwise} \end{cases}
|
|
|
|
\end{equation}
|
2017-09-09 16:38:43 +00:00
|
|
|
|
2017-09-06 15:07:46 +00:00
|
|
|
and
|
2017-09-09 16:38:43 +00:00
|
|
|
|
|
|
|
\begin{equation} \label{eqn:ffd1d2}
|
2017-09-06 15:07:46 +00:00
|
|
|
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}
|
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
If we now multiply every $p_i$ with the corresponding $N_{i,d,\tau_i}(u)$ we get
|
|
|
|
the contribution of each point $p_i$ to the final curve-point parameterized only
|
|
|
|
by $u \in [0,1[$. As can be seen from \eqref{eqn:ffd1d2} we only access points
|
|
|
|
$[i..i+d]$ for any given $i$^[one more for each recursive step.], which gives
|
|
|
|
us, in combination with choosing $p_i$ and $\tau_i$ in order, only a local
|
|
|
|
interference of $d+1$ points.
|
2017-09-06 15:07:46 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
We can even derive this equation straightforward for an arbitrary
|
|
|
|
$N$^[*Warning:* in the case of $d=1$ the recursion-formula yields a $0$
|
|
|
|
denominator, but $N$ is also $0$. The right solution for this case is a
|
|
|
|
derivative of $0$]:
|
2017-09-06 15:07:46 +00:00
|
|
|
|
|
|
|
$$\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)$$
|
|
|
|
|
|
|
|
For a B-Spline
|
|
|
|
$$s(u) = \sum_{i} N_{i,d,\tau_i}(u) p_i$$
|
|
|
|
these derivations yield $\frac{\partial^d}{\partial u} s(u) = 0$.
|
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
Another interesting property of these recursive polynomials is that they are
|
|
|
|
continuous (given $d \ge 1$) as every $p_i$ gets blended in linearly between
|
|
|
|
$\tau_i$ and $\tau_{i+d}$ and out linearly between $\tau_{i+1}$ and
|
|
|
|
$\tau_{i+d+1}$ as can bee seen from the two coefficients in every step of the
|
|
|
|
recursion.
|
2017-09-06 15:07:46 +00:00
|
|
|
|
|
|
|
### Why is \ac{FFD} a good deformation function?
|
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
The usage of \ac{FFD} as a tool for manipulating follows directly from the
|
|
|
|
properties of the polynomials and the correspondence to the control points.
|
|
|
|
Having only a few control points gives the user a nicer high-level-interface, as
|
|
|
|
she only needs to move these points and the model follows in an intuitive
|
|
|
|
manner. The deformation is smooth as the underlying polygon is smooth as well
|
|
|
|
and affects as many vertices of the model as needed. Moreover the changes are
|
|
|
|
always local so one risks not any change that a user cannot immediately see.
|
|
|
|
|
|
|
|
But there are also disadvantages of this approach. The user loses the ability to
|
|
|
|
directly influence vertices and even seemingly simple tasks as creating a
|
|
|
|
plateau can be difficult to
|
|
|
|
achieve\cite[chapter~3.2]{hsu1991dmffd}\cite{hsu1992direct}.
|
|
|
|
|
|
|
|
This disadvantages led to the formulation of
|
|
|
|
\acf{DM-FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly
|
|
|
|
interacts with the surface-mesh. All interactions will be applied
|
|
|
|
proportionally to the control-points that make up the parametrization of the
|
|
|
|
interaction-point itself yielding a smooth deformation of the surface *at* the
|
|
|
|
surface without seemingly arbitrary scattered control-points. Moreover this
|
|
|
|
increases the efficiency of an evolutionary optimization\cite{Menzel2006}, which
|
|
|
|
we will use later on.
|
|
|
|
|
|
|
|
But this approach also has downsides as can be seen in
|
|
|
|
\cite[figure~7]{hsu1991dmffd}\todo{figure hier einfügen?}, as the tessellation
|
|
|
|
of the invisible grid has a major impact on the deformation itself.
|
|
|
|
|
|
|
|
All in all \ac{FFD} and \ac{DM-FFD} are still good ways to deform a high-polygon
|
|
|
|
mesh albeit the downsides.
|
2017-09-06 15:07:46 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
## What is evolutional optimization?
|
2017-09-06 15:07:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
## Wieso ist evo-Opt so cool?
|
2017-09-06 15:07:46 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
The main advantage of evolutional algorithms is the ability to find optima of
|
|
|
|
general functions just with the help of a given error-function (or
|
|
|
|
fitness-function in this domain). This avoids the general pitfalls of
|
|
|
|
gradient-based procedures, which often target the same error-function as an
|
|
|
|
evolutional algorithm, but can get stuck in local optima.
|
2017-09-06 15:07:46 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
This is mostly due to the fact that a gradient-based procedure has only one
|
|
|
|
point of observation from where it evaluates the next steps, whereas an
|
|
|
|
evolutional strategy starts with a population of guessed solutions. Because an
|
|
|
|
evolutional strategy modifies the solution randomly, keeps the best solutions
|
|
|
|
and purges the worst, it can also target multiple different hypothesis at the
|
|
|
|
same time where the local optima die out in the face of other, better
|
|
|
|
candidates.
|
2017-08-23 19:18:44 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
If an analytic best solution exists (i.e. because the error-function is convex)
|
|
|
|
an evolutional algorithm is not the right choice. Although both converge to the
|
|
|
|
same solution, the analytic one is usually faster. But in reality many problems
|
|
|
|
have no analytic solution, because the problem is not convex. Here evolutional
|
|
|
|
optimization has one more advantage as you get bad solutions fast, which refine
|
|
|
|
over time.
|
2017-08-23 19:18:44 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
## Criteria for the evolvability of linear deformations
|
|
|
|
|
|
|
|
### Variability
|
|
|
|
|
|
|
|
In \cite{anrichterEvol} variability is defined as
|
|
|
|
$$V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n},$$
|
|
|
|
whereby $\vec{U}$ is the $m \times n$ deformation-Matrix used to map the $m$
|
|
|
|
control points onto the $n$ vertices.
|
|
|
|
|
|
|
|
Given $n = m$, an identical number of control-points and vertices, this
|
|
|
|
quotient will be $=1$ if all control points are independent of each other and
|
|
|
|
the solution is to trivially move every control-point onto a target-point.
|
2017-08-23 19:18:44 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
In praxis the value of $V(\vec{U})$ is typically $\ll 1$, because as
|
|
|
|
there are only few control-points for many vertices, so $m \ll n$.
|
2017-09-27 20:06:39 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
Additionally in our setup we connect neighbouring control-points in a grid so
|
|
|
|
each control point is not independent, but typically depends on $4^d$
|
|
|
|
control-points for an $d$-dimensional control mesh.
|
2017-09-27 20:06:39 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
### Regularity
|
2017-09-27 20:06:39 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
Regularity is defined\cite{anrichterEvol} as
|
|
|
|
$$R(\vec{U}) := \frac{1}{\kappa(\vec{U})} = \frac{\sigma_{min}}{\sigma_{max}}$$
|
|
|
|
where $\sigma_{min}$ and $\sigma_{max}$ are the smallest and greatest right singular
|
|
|
|
value of the deformation-matrix $\vec{U}$.
|
2017-09-27 20:06:39 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
As we deform the given Object only based on the parameters as $\vec{p} \mapsto
|
|
|
|
f(\vec{x} + \vec{U}\vec{p})$ this makes sure that $\|\vec{Up}\| \propto
|
|
|
|
\|\vec{p}\|$ when $\kappa(\vec{U}) \approx 1$. The inversion of $\kappa(\vec{U})$
|
|
|
|
is only performed to map the criterion-range to $[0..1]$, whereas $1$ is the
|
|
|
|
optimal value and $0$ is the worst value.
|
2017-09-27 20:06:39 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
This criterion should be characteristic for numeric stability on the on
|
|
|
|
hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of evolutional
|
|
|
|
algorithms on the other hand\cite{anrichterEvol} as it is tied to the notion of
|
|
|
|
locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
2017-08-23 19:18:44 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
### Improvement Potential
|
2017-08-23 19:18:44 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
In contrast to the general nature of variability and regularity, which are
|
|
|
|
agnostic of the fitness-function at hand the third criterion should reflect a
|
|
|
|
notion of potential.
|
|
|
|
|
|
|
|
As during optimization some kind of gradient $g$ is available to suggest a
|
|
|
|
direction worth pursuing we use this to guess how much change can be achieved in
|
|
|
|
the given direction.
|
|
|
|
|
|
|
|
The definition for an improvement potential $P$ is\cite{anrichterEvol}:
|
|
|
|
$$
|
|
|
|
P(\vec{U}) := 1 - \|(\vec{1} - \vec{UU}^+)\vec(G)\|^2_F
|
|
|
|
$$
|
|
|
|
given some approximate $n \times d$ fitness-gradient $\vec{G}$, normalized to
|
|
|
|
$\|\vec{G}\|_F = 1$, whereby $\|\cdot\|_F$ denotes the Frobenius-Norm.
|
|
|
|
|
|
|
|
# Implementation of \acf{FFD}
|
2017-08-23 19:18:44 +00:00
|
|
|
|
|
|
|
## Was ist FFD?
|
2017-09-06 15:07:46 +00:00
|
|
|
\label{3dffd}
|
2017-08-23 19:18:44 +00:00
|
|
|
|
|
|
|
- Definition
|
|
|
|
- Wieso Newton-Optimierung?
|
|
|
|
- Was folgt daraus?
|
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
## Test Scenario: 1D Function Approximation
|
2017-08-23 19:18:44 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
### Optimierungszenario
|
2017-08-23 19:18:44 +00:00
|
|
|
|
|
|
|
- Ebene -> Template-Fit
|
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
### Matching in 1D
|
2017-08-23 19:18:44 +00:00
|
|
|
|
|
|
|
- Trivial
|
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
### Besonderheiten der Auswertung
|
2017-08-23 19:18:44 +00:00
|
|
|
|
|
|
|
- Analytische Lösung einzig beste
|
|
|
|
- Ergebnis auch bei Rauschen konstant?
|
|
|
|
- normierter 1-Vektor auf den Gradienten addieren
|
|
|
|
- Kegel entsteht
|
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
## Test Scenario: 3D Function Approximation
|
2017-08-23 19:18:44 +00:00
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
### Optimierungsszenario
|
2017-08-23 19:18:44 +00:00
|
|
|
|
|
|
|
- Ball zu Mario
|
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
### Matching in 3D
|
2017-08-23 19:18:44 +00:00
|
|
|
|
|
|
|
- alternierende Optimierung
|
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
### Besonderheiten der Optimierung
|
2017-08-23 19:18:44 +00:00
|
|
|
|
|
|
|
- Analytische Lösung nur bis zur Optimierung der ersten Punkte gültig
|
|
|
|
- Kriterien trotzdem gut
|
|
|
|
|
2017-10-01 18:06:41 +00:00
|
|
|
# Evaluation of Scenarios
|
|
|
|
|
|
|
|
## Results of 1D Function Approximation
|
|
|
|
|
|
|
|
|
2017-08-23 19:18:44 +00:00
|
|
|
|
|
|
|
## Spearman/Pearson-Metriken
|
|
|
|
|
|
|
|
- Was ist das?
|
|
|
|
- Wieso sollte uns das interessieren?
|
|
|
|
- Wieso reicht Monotonie?
|
|
|
|
- Haben wir das gezeigt?
|
2017-10-01 18:06:41 +00:00
|
|
|
- Statistik, Bilder, blah!
|
2017-08-23 19:18:44 +00:00
|
|
|
|
|
|
|
# Schluss
|
|
|
|
|
|
|
|
HAHA .. als ob -.-
|