% !TEX root = ../../../thesis.tex
\chapter{Experiments}\label{sec:struck_experiments}

\section{Tracking-by-detection benchmarks}\label{sec:struck_exp_benchmarks}

Our first set of experiments aims to compare the results of the proposed approach with existing tracking-by-detection approaches. The majority of these are based around boosting or random forests and use simple Haar-like features as their image representation. We use similar features for our evaluation in order to provide a fair comparison and isolate the effect of the learning framework, but note that these features were specifically designed to work with the feature-selection capability of boosting, having been originally introduced by Viola and Jones \cite{Viola2004}. Even so, we find that with our framework we are able to significantly outperform the existing state-of-the-art results.

We use 6 different types of Haar-like feature arranged on a grid at 2 scales on a $4\times4$ grid, resulting in 192 features, with each feature normalised to give a value in the range $[-1,1]$. The reason for using a grid, as opposed to random locations, is partly to limit the number of random factors in the tracking algorithm, since the learner itself has a random element, and partly to compensate for the fact that we do not perform feature selection. Note, however, that the number of features we use is lower than systems against which we compare, which use at least 250. We concatenate the feature responses into a feature vector $\vt{x}$ and apply a Gaussian kernel $k(\vt{x}, \bar{\vt{x}}) = \exp(-\sigma\|\vt{x}-\bar{\vt{x}}\|^2)$, with $\sigma=0.2$ and $C=100$ which is fixed for all sequences. Like the systems against which we compare, we track 2D translation ${\cal Y} = \{(\Delta u,\Delta v) \; | \: \Delta u^2+\Delta v^2<r^2\}$. During tracking we use a search radius $r = 30$ pixels, though when updating the classifier we take a larger radius $r=60$ to ensure stability. As mentioned in Section \ref{sec:struck_structured_online}, we found empirically that searching ${\cal Y}$ exhaustively when performing online learning was unnecessary, and it is sufficient to sample from ${\cal Y}$ on a polar grid (we use 5 radial and 16 angular divisions, giving 81 locations).

To assess tracking performance, we use the Pascal VOC overlap criterion as suggested by Saffari \etal \cite{Saffari2010a} and report the average overlap between estimated and ground truth throughout each sequence. Because of the randomness involved in our learning algorithm, we repeat each sequence 5 times with different random seeds and report the median result.

% TODO: add final number of SVs for b=\inf case
% note FragTrack is not tracking by detection
\begin{sidewaystable}[p]%dp
\begin{center}
\begin{tabular}{|l|c|c|c|c||c|c|c|c|c|}
\hline
Sequence   & $\mbox{Struck}_{\infty}$  & $\mbox{Struck}_{100}$ & $\mbox{Struck}_{50}$ & $\mbox{Struck}_{20}$ & MIForest & OMCLP & MIL & Frag & OAB\\
\hline
\emph{coke}       & $\vt{0.57}$ & $\vt{0.57}$ &      $0.56$ & $\vu{0.52}$ &   $0.35$ & $0.24$ & $0.33$ &      $0.08$ & $0.17$\\
\emph{david}      &      $0.80$ &      $0.80$ & $\vt{0.81}$ &      $0.35$ &   $0.72$ & $0.61$ & $0.57$ &      $0.43$ & $0.26$\\
\emph{face1}     &      $0.86$ &      $0.86$ &      $0.86$ &      $0.81$ &   $0.77$ & $0.80$ & $0.60$ & $\vt{0.88}$ & $0.48$\\
\emph{face2}     & $\vt{0.86}$ & $\vt{0.86}$ & $\vt{0.86}$ & $\vu{0.83}$ &   $0.77$ & $0.78$ & $0.68$ &      $0.44$ & $0.68$\\
\emph{girl}       & $\vt{0.80}$ & $\vt{0.80}$ & $\vt{0.80}$ & $\vu{0.79}$ &   $0.71$ & $0.64$ & $0.53$ &      $0.60$ & $0.40$\\
\emph{sylvester}  & $\vt{0.68}$ & $\vt{0.68}$ &      $0.67$ &      $0.58$ &   $0.59$ & $0.67$ & $0.60$ &      $0.62$ & $0.52$\\
\emph{tiger1}    & $\vt{0.70}$ & $\vt{0.70}$ &      $0.69$ & $\vu{0.68}$ &   $0.55$ & $0.53$ & $0.52$ &      $0.19$ & $0.23$\\
\emph{tiger2}    &      $0.56$ & $\vt{0.57}$ &      $0.55$ &      $0.39$ &   $0.53$ & $0.44$ & $0.53$ &      $0.15$ & $0.28$\\
\hline
Average FPS & $12.1$ & $13.2$ & $16.2$ & $21.4$ & \multicolumn{5}{l}{}\\
\cline{1-5}

%N/A & N/A & N/A & N/A & N/A \\

\end{tabular}
\end{center}
\caption[Average bounding box overlap on benchmark sequences]{Average bounding box overlap on benchmark sequences. The first four columns correspond to our method with different budget size indicated by the subscript, and the rest of the columns show published results from state-of-the-art approaches. The best performing method is shown in bold. We also show underlined the cases when Struck with the smallest budget size ($B=20$) outperforms the state-of-the-art. The last row gives the average number of frames per second for an unoptimised C++ implementation of our method.}
\label{tbl:struck_haar_results}
\end{sidewaystable}

Table~\ref{tbl:struck_haar_results} shows the results obtained by our tracking framework for various budget sizes $B$, along with published results from existing state-of-the-art approaches \cite{Adam2006,Grabner2006,Babenko2011,Saffari2010a,Leistner2010}, and example frames can be seen in Figure \ref{fig:struck_benchmark_examples}. It can be seen from these results that Struck outperforms the current state-of-the-art on almost every sequence, often by a considerable margin. These results also demonstrate that the proposed budgeting mechanism does not impact significantly on tracking results. Even when the budget is reduced as low as $B=20$ we outperform the state-of-the-art on $4$ out of $8$ sequences.

\begin{figure}[p]
\centering
\begin{subfigure}[b]{\textwidth}
\centering
\includegraphics[width=0.5\textwidth]{images/example_key.png}
\end{subfigure}

\vspace{0.1cm}

\begin{subfigure}[b]{\textwidth}
\centering
\includegraphics[width=0.19\textwidth]{images/coke_1.png}
\includegraphics[width=0.19\textwidth]{images/coke_2.png}
\includegraphics[width=0.19\textwidth]{images/coke_3.png}
\includegraphics[width=0.19\textwidth]{images/coke_4.png}
\includegraphics[width=0.19\textwidth]{images/coke_5.png}
\caption{\emph{coke}}
\end{subfigure}

\begin{subfigure}[b]{\textwidth}
\centering
\includegraphics[width=0.19\textwidth]{images/david_1.png}
\includegraphics[width=0.19\textwidth]{images/david_2.png}
\includegraphics[width=0.19\textwidth]{images/david_3.png}
\includegraphics[width=0.19\textwidth]{images/david_4.png}
\includegraphics[width=0.19\textwidth]{images/david_5.png}
\caption{\emph{david}}
\end{subfigure}

\begin{subfigure}[b]{\textwidth}
\centering
\includegraphics[width=0.19\textwidth]{images/face1_1.png}
\includegraphics[width=0.19\textwidth]{images/face1_2.png}
\includegraphics[width=0.19\textwidth]{images/face1_3.png}
\includegraphics[width=0.19\textwidth]{images/face1_4.png}
\includegraphics[width=0.19\textwidth]{images/face1_5.png}
\caption{\emph{face1}}
\end{subfigure}

\begin{subfigure}[b]{\textwidth}
\centering
\includegraphics[width=0.19\textwidth]{images/face2_1.png}
\includegraphics[width=0.19\textwidth]{images/face2_2.png}
\includegraphics[width=0.19\textwidth]{images/face2_3.png}
\includegraphics[width=0.19\textwidth]{images/face2_4.png}
\includegraphics[width=0.19\textwidth]{images/face2_5.png}
\caption{\emph{face2}}
\end{subfigure}


\begin{subfigure}[b]{\textwidth}
\centering
\includegraphics[width=0.19\textwidth]{images/girl_1.png}
\includegraphics[width=0.19\textwidth]{images/girl_2.png}
\includegraphics[width=0.19\textwidth]{images/girl_3.png}
\includegraphics[width=0.19\textwidth]{images/girl_4.png}
\includegraphics[width=0.19\textwidth]{images/girl_5.png}
\caption{\emph{girl}}
\end{subfigure}

\begin{subfigure}[b]{\textwidth}
\centering
\includegraphics[width=0.19\textwidth]{images/sylv_1.png}
\includegraphics[width=0.19\textwidth]{images/sylv_2.png}
\includegraphics[width=0.19\textwidth]{images/sylv_3.png}
\includegraphics[width=0.19\textwidth]{images/sylv_4.png}
\includegraphics[width=0.19\textwidth]{images/sylv_5.png}
\caption{\emph{sylvester}}
\end{subfigure}

\begin{subfigure}[b]{\textwidth}
\centering
\includegraphics[width=0.19\textwidth]{images/tiger1_1.png}
\includegraphics[width=0.19\textwidth]{images/tiger1_2.png}
\includegraphics[width=0.19\textwidth]{images/tiger1_3.png}
\includegraphics[width=0.19\textwidth]{images/tiger1_4.png}
\includegraphics[width=0.19\textwidth]{images/tiger1_5.png}
\caption{\emph{tiger1}}
\end{subfigure}

\begin{subfigure}[b]{\textwidth}
\centering
\includegraphics[width=0.19\textwidth]{images/tiger2_1.png}
\includegraphics[width=0.19\textwidth]{images/tiger2_2.png}
\includegraphics[width=0.19\textwidth]{images/tiger2_3.png}
\includegraphics[width=0.19\textwidth]{images/tiger2_4.png}
\includegraphics[width=0.19\textwidth]{images/tiger2_5.png}
\caption{\emph{tiger2}}
\end{subfigure}
\caption[Example frames from benchmark tracking sequences]{Example frames from benchmark tracking sequences, showing the results of Struck compared with MILTrack \cite{Babenko2011}, OMCLP \cite{Saffari2010a} and OAB \cite{Grabner2006}. Videos of these results can be found at \url{http://www.samhare.net/research}.}
\label{fig:struck_benchmark_examples}
\end{figure}

In Figure~\ref{fig:benchmark-svs} we show some examples of the support vector set ${\cal S}$ at the end of tracking. An interesting property which can be observed is that the positive support vectors (shown with green borders) provide a compact summary of the change in object appearance observed during tracking. In other words, our tracker is able to identify distinct appearances of the object over time. Additionally, it is clear that the algorithm automatically chooses more negative support vectors than positive. This is mainly because the foreground can be expressed more compactly than the background, which has higher diversity. We also see from these figures that the budgeting mechanism we use maintains support vectors from the entire tracking sequence and does not discard old appearance information. We believe that this contributes to the strong performance of our tracker, as it helps prevent drift during tracking which could occur if old information was discarded.


%importantly: don't discard old appearance, so more robust to drift

% supplementary material for vids

%% TODO: sylv ones suck
%\begin{figure}[htb]
%\begin{center}
%	\subfigure[\emph{girl}]{\includegraphics[width=0.475\linewidth]{images/girl64.png}}\;
%	\subfigure[\emph{david}]{\includegraphics[width=0.475\linewidth]{images/david64.png}}\;
%	%% \subfigure[\emph{sylv}]{\includegraphics[width=0.3\linewidth]{images/sylv64.png}}
%\end{center}
%\caption{Visualisation of the support vector set ${\cal S}$ at the end of tracking with $B=64$. Each patch shows $\vt{x}_t^{\vt{p} \circ \vt{y}}$, and positive and negative support vectors have green and red borders respectively. Notice that the positive support vectors capture the change in appearance of the target object during tracking.}
%\label{fig:benchmark-svs}
%\end{figure}

\begin{figure}[tb]
\centering
\begin{subfigure}[b]{0.32\textwidth}
\includegraphics[width=\textwidth]{images/girl64.png}
\caption{\emph{girl}}
\end{subfigure}
\begin{subfigure}[b]{0.32\textwidth}
\includegraphics[width=\textwidth]{images/david64.png}
\caption{\emph{david}}
\end{subfigure}
\begin{subfigure}[b]{0.32\textwidth}
\includegraphics[width=\textwidth]{images/sylv64.png}
\caption{\emph{sylvester}}
\end{subfigure}
\caption[Visualisation of the support vector set]{Visualisation of the support vector set ${\cal S}$ at the end of tracking with $B=64$ (chosen for illustrative purposes). Each patch shows $\vt{x}_t^{\vt{p} \circ \vt{y}}$, and positive and negative support vectors have green and red borders respectively. Notice that the positive support vectors capture the change in appearance of the target object during tracking.}
\label{fig:benchmark-svs}
\end{figure}

%Table \ref{tbl:haar-results} shows the results of our tracker for various sizes of budget. Figure \ref{fig:benchmark-svs} shows the support vectors at the end of tracking for $B=64$.

% we use this representation to compare with SOA, but also point out that these are designed for boosting, so not necessarily the best choice for an SVM with gaussian kernel. nevertheless we perform very well.

% From this we can see that the results are generally much better than state of the art, and that as budget decreases the performance remains strong.

% Show some examples of support vectors learned during a sequence, explaining this is a nice feature of the algorithm -- the positive support vectors capture changes in appearance of the object during tracking



%\begin{table*}[ht]%dp
%\begin{center}
%\begin{tabular}{|l|c|c|c|c||c|c|c|c|c|}
%\hline
%Sequence & $B=\infty$ & $B=128$ & $B=64$ & $B=32$ & MIForest & OMCLP & MIL & Frag & OAB\\
%\hline
%Girl       & \bf0.80 &    0.80 &    0.79 &    0.80 &   0.71 & 0.64 & 0.53 & 0.60 & 0.40\\
%Tiger 1    & \bf0.70 &    0.70 &    0.69 &    0.69 &   0.55 & 0.53 & 0.52 & 0.19 & 0.23\\
%Tiger 2    &    0.56 &    0.60 &    0.56 &    0.47 &   0.53 & 0.44 & 0.53 & 0.15 & 0.28\\
%Coke       & \bf0.57 &    0.62 &    0.68 &    0.52 &   0.35 & 0.24 & 0.33 & 0.08 & 0.17\\
%Face 1     &    0.86 &    0.86 &    0.86 &    0.86 &   0.77 & 0.80 & 0.60 & \bf0.88 & 0.48\\
%Face 2     &    0.86 &    0.86 &    0.86 &    0.88 &   0.77 & 0.78 & 0.68 & 0.44 & 0.68\\
%Sylvester  & \bf0.68 &    0.73 &    0.72 &    0.60 &   0.59 & 0.67 & 0.60 & 0.62 & 0.52\\
%David      &    0.80 &    0.83 &    0.83 &    0.41 &   0.72 & 0.61 & 0.57 & 0.43 & 0.26\\
%\hline
%Average FPS &  &  &  &  & \multicolumn{5}{c|}{}\\% & & & & &\\
%
%\hline
%\end{tabular}
%\end{center}
%\caption{Systematic haar, $\sigma=0.5$}
%\label{tbl:haar-results2}
%\end{table*}



%
%\begin{table*}[ht]%dp
%\begin{center}
%\begin{tabular}{|l|c|c|c|}
%\hline
%Sequence & $B=\infty$ & $B=100$ & $B=50$ \\
%\hline
%Girl       &    0.78 &    0.78 &    0.79 \\
%Tiger 1    &    0.69 &    0.69 &    0.68 \\
%Tiger 2    &    0.52 &    0.51 &    0.51 \\
%Coke       &    0.67 &    0.67 &    0.65 \\
%Face 1     &    0.82 &    0.82 &    0.81 \\
%Face 2     &    0.80 &    0.78 &    0.78 \\
%Sylvester  &    0.75 &    0.75 &    0.73 \\
%David      &    0.84 &    0.84 &    0.84 \\
%\hline
%\end{tabular}
%\end{center}
%\caption{Raw}
%\label{tbl:raw}
%\end{table*}

\section{Effect of structured learning}

To investigate the importance of structured learning on our results, we next perform a set of experiments against a baseline classification SVM. To achieve this we modify our tracking framework such that the learner is no longer trained using structured examples, but rather using a set of binary examples. Each frame a single positive example is generated using the current tracker state, and negative examples are generated by sampling from ${\cal Y}$ as in Section \ref{sec:struck_exp_benchmarks} and taking those which have an overlap of less than 0.5 with the tracker state (\ie\ $\theta_u = 1$ and $\theta_l = 0.5$ using the labelling function \eqref{eqn:struck_labelling_function}). All other factors are kept the same, meaning both approaches use the same image features as in Section \ref{sec:struck_exp_benchmarks} and both use a budget size $B=100$.

\begin{figure}[p]
\centering
\begin{subfigure}[b]{0.47\textwidth}
\centering
\includegraphics[width=\textwidth]{images/precision_coke.png}
\caption{\emph{coke}}
\label{fig:struck_binary_strut_coke}
\end{subfigure}
\begin{subfigure}[b]{0.47\textwidth}
\centering
\includegraphics[width=\textwidth]{images/precision_david.png}
\caption{\emph{david}}
\label{fig:struck_binary_strut_david}
\end{subfigure}

\begin{subfigure}[b]{0.47\textwidth}
\centering
\includegraphics[width=\textwidth]{images/precision_face1.png}
\caption{\emph{face1}}
\label{fig:struck_binary_strut_face1}
\end{subfigure}
\begin{subfigure}[b]{0.47\textwidth}
\centering
\includegraphics[width=\textwidth]{images/precision_face2.png}
\caption{\emph{face2}}
\label{fig:struck_binary_strut_face2}
\end{subfigure}

\begin{subfigure}[b]{0.47\textwidth}
\centering
\includegraphics[width=\textwidth]{images/precision_girl.png}
\caption{\emph{girl}}
\label{fig:struck_binary_strut_girl}
\end{subfigure}
\begin{subfigure}[b]{0.47\textwidth}
\centering
\includegraphics[width=\textwidth]{images/precision_sylv.png}
\caption{\emph{sylv}}
\label{fig:struck_binary_strut_sylv}
\end{subfigure}

\begin{subfigure}[b]{0.47\textwidth}
\centering
\includegraphics[width=\textwidth]{images/precision_tiger1.png}
\caption{\emph{tiger1}}
\label{fig:struck_binary_strut_tiger1}
\end{subfigure}
\begin{subfigure}[b]{0.47\textwidth}
\centering
\includegraphics[width=\textwidth]{images/precision_tiger2.png}
\caption{\emph{tiger2}}
\label{fig:struck_binary_strut_tiger2}
\end{subfigure}
\caption[Precision plots comparing structured and classification SVMs]{Precision plots comparing the results of tracking using our structured SVM framework with a baseline classification SVM. These plots show the percentage of frames for which the overlap between the ground truth bounding box and tracker bounding box is greater then a particular threshold}
\label{fig:struck_binary_struct}
\end{figure}

Figure \ref{fig:struck_binary_struct} shows precision plots for these two tracking approaches on each of the benchmark test sequences from Section \ref{sec:struck_exp_benchmarks}. These plots show the percentage of frames for which the overlap between the ground truth bounding box and tracker bounding box is greater then a particular threshold, which provides a more detailed view of the tracker performance than the average overlap used in the previous section. As before, we run each tracker 5 times on the sequence and compute the median precision for a given overlap threshold to produce these plots.

We can see from these results that overall the precision curves for the structured SVM are better than or roughly equivalent to those for the classification SVM, which demonstrate that the structured learning framework we use is able to produce gains in accuracy over a traditional classification-based approach. These gains are most notable on the more challenging sequences such as \emph{coke}, \emph{david} and \emph{tiger2}, for which the classification SVM does not perform particularly well.

In many cases, however, we see that the performance of the two tracking approaches are quite similar. This indicates that a large part of the performance gains observed in Section \ref{sec:struck_exp_benchmarks} can be attributed to our use of a kernelised SVM rather than a boosting-based classifier. Nevertheless, we can still observe that structured learning is able to bring additional performance gains, and importantly it removes the need for introducing a binary labelling strategy, providing a more tightly integrated approach to learning in a tracking context. 


\section{Combining kernels}\label{sec:struck_exp_mkl}

A benefit of the framework we have presented is that it is straightforward to use different image features by modifying the kernel function used for evaluating patch similarity. In addition, different features can be combined by averaging multiple kernels: $k(\vt{x},\bar{\vt{x}})=\frac{1}{N_k}\sum_{i=1}^{N_k} k^{(i)}(\vt{x}^{(i)},\bar{\vt{x}}^{(i)})$. Such an approach can be considered a basic form of multiple kernel learning (MKL), and indeed it has been shown~\cite{Gehler2009} that in terms of performance full MKL (in which the relative weighting of the different kernels is learned from training data) does not provide a great deal of improvement over this simple approach.

In addition to the Haar-like features and Gaussian kernel used in Section \ref{sec:struck_exp_benchmarks}, we also consider the following features:

\begin{itemize}
\item
Raw pixel features obtained by scaling a patch to $16 \times 16$ pixels and taking the greyscale value (in the range $[0,1]$). This gives a $256$-D feature vector, which is combined with a Gaussian kernel with $\sigma=0.1$.
\item
Histogram features obtained by concatenating $16$-bin intensity histograms from a spatial pyramid of 4 levels. At each level $L$, the patch is divided into $L \times L$ cells, resulting in a $480$-D feature vector. This is combined with an intersection kernel: $k(\vt{x},\bar{\vt{x}}) = \frac{1}{D}\sum_{i=1}^D \min(x_i, \bar{x}_i)$.
\end{itemize}

% a simple raw pixel representation in which we scale each patch to $16\times16$ pixels and use the raw greyscale pixel values as features, giving us a feature vector $\vt{z} \in [0,1]^{256}$. We again apply a Gaussian kernel to these features, with $\sigma=0.02$.

%\TODO{These results aren't great right now, need to run some more experiments}
Table \ref{tbl:struck_mkl} shows tracking results on the same benchmark videos, with $B=100$ and all other parameters as specified in Section \ref{sec:struck_exp_benchmarks}. It can be seen that the behaviour of the individual features are somewhat complementary. In many cases, combining multiple kernels seems to improve results. However, it is also noticeable that the performance gains are not significant for some sequences. This could be because of our na\"{i}ve kernel combination strategy and as has been shown by other researchers, \eg~\cite{Grabner2006}, feature selection plays a major role in online tracking. Therefore, further investigation into full MKL could potentially result in further improvements.

% in this framework easy to use different features through use of kernel function

% also easy to combine features by averaging kernel funcitons. this has been shown to give similar results to MKL, but very straightforward 

%In our second set of experiments, we investigate other image representations and kernels to use in our tracking framework.

%The first representation we consider is to simply scale a patch to $16\times16$ pixels and use the raw greyscale pixel values, giving us a feature vector $\vt{z} \in [0,1]^{256}$. We again use a Gaussian kernel, this time with $\sigma=0.02$, and all other parameters remain unchanged. 

%\begin{table*}[htbp]%dp
%\begin{center}
%\begin{tabular}{|l|c|c|c|}
%\hline
%Sequence & $B=\infty$ & $B=100$ & $B=50$ \\
%\hline
%Girl       &    0.79 &    0.79 &    0.79 \\
%Tiger 1    &    0.69 &    0.69 &    0.70 \\
%Tiger 2    &    0.56 &    0.55 &    0.52 \\
%Coke       &    0.62 &    0.61 &    0.62 \\
%Face 1     &    0.82 &    0.82 &    0.82 \\
%Face 2     &    0.83 &    0.83 &    0.83 \\
%Sylvester  &    0.73 &    0.72 &    0.67 \\
%David      &    0.84 &    0.83 &    0.82 \\
%\hline
%\end{tabular}
%\end{center}
%\caption{Haar + raw}
%\label{tbl:haar-raw}
%\end{table*}

%\begin{table}[htb]%dp
%\begin{center}
%\begin{tabular}{|l|c|c|c|}
%\hline
%Sequence & Haar & Raw & Combined \\
%\hline
%Girl       &    $0.80$ &    $0.78$ &    $0.79$ \\
%Tiger 1    &    $0.70$ &    $0.69$ &    $0.69$ \\
%Tiger 2    &    $0.57$ &    $0.51$ &    $0.55$ \\
%Coke       &    $0.57$ &    $0.67$ &    $0.61$ \\
%Face 1     &    $0.86$ &    $0.82$ &    $0.82$ \\
%Face 2     &    $0.86$ &    $0.78$ &    $0.83$ \\
%Sylvester  &    $0.68$ &    $0.75$ &    $0.72$ \\
%David      &    $0.80$ &    $0.84$ &    $0.83$ \\
%\hline
%\end{tabular}
%\end{center}
%\caption{Results with $B=100$ for Haar-like and raw pixel features. By combining these features we are able to achieve performance which is better overall than either feature alone.}
%\label{tbl:haar-raw}
%\end{table}

\begin{table}[tb]%dp
\begin{center}
\small
\begin{tabular}{|l|c|c|c||c|c|c|c|}
\hline
  Sequence & A & B & C & A+B & A+C & B+C & A+B+C \\
\hline
\emph{coke}  &      $0.57$ &      $0.67$ & $\vu{0.69}$ &    $0.62$ &      $0.65$ &      $0.68$ &      $0.63$\\
\emph{david}  &      $0.80$ & $\vu{0.83}$ &      $0.67$ &    $0.84$ &      $0.68$ & $\vt{0.87}$ & $\vt{0.87}$\\
\emph{face1} & $\vu{0.86}$ &      $0.82$ & $\vu{0.86}$ &    $0.82$ & $\vt{0.87}$ &      $0.82$ &      $0.83$\\
\emph{face2} & $\vu{0.86}$ &      $0.79$ &      $0.79$ &    $0.83$ & $\vt{0.86}$ &      $0.78$ &      $0.84$\\
\emph{girl}  & $\vu{0.80}$ &      $0.77$ &      $0.68$ &    $0.79$ & $\vt{0.80}$ &      $0.79$ &      $0.79$\\
\emph{sylvester}  &      $0.68$ & $\vu{0.75}$ &      $0.72$ &    $0.73$ &      $0.72$ & $\vt{0.77}$ &      $0.73$\\
\emph{tiger1} &      $0.70$ &      $0.69$ & $\vu{0.77}$ &    $0.69$ &      $0.74$ &      $0.74$ &      $0.72$\\
\emph{tiger2} &      $0.57$ &      $0.50$ & $\vu{0.61}$ &    $0.53$ & $\vt{0.63}$ &      $0.57$ &      $0.56$\\
\hline
Average &      $0.73$ &      $0.73$ &      $0.72$ &    $0.73$ &      $0.74$ & $\vt{0.75}$ & $\vt{0.75}$\\
\hline
\end{tabular}
\end{center}
\caption[Kernel combination results]{Combining kernels. A: Haar features with Gaussian kernel ($\sigma = 0.2$); B: Raw features with Gaussian kernel ($\sigma = 0.1$); C: Histogram features with intersection kernel. The bold shows when multiple kernels improve over the best performance of individual kernels, while the underline shows the best performance within the individual kernels. The last row shows the average of each column.}
\label{tbl:struck_mkl}
\end{table}

% Our approach makes it easy to employ different features/kernels, and we can also use multiple kernels by simple averaging. Such an approach has been shown to perform almost as well as true MKL [Gehler], so it a reasonable thing to try. Although this is very slow, further improvements on tracking benchmarks.

% Maybe also show qualitative results on other sequences, e.g. HOGs on a pedestrian sequence.
