123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- \documentclass[a4paper]{scrreprt}
- \usepackage[utf8x]{inputenc}
- \usepackage[OT1]{fontenc}
- \usepackage[ngerman]{babel}
- \selectlanguage{ngerman}
- \usepackage{graphicx}
- \usepackage{geometry}
- \geometry{top=25mm,bottom=25mm,left=30mm,right=25mm}
- \usepackage{setspace}
- \onehalfspacing
- \usepackage{color}
- \usepackage{amsmath}
- \usepackage{amssymb}
- \usepackage[pdfpagelabels]{hyperref}
- \hypersetup{colorlinks=false,pdfborder= 0 0 0}
- \usepackage{booktabs}
- \include{notations}
- % define everything for a nice header
- \usepackage{scrpage2}
- \pagestyle{scrheadings}
- % header also on first page of new chapter
- \renewcommand*{\chapterpagestyle}{scrheadings}
- % font of header
- \renewcommand{\headfont}{\normalfont}
- % header
- \ihead{\includegraphics[width=0.1\linewidth]{img/hanfried-en-blue}}
- \chead{}
- \ohead{\includegraphics[width=0.3\linewidth]{img/fsuText-en}}
- \setlength{\headheight}{21mm} % height of header
- \title{Tutorial for GP-HIK-CORE}
- \author{Alexander Freytag, Erik Rodner \\ \url{firstname.lastname@uni-jena.de}}
- \setlength{\itemsep}{-0.5em}
- \newcommand{\confSection}[1]{\textit{Section: } #1}
- \newcommand{\variable}[1]{\textit{Variable: } #1}
- \newcommand{\variableType}[1]{\textit{Type: } #1}
- \newcommand{\default}[1]{\textit{Default: } #1}
- \newcommand{\infos}[4]{
- \begin{itemize}
- \setlength{\itemsep}{-0.5em}
- \item \confSection{#1}
- \item \variable{#2}
- \item \variableType{#3}
- \item \default{#4}
- \end{itemize}
- }
- \definecolor{darkred}{rgb}{0.5,0,0}
- \begin{document}
- \maketitle
- \setlength{\parindent}{0pt}
- \renewcommand{\chaptername}{chapter}
- \chapter{Preface}
- \label{chap:Preface}
- This document shall help to quickly use the modul gp-hik-core\footnote{\url{https://github.com/cvjena/gp-hik-core}} of our library NICE\footnote{\url{https://github.com/cvjena/nice-core}}.
- It is structured as follows:
- \paragraph{Chapter~\ref{chap:SetUp}: How to set-up the library} We briefly explain things to be regarded while setting up our library.
- \paragraph{Chapter~\ref{chap:ParamConfig}: Parameters and Configurations}
- In \chaptername~\ref{chap:ParamConfig} we give an overview of the majority of built-in parameters, explain their influence briefly and present default settings.
- \paragraph{Chapter~\ref{chap:DemoProgs}: Demo-Programs and how to use them}
- In \chaptername~\ref{chap:DemoProgs} we introduce some demo programs we created to show how to switch between some parameter settings.
- %--------------- setup --------------------
- \chapter{Setting up the library}
- \label{chap:SetUp}
- \textbf{Step 1: Obtain our main library}\newline
- \texttt{git clone https://github.com/cvjena/nice-core.git}
- \vspace{2em}
- \textbf{Step 2: configure everything}\newline
- \texttt{cd nice-core/} \newline
- \texttt{source setenv.sh}
- \vspace{2em}
- \textbf{Step 3: Obtain the gp-hik-core module}\newline
- \texttt{git clone https://github.com/cvjena/gp-hik-core.git}
- \vspace{2em}
- \textbf{Step 4: Build everything}\newline
- \texttt{cd cd gp-hik-core/} \newline
- \texttt{make}
- \vspace{2em}
- \textbf{Step 5: Verify that everything works properly}\newline
- \texttt{make check}
- %--------------- parameter configs --------------------
- \chapter{Parameter Configurations}
- \label{chap:ParamConfig}
- \section{Classification in general}
- \paragraph{Specify the interative linear solver}
- \infos{GPHIKClassifier}{ils\_method}{string}{CG}
- \begin{tabular}{ll}
- \textbf{Setting} & \textbf{Explanation} \\
- CG & the conjugate gradients method\\
- CGL & the conjugate gradients method using Lanczos process \\
- SYMMLQ & the symmetric LQ (SYMMLQ) method using Lanczos process\\
- MINRES & the minimum residual method using Lanczos process \\
- \end{tabular}
- \paragraph{Specify the optimization method}
- \infos{GPHIKClassifier}{optimization\_method}{string}{greedy}
- \begin{tabular}{ll}
- \textbf{Setting} & \textbf{Explanation} \\
- greedy & greedy 1D search in a pre-defined range\\
- downhillsimplex & DHS in multiple dimensions \\
- none & no optimization at all\\
- \end{tabular}
- \section{Classification with Quantization}
- \paragraph{(De-)Activate the Quantization}
- \infos{GPHIKClassifier}{use\_quantization}{bool}{false}
- \paragraph{Specify precision of quantization}
- \infos{GPHIKClassifier}{num\_bins}{integer}{$100$}
- \section{Uncertainty Prediction}
- \paragraph{Activate or de-active the computation of predictive uncertainties}
- \infos{GPHIKClassifier}{uncertaintyPredictionForClassification}{bool}{false}
- \paragraph{Specify how to compute predictive uncertainties}
- \infos{GPHIKClassifier}{varianceApproximation}{string}{approximate\_fine}
- \begin{tabular}{ll}
- \textbf{Setting} & \textbf{Explanation} \\
- approximate\_rough & use the RAPU method (perhaps with quantization, see our ACCV'12 paper)\\
- approximate\_fine & use the FAPU method \\
- exact & use the PUP method\\
- none & deactivate the computation \\
- \end{tabular}
- \section{Various}
- %
- \paragraph{Generalizations of HIK}
- \infos{GPHIKClassifier}{transform}{string}{absexp}
- \begin{tabular}{ll}
- \textbf{Setting} & \textbf{Explanation} \\
- absexp & absolute value and exponential operation -- pow(fabs(x), exponent)\\
- exp & exponential operation -- exp(fabs(x), exponent)\\
- MKL & weights for Multiple Kernel Learning approach\\
- WeightedDim & weights for each dimension\\
- \end{tabular}
- \paragraph{Useful Output}
- \infos{GPHIKClassifier}{verbose}{bool}{false}
- \paragraph{Computation Time Output}
- \infos{GPHIKClassifier}{verboseTime}{bool}{false}
- \paragraph{Useful Debug Output}
- \infos{GPHIKClassifier}{debug}{bool}{false}
- \section{GP related settings}
- \paragraph{Set the GP noise for model regularization}
- \infos{GPHIKClassifier}{noise}{double}{$0.01$}
- \paragraph{(De-)Activate balanced learning}
- \infos{GPHIKClassifier}{learn\_balanced}{bool}{false}
- \paragraph{(De-)Activate aumatic determination of noise}
- \infos{GPHIKClassifier}{optimize\_noise}{bool}{false}
- % \chapter{Class Structure}
- \chapter{Demo Programs}
- \label{chap:DemoProgs}
- \section{Toy Example for Classification}
- A simple toy example with synthetic data can be run with the program \texttt{toyExample}. You may call the program with a default configuration via
- \texttt{../BUILD\_x86\_64/gp-hik-core/progs/toyExample -config ./configs/toyExample.conf}.
- \paragraph{Usage and Accuracies}
- This program uses synthetic data of $3$ classes with $49$ dimensions. For training, $20$ examples per class are used, whereas we provide $50$ examples per class for testing.
- Without any changes, you should obtain an accuracy of $99.33\%$. If you activate the quantization approach (either in the config file or via
- \texttt{-GPHIKClassifier:use\_quantization true}) the accuracy drops to $89.33\%$ since the sampled features cover small ranges in the input space. However,
- when increasing the number of quantization steps to $1,000$, the resulting accuracy is again $99.33\%$.
- \paragraph{Quantization: Runtimes and Memory}
- When switching between with and without quantization, you should notice the differences in resulting runtimes. On our computer (single core, $3.4$GHz),
- we obtain the following results:
- \begin{center}
- \begin{tabular}{ccccc}
- \textbf{Quantization} & \textbf{Training [s]} & \textbf{Testing [s]} & \textbf{Memory [kB]} & \textbf{Accuracy [\%]}\\
- \hline
- no & $5.06$ & $0.19$ & $26,228$ & $99.33$\\
- yes, $100$ & $5.09$ & $0.01$ & $26,488$ & $89.33$ \\
- yes, $1,000$ & $5.13$ & $0.01$ & $27,540$ & $99.33$ \\
- \end{tabular}
- \end{center}
- \section{Evaluation of Fast Min Kernel}
- \begin{itemize}
- \item Name of Program
- \begin{itemize}
- \item[ ] \texttt{completeEvaluationFastMinkernel}
- \end{itemize}
- \item Input:
- \begin{itemize}
- \item[\texttt{-n}] number of examples
- \item[\texttt{-d}] number of dimensions
- \item[\texttt{-v}] additional output
- \end{itemize}
- \item Usage: three main parts
- \begin{enumerate}
- \item initialization (FMK vs. computation of $\kernelMatrix$)
- \item kernel multiplication $\kernelMatrix \cdot \alpha $
- \item kernel sum $\kernelVector^T \cdot \alpha $
- \end{enumerate}
- \end{itemize}
- \chapter{Closing words}
- This library was built to provide a fast and memory efficient possibility for bayesian inference in large-scale scenarios.
- The algorithms are published in the following papers.
- \vspace{1em}
- Large-scale classification (training, optimization, testing):
- \begin{itemize}
- \item \textbf{Large-Scale Gaussian Process Classification with Flexible Adaptive Histogram Kernels} by \textit{Erik Rodner and Alexander Freytag and Paul Bodesheim and Joachim Denzler} (ECCV 2012. 85--98) and
- \end{itemize}
- Rapid uncertainty computation, incremental and active learning:
- \begin{itemize}
- \item \textbf{Rapid Uncertainty Computation with Gaussian Processes and Histogram Intersection Kernels} by \textit{Alexander Freytag and Erik Rodner and Paul Bodesheim and Joachim Denzler} (ACCV 2012. ), which was awarded with the \textcolor{darkred}{\bf ``Best paper honorable mention''}.
- \end{itemize}
- In case of any problems or suggestions for improvement, don't hesitate to contact us.
- \vspace{10em}
- \begin{center}
- \includegraphics[width=0.5\linewidth]{img/logoV2blue}
- \end{center}
- \end{document}
|