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:
pyksvdA highly optimized, parallel implementation of the Batch-OMP version of the KSVD learning algorithm. It implements the algorithm in the paperEfficient Implementation of the K-SVD Algorithm and the Batch-OMP Method by Ron Rubinstein, Michael Zibulevsky and Michael Elad, 2009.available fromThe 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 standardpython setup.py installmethod. 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.
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.
ReplyDeleteCudos to Hoyt for providing a nice implementation of BatchOMP.
Many thanks to Christoph Gohlke for providing the compiled binaries for windows !
ReplyDeletehttp://www.lfd.uci.edu/~gohlke/pythonlibs/#pyksvd