done?
This commit is contained in:
parent
c54b3f2960
commit
103b629b84
@ -2,10 +2,9 @@
|
|||||||
\thispagestyle{empty}
|
\thispagestyle{empty}
|
||||||
\vspace*{\stretch{1}}
|
\vspace*{\stretch{1}}
|
||||||
\noindent
|
\noindent
|
||||||
{\huge Declaration of own work(?)}\\[1cm]
|
{\huge Declaration of own work}\\[1cm]
|
||||||
I hereby declare that this thesis is my own work and effort. Where other sources of information have been used, they have been acknowledged.
|
I hereby declare that this thesis is my own work and effort. Where other sources of information have been used, they have been acknowledged.
|
||||||
\improvement[inline]{write proper declaration..}
|
\\[2cm]
|
||||||
%\\[2cm]
|
Bielefeld, \today\hspace{\fill}
|
||||||
Bielefeld, den \today\hspace{\fill}
|
|
||||||
\parbox[t]{5cm}{\dotfill\\ \centering Stefan Dresselhaus}
|
\parbox[t]{5cm}{\dotfill\\ \centering Stefan Dresselhaus}
|
||||||
\vspace*{\stretch{3}}
|
\vspace*{\stretch{3}}
|
||||||
|
BIN
arbeit/img/imp1d3d.png
Normal file
BIN
arbeit/img/imp1d3d.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
134
arbeit/ma.md
134
arbeit/ma.md
@ -125,8 +125,8 @@ Chapter \ref{sec:dis}.
|
|||||||
\label{sec:back:ffd}
|
\label{sec:back:ffd}
|
||||||
|
|
||||||
First of all we have to establish how a \ac{FFD} works and why this is a good
|
First of all we have to establish how a \ac{FFD} works and why this is a good
|
||||||
tool for deforming geometric objects (esp. meshes in our case) in the first
|
tool for deforming geometric objects (especially meshes in our case) in the
|
||||||
place. For simplicity we only summarize the 1D--case from
|
first place. For simplicity we only summarize the 1D--case from
|
||||||
\cite{spitzmuller1996bezier} here and go into the extension to the 3D case in
|
\cite{spitzmuller1996bezier} here and go into the extension to the 3D case in
|
||||||
chapter \ref{3dffd}.
|
chapter \ref{3dffd}.
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ corresponding deformation to generate a deformed objet}
|
|||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
In the 1--dimensional example in figure \ref{fig:bspline}, the control--points
|
In the 1--dimensional example in figure \ref{fig:bspline}, the control--points
|
||||||
are indicated as red dots and the color-gradient should hint at the $u$--values
|
are indicated as red dots and the colour--gradient should hint at the $u$--values
|
||||||
ranging from $0$ to $1$.
|
ranging from $0$ to $1$.
|
||||||
|
|
||||||
We now define a \acf{FFD} by the following:
|
We now define a \acf{FFD} by the following:
|
||||||
@ -169,7 +169,7 @@ N_{i,d,\tau}(u) = \frac{u-\tau_i}{\tau_{i+d}} N_{i,d-1,\tau}(u) + \frac{\tau_{i+
|
|||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
If we now multiply every $p_i$ with the corresponding $N_{i,d,\tau_i}(u)$ we get
|
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
|
the contribution of each point $p_i$ to the final curve--point parametrized only
|
||||||
by $u \in [0,1[$. As can be seen from \eqref{eqn:ffd1d2} we only access points
|
by $u \in [0,1[$. As can be seen from \eqref{eqn:ffd1d2} we only access points
|
||||||
$[p_i..p_{i+d}]$ for any given $i$^[one more for each recursive step.], which gives
|
$[p_i..p_{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
|
us, in combination with choosing $p_i$ and $\tau_i$ in order, only a local
|
||||||
@ -216,18 +216,18 @@ where $\vec{N}$ is the $n \times m$ transformation--matrix (later on called
|
|||||||
\end{center}
|
\end{center}
|
||||||
\caption[B--spline--basis--function as partition of unity]{From \cite[Figure 2.13]{brunet2010contributions}:\newline
|
\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
|
\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
|
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.
|
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
|
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
|
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
|
not null. At a given point, there are at most $ d+1$ non-zero B--Spline basis
|
||||||
functions (compact support).\grqq \newline
|
functions (compact support).\grqq \newline
|
||||||
Note, that Brunet starts his index at $-d$ opposed to our definition, where we
|
Note, that Brunet starts his index at $-d$ opposed to our definition, where we
|
||||||
start at $0$.}
|
start at $0$.}
|
||||||
\label{fig:partition_unity}
|
\label{fig:partition_unity}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Furthermore B--splines--basis--functions form a partition of unity for all, but
|
Furthermore B--Spline--basis--functions form a partition of unity for all, but
|
||||||
the first and last $d$ control-points\cite{brunet2010contributions}. Therefore
|
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$
|
we later on use the border-points $d+1$ times, such that $\sum_j n_{i,j} p_j = p_i$
|
||||||
for these points.
|
for these points.
|
||||||
@ -308,9 +308,29 @@ initialized by a random guess or just zero. Further on we need a so--called
|
|||||||
space $M$ (usually $M = \mathbb{R}$) along a convergence--function $c : I \mapsto \mathbb{B}$
|
space $M$ (usually $M = \mathbb{R}$) along a convergence--function $c : I \mapsto \mathbb{B}$
|
||||||
that terminates the optimization.
|
that terminates the optimization.
|
||||||
|
|
||||||
Biologically speaking the set $I$ corresponds to the set of possible *Genotypes*
|
Biologically speaking the set $I$ corresponds to the set of possible *genotypes*
|
||||||
while $M$ represents the possible observable *Phenotypes*.
|
while $M$ represents the possible observable *phenotypes*. *Genotypes* define
|
||||||
\improvement[inline]{Erklären, was das ist. Quellen!}
|
all initial properties of an individual, but their properties are not directly
|
||||||
|
observable. It is the genes, that evolve over time (and thus correspond to the
|
||||||
|
parameters we are tweaking in our algorithms or the genes in nature), but only
|
||||||
|
the *phenotypes* make certain behaviour observable (algorithmically through our
|
||||||
|
*fitness--function*, biologically by the ability to survive and produce
|
||||||
|
offspring). Any individual in our algorithm thus experience a biologically
|
||||||
|
motivated life cycle of inheriting genes from the parents, modified by mutations
|
||||||
|
occurring, performing according to a fitness--metric and generating offspring
|
||||||
|
based on this. Therefore each iteration in the while--loop above is also often
|
||||||
|
named generation.
|
||||||
|
|
||||||
|
One should note that there is a subtle difference between *fitness--function*
|
||||||
|
and a so called *genotype--phenotype--mapping*. The first one directly applies
|
||||||
|
the *genotype--phenotype--mapping* and evaluates the performance of an individual,
|
||||||
|
thus going directly from genes/parameters to reproduction--probability/score.
|
||||||
|
In a concrete example the *genotype* can be an arbitrary vector (the genes), the
|
||||||
|
*phenotype* is then a deformed object, and the performance can be a single
|
||||||
|
measurement like an air--drag--coefficient. The *genotype--phenotype--mapping*
|
||||||
|
would then just be the generation of different objects from that
|
||||||
|
starting--vector, whereas the *fitness--function* would go directly from such a
|
||||||
|
starting--vector to the coefficient that we want to optimize.
|
||||||
|
|
||||||
The main algorithm just repeats the following steps:
|
The main algorithm just repeats the following steps:
|
||||||
|
|
||||||
@ -335,15 +355,16 @@ can be changed over time. A good overview of this is given in
|
|||||||
|
|
||||||
For example the mutation can consist of merely a single $\sigma$ determining the
|
For example the mutation can consist of merely a single $\sigma$ determining the
|
||||||
strength of the gaussian defects in every parameter --- or giving a different
|
strength of the gaussian defects in every parameter --- or giving a different
|
||||||
$\sigma$ to every part. An even more sophisticated example would be the \glqq 1/5
|
$\sigma$ to every component of those parameters. An even more sophisticated
|
||||||
success rule\grqq \ from \cite{rechenberg1973evolutionsstrategie}.
|
example would be the \glqq 1/5 success rule\grqq \ from
|
||||||
|
\cite{rechenberg1973evolutionsstrategie}.
|
||||||
|
|
||||||
Also in selection it may not be wise to only take the best--performing
|
Also in the selection--function it may not be wise to only take the
|
||||||
individuals, because it may be that the optimization has to overcome a barrier
|
best--performing individuals, because it may be that the optimization has to
|
||||||
of bad fitness to achieve a better local optimum.
|
overcome a barrier of bad fitness to achieve a better local optimum.
|
||||||
|
|
||||||
Recombination also does not have to be mere random choosing of parents, but can
|
Recombination also does not have to be mere random choosing of parents, but can
|
||||||
also take ancestry, distance of genes or grouping into account.
|
also take ancestry, distance of genes or groups of individuals into account.
|
||||||
|
|
||||||
## Advantages of evolutionary algorithms
|
## Advantages of evolutionary algorithms
|
||||||
\label{sec:back:evogood}
|
\label{sec:back:evogood}
|
||||||
@ -364,13 +385,11 @@ are shown in figure \ref{fig:probhard}.
|
|||||||
Most of the advantages stem from the fact that a gradient--based procedure has
|
Most of the advantages stem from the fact that a gradient--based procedure has
|
||||||
only one point of observation from where it evaluates the next steps, whereas an
|
only one point of observation from where it evaluates the next steps, whereas an
|
||||||
evolutionary strategy starts with a population of guessed solutions. Because an
|
evolutionary strategy starts with a population of guessed solutions. Because an
|
||||||
evolutionary strategy modifies the solution randomly, keeping some solutions
|
evolutionary strategy can be modified according to the problem--domain (i.e. by
|
||||||
and purging others, it can also target multiple different hypothesis at the
|
the ideas given above) it can also approximate very difficult problems in an
|
||||||
same time where the local optima die out in the face of other, better
|
efficient manner and even self--tune parameters depending on the ancestry at
|
||||||
candidates.
|
runtime^[Some examples of this are explained in detail in
|
||||||
|
\cite{eiben1999parameter}].
|
||||||
\improvement[inline]{Verweis auf MO-CMA etc. Vielleicht auch etwas
|
|
||||||
ausführlicher.}
|
|
||||||
|
|
||||||
If an analytic best solution exists and is easily computable (i.e. because the
|
If an analytic best solution exists and is easily computable (i.e. because the
|
||||||
error--function is convex) an evolutionary algorithm is not the right choice.
|
error--function is convex) an evolutionary algorithm is not the right choice.
|
||||||
@ -381,7 +400,7 @@ either not convex or there are so many parameters that an analytic solution
|
|||||||
(mostly meaning the equivalence to an exhaustive search) is computationally not
|
(mostly meaning the equivalence to an exhaustive search) is computationally not
|
||||||
feasible. Here evolutionary optimization has one more advantage as one can at
|
feasible. Here evolutionary optimization has one more advantage as one can at
|
||||||
least get suboptimal solutions fast, which then refine over time and still
|
least get suboptimal solutions fast, which then refine over time and still
|
||||||
converge to the same solution.
|
converge to a decent solution much faster than an exhaustive search.
|
||||||
|
|
||||||
## Criteria for the evolvability of linear deformations
|
## Criteria for the evolvability of linear deformations
|
||||||
\label{sec:intro:rvi}
|
\label{sec:intro:rvi}
|
||||||
@ -445,8 +464,8 @@ optimal value and $0$ is the worst value.
|
|||||||
|
|
||||||
On the one hand this criterion should be characteristic for numeric
|
On the one hand this criterion should be characteristic for numeric
|
||||||
stability\cite[chapter 2.7]{golub2012matrix} and on the other hand for the
|
stability\cite[chapter 2.7]{golub2012matrix} and on the other hand for the
|
||||||
convergence speed of evolutionary algorithms\cite{anrichterEvol} as it is tied to
|
convergence speed of evolutionary algorithms\cite{anrichterEvol} as it is tied
|
||||||
the notion of locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
to the notion of locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
||||||
|
|
||||||
### Improvement Potential
|
### Improvement Potential
|
||||||
|
|
||||||
@ -582,7 +601,7 @@ $$
|
|||||||
|
|
||||||
With the Gauss--Newton algorithm we iterate via the formula
|
With the Gauss--Newton algorithm we iterate via the formula
|
||||||
$$J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)$$
|
$$J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)$$
|
||||||
and use Cramers rule for inverting the small Jacobian and solving this system of
|
and use Cramer's rule for inverting the small Jacobian and solving this system of
|
||||||
linear equations.
|
linear equations.
|
||||||
|
|
||||||
As there is no strict upper bound of the number of iterations for this
|
As there is no strict upper bound of the number of iterations for this
|
||||||
@ -818,10 +837,9 @@ instead of correlation we flip the sign of the correlation--coefficient for
|
|||||||
readability and to have the correlation--coefficients be in the
|
readability and to have the correlation--coefficients be in the
|
||||||
classification--range given above.
|
classification--range given above.
|
||||||
|
|
||||||
For the evolutionary optimization we employ the CMA--ES (covariance matrix
|
For the evolutionary optimization we employ the \afc{CMA--ES} of the shark3.1
|
||||||
adaptation evolution strategy) of the shark3.1 library \cite{shark08}, as this
|
library \cite{shark08}, as this algorithm was used by \cite{anrichterEvol} as
|
||||||
algorithm was used by \cite{anrichterEvol} as well. We leave the parameters at
|
well. We leave the parameters at their sensible defaults as further explained in
|
||||||
their sensible defaults as further explained in
|
|
||||||
\cite[Appendix~A: Table~1]{hansen2016cma}.
|
\cite[Appendix~A: Table~1]{hansen2016cma}.
|
||||||
|
|
||||||
## Procedure: 1D Function Approximation
|
## Procedure: 1D Function Approximation
|
||||||
@ -911,7 +929,7 @@ is defined in terms of the normalized rank of the deformation matrix $\vec{U}$:
|
|||||||
$V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n}$, whereby $n$ is the number of
|
$V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n}$, whereby $n$ is the number of
|
||||||
vertices.
|
vertices.
|
||||||
As all our tested matrices had a constant rank (being $m = x \cdot y$ for a $x \times y$
|
As all our tested matrices had a constant rank (being $m = x \cdot y$ for a $x \times y$
|
||||||
grid), we have merely plotted the errors in the boxplot in figure
|
grid), we have merely plotted the errors in the box plot in figure
|
||||||
\ref{fig:1dvar}
|
\ref{fig:1dvar}
|
||||||
|
|
||||||
It is also noticeable, that although the $7 \times 4$ and $4 \times 7$ grids
|
It is also noticeable, that although the $7 \times 4$ and $4 \times 7$ grids
|
||||||
@ -1114,7 +1132,7 @@ in brackets for three cases of increasing variability ($\mathrm{X} \in [4,5,7],
|
|||||||
|
|
||||||
Similar to the 1D case all our tested matrices had a constant rank (being
|
Similar to the 1D case all our tested matrices had a constant rank (being
|
||||||
$m = x \cdot y \cdot z$ for a $x \times y \times z$ grid), so we again have merely plotted
|
$m = x \cdot y \cdot z$ for a $x \times y \times z$ grid), so we again have merely plotted
|
||||||
the errors in the boxplot in figure \ref{fig:3dvar}.
|
the errors in the box plot in figure \ref{fig:3dvar}.
|
||||||
|
|
||||||
As expected the $\mathrm{X} \times 4 \times 4$ grids performed
|
As expected the $\mathrm{X} \times 4 \times 4$ grids performed
|
||||||
slightly better than their $4 \times 4 \times \mathrm{X}$ counterparts with a
|
slightly better than their $4 \times 4 \times \mathrm{X}$ counterparts with a
|
||||||
@ -1133,7 +1151,8 @@ deformation--matrix.
|
|||||||
\includegraphics[width=0.8\textwidth]{img/evolution3d/variability2_boxplot.png}
|
\includegraphics[width=0.8\textwidth]{img/evolution3d/variability2_boxplot.png}
|
||||||
\caption[Histogram of ranks of high--resolution deformation--matrices]{
|
\caption[Histogram of ranks of high--resolution deformation--matrices]{
|
||||||
Histogram of ranks of various $10 \times 10 \times 10$ grids with $1000$
|
Histogram of ranks of various $10 \times 10 \times 10$ grids with $1000$
|
||||||
control--points each.
|
control--points each showing in this case how many control points are actually
|
||||||
|
used in the calculations.
|
||||||
}
|
}
|
||||||
\label{fig:histrank3d}
|
\label{fig:histrank3d}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
@ -1306,7 +1325,7 @@ before with the regularity. In figure \ref{fig:resimp3d} one can clearly see the
|
|||||||
correlation and the spread within each setup and the behaviour when we increase
|
correlation and the spread within each setup and the behaviour when we increase
|
||||||
the number of control--points.
|
the number of control--points.
|
||||||
|
|
||||||
Along with this we also give the spearman--coefficients along with their
|
Along with this we also give the Spearman--coefficients along with their
|
||||||
p--values in table \ref{tab:3dimp}. Within one scenario we only find a *weak* to
|
p--values in table \ref{tab:3dimp}. Within one scenario we only find a *weak* to
|
||||||
*moderate* correlation between the improvement potential and the fitting error,
|
*moderate* correlation between the improvement potential and the fitting error,
|
||||||
but all findings (except for $7 \times 4 \times 4$ and $6 \times 6 \times 6$)
|
but all findings (except for $7 \times 4 \times 4$ and $6 \times 6 \times 6$)
|
||||||
@ -1319,9 +1338,28 @@ quality is naturally tied to the number of control--points.
|
|||||||
All in all the improvement potential seems to be a good and sensible measure of
|
All in all the improvement potential seems to be a good and sensible measure of
|
||||||
quality, even given gradients of varying quality.
|
quality, even given gradients of varying quality.
|
||||||
|
|
||||||
\improvement[inline]{improvement--potential vs. steps ist anders als in 1d! Plot
|
Lastly, a small note on the behaviour of improvement potential and convergence
|
||||||
und zeigen!}
|
speed, as we used this in the 1D case to argue, why the *regularity* defied our
|
||||||
|
expectations. As a contrast we wanted to show, that improvement potential cannot
|
||||||
|
serve for good predictions of the convergence speed. In figure
|
||||||
|
\ref{fig:imp1d3d} we show improvement potential against number of iterations
|
||||||
|
for both scenarios. As one can see, in the 1D scenario we have a *strong*
|
||||||
|
and *significant* correlation (with $-r_S = -0.72$, $p = 0$), whereas in the 3D
|
||||||
|
scenario we have the opposite *significant* and *strong* effect (with
|
||||||
|
$-r_S = 0.69$, $p=0$), so these correlations clearly seem to be dependent on the
|
||||||
|
scenario and are not suited for generalization.
|
||||||
|
|
||||||
|
\begin{figure}[hbt]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{img/imp1d3d.png}
|
||||||
|
\caption[Improvement potential and convergence speed for 1D and 3D--scenarios]{
|
||||||
|
\newline
|
||||||
|
Left: Improvement potential against convergence speed for the
|
||||||
|
1D--scenario\newline
|
||||||
|
Right: Improvement potential against convergence speed for the 3D--scnario
|
||||||
|
}
|
||||||
|
\label{fig:imp1d3d}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
# Discussion and outlook
|
# Discussion and outlook
|
||||||
\label{sec:dis}
|
\label{sec:dis}
|
||||||
@ -1355,23 +1393,27 @@ between $0.34$ to $0.87$.
|
|||||||
|
|
||||||
Taking these results into consideration, one can say, that *variability* and
|
Taking these results into consideration, one can say, that *variability* and
|
||||||
*improvement potential* are very good estimates for the quality of a fit using
|
*improvement potential* are very good estimates for the quality of a fit using
|
||||||
\acf{FFD} as a deformation function.
|
\acf{FFD} as a deformation function, while we could not reproduce similar
|
||||||
|
compelling results as Richter et al. for *regularity and convergence speed*.
|
||||||
|
|
||||||
One reason for the bad or erratic behaviour of the *regularity*--criterion could
|
One reason for the bad or erratic behaviour of the *regularity*--criterion could
|
||||||
be that in an \ac{FFD}--setting we have a likelihood of having control--points
|
be that in an \ac{FFD}--setting we have a likelihood of having control--points
|
||||||
that are only contributing to the whole parametrization in negligible amounts.
|
that are only contributing to the whole parametrization in negligible amounts,
|
||||||
This results in very small right singular values of the deformation--matrix
|
resulting in very small right singular values of the deformation--matrix
|
||||||
$\vec{U}$ that influence the condition--number and thus the *regularity* in a
|
$\vec{U}$ that influence the condition--number and thus the *regularity* in a
|
||||||
significant way. Further research is needed to refine *regularity* so that these
|
significant way. Further research is needed to refine *regularity* so that these
|
||||||
problems get addressed.
|
problems get addressed, like taking all singular values into account when
|
||||||
|
capturing the notion of *regularity*.
|
||||||
|
|
||||||
Richter et al. also compared the behaviour of direct and indirect manipulation
|
Richter et al. also compared the behaviour of direct and indirect manipulation
|
||||||
in \cite{anrichterEvol}, whereas we merely used an indirect \ac{FFD}--approach.
|
in \cite{anrichterEvol}, whereas we merely used an indirect \ac{FFD}--approach.
|
||||||
As direct manipulations tend to perform better than indirect manipulations, the
|
As direct manipulations tend to perform better than indirect manipulations, the
|
||||||
usage of \acf{DM--FFD} could also work better with the criteria we examined.
|
usage of \acf{DM--FFD} could also work better with the criteria we examined.
|
||||||
|
This can also solve the problem of bad singular values for the *regularity* as
|
||||||
\improvement[inline]{write more outlook/further research}
|
the incorporation of the parametrization of the points on the surface, which are
|
||||||
|
the essential part of a direct--manipulation, could cancel out a bad
|
||||||
|
control--grid as the bad control--points are never or negligibly used to
|
||||||
|
parametrize those surface--points.
|
||||||
|
|
||||||
\improvement[inline]{Bibliotheksverzeichnis links anpassen. DOI überschreibt
|
\improvement[inline]{Bibliotheksverzeichnis links anpassen. DOI überschreibt
|
||||||
Direktlinks des Autors.\newline
|
Direktlinks des Autors.}
|
||||||
Außerdem bricht url über Seitengrenzen den Seitenspiegel.}
|
|
||||||
|
BIN
arbeit/ma.pdf
BIN
arbeit/ma.pdf
Binary file not shown.
149
arbeit/ma.tex
149
arbeit/ma.tex
@ -278,10 +278,10 @@ outlook in Chapter \ref{sec:dis}.
|
|||||||
\label{sec:back:ffd}
|
\label{sec:back:ffd}
|
||||||
|
|
||||||
First of all we have to establish how a \ac{FFD} works and why this is a
|
First of all we have to establish how a \ac{FFD} works and why this is a
|
||||||
good tool for deforming geometric objects (esp. meshes in our case) in
|
good tool for deforming geometric objects (especially meshes in our
|
||||||
the first place. For simplicity we only summarize the 1D--case from
|
case) in the first place. For simplicity we only summarize the 1D--case
|
||||||
\cite{spitzmuller1996bezier} here and go into the extension to the 3D
|
from \cite{spitzmuller1996bezier} here and go into the extension to the
|
||||||
case in chapter~\ref{3dffd}.
|
3D case in chapter~\ref{3dffd}.
|
||||||
|
|
||||||
The main idea of \ac{FFD} is to create a function
|
The main idea of \ac{FFD} is to create a function
|
||||||
\(s : [0,1[^d \mapsto \mathbb{R}^d\) that spans a certain part of a
|
\(s : [0,1[^d \mapsto \mathbb{R}^d\) that spans a certain part of a
|
||||||
@ -302,8 +302,8 @@ corresponding deformation to generate a deformed objet}
|
|||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
In the 1--dimensional example in figure~\ref{fig:bspline}, the
|
In the 1--dimensional example in figure~\ref{fig:bspline}, the
|
||||||
control--points are indicated as red dots and the color-gradient should
|
control--points are indicated as red dots and the colour--gradient
|
||||||
hint at the \(u\)--values ranging from \(0\) to \(1\).
|
should hint at the \(u\)--values ranging from \(0\) to \(1\).
|
||||||
|
|
||||||
We now define a \acf{FFD} by the following:\\
|
We now define a \acf{FFD} by the following:\\
|
||||||
Given an arbitrary number of points \(p_i\) alongside a line, we map a
|
Given an arbitrary number of points \(p_i\) alongside a line, we map a
|
||||||
@ -324,7 +324,7 @@ N_{i,d,\tau}(u) = \frac{u-\tau_i}{\tau_{i+d}} N_{i,d-1,\tau}(u) + \frac{\tau_{i+
|
|||||||
|
|
||||||
If we now multiply every \(p_i\) with the corresponding
|
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
|
\(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
|
the final curve--point parametrized only by \(u \in [0,1[\). As can be
|
||||||
seen from \eqref{eqn:ffd1d2} we only access points \([p_i..p_{i+d}]\)
|
seen from \eqref{eqn:ffd1d2} we only access points \([p_i..p_{i+d}]\)
|
||||||
for any given \(i\)\footnote{one more for each recursive step.}, which
|
for any given \(i\)\footnote{one more for each recursive step.}, which
|
||||||
gives us, in combination with choosing \(p_i\) and \(\tau_i\) in order,
|
gives us, in combination with choosing \(p_i\) and \(\tau_i\) in order,
|
||||||
@ -368,18 +368,18 @@ and \(m\) control--points.
|
|||||||
\end{center}
|
\end{center}
|
||||||
\caption[B--spline--basis--function as partition of unity]{From \cite[Figure 2.13]{brunet2010contributions}:\newline
|
\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
|
\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
|
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.
|
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
|
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
|
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
|
not null. At a given point, there are at most $ d+1$ non-zero B--Spline basis
|
||||||
functions (compact support).\grqq \newline
|
functions (compact support).\grqq \newline
|
||||||
Note, that Brunet starts his index at $-d$ opposed to our definition, where we
|
Note, that Brunet starts his index at $-d$ opposed to our definition, where we
|
||||||
start at $0$.}
|
start at $0$.}
|
||||||
\label{fig:partition_unity}
|
\label{fig:partition_unity}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Furthermore B--splines--basis--functions form a partition of unity for
|
Furthermore B--Spline--basis--functions form a partition of unity for
|
||||||
all, but the first and last \(d\)
|
all, but the first and last \(d\)
|
||||||
control-points\cite{brunet2010contributions}. Therefore we later on use
|
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\)
|
the border-points \(d+1\) times, such that \(\sum_j n_{i,j} p_j = p_i\)
|
||||||
@ -469,8 +469,32 @@ space \(M\) (usually \(M = \mathbb{R}\)) along a convergence--function
|
|||||||
\(c : I \mapsto \mathbb{B}\) that terminates the optimization.
|
\(c : I \mapsto \mathbb{B}\) that terminates the optimization.
|
||||||
|
|
||||||
Biologically speaking the set \(I\) corresponds to the set of possible
|
Biologically speaking the set \(I\) corresponds to the set of possible
|
||||||
\emph{Genotypes} while \(M\) represents the possible observable
|
\emph{genotypes} while \(M\) represents the possible observable
|
||||||
\emph{Phenotypes}. \improvement[inline]{Erklären, was das ist. Quellen!}
|
\emph{phenotypes}. \emph{Genotypes} define all initial properties of an
|
||||||
|
individual, but their properties are not directly observable. It is the
|
||||||
|
genes, that evolve over time (and thus correspond to the parameters we
|
||||||
|
are tweaking in our algorithms or the genes in nature), but only the
|
||||||
|
\emph{phenotypes} make certain behaviour observable (algorithmically
|
||||||
|
through our \emph{fitness--function}, biologically by the ability to
|
||||||
|
survive and produce offspring). Any individual in our algorithm thus
|
||||||
|
experience a biologically motivated life cycle of inheriting genes from
|
||||||
|
the parents, modified by mutations occurring, performing according to a
|
||||||
|
fitness--metric and generating offspring based on this. Therefore each
|
||||||
|
iteration in the while--loop above is also often named generation.
|
||||||
|
|
||||||
|
One should note that there is a subtle difference between
|
||||||
|
\emph{fitness--function} and a so called
|
||||||
|
\emph{genotype--phenotype--mapping}. The first one directly applies the
|
||||||
|
\emph{genotype--phenotype--mapping} and evaluates the performance of an
|
||||||
|
individual, thus going directly from genes/parameters to
|
||||||
|
reproduction--probability/score. In a concrete example the
|
||||||
|
\emph{genotype} can be an arbitrary vector (the genes), the
|
||||||
|
\emph{phenotype} is then a deformed object, and the performance can be a
|
||||||
|
single measurement like an air--drag--coefficient. The
|
||||||
|
\emph{genotype--phenotype--mapping} would then just be the generation of
|
||||||
|
different objects from that starting--vector, whereas the
|
||||||
|
\emph{fitness--function} would go directly from such a starting--vector
|
||||||
|
to the coefficient that we want to optimize.
|
||||||
|
|
||||||
The main algorithm just repeats the following steps:
|
The main algorithm just repeats the following steps:
|
||||||
|
|
||||||
@ -503,16 +527,18 @@ that can be changed over time. A good overview of this is given in
|
|||||||
|
|
||||||
For example the mutation can consist of merely a single \(\sigma\)
|
For example the mutation can consist of merely a single \(\sigma\)
|
||||||
determining the strength of the gaussian defects in every parameter ---
|
determining the strength of the gaussian defects in every parameter ---
|
||||||
or giving a different \(\sigma\) to every part. An even more
|
or giving a different \(\sigma\) to every component of those parameters.
|
||||||
sophisticated example would be the \glqq 1/5 success rule\grqq ~from
|
An even more sophisticated example would be the \glqq 1/5 success
|
||||||
\cite{rechenberg1973evolutionsstrategie}.
|
rule\grqq ~from \cite{rechenberg1973evolutionsstrategie}.
|
||||||
|
|
||||||
Also in selection it may not be wise to only take the best--performing
|
Also in the selection--function it may not be wise to only take the
|
||||||
individuals, because it may be that the optimization has to overcome a
|
best--performing individuals, because it may be that the optimization
|
||||||
barrier of bad fitness to achieve a better local optimum.
|
has to overcome a barrier of bad fitness to achieve a better local
|
||||||
|
optimum.
|
||||||
|
|
||||||
Recombination also does not have to be mere random choosing of parents,
|
Recombination also does not have to be mere random choosing of parents,
|
||||||
but can also take ancestry, distance of genes or grouping into account.
|
but can also take ancestry, distance of genes or groups of individuals
|
||||||
|
into account.
|
||||||
|
|
||||||
\section{Advantages of evolutionary
|
\section{Advantages of evolutionary
|
||||||
algorithms}\label{advantages-of-evolutionary-algorithms}
|
algorithms}\label{advantages-of-evolutionary-algorithms}
|
||||||
@ -535,13 +561,11 @@ typical problems are shown in figure \ref{fig:probhard}.
|
|||||||
Most of the advantages stem from the fact that a gradient--based
|
Most of the advantages stem from the fact that a gradient--based
|
||||||
procedure has only one point of observation from where it evaluates the
|
procedure has only one point of observation from where it evaluates the
|
||||||
next steps, whereas an evolutionary strategy starts with a population of
|
next steps, whereas an evolutionary strategy starts with a population of
|
||||||
guessed solutions. Because an evolutionary strategy modifies the
|
guessed solutions. Because an evolutionary strategy can be modified
|
||||||
solution randomly, keeping some solutions and purging others, it can
|
according to the problem--domain (i.e.~by the ideas given above) it can
|
||||||
also target multiple different hypothesis at the same time where the
|
also approximate very difficult problems in an efficient manner and even
|
||||||
local optima die out in the face of other, better candidates.
|
self--tune parameters depending on the ancestry at runtime\footnote{Some
|
||||||
|
examples of this are explained in detail in \cite{eiben1999parameter}}.
|
||||||
\improvement[inline]{Verweis auf MO-CMA etc. Vielleicht auch etwas
|
|
||||||
ausführlicher.}
|
|
||||||
|
|
||||||
If an analytic best solution exists and is easily computable
|
If an analytic best solution exists and is easily computable
|
||||||
(i.e.~because the error--function is convex) an evolutionary algorithm
|
(i.e.~because the error--function is convex) an evolutionary algorithm
|
||||||
@ -553,8 +577,8 @@ problem is either not convex or there are so many parameters that an
|
|||||||
analytic solution (mostly meaning the equivalence to an exhaustive
|
analytic solution (mostly meaning the equivalence to an exhaustive
|
||||||
search) is computationally not feasible. Here evolutionary optimization
|
search) is computationally not feasible. Here evolutionary optimization
|
||||||
has one more advantage as one can at least get suboptimal solutions
|
has one more advantage as one can at least get suboptimal solutions
|
||||||
fast, which then refine over time and still converge to the same
|
fast, which then refine over time and still converge to a decent
|
||||||
solution.
|
solution much faster than an exhaustive search.
|
||||||
|
|
||||||
\section{Criteria for the evolvability of linear
|
\section{Criteria for the evolvability of linear
|
||||||
deformations}\label{criteria-for-the-evolvability-of-linear-deformations}
|
deformations}\label{criteria-for-the-evolvability-of-linear-deformations}
|
||||||
@ -763,7 +787,7 @@ J(Err(u,v,w)) =
|
|||||||
|
|
||||||
With the Gauss--Newton algorithm we iterate via the formula
|
With the Gauss--Newton algorithm we iterate via the formula
|
||||||
\[J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)\]
|
\[J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)\]
|
||||||
and use Cramers rule for inverting the small Jacobian and solving this
|
and use Cramer's rule for inverting the small Jacobian and solving this
|
||||||
system of linear equations.
|
system of linear equations.
|
||||||
|
|
||||||
As there is no strict upper bound of the number of iterations for this
|
As there is no strict upper bound of the number of iterations for this
|
||||||
@ -1036,11 +1060,11 @@ reconstruction--error) instead of correlation we flip the sign of the
|
|||||||
correlation--coefficient for readability and to have the
|
correlation--coefficient for readability and to have the
|
||||||
correlation--coefficients be in the classification--range given above.
|
correlation--coefficients be in the classification--range given above.
|
||||||
|
|
||||||
For the evolutionary optimization we employ the CMA--ES (covariance
|
For the evolutionary optimization we employ the \afc{CMA--ES} of the
|
||||||
matrix adaptation evolution strategy) of the shark3.1 library
|
shark3.1 library \cite{shark08}, as this algorithm was used by
|
||||||
\cite{shark08}, as this algorithm was used by \cite{anrichterEvol} as
|
\cite{anrichterEvol} as well. We leave the parameters at their sensible
|
||||||
well. We leave the parameters at their sensible defaults as further
|
defaults as further explained in
|
||||||
explained in \cite[Appendix~A: Table~1]{hansen2016cma}.
|
\cite[Appendix~A: Table~1]{hansen2016cma}.
|
||||||
|
|
||||||
\section{Procedure: 1D Function
|
\section{Procedure: 1D Function
|
||||||
Approximation}\label{procedure-1d-function-approximation}
|
Approximation}\label{procedure-1d-function-approximation}
|
||||||
@ -1139,7 +1163,7 @@ deformation matrix \(\vec{U}\):
|
|||||||
\(V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n}\), whereby \(n\) is the
|
\(V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n}\), whereby \(n\) is the
|
||||||
number of vertices. As all our tested matrices had a constant rank
|
number of vertices. As all our tested matrices had a constant rank
|
||||||
(being \(m = x \cdot y\) for a \(x \times y\) grid), we have merely
|
(being \(m = x \cdot y\) for a \(x \times y\) grid), we have merely
|
||||||
plotted the errors in the boxplot in figure \ref{fig:1dvar}
|
plotted the errors in the box plot in figure \ref{fig:1dvar}
|
||||||
|
|
||||||
It is also noticeable, that although the \(7 \times 4\) and
|
It is also noticeable, that although the \(7 \times 4\) and
|
||||||
\(4 \times 7\) grids have a higher variability, they perform not better
|
\(4 \times 7\) grids have a higher variability, they perform not better
|
||||||
@ -1361,7 +1385,7 @@ in brackets for three cases of increasing variability ($\mathrm{X} \in [4,5,7],
|
|||||||
|
|
||||||
Similar to the 1D case all our tested matrices had a constant rank
|
Similar to the 1D case all our tested matrices had a constant rank
|
||||||
(being \(m = x \cdot y \cdot z\) for a \(x \times y \times z\) grid), so
|
(being \(m = x \cdot y \cdot z\) for a \(x \times y \times z\) grid), so
|
||||||
we again have merely plotted the errors in the boxplot in figure
|
we again have merely plotted the errors in the box plot in figure
|
||||||
\ref{fig:3dvar}.
|
\ref{fig:3dvar}.
|
||||||
|
|
||||||
As expected the \(\mathrm{X} \times 4 \times 4\) grids performed
|
As expected the \(\mathrm{X} \times 4 \times 4\) grids performed
|
||||||
@ -1382,7 +1406,8 @@ the variability via the rank of the deformation--matrix.
|
|||||||
\includegraphics[width=0.8\textwidth]{img/evolution3d/variability2_boxplot.png}
|
\includegraphics[width=0.8\textwidth]{img/evolution3d/variability2_boxplot.png}
|
||||||
\caption[Histogram of ranks of high--resolution deformation--matrices]{
|
\caption[Histogram of ranks of high--resolution deformation--matrices]{
|
||||||
Histogram of ranks of various $10 \times 10 \times 10$ grids with $1000$
|
Histogram of ranks of various $10 \times 10 \times 10$ grids with $1000$
|
||||||
control--points each.
|
control--points each showing in this case how many control points are actually
|
||||||
|
used in the calculations.
|
||||||
}
|
}
|
||||||
\label{fig:histrank3d}
|
\label{fig:histrank3d}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
@ -1562,7 +1587,7 @@ we did before with the regularity. In figure \ref{fig:resimp3d} one can
|
|||||||
clearly see the correlation and the spread within each setup and the
|
clearly see the correlation and the spread within each setup and the
|
||||||
behaviour when we increase the number of control--points.
|
behaviour when we increase the number of control--points.
|
||||||
|
|
||||||
Along with this we also give the spearman--coefficients along with their
|
Along with this we also give the Spearman--coefficients along with their
|
||||||
p--values in table \ref{tab:3dimp}. Within one scenario we only find a
|
p--values in table \ref{tab:3dimp}. Within one scenario we only find a
|
||||||
\emph{weak} to \emph{moderate} correlation between the improvement
|
\emph{weak} to \emph{moderate} correlation between the improvement
|
||||||
potential and the fitting error, but all findings (except for
|
potential and the fitting error, but all findings (except for
|
||||||
@ -1576,8 +1601,30 @@ control--points.
|
|||||||
All in all the improvement potential seems to be a good and sensible
|
All in all the improvement potential seems to be a good and sensible
|
||||||
measure of quality, even given gradients of varying quality.
|
measure of quality, even given gradients of varying quality.
|
||||||
|
|
||||||
\improvement[inline]{improvement--potential vs. steps ist anders als in 1d! Plot
|
Lastly, a small note on the behaviour of improvement potential and
|
||||||
und zeigen!}
|
convergence speed, as we used this in the 1D case to argue, why the
|
||||||
|
\emph{regularity} defied our expectations. As a contrast we wanted to
|
||||||
|
show, that improvement potential cannot serve for good predictions of
|
||||||
|
the convergence speed. In figure \ref{fig:imp1d3d} we show improvement
|
||||||
|
potential against number of iterations for both scenarios. As one can
|
||||||
|
see, in the 1D scenario we have a \emph{strong} and \emph{significant}
|
||||||
|
correlation (with \(-r_S = -0.72\), \(p = 0\)), whereas in the 3D
|
||||||
|
scenario we have the opposite \emph{significant} and \emph{strong}
|
||||||
|
effect (with \(-r_S = 0.69\), \(p=0\)), so these correlations clearly
|
||||||
|
seem to be dependent on the scenario and are not suited for
|
||||||
|
generalization.
|
||||||
|
|
||||||
|
\begin{figure}[hbt]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{img/imp1d3d.png}
|
||||||
|
\caption[Improvement potential and convergence speed for 1D and 3D--scenarios]{
|
||||||
|
\newline
|
||||||
|
Left: Improvement potential against convergence speed for the
|
||||||
|
1D--scenario\newline
|
||||||
|
Right: Improvement potential against convergence speed for the 3D--scnario
|
||||||
|
}
|
||||||
|
\label{fig:imp1d3d}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
\chapter{Discussion and outlook}\label{discussion-and-outlook}
|
\chapter{Discussion and outlook}\label{discussion-and-outlook}
|
||||||
|
|
||||||
@ -1617,28 +1664,32 @@ Richter et al. reported correlations between \(0.34\) to \(0.87\).
|
|||||||
Taking these results into consideration, one can say, that
|
Taking these results into consideration, one can say, that
|
||||||
\emph{variability} and \emph{improvement potential} are very good
|
\emph{variability} and \emph{improvement potential} are very good
|
||||||
estimates for the quality of a fit using \acf{FFD} as a deformation
|
estimates for the quality of a fit using \acf{FFD} as a deformation
|
||||||
function.
|
function, while we could not reproduce similar compelling results as
|
||||||
|
Richter et al. for \emph{regularity and convergence speed}.
|
||||||
|
|
||||||
One reason for the bad or erratic behaviour of the
|
One reason for the bad or erratic behaviour of the
|
||||||
\emph{regularity}--criterion could be that in an \ac{FFD}--setting we
|
\emph{regularity}--criterion could be that in an \ac{FFD}--setting we
|
||||||
have a likelihood of having control--points that are only contributing
|
have a likelihood of having control--points that are only contributing
|
||||||
to the whole parametrization in negligible amounts. This results in very
|
to the whole parametrization in negligible amounts, resulting in very
|
||||||
small right singular values of the deformation--matrix \(\vec{U}\) that
|
small right singular values of the deformation--matrix \(\vec{U}\) that
|
||||||
influence the condition--number and thus the \emph{regularity} in a
|
influence the condition--number and thus the \emph{regularity} in a
|
||||||
significant way. Further research is needed to refine \emph{regularity}
|
significant way. Further research is needed to refine \emph{regularity}
|
||||||
so that these problems get addressed.
|
so that these problems get addressed, like taking all singular values
|
||||||
|
into account when capturing the notion of \emph{regularity}.
|
||||||
|
|
||||||
Richter et al. also compared the behaviour of direct and indirect
|
Richter et al. also compared the behaviour of direct and indirect
|
||||||
manipulation in \cite{anrichterEvol}, whereas we merely used an indirect
|
manipulation in \cite{anrichterEvol}, whereas we merely used an indirect
|
||||||
\ac{FFD}--approach. As direct manipulations tend to perform better than
|
\ac{FFD}--approach. As direct manipulations tend to perform better than
|
||||||
indirect manipulations, the usage of \acf{DM--FFD} could also work
|
indirect manipulations, the usage of \acf{DM--FFD} could also work
|
||||||
better with the criteria we examined.
|
better with the criteria we examined. This can also solve the problem of
|
||||||
|
bad singular values for the \emph{regularity} as the incorporation of
|
||||||
\improvement[inline]{write more outlook/further research}
|
the parametrization of the points on the surface, which are the
|
||||||
|
essential part of a direct--manipulation, could cancel out a bad
|
||||||
|
control--grid as the bad control--points are never or negligibly used to
|
||||||
|
parametrize those surface--points.
|
||||||
|
|
||||||
\improvement[inline]{Bibliotheksverzeichnis links anpassen. DOI überschreibt
|
\improvement[inline]{Bibliotheksverzeichnis links anpassen. DOI überschreibt
|
||||||
Direktlinks des Autors.\newline
|
Direktlinks des Autors.}
|
||||||
Außerdem bricht url über Seitengrenzen den Seitenspiegel.}
|
|
||||||
|
|
||||||
% \backmatter
|
% \backmatter
|
||||||
\cleardoublepage
|
\cleardoublepage
|
||||||
|
@ -10,8 +10,9 @@
|
|||||||
%
|
%
|
||||||
%\acro{GPL}{GNU General Public License} --
|
%\acro{GPL}{GNU General Public License} --
|
||||||
% License for free software, see \url{http://www.gnu.org/copyleft/gpl.html}.
|
% License for free software, see \url{http://www.gnu.org/copyleft/gpl.html}.
|
||||||
\acro{FFD}{Freeform--Deformation}
|
\acro{CMA--ES}{Covariance Matrix Adaption Evolution Strategy}
|
||||||
\acro{DM--FFD}{Direct Manipulation Freeform--Deformation}
|
\acro{DM--FFD}{Direct Manipulation Freeform--Deformation}
|
||||||
|
\acro{FFD}{Freeform--Deformation}
|
||||||
\acro{RBF}{Radial Basis Function}
|
\acro{RBF}{Radial Basis Function}
|
||||||
|
|
||||||
%
|
%
|
||||||
|
Loading…
Reference in New Issue
Block a user