635 lines
30 KiB
TeX
635 lines
30 KiB
TeX
\documentclass[landscape,a0paper,fontscale=0.292]{baposter}
|
|
|
|
\usepackage[vlined]{algorithm2e}
|
|
\usepackage{times}
|
|
\usepackage{calc}
|
|
\usepackage{url}
|
|
\usepackage{graphicx}
|
|
\usepackage{amsmath}
|
|
\usepackage{amssymb}
|
|
\usepackage{relsize}
|
|
\usepackage{multirow}
|
|
\usepackage{booktabs}
|
|
|
|
\usepackage{graphicx}
|
|
\usepackage{multicol}
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage{ae}
|
|
|
|
\graphicspath{{images/}}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%%% Some math symbols used in the text
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Format
|
|
\newcommand{\RotUP}[1]{\begin{sideways}#1\end{sideways}}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Multicol Settings
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\setlength{\columnsep}{0.7em}
|
|
\setlength{\columnseprule}{0mm}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Save space in lists. Use this after the opening of the list
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\newcommand{\compresslist}{%
|
|
\setlength{\itemsep}{1pt}%
|
|
\setlength{\parskip}{0pt}%
|
|
\setlength{\parsep}{0pt}%
|
|
}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Formating
|
|
\newcommand{\Matrix}[1]{\begin{bmatrix} #1 \end{bmatrix}}
|
|
\newcommand{\Vector}[1]{\begin{pmatrix} #1 \end{pmatrix}}
|
|
|
|
\newcommand*{\norm}[1]{\mathopen\| #1 \mathclose\|}% use instead of $\|x\|$
|
|
\newcommand*{\abs}[1]{\mathopen| #1 \mathclose|}% use instead of $\|x\|$
|
|
\newcommand*{\normLR}[1]{\left\| #1 \right\|}% use instead of $\|x\|$
|
|
|
|
\newcommand*{\SET}[1] {\ensuremath{\mathcal{#1}}}
|
|
\newcommand*{\FUN}[1] {\ensuremath{\mathcal{#1}}}
|
|
\newcommand*{\MAT}[1] {\ensuremath{\boldsymbol{#1}}}
|
|
\newcommand*{\VEC}[1] {\ensuremath{\boldsymbol{#1}}}
|
|
\newcommand*{\CONST}[1]{\ensuremath{\mathit{#1}}}
|
|
|
|
\DeclareMathOperator*{\argmax}{arg\,max}
|
|
\DeclareMathOperator*{\diag}{diag}
|
|
\DeclareMathOperator*{\argmin}{arg\,min}
|
|
\DeclareMathOperator*{\vectorize}{vec}
|
|
\DeclareMathOperator*{\reshape}{reshape}
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Differentiation
|
|
\newcommand*{\Nabla}[1]{\nabla_{\!#1}}
|
|
|
|
\renewcommand*{\d}{\mathrm{d}}
|
|
\newcommand*{\dd}{\partial}
|
|
|
|
\newcommand*{\At}[2]{\ensuremath{\left.#1\right|_{#2}}}
|
|
\newcommand*{\AtZero}[1]{\At{#1}{\pp=\VEC 0}}
|
|
|
|
\newcommand*{\diffp}[2]{\ensuremath{\frac{\dd #1}{\dd #2}}}
|
|
\newcommand*{\diffpp}[3]{\ensuremath{\frac{\dd^2 #1}{\dd #2 \dd #3}}}
|
|
\newcommand*{\diffppp}[4]{\ensuremath{\frac{\dd^3 #1}{\dd #2 \dd #3 \dd #4}}}
|
|
\newcommand*{\difff}[2]{\ensuremath{\frac{\d #1}{\d #2}}}
|
|
\newcommand*{\diffff}[3]{\ensuremath{\frac{\d^2 #1}{\d #2 \d #3}}}
|
|
\newcommand*{\difffp}[3]{\ensuremath{\frac{\dd\d #1}{\d #2 \dd #3}}}
|
|
\newcommand*{\difffpp}[4]{\ensuremath{\frac{\dd^2\d #1}{\d #2 \dd #3 \dd #4}}}
|
|
|
|
\newcommand*{\diffpAtZero}[2]{\ensuremath{\AtZero{\diffp{#1}{#2}}}}
|
|
\newcommand*{\diffppAtZero}[3]{\ensuremath{\AtZero{\diffpp{#1}{#2}{#3}}}}
|
|
\newcommand*{\difffAt}[3]{\ensuremath{\At{\difff{#1}{#2}}{#3}}}
|
|
\newcommand*{\difffAtZero}[2]{\ensuremath{\AtZero{\difff{#1}{#2}}}}
|
|
\newcommand*{\difffpAtZero}[3]{\ensuremath{\AtZero{\difffp{#1}{#2}{#3}}}}
|
|
\newcommand*{\difffppAtZero}[4]{\ensuremath{\AtZero{\difffpp{#1}{#2}{#3}{#4}}}}
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Defined
|
|
% How should the defined operator look like (:= or ^= ==)
|
|
% (I want back my :=, it is so much better than ^= because (1) it has a
|
|
% direction and (2) everyone here uses it.)
|
|
%
|
|
% Use :=
|
|
%\newcommand*{\defined}{\ensuremath{\mathrel{\mathop{:}}=}}
|
|
%\newcommand*{\definedRight}{\ensuremath{=\mathrel{\mathop{:}}}}
|
|
% Use ^=
|
|
\newcommand*{\defined}{\ensuremath{\triangleq}}
|
|
\newcommand*{\definedRight}{\ensuremath{\triangleq}}
|
|
% Use = with three bars
|
|
%\newcommand*{\defined}{\ensuremath{?}}
|
|
%\newcommand*{\definedRight}{\ensuremath{?}}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Symbols used in the paper
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% The Methods
|
|
\newcommand*{\ICIA}{\emph{ICIA}}
|
|
\newcommand*{\CoDe}{\emph{CoDe}}
|
|
\newcommand*{\LinCoDe}{\emph{LinCoDe}}
|
|
\newcommand*{\CoNe}{\emph{CoNe}}
|
|
\newcommand*{\CoLiNe}{\emph{CoLiNe}}
|
|
\newcommand*{\LinCoLiNe}{\emph{LinCoLiNe}}
|
|
|
|
% inter eye distance
|
|
\newcommand*{\ied}{IED}
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Koerper
|
|
%%\newcommand*{\RR}{\mathbb{R}}
|
|
%\newcommand*{\RR}{{I\hspace{-3.5pt}R}}
|
|
%\newcommand*{\RR}{{\mathrm{I\hspace{-2.7pt}R}}}
|
|
|
|
\font\dsfnt=dsrom12
|
|
|
|
\DeclareSymbolFont{nark}{U}{dsrom}{m}{n}
|
|
\DeclareMathSymbol{\NN}{\dsfnt}{nark}{`N}
|
|
\DeclareMathSymbol{\RR}{\dsfnt}{nark}{`R}
|
|
\DeclareMathSymbol{\ZZ}{\dsfnt}{nark}{`Z}
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Domains
|
|
\newcommand*{\D}{\mathcal{D}}
|
|
\newcommand*{\I}{\mathcal{I}}
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Texture coordinates
|
|
\newcommand*{\rr}{\VEC{r}}
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Parameters
|
|
\newcommand*{\pt}{\VEC{\tau}}
|
|
\newcommand*{\pr}{\VEC{\rho}}
|
|
\newcommand*{\pp}{\VEC{p}}
|
|
\newcommand*{\qq}{\VEC{q}}
|
|
\newcommand*{\xx}{\VEC{x}}
|
|
\newcommand*{\deltaq}{\Delta \qq}
|
|
\newcommand*{\deltap}{\Delta \pp}
|
|
\newcommand*{\zz}{\VEC{z}}
|
|
\newcommand*{\pa}{\VEC{\alpha}}
|
|
\newcommand*{\qa}{\VEC{\alpha}}
|
|
\newcommand*{\pb}{\VEC{\beta}}
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Optimal appearance parameters
|
|
\newcommand*{\pbh}[1]{\ensuremath{\hat{\pb}({#1})}}
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Warp basis
|
|
\newcommand*{\M}[1]{\ensuremath{M({#1})}}
|
|
\newcommand*{\LL}[1]{\ensuremath{L({#1})}}
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Matrices of the texture model
|
|
\newcommand*{\AM}[1]{\ensuremath{\Lambda(#1)}} % Lambda(beta)
|
|
\newcommand*{\AMr}[2]{\ensuremath{\Lambda(#1; #2)}} % Lambda(r, beta)
|
|
|
|
\newcommand*{\As}{A} % Continuous Basis symbol
|
|
\newcommand*{\afs}{a} % Continuous mean symbol
|
|
\newcommand*{\A}[1]{\As(#1)} % Continuous Basis
|
|
\newcommand*{\af}[1]{\afs(#1)} % Continuous mean
|
|
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Matrices of the shape model
|
|
\newcommand*{\MU}{\VEC{\mu}}
|
|
\newcommand*{\MM}{\MAT{M}}
|
|
|
|
%-----------------------------------------------------------------------------
|
|
%% The project out matrix and operator
|
|
\newcommand*{\INT}{\MAT{P}}
|
|
\newcommand*{\INTf}{P}
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% The identity matrix
|
|
\newcommand*{\EYEtwo}{\Matrix{1 & 0\\0&1}}
|
|
\newcommand*{\EYE}{\MAT E}
|
|
\newcommand*{\EYEf}{E}
|
|
|
|
% Wether to use subscripts or brackets for some function arguments
|
|
% can be decided by commenting out the corresponding functions underneath
|
|
%-----------------------------------------------------------------------------
|
|
% Mapping
|
|
\newcommand*{\Cs}[1]{\ensuremath{C^{#1}}} % C symbol
|
|
\newcommand*{\C}[2]{\ensuremath{C^{#1}(#2)}} % Use C with brackets
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Objective function
|
|
\newcommand*{\Fs}{\ensuremath{F}} % F symbol
|
|
\newcommand*{\F}[1]{\ensuremath{\Fs(#1)}} % Use F with brackets F(q)
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Approximated objective functions
|
|
\newcommand*{\FFs}{\tilde{F}} % ~F symbol
|
|
\newcommand*{\FF}[1]{\ensuremath{\FFs(#1)}} % Use ~F with brackets F(q)
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% residual function
|
|
\newcommand*{\es}{\ensuremath{f}} % R symbol
|
|
|
|
\newcommand*{\e}[1]{\ensuremath{\es(#1)}} % R(q)
|
|
\newcommand*{\er}[2]{\ensuremath{\es(#1; #2)}} % R(r; q)
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Approximated residual functions
|
|
\newcommand*{\ees}{\tilde{f}} % ~R symbol
|
|
\newcommand*{\ee}[1]{\ensuremath{\ees(#1)}} % ~R(q)
|
|
\newcommand*{\eer}[2]{\ensuremath{\ees(#2; #1)}} % ~R(r; q)
|
|
|
|
%-----------------------------------------------------------------------------
|
|
% Warps
|
|
\newcommand*{\Vs}{\ensuremath{V}}
|
|
\newcommand*{\VLins}{\ensuremath{\Vs^{\text{Ortho}}}}
|
|
\newcommand{\VModels}{\ensuremath{\Vs^{\text{Model}}}}
|
|
\newcommand*{\Ws}{\ensuremath{W}}
|
|
|
|
\newcommand{\V}[1]{\ensuremath{\Vs(#1)}}
|
|
\newcommand{\VModel}[1]{\ensuremath{\VModels(#1)}}
|
|
\newcommand{\Vr}[2]{\ensuremath{\Vs(#1; #2)}}
|
|
\newcommand{\VInvr}[2]{\ensuremath{\Vs^{-1}(#1; #2)}}
|
|
\newcommand{\VrLin}[2]{\ensuremath{\VLins(#1; #2)}}
|
|
\newcommand{\W}[1]{\ensuremath{\Ws(#1)}}
|
|
\newcommand{\Winv}[1]{\ensuremath{\Ws^{-1}(#1)}}
|
|
\newcommand{\Wr}[2]{\ensuremath{\Ws(#1; #2)}}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% Begin of Document
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\begin{document}
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% Here starts the poster
|
|
%%---------------------------------------------------------------------------
|
|
%% Format it to your taste with the options
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\begin{poster}{
|
|
% Show grid to help with alignment
|
|
grid=false,
|
|
% Column spacing
|
|
colspacing=0.7em,
|
|
% Color style
|
|
headerColorOne=cyan!20!white!90!black,
|
|
borderColor=cyan!30!white!90!black,
|
|
% Format of textbox
|
|
textborder=faded,
|
|
% Format of text header
|
|
headerborder=open,
|
|
headershape=roundedright,
|
|
headershade=plain,
|
|
background=none,
|
|
bgColorOne=cyan!10!white,
|
|
headerheight=0.12\textheight}
|
|
% Eye Catcher
|
|
{
|
|
\includegraphics[width=0.08\linewidth]{track_frame_00010_06}
|
|
\includegraphics[width=0.08\linewidth]{track_frame_00450_06}
|
|
\includegraphics[width=0.08\linewidth]{track_frame_04999_06}
|
|
}
|
|
% Title
|
|
{\sc\Huge On Compositional Image Alignment}
|
|
% Authors
|
|
{Brian Amberg, Andrew Blake, and Thomas Vetter\\[1em]
|
|
{\texttt{Brian.Amberg@unibas.ch, ab@microsoft.com, Thomas.Vetter@unibas.ch}}}
|
|
% University logo
|
|
{
|
|
\begin{tabular}{r}
|
|
\includegraphics[height=0.12\textheight]{logo}\\
|
|
\raisebox{0em}[0em][0em]{\includegraphics[height=0.03\textheight]{msrlogo}}
|
|
\end{tabular}
|
|
}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%% Now define the boxes that make up the poster
|
|
%%%---------------------------------------------------------------------------
|
|
%%% Each box has a name and can be placed absolutely or relatively.
|
|
%%% The only inconvenience is that you can only specify a relative position
|
|
%%% towards an already declared box. So if you have a box attached to the
|
|
%%% bottom, one to the top and a third one which should be inbetween, you
|
|
%%% have to specify the top and bottom boxes before you specify the middle
|
|
%%% box.
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\headerbox{Contribution: Fast \emph{and} reliable Face Alignment}{name=contribution,column=0,row=0,span=2}{
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
Inverse compositional image alignment (ICIA) is fast, but not reliable. We
|
|
explain ICIA from a different perspective which leads naturally to two new
|
|
algorithms with a better capture range and comparable speed.
|
|
}
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\headerbox{There is no \emph{inverse} in \emph{ICIA}}{name=abstract,column=0,below=contribution}{
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
Image aligment minimizes
|
|
\begin{align}
|
|
\F{\qq} &\defined \normLR{ \e{\qq,\pb} }^2_{\D},\label{eqn:f}\\
|
|
\text{with } \e{\qq} &\defined a - I\circ \W{\qq}\nonumber
|
|
\end{align}
|
|
composition with an incremental warp $\Vs$ approximates $\Fs$ around $\qq_0$ as
|
|
\begin{align}
|
|
\F{\C{\circ}{\qq_0, \pp}} \approx \FF{\qq_0, \pp} & \defined \normLR{\ee{\qq_0,\pp}}^2_{\D}\label{eqn:comp}\\
|
|
\text{with } \ee{\qq_0, \pp}&\defined \INTf(a - I \circ \W{\qq_0} \circ \V{\pp}) \quad.\nonumber
|
|
\end{align}
|
|
The gradient descent or Gauss-Newton update rule then gives an estimate of
|
|
the incremental warp, which drives the model warp.
|
|
|
|
ICIA can be derived by substituting the current backwarped image with the
|
|
model appearance after taking the derivative. The substitution can be used
|
|
to get an approximate gradient and/or Hessian, leading to a family of
|
|
algorithms.
|
|
|
|
Additionally we replace the incremental warp $V$ with an orthonormalized
|
|
warp and regularize in the composition step. The result is a vast
|
|
improvement in robustness without sacrificing speed.
|
|
}
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\headerbox{Our methods are at the performance/speed sweet point}{name=speed,column=2,row=0,span=2}{
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\newlength{\MSZ}
|
|
\setlength{\MSZ}{0.01\textwidth}
|
|
\newcommand{\MarkerCircle}[1]{%
|
|
\tikz{\draw[use as bounding box] (0,0); \draw[fill=#1] circle(\MSZ);}}
|
|
\newcommand{\MarkerRectangle}[1]{%
|
|
\tikz{\draw[use as bounding box] (0,0); \draw[fill=#1] (-\MSZ,-\MSZ) rectangle +(2\MSZ,2\MSZ);}}
|
|
\newcommand{\MarkerDiamond}[1]{%
|
|
\tikz{\draw[use as bounding box] (0,0); \draw[fill=#1,rotate=45] rectangle +(2\MSZ,2\MSZ);}}
|
|
\newcommand{\MarkerTriangle}[1]{%
|
|
\tikz{\draw[use as bounding box] (0,0); \draw[fill=#1] (-0.866\MSZ,-0.5\MSZ) -- (0\MSZ,1\MSZ) -- (0.866\MSZ,-0.5\MSZ) -- cycle ;}}
|
|
\newcommand{\MarkerUDTriangle}[1]{%
|
|
\tikz{\draw[use as bounding box] (0,0); \draw[fill=#1,rotate=180] (-0.866\MSZ,-0.5\MSZ) -- (0\MSZ,1\MSZ) -- (0.866\MSZ,-0.5\MSZ) -- cycle ;}}
|
|
\newcommand{\MarkerPlus}[1]{%
|
|
\tikz{\draw[use as bounding box] (0,0); \draw[fill=#1] (-\MSZ,-0.25\MSZ) rectangle +(2\MSZ,0.5\MSZ) (-0.25\MSZ,-\MSZ) rectangle +(0.5\MSZ,2\MSZ);}}
|
|
\newcommand{\MarkerX}[1]{%
|
|
\tikz{\draw[use as bounding box] (0,0); \draw[fill=#1,rotate=45] (-\MSZ,-0.25\MSZ) rectangle +(2\MSZ,0.5\MSZ) (-0.25\MSZ,-\MSZ) rectangle +(0.5\MSZ,2\MSZ);}}
|
|
\begin{tikzpicture}[x=0.00425\linewidth,y=13mm,font=\smaller]
|
|
% Ticks
|
|
\begin{scope}[color=black]
|
|
\foreach \y in {-0.2218487496,-0.1549019600,-0.0969100130,-0.0457574906,0.0000000000,
|
|
0.0000000000,0.3010299957,0.4771212547,0.6020599913,0.6989700043,0.7781512504,0.8450980400,0.9030899870,0.9542425094,1.0000000000,
|
|
1.0000000000,1.3010299957,1.4771212547,1.6020599913,1.6989700043,1.7781512504,1.8450980400,1.9030899870,1.9542425094,2.0000000000,
|
|
2.0000000000,2.3010299957,2.4771212547,2.6020599913,2.6989700043,2.7781512504,2.8450980400,2.9030899870,2.9542425094,3.0000000000} {
|
|
\draw[color=lightgray!20!white] (0,\y) -- +(100,0);
|
|
}
|
|
\foreach \y/\lbl in {0/$10^0$,1/$10^1$,2/$10^2$,3/$10^3$} {
|
|
\draw[color=black] (0,\y) node[anchor=east,color=black] {\lbl} -- +(100,0);
|
|
\draw[color=lightgray] (0,\y) -- +(100,0);
|
|
\draw[color=black] (0,\y) -- +(0.5\MSZ,0mm);
|
|
}
|
|
\foreach \x in {0,20,40,60,80,100} {
|
|
\draw (\x,-0.23) node[anchor=north,color=black] {\x};
|
|
\draw[color=lightgray] (\x,-0.23) -- +(0,3.23);
|
|
\draw[color=black] (\x,-0.23) -- +(0mm,0.5\MSZ);
|
|
}
|
|
\end{scope}
|
|
% Border
|
|
\draw[color=black] (0,3) -- (0,-0.23) (100,-0.23) -- (100,3);
|
|
% Axis labels
|
|
\draw (50,-0.23) node[below,yshift=-1em]{Success Rate (\%, Larger is better)};
|
|
\draw (0,1.5) node[above,rotate=90,yshift=1.6em]{Runtime (smaller is better)};
|
|
\draw (50,3) node[above]{The main algorithms starting within $20\%$ \ied{}};
|
|
% Data
|
|
\foreach \anch/\rot/\xs/\ys/\x/\y/\ttl/\stl in {
|
|
west/ 0 / 1 / 0 / 5.2631578947 / 0.0000000000 / Original \ICIA{} / {\MarkerCircle{blue}},
|
|
% west/ 0 / 1 / 0 / 14.2369727047 / 0.1128364125 / \ICIA{} + V^{\text{norm}}/ {\MarkerCircle{blue!70!white}},
|
|
east/ 0 /-1 / 0 / 38.9423076923 / 0.8814699511 / \CoLiNe{} / {\MarkerRectangle{green}},
|
|
west/ 0 / 1 / 0 / 39.4696029777 / 0.2610806897 / \LinCoDe{} / {\MarkerTriangle{red}},
|
|
west/ 0 / 1 / 0 / 56.8548387097 / 0.9091243545 / \CoDe{} / {\MarkerUDTriangle{yellow}},
|
|
west/ 0 / 1 / 0 / 36.4299007444 / 1.3563671940 / \CoNe{} / {\MarkerX{black!50!white}},
|
|
west/ 0 / 1 / 0 / 41.6918429003 / 2.6132022326 / L-BFGS (with reg) / {\MarkerPlus{red!50!blue!50!black}}
|
|
}{
|
|
\draw (\x,\y)
|
|
node[fill=none,anchor=\anch,xshift=\xs\MSZ,yshift=\ys\MSZ,rotate=\rot] {\ttl}
|
|
node{\stl};
|
|
\draw[fill=black] (\x,\y) circle(0.3\MSZ);
|
|
}
|
|
\end{tikzpicture}
|
|
\begin{tikzpicture}[x=0.00425\linewidth,y=13mm,font=\smaller]
|
|
% Ticks
|
|
\begin{scope}[color=black]
|
|
\foreach \y in {-0.2218487496,-0.1549019600,-0.0969100130,-0.0457574906,0.0000000000,
|
|
0.0000000000,0.3010299957,0.4771212547,0.6020599913,0.6989700043,0.7781512504,0.8450980400,0.9030899870,0.9542425094,1.0000000000,
|
|
1.0000000000,1.3010299957,1.4771212547,1.6020599913,1.6989700043,1.7781512504,1.8450980400,1.9030899870,1.9542425094,2.0000000000,
|
|
2.0000000000,2.3010299957,2.4771212547,2.6020599913,2.6989700043,2.7781512504,2.8450980400,2.9030899870,2.9542425094,3.0000000000} {
|
|
\draw[color=lightgray!20!white] (0,\y) -- +(100,0);
|
|
}
|
|
\foreach \y/\lbl in {0/$10^0$,1/$10^1$,2/$10^2$,3/$10^3$} {
|
|
\draw[color=black] (0,\y) node[anchor=east,color=black] {\lbl} -- +(100,0);
|
|
\draw[color=lightgray] (0,\y) -- +(100,0);
|
|
\draw[color=black] (0,\y) -- +(0.5\MSZ,0mm);
|
|
}
|
|
\foreach \x in {0,20,40,60,80,100} {
|
|
\draw (\x,-0.23) node[anchor=north,color=black] {\x};
|
|
\draw[color=lightgray] (\x,-0.23) -- +(0,3.23);
|
|
\draw[color=black] (\x,-0.23) -- +(0mm,0.5\MSZ);
|
|
}
|
|
\end{scope}
|
|
% Border
|
|
\draw[color=black] (0,3) -- (0,-0.23) (100,-0.23) -- (100,3);
|
|
% Axis labels
|
|
\draw (50,-0.23) node[below,yshift=-1em]{Success Rate (\%, Larger is better)};
|
|
\draw (0,1.5) node[above,rotate=90,yshift=1.6em]{Runtime (smaller is better)};
|
|
\draw (50,3) node[above,text width=0.5\linewidth,text centered]{All algorithms with $V^{\text{norm}}$ and regularisation};
|
|
|
|
\foreach \anch/\rot/\xs/\ys/\x/\y/\ttl/\stl in {
|
|
south/0 / 0 / 1.0/ 26.4701318852 / 0.6174735535 / \ICIA{} + $V^{\text{norm}}$ / {\MarkerCircle{ blue!50!black}},
|
|
south/0 / 0 / 1.0/ 52.1334367727 / 1.0781366795 / \CoLiNe{} / {\MarkerRectangle{ green!50!black}},
|
|
west/ 0 / 1 / 0 / 55.9348332040 / 0.5514820720 / \LinCoDe{} / {\MarkerTriangle{ red!50!black}},
|
|
west/ 0 / 1 / 0 / 66.0356865787 / 1.1158139989 / \CoDe{} / {\MarkerUDTriangle{yellow!50!black}},
|
|
west/ 0 / 1 / 0 / 66.9511249030 / 1.8260835334 / \CoNe{} / {\MarkerX{ black!50!white!50!black}},
|
|
west/ 0 / 1 / 0 / 41.6918429003 / 2.6132022326 / L-BFGS / {\MarkerPlus{ red!50!blue!50!black}}
|
|
}{
|
|
\draw (\x,\y)
|
|
node[fill=none,anchor=\anch,xshift=\xs\MSZ,yshift=\ys\MSZ,rotate=\rot] {\ttl}
|
|
node{\stl};
|
|
\draw[fill=black] (\x,\y) circle(0.3\MSZ);
|
|
}
|
|
\end{tikzpicture}
|
|
\begin{multicols}{2}
|
|
\textbf{Fitting a multiperson AAM. }
|
|
The best speed--performance tradeoffs come from the two new algorithms
|
|
\CoDe{} and \LinCoDe{}. Note that \ICIA{} is practically useless on
|
|
this difficult multi-person dataset with a success rate near zero (left). It
|
|
can be improved (right) by using the orthonormal incremental warp and
|
|
regularisation. The \CoDe{} algorithm with regularisation (right) is as
|
|
accurate as the slow, approximation-free, compositional Gauss-Newton \CoNe{}
|
|
method but is seven times more efficient.
|
|
|
|
The experiments were performed with leave one identity out on a mixture of two databases (XM2VTS and IMM).
|
|
\end{multicols}
|
|
}
|
|
%
|
|
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% \headerbox{Methods Compared}{name=methods,column=0,below=algorithm}{
|
|
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% \begin{tabular}{rllllll}
|
|
% Method & Hessian & & Gradient & & Speed & Capture Range\\
|
|
% \midrule
|
|
% \CoDe{} (this paper) & Not used & & True: & $\tilde{J}_{\qq_0}^T\e{\qq_0}$ & Fast & Large \\[0.1em]
|
|
% \LinCoDe{} (this paper) & Not used & & Linear Approx: & $\bar{J}^T\e{\qq_0}$ & Very Fast & Medium \\[0.1em]
|
|
% \CoLiNe{}~\cite{burkhardt86:motion} & Constant Approx.: & $\bar{J}^T\bar{J}$ & True: & $\tilde{J}_{\qq_0}^T\e{\qq_0}$ & Fast & Medium \\[0.1em]
|
|
% \ICIA{}~\cite{matthews:aamr} & Constant Approx.: & $\bar{J}^T\bar{J}$ & Linear Approx: & $\bar{J}^T\e{\qq_0}$ & Very Fast & Small \\[0.1em]
|
|
% \CoNe{}~\cite{matthews:kanade20} & Gauss-Newton Approx.: & $\tilde{J}_{\qq_0}^T\tilde{J}_{\qq_0}$ & True: & $\tilde{J}_{\qq_0}^T\e{\qq_0}$ & Slow & Large
|
|
% \end{tabular}
|
|
% The methods introduced in this paper are Hessian-free gradient descent methods.
|
|
% }
|
|
%
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\headerbox{References}{name=references,column=0,above=bottom}{
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\smaller
|
|
|
|
\bibliographystyle{ieee}
|
|
\renewcommand{\section}[2]{\vskip 0.05em}
|
|
\begin{thebibliography}{1}\itemsep=-0.01em
|
|
\setlength{\baselineskip}{0.4em}
|
|
|
|
\bibitem{amberg07:nicp}
|
|
B.~Amberg, A.~Blake, T.~Vetter
|
|
\newblock On Compositional Image Alignment with an Application to Activce Appearance Models
|
|
\newblock In {\em CVPR'09}, 2009.
|
|
|
|
\end{thebibliography}
|
|
}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\headerbox{Training + Testing Data}{name=data,column=0,above=references,below=abstract}{
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\includegraphics[width=0.2\linewidth]{018_4_2_masked}%
|
|
\includegraphics[width=0.2\linewidth]{328_2_1_masked}%
|
|
\includegraphics[width=0.2\linewidth]{319_2_1_masked}%
|
|
\includegraphics[width=0.2\linewidth]{027_4_2_masked}%
|
|
\includegraphics[width=0.2\linewidth]{020_1_1_masked}
|
|
\includegraphics[width=0.2\linewidth]{12_2f_masked}%
|
|
\includegraphics[width=0.2\linewidth]{21_3m_masked}%
|
|
\includegraphics[width=0.2\linewidth]{09_6m_masked}%
|
|
\includegraphics[width=0.2\linewidth]{33_4m_masked}%
|
|
%\includegraphics[width=0.2\linewidth]{22_3f_masked}
|
|
$\dots$\\
|
|
The model was trained from 456 images from the IMM and XM2VTS datasets using
|
|
120 landmarks. Get the landmarks, model, and source code at:\\
|
|
\mbox{\url{www.cs.unibas.ch/personen/amberg_brian/aam/}}
|
|
}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
\headerbox{Tracking 5000 frames with a general model}{name=tracking,column=2,span=2,below=speed,above=bottom}{
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
{
|
|
\begin{tabular}{c@{\hspace{0.05em}}c@{\hspace{0.1em}}c@{\hspace{0.1em}}c@{\hspace{0.1em}}c@{\hspace{1em}}c@{\hspace{0.1em}}c@{\hspace{0.1em}}c@{\hspace{0.1em}}c@{\hspace{0.1em}}c}
|
|
\multicolumn{5}{c}{\smaller \ICIA{} with $\VLins$} &
|
|
\multicolumn{5}{c}{\smaller \ICIA{} with $\VLins$ + Regularisation}\\[-0.2em]
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00010_01}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00050_01}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00450_01}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_02000_01}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_04999_01}&
|
|
%
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00010_02}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00050_02}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00450_02}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_02000_02}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_04999_02}\\[-0.1em]
|
|
%
|
|
\multicolumn{5}{c}{\smaller \LinCoDe{}} &
|
|
\multicolumn{5}{c}{\smaller \LinCoDe{} + Regularisation}\\[-0.2em]
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00010_03}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00050_03}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00450_03}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_02000_03}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_04999_03}&
|
|
%
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00010_04}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00050_04}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00450_04}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_02000_04}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_04999_04}\\[-0.1em]
|
|
%
|
|
\multicolumn{5}{c}{\smaller \CoDe{}} &
|
|
\multicolumn{5}{c}{\smaller \CoDe{} + Regularisation}\\[-0.2em]
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00010_05}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00050_05}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00450_05}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_02000_05}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_04999_05}&
|
|
%
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00010_06}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00050_06}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_00450_06}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_02000_06}&
|
|
\includegraphics[width=0.095\linewidth]{track_frame_04999_06}\\[-0.5em]
|
|
\smaller Frame 10 & \smaller Frame 50 & \smaller Frame 450 & \smaller Frame 2000 & \smaller Frame 5000 &
|
|
\smaller Frame 10 & \smaller Frame 50 & \smaller Frame 450 & \smaller Frame 2000 & \smaller Frame 5000
|
|
\end{tabular}
|
|
}
|
|
\vspace{-1.2em}
|
|
\begin{multicols}{2}
|
|
{\textbf{Our algorithm makes fast and robust tracking possible.}
|
|
We compare face tracking under natural motion, using \ICIA{},
|
|
\LinCoDe{} and \CoDe{}. The original \ICIA{} fails
|
|
immediately with this large model and new face data. Substituting the orthonormal
|
|
incremental warp for the original \ICIA{} warp, the algorithm still loses track
|
|
very early, whereas \LinCoDe{} and \CoDe{} can track much
|
|
further. Finally, adding regularisation to all algorithms, \ICIA{} still
|
|
loses track completely after approximately 500 frames and does not recover
|
|
the local deformations accurately. In contrast \CoDe{} now tracks the full
|
|
5000 frame sequence without reinitialization, and \LinCoDe{} tracks for 2500 frames.}
|
|
|
|
The same training dataset was used for both tracking experiments. The
|
|
training data was aquired with different camera and light settings from
|
|
different subjects.
|
|
\end{multicols}
|
|
}
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\headerbox{Low Res Tracking}{name=lowrestracking,column=1,span=1,below=speed,above=bottom}{
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\begin{tabular}{@{}c@{}c@{}c@{}c@{}c@{}}
|
|
\multicolumn{5}{c}{\smaller \ICIA{} with $\VLins$}\\[-0.2em]
|
|
\includegraphics[width=0.2\linewidth]{bush_00010_02}&
|
|
\includegraphics[width=0.2\linewidth]{bush_00100_02}&
|
|
\includegraphics[width=0.2\linewidth]{bush_00200_02}&
|
|
\includegraphics[width=0.2\linewidth]{bush_00300_02}&
|
|
\includegraphics[width=0.2\linewidth]{bush_00400_02}\\[-0.1em]
|
|
\multicolumn{5}{c}{\smaller \LinCoDe{}}\\[-0.2em]
|
|
\includegraphics[width=0.2\linewidth]{bush_00010_05}&
|
|
\includegraphics[width=0.2\linewidth]{bush_00100_05}&
|
|
\includegraphics[width=0.2\linewidth]{bush_00200_05}&
|
|
\includegraphics[width=0.2\linewidth]{bush_00300_05}&
|
|
\includegraphics[width=0.2\linewidth]{bush_00400_05}\\[-0.1em]
|
|
\multicolumn{5}{c}{\smaller \CoDe{}}\\[-0.2em]
|
|
\includegraphics[width=0.2\linewidth]{bush_00010_08}&
|
|
\includegraphics[width=0.2\linewidth]{bush_00100_08}&
|
|
\includegraphics[width=0.2\linewidth]{bush_00200_08}&
|
|
\includegraphics[width=0.2\linewidth]{bush_00300_08}&
|
|
\includegraphics[width=0.2\linewidth]{bush_00400_08}\\[-0.5em]
|
|
\smaller Frame 10 & \smaller Frame 100 & \smaller Frame 200 & \smaller Frame 300 & \smaller Frame 400
|
|
\end{tabular}
|
|
|
|
\vspace{1.25em}
|
|
\textbf{Tracking a low resolution video with large head motions
|
|
succeeds with \CoDe{}, where \ICIA{} fails.}\\ All methods used the orthonormal
|
|
incremental warp, and relatively strong regularisation. \ICIA{} starts to
|
|
drift in the early frames, while~\CoDe{} tracks the full sequence. The
|
|
approximate gradient method \LinCoDe{} also suceeds, but looses
|
|
track of the details for about 100 frames.
|
|
}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\headerbox{Compositional Alignment}{name=algorithm,column=1,above=lowrestracking,below=contribution}{
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\begin{algorithm}[H]
|
|
\dontprintsemicolon
|
|
\linesnumbered
|
|
\For{Blur and regularisation values}{
|
|
\nl Initialize $\qq, \qq_{\text{best}}$ and $\kappa$\;
|
|
\Repeat{converged}{
|
|
\nl Calculate $\Nabla{\pp}{\tilde{F}(\qq,\VEC 0)}$, $F(\qq)$\;
|
|
\eIf{$F(\qq) < F(\qq_{\text{best}})$}{
|
|
%\nl Calculate distance between best warp estimate and current warp estimate to test for convergence\;
|
|
\nl $\qq_{\text{best}} \gets \qq$\;
|
|
%\If{More than three successiv updates}{ (Too much detail)
|
|
\nl Increase $\kappa$\;
|
|
%}
|
|
}{
|
|
\If{$\kappa$ smaller than threshold}{
|
|
\nl return\;
|
|
}%{
|
|
decrease $\kappa$\;
|
|
%}
|
|
}
|
|
\nl Calculate $\pp$ from $\Nabla{\pp}{\tilde{F}(\qq_{best},\pp)}$ and $\kappa$\;
|
|
\nl $\qq \gets \C{\circ}{\qq, \pp}$
|
|
}
|
|
}
|
|
\end{algorithm}
|
|
}
|
|
\end{poster}%
|
|
%
|
|
\end{document}
|