This repository has been archived on 2020-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
Files
Fusion2018/presentation43/chapters/system.tex
2019-05-01 10:46:15 +02:00

449 lines
16 KiB
TeX

\newcommand{\state}{\vec{q}}
\newcommand{\statei}{\vec{q}_i}
\newcommand{\statemax}{\vec{\hat{q}}}
\newcommand{\particle}{\vec{p}}
\newcommand{\particlei}{\vec{p_i}}
\newcommand{\emp}[1]{\textcolor{red}{#1}}
\newcommand{\MISE}{\operatorname{MISE}}
\setlength{\TPHorizModule}{\paperwidth}
% \setlength{\TPVertModule}{\textwidth}
\section{Background}
\begin{frame}[fragile]
\frametitle{Indoor Localisation}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] at (0,0) {\includegraphics[width=\linewidth]{gfx/info_graphic}};
\end{tikzpicture}
\pause
\begin{tikzpicture}[overlay]
\node [draw, red, ultra thick, rounded corners, minimum height=0.75cm, minimum width=3.5cm, shift={(7cm,0.75cm)}] at (current page.south west) { };
\end{tikzpicture}
\end{frame}
% \begin{frame}
% \frametitle{Our problem}
% Multi modalities increase the error due to weighted average \\
% Density estimate could solve this, but to expensive to fit in 500ms window \\
% Key was to recognise that KDE can be approximated with a Gaussian filter \\
%
% KDE $\approx$ binned KDE \\
% BKDE $\approx$ Gaussian filter \\
% Gaussian filter $\approx$ box filter \\
% $\rightarrow$ KDE $\sim$ box filter
% \end{frame}
\begin{frame}[fragile]
\frametitle{System Properties}
\begin{itemize}[label=\textbullet]
\item Particle filter with importance sampling describes posterior as a set of samples
\item One particle: $\particlei = \langle \statei, w_i \rangle$
\item Possible state: $\statei=(x,y,z,\theta,\hat{\rho}_{\text{rel}})^T$
\begin{itemize}
\item $\overbrace{x,y,z\in\R}^{\text{position}}, \quad \overbrace{\theta\in\R}^{\text{heading}}, \quad \overbrace{\hat{\rho}_{\text{rel}}}^{\text{rel. pressure}}$
%\setlength{\mathindent}{1pt}
%\item $\statei=(x,y,z,\theta,\hat{\rho}_{\text{rel}})^T, \quad \overbrace{x,y,z\in\R}^{\text{position}}, \quad \overbrace{\theta\in\R}^{\text{heading}}, \quad \overbrace{\hat{\rho}_{\text{rel}}}^{\text{rel. pressure}}$
\end{itemize}
\item Constrained computational environment (Smartphone + 500ms time frames)
\pause
\end{itemize}
\begin{tikzpicture}[overlay]
\node [draw, red, ultra thick, rounded corners, minimum height=1.1cm, minimum width=2.3cm, shift={(-10.4cm,-7.3cm)}] at (current page.north east) { };
\end{tikzpicture}
\end{frame}
\begin{frame}
\frametitle{Our problem}
Increased error due to multi modalities
\resizebox{\textwidth}{!}{\input{gfx/multimodalpath.eps_tex}}
\end{frame}
\begin{frame}[fragile,t]
\frametitle{State Estimation}
\begin{textblock*}{0.95\paperwidth}(2mm,1cm)
\resizebox{1\textwidth}{!}{\input{gfx/max_particle.tex}}
\end{textblock*}
\begin{textblock*}{1.0\textwidth}(0.4\textwidth,7.3cm)
Max particle: \par $\displaystyle \statemax := \max_{\statei} \{ w_i \} \vphantom{\sum_i^N}$
\end{textblock*}
\end{frame}
\begin{frame}[fragile,t]
\frametitle{State Estimation}
\begin{textblock*}{0.95\paperwidth}(2mm,1cm)
\resizebox{1\textwidth}{!}{\input{gfx/weighted_avg.tex}}
\end{textblock*}
\begin{textblock*}{1.0\textwidth}(0.4\textwidth,7.3cm)
Weighted average: \par $\displaystyle \statemax := \frac{1}{W} \sum_{i=1}^{N} w_i \statei \, \text{ with } W=\sum_{i=1}^{N}w_i$
\end{textblock*}
\end{frame}
\begin{frame}[fragile,t]
\frametitle{State Estimation}
\begin{textblock*}{0.95\paperwidth}(2mm,1cm)
\resizebox{1\textwidth}{!}{\input{gfx/boxkde.tex}}
\end{textblock*}
\begin{textblock*}{1.0\textwidth}(0.4\textwidth,7.3cm)
Kernel density estimation: \par $\displaystyle \statemax := \arg\max_{\statei} \hat{f}(\statei) \vphantom{\sum_i^N}$
\end{textblock*}
\end{frame}
% \begin{frame}[fragile,t]
% \frametitle{State Estimation}
% \textbf{Max particle}
% \begin{equation*}
% \statemax := \max_{\statei} \{ w_i \}
% \end{equation*}
% %Select $\statemax$ with largest corresponding $w_i$
%
% \begin{tikzpicture}[remember picture,overlay]
% \node[xshift=4.5cm,yshift=2.6cm] at (current page.south west) (a) {%
% \input{gfx/max_particle.tex}};
% \end{tikzpicture}
%
% \begin{columns}[t]
% \column{0.58\linewidth}
% %\input{gfx/max_particle.tex}
%
% \column{0.38\linewidth}
% \begin{proconlist}
% \itempro Fast
% \itemcon Not smooth
% \end{proconlist}
% \end{columns}
% \end{frame}
%
% \begin{frame}[fragile,t]
% \frametitle{State Estimation}
% \textbf{Weighted average}
% \begin{equation*}
% \statemax := \frac{1}{W} \sum_{i=1}^{N} w_i \statei \text{, with } W=\sum_{i=1}^{N}w_i
% \end{equation*}
% \begin{tikzpicture}[remember picture,overlay]
% \node[xshift=4.5cm,yshift=2.6cm] at (current page.south west) (a) {%
% \input{gfx/weighted_avg.tex}};
% \end{tikzpicture}
% \begin{columns}[t]
% \column{0.58\linewidth}
%
% \column{0.38\linewidth}
% \begin{proconlist}
% \itempro Fast and smooth
% \itemcon Vulnerable to multi modalities
% \end{proconlist}
% \end{columns}
% \end{frame}
%
% \begin{frame}[fragile,t]
% \frametitle{State Estimation}
% \textbf{Kernel density estimation}
% \begin{equation*}
% \statemax := \arg\max_{\statei} \hat{f}(\statei)
% \end{equation*}
% \begin{tikzpicture}[remember picture,overlay]
% \node[xshift=4.5cm,yshift=2.6cm] at (current page.south west) (a) {%
% \input{gfx/boxkde.tex}};
% \end{tikzpicture}
% \begin{columns}[t]
% \column{0.58\linewidth}
%
% \column{0.38\linewidth}
% \begin{proconlist}
% \itempro Complete density
% \itemcon Additional max search
% \itemcon Expensive
% \end{proconlist}
% \end{columns}
% \end{frame}
% 1D: \tilde{f}(x) = \frac{1}{W} \sum_{i=1}^{N} \frac{w_i}{h} K \left(\frac{x-X_i}{h}\right) \text{, with } h\in\R^+ \text{ and } K(u)=\frac{1}{\sqrt{2\pi}} \expp{- \frac{u^2}{2} } \\
% 1D
\begin{frame}[t]
\frametitle{Kernel density estimation}
\begin{flalign*}
\hat{f}(x) &= \frac{1}{W} \sum_{i=1}^{N} \frac{w_i}{h} K \left(\frac{x-q_i}{h}\right)
\intertext{with Gaussian kernel}
K(u) &=\frac{1}{\sqrt{2\pi}} \expp{- \frac{u^2}{2} }
\intertext{and kernel bandwidth}
h \in \R^+
\end{flalign*}
$\Rightarrow$ Complexity: $\landau{MN}$
% \begin{textblock*}{0.6\textwidth}(0.5\textwidth,3.7cm)
% \resizebox{1.0\textwidth}{!}{\includegraphics{KdeConstruction.pdf}}
% \end{textblock*}
\end{frame}
% nD
% \begin{frame}[t]
% \frametitle{Kernel density estimation}
% \begin{flalign*}
% \hat{f}(\vec{u}) &= \frac{1}{W} \sum_{i=1}^{n} \frac{w_i}{h_1 \dots h_d} \left[ \prod_{j=1}^{d} K\left( \frac{u_j-q_{i,j}}{h_j} \right) \right]
% \intertext{with Gaussian kernel}
% K(u) &=\frac{1}{\sqrt{2\pi}} \expp{- \frac{u^2}{2} }
% \intertext{and kernel bandwidth}
% \vec{h} &= (h_1, \dots, h_d)
% \end{flalign*}
%
% $\Rightarrow$ Complexity: $\landau{N^2}$
%
%% \begin{textblock*}{0.6\textwidth}(0.5\textwidth,3.7cm)
%% \resizebox{1.0\textwidth}{!}{\includegraphics{KdeConstruction.pdf}}
%% \end{textblock*}
% \end{frame}
\section{Approximation method}
\begin{frame}
\frametitle{Binned Kernel Density Estimation}
Approximation of KDE assuming an equidistant grid with $G$ grid points \\
\begin{equation*}
\tilde{f}(g_x) = \frac{1}{W} \sum_{j=1}^{G} \frac{C_j}{h} K \left(\frac{g_x-g_j}{h}\right)
\end{equation*}
where the count at $g_j$ is given with
\begin{equation*}
\label{eq:gridCnts}
C_j=\sum_{i=1}^{N} r_j(x_i,\delta)
\end{equation*}
and $r_j$ is a binning rule (simple or linear)
$\Rightarrow$ Complexity: $\landau{G^2}$
\end{frame}
\begin{frame}
\frametitle{Binned Kernel Density Estimation}
Binned KDE has a discrete convolution structure \\
\begin{equation*}
\tilde{f}(g_x) = \frac{1}{W} \emp{\sum_{j=1}^{G}} \frac{\emp{C_j}}{h} \emp{K} \left( \frac{\emp{g_x-g_j}}{h} \right)
\end{equation*}
\begin{textblock*}{5cm}(0.7\textwidth,3.1cm)
\footnotesize $\displaystyle (f*g)[n] = \sum_{m=-\infty}^{\infty} f[m]\cdot g[n-m] $\normalsize
\end{textblock*}
Using a Gaussian kernel: BKDE $\approx$ Gaussian filter \\
\begin{equation*}
\tilde{f}(g_x)=\frac{1}{W\sqrt{2\pi}} \sum_{j=1}^{G} \frac{C_j}{h} \expp{-\frac{(g_x-g_j)^2}{2h^2}}
\end{equation*}
$\Rightarrow$ fast approximation using recursive box filter
\end{frame}
\begin{frame}[fragile,t]
\frametitle{Box Filter Approximation}
Given by central limit theorem, iterated box filters converge to Gaussian filter
\centering
\begin{minipage}[b]{0.5\linewidth}
\centering
\include{gfx/BoxConverge1}
\vspace{-2ex}
\end{minipage}%%
\begin{minipage}[b]{0.5\linewidth}
\centering
\include{gfx/BoxConverge2}
\vspace{-2ex}
\end{minipage}
\begin{minipage}[b]{0.5\linewidth}
\centering
\include{gfx/BoxConverge3}
% \vspace{4ex}
\end{minipage}%%
\begin{minipage}[b]{0.5\linewidth}
\centering
\include{gfx/BoxConverge4}
% \vspace{4ex}
\end{minipage}
\end{frame}
\begin{frame}[t]
\frametitle{Box Filter Approximation}
Naive calculation $\landau{NL}$:
\begin{equation*}
y[i]=\frac{1}{2l+1} \sum_{j=-l}^{l}x[i+j]
\end{equation*}
Recursive calculation $\landau{N}$:
\begin{equation*}
y[i] = y[i-1] + x[i+l] - x[i-l-1]
\end{equation*}
Mapping bandwidth to box filter radius:
\begin{equation*}
\Lideal = \sqrt{\frac{12\sigma^2}{n}+1}
\end{equation*}
% \begin{textblock*}{0.1}[1,0](0.6,5)
\begin{textblock*}{0.25\textwidth}(0.7\textwidth,2.5cm)
\small Radius: $\displaystyle l=\frac{L-1}{2} $\normalsize
\end{textblock*}
\end{frame}
\section{Experiments}
% \begin{frame}
% \frametitle{Approximation error - Ground Truth}
%
% \begin{columns}
% \begin{column}{0.75\textwidth}
% \includegraphics[width=1\textwidth]{gfx/Eval1GroundTruth.png}
% \end{column}
% \begin{column}{0.25\textwidth}
% \setlength{\mathindent}{1pt}
% \begin{align*}
% \bm{X} \sim ~ & \G{\VecTwo{0}{0}}{0.5\bm{I}} + \\
% & \G{\VecTwo{3}{0}}{\bm{I}} + \\
% & \G{\VecTwo{0}{3}}{\bm{I}} + \\
% & \G{\VecTwo{-3}{0} }{\bm{I}} + \\
% & \G{\VecTwo{0}{-3}}{\bm{I}}
% \end{align*}
%
% Grid: $30\times 30$
% \end{column}
% \end{columns}
%
% \end{frame}
% \begin{frame}[t]
% \frametitle{Approximation error}
%
% \begin{columns}
% \begin{column}{0.60\textwidth}
% \renewcommand{\footnotesize}{\fontsize{7pt}{11pt}\selectfont}
% \resizebox{1.0\textwidth}{!}{\input{gfx/error.tex}}
% \end{column}
% \begin{column}{0.40\textwidth}
% $\displaystyle \operatorname{MISE} =~\E{\int \left( \hat{f}(x)-f(x) \right)^2 \dop{x}}$
%
% Average error:
% \setlength{\mathindent}{1pt}
% \begin{align*}
% ~&\overline{t}_{\text{BKDE}} &= \SI{10.10}{\second} \phantom{0} \\
% ~&\overline{t}_{\text{BoxKDE}} &= \SI{0.4092}{\second} \\
% ~&\overline{t}_{\text{WA}} &= \SI{0.0043}{\second}
% \end{align*}
% \end{column}
% \end{columns}
%
% \end{frame}
\begin{frame}
\frametitle{Approximation error}
\begin{textblock*}{0.8\textwidth}(0mm,1.5cm)
\renewcommand{\footnotesize}{\fontsize{7pt}{11pt}\selectfont}
\resizebox{1.0\textwidth}{!}{\input{gfx/error.tex}}
\end{textblock*}
%\begin{textblock*}{0.4\textwidth}(0.78\textwidth,1.5cm)
% \footnotesize$\displaystyle \MISE =~\E{\int \left( \hat{f}(x)-f(x) \right)^2 \dop{x}}$ \normalsize
%\end{textblock*}
\begin{textblock*}{0.3\textwidth}(0.85\textwidth,1.8cm)
Average error {\small $(\times 10^{-3})$}:
\setlength{\mathindent}{1pt}
\begin{align*}
~&\overline{\text{BoxKDE}} &= 5.14 \\
~&\overline{\text{BKDE}} &= 4.73 \\
~&\overline{\text{KDE}} &= 4.40
\end{align*}
\end{textblock*}
\end{frame}
\begin{frame}
\frametitle{Performance}
\begin{itemize}[label=\textbullet]
\item Hardware
\begin{itemize}[label=-]
\item Intel Core \mbox{i5-7600K} CPU with \SI{4.2}{\giga\hertz}
\item \SI{16}{\giga\byte} main memory
\end{itemize}
\item Algorithms
\begin{itemize}[label=-]
\item C++ implementation of our BoxKDE approximation
\item R language package \texttt{ks} \\ \hspace{1pt} (FFT-based BKDE; optimized in C)
\item C++ implementation of weighted average
\end{itemize}
\item Input
\begin{itemize}[label=-]
\item Number of grid points $G \in [10^2, 10^8]$
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Performance}
\begin{textblock*}{0.8\textwidth}(0mm,1.5cm)
\renewcommand{\footnotesize}{\fontsize{7pt}{11pt}\selectfont}
\resizebox{1.0\textwidth}{!}{\input{gfx/perf2.tex}}
\end{textblock*}
\begin{textblock*}{0.3\textwidth}(0.85\textwidth,1.8cm)
Average time:
\setlength{\mathindent}{1pt}
\begin{align*}
~&\overline{t}_{\text{BKDE}} &= \SI{10.10}{\second} \phantom{0} \\
~&\overline{t}_{\text{BoxKDE}} &= \SI{0.4092}{\second} \\
~&\overline{t}_{\text{WA}} &= \SI{0.0043}{\second}
\end{align*}
\end{textblock*}
\end{frame}
\section{Summary}
\begin{frame}[t]
\frametitle{Summary}
\begin{itemize}[label=\textbullet]
\item Novel rapid approximation scheme for KDE
\item Key idea is to interpret KDE as filter problem
\item Assuming a Gaussian kernel, box filter approximation can be used
\item Sufficiently fast for our real time application
\item Acceptable small error
\end{itemize}
\end{frame}
\section{Thank you}
\begin{frame}
\frametitle{Approximation error - Ground Truth}
\begin{columns}
\begin{column}{0.75\textwidth}
\includegraphics[width=1\textwidth]{gfx/Eval1GroundTruth.png}
\end{column}
\begin{column}{0.25\textwidth}
\setlength{\mathindent}{1pt}
\begin{align*}
\bm{X} \sim ~ & \G{\VecTwo{0}{0}}{0.5\bm{I}} + \\
& \G{\VecTwo{3}{0}}{\bm{I}} + \\
& \G{\VecTwo{0}{3}}{\bm{I}} + \\
& \G{\VecTwo{-3}{0} }{\bm{I}} + \\
& \G{\VecTwo{0}{-3}}{\bm{I}}
\end{align*}
$N = 5000$
Grid: $30\times 30$
\end{column}
%\begin{textblock*}{0.4\textwidth}(0.78\textwidth,1.5cm)
% \footnotesize$\displaystyle \MISE =~\E{\int \left( \hat{f}(x)-f(x) \right)^2 \dop{x}}$ \normalsize
%\end{textblock*}
\end{columns}
\end{frame}