level sets framework refactoring
Post on 04-Jan-2016
26 Views
Preview:
DESCRIPTION
TRANSCRIPT
Level Sets Framework Refactoring
Arnaud Gelas, Kishore Mosaliganti, Nicolas Rannou, Lydie Souhait,
Sean MegasonBoston
02/03/2011
Outline
• Goals• Principles• Status
o Traitso Fast Marching
Image / Mesh Stopping Criterion Constrained Topology Shortest Path Computation Isotropic / Anisotropic
o Level Sets / GPU • Plan• Requirements
Goal: Generic Level Set Framework
• Multi-level set support• simultaneous evolution of level sets
• Multi-channel support• Vector or tensor data segmentation
• Level set representation• Mesh-based (unstructured), image, or parametric
• Terms used in the PDE• Add/delete terms in the update equation
• Topological constraints
• Stopping criterion• RMS, Iterations, target points
STATUSDiscrete Level Set
Traits
• TInputDomain
• TNode
• TOutputDomain
• TSuperclass
Traits - Base Class
template< class TInputDomain,class TNode,class TOutputDomain,class TSuperclass >
class LevelSetTraits{public:
typedef [...]class NodePair :
public std::pair< NodeType, OutputPixelType > [...]
};
Traits - Image Specialization
template<unsigned int VDimension,class TInputPixel,typename TOutputPixel >
class ImageLevelSetTraits :public LevelSetTraits< Image< TInputPixel, VDimension >, Index< VDimension >, Image< TOutputPixel, VDimension >, ImageToImageFilter< Image< TInputPixel, VDimension >, Image< TOutputPixel, VDimension > >
>
Traits - Mesh Specialization
template< unsigned int VDimension,typename TInputPixel,class TInputMeshTraits,typename TOutputPixel,class TOutputMeshTraits >
class MeshLevelSetTraits : public LevelSetTraits< Mesh< TInputPixel, VDimension, TInputMeshTraits >,
typename TInputMeshTraits::PointIdentifier, Mesh< TOutputPixel, VDimension, TOutputMeshTraits >, MeshToMeshFilter< Mesh< TInputPixel, VDimension, TInputMeshTraits >, Mesh< TOutputPixel, VDimension, TOutputMeshTraits > >
Fast Marching
• Code available at the following address: https://github.com/arnaudgelas/itkFastMarching
• Numbers:o 36 testso Tested
Fedora 13, 14 (64 bits) Ubuntu 10.10 (64 bits) Mac OS-X 10.5, 10.6
o Coverage: 80.49%
Stopping Criterion - Base Class
class StoppingCriterionBase : public Object{public:
virtual bool IsStatisfied() const = 0;virtual const std::string GetDescription() const = 0;
};
Stopping Criterion - Examples
• Threshold on the current valueo Equivalent to the current implementation of
itk::FastMarchingImageFilter<>
• Reached Target Nodes (One, Some, All), with possible overshoot offseto Equivalent to the current implementation of
itk::FastMarchingUpWindGradientImageFilter<>
Constrained Topology
[Tustisson'10 - Insight Journal 778] Escher's Ants as Metaphor: Topological Marching for the Well-Composed, Genus Zero Crowd
Minimal Path Extraction
[Mueller'08 - Insight Journal 213] Fast Marching Minimal Path Extraction in ITK
Isotropic / Anisotropic
Isotropic
• Can be solved using current implementation
Anisotropic
• Several possible schemes
• which one the best?
• make it easy to implement any of these methods
Requirements
Possible performance improvement UpdateNeighbors() calls 2 * ImageDimension
UpdateValue() Thread Pool ?
Fast Marching - Process ?
• Integration Process?
o Should we struggle for its integration (backward compatibility) ?
o Should we struggle a second time when integrating new level sets framework?
Fast Marching - Process ?
• update software guide?
o When ?
o How ?
o Any constraint?
FUTURE WORK
Plan• Git repository• Discrete Representations
o Domain Traitso Iteratorso Dense
Term container Propagation Advection Curvature Chan & Vese energy
Multithread Reinitialization Stopping Criterion
Plan• Discrete Representations
• Sparse – Constrained Topology – Multithread
• Real time algorithm [Shi]
• Parametric Representations • Splines• RBF
Discrete Level Sets - simplified view(a) while( ! m_StoppingCriterion->IsSatisfied() )(b) {(c) for each level set ls_i in the level set container(d) {(e) for each nodes n_j in the domain of ls_i(f) {(g) for each term t_k in the term container(h) {(i) Compute Term Value t_k( n_j, ls_i )(j) Compute Term Contribution for time step computation(k) }(l) Evaluate the updated level set function ( delta( ls_i( n_j) ) )(m) }(n) }(o) Compute time step from CFL Condition (p) for each level set ls_i in the level set container (q) {(r) Update the level set function ls_i(s) Reinitialize to signed distance function (if requested by user)(t) }(u) }
GPU Involvement - 1
(a) while( !m_StoppingCriterion->IsSatisfied() )(b) {(c) for each level set ls_i in the level set container(d) {(e) for each nodes in the domain of ls_i(f) {(g) for each term t_k in the term container(h) {• Compute Term Value t_k( n_j, ls_i )
GPU implementation during pixel updates at (i): (i) Pixel neighborhood in image and level set is copied to GPU memory (ii) Terms are evaluated in the GPU function (iii)Each term will have a CPU and GPU implementation (iv)A term factory will call the GPU implementation (v) Advantages:
• Minimal changes in the current proposed design • Drawbacks:
• very bad according to performance
GPU Involvement -2
(a) while ( !m_StoppingCriterion->IsSatisfied() )(b) {(c) for each level set ls_i in the level set container(d) {(e) for each nodes in the domain of ls_i(f) {(g) for each term t_k in the term container(h) {• Compute Term Value t_k( n_j, ls_i )
• Entire while loop iteration (a) in GPU • Everything is copied inside the GPU memory• Advantages:
• Fastest solution in terms of performance
• Downside:• memory limitation of the GPU (<2 Gb) • Code duplication: CPU and GPU • Note: Copy b/w memory 4Gb/s
GPU Involvement -3
In the last scenario, the code nesting is different: (a) while( !m_StoppingCriterion->IsSatisfied() )(b) {(c) for each level set ls_i in the level set container(d) {(e) for each term in the term container(f) {(g) for each nodes in the domain of ls_i(h) {(i) Evaluate the updated level set function [ ... ]
In this one the GPU Implementation will occur for the most nested for loop (g) • Keep copying the level set and image in each iteration in the GPU • Second most optimal implementation for GPU • No code duplication
Questions and Comments ?
top related