todays work..
This commit is contained in:
parent
8c4f776ea5
commit
2f62ba838b
@ -42,7 +42,6 @@
|
|||||||
|
|
||||||
Url = {http://graphics.cs.brown.edu/~jfh/papers/Hsu-DMO-1992/paper.pdf}
|
Url = {http://graphics.cs.brown.edu/~jfh/papers/Hsu-DMO-1992/paper.pdf}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Article{gaussNewton,
|
@Article{gaussNewton,
|
||||||
Title = {An Algorithm for Least-Squares Estimation of Nonlinear Parameters},
|
Title = {An Algorithm for Least-Squares Estimation of Nonlinear Parameters},
|
||||||
Author = {Donald W. Marquardt},
|
Author = {Donald W. Marquardt},
|
||||||
@ -184,3 +183,10 @@
|
|||||||
url={https://pdfs.semanticscholar.org/a858/aa68da617ad9d41de021f6807cc422002258.pdf},
|
url={https://pdfs.semanticscholar.org/a858/aa68da617ad9d41de021f6807cc422002258.pdf},
|
||||||
doi={10.1016/j.cagd.2012.03.025},
|
doi={10.1016/j.cagd.2012.03.025},
|
||||||
}
|
}
|
||||||
|
@article{brunet2010contributions,
|
||||||
|
title={Contributions to parametric image registration and 3d surface reconstruction},
|
||||||
|
author={Brunet, Florent},
|
||||||
|
journal={European Ph. D. in Computer Vision, Universit{\'e} dAuvergne, Cl{\'e}rmont-Ferrand, France, and Technische Universitat Munchen, Germany},
|
||||||
|
year={2010},
|
||||||
|
url={http://www.brnt.eu/phd/}
|
||||||
|
}
|
||||||
|
BIN
arbeit/img/3dtarget.png
Normal file
BIN
arbeit/img/3dtarget.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 MiB |
BIN
arbeit/img/ball.png
Normal file
BIN
arbeit/img/ball.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 896 KiB |
BIN
arbeit/img/mario.png
Normal file
BIN
arbeit/img/mario.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 570 KiB |
BIN
arbeit/img/unity.png
Normal file
BIN
arbeit/img/unity.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
157
arbeit/ma.md
157
arbeit/ma.md
@ -186,12 +186,8 @@ convex--hull--property of B-Splines --- meaning, that no matter how we choose
|
|||||||
our coefficients, the resulting points all have to lie inside convex--hull of
|
our coefficients, the resulting points all have to lie inside convex--hull of
|
||||||
the control--points.
|
the control--points.
|
||||||
|
|
||||||
\improvement[inline]{
|
For a given point $v_i$ we can then calculate the contributions
|
||||||
Bilder von Basisfunktionen zur Visualisierung.
|
$n_{i,j}~:=~N_{j,d,\tau}$ of each control point $p_j$ to get the
|
||||||
}
|
|
||||||
|
|
||||||
For a given number of points $v_1,\dots,v_n$ we can then calculate
|
|
||||||
the contributions \linebreak[4]$n_{i,j}~:=~N_{j,d,\tau}$ of each control point $p_j$ to get the
|
|
||||||
projection from the control--point--space into the object--space:
|
projection from the control--point--space into the object--space:
|
||||||
$$
|
$$
|
||||||
v_i = \sum_j n_{i,j} \cdot p_j = \vec{n}_i^{T} \vec{p}
|
v_i = \sum_j n_{i,j} \cdot p_j = \vec{n}_i^{T} \vec{p}
|
||||||
@ -203,6 +199,32 @@ $$
|
|||||||
where $\vec{N}$ is the $n \times m$ transformation--matrix (later on called
|
where $\vec{N}$ is the $n \times m$ transformation--matrix (later on called
|
||||||
**deformation matrix**) for $n$ object--space--points and $m$ control--points.
|
**deformation matrix**) for $n$ object--space--points and $m$ control--points.
|
||||||
|
|
||||||
|
\begin{figure}[ht]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=\textwidth]{img/unity.png}
|
||||||
|
\end{center}
|
||||||
|
\caption[B--spline--basis--function as partition of unity]{From \cite[Figure 2.13]{brunet2010contributions}:\newline
|
||||||
|
\glqq Some interesting properties of the B--splines. On the natural definition domain
|
||||||
|
of the B--spline ($[k_0,k_4]$ on this figure), the B--spline basis functions sum
|
||||||
|
up to one (partition of unity). In this example, we use B--splines of degree 2.
|
||||||
|
The horizontal segment below the abscissa axis represents the domain of
|
||||||
|
influence of the B--splines basis function, i.e. the interval on which they are
|
||||||
|
not null. At a given point, there are at most $ d+1$ non-zero B--spline basis
|
||||||
|
functions (compact support).\grqq \newline
|
||||||
|
Note, that Brunet starts his index at $-d$ opposed to our definition, where we
|
||||||
|
start at $0$.}
|
||||||
|
\label{fig:partition_unity}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Furthermore B--splines--basis--functions form a partition of unity for all, but
|
||||||
|
the first and last $d$ control-points\cite{brunet2010contributions}. Therefore
|
||||||
|
we later on use the border-points $d+1$ times, such that $\sum_j n_{i,j} p_j = p_i$
|
||||||
|
for these points.
|
||||||
|
|
||||||
|
The locality of the influence of each control--point and the partition of unity
|
||||||
|
was beautifully pictured by Brunet, which we included here as figure
|
||||||
|
\ref{fig:partition_unity}.
|
||||||
|
|
||||||
### Why is \ac{FFD} a good deformation function?
|
### Why is \ac{FFD} a good deformation function?
|
||||||
\label{sec:back:ffdgood}
|
\label{sec:back:ffdgood}
|
||||||
|
|
||||||
@ -386,9 +408,9 @@ f(\vec{x} + \vec{U}\vec{p})$ this makes sure that $\|\vec{Up}\| \propto
|
|||||||
is only performed to map the criterion--range to $[0..1]$, whereas $1$ is the
|
is only performed to map the criterion--range to $[0..1]$, whereas $1$ is the
|
||||||
optimal value and $0$ is the worst value.
|
optimal value and $0$ is the worst value.
|
||||||
|
|
||||||
This criterion should be characteristic for numeric stability on the on
|
On the one hand this criterion should be characteristic for numeric
|
||||||
hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of
|
stability\cite[chapter 2.7]{golub2012matrix} and on the other hand for the
|
||||||
evolutionary algorithms on the other hand\cite{anrichterEvol} as it is tied to
|
convergence speed of evolutionary algorithms\cite{anrichterEvol} as it is tied to
|
||||||
the notion of locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
the notion of locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
||||||
|
|
||||||
### Improvement Potential
|
### Improvement Potential
|
||||||
@ -581,6 +603,8 @@ of the control--points.] to simulate different starting-conditions.
|
|||||||
|
|
||||||
# Scenarios for testing evolvability criteria using \acf{FFD}
|
# Scenarios for testing evolvability criteria using \acf{FFD}
|
||||||
\label{sec:eval}
|
\label{sec:eval}
|
||||||
|
\improvement[inline]{für 1d und 3d entweder konsistent source/target oder
|
||||||
|
anders. Weil sonst in 1d $\vec{s}$ das Ziel, in 3d $\vec{t}$ das Ziel.}
|
||||||
|
|
||||||
In our experiments we use the same two testing--scenarios, that were also used
|
In our experiments we use the same two testing--scenarios, that were also used
|
||||||
by \cite{anrichterEvol}. The first scenario deforms a plane into a shape
|
by \cite{anrichterEvol}. The first scenario deforms a plane into a shape
|
||||||
@ -594,15 +618,6 @@ point has three degrees of freedom in contrast to first scenario.
|
|||||||
|
|
||||||
## Test Scenario: 1D Function Approximation
|
## Test Scenario: 1D Function Approximation
|
||||||
|
|
||||||
\begin{figure}[th]
|
|
||||||
\begin{center}
|
|
||||||
\includegraphics[width=0.7\textwidth]{img/1dtarget.png}
|
|
||||||
\end{center}
|
|
||||||
\caption{The target--shape for our 1--dimensional optimization--scenario
|
|
||||||
including a wireframe--overlay of the vertices.}
|
|
||||||
\label{fig:1dtarget}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
In this scenario we used the shape defined by Giannelli et al.\cite{giannelli2012thb},
|
In this scenario we used the shape defined by Giannelli et al.\cite{giannelli2012thb},
|
||||||
which is also used by Richter et al.\cite{anrichterEvol} using the same
|
which is also used by Richter et al.\cite{anrichterEvol} using the same
|
||||||
discretization to $150 \times 150$ points for a total of $n = 22\,500$ vertices. The
|
discretization to $150 \times 150$ points for a total of $n = 22\,500$ vertices. The
|
||||||
@ -618,6 +633,15 @@ $$
|
|||||||
with $(x,y) \in [0,2] \times [0,1]$ and $q(x,y)=(x-1.5)^2 + (y-0.5)^2$, which we have
|
with $(x,y) \in [0,2] \times [0,1]$ and $q(x,y)=(x-1.5)^2 + (y-0.5)^2$, which we have
|
||||||
visualized in figure \ref{fig:1dtarget}.
|
visualized in figure \ref{fig:1dtarget}.
|
||||||
|
|
||||||
|
begin{figure}[ht]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=0.7\textwidth]{img/1dtarget.png}
|
||||||
|
\end{center}
|
||||||
|
\caption{The target--shape for our 1--dimensional optimization--scenario
|
||||||
|
including a wireframe--overlay of the vertices.}
|
||||||
|
\label{fig:1dtarget}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
As the starting-plane we used the same shape, but set all
|
As the starting-plane we used the same shape, but set all
|
||||||
$z$--coordinates to $0$, yielding a flat plane, which is partially already
|
$z$--coordinates to $0$, yielding a flat plane, which is partially already
|
||||||
correct.
|
correct.
|
||||||
@ -651,15 +675,6 @@ $$
|
|||||||
where $\mathbb{1}$ is the vector consisting of $1$ in every dimension and
|
where $\mathbb{1}$ is the vector consisting of $1$ in every dimension and
|
||||||
$\vec{g}_\textrm{c} = \vec{p^{*}}$ the calculated correct gradient.
|
$\vec{g}_\textrm{c} = \vec{p^{*}}$ the calculated correct gradient.
|
||||||
|
|
||||||
We then set up a regular 2--dimensional grid around the object with the desired
|
|
||||||
grid resolutions. To generate a testcase we then move the grid--vertices
|
|
||||||
randomly inside the x--y--plane. As we do not want to generate hard to solve
|
|
||||||
grids we avoid the generation of self--intersecting grids.\improvement{besser
|
|
||||||
formulieren} To achieve that we select a uniform distributed number
|
|
||||||
$r \in [-0.25,0.25]$ per dimension and shrink the distance to the neighbours
|
|
||||||
(the smaller neighbour for $r < 0$, the larger for $r > 0$) by the factor
|
|
||||||
$r$^[Note: On the Edges this displacement is only applied outwards by flipping the sign of $r$, if appropriate.].
|
|
||||||
|
|
||||||
\begin{figure}[ht]
|
\begin{figure}[ht]
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\includegraphics[width=\textwidth]{img/example1d_grid.png}
|
\includegraphics[width=\textwidth]{img/example1d_grid.png}
|
||||||
@ -669,23 +684,89 @@ random distortion to generate a testcase.}
|
|||||||
\label{fig:example1d_grid}
|
\label{fig:example1d_grid}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
We then set up a regular 2--dimensional grid around the object with the desired
|
||||||
|
grid resolutions. To generate a testcase we then move the grid--vertices
|
||||||
|
randomly inside the x--y--plane. As we do not want to generate hard to solve
|
||||||
|
grids we avoid the generation of self--intersecting grids.\improvement{besser
|
||||||
|
formulieren} To achieve that we select a uniform distributed number
|
||||||
|
$r \in [-0.25,0.25]$ per dimension and shrink the distance to the neighbours
|
||||||
|
(the smaller neighbour for $r < 0$, the larger for $r > 0$) by the factor
|
||||||
|
$r$^[Note: On the Edges this displacement is only applied outwards by flipping the sign of $r$, if appropriate.].
|
||||||
|
|
||||||
An Example of such a testcase can be seen for a $7 \times 4$--grid in figure
|
An Example of such a testcase can be seen for a $7 \times 4$--grid in figure
|
||||||
\ref{fig:example1d_grid}.
|
\ref{fig:example1d_grid}.
|
||||||
|
|
||||||
## Test Scenario: 3D Function Approximation
|
## Test Scenario: 3D Function Approximation
|
||||||
|
|
||||||
### Optimierungsszenario
|
Opposed to the 1--dimensional scenario before, the 3--dimensional scenario is
|
||||||
|
much more complex --- not only because we have more degrees of freedom on each
|
||||||
|
control point, but also because the *fitness--function* we will use has no known
|
||||||
|
analytic solution and multiple local minima.
|
||||||
|
|
||||||
- Ball zu Mario
|
\begin{figure}[ht]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=0.7\textwidth]{img/3dtarget.png}
|
||||||
|
\end{center}
|
||||||
|
\caption{\newline
|
||||||
|
Left: The sphere we start from with 10\,807 vertices\newline
|
||||||
|
Right: The face we want to deform the sphere into with 12\,024 vertices.}
|
||||||
|
\label{fig:3dtarget}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
### Matching in 3D
|
First of all we introduce the set up: We have given a triangulated model of a
|
||||||
|
sphere consisting of 10\,807 vertices, that we want to deform into a
|
||||||
|
the target--model of a face with a total of 12\,024 vertices. Both of
|
||||||
|
these Models can be seen in figure \ref{fig:3dtarget}.
|
||||||
|
|
||||||
- alternierende Optimierung
|
Opposed to the 1D--case we cannot map the source and target--vertices in a
|
||||||
|
one--to--one--correspondence, which we especially need for the approximation of
|
||||||
|
the fitting--error. Hence we state that the error of one vertex is the distance
|
||||||
|
to the closest vertex of the other model.
|
||||||
|
|
||||||
### Besonderheiten der Optimierung
|
We therefore define the *fitness--function* to be:
|
||||||
|
$$
|
||||||
|
f(\vec{P}) = \frac{1}{n} \underbrace{\sum_{i=1}^n \|\vec{c_T(s_i)} -
|
||||||
|
\vec{s_i}\|_2^2}_{\textrm{source-to-target--distance}}
|
||||||
|
+ \frac{1}{m} \underbrace{\sum_{i=1}^m \|\vec{c_S(t_i)} -
|
||||||
|
\vec{t_i}\|_2^2}_{\textrm{target-to-source--distance}}
|
||||||
|
+ \lambda \cdot \textrm{regularization}
|
||||||
|
$$
|
||||||
|
where $\vec{c_T(s_i)}$ denotes the target--vertex that is corresponding to the
|
||||||
|
source--vertex $\vec{s_i}$ and $\vec{c_S(t_i)}$ denotes the source--vertex that
|
||||||
|
corresponds to the target--vertex $\vec{t_i}$. Note that the target--vertices
|
||||||
|
are given and fixed by the target--model of the face we want to deform into,
|
||||||
|
whereas the source--vertices vary depending on the chosen parameters $\vec{P}$,
|
||||||
|
as those get calculated by the previously introduces formula $\vec{S} = \vec{UP}$
|
||||||
|
with $\vec{S}$ being the $n \times 3$--matrix of source--vertices, $\vec{U}$ the
|
||||||
|
$n \times m$--matrix of calculated coefficients for the \ac{FFD} --- analog to
|
||||||
|
the 1D case --- and finally $\vec{P}$ being the $m \times 3$--matrix of the
|
||||||
|
control--grid defining the whole deformation.
|
||||||
|
|
||||||
- Analytische Lösung nur bis zur Optimierung der ersten Punkte gültig
|
As regularization-term we introduce a weighted decaying
|
||||||
- Kriterien trotzdem gut
|
laplace--coefficient\unsure{heisst der so?}
|
||||||
|
that is known to speed up the optimization--process\improvement{cite [34] aus
|
||||||
|
ref{anrichterEvol}} and simulates a material that is very stiff in the
|
||||||
|
beginning --- to do a coarse deformation --- and gets easier to deform over
|
||||||
|
time.
|
||||||
|
|
||||||
|
\improvement[inline]{mehr zu regularisierung, Formel etc.}
|
||||||
|
|
||||||
|
## Procedure: 3D Function Approximation
|
||||||
|
|
||||||
|
Initially we set up the correspondences $\vec{c_T(\dots)}$ and $\vec{c_S(\dots)}$ to be
|
||||||
|
the respectively closest vertices of the other model. We then calculate the
|
||||||
|
analytical solution given these correspondences via $\vec{P^{*}} = \vec{U^+}\vec{T}$,
|
||||||
|
and also use the first solution as guessed gradient for the calculation of the
|
||||||
|
*improvement--potential*, as the optimal solution is not known.
|
||||||
|
We then let the evolutionary algorithm run up within $1.05$ times the error of
|
||||||
|
this solution and afterwards recalculate the correspondences $\vec{c_T(\dots)}$
|
||||||
|
and $\vec{c_S(\dots)}$.
|
||||||
|
For the next step we then halve the regularization--impact $\lambda$ and
|
||||||
|
calculate the next incremental solution $\vec{P^{*}} = \vec{U^+}\vec{T}$ with
|
||||||
|
the updated correspondences to get our next target--error.
|
||||||
|
We repeat this process as long as the target--error keeps decreasing.
|
||||||
|
|
||||||
|
\improvement[inline]{grid-setup}
|
||||||
|
|
||||||
# Evaluation of Scenarios
|
# Evaluation of Scenarios
|
||||||
\label{sec:res}
|
\label{sec:res}
|
||||||
@ -716,9 +797,13 @@ An Example of such a testcase can be seen for a $7 \times 4$--grid in figure
|
|||||||
|
|
||||||
|
|
||||||
\begin{figure}[!ht]
|
\begin{figure}[!ht]
|
||||||
\includegraphics[width=\textwidth]{img/evolution3d/20171007_3dFit_all_append.png}
|
\includegraphics[width=\textwidth]{img/evolution3d/4x4xX_montage.png}
|
||||||
\caption{Results 3D}
|
\caption{Results 3D for 4x4xX}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\includegraphics[width=\textwidth]{img/evolution3d/Xx4x4_montage.png}
|
||||||
|
\caption{Results 3D for Xx4x4}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
<!-- ![Improvement potential vs steps](img/evolution3d/20170926_3dFit_both_improvement-vs-steps.png) -->
|
<!-- ![Improvement potential vs steps](img/evolution3d/20170926_3dFit_both_improvement-vs-steps.png) -->
|
||||||
|
BIN
arbeit/ma.pdf
BIN
arbeit/ma.pdf
Binary file not shown.
181
arbeit/ma.tex
181
arbeit/ma.tex
@ -339,14 +339,9 @@ to the convex--hull--property of B-Splines --- meaning, that no matter
|
|||||||
how we choose our coefficients, the resulting points all have to lie
|
how we choose our coefficients, the resulting points all have to lie
|
||||||
inside convex--hull of the control--points.
|
inside convex--hull of the control--points.
|
||||||
|
|
||||||
\improvement[inline]{
|
For a given point \(v_i\) we can then calculate the contributions
|
||||||
Bilder von Basisfunktionen zur Visualisierung.
|
\(n_{i,j}~:=~N_{j,d,\tau}\) of each control point \(p_j\) to get the
|
||||||
}
|
projection from the control--point--space into the object--space: \[
|
||||||
|
|
||||||
For a given number of points \(v_1,\dots,v_n\) we can then calculate the
|
|
||||||
contributions \linebreak[4]\(n_{i,j}~:=~N_{j,d,\tau}\) of each control
|
|
||||||
point \(p_j\) to get the projection from the control--point--space into
|
|
||||||
the object--space: \[
|
|
||||||
v_i = \sum_j n_{i,j} \cdot p_j = \vec{n}_i^{T} \vec{p}
|
v_i = \sum_j n_{i,j} \cdot p_j = \vec{n}_i^{T} \vec{p}
|
||||||
\] or written for all points at the same time: \[
|
\] or written for all points at the same time: \[
|
||||||
\vec{v} = \vec{N} \vec{p}
|
\vec{v} = \vec{N} \vec{p}
|
||||||
@ -354,6 +349,33 @@ v_i = \sum_j n_{i,j} \cdot p_j = \vec{n}_i^{T} \vec{p}
|
|||||||
on called \textbf{deformation matrix}) for \(n\) object--space--points
|
on called \textbf{deformation matrix}) for \(n\) object--space--points
|
||||||
and \(m\) control--points.
|
and \(m\) control--points.
|
||||||
|
|
||||||
|
\begin{figure}[ht]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=\textwidth]{img/unity.png}
|
||||||
|
\end{center}
|
||||||
|
\caption[B--spline--basis--function as partition of unity]{From \cite[Figure 2.13]{brunet2010contributions}:\newline
|
||||||
|
\glqq Some interesting properties of the B--splines. On the natural definition domain
|
||||||
|
of the B--spline ($[k_0,k_4]$ on this figure), the B--spline basis functions sum
|
||||||
|
up to one (partition of unity). In this example, we use B--splines of degree 2.
|
||||||
|
The horizontal segment below the abscissa axis represents the domain of
|
||||||
|
influence of the B--splines basis function, i.e. the interval on which they are
|
||||||
|
not null. At a given point, there are at most $ d+1$ non-zero B--spline basis
|
||||||
|
functions (compact support).\grqq \newline
|
||||||
|
Note, that Brunet starts his index at $-d$ opposed to our definition, where we
|
||||||
|
start at $0$.}
|
||||||
|
\label{fig:partition_unity}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Furthermore B--splines--basis--functions form a partition of unity for
|
||||||
|
all, but the first and last \(d\)
|
||||||
|
control-points\cite{brunet2010contributions}. Therefore we later on use
|
||||||
|
the border-points \(d+1\) times, such that \(\sum_j n_{i,j} p_j = p_i\)
|
||||||
|
for these points.
|
||||||
|
|
||||||
|
The locality of the influence of each control--point and the partition
|
||||||
|
of unity was beautifully pictured by Brunet, which we included here as
|
||||||
|
figure \ref{fig:partition_unity}.
|
||||||
|
|
||||||
\subsection{\texorpdfstring{Why is \ac{FFD} a good deformation
|
\subsection{\texorpdfstring{Why is \ac{FFD} a good deformation
|
||||||
function?}{Why is a good deformation function?}}\label{why-is-a-good-deformation-function}
|
function?}{Why is a good deformation function?}}\label{why-is-a-good-deformation-function}
|
||||||
|
|
||||||
@ -561,10 +583,10 @@ The inversion of \(\kappa(\vec{U})\) is only performed to map the
|
|||||||
criterion--range to \([0..1]\), whereas \(1\) is the optimal value and
|
criterion--range to \([0..1]\), whereas \(1\) is the optimal value and
|
||||||
\(0\) is the worst value.
|
\(0\) is the worst value.
|
||||||
|
|
||||||
This criterion should be characteristic for numeric stability on the on
|
On the one hand this criterion should be characteristic for numeric
|
||||||
hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of
|
stability\cite[chapter 2.7]{golub2012matrix} and on the other hand for
|
||||||
evolutionary algorithms on the other hand\cite{anrichterEvol} as it is
|
the convergence speed of evolutionary algorithms\cite{anrichterEvol} as
|
||||||
tied to the notion of
|
it is tied to the notion of
|
||||||
locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
||||||
|
|
||||||
\subsection{Improvement Potential}\label{improvement-potential}
|
\subsection{Improvement Potential}\label{improvement-potential}
|
||||||
@ -764,6 +786,8 @@ using
|
|||||||
\acf{FFD}}{Scenarios for testing evolvability criteria using }}\label{scenarios-for-testing-evolvability-criteria-using}
|
\acf{FFD}}{Scenarios for testing evolvability criteria using }}\label{scenarios-for-testing-evolvability-criteria-using}
|
||||||
|
|
||||||
\label{sec:eval}
|
\label{sec:eval}
|
||||||
|
\improvement[inline]{für 1d und 3d entweder konsistent source/target oder
|
||||||
|
anders. Weil sonst in 1d $\vec{s}$ das Ziel, in 3d $\vec{t}$ das Ziel.}
|
||||||
|
|
||||||
In our experiments we use the same two testing--scenarios, that were
|
In our experiments we use the same two testing--scenarios, that were
|
||||||
also used by \cite{anrichterEvol}. The first scenario deforms a plane
|
also used by \cite{anrichterEvol}. The first scenario deforms a plane
|
||||||
@ -779,15 +803,6 @@ scenario.
|
|||||||
\section{Test Scenario: 1D Function
|
\section{Test Scenario: 1D Function
|
||||||
Approximation}\label{test-scenario-1d-function-approximation}
|
Approximation}\label{test-scenario-1d-function-approximation}
|
||||||
|
|
||||||
\begin{figure}[th]
|
|
||||||
\begin{center}
|
|
||||||
\includegraphics[width=0.7\textwidth]{img/1dtarget.png}
|
|
||||||
\end{center}
|
|
||||||
\caption{The target--shape for our 1--dimensional optimization--scenario
|
|
||||||
including a wireframe--overlay of the vertices.}
|
|
||||||
\label{fig:1dtarget}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
In this scenario we used the shape defined by Giannelli et
|
In this scenario we used the shape defined by Giannelli et
|
||||||
al.\cite{giannelli2012thb}, which is also used by Richter et
|
al.\cite{giannelli2012thb}, which is also used by Richter et
|
||||||
al.\cite{anrichterEvol} using the same discretization to
|
al.\cite{anrichterEvol} using the same discretization to
|
||||||
@ -803,6 +818,16 @@ s(x,y) =
|
|||||||
\(q(x,y)=(x-1.5)^2 + (y-0.5)^2\), which we have visualized in figure
|
\(q(x,y)=(x-1.5)^2 + (y-0.5)^2\), which we have visualized in figure
|
||||||
\ref{fig:1dtarget}.
|
\ref{fig:1dtarget}.
|
||||||
|
|
||||||
|
begin\{figure\}{[}ht{]}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=0.7\textwidth]{img/1dtarget.png}
|
||||||
|
\end{center}\caption{The target--shape for our 1--dimensional optimization--scenario
|
||||||
|
including a wireframe--overlay of the vertices.}
|
||||||
|
\label{fig:1dtarget}
|
||||||
|
|
||||||
|
\textbackslash{}end\{figure\}
|
||||||
|
|
||||||
As the starting-plane we used the same shape, but set all
|
As the starting-plane we used the same shape, but set all
|
||||||
\(z\)--coordinates to \(0\), yielding a flat plane, which is partially
|
\(z\)--coordinates to \(0\), yielding a flat plane, which is partially
|
||||||
already correct.
|
already correct.
|
||||||
@ -839,6 +864,15 @@ consider a distorted gradient \(\vec{g}_{\textrm{d}}\) \[
|
|||||||
dimension and \(\vec{g}_\textrm{c} = \vec{p^{*}}\) the calculated
|
dimension and \(\vec{g}_\textrm{c} = \vec{p^{*}}\) the calculated
|
||||||
correct gradient.
|
correct gradient.
|
||||||
|
|
||||||
|
\begin{figure}[ht]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=\textwidth]{img/example1d_grid.png}
|
||||||
|
\end{center}
|
||||||
|
\caption{\newline Left: A regular $7 \times 4$--grid\newline Right: The same grid after a
|
||||||
|
random distortion to generate a testcase.}
|
||||||
|
\label{fig:example1d_grid}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
We then set up a regular 2--dimensional grid around the object with the
|
We then set up a regular 2--dimensional grid around the object with the
|
||||||
desired grid resolutions. To generate a testcase we then move the
|
desired grid resolutions. To generate a testcase we then move the
|
||||||
grid--vertices randomly inside the x--y--plane. As we do not want to
|
grid--vertices randomly inside the x--y--plane. As we do not want to
|
||||||
@ -851,47 +885,84 @@ neighbours (the smaller neighbour for \(r < 0\), the larger for
|
|||||||
displacement is only applied outwards by flipping the sign of \(r\),
|
displacement is only applied outwards by flipping the sign of \(r\),
|
||||||
if appropriate.}.
|
if appropriate.}.
|
||||||
|
|
||||||
\begin{figure}[ht]
|
|
||||||
\begin{center}
|
|
||||||
\includegraphics[width=\textwidth]{img/example1d_grid.png}
|
|
||||||
\end{center}
|
|
||||||
\caption{\newline Left: A regular $7 \times 4$--grid\newline Right: The same grid after a
|
|
||||||
random distortion to generate a testcase.}
|
|
||||||
\label{fig:example1d_grid}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
An Example of such a testcase can be seen for a \(7 \times 4\)--grid in
|
An Example of such a testcase can be seen for a \(7 \times 4\)--grid in
|
||||||
figure \ref{fig:example1d_grid}.
|
figure \ref{fig:example1d_grid}.
|
||||||
|
|
||||||
\section{Test Scenario: 3D Function
|
\section{Test Scenario: 3D Function
|
||||||
Approximation}\label{test-scenario-3d-function-approximation}
|
Approximation}\label{test-scenario-3d-function-approximation}
|
||||||
|
|
||||||
\subsection{Optimierungsszenario}\label{optimierungsszenario}
|
Opposed to the 1--dimensional scenario before, the 3--dimensional
|
||||||
|
scenario is much more complex --- not only because we have more degrees
|
||||||
|
of freedom on each control point, but also because the
|
||||||
|
\emph{fitness--function} we will use has no known analytic solution and
|
||||||
|
multiple local minima.
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{figure}[ht]
|
||||||
\tightlist
|
\begin{center}
|
||||||
\item
|
\includegraphics[width=0.7\textwidth]{img/3dtarget.png}
|
||||||
Ball zu Mario
|
\end{center}
|
||||||
\end{itemize}
|
\caption{\newline
|
||||||
|
Left: The sphere we start from with 10\,807 vertices\newline
|
||||||
|
Right: The face we want to deform the sphere into with 12\,024 vertices.}
|
||||||
|
\label{fig:3dtarget}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
\subsection{Matching in 3D}\label{matching-in-3d}
|
First of all we introduce the set up: We have given a triangulated model
|
||||||
|
of a sphere consisting of 10,807 vertices, that we want to deform into a
|
||||||
|
the target--model of a face with a total of 12,024 vertices. Both of
|
||||||
|
these Models can be seen in figure \ref{fig:3dtarget}.
|
||||||
|
|
||||||
\begin{itemize}
|
Opposed to the 1D--case we cannot map the source and target--vertices in
|
||||||
\tightlist
|
a one--to--one--correspondence, which we especially need for the
|
||||||
\item
|
approximation of the fitting--error. Hence we state that the error of
|
||||||
alternierende Optimierung
|
one vertex is the distance to the closest vertex of the other model.
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
\subsection{Besonderheiten der
|
We therefore define the \emph{fitness--function} to be: \[
|
||||||
Optimierung}\label{besonderheiten-der-optimierung}
|
f(\vec{P}) = \frac{1}{n} \underbrace{\sum_{i=1}^n \|\vec{c_T(s_i)} -
|
||||||
|
\vec{s_i}\|_2^2}_{\textrm{source-to-target--distance}}
|
||||||
|
+ \frac{1}{m} \underbrace{\sum_{i=1}^m \|\vec{c_S(t_i)} -
|
||||||
|
\vec{t_i}\|_2^2}_{\textrm{target-to-source--distance}}
|
||||||
|
+ \lambda \cdot \textrm{regularization}
|
||||||
|
\] where \(\vec{c_T(s_i)}\) denotes the target--vertex that is
|
||||||
|
corresponding to the source--vertex \(\vec{s_i}\) and \(\vec{c_S(t_i)}\)
|
||||||
|
denotes the source--vertex that corresponds to the target--vertex
|
||||||
|
\(\vec{t_i}\). Note that the target--vertices are given and fixed by the
|
||||||
|
target--model of the face we want to deform into, whereas the
|
||||||
|
source--vertices vary depending on the chosen parameters \(\vec{P}\), as
|
||||||
|
those get calculated by the previously introduces formula
|
||||||
|
\(\vec{S} = \vec{UP}\) with \(\vec{S}\) being the \(n \times 3\)--matrix
|
||||||
|
of source--vertices, \(\vec{U}\) the \(n \times m\)--matrix of
|
||||||
|
calculated coefficients for the \ac{FFD} --- analog to the 1D case ---
|
||||||
|
and finally \(\vec{P}\) being the \(m \times 3\)--matrix of the
|
||||||
|
control--grid defining the whole deformation.
|
||||||
|
|
||||||
\begin{itemize}
|
As regularization-term we introduce a weighted decaying
|
||||||
\tightlist
|
laplace--coefficient\unsure{heisst der so?} that is known to speed up
|
||||||
\item
|
the optimization--process\improvement{cite [34] aus
|
||||||
Analytische Lösung nur bis zur Optimierung der ersten Punkte gültig
|
ref{anrichterEvol}} and simulates a material that is very stiff in the
|
||||||
\item
|
beginning --- to do a coarse deformation --- and gets easier to deform
|
||||||
Kriterien trotzdem gut
|
over time.
|
||||||
\end{itemize}
|
|
||||||
|
\improvement[inline]{mehr zu regularisierung, Formel etc.}
|
||||||
|
|
||||||
|
\section{Procedure: 3D Function
|
||||||
|
Approximation}\label{procedure-3d-function-approximation}
|
||||||
|
|
||||||
|
Initially we set up the correspondences \(\vec{c_T(\dots)}\) and
|
||||||
|
\(\vec{c_S(\dots)}\) to be the respectively closest vertices of the
|
||||||
|
other model. We then calculate the analytical solution given these
|
||||||
|
correspondences via \(\vec{P^{*}} = \vec{U^+}\vec{T}\), and also use the
|
||||||
|
first solution as guessed gradient for the calculation of the
|
||||||
|
\emph{improvement--potential}, as the optimal solution is not known. We
|
||||||
|
then let the evolutionary algorithm run up within \(1.05\) times the
|
||||||
|
error of this solution and afterwards recalculate the correspondences
|
||||||
|
\(\vec{c_T(\dots)}\) and \(\vec{c_S(\dots)}\). For the next step we then
|
||||||
|
halve the regularization--impact \(\lambda\) and calculate the next
|
||||||
|
incremental solution \(\vec{P^{*}} = \vec{U^+}\vec{T}\) with the updated
|
||||||
|
correspondences to get our next target--error. We repeat this process as
|
||||||
|
long as the target--error keeps decreasing.
|
||||||
|
|
||||||
|
\improvement[inline]{grid-setup}
|
||||||
|
|
||||||
\chapter{Evaluation of Scenarios}\label{evaluation-of-scenarios}
|
\chapter{Evaluation of Scenarios}\label{evaluation-of-scenarios}
|
||||||
|
|
||||||
@ -926,9 +997,13 @@ Approximation}\label{results-of-1d-function-approximation}
|
|||||||
Approximation}\label{results-of-3d-function-approximation}
|
Approximation}\label{results-of-3d-function-approximation}
|
||||||
|
|
||||||
\begin{figure}[!ht]
|
\begin{figure}[!ht]
|
||||||
\includegraphics[width=\textwidth]{img/evolution3d/20171007_3dFit_all_append.png}
|
\includegraphics[width=\textwidth]{img/evolution3d/4x4xX_montage.png}
|
||||||
\caption{Results 3D}
|
\caption{Results 3D for 4x4xX}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\includegraphics[width=\textwidth]{img/evolution3d/Xx4x4_montage.png}
|
||||||
|
\caption{Results 3D for Xx4x4}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\chapter{Schluss}\label{schluss}
|
\chapter{Schluss}\label{schluss}
|
||||||
|
Loading…
Reference in New Issue
Block a user