Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
C
cuda_lab
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Gaurav Kukreja
cuda_lab
Commits
1f67342c
Commit
1f67342c
authored
Apr 02, 2014
by
Gaurav Kukreja
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/gkernel/cuda_lab
parents
36a67669
df788ff1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
94 additions
and
1 deletion
+94
-1
segmentation.tex
FinalPresentation/segmentation.tex
+94
-1
No files found.
FinalPresentation/segmentation.tex
View file @
1f67342c
...
...
@@ -130,15 +130,108 @@ Technical University of Munich \\ % Your institution for the title page
\section
{
Algorithm
}
\subsection
{
Binary Image Segmentation
}
\begin{frame}
\frametitle
{
Binary Image Segmentation
}
Energy functional
\begin{equation*}
E
_
1(u) :=
\int
_{{
\rm
I
\!
R
}^
N
}
\left
|
\nabla
u
\right
|
+
\lambda
\int
_{{
\rm
I
\!
R
}^
N
}
\left
| u(x) - f(x)
\right
|
\,
dx
\end{equation*}
Functional derivative
\begin{equation*}
\frac
{
\delta
E
_
1
}{
\delta
u
}
= -
\,
\mathrm
{
div
}
\left
(
{
\frac
{
\nabla
u
}{
|
\nabla
u |
}}
\right
)
+
\lambda
\frac
{
u - f
}{
|u - f|
}
\end{equation*}
Gradient descent solver
\\
~
\\
\begin{thebibliography}
{
99
}
\bibitem
[Chan, 2005]
{}
Tony F. Chan, Selim Esedoglu and Mila Nikolova (2005)
\newblock
Finding the Global Minimum for Binary Image Restoration
\end{thebibliography}
\end{frame}
\begin{frame}
\frametitle
{
Sample Result
}
\end{frame}
\subsection
{
Grayscale Image Segmentation
}
\begin{frame}
\frametitle
{
Grayscale Image Segmentation
}
Euler-Lagrange equation
\begin{equation*}
\mathrm
{
div
}
\left
(
{
\frac
{
\nabla
u
}{
|
\nabla
u |
}}
\right
)
-
\lambda
\,
s(x) -
\alpha
\,
\nu
'(u) = 0
\end{equation*}
where
$
s
(
x
)
=
(
c
_
1
-
f
(
x
))
^
2
-
(
c
_
2
-
f
(
x
))
^
2
$
, and
$
\alpha
\,
\nu
'
(
u
)
$
forces
$
u
$
into
$
[
0
;
1
]
$
.
\\
~
\\
Gradient descent solver
\\
~
\\
\begin{thebibliography}
{
99
}
\bibitem
[Chan, 2004]
{}
Tony F. Chan, Selim Esedoglu and Mila Nikolova (2004)
\newblock
Algorithms for Finding Global Minimizers of Image Segmentation and Denoising Models
\end{thebibliography}
\end{frame}
\begin{frame}
\frametitle
{
Sample Result
}
\end{frame}
\subsection
{
Primal-Dual Method
}
\begin{frame}
\frametitle
{
Primal-Dual Method
}
\emph
{
Motivation:
}
Gradient descent solver has slow convergence.
\\
~
\\
Primal variable
$
u
$
Dual variable
$
\xi
$
(roughly similar to
$
\mathrm
{
grad
}
\,
u
$
):
\end{frame}
\section
{
CUDA Implementation
}
\begin{frame}
\frametitle
{
CUDA Implementation
}
\begin{itemize}
\item
Update kernels calls from CPU to have synchrionzation
\item
Update X and update U implemented as two kernels
\item
Image arrays swapped after each iteration
\item
Branching to avoid invalid memory accesses
\end{itemize}
\end{frame}
\section
{
Optimizations
}
\subsection
{
Texture Memory
}
\begin{frame}
\frametitle
{
CUDA Implementation
}
\begin{itemize}
\item
Swapping images after each iteration makes things difficult
\item
Can not be used in gradient calculation, Can be used in divergence calculation
\item
Texture memory used on intermediate results
$
X
_
i
$
and
$
X
_
j
$
\item
Improves the fps by 12
\%
\end{itemize}
\end{frame}
\subsection
{
OpenGL Interoperability
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment