more graphs for evo1d

This commit is contained in:
Stefan Dresselhaus
2017-10-01 20:06:41 +02:00
parent c0399a9499
commit 3ce0a99591
25 changed files with 918 additions and 90 deletions

View File

@ -50,3 +50,28 @@
publisher = {Springer-Verlag},
address = {Berlin, Heidelberg},
}
@book{golub2012matrix,
title={Matrix computations},
author={Golub, Gene H and Van Loan, Charles F},
volume={3},
year={2012},
publisher={JHU Press}
}
@article{weise2012evolutionary,
title={Evolutionary Optimization: Pitfalls and Booby Traps},
author={Weise, Thomas and Chiong, Raymond and Tang, Ke},
journal={J. Comput. Sci. \& Technol},
volume={27},
number={5},
year={2012},
url={http://jcst.ict.ac.cn:8080/jcst/EN/article/downloadArticleFile.do?attachType=PDF\&id=9543}
}
@inproceedings{thorhauer2014locality,
title={On the locality of standard search operators in grammatical evolution},
author={Thorhauer, Ann and Rothlauf, Franz},
booktitle={International Conference on Parallel Problem Solving from Nature},
pages={465--475},
year={2014},
organization={Springer},
url={https://www.lri.fr/~hansen/proceedings/2014/PPSN/papers/8672/86720465.pdf}
}

View File

@ -22,7 +22,7 @@
\setcounter{ContinuedFloat}{0}
\setcounter{float@type}{16}
\setcounter{lstnumber}{1}
\setcounter{NAT@ctr}{5}
\setcounter{NAT@ctr}{8}
\setcounter{AM@survey}{0}
\setcounter{r@tfl@t}{0}
\setcounter{subfigure}{0}

View File

@ -4,14 +4,16 @@ fontsize: 11pt
\chapter*{How to read this Thesis}
As a guide through the nomenclature used in the formulas we prepend this chapter.
As a guide through the nomenclature used in the formulas we prepend this
chapter.
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$
refer to real variables between $0$ and $1$ used as coefficients in a 3D B-Spline grid.
refer to real variables between $0$ and $1$ used as coefficients in a 3D
B-Spline grid.
- other lowercase letters
refer to other scalar (real) variables.
- lowercase **bold** letters (e.g. $\vec{x},\vec{y}$)
@ -21,12 +23,13 @@ Unless otherwise noted the following holds:
# Introduction
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 optimisation algorithm to asses the
quality and potential of such optimisation.
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.
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
@ -35,12 +38,14 @@ work as a predictor given the different deformation scheme.
## What is \acf{FFD}?
First of all we have to establish how a \ac{FFD} works and why this is a good
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}.
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}.
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$.
Given a degree of the target polynomial $d$ we define the curve $N_{i,d,\tau_i}(u)$ as follows:
Given a degree of the target polynomial $d$ we define the curve
$N_{i,d,\tau_i}(u)$ as follows:
\begin{equation} \label{eqn:ffd1d1}
N_{i,0,\tau}(u) = \begin{cases} 1, & u \in [\tau_i, \tau_{i+1}[ \\ 0, & \mbox{otherwise} \end{cases}
@ -52,12 +57,17 @@ and
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}
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.
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.
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$]:
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$]:
$$\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)$$
@ -65,30 +75,42 @@ 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$.
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.
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.
### Why is \ac{FFD} a good deformation function?
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.
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}.
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.
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.
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.
All in all \ac{FFD} and \ac{DM-FFD} are still good ways to deform a high-polygon
mesh albeit the downsides.
## What is evolutional optimization?
@ -96,26 +118,83 @@ All in all \ac{FFD} and \ac{DM-FFD} are still good ways to deform a high-polygon
## Wieso ist evo-Opt so cool?
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.
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.
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.
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.
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.
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.
## Criteria for the evolvability of linear deformations
### Variability
## Evolvierbarkeitskriterien
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.
- Konditionszahl etc.
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.
# Hauptteil
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$.
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.
### Regularity
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}$.
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.
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}.
### Improvement Potential
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}
## Was ist FFD?
\label{3dffd}
@ -124,41 +203,43 @@ the problem is not convex. Here evolutional optimization has one more advantage
- Wieso Newton-Optimierung?
- Was folgt daraus?
## Szenarien vorstellen
## Test Scenario: 1D Function Approximation
### 1D
#### Optimierungszenario
### Optimierungszenario
- Ebene -> Template-Fit
#### Matching in 1D
### Matching in 1D
- Trivial
#### Besonderheiten der Auswertung
### Besonderheiten der Auswertung
- Analytische Lösung einzig beste
- Ergebnis auch bei Rauschen konstant?
- normierter 1-Vektor auf den Gradienten addieren
- Kegel entsteht
### 3D
## Test Scenario: 3D Function Approximation
#### Optimierungsszenario
### Optimierungsszenario
- Ball zu Mario
#### Matching in 3D
### Matching in 3D
- alternierende Optimierung
#### Besonderheiten der Optimierung
### Besonderheiten der Optimierung
- Analytische Lösung nur bis zur Optimierung der ersten Punkte gültig
- Kriterien trotzdem gut
# Evaluation
# Evaluation of Scenarios
## Results of 1D Function Approximation
## Spearman/Pearson-Metriken
@ -166,7 +247,7 @@ the problem is not convex. Here evolutional optimization has one more advantage
- Wieso sollte uns das interessieren?
- Wieso reicht Monotonie?
- Haben wir das gezeigt?
- Stastik, Bilder, blah!
- Statistik, Bilder, blah!
# Schluss

Binary file not shown.

View File

@ -151,8 +151,8 @@ 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 optimisation algorithm to asses the quality and
potential of such optimisation.
to using an evolutional optimization algorithm to asses the quality and
potential of such optimization.
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
@ -265,13 +265,64 @@ 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.
\section{Evolvierbarkeitskriterien}\label{evolvierbarkeitskriterien}
\section{Criteria for the evolvability of linear
deformations}\label{criteria-for-the-evolvability-of-linear-deformations}
\begin{itemize}
\tightlist
\item
Konditionszahl etc.
\end{itemize}
\subsection{Variability}\label{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.
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\).
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.
\subsection{Regularity}\label{regularity}
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}\).
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.
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}.
\subsection{Improvement Potential}\label{improvement-potential}
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.
\chapter{Hauptteil}\label{hauptteil}
@ -372,7 +423,7 @@ Optimierung}\label{besonderheiten-der-optimierung}
\item
Haben wir das gezeigt?
\item
Stastik, Bilder, blah!
Statistik, Bilder, blah!
\end{itemize}
\chapter{Schluss}\label{schluss}

View File

@ -87,13 +87,13 @@
\renewcommand\lq{\text{\textgravedbl}\!\!}\renewcommand\rq{\!\!\text{\textacutedbl}}
% ##### tables #####
\newcommand\rl[1]{\multicolumn{1}{r|}{#1}} % item|
\renewcommand\ll[1]{\multicolumn{1}{|r}{#1}} % |item
% \newcommand\cc[1]{\multicolumn{1}{|c|}{#1}} % |item|
\newcommand\lc[2]{\multicolumn{#1}{|c|}{#2}} %
\newcommand\cc[1]{\multicolumn{1}{c}{#1}}
% \renewcommand{\arraystretch}{1.2} % Tabellenzeilen ein bischen h?her machen.
\newcommand\m[2]{\multirow{#1}{*}{$#2$}}
% \newcommand\rl[1]{\multicolumn{1}{r|}{#1}} % item|
% \renewcommand\ll[1]{\multicolumn{1}{|r}{#1}} % |item
% % \newcommand\cc[1]{\multicolumn{1}{|c|}{#1}} % |item|
% \newcommand\lc[2]{\multicolumn{#1}{|c|}{#2}} %
% \newcommand\cc[1]{\multicolumn{1}{c}{#1}}
% % \renewcommand{\arraystretch}{1.2} % Tabellenzeilen ein bischen h?her machen.
% \newcommand\m[2]{\multirow{#1}{*}{$#2$}}
% ##### Text symbole #####
% \newcommand\subdot[1]{\lower0.5em\hbox{$\stackrel{\displaystyle #1}{.}$}}