This repository was archived by the owner on Jun 24, 2020. It is now read-only.
hcho3/eigenmap_gpu
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
GPU accelerated vessel segmentation using Laplacian eigenmaps
NOTE
The codebase has not been maintained since June 2014. Use it with your own
risk. **Note that it does not work with MAGMA version 1.5.0 or later. Please
use MAGMA version 1.4.1**.
SYNOPSIS
Laplacian eigenmap is an image segmentation algorithm that began to gain
traction in recent years. It involves a generalized eigenvalue problem
which extracts high-level features from local neighborhood information.
Unfortunately, it is computationally costly to compute eigenvalues of a
large linear systems. We make use of general-purpose GPUs to accelerate the
segmentation process.
DOCUMENTATION
See https://hyunsu-cho.io/eigenmap_gpu.html.
DEPENDENCIES
1. MAT file I/O Library --> See Step 1 of HOW TO COMPILE
http://matio.sourceforge.net/
2. MAGMA (Matrix Algebra on GPU and Multicore Architectures)
http://icl.cs.utk.edu/magma/index.html
**Make sure to use MAGMA version 1.4.1**.
3. ATLAS (Automatically Tuned Linear Algebra Software)
http://math-atlas.sourceforge.net/
HOW TO COMPILE
1. Run ./get_matio.sh to automatically download and install the MAT file
I/O Library. This library is required to read and write in MATLAB's
binary MAT file format.
2. Open the Makefile and edit the system paths (lines 13-16) as necessary.
3. Run make.
HOW TO RUN
To make things easier, we rely on MATLAB's image processing facilities when
it comes to pre-/post-processing. Hence, do the following steps:
1. Put the input image in Test_Data directory. The image must have jpg
extension.
2. Launch MATLAB in graphical mode.
3. Run one of the bootstrap scripts with the name of the image. Each script
has a suffix that represents a distinct scenario:
- bootstrap_c(...) : compute Laplacian eigenmap using one CPU thread
- bootstrap_omp(...) : use many CPU threads
- bootstrap_gpu(...) : use one GPU device instead
- bootstrap_vanilla(...) : use one CPU thread; really slow because the
entire script is written in MATLAB's scripting language
To get an intuitive feeling of how the bootstrap scripts look like, take
a quick look at test.m.
More precisely, bootstrap calls share the following form:
bootstrap_x('image_name', [param1], [param2], [# of Lanczos iterations])
For instance, if the input image is example.jpg, the parameters are 10
and 50, and the number of Lanczos iterations is 75, use:
bootstrap_x('example', 10, 50, 75);
4. The segmented images pop up as figures and at the same time are saved in
results directory.
FUNCTION SUMMARY
- pairweight: computes the weight matrix.
- laplacian: computes the Laplacian matrix from the weight matrix.
- eigs: computes a few smallest eigenvalues of the Laplacian matrix;
uses general symmetric eigenvalue solver.
- lanczos: computes a few smallest eigenvalues of the Laplacian matrix;
uses the Lanczos method.