Tuesday, September 03, 2013

PYKSVD : A highly optimized, parallel implementation of the Batch-OMP version of the KSVD learning algorithm - implementation -

On LinkedIn, Ryan Kappedal mentioned the following:
My friend Hoyt created this implementation. It is made to make use of multiple processors. We would love to hear some feedback.

Thanks Ryan for the heads-up and  Hoyt for the implementation! From the GitHub page:

A highly optimized, parallel implementation of the Batch-OMP version of the KSVD learning algorithm. It implements the algorithm in the paper
Efficient Implementation of the K-SVD Algorithm and the Batch-OMP Method by Ron Rubinstein, Michael Zibulevsky and Michael Elad, 2009.
available from
The computation is done in highly optimized C++ code with OpenMP implementations for multicore archetectures.
It currently requires Eigen and g++ >= 4.6 to compile. Setup is done using the standard
python setup.py install
method. License is BSD.

Join the CompressiveSensing subreddit or the Google+ Community and post there !
Liked this entry ? subscribe to Nuit Blanche's feed, there's more where that came from. You can also subscribe to Nuit Blanche by Email, explore the Big Picture in Compressive Sensing or the Matrix Factorization Jungle and join the conversations on compressive sensing, advanced matrix factorization and calibration issues on Linkedin.


manny said...

I took a quick look at ksvd.h and it appears to be using a full eigen solve for the dictionary update step. The original paper (as well as my own implementation) use a single step of the iterative largest eigen vector method. This can have a great impact on the speed.

Cudos to Hoyt for providing a nice implementation of BatchOMP.

Frank de Morsier said...

Many thanks to Christoph Gohlke for providing the compiled binaries for windows !