]> AND Private Git Repository - these_gilles.git/blob - CIT2011/expose_cit2011.tex
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
final
[these_gilles.git] / CIT2011 / expose_cit2011.tex
1 % /solutions/conference-talks/conference-ornate-20min.fr.tex, 22/02/2006 De Sousa
2 \documentclass{beamer}
3 %\documentclass[red]{beamer}
4 \usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade}
5 \usepackage{amsfonts,amsmath,amssymb,stmaryrd}
6 \usepackage[latin1]{inputenc}
7 \usepackage[T1]{fontenc}
8 %\usepackage[frenchb]{babel}
9 \usepackage{aeguill}
10 \usepackage{graphicx}
11 \usepackage{amsmath,amssymb}
12 \usepackage{multirow}
13 \usepackage{multicol}
14 \usepackage{colortbl}
15 \usepackage{graphicx}
16 %\usepackage{figlatex}
17 \usepackage{multirow}
18 \usepackage{times}
19 \usepackage{marvosym}
20 \usepackage{pifont}
21 %\usepackage[vlined,longend,algoruled,titlenumbered,french]{algorithm2e}
22 \usepackage[vlined,french,algoruled]{algorithm2e}
23 \usepackage[gen]{eurosym}
24
25 %      _         _             _                     _                     
26 %  ___| |_ _   _| | ___    ___| |_    ___ ___  _   _| | ___ _   _ _ __ ___ 
27 % / __| __| | | | |/ _ \  / _ \ __|  / __/ _ \| | | | |/ _ \ | | | '__/ __|
28 % \__ \ |_| |_| | |  __/ |  __/ |_  | (_| (_) | |_| | |  __/ |_| | |  \__ \
29 % |___/\__|\__, |_|\___|  \___|\__|  \___\___/ \__,_|_|\___|\__,_|_|  |___/
30 %          |___/                                                           
31 %
32
33 \setbeamercovered{transparent}
34 \usetheme{Warsaw}
35 % enlever [red] dans le \documentclass si utilisation de la suite :
36 \usecolortheme[RGB={202,31,39}]{structure} % rouge
37
38 %\setbeamertemplate{background}{\includegraphics[height=96mm,width=128mm]{fond.png}}
39
40 % definition de la couleur du fond des blocks
41 \definecolor{ArrierePlanBodyW}{rgb}{0.5,0.5,0.5} % si ecriture blanche
42 \definecolor{ArrierePlanBodyB}{rgb}{0.85,0.85,0.85} % si ecriture noire
43 % definition de la couleur des slides
44 \definecolor{ArrierePlan}{rgb}{0.9,0.9,0.9}
45
46 % selection de la couleur du fond des slides
47 \setbeamercolor{background canvas}{bg=ArrierePlan} 
48 % selection de la couleur du fond des block avec ecriture noire
49 %\setbeamercolor{block body}{use=structure,fg=black,bg=ArrierePlanBodyB}
50 % selection de la couleur du fond des block avec ecriture blanche
51 \setbeamercolor{block body}{use=structure,fg=white,bg=ArrierePlanBodyW}
52
53
54 \DeclareGraphicsExtensions{pdf,eps,jpg,png}
55 \graphicspath{{.}{./fig/}{img/}}
56
57 \defbeamertemplate*{footline}{section in head/foot}
58 {
59   \leavevmode%
60   \hbox{\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm plus1fill,rightskip=.3cm]{author in head/foot}%
61     \usebeamerfont{author in head/foot}\insertshortauthor
62   \end{beamercolorbox}%
63   \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}%
64     \usebeamerfont{title in head/foot}\insertshorttitle \hfill \insertframenumber{} / \inserttotalframenumber\hspace*{2ex}%
65   \end{beamercolorbox}}%
66   \vskip0pt%
67 }
68
69
70 \setbeamercovered{dynamic}
71 %\logo{\includegraphics[height=1cm]{./img/logo_petit-tr.png}}
72 % \defbeamertemplate*{headline}{split theme}
73 % {%
74 %   \begin{beamercolorbox}{section in head/foot}
75 %     \insertsectionnavigationhorizontal{2cm}{\includegraphics[height=2cm]{./img/logo_petit-tr.png}}{}
76 %   \end{beamercolorbox}%
77 %  }
78
79 \defbeamertemplate*{headline}{page title}{
80   \leavevmode%
81   \begin{beamercolorbox}[wd=.08\paperwidth,ht=1.45cm]{section in head/foot}%
82     \vbox to 1.45cm{\vfill\hspace*{-0.1mm}\includegraphics[height=1.45cm]{./img/logo_fresnel.pdf}\vfill}%
83   \end{beamercolorbox}%
84   \begin{beamercolorbox}[wd=.655\paperwidth,ht=1.45cm]{section in head/foot}%
85     \vbox to 1.45cm{\vfill\hspace*{-0.1mm}\includegraphics[height=1.45cm]{./img/UPC.jpg}\vfill}%
86   \end{beamercolorbox}%
87   \begin{beamercolorbox}[wd=.1\paperwidth,ht=1.45cm]{section in head/foot}%
88     \vbox to 1.45cm{\vfill\hspace*{1mm}\includegraphics[height=1.25cm]{./img/lifc.pdf}\vfill}%
89   \end{beamercolorbox}%
90    \begin{beamercolorbox}[wd=.17\paperwidth,ht=1.45cm]{section in head/foot}%
91       \vbox to 1.45cm{\vfill\hspace*{-0.1mm}\includegraphics[height=1.45cm]{./img/ufc2.pdf}\vfill}%
92   \end{beamercolorbox}%
93 }
94
95 \defbeamertemplate*{headline}{section in head/foot}
96 {
97   \leavevmode%
98   \begin{beamercolorbox}[wd=.1\paperwidth,ht=1.45cm]{section in head/foot}%
99     \vbox to 1.45cm{\vfill\hspace*{-0.1mm}\includegraphics[height=1.25cm]{./img/lifc.pdf}\vfill}%
100   \end{beamercolorbox}%
101   \begin{beamercolorbox}[wd=.39\paperwidth,ht=1.45cm]{section in head/foot}%
102     \vbox to 1.45cm{\vfil\insertsectionnavigation{.4\paperwidth}\vfil}%
103   \end{beamercolorbox}%
104   \begin{beamercolorbox}[wd=.43\paperwidth,ht=1.45cm]{subsection in head/foot}%
105    \vbox to 1.45cm{\vfil\insertsubsectionnavigation{.4\paperwidth}\vfil}%
106   \end{beamercolorbox}%
107   %\begin{beamercolorbox}[wd=.17\paperwidth,ht=1.45cm]{section in head/foot}%
108   %    \vbox to 1.45cm{\vfill\hspace*{-0.1mm}\includegraphics[height=1.45cm]{./img/ufc2.pdf}\vfill}%
109   %\end{beamercolorbox}%
110   %\begin{beamercolorbox}[wd=.235\paperwidth,ht=1.45cm]{section in head/foot}%
111   %    \vbox to 1.45cm{\vfill\hspace*{-0.1mm}\includegraphics[height=1.45cm]{./img/UPC.jpg}\vfill}%
112   %\end{beamercolorbox}%
113   \begin{beamercolorbox}[wd=.1\paperwidth,ht=1.45cm]{section in head/foot}%
114     \vbox to 1.45cm{\vfill\includegraphics[height=1.45cm]{./img/logo_fresnel.pdf}\vfill}%
115   \end{beamercolorbox}%
116
117 }
118
119
120
121
122 % CUSTOM JMN
123 %%%%%%%%%%%%%
124 % EXERCICES %
125 %%%%%%%%%%%%%
126 \newcounter{exo}
127 \setcounter{exo}{0}
128 \newcounter{labelExo}
129
130 \newcommand{\Exos}[1]{\stepcounter{exo}{\vspace{0.5cm}
131      {\textbf{Exercice \arabic{exo}~:\ #1}}}}
132
133 \newcommand{\Solution}{\vspace{0.5cm}
134      {\textbf{\emph{Solution de l'exercice \arabic{exo}}}}}
135
136 %%%%%%%%%%%%%%%
137 % DEFINITIONS %
138 %%%%%%%%%%%%%%%
139 \newcounter{def}
140 \setcounter{def}{0}
141 \newcounter{labelDef}
142
143 \renewcommand{\Definition}[1]{\stepcounter{def}{%\vspace{0.5cm}
144    {\textbf{Définition \arabic{def}~:\ #1 }}}}
145
146
147 \def\N{{ I\!\!N}}
148 \def\R{{ I\!\!R}}
149 \def\Z{{ Z\!\!\! Z}}
150
151 \def\Q{I\kern-0.60em Q}
152 \def\C{I\kern-0.60em C}
153 \def\F{I\kern-0.20em F}
154 \def\K{I\kern-0.20em K}
155
156 % fleche d'affectation pour les algo
157 \def\plv{$ \leftarrow$\hspace{1ex}}
158
159 \titlegraphic{%
160   \centerline{%
161     %% \parbox{.165\textwidth}{%
162     %%  \includegraphics[width=0.165\textwidth]{logo-2lignes-moyen-tr.png}} 
163     %%\hfill
164     %%\parbox{.22\textwidth}{%
165     %%  \includegraphics[width=0.11\textwidth]{logo_tutelle4.jpg}} 
166     %\hfill 
167     %\parbox{.22\textwidth}{
168     %  \includegraphics[width=0.11\textwidth]{logo_petit-tr.png}}
169     \hfill
170     \parbox{.5\textwidth}{%
171       \includegraphics[width=0.5\textwidth]{CITLogo2.jpg}} 
172     \hfill
173   }
174 }
175
176
177 \title[Snake GPU] % (facultatif, à utiliser uniquement si le titre de l'article est trop long)
178 {\scshape GPU-accelerated snake}
179
180 \subtitle {GPU implementation of a region-based segmentation algorithm (snake) for large images}
181
182 \author[G. Perrot] % (facultatif, à utiliser seulement avec plusieurs auteurs)
183 {Gilles Perrot$¹$, Stéphane Domas$¹$, Raphaël Couturier$¹$, Nicolas Bertaux$²$.}
184 % - Composez les noms dans l'ordre dans lequel ils apparaîtrons dans l'article
185 % - Utilisez la commande \inst{?} uniquement si les auteurs ont des affiliations
186 %   différentes.
187
188 \institute[] % (facultatif mais généralement nécessaire)
189 {
190  $¹$University of Franche-Comté - Distributed Numerical Algorithmics group (AND),\\
191  $²$Fresnel Institute - Physics and Image Computing group (PhyTI) 
192 }
193 % - Utilisez la commande \inst uniquement s'il y a plusieurs affectations
194 % - Faîtes quelque chose de simple, personne ne s'intéresse à votre adresse.
195
196 \date[] % (facultatif)
197 {\small 31 august - 1 september}
198
199 %\subject{}
200 % Inséré uniquement dans la page d'information du fichier PDF. Peut être
201 % supprimé.
202
203
204
205 % Si vous avez un fichier nommé "université-logo-nomfichier.xxx", où xxx
206 % est un format graphique accepté par latex ou pdflatex (comme par exemple .png),
207 % alors vous pouvez insérer votre logo ainsi :
208
209 %\pgfdeclareimage[height=1cm]{logo-lifc}{img/logo-lifc.jpg}
210 %\logo{\pgfuseimage{logo-lifc}}
211
212
213
214 % À supprimer si vous ne voulez pas que la table des matières apparaisse
215 % au début de chaque sous-section :
216
217 % \AtBeginSubsection[] {
218 %   \begin{frame}<beamer>{Lignes directrices}
219 %     \tableofcontents[currentsection,currentsubsection]
220 %   \end{frame}
221 % }
222
223
224 % Si vous souhaitez recouvrir vos transparents un à un,
225 % utilisez la commande suivante (pour plus d'info, voir la page 74 du manuel
226 % d'utilisation de Beamer (version 3.06) par Till Tantau) :
227
228 %\beamerdefaultoverlayspecification{<+->}
229 \colorlet{textvert}{green}
230
231 \begin{document}
232
233 \setbeamertemplate{headline}[page title]
234 \setbeamertemplate{footline}[default]
235
236 \begin{frame}[default]
237   \titlepage
238 \end{frame}
239
240
241 \begin{frame}{Table of contents}
242   \tableofcontents
243   % Vous pouvez, si vous le souhaitez ajouter l'option [pausesections]
244 \end{frame}
245
246 \setbeamertemplate{headline}[section in head/foot]
247 \setbeamertemplate{footline}[section in head/foot]
248
249 \section{Context}
250 \begin{frame}{Image segmentation}
251 \begin{block}{Definition, goal}
252 \begin{itemize}
253   \item Dividing an image in two homogeneous regions.
254     \item Reducing the amount of data needed to code information. 
255       \item Helping the human perception in certain cases.
256 \end{itemize}
257 \end{block}
258 \end{frame}
259
260 \begin{frame}{Images of our interest}
261 \begin{block}{Origins}
262 \begin{itemize}
263   \item Synthetic Aperture RADAR (S.A.R.),
264     \item Ultrasonic (medical imaging), 
265       \item Photographic (IR, nightshots).
266 \end{itemize}
267 \end{block}
268 \begin{block}{Characteristics}
269 \begin{itemize}
270   \item 16 bit-coded gray levels,
271   \item From 10~Mpixels to more than 100~Mpixels,
272   \item Very noisy.
273 \end{itemize}
274 \end{block}
275 \end{frame}
276
277 \section{Snake algorithm}
278
279 % \begin{frame}{Active contour hypothesis}
280 % \begin{itemize}
281 %   \item A background region $B$ and a target region $T$, containing  $n_T$ and $n_B$ pixels, compose a $L x H$ pixel image.
282 %   \item Probability density functions (PDF) $p^B$ and $p^T$ are of the same family (Gaussian in this example).
283 %   % inutile ds les hypotheses, on ne dit pas qu'on ls connait  
284 %   %\item Vectors of parameters $\Theta^B$ and $\Theta^T$ of the PDFs $p^B$ and $p^T$ are unknown.
285 %   \item The contour $\varGamma$ which surrounds $T$ is chosen polygonal.
286 %   \item [\ding{253}] Implementation of a region-based algorithm. 
287 % \end{itemize}
288 % \end{frame}
289
290 \begin{frame}{Algorithm  basics : criterion}
291 \begin{columns}
292 \begin{column}[l]{5cm}
293   \resizebox{5cm}{5cm}{\input{img/fig_target.pdf_t}}
294 \end{column}
295 \begin{column}[l]{7.5cm}
296   \begin{itemize}
297   \item The goal is to find the most likely contour $\varGamma$ (number and positions of nodes).
298   \item The criterion used is a \emph{Generalized Likelihood} one .\\In the Gaussian case, it is given by 
299     $$GL = \dfrac{1}{2}\left[ n_B.log\left({\widehat{\sigma_B}}^2\right) + n_T.log\left({\widehat{\sigma_T}}^2\right)\right]$$
300     where $\widehat{\sigma_\Omega}$ is the estimation of the deviation $\sigma$ for the region $\Omega$.
301   \end{itemize}
302 \end{column}
303 \end{columns}
304 \end{frame}
305
306
307 % \begin{frame}{Algorithm basics : parameters estimation}
308 %   \begin{itemize}
309 %   \item In the Gaussian case,  $p_{\Omega}$ has two parameters, average and deviation, which are estimated by maximum likelihood.\\ 
310 %     If $z$ is the gray level of the pixel of coordinates $(i,j)$:
311 %     $$
312 %     \left(
313 %       \begin{array}{l}
314 %         \widehat{\mu_{\Omega}} = \frac{1}{n_{\Omega}} \displaystyle\sum_{(i,j)\in \Omega} z(i,j) \\
315 %         \widehat{\sigma^2_{\Omega}} = \frac{1}{n_{\Omega}} \displaystyle\sum_{(i,j)\in \Omega} \left(z(i,j) - \widehat{\mu_{\Omega}}\right)^2 \\
316 %       \end{array}
317 %     \right.
318 %     $$
319 %   \item These estimations have to be computed for each test state of the contour $\varGamma$: time-consuming.
320 %   \end{itemize}
321 % \end{frame}
322
323 \begin{frame}{Algorithm basics : parameters estimation}
324   \begin{itemize}
325 %peut-être illustrer ici
326   \item Based on the Green-Ostogradsky theorem, Chesnaud has shown how to replace those 2-dimensions sums inside the contour 
327     by 1-dimension sums along the contour.
328     \item This optimization implies: 
329       \begin{itemize}
330       \item the precomputation of a few matrices (called cumulated images) containing the potential \emph{contributions} of each pixel of the image,
331         \item the use of constant lookup tables of weighting coefficients to determine the \emph{contributions} of each segment of pixels.
332       \end{itemize}
333   \end{itemize}
334 \end{frame}
335
336 % \begin{frame}{CPU sequential implementation : outlines}
337 %   \begin{enumerate}
338 %   \item Precomputation of the cumulated images.
339 %     \item Choice of the initial contour $\varGamma_0$: rectangle near the borders.
340 %       \item Changes made to the contour in order to find the most likely one:
341 %         \begin{enumerate}[i]
342 %         \item Move every node as long as it gives a better criterion. 
343 %           \item Add nodes in the middle of each big enough segment.
344 %         \end{enumerate}
345 %   \end{enumerate}
346 % \end{frame}
347
348  \begin{frame}{Snake algorithm in action}
349    \begin{columns}
350      \begin{column}[T]{7cm}
351        \begin{overprint}      
352          \onslide<1>  \includegraphics[width=7cm]{./img/sequences/cochon_it0.png}
353          \onslide<2>  \includegraphics[width=7cm]{./img/sequences/cochon_it1.png} 
354          \onslide<3>  \includegraphics[width=7cm]{./img/sequences/cochon_it21.png} 
355          \onslide<4>  \includegraphics[width=7cm]{./img/sequences/cochon_it22.png} 
356          \onslide<5>  \includegraphics[width=7cm]{./img/sequences/cochon_it4.png}  
357        \end{overprint}
358      \end{column}
359      \begin{column}[T]{5cm}
360        \only<1> {
361          \begin{itemize}
362          \item 15~Mpixels image\\(SSE implementation limit).
363          \item Initial contour: 4 nodes.
364          \end{itemize}
365        }
366        \only<2> {
367          \begin{itemize}
368          \item End of first iteration: no more move can be of interest.
369          \end{itemize}
370        }
371        \only<3> {
372          \begin{itemize}
373          \item Nodes added in the middle of segments. 
374          \end{itemize}
375        }
376        \only<4> {
377          \begin{itemize}
378          \item End of second iteration. 
379          \end{itemize}
380        }
381        \only<5> {
382          \begin{itemize}
383          \item End of fifth iteration\\(36 nodes).
384          \end{itemize}
385        }
386      \end{column}
387    \end{columns}
388  \end{frame}
389
390
391 \section{GPU Implementation}
392 \begin{frame}{GPU implementation: prior knowledge}
393   \begin{itemize}
394   \item The parallelism of a modern GPU lays on a SIMT paradigm (Single Instruction Multiple Threads): the same instruction 
395     is processed by a great number of threads at a time (up to $2^{16}$).
396     \item Threads are compounded in independants blocks with no possible synchronization between blocks.
397       \item Threads in a block share a small amount of shared memory (16-48~KBytes).
398         \item There are restrictive conditions to be fullfilled in order to make efficent accesses to global and shared memory.
399           \item Data transfers between CPU and GPU are slow.
400   \end{itemize}
401 \end{frame}
402
403 \begin{frame}{GPU implementation: precomputations}
404   \begin{itemize}
405   \item One of the cumulated images is not to be computed anymore: values are evaluated on the fly.
406   \item An inclusive parallel prefixsum is performed on each row of the image for each matrix to be processed ($z$,$z^2$).
407   \item[\ding{253}] Speedup is around x7 for images larger than 100~MPixels. Comparison is done with the SSE/CPU implementation of the PhyTI group.
408     \item[\ding{253}] Higher speedups (x15) are obtained with specific versions for constant image sizes.
409   \end{itemize}
410 \end{frame}
411
412
413 \begin{frame}{GPU implementation: nodes move}
414 To select the possible next position of a node:
415 \begin{itemize}
416 \item Parameters of the corresponding contour have to be estimated.
417 \item Then the value of the criterion can be obtained and compared with the previous one.  
418 \item The parallelization needs reside essentially in the parameters estimation.\\Two possible parallelism levels:
419   \begin{itemize}
420   \item One contour per thread.
421   \item One pixel per thread.
422   \item[\ding{253}] The \emph{one pixel per thread} rule is far more efficient, due to memory access constraints.
423   \end{itemize}
424 \end{itemize}
425 \end{frame}
426
427
428 \begin{frame}{GPU implementation: parallelization}
429   \begin{columns}
430     \begin{column}[T]{6cm}
431       \resizebox{6cm}{6cm}{\input{./img/topologie.pdf_t}}
432     \end{column}
433     \begin{column}[T]{6.5cm}
434       \begin{itemize}
435       \item Every 16 segments for every even/odd nodes are processed in parallel.
436       \item Fits GPU specific parallelism: each pixel is processed by a thread.
437       \end{itemize}
438     \end{column}
439   \end{columns}
440 \end{frame}
441
442 \begin{frame}{GPU implementation: data structure}
443 The main idea is to organize, in a single array, every pixels of every segments to be processed.\\
444 Thus, for a given state of the contour ($N$ nodes), we:
445   \begin{enumerate}
446   \item Find the largest segment to be processed. It gives: 
447     \begin{itemize}
448     \item the block size $bs$ of the computing grid, 
449     \item the number of blocks needed for each segment ($N_{TB}$).
450     \end{itemize} 
451   \item Compute in parallel,  the coordinates of every pixels of the $16.N$ segments to be considered,
452   \item Make some parallel reductions to finally obtain parameters estimation.
453   \end{enumerate}
454 \end{frame}
455
456 \begin{frame}{GPU implementation: data structure}
457 \begin{center}
458   \begin{overprint}
459     \onslide<1> \resizebox{8cm}{1.43cm}{\input{img/contribs_segments_seg.pdf_t}}
460     \onslide<2> \resizebox{8cm}{3.78cm}{\input{img/contribs_segments_16seg.pdf_t}}
461     \onslide<3> \resizebox{8cm}{6cm}{\input{img/contribs_segments_even.pdf_t}}
462     \onslide<4> \resizebox{8cm}{6cm}{\input{img/contribs_segments.pdf_t}}
463   \end{overprint}
464 \end{center}
465 \end{frame}
466
467 \begin{frame}{GPU implementation: first results}
468   \begin{itemize}
469   \item Global speedup around x7-x8 for image sizes from 15 to 150~Mpixels.
470   \item First iterations have higher speedups: 
471     \begin{itemize}
472     \item several large segments,
473     \item few inactive threads in the grid.
474     \end{itemize}
475   \item Last iterations are sometimes slower than on CPU: 
476     \begin{itemize}
477     \item a lot of small segments,
478     \item more inactive threads in the grid.
479     \end{itemize}
480   \end{itemize}
481 \end{frame}
482
483 \begin{frame}{GPU implementation: smart init (reasons)}
484   \begin{itemize}
485   \item The target shape is often far from initial contour,
486   \item It causes the very first iteration to be much more time-consuming than the other ones.
487   \item Horizontal segments contributions are null.
488   \item Vertical segments contributions computations can be fast, through a specific process.
489   \item[\ding{253}] It's fast to find a rectangle near the target.
490   \end{itemize}
491 \end{frame}
492
493 \begin{frame}{GPU implementation: smart init (process)}
494 \begin{columns}
495 \begin{column}[l]{7cm}
496   \resizebox{7cm}{6.75cm}{\input{img/smart_init1.pdf_t}}
497 \end{column}
498 \begin{column}[l]{5.5cm}
499   \begin{itemize}
500   \item Realize a periodic sampling of a few hundreds of J-coordinates.
501   \item Evaluate in parallel every possible rectangle of diagonal $(0 , j_L)-(H , j_H)$.
502   \item Select the one with the best GL criterion.
503   \item $j_L$ and $j_H$ are now considered as constants.
504   \end{itemize}
505 \end{column}
506 \end{columns}
507 \end{frame}
508
509 \begin{frame}{GPU implementation: smart init (process)}
510 \begin{columns}
511 \begin{column}[l]{7cm}
512   \resizebox{7cm}{6.75cm}{\input{img/smart_init2.pdf_t}}
513 \end{column}
514 \begin{column}[l]{5.5cm}
515   \begin{itemize}
516   \item Given $j_L$ and $j_H$.
517   \item Realize a periodic sampling of a few hundreds of I-coordinates.
518   \item Evaluate in parallel every possible rectangle of diagonal $(i_L , j_L)-(i_H , j_H)$.
519   \item Select the one with the best GL criterion.
520   \end{itemize}
521 \end{column}
522 \end{columns}
523 \end{frame}
524
525 \begin{frame}{GPU implementation: enhancement}
526   \begin{itemize}
527   \item Global speedup around x10 for image sizes from 15 to 150~Mpixels and a small enough target (as in the example)
528   \item Less than 0.6 second for the 150~Mpixels image of this example.
529   \end{itemize}
530 \end{frame}
531
532 \section{Conclusion}
533 \begin{frame}{Conclusion, future works}
534   \begin{itemize}
535   \item Interesting speedups
536   \item Original algorithm is not GPU-friendly
537   \item Future works:
538     \begin{itemize}
539     \item Finding a more suited structure to describe the contour.
540     \item Switching to a statistical model independant from a PDF: the potts model.
541     \item Benefit from recent features of CUDA v4 (overlapping, multiple kernels)
542     \item Extend to a multiple targets algorithm, based on this single target elementary piece of code.
543     \end{itemize}
544   \end{itemize}
545 \end{frame}
546
547
548 %\begin{frame}[allowframebreaks]{References}
549 %\bibliographystyle{plain}
550 %\bibliography{biblio}
551 %\nocite{*}
552 %\end{frame}
553
554
555 \end{document}